update 优化生成编码规则、Dubbo调用生成订单编码规则

master
yinq 4 months ago
parent 97d0d53509
commit f24e2ecb97

@ -0,0 +1,17 @@
package org.dromara.system.api;
/**
*
*
* @author Yinq
*/
public interface RemoteCodeRuleService {
/**
*
* @param codeRuleCode
* @return currentCode
*/
String selectCodeRuleCode(String codeRuleCode);
}

@ -0,0 +1,21 @@
package org.dromara.common.core.constant;
/**
* SYS
*
* @author ruoyi
*/
public interface SysConstants {
/**
* SYS(1)
*/
String SYS_RENEW_FLAG_NO = "1";
/**
* SYS(2)
*/
String SYS_RENEW_FLAG_DAY = "2";
}

@ -32,7 +32,6 @@ public class ProdOrderInfoBo extends BaseEntity {
/** /**
* *
*/ */
@NotBlank(message = "订单编号不能为空", groups = {AddGroup.class, EditGroup.class})
private String orderCode; private String orderCode;
/** /**

@ -1,5 +1,6 @@
package org.dromara.mes.service.impl; package org.dromara.mes.service.impl;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -11,6 +12,7 @@ import lombok.RequiredArgsConstructor;
import org.dromara.mes.domain.*; import org.dromara.mes.domain.*;
import org.dromara.mes.domain.vo.BaseMaterialInfoVo; import org.dromara.mes.domain.vo.BaseMaterialInfoVo;
import org.dromara.mes.mapper.*; import org.dromara.mes.mapper.*;
import org.dromara.system.api.RemoteCodeRuleService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdOrderInfoBo; import org.dromara.mes.domain.bo.ProdOrderInfoBo;
import org.dromara.mes.domain.vo.ProdOrderInfoVo; import org.dromara.mes.domain.vo.ProdOrderInfoVo;
@ -33,9 +35,16 @@ public class ProdOrderInfoServiceImpl implements IProdOrderInfoService {
private final ProdOrderInfoMapper baseMapper; private final ProdOrderInfoMapper baseMapper;
private final ProdBaseProdLineInfoMapper prodBaseProdLineInfoMapper; private final ProdBaseProdLineInfoMapper prodBaseProdLineInfoMapper;
private final ProdBaseRouteMapper prodBaseRouteMapper; private final ProdBaseRouteMapper prodBaseRouteMapper;
private final ProdBaseProcessInfoMapper prodBaseProcessInfoMapper; private final ProdBaseProcessInfoMapper prodBaseProcessInfoMapper;
private final BaseMaterialInfoMapper baseMaterialInfoMapper; private final BaseMaterialInfoMapper baseMaterialInfoMapper;
@DubboReference
private final RemoteCodeRuleService remoteCodeRuleService;
/** /**
* *
* *
@ -140,6 +149,8 @@ public class ProdOrderInfoServiceImpl implements IProdOrderInfoService {
*/ */
@Override @Override
public Boolean insertByBo(ProdOrderInfoBo bo) { public Boolean insertByBo(ProdOrderInfoBo bo) {
String orderCode = remoteCodeRuleService.selectCodeRuleCode("1");
bo.setOrderCode(orderCode);
ProdOrderInfo add = MapstructUtils.convert(bo, ProdOrderInfo.class); ProdOrderInfo add = MapstructUtils.convert(bo, ProdOrderInfo.class);
validEntityBeforeSave(add); validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;

@ -0,0 +1,33 @@
package org.dromara.system.dubbo;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.system.api.RemoteCodeRuleService;
import org.dromara.system.domain.bo.SysCodeRuleBo;
import org.dromara.system.service.ISysCodeRuleService;
import org.springframework.stereotype.Service;
/**
*
*
* @author Yinq
*/
@RequiredArgsConstructor
@Service
@DubboService
public class RemoteCodeRuleServiceImpl implements RemoteCodeRuleService {
private final ISysCodeRuleService sysCodeRuleService;
/**
*
* @param codeRuleCode
* @return currentCode
*/
@Override
public String selectCodeRuleCode(String codeRuleCode) {
SysCodeRuleBo bo = new SysCodeRuleBo();
bo.setCodeRuleCode(codeRuleCode);
return sysCodeRuleService.getRuleGenerateCode(bo);
}
}

@ -1,5 +1,6 @@
package org.dromara.system.service.impl; package org.dromara.system.service.impl;
import org.dromara.common.core.constant.SysConstants;
import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
@ -8,7 +9,6 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.system.domain.bo.SysCodeRuleBo; import org.dromara.system.domain.bo.SysCodeRuleBo;
@ -158,7 +158,7 @@ public class SysCodeRuleServiceImpl implements ISysCodeRuleService {
} }
public SysCodeRule generateCode(SysCodeRule sysCodeRule) { public SysCodeRule generateCode(SysCodeRule sysCodeRule) {
if (StringUtils.isNull(sysCodeRule)){ if (StringUtils.isNull(sysCodeRule)) {
return null; return null;
} }
Long sequenceLength = sysCodeRule.getSequenceLength(); Long sequenceLength = sysCodeRule.getSequenceLength();
@ -167,14 +167,23 @@ public class SysCodeRuleServiceImpl implements ISysCodeRuleService {
String nextCode = sysCodeRule.getNextCode(); String nextCode = sysCodeRule.getNextCode();
StringBuilder code = new StringBuilder(); StringBuilder code = new StringBuilder();
code.append(rulePrefix); code.append(rulePrefix);
if (sysCodeRule.getRenewFlag().equals("2")){ String dateToStr = null;
if (sysCodeRule.getRenewFlag().equals(SysConstants.SYS_RENEW_FLAG_DAY)) {
//每日更新 //每日更新
String dateToStr = DateUtils.parseDateToStr(ruleTemplate, new Date()); dateToStr = DateUtils.parseDateToStr(ruleTemplate, new Date());
code.append(dateToStr); code.append(dateToStr);
// 如果 nextCode 不包含 dateToStr说明是新的日期
if (nextCode == null || !nextCode.contains(dateToStr)) {
String cCode = code + formatSequence(sequenceLength, 1L);
String nCode = code + formatSequence(sequenceLength, 2L);
sysCodeRule.setCurrentCode(cCode);
sysCodeRule.setNextCode(nCode);
return sysCodeRule;
}
} }
long seq = 1L; long seq = 1L;
// 截取序列号的前 sequenceLength 位 if ((StringUtils.isNotEmpty(nextCode) && StringUtils.isNotEmpty(dateToStr) && nextCode.contains(dateToStr))
if (StringUtils.isNotEmpty(nextCode)){ || sysCodeRule.getRenewFlag().equals(SysConstants.SYS_RENEW_FLAG_NO)) {
String substring = nextCode.substring(nextCode.length() - sequenceLength.intValue()); String substring = nextCode.substring(nextCode.length() - sequenceLength.intValue());
seq = Long.parseLong(substring) + 1; seq = Long.parseLong(substring) + 1;
} }

Loading…
Cancel
Save