|
@@ -81,6 +81,8 @@ public class ApsServiceImpl implements ApsService {
|
|
|
private ApsNochangeRollerService apsNochangeRollerService;
|
|
|
@Autowired
|
|
|
private ApsProductionProcessesService apsProductionProcessesService;
|
|
|
+ @Autowired
|
|
|
+ private ApsProcessOperationEquService apsProcessOperationEquService;
|
|
|
|
|
|
/**
|
|
|
* Aps排程
|
|
@@ -695,6 +697,9 @@ public class ApsServiceImpl implements ApsService {
|
|
|
.in(ApsProcessOperationProcessEquDo::getBlankid,blankids)
|
|
|
.orderByAsc(ApsProcessOperationProcessEquDo::getPlanstartdate));
|
|
|
Map<String, List<ApsProcessOperationProcessEquDo>> proEqus = apopes.stream().collect(Collectors.groupingBy(ApsProcessOperationProcessEquDo::getProcessid));
|
|
|
+ // 待排程坯料计划作业可选设备轧辊ID
|
|
|
+ List<ApsProcessOperationEquDo> processOperationEquDos = apsProcessOperationEquService.list(
|
|
|
+ new LambdaQueryWrapper<ApsProcessOperationEquDo>().in(ApsProcessOperationEquDo::getBlankid, blankids));
|
|
|
|
|
|
ProductionScheduleVo productionScheduleVo = productionScheduleVoInit();
|
|
|
// 排程计划工序任务集合
|
|
@@ -745,7 +750,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
// 设备列表初始化
|
|
|
// List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList,eqMaps,blankids,productionScheduleVo,apsScheduleConfig);
|
|
|
// 工序作业相关数据初始化
|
|
|
- productionProcessesInit(operationDo,produceOrder,processesList,operationProductionProcesses,apsBlankOrderVo,productionScheduleVo,proEqus);
|
|
|
+ productionProcessesInit(operationDo,produceOrder,processesList,operationProductionProcesses,apsBlankOrderVo,productionScheduleVo,proEqus,processOperationEquDos);
|
|
|
}
|
|
|
// 第一次排程需要建立关联关系
|
|
|
if(!"Y".equals(apsBlankOrderVo.getIfcp())){
|
|
@@ -945,7 +950,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
// 合金+输入物料+宽度+厚度+输出物料厚度
|
|
|
equipment.setLastSeriesProduceMark(lastop.getMetal() + "^_^" + lastop.getProducttype() + "^_^" + lastop.getProwidth() + "^_^" + lastop.getThickness() + "^_^" + outMaterDos.get(0).getThickness());
|
|
|
equipment.setLastProcessCutfinishmin(lastop.getCutfinishmin() == null ? null : lastop.getCutfinishmin().intValue());
|
|
|
-
|
|
|
+ equipment.setLastZjgid(lastpro.getRollerid());
|
|
|
}
|
|
|
}
|
|
|
// 设备占用时间段
|
|
@@ -971,6 +976,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
er.setEndRunTime(equs.getPlanenddate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
|
|
er.setPcNum(equs.getPlanprocessrall());
|
|
|
er.setOccupyType("process");
|
|
|
+ er.setZjgid(equs.getRollerid());
|
|
|
// 设备占用时间设置连续生产标识,参与排程
|
|
|
if (processOperationDos != null) {
|
|
|
List<ApsProcessOperationDo> pos = processOperationDos.stream().filter(v -> v.getId().equals(equs.getProcessid())).collect(Collectors.toList());
|
|
@@ -1132,7 +1138,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
*/
|
|
|
private void productionProcessesInit(ApsProcessOperationDo operationDo,ProduceOrder produceOrder
|
|
|
,List<ProductionProcesses> processesList,Map<String,List<ProductionProcesses>> operationProductionProcesses
|
|
|
- ,ApsBlankOrderVo apsBlankOrderVo,ProductionScheduleVo productionScheduleVo,Map<String, List<ApsProcessOperationProcessEquDo>> proEqus){
|
|
|
+ ,ApsBlankOrderVo apsBlankOrderVo,ProductionScheduleVo productionScheduleVo,Map<String, List<ApsProcessOperationProcessEquDo>> proEqus,List<ApsProcessOperationEquDo> processOperationEquDos){
|
|
|
// 输出物料
|
|
|
List<ApsProcessOperationOutMaterDo> outMaterDos = apsProcessOperationOutMaterService.list(new LambdaQueryWrapper<ApsProcessOperationOutMaterDo>()
|
|
|
.eq(ApsProcessOperationOutMaterDo::getMainid, operationDo.getId()));
|
|
@@ -1148,7 +1154,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
List<ApsProcessOperationProcessEquDo> processDetails = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
|
|
|
.eq(ApsProcessOperationProcessEquDo::getProcessid, operationDo.getId()).orderByAsc(ApsProcessOperationProcessEquDo::getPlanstartdate));
|
|
|
for (ApsProcessOperationProcessEquDo processDetail : processDetails) {
|
|
|
- ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo);
|
|
|
+ ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo,processOperationEquDos);
|
|
|
// 锁定的作业保留作业ID
|
|
|
processes.setId(processDetail.getId());
|
|
|
processes.setIfLock(true);
|
|
@@ -1213,7 +1219,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
Integer ys = operationDo.getPlanprocessrall() % planprocessrall;
|
|
|
Integer js = operationDo.getPlanprocessrall() / planprocessrall;
|
|
|
for (Integer i = 0; i < planprocessrall; i++) {
|
|
|
- ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo);
|
|
|
+ ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo,processOperationEquDos);
|
|
|
// 已排程的作业明细数据保持ID不变
|
|
|
if(processEquDos != null && i<processEquDos.size()){
|
|
|
processes.setId(processEquDos.get(i).getId());
|
|
@@ -1289,7 +1295,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
Integer ys = operationDo.getPlanprocessrall() % planprocessrall;
|
|
|
Integer js = operationDo.getPlanprocessrall() / planprocessrall;
|
|
|
for (Integer i = 0; i < planprocessrall; i++) {
|
|
|
- ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo);
|
|
|
+ ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo,processOperationEquDos);
|
|
|
// 已排程的作业明细数据保持ID不变
|
|
|
if(processEquDos != null && i<processEquDos.size()){
|
|
|
processes.setId(processEquDos.get(i).getId());
|
|
@@ -1345,7 +1351,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
}else{
|
|
|
for (Integer i = 0; i < operationDo.getPlanprocessrall(); i++) {
|
|
|
- ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo);
|
|
|
+ ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo,processOperationEquDos);
|
|
|
// 已排程的作业明细数据保持ID不变
|
|
|
if(processEquDos != null && i<processEquDos.size()){
|
|
|
processes.setId(processEquDos.get(i).getId());
|
|
@@ -1399,7 +1405,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
|
|
|
private ProductionProcesses productionProcessesDetailInit(ApsProcessOperationDo operationDo,ProduceOrder produceOrder
|
|
|
- ,List<String> optionalEquipments,List<ApsProcessOperationOutMaterDo> outMaterDos,ApsBlankOrderVo apsBlankOrderVo){
|
|
|
+ ,List<String> optionalEquipments,List<ApsProcessOperationOutMaterDo> outMaterDos,ApsBlankOrderVo apsBlankOrderVo,List<ApsProcessOperationEquDo> processOperationEquDos){
|
|
|
String warnPreMsg = "坯料计划号:"+apsBlankOrderVo.getBlanknumber()+" 作业类型:"+operationDo.getProcess()+" 作业名称:"+operationDo.getProcessname();
|
|
|
ProductionProcesses processes = new ProductionProcesses();
|
|
|
// 工序所属订单
|
|
@@ -1425,6 +1431,16 @@ public class ApsServiceImpl implements ApsService {
|
|
|
processes.setIssubsection(operationDo.getIssubsection());
|
|
|
processes.setUnitProduceTime(operationDo.getOnceprocessmin().intValue());
|
|
|
processes.setProduceTime(operationDo.getOnceprocessmin().intValue());
|
|
|
+ // 轧辊ID
|
|
|
+ List<ApsProcessOperationEquDo> operationEquDos = processOperationEquDos.stream().filter(v ->
|
|
|
+ v.getBlankid().equals(operationDo.getBlankid()) && v.getMainid().equals(operationDo.getId())).collect(Collectors.toList());
|
|
|
+ if(operationEquDos != null && operationEquDos.size()>0){
|
|
|
+ Map<String,String> optionalEquipmentZg = new HashMap<>();
|
|
|
+ for (ApsProcessOperationEquDo operationEquDo : operationEquDos) {
|
|
|
+ optionalEquipmentZg.put(operationEquDo.getResourceid(),operationEquDo.getRollerid());
|
|
|
+ }
|
|
|
+ processes.setOptionalEquipmentZg(optionalEquipmentZg);
|
|
|
+ }
|
|
|
// 单卷宽度和重量
|
|
|
if(operationDo.getProwidth() == null){
|
|
|
throw new CustomException(warnPreMsg + "的作业单卷宽度为空");
|