Ver código fonte

小卷分拆优化

fangpy 3 meses atrás
pai
commit
a87819a95f

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

@@ -19,6 +19,7 @@ import com.rongwei.bscommon.sys.dao.ApsBlankOrderDao;
 import com.rongwei.bscommon.sys.dao.ApsProcessOperationProcessEquDao;
 import com.rongwei.bscommon.sys.fegin.RwApsServer;
 import com.rongwei.bscommon.sys.service.*;
+import com.rongwei.bscommon.sys.utils.ApsUtils;
 import com.rongwei.bsentity.domain.*;
 import com.rongwei.bsentity.vo.*;
 import com.rongwei.commonservice.service.RedisService;
@@ -97,6 +98,8 @@ public class ApsServiceImpl implements ApsService {
     private ApsProcessOperationProcessEquDao apsProcessOperationProcessEquDao;
     @Autowired
     private ApsScheduleLogService apsScheduleLogService;
+    @Autowired
+    private ApsUtils apsUtils;
 
     /**
      * Aps排程
@@ -1795,159 +1798,242 @@ public class ApsServiceImpl implements ApsService {
                 // 已排程的当前作业
                 List<ApsProcessOperationProcessEquDo> processEquDos = proEqus.get(operationDo.getId());
                 if ("小卷成退".equals(operationDo.getProcess())) {
-                    Integer planprocessrall = null;
-                    String previousprocessid = operationDo.getPreviousprocessid();
-                    if (StringUtils.isNotBlank(previousprocessid)) {
-//                        ApsProcessOperationDo preprocess = apsProcessOperationService.getById(previousprocessid);
-                        ApsProcessOperationDo preprocess = baseApsProcessOperationList.stream().filter(item -> item.getId().equals(previousprocessid)).findFirst().orElse(null);
-                        if (preprocess == null) {
-                            throw new CustomException("小卷成退没有前道工序:" + operationDo.getId());
-                        }
-                        planprocessrall = preprocess.getPlanprocessrall() - (preprocess.getCancelrollsum() == null ? 0 : preprocess.getCancelrollsum());
-                    } else {
-                        planprocessrall = new BigDecimal(operationDo.getPlanprocessrall())
-                                .divide(new BigDecimal("20").divide(operationDo.getSinglerollweight(), 2, BigDecimal.ROUND_HALF_UP)
-                                        , 2, BigDecimal.ROUND_HALF_UP).setScale(0, RoundingMode.CEILING).intValue();
-                    }
-                    Integer ys = (operationDo.getPlanprocessrall() - operationDo.getCancelrollsum()) % planprocessrall;
-                    Integer js = (operationDo.getPlanprocessrall() - operationDo.getCancelrollsum()) / planprocessrall;
-                    for (Integer i = 0; i < planprocessrall; i++) {
-                        ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments, outMaterDos, apsBlankOrderVo, processOperationEquDos);
-                        // 已排程的作业明细数据保持ID不变
-                        if (processEquDos != null && i < processEquDos.size()) {
-                            processes.setId(processEquDos.get(i).getId());
+                    // 存在历史数据需要重排
+                    if(processEquDos != null && processEquDos.size()>0){
+                        for (ApsProcessOperationProcessEquDo processEquDo : processEquDos) {
+                            ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments, outMaterDos, apsBlankOrderVo, processOperationEquDos);
+                            processes.setId(processEquDo.getId());
                             // 历史排程设备记录
-                            processes.setLastHistoryEquipmentId(processEquDos.get(i).getProcessdeviceid());
+                            processes.setLastHistoryEquipmentId(processEquDo.getProcessdeviceid());
                             // 锁定作业的关联关系设置
-                            if (StrUtil.isNotBlank(processEquDos.get(i).getPreviousprocessesids())) {
-                                processes.setPreviousProcessesIds(new ArrayList<>(Arrays.asList(processEquDos.get(i).getPreviousprocessesids().split(","))));
+                            if (StrUtil.isNotBlank(processEquDo.getPreviousprocessesids())) {
+                                processes.setPreviousProcessesIds(new ArrayList<>(Arrays.asList(processEquDo.getPreviousprocessesids().split(","))));
                             }
-                            if (StrUtil.isNotBlank(processEquDos.get(i).getNextprocessesids())) {
-                                processes.setNextProcessesIds(new ArrayList<>(Arrays.asList(processEquDos.get(i).getNextprocessesids().split(","))));
+                            if (StrUtil.isNotBlank(processEquDo.getNextprocessesids())) {
+                                processes.setNextProcessesIds(new ArrayList<>(Arrays.asList(processEquDo.getNextprocessesids().split(","))));
                             }
-                            if ("y".equals(processEquDos.get(i).getLockmarkdetail())) {
+                            if ("y".equals(processEquDo.getLockmarkdetail())) {
                                 processes.setIfLock(true);
-                                processes.setEquipmentId(processEquDos.get(i).getProcessdeviceid());
+                                processes.setEquipmentId(processEquDo.getProcessdeviceid());
                                 List<String> opeqs = new ArrayList<>();
-                                opeqs.add(processEquDos.get(i).getProcessdeviceid());
+                                opeqs.add(processEquDo.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());
+                                processes.setStartTime(processEquDo.getPlanstartdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+                                processes.setEndTime(processEquDo.getPlanenddate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
                             }
                             // 判断是否已取消
-                            if (processEquDos.get(i).getCancelroll() != null && processEquDos.get(i).getCancelroll() >= processEquDos.get(i).getPlanprocessrall()) {
+                            if (processEquDo.getCancelroll() != null && processEquDo.getCancelroll() >= processEquDo.getPlanprocessrall()) {
                                 processes.setCancel(true);
                             }
-                        }
-
-                        if (apsBlankOrderVo.getPlanhavematerialdate() != null) {
                             // 全局配置
-                            ApsOverallConfig apsOverallConfig = new ApsOverallConfig();
-                            Date startDate = apsBlankOrderVo.getPlanhavematerialdate();
-                            LocalDateTime startTime = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-                            apsOverallConfig.setStartTimeLong(startDate.getTime());
-                            apsOverallConfig.setStartTime(startTime);
-                            // 排程全局配置
-                            apsOverallConfig.setRoamTime(productionScheduleVo.getRoamTime());
-                            apsOverallConfig.setWashingtime(productionScheduleVo.getWashingtime());
-                            apsOverallConfig.setStandingtime(productionScheduleVo.getStandingtime());
-                            apsOverallConfig.setClosealloynames(productionScheduleVo.getClosealloynames());
-                            apsOverallConfig.setFurnaceInstallations(productionScheduleVo.getFurnaceInstallations());
-                            apsOverallConfig.setMergeFurnaces(productionScheduleVo.getMergeFurnaces());
-                            apsOverallConfig.setLooseness(productionScheduleVo.getLooseness());
-                            apsOverallConfig.setStandingyield(productionScheduleVo.getStandingyield());
-                            processes.setApsOverallConfig(apsOverallConfig);
+                            if (apsBlankOrderVo.getPlanhavematerialdate() != null) {
+                                processes.setApsOverallConfig(apsUtils.apsOverallConfigSet(apsBlankOrderVo,productionScheduleVo));
+                            }
+                            processes.setProducePcNum(processEquDos.size());
+                            processes.setMinThPcNum(processEquDo.getPlanprocessrall());
+                            processes.setSinglerollweight(operationDo.getSinglerollweight().multiply(new BigDecimal(processes.getMinThPcNum())));
+
+                            operationProcess.add(processes);
                         }
-                        Integer alls = js;
-                        if (i < ys) {
-                            alls = alls + 1;
+                    }
+                    // 不存在历史数据首次排程
+                    else{
+                        Integer planprocessrall = null;
+                        String previousprocessid = operationDo.getPreviousprocessid();
+                        if (StringUtils.isNotBlank(previousprocessid)) {
+//                        ApsProcessOperationDo preprocess = apsProcessOperationService.getById(previousprocessid);
+                            ApsProcessOperationDo preprocess = baseApsProcessOperationList.stream().filter(item -> item.getId().equals(previousprocessid)).findFirst().orElse(null);
+                            if (preprocess == null) {
+                                throw new CustomException("小卷成退没有前道工序:" + operationDo.getId());
+                            }
+                            planprocessrall = preprocess.getPlanprocessrall() - (preprocess.getCancelrollsum() == null ? 0 : preprocess.getCancelrollsum());
+                        } else {
+                            planprocessrall = new BigDecimal(operationDo.getPlanprocessrall())
+                                    .divide(new BigDecimal("20").divide(operationDo.getSinglerollweight(), 2, BigDecimal.ROUND_HALF_UP)
+                                            , 2, BigDecimal.ROUND_HALF_UP).setScale(0, RoundingMode.CEILING).intValue();
                         }
-                        processes.setProducePcNum(planprocessrall);
-                        processes.setMinThPcNum(alls);
-                        processes.setSinglerollweight(operationDo.getSinglerollweight().multiply(new BigDecimal(alls)));
+                        Integer ys = (operationDo.getPlanprocessrall() - operationDo.getCancelrollsum()) % planprocessrall;
+                        Integer js = (operationDo.getPlanprocessrall() - operationDo.getCancelrollsum()) / planprocessrall;
+                        for (Integer i = 0; i < planprocessrall; i++) {
+                            ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments, outMaterDos, apsBlankOrderVo, processOperationEquDos);
+                            // 已排程的作业明细数据保持ID不变
+                            if (processEquDos != null && i < processEquDos.size()) {
+                                processes.setId(processEquDos.get(i).getId());
+                                // 历史排程设备记录
+                                processes.setLastHistoryEquipmentId(processEquDos.get(i).getProcessdeviceid());
+                                // 锁定作业的关联关系设置
+                                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 (processEquDos.get(i).getCancelroll() != null && processEquDos.get(i).getCancelroll() >= processEquDos.get(i).getPlanprocessrall()) {
+                                    processes.setCancel(true);
+                                }
+                            }
 
-                        operationProcess.add(processes);
-                    }
+                            if (apsBlankOrderVo.getPlanhavematerialdate() != null) {
+                                // 全局配置
+                                ApsOverallConfig apsOverallConfig = new ApsOverallConfig();
+                                Date startDate = apsBlankOrderVo.getPlanhavematerialdate();
+                                LocalDateTime startTime = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+                                apsOverallConfig.setStartTimeLong(startDate.getTime());
+                                apsOverallConfig.setStartTime(startTime);
+                                // 排程全局配置
+                                apsOverallConfig.setRoamTime(productionScheduleVo.getRoamTime());
+                                apsOverallConfig.setWashingtime(productionScheduleVo.getWashingtime());
+                                apsOverallConfig.setStandingtime(productionScheduleVo.getStandingtime());
+                                apsOverallConfig.setClosealloynames(productionScheduleVo.getClosealloynames());
+                                apsOverallConfig.setFurnaceInstallations(productionScheduleVo.getFurnaceInstallations());
+                                apsOverallConfig.setMergeFurnaces(productionScheduleVo.getMergeFurnaces());
+                                apsOverallConfig.setLooseness(productionScheduleVo.getLooseness());
+                                apsOverallConfig.setStandingyield(productionScheduleVo.getStandingyield());
+                                processes.setApsOverallConfig(apsOverallConfig);
+                            }
+                            Integer alls = js;
+                            if (i < ys) {
+                                alls = alls + 1;
+                            }
+                            processes.setProducePcNum(planprocessrall);
+                            processes.setMinThPcNum(alls);
+                            processes.setSinglerollweight(operationDo.getSinglerollweight().multiply(new BigDecimal(alls)));
 
-                } else if ("小卷包装".equals(operationDo.getProcess())) {
-                    String previousprocessid = operationDo.getPreviousprocessid();
-//                    ApsProcessOperationDo preprocess = apsProcessOperationService.getById(previousprocessid);
-                    ApsProcessOperationDo preprocess = baseApsProcessOperationList.stream().filter(item -> item.getId().equals(previousprocessid)).findFirst().orElse(null);
-                    if (preprocess == null) {
-                        throw new CustomException("小卷成退没有前道工序:" + operationDo.getId());
-                    }
-                    if ("小卷成退".equals(preprocess.getProcess())) {
-//                        preprocess = apsProcessOperationService.getById(preprocess.getPreviousprocessid());
-                        String finalPreviousprocessid = preprocess.getPreviousprocessid();
-                        preprocess = baseApsProcessOperationList.stream().filter(item -> item.getId().equals(finalPreviousprocessid)).findFirst().orElse(null);
-                    }
-                    Integer planprocessrall = null;
-                    if (preprocess == null) {
-                        planprocessrall = new BigDecimal(operationDo.getPlanprocessrall())
-                                .divide(new BigDecimal("20").divide(operationDo.getSinglerollweight(), 2, BigDecimal.ROUND_HALF_UP)
-                                        , 2, BigDecimal.ROUND_HALF_UP).setScale(0, RoundingMode.CEILING).intValue();
-                    } else {
-                        planprocessrall = preprocess.getPlanprocessrall() - (preprocess.getCancelrollsum() == null ? 0 : preprocess.getCancelrollsum());
+                            operationProcess.add(processes);
+                        }
                     }
-                    Integer ys = (operationDo.getPlanprocessrall() - operationDo.getCancelrollsum()) % planprocessrall;
-                    Integer js = (operationDo.getPlanprocessrall() - operationDo.getCancelrollsum()) / planprocessrall;
-                    for (Integer i = 0; i < planprocessrall; i++) {
-                        ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments, outMaterDos, apsBlankOrderVo, processOperationEquDos);
-                        // 已排程的作业明细数据保持ID不变
-                        if (processEquDos != null && i < processEquDos.size()) {
-                            processes.setId(processEquDos.get(i).getId());
+                } else if ("小卷包装".equals(operationDo.getProcess())) {
+
+                    if(processEquDos != null && processEquDos.size()>0){
+                        for (ApsProcessOperationProcessEquDo processEquDo : processEquDos) {
+                            ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments, outMaterDos, apsBlankOrderVo, processOperationEquDos);
+                            processes.setId(processEquDo.getId());
                             // 历史排程设备记录
-                            processes.setLastHistoryEquipmentId(processEquDos.get(i).getProcessdeviceid());
+                            processes.setLastHistoryEquipmentId(processEquDo.getProcessdeviceid());
                             // 锁定作业的关联关系设置
-                            if (StrUtil.isNotBlank(processEquDos.get(i).getPreviousprocessesids())) {
-                                processes.setPreviousProcessesIds(new ArrayList<>(Arrays.asList(processEquDos.get(i).getPreviousprocessesids().split(","))));
+                            if (StrUtil.isNotBlank(processEquDo.getPreviousprocessesids())) {
+                                processes.setPreviousProcessesIds(new ArrayList<>(Arrays.asList(processEquDo.getPreviousprocessesids().split(","))));
                             }
-                            if (StrUtil.isNotBlank(processEquDos.get(i).getNextprocessesids())) {
-                                processes.setNextProcessesIds(new ArrayList<>(Arrays.asList(processEquDos.get(i).getNextprocessesids().split(","))));
+                            if (StrUtil.isNotBlank(processEquDo.getNextprocessesids())) {
+                                processes.setNextProcessesIds(new ArrayList<>(Arrays.asList(processEquDo.getNextprocessesids().split(","))));
                             }
-                            if ("y".equals(processEquDos.get(i).getLockmarkdetail())) {
+                            if ("y".equals(processEquDo.getLockmarkdetail())) {
                                 processes.setIfLock(true);
-                                processes.setEquipmentId(processEquDos.get(i).getProcessdeviceid());
+                                processes.setEquipmentId(processEquDo.getProcessdeviceid());
                                 List<String> opeqs = new ArrayList<>();
-                                opeqs.add(processEquDos.get(i).getProcessdeviceid());
+                                opeqs.add(processEquDo.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());
+                                processes.setStartTime(processEquDo.getPlanstartdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+                                processes.setEndTime(processEquDo.getPlanenddate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
                             }
                             // 判断是否已取消
-                            if (processEquDos.get(i).getCancelroll() != null && processEquDos.get(i).getCancelroll() >= processEquDos.get(i).getPlanprocessrall()) {
+                            if (processEquDo.getCancelroll() != null && processEquDo.getCancelroll() >= processEquDo.getPlanprocessrall()) {
                                 processes.setCancel(true);
                             }
-                        }
-                        if (apsBlankOrderVo.getPlanhavematerialdate() != null) {
                             // 全局配置
-                            ApsOverallConfig apsOverallConfig = new ApsOverallConfig();
-                            Date startDate = apsBlankOrderVo.getPlanhavematerialdate();
-                            LocalDateTime startTime = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-                            apsOverallConfig.setStartTimeLong(startDate.getTime());
-                            apsOverallConfig.setStartTime(startTime);
-                            // 排程全局配置
-                            apsOverallConfig.setRoamTime(productionScheduleVo.getRoamTime());
-                            apsOverallConfig.setWashingtime(productionScheduleVo.getWashingtime());
-                            apsOverallConfig.setStandingtime(productionScheduleVo.getStandingtime());
-                            apsOverallConfig.setClosealloynames(productionScheduleVo.getClosealloynames());
-                            apsOverallConfig.setFurnaceInstallations(productionScheduleVo.getFurnaceInstallations());
-                            apsOverallConfig.setMergeFurnaces(productionScheduleVo.getMergeFurnaces());
-                            apsOverallConfig.setLooseness(productionScheduleVo.getLooseness());
-                            apsOverallConfig.setStandingyield(productionScheduleVo.getStandingyield());
-                            processes.setApsOverallConfig(apsOverallConfig);
+                            if (apsBlankOrderVo.getPlanhavematerialdate() != null) {
+                                processes.setApsOverallConfig(apsUtils.apsOverallConfigSet(apsBlankOrderVo,productionScheduleVo));
+                            }
+                            processes.setProducePcNum(processEquDos.size());
+                            processes.setMinThPcNum(processEquDo.getPlanprocessrall());
+                            processes.setSinglerollweight(operationDo.getSinglerollweight().multiply(new BigDecimal(processes.getMinThPcNum())));
+
+                            operationProcess.add(processes);
+                        }
+                    }
+                    // 不存在历史数据首次排程
+                    else{
+                        String previousprocessid = operationDo.getPreviousprocessid();
+//                    ApsProcessOperationDo preprocess = apsProcessOperationService.getById(previousprocessid);
+                        ApsProcessOperationDo preprocess = baseApsProcessOperationList.stream().filter(item -> item.getId().equals(previousprocessid)).findFirst().orElse(null);
+                        if (preprocess == null) {
+                            throw new CustomException("小卷成退没有前道工序:" + operationDo.getId());
+                        }
+                        if ("小卷成退".equals(preprocess.getProcess())) {
+//                        preprocess = apsProcessOperationService.getById(preprocess.getPreviousprocessid());
+                            String finalPreviousprocessid = preprocess.getPreviousprocessid();
+                            preprocess = baseApsProcessOperationList.stream().filter(item -> item.getId().equals(finalPreviousprocessid)).findFirst().orElse(null);
                         }
-                        Integer alls = js;
-                        if (i < ys) {
-                            alls = alls + 1;
+                        Integer planprocessrall = null;
+                        if (preprocess == null) {
+                            planprocessrall = new BigDecimal(operationDo.getPlanprocessrall())
+                                    .divide(new BigDecimal("20").divide(operationDo.getSinglerollweight(), 2, BigDecimal.ROUND_HALF_UP)
+                                            , 2, BigDecimal.ROUND_HALF_UP).setScale(0, RoundingMode.CEILING).intValue();
+                        } else {
+                            planprocessrall = preprocess.getPlanprocessrall() - (preprocess.getCancelrollsum() == null ? 0 : preprocess.getCancelrollsum());
                         }
-                        processes.setProducePcNum(planprocessrall);
-                        processes.setMinThPcNum(alls);
-                        processes.setProduceTime(operationDo.getOnceprocessmin().intValue() * alls);
+                        Integer ys = (operationDo.getPlanprocessrall() - operationDo.getCancelrollsum()) % planprocessrall;
+                        Integer js = (operationDo.getPlanprocessrall() - operationDo.getCancelrollsum()) / planprocessrall;
+                        for (Integer i = 0; i < planprocessrall; i++) {
+                            ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments, outMaterDos, apsBlankOrderVo, processOperationEquDos);
+                            // 已排程的作业明细数据保持ID不变
+                            if (processEquDos != null && i < processEquDos.size()) {
+                                processes.setId(processEquDos.get(i).getId());
+                                // 历史排程设备记录
+                                processes.setLastHistoryEquipmentId(processEquDos.get(i).getProcessdeviceid());
+                                // 锁定作业的关联关系设置
+                                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 (processEquDos.get(i).getCancelroll() != null && processEquDos.get(i).getCancelroll() >= processEquDos.get(i).getPlanprocessrall()) {
+                                    processes.setCancel(true);
+                                }
+                            }
+                            if (apsBlankOrderVo.getPlanhavematerialdate() != null) {
+                                // 全局配置
+                                ApsOverallConfig apsOverallConfig = new ApsOverallConfig();
+                                Date startDate = apsBlankOrderVo.getPlanhavematerialdate();
+                                LocalDateTime startTime = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+                                apsOverallConfig.setStartTimeLong(startDate.getTime());
+                                apsOverallConfig.setStartTime(startTime);
+                                // 排程全局配置
+                                apsOverallConfig.setRoamTime(productionScheduleVo.getRoamTime());
+                                apsOverallConfig.setWashingtime(productionScheduleVo.getWashingtime());
+                                apsOverallConfig.setStandingtime(productionScheduleVo.getStandingtime());
+                                apsOverallConfig.setClosealloynames(productionScheduleVo.getClosealloynames());
+                                apsOverallConfig.setFurnaceInstallations(productionScheduleVo.getFurnaceInstallations());
+                                apsOverallConfig.setMergeFurnaces(productionScheduleVo.getMergeFurnaces());
+                                apsOverallConfig.setLooseness(productionScheduleVo.getLooseness());
+                                apsOverallConfig.setStandingyield(productionScheduleVo.getStandingyield());
+                                processes.setApsOverallConfig(apsOverallConfig);
+                            }
+                            Integer alls = js;
+                            if (i < ys) {
+                                alls = alls + 1;
+                            }
+                            processes.setProducePcNum(planprocessrall);
+                            processes.setMinThPcNum(alls);
+                            processes.setProduceTime(operationDo.getOnceprocessmin().intValue() * alls);
 
-                        operationProcess.add(processes);
+                            operationProcess.add(processes);
+                        }
                     }
                 } else {
                     for (Integer i = 0; i < operationDo.getPlanprocessrall() - operationDo.getCancelrollsum(); i++) {

+ 32 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/utils/ApsUtils.java

@@ -3,6 +3,9 @@ package com.rongwei.bscommon.sys.utils;
 import com.rongwei.bscommon.sys.dao.ApsProcessOperationBackupDao;
 import com.rongwei.bscommon.sys.dao.ApsProcessOperationProcessEquBackupDao;
 import com.rongwei.bsentity.domain.ApsBlankOrderDo;
+import com.rongwei.bsentity.vo.ApsBlankOrderVo;
+import com.rongwei.bsentity.vo.ApsOverallConfig;
+import com.rongwei.bsentity.vo.ProductionScheduleVo;
 import com.rongwei.commonservice.service.RedisService;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.exception.CustomException;
@@ -16,8 +19,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -180,4 +186,30 @@ public class ApsUtils {
         conflictdeList.remove(removeConflictDesc);
         return conflictdeList.stream().distinct().collect(Collectors.joining(","));
     }
+
+    /**
+     * 全局配置初始化
+     * @param apsBlankOrderVo
+     * @param productionScheduleVo
+     * @return
+     */
+    public ApsOverallConfig apsOverallConfigSet(ApsBlankOrderVo apsBlankOrderVo, ProductionScheduleVo productionScheduleVo){
+        // 全局配置
+        ApsOverallConfig apsOverallConfig = new ApsOverallConfig();
+        Date startDate = apsBlankOrderVo.getPlanhavematerialdate();
+        LocalDateTime startTime = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+        apsOverallConfig.setStartTimeLong(startDate.getTime());
+        apsOverallConfig.setStartTime(startTime);
+        // 排程全局配置
+        apsOverallConfig.setRoamTime(productionScheduleVo.getRoamTime());
+        apsOverallConfig.setWashingtime(productionScheduleVo.getWashingtime());
+        apsOverallConfig.setStandingtime(productionScheduleVo.getStandingtime());
+        apsOverallConfig.setClosealloynames(productionScheduleVo.getClosealloynames());
+        apsOverallConfig.setFurnaceInstallations(productionScheduleVo.getFurnaceInstallations());
+        apsOverallConfig.setMergeFurnaces(productionScheduleVo.getMergeFurnaces());
+        apsOverallConfig.setLooseness(productionScheduleVo.getLooseness());
+        apsOverallConfig.setStandingyield(productionScheduleVo.getStandingyield());
+
+        return apsOverallConfig;
+    }
 }