浏览代码

aps-批次号生成逻辑优化

sucheng 8 月之前
父节点
当前提交
aba3716b8c

+ 7 - 6
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportOutputServiceImpl.java

@@ -13,6 +13,7 @@ import com.rongwei.bsentity.domain.ApsProcessOperationOutMaterDo;
 import com.rongwei.bsentity.domain.ApsReportOutputDo;
 import com.rongwei.bsentity.domain.ApsReportRecordsDo;
 import com.rongwei.bsentity.vo.InsertMyReportOutputReq;
+import com.rongwei.commonservice.serial.service.SysSerialNumberService;
 import com.rongwei.rwadmincommon.system.domain.SysDictDo;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.R;
@@ -50,6 +51,8 @@ public class ApsReportOutputServiceImpl extends ServiceImpl<ApsReportOutputDao,
     private ApsProcessOperationService apsProcessOperationService;
     @Autowired
     private ApsReportOutputDao apsReportOutputDao;
+    @Autowired
+    private SysSerialNumberService sysSerialNumberService;
 
     @Override
     @Transactional
@@ -84,15 +87,13 @@ public class ApsReportOutputServiceImpl extends ServiceImpl<ApsReportOutputDao,
                         vo.setResetrule("date:yyyyMM");
                         vo.setIfautomaticreset("y");
                         vo.setInitValue(0L);
-                        Map<String, Object> codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
-                        String code = codeData.get("code").toString();
-                        if (StringUtils.isNotBlank(code)){
+                        String code = sysSerialNumberService.getCodeByTemplate(vo);
+                        if (StringUtils.isNotBlank(code)) {
                             //取出批次号后三位
                             String lastThreeChars = code.substring(code.length() - 3);
                             //判断如果code最后三位如果为000时再次调用序列号接口/修复跨月流水号问题
-                            if ("000".equals(lastThreeChars)){
-                                codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
-                                code = codeData.get("code").toString();
+                            if ("000".equals(lastThreeChars)) {
+                                code = sysSerialNumberService.getCodeByTemplate(vo);
                                 lastThreeChars = code.substring(code.length() - 3);
                             }
                             //当工序为‘铸轧’时添加序列号将序列号默认为批次号后三位

+ 34 - 30
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportRecordsServiceImpl.java

@@ -14,6 +14,7 @@ import com.rongwei.bscommon.sys.dao.ApsReportRecordsDao;
 import com.rongwei.bscommon.sys.service.*;
 import com.rongwei.bsentity.domain.*;
 import com.rongwei.bsentity.vo.*;
+import com.rongwei.commonservice.serial.service.SysSerialNumberService;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.base.exception.CustomException;
@@ -90,6 +91,8 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
     private ApsProcessOutputProductDao apsProcessOutputProductDao;
     @Autowired
     private ApsOrderAlloyCompositionService apsOrderAlloyCompositionService;
+    @Autowired
+    private SysSerialNumberService sysSerialNumberService;
 
     @Override
     @Transactional
@@ -166,17 +169,17 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
          */
         if (ObjectUtil.isNotEmpty(recordsDo.getBatchnumber())) {
             List<String> doingBatchNumbers = new LinkedList<>(Arrays.asList(apsProcessOperationProcessEquDo.getDoingbatchnumber().split(",")));
-            if (ObjectUtil.isNotEmpty(doingBatchNumbers)){
+            if (ObjectUtil.isNotEmpty(doingBatchNumbers)) {
                 doingBatchNumbers.removeAll(batchNumberList);
                 //加工中批次号=当前工序作业明细的加工中批次号应该减去“{批次号}”
-                if (doingBatchNumbers.size()>0){
-                    processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getDoingbatchnumber, String.join(",",doingBatchNumbers));
-                }else {
+                if (doingBatchNumbers.size() > 0) {
+                    processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getDoingbatchnumber, String.join(",", doingBatchNumbers));
+                } else {
                     //加工中批次号=(空)
                     processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getDoingbatchnumber, null);
                 }
             }
-        }else {
+        } else {
             //加工中批次号=(空)
             processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getDoingbatchnumber, null);
         }
@@ -192,7 +195,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         /**
          * 新加需求:更新“剩余待开工卷数”=计划加工卷数-已开工卷数-已取消卷数
          */
-        Integer newLeaveWaitWorkRoll = apsProcessOperationProcessEquDo.getPlanprocessrall()-newStartingRoll-apsProcessOperationProcessEquDo.getCancelroll();
+        Integer newLeaveWaitWorkRoll = apsProcessOperationProcessEquDo.getPlanprocessrall() - newStartingRoll - apsProcessOperationProcessEquDo.getCancelroll();
         processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getLeavewaitworkroll, newLeaveWaitWorkRoll);
         //更新
         apsProcessOperationProcessEquService.update(processEquUpdateWrapper);
@@ -526,9 +529,9 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
              */
             //加工中批次号
             if (ObjectUtil.isNotEmpty(req.getInputBatchNumber())) {
-                if (StringUtils.isNotBlank(apsProcessOperationProcessEquDo.getDoingbatchnumber())){
-                    needUpdateProcessOperationProcessEqu.setDoingbatchnumber(apsProcessOperationProcessEquDo.getDoingbatchnumber()+","+req.getInputBatchNumber());
-                }else {
+                if (StringUtils.isNotBlank(apsProcessOperationProcessEquDo.getDoingbatchnumber())) {
+                    needUpdateProcessOperationProcessEqu.setDoingbatchnumber(apsProcessOperationProcessEquDo.getDoingbatchnumber() + "," + req.getInputBatchNumber());
+                } else {
                     needUpdateProcessOperationProcessEqu.setDoingbatchnumber(req.getInputBatchNumber());
                 }
             }
@@ -539,7 +542,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             /**
              * 新加需求:更新“剩余待开工卷数”=计划加工卷数-已开工卷数-已取消卷数
              */
-            Integer newLeaveWaitWorkRoll = apsProcessOperationProcessEquDo.getPlanprocessrall()-newStartingRoll-apsProcessOperationProcessEquDo.getCancelroll();
+            Integer newLeaveWaitWorkRoll = apsProcessOperationProcessEquDo.getPlanprocessrall() - newStartingRoll - apsProcessOperationProcessEquDo.getCancelroll();
             needUpdateProcessOperationProcessEqu.setLeavewaitworkroll(newLeaveWaitWorkRoll);
             apsProcessOperationProcessEquService.updateById(needUpdateProcessOperationProcessEqu);
 
@@ -678,13 +681,13 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                 vo.setResetrule("date:yyyyMM");
                 vo.setIfautomaticreset("y");
                 vo.setInitValue(0L);
-                Map<String, Object> codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
-                heatNumber = codeData.get("code").toString();
+//                Map<String, Object> codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
+                heatNumber = sysSerialNumberService.getCodeByTemplate(vo);
                 if (StringUtils.isNotBlank(heatNumber)) {
                     //判断如果heatNumber如果为000时再次调用序列号接口/修复跨月流水号问题
                     if ("000".equals(heatNumber)) {
-                        codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
-                        heatNumber = codeData.get("code").toString();
+//                        codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
+                        heatNumber = sysSerialNumberService.getCodeByTemplate(vo);
                     }
                 }
             }
@@ -1068,12 +1071,12 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
              * 如果剩余待报工卷数=0,则完工状态=已完工,实际完工时间=当前时间
              * 如果剩余待报工卷数>0,则完工状态=未完工
              */
-            Integer newLeaveWaitJobRoll = unfinishroll-apsProcessOperationProcessEquDo.getCancelroll();
+            Integer newLeaveWaitJobRoll = unfinishroll - apsProcessOperationProcessEquDo.getCancelroll();
             processEquWrapper.set(ApsProcessOperationProcessEquDo::getLeavewaitjobroll, newLeaveWaitJobRoll);
-            if (newLeaveWaitJobRoll>0){
+            if (newLeaveWaitJobRoll > 0) {
                 processEquWrapper.set(ApsProcessOperationProcessEquDo::getClosestatus, "未完工");
-            }else {
-                if (newLeaveWaitJobRoll==0){
+            } else {
+                if (newLeaveWaitJobRoll == 0) {
                     processEquWrapper.set(ApsProcessOperationProcessEquDo::getClosestatus, "已完工");
                     processEquWrapper.set(ApsProcessOperationProcessEquDo::getActualfinishdate, new Date());
                 }
@@ -1527,13 +1530,13 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                 vo.setResetrule("date:yyyyMM");
                 vo.setIfautomaticreset("y");
                 vo.setInitValue(0L);
-                Map<String, Object> codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
-                heatNumber = codeData.get("code").toString();
-                if (StringUtils.isNotBlank(heatNumber)){
+//                Map<String, Object> codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
+                heatNumber = sysSerialNumberService.getCodeByTemplate(vo);
+                if (StringUtils.isNotBlank(heatNumber)) {
                     //判断如果heatNumber如果为000时再次调用序列号接口/修复跨月流水号问题
-                    if ("000".equals(heatNumber)){
-                        codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
-                        heatNumber = codeData.get("code").toString();
+                    if ("000".equals(heatNumber)) {
+//                        codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
+                        heatNumber = sysSerialNumberService.getCodeByTemplate(vo);
                     }
                 }
             }
@@ -1821,7 +1824,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             /**
              * 新加需求:更新“剩余待开工卷数”=计划加工卷数-已开工卷数-已取消卷数
              */
-            Integer newLeaveWaitWorkRoll = apsProcessOperationProcessEquDo.getPlanprocessrall()-needUpdateProcessEqu.getStartingroll()-apsProcessOperationProcessEquDo.getCancelroll();
+            Integer newLeaveWaitWorkRoll = apsProcessOperationProcessEquDo.getPlanprocessrall() - needUpdateProcessEqu.getStartingroll() - apsProcessOperationProcessEquDo.getCancelroll();
             needUpdateProcessEqu.setLeavewaitworkroll(newLeaveWaitWorkRoll);
 
             apsProcessOperationProcessEquService.updateById(needUpdateProcessEqu);
@@ -1976,10 +1979,11 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
 
     /**
      * 更新报工记录-输出物料子表中序列号与批次号
+     *
      * @param apsReportOutputDoList
      * @param recordsDo
      */
-    private void updateSerialnumber(List<ApsReportOutputDo> apsReportOutputDoList,ApsReportRecordsDo recordsDo){
+    private void updateSerialnumber(List<ApsReportOutputDo> apsReportOutputDoList, ApsReportRecordsDo recordsDo) {
         //查询对应的工序作业
         ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(recordsDo.getProcessoperationid());
         //查询对应的工序作业明细信息
@@ -1987,19 +1991,19 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         //1.循环输出物料2.判断输出物料序列号字段是否有值是否与批次号后三位相等,不相等则更新批次号和序列号为最新的值3.将平台序列号表更新输出物料流水的最大值4.只针对铸轧
         String nodeMonthCode = SaveConstans.MONTH_CODE_LIST.get(DateUtil.month(DateUtil.date()));
         String nowYear = (DateUtil.year(DateUtil.date()) % 100) + "";
-        apsReportOutputDoList.forEach(info ->{
-            if (StringUtils.isNotBlank(info.getOutputnumber())){
+        apsReportOutputDoList.forEach(info -> {
+            if (StringUtils.isNotBlank(info.getOutputnumber())) {
                 String outputCode = info.getOutputnumber();
                 String nextChar = "";
                 int index = outputCode.indexOf(nowYear);
                 if (index != -1) {
                     nextChar = String.valueOf(outputCode.charAt(index + nowYear.length()));
                     //需要判断每条数据在当前月
-                    if ("铸轧".equals(apsProcessOperationDo.getProcess())&&nodeMonthCode.equals(nextChar)){
+                    if ("铸轧".equals(apsProcessOperationDo.getProcess()) && nodeMonthCode.equals(nextChar)) {
                         //取出批次号最后三位字符串
                         String lastThreeChars = outputCode.substring(outputCode.length() - 3);
                         //校验序列号大小是否大于等于批次号后三位
-                        if (info.getSerialnumber()!= null&&info.getSerialnumber()!= Long.parseLong(lastThreeChars)){
+                        if (info.getSerialnumber() != null && info.getSerialnumber() != Long.parseLong(lastThreeChars)) {
                             // 删除批次号原来的后三位字符串,将序列号的三位数字更新到批次号中
                             String newOutput = outputCode.substring(0, outputCode.length() - 3);
                             String formatSerialnumber = String.format("%03d", info.getSerialnumber());