xiahan 1 год назад
Родитель
Сommit
b13923b10e

+ 43 - 16
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationProcessEquServiceImpl.java

@@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.rongwei.bscommon.sys.dao.ApsProcessOperationProcessEquDao;
@@ -486,7 +487,11 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
         /// 设计到修改的工序作业ID
         ApsUtils.checkScheduling(null);
         List<String> affectedIdList = new ArrayList<>();
-        changeStartTimeVos.forEach(changeStartTimeVo -> {
+        List<UpdateConflictVo> updateConflictVos= new ArrayList<>();
+        Set <String> blankIdSet = new HashSet<>();
+        UpdateConflictVo vo;
+        for (ChangeStartTimeVo changeStartTimeVo : changeStartTimeVos) {
+            vo = new UpdateConflictVo();
             String id = changeStartTimeVo.getId();
             affectedIdList.add(id);
             ApsProcessOperationProcessEquDo processEquDo = this.getById(id);
@@ -499,21 +504,35 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 log.error("该作业已发布,不能调整开工时间");
                 throw new RuntimeException("该作业已发布,不能调整开工时间");
             }
+            blankIdSet.add(operationDo.getBlankid());
             // 当前工序的加工方式
-            String processway = operationDo.getProcessway();
-            Date oldPlanStartdate = processEquDo.getPlanstartdate();
-            Date oldPlanEnddate = processEquDo.getPlanenddate();
-
             processEquDo.setPlanstartdate(changeStartTimeVo.getPlanStartTime());
             processEquDo.setPlanenddate(changeStartTimeVo.getPlanEndTime());
-            affectedIdList.addAll(checkProcessingTimeConflict(processEquDo, oldPlanStartdate, oldPlanEnddate, processway));
-
+            vo.setApsProcessOperationProcessEquDo(processEquDo);
+            vo.setOldEquId(changeStartTimeVo.getEquId());
+            vo.setOldPlanEnddate(processEquDo.getPlanstartdate());
+            vo.setCurrentProcessWay( operationDo.getProcessway());
+            vo.setOldPlanStartdate(processEquDo.getPlanenddate());
+            updateConflictVos.add(vo);
+            this.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
+                    .eq(ApsProcessOperationProcessEquDo::getId,id)
+                    .set(ApsProcessOperationProcessEquDo::getPlanstartdate,changeStartTimeVo.getPlanStartTime())
+                    .set(ApsProcessOperationProcessEquDo::getPlanenddate,changeStartTimeVo.getPlanEndTime())
+            );
+        }
+        updateConflictVos.forEach(data->{
+            ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = data.getApsProcessOperationProcessEquDo();
+            affectedIdList.addAll(checkProcessingTimeConflict(apsProcessOperationProcessEquDo,
+                    data.getOldPlanStartdate(), data.getOldPlanEnddate(), data.getCurrentProcessWay()));
             // 判断是否存在设备不可用
-            inspectionEquipmentIsAvailable(processEquDo, changeStartTimeVo.getEquId(), changeStartTimeVo.getPlanStartTime()
-                    , changeStartTimeVo.getPlanEndTime());
-            this.updateById(processEquDo);
+            inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo,
+                    apsProcessOperationProcessEquDo.getProcessdeviceid(),
+                    apsProcessOperationProcessEquDo.getPlanstartdate(),
+                    apsProcessOperationProcessEquDo.getPlanenddate());
+        });
+        blankIdSet.forEach(blankId->{
             // 更新坯料交货期
-            apsBlankOrderService. updateBlankDeliveryDate(null,operationDo.getBlankid());
+            apsBlankOrderService.updateBlankDeliveryDate(null, blankId);
         });
         // 返回受影响的数据
         return R.ok(this.ganttService.getListById(affectedIdList));
@@ -810,9 +829,9 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
         if (StringUtils.isBlank(oldConflictDesc)) {
             return oldConflictDesc;
         }
-        List<String> conflictdeList = new ArrayList<>(Arrays.asList(oldConflictDesc.split(";")));
+        List<String> conflictdeList = new ArrayList<>(Arrays.asList(oldConflictDesc.split(",")));
         conflictdeList.remove(removeConflictDesc);
-        return CollUtil.join(conflictdeList, ";");
+        return conflictdeList.stream().distinct().collect(Collectors.joining( ","));
     }
 
     /**
@@ -836,8 +855,12 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
         } else {
             newConflictdes = addNewConflictsDesc(processEquDo.getConflictdes(), EQUIPMENT_RUN_TIME);
         }
-        processEquDo.setConflictdes(newConflictdes);
-        processEquDo.setHasconflict(StringUtils.isBlank(newConflictdes) && StringUtils.isBlank(processEquDo.getSoftconflictdes()) ? LOCKMARK_N : LOCKMARK_Y);
+        this.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
+                .eq(ApsProcessOperationProcessEquDo::getId,processEquDo.getId())
+                .set(ApsProcessOperationProcessEquDo::getConflictdes,newConflictdes)
+                .set(ApsProcessOperationProcessEquDo::getHasconflict,StringUtils.isBlank(newConflictdes) &&
+                        StringUtils.isBlank(processEquDo.getSoftconflictdes()) ? LOCKMARK_N : LOCKMARK_Y)
+        );
     }
 
     /**
@@ -883,7 +906,11 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
             apsProcessOperationProcessEquDo.setHasconflict(StringUtils.isBlank(apsProcessOperationProcessEquDo.getConflictdes()) &&
                     StringUtils.isBlank(apsProcessOperationProcessEquDo.getSoftconflictdes()) ?
                     LOCKMARK_N : LOCKMARK_Y);
-            this.updateById(apsProcessOperationProcessEquDo);
+            this.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
+                    .eq(ApsProcessOperationProcessEquDo::getId,apsProcessOperationProcessEquDo.getId())
+                    .set(ApsProcessOperationProcessEquDo::getConflictdes,newConflictsDesc)
+                    .set(ApsProcessOperationProcessEquDo::getHasconflict,apsProcessOperationProcessEquDo.getHasconflict())
+            );
         }
         return affectedIdList;
     }

+ 2 - 2
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/GanttServiceImpl.java

@@ -383,9 +383,9 @@ public class GanttServiceImpl implements GanttService {
                 // 冲突描述
                 List<GanttVos> conflictdes = ganttVos.stream().filter(v -> StringUtils.isNotBlank(v.getConflictdes())).collect(Collectors.toList());
                 if (!conflictdes.isEmpty()) {
-                    String desc = conflictdes.stream().map(GanttVos::getConflictdes).collect(Collectors.joining(";"));
+                    String desc = conflictdes.stream().map(GanttVos::getConflictdes).distinct().collect(Collectors.joining(";"));
                     dateVo.setConflictdes(desc);
-                    dateVo.setSoftconflictdes(conflictdes.stream().map(GanttVos::getSoftconflictdes).collect(Collectors.joining(";")));
+                    dateVo.setSoftconflictdes(conflictdes.stream().map(GanttVos::getSoftconflictdes).distinct().collect(Collectors.joining(";")));
                     // 有冲突描述时
                     dateVo.setConflict(StringUtils.isBlank(dateVo.getConflictdes()) && StringUtils.isBlank(dateVo.getSoftconflictdes()));
                 }

+ 21 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/UpdateConflictVo.java

@@ -0,0 +1,21 @@
+package com.rongwei.bsentity.vo;
+
+import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * UpdateConflictVo class
+ *
+ * @author XH
+ * @date 2024/08/12
+ */
+@Data
+public class UpdateConflictVo {
+    private ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo;
+    private String oldEquId;
+    private Date oldPlanStartdate;
+    private Date oldPlanEnddate;
+    private String currentProcessWay;
+}