|
@@ -334,6 +334,8 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
|
|
|
private void apsOrderScheduleNew(List<ApsBlankOrderVo> apsBlankOrders,SysUserVo currentUser){
|
|
|
+ // 插单重排的优先排程
|
|
|
+ List<ApsBlankOrderVo> cdorders = apsBlankOrders.stream().filter(v -> "1".equals(v.getCdbs())).collect(Collectors.toList());
|
|
|
// 先按合金,合金状态分组,再每组分别排程
|
|
|
for (ApsBlankOrderVo apsBlankOrder : apsBlankOrders) {
|
|
|
apsBlankOrder.setVolumeMetalAndState(apsBlankOrder.getAlloy());
|
|
@@ -355,8 +357,32 @@ public class ApsServiceImpl implements ApsService {
|
|
|
apsPlanStartDate = DateUtil.date().offset(DateField.HOUR, a);
|
|
|
}
|
|
|
}
|
|
|
+ Date finalApsPlanStartDate = apsPlanStartDate;
|
|
|
+ if(cdorders != null && cdorders.size()>0){
|
|
|
+ try{
|
|
|
+ apsOrderScheduleApsNew(cdorders,currentUser,allEqs, finalApsPlanStartDate);
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ logger.info("排程异常",e);
|
|
|
+ String blankNos = "";
|
|
|
+ for (ApsBlankOrderVo apsBlankOrderVo : cdorders) {
|
|
|
+ if("".equals(blankNos)){
|
|
|
+ blankNos = apsBlankOrderVo.getBlanknumber();
|
|
|
+ }else{
|
|
|
+ blankNos = blankNos+";"+apsBlankOrderVo.getBlanknumber();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String msg = "排程服务异常(坯料计划号:"+blankNos+")"+DateUtil.formatDateTime(new Date());
|
|
|
+ if(e instanceof CustomException){
|
|
|
+ msg = e.getMessage();
|
|
|
+ }
|
|
|
+ currentUser.setRoption(msg+" "+DateUtil.formatDateTime(new Date()));
|
|
|
+ String tenantId = CXCommonUtils.getCurrentUserFactoryId(currentUser);
|
|
|
+ redisService.redisCatchInit("apsUser-"+tenantId,currentUser,3600*24);
|
|
|
+// throw e;
|
|
|
+ }
|
|
|
+ }
|
|
|
if(voms != null && voms.size()>0){
|
|
|
- Date finalApsPlanStartDate = apsPlanStartDate;
|
|
|
voms.forEach((k, v)->{
|
|
|
try{
|
|
|
apsOrderScheduleApsNew(v,currentUser,allEqs, finalApsPlanStartDate);
|
|
@@ -411,52 +437,47 @@ public class ApsServiceImpl implements ApsService {
|
|
|
int a = 0;
|
|
|
// 插单优先
|
|
|
if(v1.getCdbs().compareTo(v2.getCdbs()) == 0){
|
|
|
- // 合金
|
|
|
- if(alloy1.compareTo(alloy2) == 0){
|
|
|
- // 产品类型
|
|
|
- if(producttype1 == null || producttype2 == null || producttype1.compareTo(producttype2) == 0){
|
|
|
- // 宽度
|
|
|
- if(prowidth1.compareTo(prowidth2) == 0){
|
|
|
- // 厚度
|
|
|
- if(thickness1.compareTo(thickness2) == 0){
|
|
|
- // 合金状态
|
|
|
- if(alloystatus1 == null || alloystatus2 == null || alloystatus1.compareTo(alloystatus2) == 0){
|
|
|
- // 重量
|
|
|
- if(singlerollweight1.compareTo(singlerollweight2) == 0){
|
|
|
- // 按照订单排序
|
|
|
- if(v1.getProductionorderid().compareTo(v2.getProductionorderid()) == 0){
|
|
|
- // 卷数从大到小
|
|
|
- a = v2.getRollnum().compareTo(v1.getRollnum());
|
|
|
- }else{
|
|
|
- a = v1.getProductionorderid().compareTo(v2.getProductionorderid());
|
|
|
- }
|
|
|
- }else if(singlerollweight1.compareTo(singlerollweight2) > 0){
|
|
|
- a = -1;
|
|
|
+ // 产品类型
|
|
|
+ if(producttype1 == null || producttype2 == null || producttype1.compareTo(producttype2) == 0){
|
|
|
+ // 宽度
|
|
|
+ if(prowidth1.compareTo(prowidth2) == 0){
|
|
|
+ // 厚度
|
|
|
+ if(thickness1.compareTo(thickness2) == 0){
|
|
|
+ // 合金状态
|
|
|
+ if(alloystatus1 == null || alloystatus2 == null || alloystatus1.compareTo(alloystatus2) == 0){
|
|
|
+ // 重量
|
|
|
+ if(singlerollweight1.compareTo(singlerollweight2) == 0){
|
|
|
+ // 按照订单排序
|
|
|
+ if(v1.getProductionorderid().compareTo(v2.getProductionorderid()) == 0){
|
|
|
+ // 卷数从大到小
|
|
|
+ a = v2.getRollnum().compareTo(v1.getRollnum());
|
|
|
}else{
|
|
|
- a = 1;
|
|
|
+ a = v1.getProductionorderid().compareTo(v2.getProductionorderid());
|
|
|
}
|
|
|
- }else{
|
|
|
- a = alloystatus1.compareTo(alloystatus2);
|
|
|
- }
|
|
|
- }else{
|
|
|
- if(thickness1.compareTo(thickness2) > 0){
|
|
|
+ }else if(singlerollweight1.compareTo(singlerollweight2) > 0){
|
|
|
a = -1;
|
|
|
}else{
|
|
|
a = 1;
|
|
|
}
|
|
|
+ }else{
|
|
|
+ a = alloystatus1.compareTo(alloystatus2);
|
|
|
}
|
|
|
}else{
|
|
|
- if(prowidth1.compareTo(prowidth2) > 0){
|
|
|
+ if(thickness1.compareTo(thickness2) > 0){
|
|
|
a = -1;
|
|
|
}else{
|
|
|
a = 1;
|
|
|
}
|
|
|
}
|
|
|
}else{
|
|
|
- a = producttype1.compareTo(producttype2);
|
|
|
+ if(prowidth1.compareTo(prowidth2) > 0){
|
|
|
+ a = -1;
|
|
|
+ }else{
|
|
|
+ a = 1;
|
|
|
+ }
|
|
|
}
|
|
|
}else{
|
|
|
- a = alloy1.compareTo(alloy2);
|
|
|
+ a = producttype1.compareTo(producttype2);
|
|
|
}
|
|
|
}else{
|
|
|
a = v1.getCdbs().compareTo(v2.getCdbs());
|
|
@@ -736,6 +757,8 @@ public class ApsServiceImpl implements ApsService {
|
|
|
List<ApsProcessOperationProcessEquDo> apopes = processOperationProcessEquService.list(
|
|
|
new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
|
|
|
.in(ApsProcessOperationProcessEquDo::getBlankid,blankids)
|
|
|
+ .isNotNull(ApsProcessOperationProcessEquDo::getProcessdeviceid)
|
|
|
+ .ne(ApsProcessOperationProcessEquDo::getProcessdeviceid,"")
|
|
|
.orderByAsc(ApsProcessOperationProcessEquDo::getPlanstartdate));
|
|
|
Map<String, List<ApsProcessOperationProcessEquDo>> proEqus = apopes.stream().collect(Collectors.groupingBy(ApsProcessOperationProcessEquDo::getProcessid));
|
|
|
// 待排程坯料计划作业可选设备轧辊ID
|
|
@@ -1194,7 +1217,10 @@ public class ApsServiceImpl implements ApsService {
|
|
|
// 锁定的作业
|
|
|
if(LOCKMARK_Y.equals(operationDo.getLockmark())){
|
|
|
List<ApsProcessOperationProcessEquDo> processDetails = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
|
|
|
- .eq(ApsProcessOperationProcessEquDo::getProcessid, operationDo.getId()).orderByAsc(ApsProcessOperationProcessEquDo::getPlanstartdate));
|
|
|
+ .eq(ApsProcessOperationProcessEquDo::getProcessid, operationDo.getId())
|
|
|
+ .isNotNull(ApsProcessOperationProcessEquDo::getProcessdeviceid)
|
|
|
+ .ne(ApsProcessOperationProcessEquDo::getProcessdeviceid,"")
|
|
|
+ .orderByAsc(ApsProcessOperationProcessEquDo::getPlanstartdate));
|
|
|
for (ApsProcessOperationProcessEquDo processDetail : processDetails) {
|
|
|
ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo,processOperationEquDos);
|
|
|
// 锁定的作业保留作业ID
|
|
@@ -1392,7 +1418,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
operationProcess.add(processes);
|
|
|
}
|
|
|
}else{
|
|
|
- for (Integer i = 0; i < operationDo.getPlanprocessrall(); i++) {
|
|
|
+ for (Integer i = 0; i < operationDo.getPlanprocessrall()-operationDo.getCancelrollsum(); i++) {
|
|
|
ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo,processOperationEquDos);
|
|
|
// 已排程的作业明细数据保持ID不变
|
|
|
if(processEquDos != null && i<processEquDos.size()){
|