|
@@ -458,7 +458,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
updateConflictVoList.forEach(data -> {
|
|
|
ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = data.getApsProcessOperationProcessEquDo();
|
|
|
affectedIdList.addAll(checkProcessingTimeConflict(apsProcessOperationProcessEquDo,
|
|
|
- data.getOldPlanStartdate(), data.getOldPlanEnddate(), data.getCurrentProcessWay()));
|
|
|
+ data.getOldPlanStartdate(), data.getOldPlanEnddate(), data.getOldEquId(), data.getCurrentProcessWay()));
|
|
|
// 判断是否存在设备不可用
|
|
|
inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo,
|
|
|
apsProcessOperationProcessEquDo.getProcessdeviceid(),
|
|
@@ -540,11 +540,10 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
throw new CustomException("该作业已发布,不能调整开工时间");
|
|
|
}
|
|
|
blankIdSet.add(operationDo.getBlankid());
|
|
|
-
|
|
|
+ vo.setOldEquId(processEquDo.getProcessdeviceid());
|
|
|
if (StringUtils.isNotBlank(changeStartTimeVo.getEquId())) {
|
|
|
processEquDo.setProcessdevice(changeStartTimeVo.getEquId());
|
|
|
}
|
|
|
-
|
|
|
if (StringUtils.isNotBlank(changeStartTimeVo.getEquName())) {
|
|
|
processEquDo.setProcessdeviceid(changeStartTimeVo.getEquName());
|
|
|
}
|
|
@@ -554,9 +553,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
processEquDo.setPlanstartdate(changeStartTimeVo.getPlanStartTime());
|
|
|
processEquDo.setPlanenddate(changeStartTimeVo.getPlanEndTime());
|
|
|
vo.setApsProcessOperationProcessEquDo(processEquDo);
|
|
|
- vo.setOldEquId(changeStartTimeVo.getEquId());
|
|
|
vo.setOldPlanStartdate(processEquDo.getPlanenddate());
|
|
|
-
|
|
|
updateConflictVos.add(vo);
|
|
|
this.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
|
|
|
.eq(ApsProcessOperationProcessEquDo::getId, id)
|
|
@@ -569,7 +566,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
updateConflictVos.forEach(data -> {
|
|
|
ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = data.getApsProcessOperationProcessEquDo();
|
|
|
affectedIdList.addAll(checkProcessingTimeConflict(apsProcessOperationProcessEquDo,
|
|
|
- data.getOldPlanStartdate(), data.getOldPlanEnddate(), data.getCurrentProcessWay()));
|
|
|
+ data.getOldPlanStartdate(), data.getOldPlanEnddate(),data.getOldEquId(), data.getCurrentProcessWay()));
|
|
|
// 判断是否存在设备不可用
|
|
|
inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo,
|
|
|
apsProcessOperationProcessEquDo.getProcessdeviceid(),
|
|
@@ -647,7 +644,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
jobDetailsVo.getPlanStartTime().getTime() - oldPlanstartdate.getTime()));
|
|
|
// 增加受影响的工序作业信息
|
|
|
affectedIdList.addAll(checkProcessingTimeConflict(apsProcessOperationProcessEquDo, oldPlanstartdate,
|
|
|
- oldPlanenddate, apsProcessOperationDo.getProcessway()));
|
|
|
+ oldPlanenddate, oldEquId, apsProcessOperationDo.getProcessway()));
|
|
|
}
|
|
|
|
|
|
// 判断是否存在设备不可用
|
|
@@ -824,21 +821,31 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
* @param removeConflictsDesc 需要被删除的冲突描述
|
|
|
*/
|
|
|
public void updateProcessEquBeforeAddConflictsDesc(List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId,
|
|
|
- String removeConflictsDesc, String processway) {
|
|
|
+ String removeConflictsDesc, String processway,
|
|
|
+ Date newPlanStartDate,
|
|
|
+ Date newOldEndDate) {
|
|
|
if (beforeUpdatingConflictId.isEmpty()) {
|
|
|
return;
|
|
|
}
|
|
|
beforeUpdatingConflictId.forEach(info -> {
|
|
|
- // 判断是否和其他工序作业明细存在冲突
|
|
|
- List<ApsProcessOperationProcessEquDo> conflictId = this.baseMapper.getConflictId(info.getProcessdeviceid(),
|
|
|
- info.getId(), info.getPlanstartdate(), info.getPlanenddate(), processway);
|
|
|
- if (!conflictId.isEmpty()) {
|
|
|
+// // 判断是否和其他工序作业明细存在冲突
|
|
|
+// List<ApsProcessOperationProcessEquDo> conflictId = this.baseMapper.getConflictId(info.getProcessdeviceid(),
|
|
|
+// info.getId(), info.getPlanstartdate(), info.getPlanenddate(), processway);
|
|
|
+// if (!conflictId.isEmpty()) {
|
|
|
+// info.setConflictdes(removeConflictsDesc(info.getConflictdes(), removeConflictsDesc));
|
|
|
+// info.setHasconflict(StringUtils.isBlank(info.getConflictdes()) &&
|
|
|
+// StringUtils.isBlank(info.getSoftconflictdes()) ?
|
|
|
+// LOCKMARK_N : LOCKMARK_Y);
|
|
|
+// }
|
|
|
+ if(info.getPlanstartdate().equals(newPlanStartDate)){
|
|
|
info.setConflictdes(removeConflictsDesc(info.getConflictdes(), removeConflictsDesc));
|
|
|
info.setHasconflict(StringUtils.isBlank(info.getConflictdes()) &&
|
|
|
StringUtils.isBlank(info.getSoftconflictdes()) ?
|
|
|
LOCKMARK_N : LOCKMARK_Y);
|
|
|
+ }else{
|
|
|
+ info.setConflictdes(addNewConflictsDesc(info.getConflictdes(), removeConflictsDesc));
|
|
|
+ info.setHasconflict(LOCKMARK_Y);
|
|
|
}
|
|
|
-
|
|
|
});
|
|
|
this.updateBatchById(beforeUpdatingConflictId);
|
|
|
}
|
|
@@ -919,28 +926,34 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
* @return
|
|
|
*/
|
|
|
public List<String> checkProcessingTimeConflict(ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo,
|
|
|
- Date oldPlanstartdate, Date oldPlanenddate, String currentProcessWay) {
|
|
|
+ Date oldPlanstartdate, Date oldPlanenddate, String oldEquId,
|
|
|
+ String currentProcessWay) {
|
|
|
// 受影响的工序作业Id
|
|
|
List<String> affectedIdList = new ArrayList<>();
|
|
|
- // 获取更新之前的存在冲突的工序作业
|
|
|
- List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId = this.baseMapper.getConflictId(
|
|
|
- apsProcessOperationProcessEquDo.getProcessdeviceid(), apsProcessOperationProcessEquDo.getId(),
|
|
|
- oldPlanstartdate, oldPlanenddate, currentProcessWay);
|
|
|
|
|
|
- affectedIdList.addAll(beforeUpdatingConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
|
|
|
+ List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId = null;
|
|
|
+ // 如果当前工序是合并加工 需要获取在修改之前存在中途的数据
|
|
|
+ if (PROCESS_WAY_MERGE.equals(currentProcessWay)) {
|
|
|
+ // 获取更新之前的存在冲突的工序作业
|
|
|
+ beforeUpdatingConflictId = this.baseMapper.getTimeOverlapByEquId(oldEquId, apsProcessOperationProcessEquDo.getId(), oldPlanstartdate, oldPlanenddate);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (beforeUpdatingConflictId != null && !beforeUpdatingConflictId.isEmpty()) {
|
|
|
+ affectedIdList.addAll(beforeUpdatingConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
|
|
|
+ updateProcessEquBeforeAddConflictsDesc(beforeUpdatingConflictId, EQ_TIME_CROSS, currentProcessWay,
|
|
|
+ apsProcessOperationProcessEquDo.getPlanstartdate(),
|
|
|
+ apsProcessOperationProcessEquDo.getPlanenddate());
|
|
|
+ }
|
|
|
+
|
|
|
// 找到更新时间之后存在冲突的工序作业
|
|
|
List<ApsProcessOperationProcessEquDo> afterTheUpdateConflictId = this.baseMapper.getConflictId(
|
|
|
apsProcessOperationProcessEquDo.getProcessdeviceid(), apsProcessOperationProcessEquDo.getId(),
|
|
|
apsProcessOperationProcessEquDo.getPlanstartdate(), apsProcessOperationProcessEquDo.getPlanenddate(),
|
|
|
currentProcessWay);
|
|
|
affectedIdList.addAll(afterTheUpdateConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
|
|
|
- if (!beforeUpdatingConflictId.isEmpty()) {
|
|
|
- updateProcessEquBeforeAddConflictsDesc(beforeUpdatingConflictId, EQ_TIME_CROSS, currentProcessWay);
|
|
|
- }
|
|
|
-
|
|
|
if (!afterTheUpdateConflictId.isEmpty()) {
|
|
|
apsProcessOperationProcessEquDo.setHasconflict(LOCKMARK_Y);
|
|
|
- // 更当前工序作业增加新的冲突
|
|
|
+ // 更新当前工序作业增加新的冲突
|
|
|
String newConflictsDesc = addNewConflictsDesc(apsProcessOperationProcessEquDo.getConflictdes(), EQ_TIME_CROSS);
|
|
|
apsProcessOperationProcessEquDo.setConflictdes(newConflictsDesc);
|
|
|
updateProcessEquAfterAddConflictsDesc(afterTheUpdateConflictId, EQ_TIME_CROSS);
|