Explorar o código

Merge remote-tracking branch 'origin/master'

fangpy hai 1 ano
pai
achega
363809f7e9

+ 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);
     }
 }
 

+ 26 - 5
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationServiceImpl.java

@@ -1,6 +1,7 @@
 package com.rongwei.bscommon.sys.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -62,6 +63,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
     @Autowired
     private ApsProcessOperationProcessEquService apsProcessOperationProcessEquService;
+    @Autowired
+    private ApsProductionOrderService apsProductionOrderService;
+    @Autowired
+    private ApsBlankOrderService apsBlankOrderService;
 
 
     private final static Map<String, String> UNIT_MAP = new HashMap<String, String>() {{
@@ -696,24 +701,41 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             return R.error("入参有误");
         }
 
+        String orderId = "";
+
         //迭代更新当前工序作业及其所有后续工序
-        updateProcessByProcessId(processId);
+        orderId = updateProcessByProcessId(processId, orderId);
 
         //完成后更新生产状态
         CommonUpdateProductionStatusReq commonUpdateProductionStatusReq = new CommonUpdateProductionStatusReq();
         commonUpdateProductionStatusReq.setProcessOperationId(processId);
         apsProcessOperationProcessEquService.updateProductionStatus(commonUpdateProductionStatusReq);
 
+        //更新订单的状态
+        ApsProductionOrderDo apsProductionOrderDo = new ApsProductionOrderDo();
+        apsProductionOrderDo.setId(orderId);
+        apsProductionOrderDo.setChangedate(DateUtil.date());
+        apsProductionOrderDo.setAuditstatus("待计划评审");
+        apsProductionOrderService.updateById(apsProductionOrderDo);
         return R.ok();
     }
 
     //根据工序ID更新,明细和工序的状态
-    private void updateProcessByProcessId(String processId) {
+    private String updateProcessByProcessId(String processId, String orderId) {
         //=============迭代开始,更新当前工序及其明细==================
 
         //查询当前工序作业详情
         ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(processId);
 
+        if (ObjectUtil.isEmpty(orderId)) {
+            //工序作业所属坯料计划
+            String blankid = apsProcessOperationDo.getBlankid();
+            //查询坯料计划的所属订单ID
+            ApsBlankOrderDo apsBlankOrderDo = apsBlankOrderService.getById(blankid);
+            orderId = apsBlankOrderDo.getProductionorderid();
+        }
+
+
         ApsProcessOperationDo previousProcessOperation = null;
         if (ObjectUtil.isNotEmpty(apsProcessOperationDo.getPreviousprocessid())) {
             //查询上道工序作业详情
@@ -807,11 +829,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         if (ObjectUtil.isNotEmpty(apsProcessOperationDo.getNextprocessid())) {
             String[] nextProcessIdList = apsProcessOperationDo.getNextprocessid().split(",");
             for (String nextProcessId : nextProcessIdList) {
-                updateProcessByProcessId(nextProcessId);
+                updateProcessByProcessId(nextProcessId, orderId);
             }
-        } else {
-            return;
         }
+        return orderId;
     }
 
     /*