ソースを参照

aps通用更新生产状态方法

sucheng 1 年間 前
コミット
ef1bc59c9c

+ 6 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationProcessEquDao.java

@@ -61,6 +61,12 @@ public interface ApsProcessOperationProcessEquDao extends BaseMapper<ApsProcessO
     void updateEquByCancelRecord(@Param("deviceId") String deviceId);
 
     List<ApsProductDetailDo> selectNeedUpdate(@Param("productIdList") List<String> productIdList);
+
+    @Select("select apo.PRODUCTIONORDERID from aps_blank_order apo LEFT JOIN aps_process_operation apo2 ON apo2.DELETED = 0 AND apo.ID = apo2.BLANKID where apo.DELETED = 0 AND apo2.ID = #{processOperationId} limit 1")
+    String selectOrderIdByProcessOperationId(@Param("processOperationId") String processOperationId);
+
+    @Select("select apo.ID AS 'blankId',MIN(apo2.PROCESSSTATUS) AS 'productionStatus' from aps_blank_order apo LEFT JOIN aps_process_operation apo2 ON apo2.DELETED = 0 AND apo.ID = apo2.BLANKID where apo.DELETED = 0 AND apo.PRODUCTIONORDERID = #{orderId} GROUP BY apo.ID")
+    List<CommonUpdateProductionStatusReq> selectProcessMinStatusList(@Param("orderId") String orderId);
 }
 
 

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

@@ -182,19 +182,39 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
     }
 
     private void updateBlank(String processOperationId) {
-        //查询此工序作业的所属坯料计划的最小生产状态和坯料计划ID
-        CommonUpdateProductionStatusReq two = this.baseMapper.selectProcessMinStatus(processOperationId);
-        if (ObjectUtil.isEmpty(two)) {
+        //查询此工序的所属订单ID
+        String orderId = this.baseMapper.selectOrderIdByProcessOperationId(processOperationId);
+
+        //查询此工序所属订单的所有坯料计划的最小生产状态和坯料计划ID
+        List<CommonUpdateProductionStatusReq> twoList = this.baseMapper.selectProcessMinStatusList(orderId);
+
+        //查询此坯料计划目前的生产状态信息
+        List<ApsBlankOrderDo> list = apsBlankOrderService.list(new QueryWrapper<ApsBlankOrderDo>().lambda().eq(ApsBlankOrderDo::getProductionorderid, orderId));
+
+        if (twoList.size() <= 0 || list.size() <= 0){
             return;
         }
-        //更新坯料计划的生产状态
-        ApsBlankOrderDo apsBlankOrderDo = new ApsBlankOrderDo();
-        apsBlankOrderDo.setId(two.getBlankId());
-        apsBlankOrderDo.setProductstatus(two.getProductionStatus());
-        apsBlankOrderService.updateById(apsBlankOrderDo);
+        List<ApsBlankOrderDo> needUpdateList = new LinkedList<>();
+        for (CommonUpdateProductionStatusReq two : twoList) {
+            for (ApsBlankOrderDo apsBlankOrderDo : list) {
+                //如果不为空,并且状态不同
+                if(ObjectUtil.isNotEmpty(two.getBlankId()) && two.getBlankId().equals(apsBlankOrderDo.getId())
+                        && ObjectUtil.isNotEmpty(two.getProductionStatus()) && ObjectUtil.isNotEmpty(apsBlankOrderDo.getProductstatus())
+                        && !two.getProductionStatus().equals(apsBlankOrderDo.getProductstatus())){
+                    //更新坯料计划的生产状态
+                    ApsBlankOrderDo blankOrderDo = new ApsBlankOrderDo();
+                    blankOrderDo.setId(two.getBlankId());
+                    blankOrderDo.setProductstatus(two.getProductionStatus());
+                    needUpdateList.add(blankOrderDo);
+                }
+            }
+        }
+        //更新坯料计划
+        apsBlankOrderService.updateBatchById(needUpdateList);
+
 
         //更新订单
-        updateOrder(two.getBlankId());
+        updateOrder(twoList.get(0).getBlankId());
     }