|
@@ -394,7 +394,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
}
|
|
|
// 获取更新之前的存在冲突的工序作业
|
|
|
List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId = this.baseMapper.getConflictId(changeStartTimeVo.getQeuId(), changeStartTimeVo.getId(),
|
|
|
- changeStartTimeVo.getPlanStartTime(), changeStartTimeVo.getPlanEndTime());
|
|
|
+ processEquDo.getPlanstartdate(), processEquDo.getPlanenddate());
|
|
|
|
|
|
// 找到更新时间之后存在冲突的工序作业
|
|
|
List<ApsProcessOperationProcessEquDo> afterTheUpdateConflictId = this.baseMapper.getConflictId(changeStartTimeVo.getQeuId(), changeStartTimeVo.getId(),
|
|
@@ -439,6 +439,109 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
return R.ok();
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新工序作业明细
|
|
|
+ *
|
|
|
+ * @param jobDetailsVo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public R updateDetails(JobDetailsVo jobDetailsVo) {
|
|
|
+ String id = jobDetailsVo.getId();
|
|
|
+ if (StringUtils.isBlank(id)) {
|
|
|
+ log.error("工序作业ID 必传");
|
|
|
+ return R.error("参数异常");
|
|
|
+ }
|
|
|
+ ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = this.getById(id);
|
|
|
+ if (apsProcessOperationProcessEquDo == null) {
|
|
|
+ log.error("无法根据ID:{}获取到工序作业明细", id);
|
|
|
+ return R.error("无法获取到工序作业信息");
|
|
|
+ }
|
|
|
+ if (!JOBSTATUS_TO_BE_START.equals(apsProcessOperationProcessEquDo.getWorkstatus())) {
|
|
|
+ log.error("当前工序作业已开工");
|
|
|
+ return R.error("当前工序作业已开工无法更新工序作业信息");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(apsProcessOperationProcessEquDo.getProcessid())) {
|
|
|
+ log.error("工序作业明细对应工序作业ID为空");
|
|
|
+ return R.error("无法获取作业明细对应的工序作业");
|
|
|
+ }
|
|
|
+ // 判断工序作业是否待发布
|
|
|
+ ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(apsProcessOperationProcessEquDo.getProcessid());
|
|
|
+ if (apsProcessOperationDo == null) {
|
|
|
+ log.error("根据ID:{} 获取工序作业失败", apsProcessOperationProcessEquDo.getProcessid());
|
|
|
+ }
|
|
|
+ if (!TO_BE_PUBLISHED.equals(apsProcessOperationDo.getProcessstatus())) {
|
|
|
+ log.error("工序作业状态:{}异常",apsProcessOperationDo.getProcessstatus());
|
|
|
+ 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(DateUtil.offsetSecond(apsProcessOperationProcessEquDo.getPlanenddate(), (int) timeInterval));
|
|
|
+ // 获取更新之前的存在冲突的工序作业
|
|
|
+ List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId = this.baseMapper.getConflictId(
|
|
|
+ oldEquId, id, oldPlanstartdate, oldPlanenddate);
|
|
|
+ // 找到更新时间之后存在冲突的工序作业
|
|
|
+ List<ApsProcessOperationProcessEquDo> afterTheUpdateConflictId = this.baseMapper.getConflictId(
|
|
|
+ apsProcessOperationProcessEquDo.getProcessdeviceid(), id,
|
|
|
+ apsProcessOperationProcessEquDo.getPlanstartdate(), apsProcessOperationProcessEquDo.getPlanenddate());
|
|
|
+
|
|
|
+ if (!beforeUpdatingConflictId.isEmpty()) {
|
|
|
+ beforeUpdatingConflictId.forEach(info -> {
|
|
|
+ String conflictdes = info.getConflictdes();
|
|
|
+ if (StringUtils.isNotBlank(conflictdes)) {
|
|
|
+ List<String> conflictdeList = new ArrayList<>(Arrays.asList(conflictdes.split(",")));
|
|
|
+ // 删除加工时间冲突描述
|
|
|
+ conflictdeList.remove(CONFLICTING_PROCESSING_TIMES);
|
|
|
+ if (conflictdeList.isEmpty()) {
|
|
|
+ info.setHasconflict(LOCKMARK_N);
|
|
|
+ }
|
|
|
+ info.setConflictdes(CollUtil.join(conflictdeList, ","));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.updateBatchById(beforeUpdatingConflictId);
|
|
|
+ }
|
|
|
+ if (!afterTheUpdateConflictId.isEmpty()) {
|
|
|
+ apsProcessOperationProcessEquDo.setHasconflict(LOCKMARK_Y);
|
|
|
+ apsProcessOperationProcessEquDo.setConflictdes(CONFLICTING_PROCESSING_TIMES);
|
|
|
+ afterTheUpdateConflictId.forEach(info -> {
|
|
|
+ info.setHasconflict(LOCKMARK_Y);
|
|
|
+ String conflictdes = info.getConflictdes();
|
|
|
+ if (StringUtils.isNotBlank(conflictdes)) {
|
|
|
+ List<String> conflictdeList = new ArrayList<>(Arrays.asList(conflictdes.split(",")));
|
|
|
+ if (!conflictdeList.contains(CONFLICTING_PROCESSING_TIMES)) {
|
|
|
+ conflictdeList.add(CONFLICTING_PROCESSING_TIMES);
|
|
|
+ }
|
|
|
+ info.setConflictdes(CollUtil.join(conflictdeList, ","));
|
|
|
+ } else {
|
|
|
+ info.setConflictdes(CONFLICTING_PROCESSING_TIMES);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.updateBatchById(afterTheUpdateConflictId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.updateById(apsProcessOperationProcessEquDo);
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
private void updateBlank(String processOperationId) {
|
|
|
//查询此工序的所属订单ID
|
|
|
String orderId = this.baseMapper.selectOrderIdByProcessOperationId(processOperationId);
|