|
@@ -14,8 +14,6 @@ import com.rongwei.bscommon.sys.service.*;
|
|
|
import com.rongwei.bscommon.sys.utils.ApsUtils;
|
|
|
import com.rongwei.bsentity.domain.*;
|
|
|
import com.rongwei.bsentity.vo.*;
|
|
|
-import com.rongwei.rwadmincommon.system.domain.SysOrganizationDo;
|
|
|
-import com.rongwei.rwadmincommon.system.vo.SysOrganizationVo;
|
|
|
import com.rongwei.rwadmincommon.system.vo.SysUserVo;
|
|
|
import com.rongwei.rwcommon.base.R;
|
|
|
import com.rongwei.rwcommon.utils.SecurityUtil;
|
|
@@ -34,11 +32,10 @@ import java.util.*;
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
-import static com.rongwei.safecommon.utils.SaveConstans.ConflictDescription.CONFLICTING_PROCESSING_TIMES;
|
|
|
+import static com.rongwei.safecommon.utils.SaveConstans.ForcedConflictsDescription.CONFLICTING_PROCESSING_TIMES;
|
|
|
import static com.rongwei.safecommon.utils.SaveConstans.JobStatus.*;
|
|
|
import static com.rongwei.safecommon.utils.SaveConstans.LockmarkType.LOCKMARK_N;
|
|
|
import static com.rongwei.safecommon.utils.SaveConstans.LockmarkType.LOCKMARK_Y;
|
|
|
-import static com.rongwei.safecommon.utils.SaveConstans.MINUS_ONE;
|
|
|
import static com.rongwei.safecommon.utils.SaveConstans.ProductionStatus.*;
|
|
|
|
|
|
/**
|
|
@@ -391,39 +388,26 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
// 找到更新时间之后存在冲突的工序作业
|
|
|
List<ApsProcessOperationProcessEquDo> afterTheUpdateConflictId = this.baseMapper.getConflictId(changeStartTimeVo.getQeuId(), changeStartTimeVo.getId(),
|
|
|
changeStartTimeVo.getPlanStartTime(), changeStartTimeVo.getPlanEndTime());
|
|
|
- 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()) {
|
|
|
processEquDo.setHasconflict(LOCKMARK_Y);
|
|
|
- processEquDo.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);
|
|
|
+ // 更当前工序作业增加新的冲突
|
|
|
+ String newConflictsDesc = addNewConflictsDesc(processEquDo.getConflictdes(), CONFLICTING_PROCESSING_TIMES);
|
|
|
+ processEquDo.setConflictdes(newConflictsDesc);
|
|
|
+ updateProcessEquAfterAddConflictsDesc(afterTheUpdateConflictId,CONFLICTING_PROCESSING_TIMES);
|
|
|
+ }else{
|
|
|
+ String newConflictsDesc = removeConflictsDesc(processEquDo.getConflictdes(), CONFLICTING_PROCESSING_TIMES);
|
|
|
+ processEquDo.setConflictdes(newConflictsDesc);
|
|
|
+ processEquDo.setHasconflict(StringUtils.isBlank(processEquDo.getConflictdes()) &&
|
|
|
+ StringUtils.isBlank(processEquDo.getSoftconflictdes()) ?
|
|
|
+ LOCKMARK_N : LOCKMARK_Y);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!beforeUpdatingConflictId.isEmpty()) {
|
|
|
+ updateProcessEquBeforeAddConflictsDesc(beforeUpdatingConflictId,CONFLICTING_PROCESSING_TIMES);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
processEquDo.setPlanstartdate(changeStartTimeVo.getPlanStartTime());
|
|
|
processEquDo.setPlanenddate(changeStartTimeVo.getPlanEndTime());
|
|
|
this.updateById(processEquDo);
|
|
@@ -496,39 +480,26 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
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);
|
|
|
- }
|
|
|
- });
|
|
|
+ // 更当前工序作业增加新的冲突
|
|
|
+ String newConflictsDesc = addNewConflictsDesc(apsProcessOperationProcessEquDo.getConflictdes(), CONFLICTING_PROCESSING_TIMES);
|
|
|
+ apsProcessOperationProcessEquDo.setConflictdes(newConflictsDesc);
|
|
|
+ updateProcessEquAfterAddConflictsDesc(afterTheUpdateConflictId,CONFLICTING_PROCESSING_TIMES);
|
|
|
this.updateBatchById(afterTheUpdateConflictId);
|
|
|
+ }else{
|
|
|
+ // 更当前工序作业增加新的冲突
|
|
|
+ String newConflictsDesc = removeConflictsDesc(apsProcessOperationProcessEquDo.getConflictdes(), CONFLICTING_PROCESSING_TIMES);
|
|
|
+ apsProcessOperationProcessEquDo.setConflictdes(newConflictsDesc);
|
|
|
+ apsProcessOperationProcessEquDo.setHasconflict(StringUtils.isBlank(apsProcessOperationProcessEquDo.getConflictdes()) &&
|
|
|
+ StringUtils.isBlank(apsProcessOperationProcessEquDo.getSoftconflictdes()) ?
|
|
|
+ LOCKMARK_N : LOCKMARK_Y);
|
|
|
}
|
|
|
+
|
|
|
+ if (!beforeUpdatingConflictId.isEmpty()) {
|
|
|
+ updateProcessEquBeforeAddConflictsDesc(beforeUpdatingConflictId,CONFLICTING_PROCESSING_TIMES);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
this.updateById(apsProcessOperationProcessEquDo);
|
|
|
return R.ok();
|
|
@@ -689,6 +660,82 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新设备或者时间之后 更新冲突描述
|
|
|
+ * @param beforeUpdatingConflictId 当前作业更新设备或者时间之后与该作业存在冲突的工序作业信息
|
|
|
+ * @param removeConflictsDesc 需要被删除的冲突描述
|
|
|
+ */
|
|
|
+ public void updateProcessEquBeforeAddConflictsDesc(List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId,
|
|
|
+ String removeConflictsDesc) {
|
|
|
+ if (beforeUpdatingConflictId.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ beforeUpdatingConflictId.forEach(info->{
|
|
|
+ // 判断是否和其他工序作业明细存在从头
|
|
|
+ List<ApsProcessOperationProcessEquDo> conflictId = this.baseMapper.getConflictId(info.getProcessdeviceid(), info.getId(), info.getPlanstartdate(), info.getPlanenddate());
|
|
|
+ if(!conflictId.isEmpty()){
|
|
|
+ info.setConflictdes(removeConflictsDesc(info.getConflictdes(), removeConflictsDesc));
|
|
|
+ info.setHasconflict(StringUtils.isBlank(info.getConflictdes()) &&
|
|
|
+ StringUtils.isBlank(info.getSoftconflictdes()) ?
|
|
|
+ LOCKMARK_N : LOCKMARK_Y);
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ this.updateBatchById(beforeUpdatingConflictId);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新设备或者时间之后 更新冲突描述
|
|
|
+ * @param afterTheUpdateConflictId 当前作业更新设备或者时间之后与该作业存在冲突的工序作业信息
|
|
|
+ * @param conflictsDesc 冲突描述
|
|
|
+ */
|
|
|
+ public void updateProcessEquAfterAddConflictsDesc(List<ApsProcessOperationProcessEquDo> afterTheUpdateConflictId,
|
|
|
+ String conflictsDesc) {
|
|
|
+ if (afterTheUpdateConflictId.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ afterTheUpdateConflictId.forEach(info -> {
|
|
|
+ String newConflictsDesc = addNewConflictsDesc(info.getConflictdes(), conflictsDesc);
|
|
|
+ info.setConflictdes(newConflictsDesc);
|
|
|
+ info.setHasconflict(StringUtils.isBlank(info.getConflictdes()) && StringUtils.isBlank(info.getSoftconflictdes()) ?
|
|
|
+ LOCKMARK_N : LOCKMARK_Y);
|
|
|
+ });
|
|
|
+ this.updateBatchById(afterTheUpdateConflictId);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 增加 新的冲突
|
|
|
+ * @param oldConflictDesc 工序作业的旧冲突
|
|
|
+ * @param newConflictDesc 需要新增的冲突
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String addNewConflictsDesc(String oldConflictDesc, String newConflictDesc){
|
|
|
+ if(StringUtils.isBlank(oldConflictDesc)){
|
|
|
+ return newConflictDesc;
|
|
|
+ }
|
|
|
+ List<String> conflictdeList = new ArrayList<>(Arrays.asList(oldConflictDesc.split(";")));
|
|
|
+ if (!conflictdeList.contains(newConflictDesc)) {
|
|
|
+ conflictdeList.add(newConflictDesc);
|
|
|
+ }
|
|
|
+ return CollUtil.join(conflictdeList, ";");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除旧冲突
|
|
|
+ * @param oldConflictDesc 工序作业的旧冲突
|
|
|
+ * @param removeConflictDesc 需要删除的冲突
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String removeConflictsDesc(String oldConflictDesc, String removeConflictDesc){
|
|
|
+ if(StringUtils.isBlank(oldConflictDesc)){
|
|
|
+ return oldConflictDesc;
|
|
|
+ }
|
|
|
+ List<String> conflictdeList = new ArrayList<>(Arrays.asList(oldConflictDesc.split(";")));
|
|
|
+ conflictdeList.remove(removeConflictDesc);
|
|
|
+ return CollUtil.join(conflictdeList, ";");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|