diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteCodeRuleService.java b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteCodeRuleService.java new file mode 100644 index 0000000..cbab9e4 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteCodeRuleService.java @@ -0,0 +1,17 @@ +package org.dromara.system.api; + +/** + * 编码规则服务 + * + * @author Yinq + */ +public interface RemoteCodeRuleService { + + /** + * 通过编码规则编码获取编码 + * @param codeRuleCode 编码规则编码 + * @return currentCode + */ + String selectCodeRuleCode(String codeRuleCode); + +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/SysConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/SysConstants.java new file mode 100644 index 0000000..429b078 --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/SysConstants.java @@ -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"; + +} + diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdOrderInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdOrderInfoBo.java index 1d3e926..28b495e 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdOrderInfoBo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdOrderInfoBo.java @@ -32,7 +32,6 @@ public class ProdOrderInfoBo extends BaseEntity { /** * 订单编号 */ - @NotBlank(message = "订单编号不能为空", groups = {AddGroup.class, EditGroup.class}) private String orderCode; /** diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdOrderInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdOrderInfoServiceImpl.java index fb05555..4dcb0ef 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdOrderInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdOrderInfoServiceImpl.java @@ -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; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteCodeRuleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteCodeRuleServiceImpl.java new file mode 100644 index 0000000..35eb56b --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteCodeRuleServiceImpl.java @@ -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); + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCodeRuleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCodeRuleServiceImpl.java index 4ba6880..eb41a21 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCodeRuleServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCodeRuleServiceImpl.java @@ -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; }