Pārlūkot izejas kodu

aps-报工优化

sucheng 1 gadu atpakaļ
vecāks
revīzija
ac48840df2

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

@@ -725,40 +725,45 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         //更新待报工记录ID、已报工卷数
         //已报工卷数
         Integer reportroll = apsProcessOperationProcessEquDo.getReportroll();
-        ApsProcessOperationProcessEquDo needUpdateProcessOperationProcessEquDo = new ApsProcessOperationProcessEquDo();
-        needUpdateProcessOperationProcessEquDo.setId(apsProcessOperationProcessEquDo.getId());
-        //已报工卷数+1
-        needUpdateProcessOperationProcessEquDo.setReportroll(reportroll + reduceNum);
-        /**
-         * 更新作业明细的完工状态
-         * 如果未完工卷数=0,或者工序作业已完工状态=已完工,则=已完工
-         * 如果未完工卷数>0,并且工序作业已完工状态=未完工,则=未完工
-         */
+        LambdaUpdateWrapper<ApsProcessOperationProcessEquDo> processEquWrapper = new UpdateWrapper<ApsProcessOperationProcessEquDo>().lambda().eq(ApsProcessOperationProcessEquDo::getId, apsProcessOperationProcessEquDo.getId());
+        //已报工卷数=已报工卷数+输入批次号数量
+        Integer newReportRoll = reportroll + reduceNum;
+        processEquWrapper.set(ApsProcessOperationProcessEquDo::getReportroll, newReportRoll);
+
         //计划加工卷数
         Integer planprocessrall = apsProcessOperationProcessEquDo.getPlanprocessrall();
         //未完工卷数=计划加工卷数-已报工卷数
-        int unfinishroll = planprocessrall - needUpdateProcessOperationProcessEquDo.getReportroll();
-        if (unfinishroll <= 0 || apsProcessOperationDo.getClosestatus().equals("已完工")) {
-            needUpdateProcessOperationProcessEquDo.setClosestatus("已完工");
-            //已完工时更新完工时间
-            needUpdateProcessOperationProcessEquDo.setActualfinishdate(DateUtil.date());
+        int unfinishroll = planprocessrall - newReportRoll;
+        /**
+         * 如果未完工卷数-已取消卷数=0,则完工状态=已完工,实际完工时间=当前时间
+         * 如果未完工卷数-已取消卷数>0,则完工状态=未完工
+         * 如果完工状态=未完工,并且已开工卷数=0,则作业状态=待开工;
+         * 如果完工状态=未完工,并且已开工卷数>0,则作业状态=加工中;
+         * 如果完工状态=已完工,则作业状态=已完工
+         * 待报工记录ID=(空),
+         * 加工中批次号=(空)
+         */
+        //未完工卷数-已取消卷数
+        int needDoRoll = unfinishroll - apsProcessOperationProcessEquDo.getCancelroll();
+        if (needDoRoll <= 0) {
+            processEquWrapper.set(ApsProcessOperationProcessEquDo::getClosestatus, "已完工")
+                    .set(ApsProcessOperationProcessEquDo::getActualfinishdate, DateUtil.date())
+                    .set(ApsProcessOperationProcessEquDo::getWorkstatus, "已完工");
         }
-        if (unfinishroll > 0 && apsProcessOperationDo.getClosestatus().equals("未完工")) {
-            needUpdateProcessOperationProcessEquDo.setClosestatus("未完工");
+        if (needDoRoll > 0) {
+            processEquWrapper.set(ApsProcessOperationProcessEquDo::getClosestatus, "未完工");
+            if (apsProcessOperationProcessEquDo.getStartingroll() == 0) {
+                processEquWrapper.set(ApsProcessOperationProcessEquDo::getWorkstatus, "待开工");
+            } else {
+                processEquWrapper.set(ApsProcessOperationProcessEquDo::getWorkstatus, "加工中");
+            }
         }
+        processEquWrapper.set(ApsProcessOperationProcessEquDo::getWaitreportid, null)
+                .set(ApsProcessOperationProcessEquDo::getDoingbatchnumber, null);
 
-        //带报工记录ID清空
-        needUpdateProcessOperationProcessEquDo.setWaitreportid("");
-        if (apsProcessOperationProcessEquDo.getClosestatus().equals("未完工") && apsProcessOperationProcessEquDo.getStartingroll() > 0) {
-            needUpdateProcessOperationProcessEquDo.setWorkstatus("加工中");
-        }
-        if (ObjectUtil.isNotEmpty(unfinishroll) && unfinishroll == 0) {
-            needUpdateProcessOperationProcessEquDo.setWorkstatus("已完工");
-        }
+        //更新
+        apsProcessOperationProcessEquService.update(processEquWrapper);
 
-        //清空加工中批次号
-        needUpdateProcessOperationProcessEquDo.setDoingbatchnumber("");
-        apsProcessOperationProcessEquService.updateById(needUpdateProcessOperationProcessEquDo);
 
         //==============更新工序作业信息==============
         ApsProcessOperationDo needUpdateProcessOperation = new ApsProcessOperationDo();
@@ -769,6 +774,10 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         needUpdateProcessOperation.setUnfinishroll(apsProcessOperationDo.getPlanprocessrall() - needUpdateProcessOperation.getReportroll());
         //剩余待报工卷数=未完工卷数-输入已取消卷数-已取消卷数
         int needReportRoll = needUpdateProcessOperation.getUnfinishroll() - apsProcessOperationDo.getInputunqualifiedroll() - apsProcessOperationDo.getCancelroll();
+        if (needReportRoll <= 0) {
+            needReportRoll = 0;
+        }
+        needUpdateProcessOperation.setLeavewaitjobroll(needReportRoll);
         /**
          * 如果剩余待报工卷数=0,则完工状态=已完工,实际完工时间=当前时间
          * 如果剩余待报工卷数>0,则完工状态=未完工