소스 검색

Merge remote-tracking branch 'origin/mode-min-unit' into mode-min-unit

fangpy 1 년 전
부모
커밋
5785d432e1

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 11 - 3
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationDao.java


+ 12 - 11
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsBlankOrderServiceImpl.java

@@ -596,7 +596,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                     apsProcessOperationProcessEqu.setPlanenddate(Date.from(process.getEndTime().atZone(ZoneId.systemDefault()).toInstant()));
                     if ("小卷成退".equals(process.getProcessType()) || "小卷包装".equals(process.getProcessType())) {
                         apsProcessOperationProcessEqu.setPlanprocessrall(process.getMinThPcNum());
-                    }else{
+                    } else {
                         apsProcessOperationProcessEqu.setPlanprocessrall(process.getOpeProducePcNum());
                     }
                     apsProcessOperationProcessEqu.setHasconflict(process.getHasConflict());
@@ -1933,6 +1933,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                  */
                 if (secondroll > apsProcessOperationDo.getCancelroll()) {
                     CancelProcessOperationVo cancelProcessOperationVo = new CancelProcessOperationVo();
+                    apsProcessOperationDo.setSecondroll(secondroll);
                     cancelProcessOperationVo.setApsprocessoperationdo(apsProcessOperationDo);
                     cancelProcessOperationVo.setCurcancelroll(1);
                     R r = apsProcessOperationService.cancelProcessOperation(cancelProcessOperationVo);
@@ -2550,7 +2551,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         if (blankDeliveryDate.isEmpty()) {
             return;
         }
-        if(blankDeliveryDate.size()==1){
+        if (blankDeliveryDate.size() == 1) {
             blankDeliveryDate.add(blankDeliveryDate.get(0));
         }
         // 排程交货期-起
@@ -2564,26 +2565,26 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                 .set(apsBlankOrderDo.getPromisedateend() == null, ApsBlankOrderDo::getPromisedateend, timeAddHour(endDate, 48)));
         apsBlankOrderDo.setPromisedatestart(timeAddHour(startDate, 48));
         apsBlankOrderDo.setPromisedateend(timeAddHour(endDate, 48));
-        List<String> updateIds= new ArrayList<>();
-        if(startDate.compareTo(apsBlankOrderDo.getPromisedatestart())>0){
+        List<String> updateIds = new ArrayList<>();
+        if (startDate.compareTo(apsBlankOrderDo.getPromisedatestart()) > 0) {
             updateIds.add(blankDeliveryDate.get(0).getId());
         }
-        if(endDate.compareTo(apsBlankOrderDo.getPromisedateend())>0){
+        if (endDate.compareTo(apsBlankOrderDo.getPromisedateend()) > 0) {
             updateIds.add(blankDeliveryDate.get(1).getId());
         }
-        if(updateIds.isEmpty()){
+        if (updateIds.isEmpty()) {
             return;
         }
         List<ApsProcessOperationProcessEquBackupDo> equBackupDos = apsProcessOperationProcessEquBackupDao.selectBatchIds(updateIds);
-        equBackupDos.forEach(data->{
-            data.setConflictdes(addNewConflictsDesc(data.getConflictdes(),EXCEEDING_THE_PROMISED_DELIVERY_DEADLINE));
-            if(StringUtils.isBlank(data.getConflictdes())&& StringUtils.isBlank(data.getSoftconflictdes())){
+        equBackupDos.forEach(data -> {
+            data.setConflictdes(addNewConflictsDesc(data.getConflictdes(), EXCEEDING_THE_PROMISED_DELIVERY_DEADLINE));
+            if (StringUtils.isBlank(data.getConflictdes()) && StringUtils.isBlank(data.getSoftconflictdes())) {
                 data.setHasconflict("n");
-            }else{
+            } else {
                 data.setHasconflict("y");
             }
         });
-        if(!equBackupDos.isEmpty()){
+        if (!equBackupDos.isEmpty()) {
             apsProcessOperationProcessEquBackupService.updateBatchById(equBackupDos);
         }
 

+ 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;
     }

+ 38 - 33
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationServiceImpl.java

@@ -1927,45 +1927,50 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
             //本道工序的作业明细
             List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = apsProcessOperationDao.getProcessOperationProcessEqus(apsProcessOperationDo.getId());
-            Integer equWaitCancelRoll = curcancelroll;//明细的待分配取消卷数
-            Integer curEquCancelRoll = 0;//作业明细本次取消卷数
-            for (ApsProcessOperationProcessEquDo processOperationProcessEquDo : apsProcessOperationProcessEquDos) {
-                if (equWaitCancelRoll > 0) {
+            if (cancelProcessOperationVo.getUpdatecuropration()) {
+                Integer equWaitCancelRoll = curcancelroll;//明细的待分配取消卷数
+                Integer curEquCancelRoll = 0;//作业明细本次取消卷数
+                for (ApsProcessOperationProcessEquDo processOperationProcessEquDo : apsProcessOperationProcessEquDos) {
                     Integer tempRoll = processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getStartingroll() - processOperationProcessEquDo.getCancelroll();
-                    if (tempRoll >= equWaitCancelRoll) {
-                        curEquCancelRoll = equWaitCancelRoll;
-                    } else {
-                        curEquCancelRoll = tempRoll;
-                    }
-                    processOperationProcessEquDo.setCancelroll(processOperationProcessEquDo.getCancelroll() + curEquCancelRoll);
-                    if (processOperationProcessEquDo.getPlanprocessrall() == processOperationProcessEquDo.getCancelroll()) {
-                        processOperationProcessEquDo.setProcessdevice("");
-                        processOperationProcessEquDo.setProcessdeviceid("");
-                    } else if (processOperationProcessEquDo.getPlanprocessrall() > processOperationProcessEquDo.getCancelroll()) {
-                        BigDecimal addMinute = apsProcessOperationDo.getOnceprocessmin().multiply(new BigDecimal(60)).multiply(new BigDecimal(processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getCancelroll()));//秒向上取整
-                        Calendar calendar = Calendar.getInstance();
-                        calendar.setTime(processOperationProcessEquDo.getPlanstartdate());
-                        calendar.add(Calendar.SECOND, addMinute.setScale(0, RoundingMode.UP).intValue());
-                        processOperationProcessEquDo.setPlanenddate(calendar.getTime());
+                    if (tempRoll <= 0) {
+                        continue;
                     }
-                    if (processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getReportroll() - processOperationProcessEquDo.getCancelroll() == 0) {
-                        processOperationProcessEquDo.setClosestatus(SaveConstans.CloseStatus.COMPLETED);
-                        processOperationProcessEquDo.setActualfinishdate(DateUtil.date());
-                        processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_END);
-                    } else if (processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getReportroll() - processOperationProcessEquDo.getCancelroll() > 0) {
-                        processOperationProcessEquDo.setClosestatus(SaveConstans.CloseStatus.UNFINISHED);
-                        if (processOperationProcessEquDo.getStartingroll() == 0) {
-                            processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_START);
+                    if (equWaitCancelRoll > 0) {
+                        if (tempRoll >= equWaitCancelRoll) {
+                            curEquCancelRoll = equWaitCancelRoll;
                         } else {
-                            processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_STARTING);
+                            curEquCancelRoll = tempRoll;
+                        }
+                        processOperationProcessEquDo.setCancelroll(processOperationProcessEquDo.getCancelroll() + curEquCancelRoll);
+                        if (processOperationProcessEquDo.getPlanprocessrall() == processOperationProcessEquDo.getCancelroll()) {
+                            processOperationProcessEquDo.setProcessdevice("");
+                            processOperationProcessEquDo.setProcessdeviceid("");
+                        } else if (processOperationProcessEquDo.getPlanprocessrall() > processOperationProcessEquDo.getCancelroll()) {
+                            BigDecimal addMinute = apsProcessOperationDo.getOnceprocessmin().multiply(new BigDecimal(60)).multiply(new BigDecimal(processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getCancelroll()));//秒向上取整
+                            Calendar calendar = Calendar.getInstance();
+                            calendar.setTime(processOperationProcessEquDo.getPlanstartdate());
+                            calendar.add(Calendar.SECOND, addMinute.setScale(0, RoundingMode.UP).intValue());
+                            processOperationProcessEquDo.setPlanenddate(calendar.getTime());
+                        }
+                        if (processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getReportroll() - processOperationProcessEquDo.getCancelroll() == 0) {
+                            processOperationProcessEquDo.setClosestatus(SaveConstans.CloseStatus.COMPLETED);
+                            processOperationProcessEquDo.setActualfinishdate(DateUtil.date());
+                            processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_END);
+                        } else if (processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getReportroll() - processOperationProcessEquDo.getCancelroll() > 0) {
+                            processOperationProcessEquDo.setClosestatus(SaveConstans.CloseStatus.UNFINISHED);
+                            if (processOperationProcessEquDo.getStartingroll() == 0) {
+                                processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_START);
+                            } else {
+                                processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_STARTING);
+                            }
                         }
+                    } else {
+                        break;
                     }
-                } else {
-                    break;
-                }
-                equWaitCancelRoll = equWaitCancelRoll - curEquCancelRoll;
+                    equWaitCancelRoll = equWaitCancelRoll - curEquCancelRoll;
 
-                apsProcessOperationProcessEquDoList.add(processOperationProcessEquDo);
+                    apsProcessOperationProcessEquDoList.add(processOperationProcessEquDo);
+                }
             }
 
             //作业计划开工时间=所有作业明细最早计划开工时间

+ 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()));
                 }

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

@@ -175,7 +175,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                 throw new RuntimeException("报工记录的批次号为空");
             }
             // inputBatchNum
-            int count = (int)Arrays.stream(batchnumber.split(",")).distinct().filter(StringUtils::isNotBlank).count();
+            int count = (int) Arrays.stream(batchnumber.split(",")).distinct().filter(StringUtils::isNotBlank).count();
             currentProcessOperationMainDo.setCheckoutroll(currentProcessOperationMainDo.getCheckoutroll() + count);
             currentProcessOperationEqu.setCheckoutroll(currentProcessOperationEqu.getCheckoutroll() + count);
         } else {
@@ -536,6 +536,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
             cancelProcessOperationVo.setCurcancelroll(unqualifiedCount);
             cancelProcessOperationVo.setApsprocessoperationdo(currentProcessOperationMainDo);
             cancelProcessOperationVo.setSetincancelroll(false);
+            cancelProcessOperationVo.setUpdatecuropration(false);
             apsProcessOperationService.cancelProcessOperation(cancelProcessOperationVo);
         }
         log.info("更新工序作业的输出物料和在制品相关信息结束");

+ 2 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/CancelProcessOperationVo.java

@@ -11,6 +11,8 @@ public class CancelProcessOperationVo {
     private Integer curcancelroll;
     //是否更新输入已取消卷数
     private Boolean setincancelroll = true;
+    //是否更新本道作业明细
+    private Boolean updatecuropration = true;
     //修改的作业
     private ApsProcessOperationDo apsprocessoperationdo;
 }

+ 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;
+}