Przeglądaj źródła

aps-优化报工效率

sucheng 6 miesięcy temu
rodzic
commit
da0218a9b4

+ 17 - 15
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportRecordsServiceImpl.java

@@ -1,5 +1,6 @@
 package com.rongwei.bscommon.sys.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -992,7 +993,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             ApsProductionOrderDo apsProductionOrderDo = apsProductionOrderService.getById(apsBlankOrderDo.getProductionorderid());
             //合并加工作业开工之后进行报工,同步更新一起开工的其他作业的加工参数//需求变更:前面条件成立的前提下增加查找与当前工序作业炉次号相同的数据
             if (ObjectUtil.isNotEmpty(apsReportMachiningDoList)) {
-                syncOtherEquRecords(apsProcessOperationDo, apsProcessOperationProcessEquDo, nowReportRecordsDo.getProcessequid(), apsReportMachiningDoList, currentUser, nowReportRecordsDo.getHeatnumber());
+                syncOtherEquRecords(apsProcessOperationDo, apsProcessOperationProcessEquDo, nowReportRecordsDo, apsReportMachiningDoList, currentUser, nowReportRecordsDo.getHeatnumber());
             }
 
             //如果工序作业是否坯料工序=是,检查每个报工输出物料批次号
@@ -1978,18 +1979,16 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
      *
      * @param apsProcessOperationDo
      * @param apsProcessOperationProcessEquDo
-     * @param processEquId
+     * @param apsReportRecordsDo
      * @param apsReportMachiningDoList
      */
-    private void syncOtherEquRecords(ApsProcessOperationDo apsProcessOperationDo, ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo, String processEquId, List<ApsReportMachiningDo> apsReportMachiningDoList, SysUserVo currentUser, String heatnumber) {
-        List<ApsReportMachiningDo> machList = apsReportMachiningService.list();
-        List<String> mainRecordIds = machList.stream().map(ApsReportMachiningDo::getMainid).distinct().collect(Collectors.toList());
+    private void syncOtherEquRecords(ApsProcessOperationDo apsProcessOperationDo, ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo, ApsReportRecordsDo apsReportRecordsDo, List<ApsReportMachiningDo> apsReportMachiningDoList, SysUserVo currentUser, String heatnumber) {
         if ("合并加工".equals(apsProcessOperationDo.getProcessway())) {
             List<ApsProcessOperationProcessEquDo> list = apsProcessOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
                     .eq(ApsProcessOperationProcessEquDo::getProcessdeviceid, apsProcessOperationProcessEquDo.getProcessdeviceid())
                     .eq(ApsProcessOperationProcessEquDo::getPlanstartdate, apsProcessOperationProcessEquDo.getPlanstartdate())
                     .eq(ApsProcessOperationProcessEquDo::getProcessid, apsProcessOperationDo.getId())
-                    .notIn(ApsProcessOperationProcessEquDo::getId, processEquId)
+                    .notIn(ApsProcessOperationProcessEquDo::getId, apsReportRecordsDo.getProcessequid())
                     .and(qw -> qw.gt(ApsProcessOperationProcessEquDo::getActualfinishdate, apsProcessOperationProcessEquDo.getActualstartdate()).or().isNull(ApsProcessOperationProcessEquDo::getActualfinishdate)));
             List<String> equIds = list.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList());
             log.info("待同步工序作业明细主键数据:{}", equIds);
@@ -1998,13 +1997,17 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                         .eq(ApsReportRecordsDo::getDeleted, "0")
                         .eq(ApsReportRecordsDo::getHeatnumber, heatnumber)
                         .in(ApsReportRecordsDo::getProcessequid, equIds)
-                        .in(ApsReportRecordsDo::getReportworkstatus, "已开工", "已报工"));
+                        .in(ApsReportRecordsDo::getReportworkstatus, "已开工", "已报工")
+                        .ne(ApsReportRecordsDo::getId, apsReportRecordsDo.getId()));
+                List<String> recordIds = recordsDos.stream().map(ApsReportRecordsDo::getId).collect(Collectors.toList());
+                if (!recordIds.isEmpty()) {
+                    apsReportMachiningService.remove(new LambdaUpdateWrapper<ApsReportMachiningDo>()
+                            .in(ApsReportMachiningDo::getMainid, recordIds));
+                }
+                List<ApsReportMachiningDo> needInsertList = new LinkedList<>();
                 recordsDos.forEach(info -> {
-                    if (mainRecordIds.contains(info.getId())) {
-                        apsReportMachiningService.remove(new LambdaUpdateWrapper<ApsReportMachiningDo>()
-                                .eq(ApsReportMachiningDo::getMainid, info.getId()));
-                    }
-                    apsReportMachiningDoList.forEach(mach -> {
+                    for (ApsReportMachiningDo apsReportMachiningDo : apsReportMachiningDoList) {
+                        ApsReportMachiningDo mach = BeanUtil.copyProperties(apsReportMachiningDo, ApsReportMachiningDo.class);
                         mach.setId(SecurityUtil.getUUID());
                         mach.setMainid(info.getId());
                         mach.setCreatedate(new Date());
@@ -2013,11 +2016,10 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                         mach.setModifydate(new Date());
                         mach.setModifyuserid(currentUser.getId());
                         mach.setModifyusername(currentUser.getName());
-                    });
-                    if (!apsReportMachiningDoList.isEmpty()) {
-                        apsReportMachiningService.saveBatch(apsReportMachiningDoList);
+                        needInsertList.add(mach);
                     }
                 });
+                apsReportMachiningService.saveBatch(needInsertList);
             }
         }
     }