Forráskód Böngészése

排程明细锁定

fangpy 8 hónapja
szülő
commit
ddea99c426

+ 65 - 2
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsServiceImpl.java

@@ -728,8 +728,11 @@ public class ApsServiceImpl implements ApsService {
                     // 工序作业相关数据初始化
                     productionProcessesInit(operationDo,produceOrder,processesList,operationProductionProcesses,apsBlankOrderVo,productionScheduleVo,proEqus);
                 }
-                // 前后关联关系初始化
-                processesRelationInit(rootOperationDo,operationProductionProcesses,operationMaps,apsBlankOrderVo);
+                // 第一次排程需要建立关联关系
+                if(!"Y".equals(apsBlankOrderVo.getIfcp())){
+                    // 前后关联关系初始化
+                    processesRelationInit(rootOperationDo,operationProductionProcesses,operationMaps,apsBlankOrderVo);
+                }
 
                 blankProcessIds.put(apsBlankOrderVo.getId(), processIdss);
             }
@@ -1106,6 +1109,14 @@ public class ApsServiceImpl implements ApsService {
                     processes.setId(processDetail.getId());
                     processes.setIfLock(true);
                     processes.setEquipmentId(processDetail.getProcessdeviceid());
+                    // 锁定作业的关联关系设置
+                    if(StrUtil.isNotBlank(processDetail.getPreviousprocessesids())){
+                        processes.setPreviousProcessesIds(new ArrayList<>(Arrays.asList(processDetail.getPreviousprocessesids().split(","))));
+                    }
+                    if(StrUtil.isNotBlank(processDetail.getNextprocessesids())){
+                        processes.setNextProcessesIds(new ArrayList<>(Arrays.asList(processDetail.getNextprocessesids().split(","))));
+                    }
+
                     List<String> opeqs = new ArrayList<>();
                     opeqs.add(processDetail.getProcessdeviceid());
                     processes.setOptionalEquipments(opeqs);
@@ -1155,7 +1166,25 @@ public class ApsServiceImpl implements ApsService {
                         // 已排程的作业明细数据保持ID不变
                         if(processEquDos != null && i<processEquDos.size()){
                             processes.setId(processEquDos.get(i).getId());
+                            // 锁定作业的关联关系设置
+                            if(StrUtil.isNotBlank(processEquDos.get(i).getPreviousprocessesids())){
+                                processes.setPreviousProcessesIds(new ArrayList<>(Arrays.asList(processEquDos.get(i).getPreviousprocessesids().split(","))));
+                            }
+                            if(StrUtil.isNotBlank(processEquDos.get(i).getNextprocessesids())){
+                                processes.setNextProcessesIds(new ArrayList<>(Arrays.asList(processEquDos.get(i).getNextprocessesids().split(","))));
+                            }
+                            if("Y".equals(processEquDos.get(i).getLockmarkdetail())){
+                                processes.setIfLock(true);
+                                processes.setEquipmentId(processEquDos.get(i).getProcessdeviceid());
+                                List<String> opeqs = new ArrayList<>();
+                                opeqs.add(processEquDos.get(i).getProcessdeviceid());
+                                processes.setOptionalEquipments(opeqs);
+                                processes.setDelay(0);
+                                processes.setStartTime(processEquDos.get(i).getPlanstartdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+                                processes.setEndTime(processEquDos.get(i).getPlanenddate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+                            }
                         }
+
                         if(apsBlankOrderVo.getPlanhavematerialdate() != null){
                             // 全局配置
                             ApsOverallConfig apsOverallConfig = new ApsOverallConfig();
@@ -1202,6 +1231,23 @@ public class ApsServiceImpl implements ApsService {
                         // 已排程的作业明细数据保持ID不变
                         if(processEquDos != null && i<processEquDos.size()){
                             processes.setId(processEquDos.get(i).getId());
+                            // 锁定作业的关联关系设置
+                            if(StrUtil.isNotBlank(processEquDos.get(i).getPreviousprocessesids())){
+                                processes.setPreviousProcessesIds(new ArrayList<>(Arrays.asList(processEquDos.get(i).getPreviousprocessesids().split(","))));
+                            }
+                            if(StrUtil.isNotBlank(processEquDos.get(i).getNextprocessesids())){
+                                processes.setNextProcessesIds(new ArrayList<>(Arrays.asList(processEquDos.get(i).getNextprocessesids().split(","))));
+                            }
+                            if("Y".equals(processEquDos.get(i).getLockmarkdetail())){
+                                processes.setIfLock(true);
+                                processes.setEquipmentId(processEquDos.get(i).getProcessdeviceid());
+                                List<String> opeqs = new ArrayList<>();
+                                opeqs.add(processEquDos.get(i).getProcessdeviceid());
+                                processes.setOptionalEquipments(opeqs);
+                                processes.setDelay(0);
+                                processes.setStartTime(processEquDos.get(i).getPlanstartdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+                                processes.setEndTime(processEquDos.get(i).getPlanenddate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+                            }
                         }
                         if(apsBlankOrderVo.getPlanhavematerialdate() != null){
                             // 全局配置
@@ -1237,6 +1283,23 @@ public class ApsServiceImpl implements ApsService {
                         // 已排程的作业明细数据保持ID不变
                         if(processEquDos != null && i<processEquDos.size()){
                             processes.setId(processEquDos.get(i).getId());
+                            // 锁定作业的关联关系设置
+                            if(StrUtil.isNotBlank(processEquDos.get(i).getPreviousprocessesids())){
+                                processes.setPreviousProcessesIds(new ArrayList<>(Arrays.asList(processEquDos.get(i).getPreviousprocessesids().split(","))));
+                            }
+                            if(StrUtil.isNotBlank(processEquDos.get(i).getNextprocessesids())){
+                                processes.setNextProcessesIds(new ArrayList<>(Arrays.asList(processEquDos.get(i).getNextprocessesids().split(","))));
+                            }
+                            if("Y".equals(processEquDos.get(i).getLockmarkdetail())){
+                                processes.setIfLock(true);
+                                processes.setEquipmentId(processEquDos.get(i).getProcessdeviceid());
+                                List<String> opeqs = new ArrayList<>();
+                                opeqs.add(processEquDos.get(i).getProcessdeviceid());
+                                processes.setOptionalEquipments(opeqs);
+                                processes.setDelay(0);
+                                processes.setStartTime(processEquDos.get(i).getPlanstartdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+                                processes.setEndTime(processEquDos.get(i).getPlanenddate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+                            }
                         }
                         if(apsBlankOrderVo.getPlanhavematerialdate() != null){
                             // 全局配置

+ 6 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationProcessEquDo.java

@@ -219,4 +219,10 @@ public class ApsProcessOperationProcessEquDo extends BaseDo {
      */
     @TableField("LEAVEWAITWORKROLL")
     private Integer leavewaitworkroll;
+    /**
+     * 是否锁定明细 y:锁定,n:未锁定
+     * 批量排程时需要使用
+     */
+    @TableField("LOCKMARKDETAIL")
+    private String lockmarkdetail;
 }