|
@@ -635,6 +635,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
public R updateDetails(JobDetailsVo jobDetailsVo) {
|
|
public R updateDetails(JobDetailsVo jobDetailsVo) {
|
|
ApsUtils.checkScheduling(null);
|
|
ApsUtils.checkScheduling(null);
|
|
List<String> affectedIdList = new ArrayList<>();
|
|
List<String> affectedIdList = new ArrayList<>();
|
|
|
|
+ List<String> mergeWorkerIdList = new ArrayList<>();
|
|
String id = jobDetailsVo.getId();
|
|
String id = jobDetailsVo.getId();
|
|
affectedIdList.add(id);
|
|
affectedIdList.add(id);
|
|
if (StringUtils.isBlank(id)) {
|
|
if (StringUtils.isBlank(id)) {
|
|
@@ -666,37 +667,81 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
return R.error("已开工的作业不可修改");
|
|
return R.error("已开工的作业不可修改");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- // 更新开工时间 jobDetailsVo
|
|
|
|
- String equId = jobDetailsVo.getEquId();
|
|
|
|
- String equName = jobDetailsVo.getEquName();
|
|
|
|
- String oldEquId = apsProcessOperationProcessEquDo.getProcessdeviceid();
|
|
|
|
- if (StringUtils.isNotBlank(equId)) {
|
|
|
|
- apsProcessOperationProcessEquDo.setProcessdevice(equName);
|
|
|
|
- apsProcessOperationProcessEquDo.setProcessdeviceid(equId);
|
|
|
|
- apsProcessOperationProcessEquDo.setProcessworkshop(jobDetailsVo.getWorkshopName());
|
|
|
|
- apsProcessOperationProcessEquDo.setProcessworkshopid(jobDetailsVo.getWorkshopId());
|
|
|
|
- }
|
|
|
|
- // 更新计划开工时间
|
|
|
|
- Date planStartTime = jobDetailsVo.getPlanStartTime();
|
|
|
|
- if (planStartTime != null) {
|
|
|
|
- Date oldPlanstartdate = apsProcessOperationProcessEquDo.getPlanstartdate();
|
|
|
|
- Date oldPlanenddate = apsProcessOperationProcessEquDo.getPlanenddate();
|
|
|
|
- // 获取开工时间间隔=所选作业明细最早计划开工时间-所选加工开始时间
|
|
|
|
- long timeInterval = DateUtil.between(planStartTime, oldPlanstartdate, DateUnit.SECOND, false);
|
|
|
|
- apsProcessOperationProcessEquDo.setPlanstartdate(planStartTime);
|
|
|
|
- // 自动计算计划完工时间=原完工时间+新计划开工时间-原计划开工时间
|
|
|
|
- apsProcessOperationProcessEquDo.setPlanenddate(new Date(apsProcessOperationProcessEquDo.getPlanenddate().getTime() +
|
|
|
|
- jobDetailsVo.getPlanStartTime().getTime() - oldPlanstartdate.getTime()));
|
|
|
|
- // 增加受影响的工序作业信息
|
|
|
|
- affectedIdList.addAll(checkProcessingTimeConflict(apsProcessOperationProcessEquDo, oldPlanstartdate,
|
|
|
|
- oldPlanenddate, oldEquId, apsProcessOperationDo.getProcessway(),new ArrayList<>()));
|
|
|
|
- }
|
|
|
|
|
|
+ if (apsProcessOperationDo!= null&&"合并加工".equals(apsProcessOperationDo.getProcessway())){
|
|
|
|
+ List<ApsProcessOperationProcessEquDo> changeApsProcessEquList = apsProcessOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
|
|
|
|
+ .eq(ApsProcessOperationProcessEquDo::getProcessdeviceid, apsProcessOperationProcessEquDo.getProcessdeviceid())
|
|
|
|
+ .eq(ApsProcessOperationProcessEquDo::getPlanstartdate,apsProcessOperationProcessEquDo.getPlanstartdate())
|
|
|
|
+ .eq(ApsProcessOperationProcessEquDo::getProcessid,apsProcessOperationDo.getId()));
|
|
|
|
+ changeApsProcessEquList.forEach(info -> {
|
|
|
|
+ // 更新开工时间 jobDetailsVo
|
|
|
|
+ String equId = jobDetailsVo.getEquId();
|
|
|
|
+ String equName = jobDetailsVo.getEquName();
|
|
|
|
+ if (StringUtils.isNotBlank(equId)) {
|
|
|
|
+ info.setProcessdevice(equName);
|
|
|
|
+ info.setProcessdeviceid(equId);
|
|
|
|
+ info.setProcessworkshop(jobDetailsVo.getWorkshopName());
|
|
|
|
+ info.setProcessworkshopid(jobDetailsVo.getWorkshopId());
|
|
|
|
+ }
|
|
|
|
+ // 更新计划开工时间
|
|
|
|
+ Date planStartTime = jobDetailsVo.getPlanStartTime();
|
|
|
|
+ if (planStartTime != null) {
|
|
|
|
+ Date oldPlanstartdate = info.getPlanstartdate();
|
|
|
|
+ info.setPlanstartdate(planStartTime);
|
|
|
|
+ // 自动计算计划完工时间=原完工时间+新计划开工时间-原计划开工时间
|
|
|
|
+ info.setPlanenddate(new Date(info.getPlanenddate().getTime() +
|
|
|
|
+ jobDetailsVo.getPlanStartTime().getTime() - oldPlanstartdate.getTime()));
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ //避免合并加工时,找到除去本身之外同一计划开工日期同一设备‘更新时间’更改之后存在冲突的工序作业明细
|
|
|
|
+ this.updateBatchById(changeApsProcessEquList);
|
|
|
|
+ changeApsProcessEquList.forEach(detail->{
|
|
|
|
+ //当工序作业为合并加工时处理工序作业明细冲突
|
|
|
|
+ String oldEquId = apsProcessOperationProcessEquDo.getProcessdeviceid();
|
|
|
|
+ Date oldPlanstartdate = apsProcessOperationProcessEquDo.getPlanstartdate();
|
|
|
|
+ Date oldPlanenddate = apsProcessOperationProcessEquDo.getPlanenddate();
|
|
|
|
+ // 增加受影响的工序作业信息
|
|
|
|
+ affectedIdList.addAll(checkProcessingTimeConflict(detail, oldPlanstartdate,
|
|
|
|
+ oldPlanenddate, oldEquId, apsProcessOperationDo.getProcessway(),new ArrayList<>()));
|
|
|
|
+ // 判断是否存在设备不可用
|
|
|
|
+ inspectionEquipmentIsAvailable(detail, detail.getProcessdeviceid()
|
|
|
|
+ , detail.getPlanstartdate(), detail.getPlanenddate());
|
|
|
|
+ if (!detail.getId().equals(apsProcessOperationProcessEquDo.getId())){
|
|
|
|
+ mergeWorkerIdList.add(detail.getId());
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }else {
|
|
|
|
+ // 更新开工时间 jobDetailsVo
|
|
|
|
+ String equId = jobDetailsVo.getEquId();
|
|
|
|
+ String equName = jobDetailsVo.getEquName();
|
|
|
|
+ String oldEquId = apsProcessOperationProcessEquDo.getProcessdeviceid();
|
|
|
|
+ if (StringUtils.isNotBlank(equId)) {
|
|
|
|
+ apsProcessOperationProcessEquDo.setProcessdevice(equName);
|
|
|
|
+ apsProcessOperationProcessEquDo.setProcessdeviceid(equId);
|
|
|
|
+ apsProcessOperationProcessEquDo.setProcessworkshop(jobDetailsVo.getWorkshopName());
|
|
|
|
+ apsProcessOperationProcessEquDo.setProcessworkshopid(jobDetailsVo.getWorkshopId());
|
|
|
|
+ }
|
|
|
|
+ // 更新计划开工时间
|
|
|
|
+ Date planStartTime = jobDetailsVo.getPlanStartTime();
|
|
|
|
+ if (planStartTime != null) {
|
|
|
|
+ Date oldPlanstartdate = apsProcessOperationProcessEquDo.getPlanstartdate();
|
|
|
|
+ Date oldPlanenddate = apsProcessOperationProcessEquDo.getPlanenddate();
|
|
|
|
+ // 获取开工时间间隔=所选作业明细最早计划开工时间-所选加工开始时间
|
|
|
|
+ long timeInterval = DateUtil.between(planStartTime, oldPlanstartdate, DateUnit.SECOND, false);
|
|
|
|
+ apsProcessOperationProcessEquDo.setPlanstartdate(planStartTime);
|
|
|
|
+ // 自动计算计划完工时间=原完工时间+新计划开工时间-原计划开工时间
|
|
|
|
+ apsProcessOperationProcessEquDo.setPlanenddate(new Date(apsProcessOperationProcessEquDo.getPlanenddate().getTime() +
|
|
|
|
+ jobDetailsVo.getPlanStartTime().getTime() - oldPlanstartdate.getTime()));
|
|
|
|
+ // 增加受影响的工序作业信息
|
|
|
|
+ affectedIdList.addAll(checkProcessingTimeConflict(apsProcessOperationProcessEquDo, oldPlanstartdate,
|
|
|
|
+ oldPlanenddate, oldEquId, apsProcessOperationDo.getProcessway(),new ArrayList<>()));
|
|
|
|
+ }
|
|
|
|
|
|
- // 判断是否存在设备不可用
|
|
|
|
- inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo, apsProcessOperationProcessEquDo.getProcessdeviceid()
|
|
|
|
- , apsProcessOperationProcessEquDo.getPlanstartdate(), apsProcessOperationProcessEquDo.getPlanenddate());
|
|
|
|
|
|
+ // 判断是否存在设备不可用
|
|
|
|
+ inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo, apsProcessOperationProcessEquDo.getProcessdeviceid()
|
|
|
|
+ , apsProcessOperationProcessEquDo.getPlanstartdate(), apsProcessOperationProcessEquDo.getPlanenddate());
|
|
|
|
|
|
- this.updateById(apsProcessOperationProcessEquDo);
|
|
|
|
|
|
+ this.updateById(apsProcessOperationProcessEquDo);
|
|
|
|
+ }
|
|
// 更新坯料交货期
|
|
// 更新坯料交货期
|
|
// apsBlankOrderService.updateBlankDeliveryDate(null, apsProcessOperationDo.getBlankid());
|
|
// apsBlankOrderService.updateBlankDeliveryDate(null, apsProcessOperationDo.getBlankid());
|
|
// affectedIdList.addAll(jobDetailsVo.getReturnAboutIds());
|
|
// affectedIdList.addAll(jobDetailsVo.getReturnAboutIds());
|
|
@@ -704,6 +749,9 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
affectedIdList.addAll(jobDetailsVo.getReturnAboutIds());
|
|
affectedIdList.addAll(jobDetailsVo.getReturnAboutIds());
|
|
List<String> aboutIds= affectedIdList.stream().distinct().collect(Collectors.toList());
|
|
List<String> aboutIds= affectedIdList.stream().distinct().collect(Collectors.toList());
|
|
aboutIds.addAll(apsBlankOrderService.updateBlankDeliveryDate(null, apsProcessOperationDo.getBlankid()));
|
|
aboutIds.addAll(apsBlankOrderService.updateBlankDeliveryDate(null, apsProcessOperationDo.getBlankid()));
|
|
|
|
+ if (!mergeWorkerIdList.isEmpty()){
|
|
|
|
+ aboutIds.addAll(mergeWorkerIdList);
|
|
|
|
+ }
|
|
return R.ok(ganttService.getListById(aboutIds));
|
|
return R.ok(ganttService.getListById(aboutIds));
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1275,6 +1323,12 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
// 获取更新之前的存在冲突的工序作业
|
|
// 获取更新之前的存在冲突的工序作业
|
|
List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId = this.baseMapper.getTimeOverlapByEquId(oldEquId,
|
|
List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId = this.baseMapper.getTimeOverlapByEquId(oldEquId,
|
|
apsProcessOperationProcessEquDo.getId(), oldPlanstartdate, oldPlanenddate, currentProcessWay);
|
|
apsProcessOperationProcessEquDo.getId(), oldPlanstartdate, oldPlanenddate, currentProcessWay);
|
|
|
|
+ log.info("参数旧的的设备id:{}", oldEquId);
|
|
|
|
+ log.info("参数工序作业明细主键:{}", apsProcessOperationProcessEquDo.getId());
|
|
|
|
+ log.info("参数旧的计划开工日期:{}", oldPlanstartdate);
|
|
|
|
+ log.info("参数旧的计划完工日期:{}", oldPlanenddate);
|
|
|
|
+ log.info("参数当前工序作业加工方式:{}", currentProcessWay);
|
|
|
|
+ log.info("获取更新之前的存在冲突的工序作业结果:{}", beforeUpdatingConflictId);
|
|
List<ApsProcessOperationProcessEquDo> aboutProcessEquList = new ArrayList<>();
|
|
List<ApsProcessOperationProcessEquDo> aboutProcessEquList = new ArrayList<>();
|
|
if (!returnAboutIds.isEmpty()){
|
|
if (!returnAboutIds.isEmpty()){
|
|
aboutProcessEquList = (List<ApsProcessOperationProcessEquDo>) apsProcessOperationProcessEquService.listByIds(returnAboutIds);
|
|
aboutProcessEquList = (List<ApsProcessOperationProcessEquDo>) apsProcessOperationProcessEquService.listByIds(returnAboutIds);
|
|
@@ -1296,6 +1350,12 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
apsProcessOperationProcessEquDo.getProcessdeviceid(), apsProcessOperationProcessEquDo.getId(),
|
|
apsProcessOperationProcessEquDo.getProcessdeviceid(), apsProcessOperationProcessEquDo.getId(),
|
|
apsProcessOperationProcessEquDo.getPlanstartdate(), apsProcessOperationProcessEquDo.getPlanenddate(),
|
|
apsProcessOperationProcessEquDo.getPlanstartdate(), apsProcessOperationProcessEquDo.getPlanenddate(),
|
|
currentProcessWay);
|
|
currentProcessWay);
|
|
|
|
+ log.info("参数新的的设备id:{}", apsProcessOperationProcessEquDo.getProcessdeviceid());
|
|
|
|
+ log.info("参数工序作业明细主键:{}", apsProcessOperationProcessEquDo.getId());
|
|
|
|
+ log.info("参数新的计划开工日期:{}", apsProcessOperationProcessEquDo.getPlanstartdate());
|
|
|
|
+ log.info("参数新的计划完工日期:{}", apsProcessOperationProcessEquDo.getPlanenddate());
|
|
|
|
+ log.info("参数当前工序作业加工方式:{}", currentProcessWay);
|
|
|
|
+ log.info("找到更新时间之后存在冲突的工序作业结果:{}", afterTheUpdateConflictId);
|
|
affectedIdList.addAll(afterTheUpdateConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
|
|
affectedIdList.addAll(afterTheUpdateConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
|
|
if (!afterTheUpdateConflictId.isEmpty()) {
|
|
if (!afterTheUpdateConflictId.isEmpty()) {
|
|
apsProcessOperationProcessEquDo.setHasconflict(LOCKMARK_Y);
|
|
apsProcessOperationProcessEquDo.setHasconflict(LOCKMARK_Y);
|