Ver Fonte

aps-批量排程后的生产状态更新

sucheng há 1 ano atrás
pai
commit
26236c1e7c

+ 2 - 2
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsBlankOrderDao.java

@@ -52,8 +52,8 @@ public interface ApsBlankOrderDao extends BaseMapper<ApsBlankOrderDo> {
     @Update("update aps_process_operation set PROCESSSTATUS = '20' where PROCESSSTATUS = '10' AND BLANKID IN (select ID from aps_blank_order where DELETED = 0 AND PRODUCTIONORDERID in (${orderIds}))")
     void publishUnlock(@Param("ids") List<String> ids);
 
-    @Update("update aps_process_operation set PROCESSSTATUS = '20' where BLANKID IN (select ID from aps_blank_order where DELETED = 0 AND PRODUCTIONORDERID in (${orderIds}))")
-    void updateProcessOperationByOrderIds(@Param("orderIds") String orderIds);
+    @Update("update aps_process_operation set PROCESSSTATUS = '20' where BLANKID IN ('${blankIds}') AND PROCESSSTATUS = '10'")
+    void updateProcessOperationByOrderIds(@Param("blankIds") String blankIds);
 
     void cancelSchedulingUpdate(@Param("idList") List<String> idList);
 

+ 37 - 16
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsBlankOrderServiceImpl.java

@@ -428,7 +428,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         List<ApsBlankOrderVo> notLockOrders = apsBlankOrderDao.getNotLockOrders(tenantId);
         blankOrderAps(notLockOrders);
         //更新生产状态为“待发布”(20)
-        updateProductStatusByOrderIds(notLockOrders.stream().map(ApsBlankOrderVo::getProductionorderid).collect(Collectors.toSet()));
+        updateProductStatusByOrderIds(notLockOrders);
     }
 
     /**
@@ -464,7 +464,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         blankOrderAps(resBlankList);
         //blankOrderAps(apsBlankOrders);
         //更新生产状态为“待发布”(20)
-        updateProductStatusByOrderIds(resBlankList.stream().map(ApsBlankOrderVo::getProductionorderid).collect(Collectors.toSet()));
+        updateProductStatusByOrderIds(resBlankList);
     }
 
     /**
@@ -698,7 +698,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         if (apsBlankOrders != null && apsBlankOrders.size() > 0) {
             for (ApsBlankOrderVo apsBlankOrderVo : apsBlankOrders) {
                 // 坯料计划订单
-                ProduceOrder produceOrder = new ProduceOrder(apsBlankOrderVo.getId(), apsBlankOrderVo.getMaterialname(), DateUtil.offsetHour(apsBlankOrderVo.getDeliverydate(),-apsBlankOrderVo.getDeliverytime()));
+                ProduceOrder produceOrder = new ProduceOrder(apsBlankOrderVo.getId(), apsBlankOrderVo.getMaterialname(), DateUtil.offsetHour(apsBlankOrderVo.getDeliverydate(), -apsBlankOrderVo.getDeliverytime()));
                 // 获取所有订单工序
                 List<ApsProcessOperationDo> operationDos = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
                         .eq(ApsProcessOperationDo::getBlankid, apsBlankOrderVo.getId()));
@@ -740,7 +740,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                                             .gt(ApsProcessOperationProcessEquDo::getPlanstartdate, productionScheduleVo.getApsPlanStartDate())
                                             .orderByDesc(ApsProcessOperationProcessEquDo::getPlanstartdate)
                                     );
-                                    if(lastpros != null && lastpros.size()>0){
+                                    if (lastpros != null && lastpros.size() > 0) {
                                         ApsProcessOperationProcessEquDo lastpro = lastpros.get(0);
                                         ApsProcessOperationDo lastop = apsProcessOperationService.getById(lastpro.getProcessid());
                                         equipment.setLastProcessType(lastop.getProcess());
@@ -1183,10 +1183,24 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
     }
 
     /**
-     * 排程结束之后根据订单IDs修改生产状态
+     * 排程结束之后根据坯料计划IDs修改生产状态
      */
-    private void updateProductStatusByOrderIds(Set<String> orderIds) {
-        String idStrs = CollUtil.join(orderIds, "','");
+    private void updateProductStatusByOrderIds(List<ApsBlankOrderVo> blankOrderVoList) {
+
+        //每个需要排程的订单挑选一个坯料计划,用于更新订单的生产状态
+        Set<String> orderIds = new HashSet<>();
+        //最终需要更新生产状态的坯料计划Id集合
+        List<String> needUpdateProductStatusBlankIdList = new LinkedList<>();
+        for (ApsBlankOrderVo blankOrderVo : blankOrderVoList) {
+            if (!orderIds.contains(blankOrderVo.getProductionorderid())) {
+                orderIds.add(blankOrderVo.getProductionorderid());
+                needUpdateProductStatusBlankIdList.add(blankOrderVo.getId());
+            }
+        }
+        //需要修改自身状态的坯料计划ID集合
+        Set<String> blankIds = blankOrderVoList.stream().map(ApsBlankOrderVo::getId).collect(Collectors.toSet());
+
+        String idStrs = CollUtil.join(blankIds, "','");
         idStrs = "'" + idStrs + "'";
 
         //更新工序作业的生产状态为‘待发布’(20)
@@ -1195,15 +1209,22 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         ApsBlankOrderDo apsBlankOrderDo = new ApsBlankOrderDo();
         apsBlankOrderDo.setProductstatus(TO_BE_PUBLISHED);
         apsBlankOrderDo.setSchedulingstatus(SaveConstans.SchedulingStatus.TO_BE_PUBLISHED);
-        this.update(apsBlankOrderDo, new QueryWrapper<ApsBlankOrderDo>().lambda().in(ApsBlankOrderDo::getProductionorderid, orderIds).eq(ApsBlankOrderDo::getProductstatus, "10"));
-        //更新所有产品明细的生产状态
-        ApsProductDetailDo apsProductDetailDo = new ApsProductDetailDo();
-        apsProductDetailDo.setProductstatus(TO_BE_PUBLISHED);
-        apsProductDetailService.update(apsProductDetailDo, new QueryWrapper<ApsProductDetailDo>().lambda().in(ApsProductDetailDo::getMainid, orderIds).eq(ApsProductDetailDo::getProductstatus, "10"));
-        //更新订单的生产状态
-        ApsProductionOrderDo apsProductionOrderDo = new ApsProductionOrderDo();
-        apsProductionOrderDo.setProductionstatus(TO_BE_PUBLISHED);
-        apsProductionOrderService.update(apsProductionOrderDo, new QueryWrapper<ApsProductionOrderDo>().lambda().in(ApsProductionOrderDo::getId, orderIds).eq(ApsProductionOrderDo::getProductionstatus, "10"));
+        this.update(apsBlankOrderDo, new QueryWrapper<ApsBlankOrderDo>().lambda().in(ApsBlankOrderDo::getId, blankIds).eq(ApsBlankOrderDo::getProductstatus, SaveConstans.SchedulingStatus.TO_BE_SCHEDULED));
+        //公共方法挨个更新
+        for (String blankId : needUpdateProductStatusBlankIdList) {
+            CommonUpdateProductionStatusReq commonUpdateProductionStatusReq = new CommonUpdateProductionStatusReq();
+            commonUpdateProductionStatusReq.setBlankId(blankId);
+            apsProcessOperationProcessEquService.updateProductionStatus(commonUpdateProductionStatusReq);
+        }
+
+//        //更新所有产品明细的生产状态
+//        ApsProductDetailDo apsProductDetailDo = new ApsProductDetailDo();
+//        apsProductDetailDo.setProductstatus(TO_BE_PUBLISHED);
+//        apsProductDetailService.update(apsProductDetailDo, new QueryWrapper<ApsProductDetailDo>().lambda().in(ApsProductDetailDo::getMainid, blankIds).eq(ApsProductDetailDo::getProductstatus, SaveConstans.SchedulingStatus.TO_BE_SCHEDULED));
+//        //更新订单的生产状态
+//        ApsProductionOrderDo apsProductionOrderDo = new ApsProductionOrderDo();
+//        apsProductionOrderDo.setProductionstatus(TO_BE_PUBLISHED);
+//        apsProductionOrderService.update(apsProductionOrderDo, new QueryWrapper<ApsProductionOrderDo>().lambda().in(ApsProductionOrderDo::getId, orderIds).eq(ApsProductionOrderDo::getProductionstatus, SaveConstans.SchedulingStatus.TO_BE_SCHEDULED));
     }
 
     /**