Prechádzať zdrojové kódy

被取消的作业明细的前道作业明细的后道作业ID要清空

DLC 6 mesiacov pred
rodič
commit
1439556b08

+ 3 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationDao.java

@@ -114,4 +114,7 @@ public interface ApsProcessOperationDao extends BaseMapper<ApsProcessOperationDo
             "\tand e.RESOURCEID=#{resourceid} ${levelStr}")
     void updateZJProcessEqu(@Param("blanckid") String blanckid, @Param("resourceid") String resourceid, @Param("levelStr") String levelStr, @Param("rollerid") String rollerid, @Param("rollertype") String rollertype, @Param("level") String level);
 
+    @Select("SELECT * FROM aps_process_operation_process_equ WHERE DELETED = 0 AND BLANKID = #{blankid} and IFNULL(NEXTPROCESSESIDS,'')!=''")
+    List<ApsProcessOperationProcessEquDo> getNextOperationProcessEqus(@Param("blankid") String blankid);
+
 }

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

@@ -3,6 +3,7 @@ package com.rongwei.bscommon.sys.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.domain.ApsProcessOperationDo;
 import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
+import com.rongwei.bsentity.vo.CancelOperationProcessEquVo;
 import com.rongwei.bsentity.vo.CancelProcessOperationVo;
 import com.rongwei.bsentity.vo.ResetProcessOperationVo;
 import com.rongwei.rwcommon.base.R;
@@ -53,5 +54,5 @@ public interface ApsProcessOperationService extends IService<ApsProcessOperation
 
     R cancelProcessOperation(CancelProcessOperationVo cancelProcessOperationVo);
 
-    R cancelProcessOperationEqu(Integer curEquCancelRoll, ApsProcessOperationDo apsProcessOperationDo, ApsProcessOperationProcessEquDo processOperationProcessEquDo, String bhgCancel);
+    R cancelProcessOperationEqu(CancelOperationProcessEquVo cancelOperationProcessEquVo);
 }

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

@@ -31,7 +31,6 @@ import com.rongwei.rwcommon.vo.SearchColumnVo;
 import com.rongwei.rwcommon.vo.SearchOrderVo;
 import com.rongwei.safecommon.utils.CXCommonUtils;
 import com.rongwei.safecommon.utils.SaveConstans;
-import org.apache.commons.collections.list.SynchronizedList;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -44,7 +43,6 @@ import java.math.RoundingMode;
 import java.text.Collator;
 import java.time.ZoneId;
 import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
 import static com.rongwei.bscommon.sys.service.impl.ApsProductionOrderServiceImpl.ERROR_MSG;
@@ -962,7 +960,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
 
             //更新生产状态为“待发布”(20)
             List<ApsBlankOrderVo> toupstatus = apsBlankOrders.stream().filter(v ->
-                            blankids.contains(v.getId()) && (StringUtils.isBlank(v.getIfcp()) || "N".equals(v.getIfcp())))
+                    blankids.contains(v.getId()) && (StringUtils.isBlank(v.getIfcp()) || "N".equals(v.getIfcp())))
                     .collect(Collectors.toList());
             updateProductStatusByOrderIds(toupstatus);
             // 自动加锁坯料计划下的工序作业
@@ -3681,7 +3679,12 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                  */
                 if (secondroll > needBorrowOperationEqu.getCancelrollno()) {
                     needBorrowOperationEqu.setSecondroll(secondroll);
-                    R r = apsProcessOperationService.cancelProcessOperationEqu(1, needBorrowOperation, needBorrowOperationEqu, "1");
+                    CancelOperationProcessEquVo cancelOperationProcessEquVo = new CancelOperationProcessEquVo();
+                    cancelOperationProcessEquVo.setCurEquCancelRoll(1);
+                    cancelOperationProcessEquVo.setApsProcessOperationDo(needBorrowOperation);
+                    cancelOperationProcessEquVo.setProcessOperationProcessEquDo(needBorrowOperationEqu);
+                    cancelOperationProcessEquVo.setCancelreason("1");
+                    R r = apsProcessOperationService.cancelProcessOperationEqu(cancelOperationProcessEquVo);
                     if (!r.getCode().equals("200")) {
                         throw new CustomException(r.getMsg());
                     }

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

@@ -2206,7 +2206,12 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             curEquCancelRoll = tempRoll;
                         }
                         //取消和更新作业明细
-                        cancelProcessOperationEqu(curEquCancelRoll, apsProcessOperationDo, processOperationProcessEquDo, cancelProcessOperationVo.getCancelreason());
+                        CancelOperationProcessEquVo cancelOperationProcessEquVo = new CancelOperationProcessEquVo();
+                        cancelOperationProcessEquVo.setCurEquCancelRoll(curEquCancelRoll);
+                        cancelOperationProcessEquVo.setApsProcessOperationDo(apsProcessOperationDo);
+                        cancelOperationProcessEquVo.setProcessOperationProcessEquDo(processOperationProcessEquDo);
+                        cancelOperationProcessEquVo.setCancelreason(cancelProcessOperationVo.getCancelreason());
+                        cancelProcessOperationEqu(cancelOperationProcessEquVo);
                     } else {
                         break;
                     }
@@ -2281,15 +2286,13 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         }
     }
 
-    /*
-    分配和取消作业明细
-    curEquCancelRoll:作业明细本次取消卷数
-    apsProcessOperationDo:当前作业
-    processOperationProcessEquDo:作业明细
-    cancelreason:取消原因
-     */
+    //分配和取消作业明细
     @Transactional
-    public R cancelProcessOperationEqu(Integer curEquCancelRoll, ApsProcessOperationDo apsProcessOperationDo, ApsProcessOperationProcessEquDo processOperationProcessEquDo, String cancelreason) {
+    public R cancelProcessOperationEqu(CancelOperationProcessEquVo cancelOperationProcessEquVo) {
+        Integer curEquCancelRoll = cancelOperationProcessEquVo.getCurEquCancelRoll();
+        ApsProcessOperationDo apsProcessOperationDo = cancelOperationProcessEquVo.getApsProcessOperationDo();
+        ApsProcessOperationProcessEquDo processOperationProcessEquDo = cancelOperationProcessEquVo.getProcessOperationProcessEquDo();
+        String cancelreason = cancelOperationProcessEquVo.getCancelreason();
         if (cancelreason.equals("1")) {//借调或取消
             processOperationProcessEquDo.setCancelrollno(processOperationProcessEquDo.getCancelrollno() + curEquCancelRoll);
         } else if (cancelreason.equals("2")) {//输入取消
@@ -2298,12 +2301,23 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             processOperationProcessEquDo.setInputunqualifiednum(processOperationProcessEquDo.getInputunqualifiednum() + curEquCancelRoll);
             processOperationProcessEquDo.setInputunqualifiedroll(processOperationProcessEquDo.getInputunqualifiedroll() + curEquCancelRoll);
         }
+        List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = cancelOperationProcessEquVo.getApsProcessOperationProcessEquDos();
+        if (apsProcessOperationProcessEquDos == null) {
+            apsProcessOperationProcessEquDos = apsProcessOperationDao.getNextOperationProcessEqus(apsProcessOperationDo.getBlankid());
+        }
+        List<String> noEquProcessEquIds = cancelOperationProcessEquVo.getNoEquProcessEquIds();
+        if (noEquProcessEquIds == null) {
+            noEquProcessEquIds = new ArrayList<>();
+        }
         processOperationProcessEquDo.setCancelroll(processOperationProcessEquDo.getCancelroll() + curEquCancelRoll);
         processOperationProcessEquDo.setLeavewaitworkroll(processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getStartingroll() - processOperationProcessEquDo.getCancelroll());
         List<String> noUpdatePlanenddateList = Arrays.asList("小卷成退", "中退", "成退");
         if (processOperationProcessEquDo.getPlanprocessrall() == processOperationProcessEquDo.getCancelroll()) {
             processOperationProcessEquDo.setProcessdevice("");
             processOperationProcessEquDo.setProcessdeviceid("");
+            if (!noEquProcessEquIds.contains(processOperationProcessEquDo.getId())) {
+                noEquProcessEquIds.add(processOperationProcessEquDo.getId());
+            }
         } else if (!noUpdatePlanenddateList.contains(apsProcessOperationDo.getProcess()) && processOperationProcessEquDo.getPlanprocessrall() > processOperationProcessEquDo.getCancelroll()) {
             BigDecimal addMinute = apsProcessOperationDo.getOnceprocessmin().multiply(new BigDecimal(60)).multiply(new BigDecimal(processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getCancelroll()));//秒向上取整
             Calendar calendar = Calendar.getInstance();
@@ -2371,7 +2385,31 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                 if (!cancelreason.equals("3")) {
                     cancelreason = "2";
                 }
-                cancelProcessOperationEqu((int) Math.floor((double) (curEquCancelRoll * processOperationEquDo.getPlanprocessrall()) / processOperationProcessEquDo.getPlanprocessrall()), apsProcessOperationDo, processOperationEquDo, cancelreason);
+                CancelOperationProcessEquVo tempCancelOperationProcessEquVo = new CancelOperationProcessEquVo();
+                tempCancelOperationProcessEquVo.setCurEquCancelRoll((int) Math.floor((double) (curEquCancelRoll * processOperationEquDo.getPlanprocessrall()) / processOperationProcessEquDo.getPlanprocessrall()));
+                tempCancelOperationProcessEquVo.setApsProcessOperationDo(apsProcessOperationDo);
+                tempCancelOperationProcessEquVo.setProcessOperationProcessEquDo(processOperationEquDo);
+                tempCancelOperationProcessEquVo.setCancelreason(cancelreason);
+                tempCancelOperationProcessEquVo.setApsProcessOperationProcessEquDos(apsProcessOperationProcessEquDos);
+                tempCancelOperationProcessEquVo.setNoEquProcessEquIds(noEquProcessEquIds);
+                cancelProcessOperationEqu(tempCancelOperationProcessEquVo);
+            }
+        }
+
+        //断开与后道的关系
+        if (noEquProcessEquIds.size() > 0 && StringUtils.isNotBlank(processOperationProcessEquDo.getNextprocessesids())) {
+            String newNextIds = "";
+            for (String nextid : processOperationProcessEquDo.getNextprocessesids().split(",")) {
+                if (noEquProcessEquIds.contains(nextid)) {
+                    continue;
+                } else {
+                    newNextIds += nextid + ",";
+                }
+            }
+            if (StringUtils.isBlank(newNextIds)) {
+                processOperationProcessEquDo.setNextprocessesids("");
+            } else {
+                processOperationProcessEquDo.setNextprocessesids(newNextIds.substring(0, newNextIds.length() - 1));
             }
         }
 
@@ -2386,6 +2424,30 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                 apsBlankOrderDo.setIswaitgetmaterial(isWaitGetMaterial);
                 apsBlankOrderService.updateById(apsBlankOrderDo);
             }
+
+            if (StringUtils.isBlank(processOperationProcessEquDo.getProcessdeviceid())) {
+                //断开与前道的关系
+                List<ApsProcessOperationProcessEquDo> operationProcessEquDos = apsProcessOperationProcessEquDos.stream().filter(qu -> qu.getNextprocessesids().contains(processOperationProcessEquDo.getId())).collect(Collectors.toList());
+                for (ApsProcessOperationProcessEquDo processEquDo : operationProcessEquDos) {
+                    String nextprocessesids = processEquDo.getNextprocessesids();
+                    String newNextprocessesids = "";
+                    for (String nextprocessesid : nextprocessesids.split(",")) {
+                        if (nextprocessesid.equals(processOperationProcessEquDo.getId())) {
+                            continue;
+                        } else {
+                            newNextprocessesids += nextprocessesid + ",";
+                        }
+                    }
+                    ApsProcessOperationProcessEquDo operationProcessEquDo = new ApsProcessOperationProcessEquDo();
+                    operationProcessEquDo.setId(processEquDo.getId());
+                    if (StringUtils.isBlank(newNextprocessesids)) {
+                        operationProcessEquDo.setNextprocessesids("");
+                    } else {
+                        operationProcessEquDo.setNextprocessesids(newNextprocessesids.substring(0, newNextprocessesids.length() - 1));
+                    }
+                    apsProcessOperationProcessEquService.updateById(operationProcessEquDo);
+                }
+            }
             return R.ok();
         } else {
             return R.error();

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

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.rongwei.bscommon.sys.service.*;
 import com.rongwei.bsentity.domain.*;
+import com.rongwei.bsentity.vo.CancelOperationProcessEquVo;
 import com.rongwei.bsentity.vo.CancelProcessOperationVo;
 import com.rongwei.bsentity.vo.CommonUpdateProductionStatusReq;
 import com.rongwei.commonservice.service.RedisService;
@@ -36,7 +37,6 @@ import java.util.function.BiConsumer;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
-import static com.rongwei.safecommon.utils.SaveConstans.JobStatus.JOBSTATUS_TO_BE_END;
 import static com.rongwei.safecommon.utils.SaveConstans.SMALL_CIRCLE_PROCESSING_PROCESS_NAME;
 import static com.rongwei.safecommon.utils.SaveConstans.WorkInProgressStatus.*;
 import static com.rongwei.safecommon.utils.SaveConstans.WorkInProgressType.PASS;
@@ -562,21 +562,21 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                  * 新增需求:临时计算订单类型,如果输出物料的产品明细ID对应产品明细的合并订单号不为空,则订单类型=该合并订单的订单类型;否则订单类型=订单的订单类型
                  */
                 String temporaryOrderType = "";
-                List<ApsProductDetailDo> queryProductDetailList= apsProductDetailDoList.stream().filter(info -> info.getId().equals(apsProcessOperationOutMaterDo.getOrderdetailid())).collect(Collectors.toList());
-                if (!queryProductDetailList.isEmpty()){
+                List<ApsProductDetailDo> queryProductDetailList = apsProductDetailDoList.stream().filter(info -> info.getId().equals(apsProcessOperationOutMaterDo.getOrderdetailid())).collect(Collectors.toList());
+                if (!queryProductDetailList.isEmpty()) {
                     ApsProductDetailDo queryProductDetailDo = queryProductDetailList.get(0);
-                    if (queryProductDetailDo!= null&&ObjectUtil.isNotEmpty(queryProductDetailDo.getMergeordernumber())){
-                        List<ApsProductionMergeOrderDo> queryProductionMergeOrderList = apsProductionMergeOrderDoList.stream().filter(data->(data.getOrderno().equals(queryProductDetailDo.getMergeordernumber()))).collect(Collectors.toList());
-                        if (!queryProductionMergeOrderList.isEmpty()){
+                    if (queryProductDetailDo != null && ObjectUtil.isNotEmpty(queryProductDetailDo.getMergeordernumber())) {
+                        List<ApsProductionMergeOrderDo> queryProductionMergeOrderList = apsProductionMergeOrderDoList.stream().filter(data -> (data.getOrderno().equals(queryProductDetailDo.getMergeordernumber()))).collect(Collectors.toList());
+                        if (!queryProductionMergeOrderList.isEmpty()) {
                             ApsProductionMergeOrderDo queryProductMergeOrderDo = queryProductionMergeOrderList.get(0);
                             temporaryOrderType = queryProductMergeOrderDo.getOrdertype();
-                        }else {
+                        } else {
                             temporaryOrderType = productionOrderDo.getOrdertype();
                         }
-                    }else {
+                    } else {
                         temporaryOrderType = productionOrderDo.getOrdertype();
                     }
-                }else {
+                } else {
                     temporaryOrderType = productionOrderDo.getOrdertype();
                 }
                 if (MATERIAL_PREPARATION_ORDER.equals(temporaryOrderType)) {
@@ -641,7 +641,12 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                 int cancelQty = toBeStartedQty >= value ? value : toBeStartedQty;
                 log.debug("工序作业:{}的本次取消卷数:{}", apsProcessOperationProcessEquDo.getId(), cancelQty);
                 //取消和更新作业明细
-                apsProcessOperationService.cancelProcessOperationEqu(cancelQty, apsProcessOperationDo, apsProcessOperationProcessEquDo, "3");
+                CancelOperationProcessEquVo cancelOperationProcessEquVo = new CancelOperationProcessEquVo();
+                cancelOperationProcessEquVo.setCurEquCancelRoll(cancelQty);
+                cancelOperationProcessEquVo.setApsProcessOperationDo(apsProcessOperationDo);
+                cancelOperationProcessEquVo.setProcessOperationProcessEquDo(apsProcessOperationProcessEquDo);
+                cancelOperationProcessEquVo.setCancelreason("3");
+                apsProcessOperationService.cancelProcessOperationEqu(cancelOperationProcessEquVo);
                 //取消和更新工序作业
                 cancelProcessOperationVo = new CancelProcessOperationVo();
                 cancelProcessOperationVo.setCraftrouteid(null);
@@ -797,14 +802,14 @@ public class ReportCheckServiceImpl implements ReportCheckService {
         workInProgressInventoryDos.stream()
                 .filter(inventory -> outputNumberList.contains(inventory.getBatchnumber()))
                 .collect(Collectors.toList()).forEach(data -> {
-                    if (StringUtils.isNotBlank(workingProcessStatus)) {
-                        data.setWorkinprocessstatus(workingProcessStatus);
-                    }
-                    if (StringUtils.isNotBlank(workingProcessType)) {
-                        data.setWorkinprocesstype(workingProcessType);
-                    }
+            if (StringUtils.isNotBlank(workingProcessStatus)) {
+                data.setWorkinprocessstatus(workingProcessStatus);
+            }
+            if (StringUtils.isNotBlank(workingProcessType)) {
+                data.setWorkinprocesstype(workingProcessType);
+            }
 
-                });
+        });
         return outputNumberList;
     }
 
@@ -1057,7 +1062,12 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                     int cancelQty = toBeStartedQty >= value ? value : toBeStartedQty;
                     log.debug("工序作业:{}的本次取消卷数:{}", apsProcessOperationProcessEquDo.getId(), cancelQty);
                     //取消和更新作业明细
-                    apsProcessOperationService.cancelProcessOperationEqu(cancelQty, apsProcessOperationDo, apsProcessOperationProcessEquDo, "3");
+                    CancelOperationProcessEquVo cancelOperationProcessEquVo = new CancelOperationProcessEquVo();
+                    cancelOperationProcessEquVo.setCurEquCancelRoll(cancelQty);
+                    cancelOperationProcessEquVo.setApsProcessOperationDo(apsProcessOperationDo);
+                    cancelOperationProcessEquVo.setProcessOperationProcessEquDo(apsProcessOperationProcessEquDo);
+                    cancelOperationProcessEquVo.setCancelreason("3");
+                    apsProcessOperationService.cancelProcessOperationEqu(cancelOperationProcessEquVo);
                     //取消和更新工序作业
                     cancelProcessOperationVo = new CancelProcessOperationVo();
                     cancelProcessOperationVo.setCraftrouteid(null);
@@ -1240,8 +1250,8 @@ public class ReportCheckServiceImpl implements ReportCheckService {
         List<SysDictDo> defectTypes = apsReportOutputService.getQualityDefectsDictsByType();
         apsReportOutputDos.forEach(apsReportOutputDo -> {
             workInProgressInventoryDos.stream()
-            .filter(inventory -> apsReportOutputDo.getOutputnumber().equals(inventory.getBatchnumber()))
-            .collect(Collectors.toList()).forEach(data -> {
+                    .filter(inventory -> apsReportOutputDo.getOutputnumber().equals(inventory.getBatchnumber()))
+                    .collect(Collectors.toList()).forEach(data -> {
                 if ("是".equals(ifblankprocess)) {
                     data.setBlankname(apsReportOutputDo.getOutputdesc());
                 }

+ 17 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/CancelOperationProcessEquVo.java

@@ -0,0 +1,17 @@
+package com.rongwei.bsentity.vo;
+
+import com.rongwei.bsentity.domain.ApsProcessOperationDo;
+import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class CancelOperationProcessEquVo {
+    private Integer curEquCancelRoll;//作业明细本次取消卷数
+    private ApsProcessOperationDo apsProcessOperationDo;//当前作业
+    private ApsProcessOperationProcessEquDo processOperationProcessEquDo;//作业明细
+    private String cancelreason;//取消原因
+    private List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = null;//该坯料计划下所有的作业明细
+    private List<String> noEquProcessEquIds = null;//设备为空的明细ids
+}