瀏覽代碼

aps-报工接口处理工序作业明细的报工记录加工参数testin1563

zhoudazhuang 9 月之前
父節點
當前提交
42d28a21b7

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

@@ -2,6 +2,7 @@ package com.rongwei.bscommon.sys.service.impl;
 
 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.core.conditions.update.UpdateWrapper;
@@ -897,6 +898,10 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             ApsBlankOrderDo apsBlankOrderDo = apsBlankOrderService.getById(apsProcessOperationDo.getBlankid());
             //查询对应的订单评审信息
             ApsProductionOrderDo apsProductionOrderDo = apsProductionOrderService.getById(apsBlankOrderDo.getProductionorderid());
+            //合并加工作业开工之后进行报工,同步更新一起开工的其他作业的加工参数
+            if (ObjectUtil.isNotEmpty(apsReportMachiningDoList)) {
+                syncOtherEquRecords(apsProcessOperationDo,apsProcessOperationProcessEquDo,nowReportRecordsDo.getProcessequid(),apsReportMachiningDoList,currentUser);
+            }
 
             //如果工序作业是否坯料工序=是,检查每个报工输出物料批次号
             if (ObjectUtil.isNotEmpty(apsProcessOperationDo.getIfblankprocess()) && apsProcessOperationDo.getIfblankprocess().equals("是")) {
@@ -1730,6 +1735,54 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
     }
 
 
+    /**
+     * 更新合并加工的工序作业明细相关的报工记录下面的报工记录加工参数子表数据
+     * @param apsProcessOperationDo
+     * @param apsProcessOperationProcessEquDo
+     * @param processEquId
+     * @param apsReportMachiningDoList
+     */
+    private void syncOtherEquRecords(ApsProcessOperationDo apsProcessOperationDo,ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo,String processEquId,List<ApsReportMachiningDo> apsReportMachiningDoList,SysUserVo currentUser){
+        List<ApsReportMachiningDo> machList = apsReportMachiningService.list();
+        List<String> mainRecordIds = machList.stream().map(ApsReportMachiningDo::getMainid).distinct().collect(Collectors.toList());
+        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)
+                    .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);
+            if (!equIds.isEmpty()){
+                List<ApsReportRecordsDo> recordsDos = this.list(new LambdaQueryWrapper<ApsReportRecordsDo>()
+                        .eq(ApsReportRecordsDo::getDeleted, "0")
+                        .in(ApsReportRecordsDo::getProcessequid, equIds)
+                        .in(ApsReportRecordsDo::getReportworkstatus,"已开工","已报工"));
+                recordsDos.forEach(info ->{
+                    if (mainRecordIds.contains(info.getId())){
+                        apsReportMachiningService.remove(new LambdaUpdateWrapper<ApsReportMachiningDo>()
+                                .eq(ApsReportMachiningDo::getMainid, info.getId()));
+                    }
+                    apsReportMachiningDoList.forEach(mach->{
+                        mach.setId(SecurityUtil.getUUID());
+                        mach.setMainid(info.getId());
+                        mach.setCreatedate(new Date());
+                        mach.setCreateuserid(currentUser.getId());
+                        mach.setCreateusername(currentUser.getName());
+                        mach.setModifydate(new Date());
+                        mach.setModifyuserid(currentUser.getId());
+                        mach.setModifyusername(currentUser.getName());
+                    });
+                    if (!apsReportMachiningDoList.isEmpty()){
+                        apsReportMachiningService.saveBatch(apsReportMachiningDoList);
+                    }
+                });
+            }
+        }
+    }
+
+
 }