|
@@ -281,7 +281,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
dataMapOrder.put(bo.getId(),bo);
|
|
|
|
|
|
// 模型转换
|
|
|
- ProductionScheduleVo productionScheduleVo = apsProductionScheduleInit(v);
|
|
|
+ ProductionScheduleVo productionScheduleVo = apsProductionScheduleInit(v,new Date());
|
|
|
productionScheduleVos.add(productionScheduleVo);
|
|
|
dataMap.put(productionScheduleVo.getProductionScheduleId(),v);
|
|
|
// int mergeThNum = mergeThNum(bo, productionScheduleVo);
|
|
@@ -292,7 +292,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
List<String> blankids = new ArrayList<>();
|
|
|
blankids.add(bo.getId());
|
|
|
for (ApsProcessOperationDo operationDo : operationDos1) {
|
|
|
- List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList1,eqMaps,blankids,null,productionScheduleVo,apsConfigs.get(0));
|
|
|
+ List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList1,eqMaps,blankids,null,productionScheduleVo,apsConfigs.get(0),null);
|
|
|
}
|
|
|
productionScheduleVo.setEquipmentList(equipmentList1);
|
|
|
apsProductionSchedules.add(productionScheduleVo);
|
|
@@ -339,10 +339,27 @@ public class ApsServiceImpl implements ApsService {
|
|
|
apsBlankOrder.setVolumeMetalAndState(apsBlankOrder.getAlloy());
|
|
|
}
|
|
|
Map<String, List<ApsBlankOrderVo>> voms = apsBlankOrders.stream().collect(Collectors.groupingBy(ApsBlankOrderVo::getVolumeMetalAndState));
|
|
|
+ Map<String,Equipment> allEqs = new HashMap<>();
|
|
|
+ // 统一排程开始时间
|
|
|
+ List<ApsScheduleConfigDo> apsConfigs = apsScheduleConfigService.list();
|
|
|
+ Date apsPlanStartDate = new Date();
|
|
|
+ if(apsConfigs != null && apsConfigs.size()>0){
|
|
|
+ ApsScheduleConfigDo apsScheduleConfig = apsConfigs.get(0);
|
|
|
+ int a = 8;
|
|
|
+ if (apsScheduleConfig.getStartschedulerun() != null) {
|
|
|
+ a = apsScheduleConfig.getStartschedulerun();
|
|
|
+ }
|
|
|
+ if (apsScheduleConfig.getApsplanstartdate() != null) {
|
|
|
+ apsPlanStartDate = apsScheduleConfig.getApsplanstartdate();
|
|
|
+ } else {
|
|
|
+ apsPlanStartDate = DateUtil.date().offset(DateField.HOUR, a);
|
|
|
+ }
|
|
|
+ }
|
|
|
if(voms != null && voms.size()>0){
|
|
|
- voms.forEach((k,v)->{
|
|
|
+ Date finalApsPlanStartDate = apsPlanStartDate;
|
|
|
+ voms.forEach((k, v)->{
|
|
|
try{
|
|
|
- apsOrderScheduleApsNew(v,currentUser);
|
|
|
+ apsOrderScheduleApsNew(v,currentUser,allEqs, finalApsPlanStartDate);
|
|
|
}catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
logger.info("排程异常",e);
|
|
@@ -367,7 +384,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void apsOrderScheduleApsNew(List<ApsBlankOrderVo> apsBlankOrders,SysUserVo currentUser){
|
|
|
+ private void apsOrderScheduleApsNew(List<ApsBlankOrderVo> apsBlankOrders,SysUserVo currentUser,Map<String,Equipment> allEqs,Date apsPlanStartDate){
|
|
|
// 坯料计划排序
|
|
|
Collections.sort(apsBlankOrders,(v1,v2)->{
|
|
|
// 合金
|
|
@@ -489,7 +506,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
dataMapOrder.put(bo.getId(),bo);
|
|
|
|
|
|
// 模型转换
|
|
|
- ProductionScheduleVo productionScheduleVo = apsProductionScheduleInit(v);
|
|
|
+ ProductionScheduleVo productionScheduleVo = apsProductionScheduleInit(v,apsPlanStartDate);
|
|
|
productionScheduleVos.add(productionScheduleVo);
|
|
|
dataMap.put(productionScheduleVo.getProductionScheduleId(),v);
|
|
|
// int mergeThNum = mergeThNum(bo, productionScheduleVo);
|
|
@@ -506,7 +523,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
List<String> blankids = new ArrayList<>();
|
|
|
blankids.add(bo.getId());
|
|
|
for (ApsProcessOperationDo operationDo : operationDos1) {
|
|
|
- List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList1,eqMaps,blankids,null,productionScheduleVo,apsConfigs.get(0));
|
|
|
+ List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList1,eqMaps,blankids,null,productionScheduleVo,apsConfigs.get(0),allEqs);
|
|
|
}
|
|
|
productionScheduleVo.setEquipmentList(equipmentList1);
|
|
|
apsProductionSchedules.add(productionScheduleVo);
|
|
@@ -626,7 +643,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private ProductionScheduleVo productionScheduleVoInit(){
|
|
|
+ private ProductionScheduleVo productionScheduleVoInit(Date apsPlanStartDate){
|
|
|
ProductionScheduleVo productionScheduleVo = new ProductionScheduleVo();
|
|
|
productionScheduleVo.setProductionScheduleId("批量排程-"+SecurityUtil.getUUID());
|
|
|
List<ApsScheduleConfigDo> apsConfigs = apsScheduleConfigService.list();
|
|
@@ -644,7 +661,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
roamTime.put("WORKSHOP_CROSS", workshopcross);
|
|
|
productionScheduleVo.setRoamTime(roamTime);
|
|
|
// 排程计划开始时间
|
|
|
- int a = 8;
|
|
|
+ /*int a = 8;
|
|
|
if (apsScheduleConfig.getStartschedulerun() != null) {
|
|
|
a = apsScheduleConfig.getStartschedulerun();
|
|
|
}
|
|
@@ -652,7 +669,8 @@ public class ApsServiceImpl implements ApsService {
|
|
|
productionScheduleVo.setApsPlanStartDate(apsScheduleConfig.getApsplanstartdate());
|
|
|
} else {
|
|
|
productionScheduleVo.setApsPlanStartDate(DateUtil.date().offset(DateField.HOUR, a));
|
|
|
- }
|
|
|
+ }*/
|
|
|
+ productionScheduleVo.setApsPlanStartDate(apsPlanStartDate);
|
|
|
productionScheduleVo.setWashingtime(apsScheduleConfig.getWashingtime());
|
|
|
productionScheduleVo.setStandingtime(apsScheduleConfig.getStandingtime());
|
|
|
productionScheduleVo.setStandingyield(apsScheduleConfig.getStandingyield());
|
|
@@ -695,7 +713,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public ProductionScheduleVo apsProductionScheduleInit(List<ApsBlankOrderVo> apsBlankOrders) {
|
|
|
+ public ProductionScheduleVo apsProductionScheduleInit(List<ApsBlankOrderVo> apsBlankOrders,Date apsPlanStartDate) {
|
|
|
// 待排程坯料计划ID集合
|
|
|
List<String> blankids = apsBlankOrders.stream().map(v -> v.getId()).collect(Collectors.toList());
|
|
|
// 查询当前坯料计划的历史排程明细
|
|
@@ -708,7 +726,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
List<ApsProcessOperationEquDo> processOperationEquDos = apsProcessOperationEquService.list(
|
|
|
new LambdaQueryWrapper<ApsProcessOperationEquDo>().in(ApsProcessOperationEquDo::getBlankid, blankids));
|
|
|
|
|
|
- ProductionScheduleVo productionScheduleVo = productionScheduleVoInit();
|
|
|
+ ProductionScheduleVo productionScheduleVo = productionScheduleVoInit(apsPlanStartDate);
|
|
|
// 排程计划工序任务集合
|
|
|
List<ProductionProcesses> processesList = new ArrayList<>();
|
|
|
// 坯料计划ID和所属工序作业ID对应关系
|
|
@@ -780,7 +798,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
|
|
|
private List<String> equipmentListInit(ApsProcessOperationDo operationDo,List<Equipment> equipmentList,Map<String, AspCheckItemsDo> eqMaps
|
|
|
- ,List<String> blankids,Set<String> opId,ProductionScheduleVo productionScheduleVo,ApsScheduleConfigDo apsScheduleConfig){
|
|
|
+ ,List<String> blankids,Set<String> opId,ProductionScheduleVo productionScheduleVo,ApsScheduleConfigDo apsScheduleConfig,Map<String,Equipment> allEqs){
|
|
|
// 当前工序排程开始时间
|
|
|
Date apsPlanStartDate = productionScheduleVo.getApsPlanStartDate();
|
|
|
if(productionScheduleVo.getProcesses() != null && productionScheduleVo.getProcesses().size()>0){
|
|
@@ -791,26 +809,12 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ String apsPlanStartDateStr = DateUtil.formatDateTime(apsPlanStartDate);
|
|
|
// 设备列表
|
|
|
List<String> optionalEquipments = new ArrayList<>();
|
|
|
if (StringUtils.isNotBlank(operationDo.getCanchoosedeviceid())) {
|
|
|
String canchoosedeviceid = operationDo.getCanchoosedeviceid();
|
|
|
// 锁定作业添加可选设备里没有但已锁定排程明细的设备
|
|
|
- /*if("y".equals(operationDo.getLockmark())){
|
|
|
- List<ApsProcessOperationProcessEquDo> pros = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
|
|
|
- .eq(ApsProcessOperationProcessEquDo::getProcessid, operationDo.getId()));
|
|
|
- if(pros != null && pros.size()>0){
|
|
|
- for (ApsProcessOperationProcessEquDo pro : pros) {
|
|
|
- if(!canchoosedeviceid.contains(pro.getProcessdeviceid())){
|
|
|
- if(StrUtil.isBlank(canchoosedeviceid)){
|
|
|
- canchoosedeviceid = pro.getProcessdeviceid();
|
|
|
- }else{
|
|
|
- canchoosedeviceid = canchoosedeviceid + "," + pro.getProcessdeviceid();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }*/
|
|
|
List<ApsProcessOperationProcessEquDo> pros = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
|
|
|
.eq(ApsProcessOperationProcessEquDo::getProcessid, operationDo.getId()).eq(ApsProcessOperationProcessEquDo::getLockmarkdetail,"y"));
|
|
|
if(pros != null && pros.size()>0){
|
|
@@ -830,6 +834,12 @@ public class ApsServiceImpl implements ApsService {
|
|
|
if(equIds.equals("0001be252874536843730b100017")){
|
|
|
System.out.println(equIds);
|
|
|
}
|
|
|
+ String eqDateKey = apsPlanStartDateStr + " *** " + equIds;
|
|
|
+ if(allEqs.containsKey(eqDateKey)){
|
|
|
+ equipmentList.add(allEqs.get(eqDateKey));
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
AspCheckItemsDo checkItemsD = eqMaps.get(equIds);
|
|
|
if (checkItemsD != null) {
|
|
|
optionalEquipments.add(equIds);
|
|
@@ -1051,6 +1061,8 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
|
|
|
equipmentList.add(equipment);
|
|
|
+
|
|
|
+ allEqs.put(eqDateKey,equipment);
|
|
|
}
|
|
|
}
|
|
|
}
|