Parcourir la source

aps通用更新生产状态方法

sucheng il y a 1 an
Parent
commit
4e22dafbfc

+ 51 - 45
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationProcessEquServiceImpl.java

@@ -93,26 +93,27 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
             return R.ok();
         }
         //工序作业->坯料计划
-        //工序作业->订单
         if (ObjectUtil.isNotEmpty(request.getProcessOperationId())) {
             updateBlank(request.getProcessOperationId());
             return R.ok();
         }
-        //坯料计划->产品明细
+        //坯料计划->订单
         if (ObjectUtil.isNotEmpty(request.getBlankId())) {
             updateOrder(request.getBlankId());
             return R.ok();
         }
-//        if (ObjectUtil.isNotEmpty(request.getOrderId())) {
-//            return R.ok();
-//        }
+        //订单->产品明细
+        if (ObjectUtil.isNotEmpty(request.getOrderId())) {
+            updateProductDetail(request.getOrderId());
+            return R.ok();
+        }
         return R.ok();
     }
 
     private void updateProcess(String processOperationEquId) {
         String processOperationId = updateProcessByProcessEquId(processOperationEquId);
 
-        if(ObjectUtil.isEmpty(processOperationId)){
+        if (ObjectUtil.isEmpty(processOperationId)) {
             return;
         }
 
@@ -122,12 +123,13 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
 
     /**
      * 从作业明细表中的任意一个子表ID开始,自动计算更新工序作业的状态,完成后返回其中一个工序作业的ID(不一定要用)
+     *
      * @param processOperationEquId
      */
     public String updateProcessByProcessEquId(String processOperationEquId) {
         //查询所有子表明细的最小生产状态和工序作业ID
         CommonUpdateProductionStatusReq one = this.baseMapper.selectEquMinStatus(processOperationEquId);
-        if(ObjectUtil.isEmpty(one)){
+        if (ObjectUtil.isEmpty(one)) {
             return "";
         }
         //工序作业ID
@@ -153,27 +155,27 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
          * 如果已开工卷数>0,并且完工状态=未完工,则=加工中;(先更新完工状态)
          * 如果未完工卷数=0,并且完工状态=已完工,则=已完工(先更新完工状态)
          */
-        if(startingroll <= 0){
+        if (startingroll <= 0) {
             apsProcessOperationDo.setWorkstatus("待开工");
             //容错修正
             apsProcessOperationDo.setStartingroll(0);
         }
-        if(startingroll > 0 && apsProcessOperationDo.getClosestatus().equals("未完工")){
+        if (startingroll > 0 && apsProcessOperationDo.getClosestatus().equals("未完工")) {
             apsProcessOperationDo.setWorkstatus("加工中");
         }
-        if(unfinishroll == 0 && apsProcessOperationDo.getClosestatus().equals("已完工")){
+        if (unfinishroll == 0 && apsProcessOperationDo.getClosestatus().equals("已完工")) {
             apsProcessOperationDo.setWorkstatus("已完工");
         }
 
         //更新工序作业的生产状态
         //开工和报工检验后,生产状态=作业状态(先更新作业状态)
-        if(apsProcessOperationDo.getWorkstatus().equals("待开工")){
+        if (apsProcessOperationDo.getWorkstatus().equals("待开工")) {
             apsProcessOperationDo.setProcessstatus("30");
         }
-        if(apsProcessOperationDo.getWorkstatus().equals("加工中")){
+        if (apsProcessOperationDo.getWorkstatus().equals("加工中")) {
             apsProcessOperationDo.setProcessstatus("40");
         }
-        if(apsProcessOperationDo.getWorkstatus().equals("已完工")){
+        if (apsProcessOperationDo.getWorkstatus().equals("已完工")) {
             apsProcessOperationDo.setProcessstatus("50");
         }
         apsProcessOperationDo.setId(processId);
@@ -185,7 +187,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
     private void updateBlank(String processOperationId) {
         //查询此工序作业的所属坯料计划的最小生产状态和坯料计划ID
         CommonUpdateProductionStatusReq two = this.baseMapper.selectProcessMinStatus(processOperationId);
-        if(ObjectUtil.isEmpty(two)){
+        if (ObjectUtil.isEmpty(two)) {
             return;
         }
         //更新坯料计划的生产状态
@@ -194,12 +196,41 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
         apsBlankOrderDo.setProductstatus(two.getProductionStatus());
         apsBlankOrderService.updateById(apsBlankOrderDo);
 
+        //更新订单
+        updateOrder(two.getBlankId());
+    }
+
+
+    private void updateOrder(String blankId) {
+        //查询此坯料计划的所属订单的最小生产状态和订单ID
+        CommonUpdateProductionStatusReq three = this.baseMapper.selectBlankMinStatus(blankId);
+        if (ObjectUtil.isEmpty(three)) {
+            return;
+        }
+        //更新订单
+        ApsProductionOrderDo apsProductionOrderDo = new ApsProductionOrderDo();
+        apsProductionOrderDo.setId(three.getOrderId());
+        apsProductionOrderDo.setProductionstatus(three.getProductionStatus());
+        if (three.getProductionStatus().equals("10")) {
+            apsProductionOrderDo.setSchedulstatus("待排程");
+        }
+        if (three.getProductionStatus().equals("20")) {
+            apsProductionOrderDo.setSchedulstatus("待发布");
+        }
+        if ("30,40,50".contains(three.getProductionStatus())) {
+            apsProductionOrderDo.setSchedulstatus("已发布");
+        }
+        apsProductionOrderService.updateById(apsProductionOrderDo);
+
         //更新产品明细的生产状态
-        //查询订单的所有产品明细
         //订单ID
-        String orderId = two.getOrderId();
+        String orderId = three.getOrderId();
+        updateProductDetail(orderId);
+    }
+
+    private void updateProductDetail(String orderId) {
         List<ApsProductDetailDo> list = apsProductDetailService.list(new QueryWrapper<ApsProductDetailDo>().lambda().eq(ApsProductDetailDo::getMainid, orderId));
-        if(list.size() > 0) {
+        if (list.size() > 0) {
             List<String> productIdList = list.stream().map(ApsProductDetailDo::getId).collect(Collectors.toList());
             //查找产品的最新坯料状态
             List<ApsProductDetailDo> productDetailDoList = apsProcessOperationProcessEquDao.selectNeedUpdate(productIdList);
@@ -210,9 +241,9 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 //对比当前生产状态判断是否需要更新
                 for (ApsProductDetailDo productDetailDo : list) {
                     //同一产品明细
-                    if(apsProductDetailDo.getId().equals(productDetailDo.getId())){
+                    if (apsProductDetailDo.getId().equals(productDetailDo.getId())) {
                         //比较状态
-                        if(!apsProductDetailDo.getProductstatus().equals(productDetailDo.getProductstatus())){
+                        if (!apsProductDetailDo.getProductstatus().equals(productDetailDo.getProductstatus())) {
                             //不相等则更新
                             ApsProductDetailDo needUpdate = new ApsProductDetailDo();
                             needUpdate.setId(apsProductDetailDo.getId());
@@ -224,35 +255,10 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 }
             }
 
-            if(needUpdateList.size()>0){
+            if (needUpdateList.size() > 0) {
                 apsProductDetailService.updateBatchById(needUpdateList);
             }
         }
-
-        //更新订单
-        updateOrder(two.getBlankId());
-    }
-
-    private void updateOrder(String blankId) {
-        //查询此坯料计划的所属订单的最小生产状态和订单ID
-        CommonUpdateProductionStatusReq three = this.baseMapper.selectBlankMinStatus(blankId);
-        if(ObjectUtil.isEmpty(three)){
-            return;
-        }
-        //更新订单
-        ApsProductionOrderDo apsProductionOrderDo = new ApsProductionOrderDo();
-        apsProductionOrderDo.setId(three.getOrderId());
-        apsProductionOrderDo.setProductionstatus(three.getProductionStatus());
-        if(three.getProductionStatus().equals("10")){
-            apsProductionOrderDo.setSchedulstatus("待排程");
-        }
-        if(three.getProductionStatus().equals("20")){
-            apsProductionOrderDo.setSchedulstatus("待发布");
-        }
-        if("30,40,50".contains(three.getProductionStatus())){
-            apsProductionOrderDo.setSchedulstatus("已发布");
-        }
-        apsProductionOrderService.updateById(apsProductionOrderDo);
     }
 }