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;
/**

@ -1,5 +1,6 @@
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.StringUtils;
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.vo.BaseMaterialInfoVo;
import org.dromara.mes.mapper.*;
import org.dromara.system.api.RemoteCodeRuleService;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdOrderInfoBo;
import org.dromara.mes.domain.vo.ProdOrderInfoVo;
@ -33,9 +35,16 @@ public class ProdOrderInfoServiceImpl implements IProdOrderInfoService {
private final ProdOrderInfoMapper baseMapper;
private final ProdBaseProdLineInfoMapper prodBaseProdLineInfoMapper;
private final ProdBaseRouteMapper prodBaseRouteMapper;
private final ProdBaseProcessInfoMapper prodBaseProcessInfoMapper;
private final BaseMaterialInfoMapper baseMaterialInfoMapper;
@DubboReference
private final RemoteCodeRuleService remoteCodeRuleService;
/**
*
*
@ -140,6 +149,8 @@ public class ProdOrderInfoServiceImpl implements IProdOrderInfoService {
*/
@Override
public Boolean insertByBo(ProdOrderInfoBo bo) {
String orderCode = remoteCodeRuleService.selectCodeRuleCode("1");
bo.setOrderCode(orderCode);
ProdOrderInfo add = MapstructUtils.convert(bo, ProdOrderInfo.class);
validEntityBeforeSave(add);
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;
import org.dromara.common.core.constant.SysConstants;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.MapstructUtils;
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.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.system.domain.bo.SysCodeRuleBo;
@ -158,7 +158,7 @@ public class SysCodeRuleServiceImpl implements ISysCodeRuleService {
}
public SysCodeRule generateCode(SysCodeRule sysCodeRule) {
if (StringUtils.isNull(sysCodeRule)){
if (StringUtils.isNull(sysCodeRule)) {
return null;
}
Long sequenceLength = sysCodeRule.getSequenceLength();
@ -167,14 +167,23 @@ public class SysCodeRuleServiceImpl implements ISysCodeRuleService {
String nextCode = sysCodeRule.getNextCode();
StringBuilder code = new StringBuilder();
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);
// 如果 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;
// 截取序列号的前 sequenceLength 位
if (StringUtils.isNotEmpty(nextCode)){
if ((StringUtils.isNotEmpty(nextCode) && StringUtils.isNotEmpty(dateToStr) && nextCode.contains(dateToStr))
|| sysCodeRule.getRenewFlag().equals(SysConstants.SYS_RENEW_FLAG_NO)) {
String substring = nextCode.substring(nextCode.length() - sequenceLength.intValue());
seq = Long.parseLong(substring) + 1;
}

Loading…
Cancel
Save