|
@@ -71,6 +71,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
private ApsConflictLogServiceImpl apsConflictLogService;
|
|
|
@Autowired
|
|
|
private HttpServletRequest httpServletRequest;
|
|
|
+ @Autowired
|
|
|
+ private ApsProcessOperationProcessEquService apsProcessOperationProcessEquService;
|
|
|
|
|
|
/**
|
|
|
* 更新工序的待加工批次号信息
|
|
@@ -474,7 +476,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
updateConflictVoList.forEach(data -> {
|
|
|
ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = data.getApsProcessOperationProcessEquDo();
|
|
|
affectedIdList.addAll(checkProcessingTimeConflict(apsProcessOperationProcessEquDo,
|
|
|
- data.getOldPlanStartdate(), data.getOldPlanEnddate(), data.getOldEquId(), data.getCurrentProcessWay()));
|
|
|
+ data.getOldPlanStartdate(), data.getOldPlanEnddate(), data.getOldEquId(), data.getCurrentProcessWay(),returnAboutIds));
|
|
|
// 判断是否存在设备不可用
|
|
|
inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo,
|
|
|
apsProcessOperationProcessEquDo.getProcessdeviceid(),
|
|
@@ -482,12 +484,14 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
apsProcessOperationProcessEquDo.getPlanenddate());
|
|
|
});
|
|
|
}
|
|
|
+ List<String> aboutIds= affectedIdList.stream().distinct().collect(Collectors.toList());
|
|
|
blankIds.forEach(data -> {
|
|
|
// 更新坯料交货期
|
|
|
- apsBlankOrderService.updateBlankDeliveryDate(null, data);
|
|
|
+ aboutIds.addAll(apsBlankOrderService.updateBlankDeliveryDate(null, data));
|
|
|
});
|
|
|
+
|
|
|
// 重新获取甘特图数据并返回前段
|
|
|
- return R.ok(ganttService.getListById(affectedIdList.stream().distinct().collect(Collectors.toList())));
|
|
|
+ return R.ok(ganttService.getListById(aboutIds));
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -544,11 +548,13 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
List<UpdateConflictVo> updateConflictVos = new ArrayList<>();
|
|
|
Set<String> blankIdSet = new HashSet<>();
|
|
|
UpdateConflictVo vo;
|
|
|
+ List<String> returnAboutIds = new ArrayList<>();
|
|
|
for (ChangeStartTimeVo changeStartTimeVo : changeStartTimeVos) {
|
|
|
vo = new UpdateConflictVo();
|
|
|
String id = changeStartTimeVo.getId();
|
|
|
affectedIdList.add(id);
|
|
|
affectedIdList.addAll(changeStartTimeVo.getReturnAboutIds());
|
|
|
+ returnAboutIds.addAll(changeStartTimeVo.getReturnAboutIds());
|
|
|
ApsProcessOperationProcessEquDo processEquDo = this.getById(id);
|
|
|
ApsProcessOperationDo operationDo = apsProcessOperationService.getById(processEquDo.getProcessid());
|
|
|
if (operationDo == null) {
|
|
@@ -587,19 +593,26 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
updateConflictVos.forEach(data -> {
|
|
|
ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = data.getApsProcessOperationProcessEquDo();
|
|
|
affectedIdList.addAll(checkProcessingTimeConflict(apsProcessOperationProcessEquDo,
|
|
|
- data.getOldPlanStartdate(), data.getOldPlanEnddate(), data.getOldEquId(), data.getCurrentProcessWay()));
|
|
|
+ data.getOldPlanStartdate(), data.getOldPlanEnddate(), data.getOldEquId(), data.getCurrentProcessWay(),returnAboutIds));
|
|
|
// 判断是否存在设备不可用
|
|
|
inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo,
|
|
|
apsProcessOperationProcessEquDo.getProcessdeviceid(),
|
|
|
apsProcessOperationProcessEquDo.getPlanstartdate(),
|
|
|
apsProcessOperationProcessEquDo.getPlanenddate());
|
|
|
});
|
|
|
- blankIdSet.forEach(blankId -> {
|
|
|
+// blankIdSet.forEach(blankId -> {
|
|
|
+// // 更新坯料交货期
|
|
|
+// apsBlankOrderService.updateBlankDeliveryDate(null, blankId);
|
|
|
+// });
|
|
|
+// // 返回受影响的数据
|
|
|
+// return R.ok(this.ganttService.getListById(affectedIdList.stream().distinct().collect(Collectors.toList())));
|
|
|
+ List<String> aboutIds= affectedIdList.stream().distinct().collect(Collectors.toList());
|
|
|
+ blankIdSet.forEach(data -> {
|
|
|
// 更新坯料交货期
|
|
|
- apsBlankOrderService.updateBlankDeliveryDate(null, blankId);
|
|
|
+ aboutIds.addAll(apsBlankOrderService.updateBlankDeliveryDate(null, data));
|
|
|
});
|
|
|
// 返回受影响的数据
|
|
|
- return R.ok(this.ganttService.getListById(affectedIdList.stream().distinct().collect(Collectors.toList())));
|
|
|
+ return R.ok(ganttService.getListById(aboutIds));
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -664,7 +677,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
jobDetailsVo.getPlanStartTime().getTime() - oldPlanstartdate.getTime()));
|
|
|
// 增加受影响的工序作业信息
|
|
|
affectedIdList.addAll(checkProcessingTimeConflict(apsProcessOperationProcessEquDo, oldPlanstartdate,
|
|
|
- oldPlanenddate, oldEquId, apsProcessOperationDo.getProcessway()));
|
|
|
+ oldPlanenddate, oldEquId, apsProcessOperationDo.getProcessway(),null));
|
|
|
}
|
|
|
|
|
|
// 判断是否存在设备不可用
|
|
@@ -673,9 +686,13 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
|
|
|
this.updateById(apsProcessOperationProcessEquDo);
|
|
|
// 更新坯料交货期
|
|
|
- apsBlankOrderService.updateBlankDeliveryDate(null, apsProcessOperationDo.getBlankid());
|
|
|
+// apsBlankOrderService.updateBlankDeliveryDate(null, apsProcessOperationDo.getBlankid());
|
|
|
+// affectedIdList.addAll(jobDetailsVo.getReturnAboutIds());
|
|
|
+// return R.ok(this.ganttService.getListById(affectedIdList));
|
|
|
affectedIdList.addAll(jobDetailsVo.getReturnAboutIds());
|
|
|
- return R.ok(this.ganttService.getListById(affectedIdList));
|
|
|
+ List<String> aboutIds= affectedIdList.stream().distinct().collect(Collectors.toList());
|
|
|
+ aboutIds.addAll(apsBlankOrderService.updateBlankDeliveryDate(null, apsProcessOperationDo.getBlankid()));
|
|
|
+ return R.ok(ganttService.getListById(aboutIds));
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -803,7 +820,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
// 增加受影响的工序作业信息
|
|
|
affectedIdList.addAll(checkProcessingTimeConflict(newDo, currentProcessEquDo.getPlanstartdate(),
|
|
|
currentProcessEquDo.getPlanenddate(), currentProcessEquDo.getProcessdeviceid(),
|
|
|
- currentProcessOperationDo.getProcessway()));
|
|
|
+ currentProcessOperationDo.getProcessway(),null));
|
|
|
} else {
|
|
|
/**************************拆分逻辑处理***********************************/
|
|
|
newDo.setId(SecurityUtil.getUUID());
|
|
@@ -836,7 +853,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
// 增加受影响的工序作业信息
|
|
|
affectedIdList.addAll(checkProcessingTimeConflict(newDo, newDo.getPlanstartdate(),
|
|
|
newDo.getPlanenddate(), newDo.getProcessdeviceid(),
|
|
|
- currentProcessOperationDo.getProcessway()));
|
|
|
+ currentProcessOperationDo.getProcessway(),null));
|
|
|
this.save(newDo);
|
|
|
newDataList.add(newDo);
|
|
|
/**************************原数据逻辑处理***********************************/
|
|
@@ -876,7 +893,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
// 增加受影响的工序作业信息
|
|
|
affectedIdList.addAll(checkProcessingTimeConflict(oldDo,
|
|
|
currentProcessEquDo.getPlanstartdate(), currentProcessEquDo.getPlanenddate(),
|
|
|
- oldDo.getProcessdeviceid(), currentProcessOperationDo.getProcessway()));
|
|
|
+ oldDo.getProcessdeviceid(), currentProcessOperationDo.getProcessway(),null));
|
|
|
}
|
|
|
});
|
|
|
this.saveOrUpdateBatch(newDataList);
|
|
@@ -885,9 +902,10 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
inspectionEquipmentIsAvailable(newDo, newDo.getProcessdeviceid()
|
|
|
, newDo.getPlanstartdate(), newDo.getPlanenddate());
|
|
|
});
|
|
|
+ List<String> aboutIds= affectedIdList.stream().distinct().collect(Collectors.toList());
|
|
|
apsProcessOperationDos.forEach(data -> {
|
|
|
// 更新坯料交货期
|
|
|
- apsBlankOrderService.updateBlankDeliveryDate(null, data.getBlankid());
|
|
|
+ aboutIds.addAll(apsBlankOrderService.updateBlankDeliveryDate(null, data.getBlankid()));
|
|
|
});
|
|
|
// 将工序作业明细ID 加入到上一个工序作业信息的中
|
|
|
Map<String, List<ApsProcessOperationProcessEquDo>> collect = newDataList.stream().collect(Collectors.groupingBy(ApsProcessOperationProcessEquDo::getPreviousprocessesids));
|
|
@@ -901,7 +919,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
.eq(ApsProcessOperationProcessEquDo::getId, k)
|
|
|
.set(ApsProcessOperationProcessEquDo::getNextprocessesids, strAppendListConvertStr(apsProcessOperationProcessEquDo.getNextprocessesids(), collect1)));
|
|
|
});
|
|
|
- return R.ok(this.ganttService.getListById(affectedIdList.stream().distinct().collect(Collectors.toList())));
|
|
|
+ return R.ok(this.ganttService.getListById(aboutIds));
|
|
|
}
|
|
|
|
|
|
public void updateBlank(String processOperationId) {
|
|
@@ -1103,7 +1121,6 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
apsConflictLogService.recordLog(info.getId(),
|
|
|
aboutId, removeConflictsDesc, 2, null);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
// else {
|
|
@@ -1114,6 +1131,48 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
this.updateBatchById(beforeUpdatingConflictId);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 更新设备或者时间之后 更新冲突描述
|
|
|
+ *
|
|
|
+ * @param aboutProcessEquList 工序作业明细影响到的工序作业明细数据
|
|
|
+ * @param removeConflictsDesc 需要被删除的冲突描述
|
|
|
+ */
|
|
|
+ public void updateProcessEquAboutBeforeAddConflictsDesc(List<ApsProcessOperationProcessEquDo> aboutProcessEquList,
|
|
|
+ String removeConflictsDesc, String processway,
|
|
|
+ Date newPlanStartDate,
|
|
|
+ Date newOldEndDate,
|
|
|
+ String aboutId) {
|
|
|
+ if (aboutProcessEquList.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //删除之前受影响的工序作业明细的‘与加工设备其他作业加工时间重叠’冲突
|
|
|
+ aboutProcessEquList.forEach(info -> {
|
|
|
+ if (StringUtils.isNotBlank(info.getConflictdes())&&info.getConflictdes().contains(removeConflictsDesc)){
|
|
|
+ if (PROCESS_WAY_MERGE.equals(processway)) {
|
|
|
+ info.setConflictdes(removeConflictsDesc(info.getConflictdes(), removeConflictsDesc));
|
|
|
+ info.setHasconflict(StringUtils.isBlank(info.getConflictdes()) &&
|
|
|
+ StringUtils.isBlank(info.getSoftconflictdes()) ?
|
|
|
+ LOCKMARK_N : LOCKMARK_Y);
|
|
|
+ info.setModifydate(new Date());
|
|
|
+ apsConflictLogService.recordLog(info.getId(),
|
|
|
+ aboutId, removeConflictsDesc, 2, null);
|
|
|
+ } else {
|
|
|
+ if (newPlanStartDate.compareTo(info.getPlanenddate()) > 0 ||
|
|
|
+ newOldEndDate.compareTo(info.getPlanstartdate()) < 0) {
|
|
|
+ info.setConflictdes(removeConflictsDesc(info.getConflictdes(), removeConflictsDesc));
|
|
|
+ info.setHasconflict(StringUtils.isBlank(info.getConflictdes()) &&
|
|
|
+ StringUtils.isBlank(info.getSoftconflictdes()) ?
|
|
|
+ LOCKMARK_N : LOCKMARK_Y);
|
|
|
+ info.setModifydate(new Date());
|
|
|
+ apsConflictLogService.recordLog(info.getId(),
|
|
|
+ aboutId, removeConflictsDesc, 2, null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.updateBatchById(aboutProcessEquList);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 更新设备或者时间之后 更新冲突描述
|
|
@@ -1198,17 +1257,26 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
*/
|
|
|
public List<String> checkProcessingTimeConflict(ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo,
|
|
|
Date oldPlanstartdate, Date oldPlanenddate,
|
|
|
- String oldEquId, String currentProcessWay) {
|
|
|
+ String oldEquId, String currentProcessWay,List<String> returnAboutIds) {
|
|
|
// 受影响的工序作业Id
|
|
|
List<String> affectedIdList = new ArrayList<>();
|
|
|
// 获取更新之前的存在冲突的工序作业
|
|
|
List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId = this.baseMapper.getTimeOverlapByEquId(oldEquId,
|
|
|
apsProcessOperationProcessEquDo.getId(), oldPlanstartdate, oldPlanenddate, currentProcessWay);
|
|
|
+ List<ApsProcessOperationProcessEquDo> aboutProcessEquList = new ArrayList<>();
|
|
|
+ if (!returnAboutIds.isEmpty()){
|
|
|
+ aboutProcessEquList = (List<ApsProcessOperationProcessEquDo>) apsProcessOperationProcessEquService.listByIds(returnAboutIds);
|
|
|
+ }
|
|
|
if (!beforeUpdatingConflictId.isEmpty()) {
|
|
|
affectedIdList.addAll(beforeUpdatingConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
|
|
|
updateProcessEquBeforeAddConflictsDesc(beforeUpdatingConflictId, EQ_TIME_CROSS, currentProcessWay,
|
|
|
apsProcessOperationProcessEquDo.getPlanstartdate(),
|
|
|
apsProcessOperationProcessEquDo.getPlanenddate(), apsProcessOperationProcessEquDo.getId());
|
|
|
+ if (!aboutProcessEquList.isEmpty()){
|
|
|
+ updateProcessEquAboutBeforeAddConflictsDesc(aboutProcessEquList,EQ_TIME_CROSS, currentProcessWay,
|
|
|
+ apsProcessOperationProcessEquDo.getPlanstartdate(),
|
|
|
+ apsProcessOperationProcessEquDo.getPlanenddate(), apsProcessOperationProcessEquDo.getId());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 找到更新时间之后存在冲突的工序作业
|
|
@@ -1239,6 +1307,23 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
.set(ApsProcessOperationProcessEquDo::getHasconflict, apsProcessOperationProcessEquDo.getHasconflict())
|
|
|
.set(BaseDo::getModifydate, new Date())
|
|
|
);
|
|
|
+ if (!aboutProcessEquList.isEmpty()){
|
|
|
+ aboutProcessEquList.forEach(e->{
|
|
|
+ if (StringUtils.isNotBlank(e.getConflictdes())&&e.getConflictdes().contains(EQ_TIME_CROSS)){
|
|
|
+ String afterConflictdes = removeConflictsDesc(e.getConflictdes(), EQ_TIME_CROSS);
|
|
|
+ apsConflictLogService.recordLog(e.getId(),"", EQ_TIME_CROSS, 2, null);
|
|
|
+ e.setConflictdes(afterConflictdes);
|
|
|
+ e.setHasconflict(StringUtils.isBlank(e.getConflictdes()) &&
|
|
|
+ StringUtils.isBlank(e.getSoftconflictdes()) ?
|
|
|
+ LOCKMARK_N : LOCKMARK_Y);
|
|
|
+ this.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
|
|
|
+ .eq(ApsProcessOperationProcessEquDo::getId, e.getId())
|
|
|
+ .set(ApsProcessOperationProcessEquDo::getConflictdes, newConflictsDesc)
|
|
|
+ .set(ApsProcessOperationProcessEquDo::getHasconflict, e.getHasconflict())
|
|
|
+ .set(BaseDo::getModifydate, new Date()));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
return affectedIdList;
|
|
|
}
|