|
@@ -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++) {
|