Просмотр исходного кода

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

fangpy 8 месяцев назад
Родитель
Сommit
4754cc14fd

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

@@ -98,4 +98,7 @@ public interface ApsProcessOperationDao extends BaseMapper<ApsProcessOperationDo
 
     @Select("SELECT * FROM aps_process_operation_equ WHERE DELETED = 0 AND MAINID=#{mainid}")
     List<ApsProcessOperationEquDo> getProcessOperationEqus(@Param("mainid") String mainid);
+
+    @Select("SELECT * FROM aps_process_operation_process_equ WHERE DELETED = 0 AND ID in ('${nextIds}')")
+    List<ApsProcessOperationProcessEquDo> getNextProcessOperationEqusByNextIds(@Param("nextIds") String nextIds);
 }

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

@@ -735,12 +735,10 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 affectedIdList.addAll(checkProcessingTimeConflict(apsProcessOperationProcessEquDo, oldPlanstartdate,
                         oldPlanenddate, oldEquId, apsProcessOperationDo.getProcessway(),new ArrayList<>()));
             }
-
+            this.updateById(apsProcessOperationProcessEquDo);
             // 判断是否存在设备不可用
             inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo, apsProcessOperationProcessEquDo.getProcessdeviceid()
                     , apsProcessOperationProcessEquDo.getPlanstartdate(), apsProcessOperationProcessEquDo.getPlanenddate());
-
-            this.updateById(apsProcessOperationProcessEquDo);
         }
         // 更新坯料交货期
 //        apsBlankOrderService.updateBlankDeliveryDate(null, apsProcessOperationDo.getBlankid());

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

@@ -620,9 +620,9 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                 vo.setInitValue(0L);
                 Map<String, Object> codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
                 heatNumber = codeData.get("code").toString();
-                if (StringUtils.isNotBlank(heatNumber)){
+                if (StringUtils.isNotBlank(heatNumber)) {
                     //判断如果heatNumber如果为000时再次调用序列号接口/修复跨月流水号问题
-                    if ("000".equals(heatNumber)){
+                    if ("000".equals(heatNumber)) {
                         codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
                         heatNumber = codeData.get("code").toString();
                     }
@@ -909,7 +909,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             ApsProductionOrderDo apsProductionOrderDo = apsProductionOrderService.getById(apsBlankOrderDo.getProductionorderid());
             //合并加工作业开工之后进行报工,同步更新一起开工的其他作业的加工参数
             if (ObjectUtil.isNotEmpty(apsReportMachiningDoList)) {
-                syncOtherEquRecords(apsProcessOperationDo,apsProcessOperationProcessEquDo,nowReportRecordsDo.getProcessequid(),apsReportMachiningDoList,currentUser);
+                syncOtherEquRecords(apsProcessOperationDo, apsProcessOperationProcessEquDo, nowReportRecordsDo.getProcessequid(), apsReportMachiningDoList, currentUser);
             }
 
             //如果工序作业是否坯料工序=是,检查每个报工输出物料批次号
@@ -970,6 +970,35 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             processEquWrapper.set(ApsProcessOperationProcessEquDo::getWaitreportid, null)
                     .set(ApsProcessOperationProcessEquDo::getDoingbatchnumber, null);
 
+            //更新作业明细报工料卷批次号,如果输入物料有批次号,报工料卷批次号后面拼接{输入物料批次号}
+            String reportBatchNumber = apsProcessOperationProcessEquDo.getReportbatchnumber();
+            if (StringUtils.isNotBlank(nowReportRecordsDo.getBatchnumber())){
+                if (StringUtils.isNotBlank(reportBatchNumber)){
+                    if (!reportBatchNumber.contains(nowReportRecordsDo.getBatchnumber())){
+                        reportBatchNumber = reportBatchNumber+","+nowReportRecordsDo.getBatchnumber();
+                    }
+                }else {
+                    reportBatchNumber = nowReportRecordsDo.getBatchnumber();
+                }
+                processEquWrapper.set(ApsProcessOperationProcessEquDo::getReportbatchnumber, reportBatchNumber);
+            }
+            /**
+             * 如果该作业是该坯料计划第一道作业。并且作业是否坯料工序=是,需要更新当前作业明细的坯料批次号=当前作业明细输出物料批次号
+             * 如果作业是否坯料工序=是,则更新该作业明细所有后道作业明细的坯料批次号=该作业明细输出物料批次号。
+             * 如果作业是否坯料工序=否,则更新该作业明细所有后道作业明细的坯料批次号=该作业明细输入物料批次号。
+             */
+            if (StringUtils.isBlank(apsProcessOperationProcessEquDo.getPreviousprocessesids())){
+                //取出当前报工记录的输出物料编号列表
+                List<String> outputNumbers = apsReportOutputDoList.stream().map(ApsReportOutputDo::getOutputnumber).collect(Collectors.toList());
+                String outPutNumber = "";
+                if (!outputNumbers.isEmpty()){
+                    outPutNumber = String.join(",",outputNumbers);
+                    if (StringUtils.isNotBlank(apsProcessOperationDo.getIfblankprocess()) && "是".equals(apsProcessOperationDo.getIfblankprocess())){
+                        processEquWrapper.set(ApsProcessOperationProcessEquDo::getBlankbatchnumber, outPutNumber);
+                    }
+                }
+                updateAfterBlankByBatchAndOutPutNumber(apsProcessOperationDo,nowReportRecordsDo,apsProcessOperationProcessEquDo,outPutNumber);
+            }
             //更新
             apsProcessOperationProcessEquService.update(processEquWrapper);
 
@@ -1135,7 +1164,8 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                 String outputdesc = "";
                 outputdesc += outputDo.getOutputmaterial().split(" ")[0];
                 outputdesc += " 厚" + CXCommonUtils.removeExtraZerosAndDecimal(outputDo.getThickness()) + "*宽" + CXCommonUtils.removeExtraZerosAndDecimal(outputDo.getWidth());
-                if (ObjectUtil.isNotEmpty(outputDo.getLength())) {
+                if (ObjectUtil.isNotEmpty(outputDo.getLength())
+                        && !CXCommonUtils.removeExtraZerosAndDecimal(outputDo.getLength()).equals("0")) {
                     outputdesc += "*长" + CXCommonUtils.removeExtraZerosAndDecimal(outputDo.getLength());
                 }
                 outputdesc += " mm " + CXCommonUtils.removeExtraZerosAndDecimal(outputDo.getWeight()) + "吨";
@@ -1710,6 +1740,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             startWorkLock.remove(req.getUseDeviceId());
         }
     }
+
     @NotNull
     private String toSortBatchNumber(@NotNull String batchNumber) {
         String[] parts = batchNumber.split("-");
@@ -1733,18 +1764,18 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         return R.ok();
     }
 
-    private int sortAsc(List<String> parts1,List<String> parts2){
+    private int sortAsc(List<String> parts1, List<String> parts2) {
         int length1 = parts1.size();
         int length2 = parts2.size();
-        if(length1 == 0){
+        if (length1 == 0) {
             return -1;
         }
-        if(length2 == 0){
+        if (length2 == 0) {
             return 1;
         }
         if (Integer.parseInt(parts1.get(0).replace("*", "")) != Integer.parseInt(parts2.get(0).replace("*", ""))) {
             return Integer.parseInt(parts1.get(0).replace("*", "")) - Integer.parseInt(parts2.get(0).replace("*", ""));
-        }else {
+        } else {
             parts1.remove(0);
             parts2.remove(0);
             return sortAsc(parts1, parts2);
@@ -1754,34 +1785,35 @@ 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){
+    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())){
+        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)));
+                    .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()){
+            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())){
+                        .in(ApsReportRecordsDo::getReportworkstatus, "已开工", "已报工"));
+                recordsDos.forEach(info -> {
+                    if (mainRecordIds.contains(info.getId())) {
                         apsReportMachiningService.remove(new LambdaUpdateWrapper<ApsReportMachiningDo>()
                                 .eq(ApsReportMachiningDo::getMainid, info.getId()));
                     }
-                    apsReportMachiningDoList.forEach(mach->{
+                    apsReportMachiningDoList.forEach(mach -> {
                         mach.setId(SecurityUtil.getUUID());
                         mach.setMainid(info.getId());
                         mach.setCreatedate(new Date());
@@ -1791,7 +1823,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                         mach.setModifyuserid(currentUser.getId());
                         mach.setModifyusername(currentUser.getName());
                     });
-                    if (!apsReportMachiningDoList.isEmpty()){
+                    if (!apsReportMachiningDoList.isEmpty()) {
                         apsReportMachiningService.saveBatch(apsReportMachiningDoList);
                     }
                 });
@@ -1799,6 +1831,31 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         }
     }
 
+    /**
+     * 递归所有后道工序作业明细
+     * @param apsProcessOperationDo
+     * @param nowReportRecordsDo
+     * @param processOperationProcessEquDo
+     */
+    private void updateAfterBlankByBatchAndOutPutNumber(ApsProcessOperationDo apsProcessOperationDo,ApsReportRecordsDo nowReportRecordsDo,ApsProcessOperationProcessEquDo processOperationProcessEquDo,String outPutNumber) {
+        if (StringUtils.isNotBlank(processOperationProcessEquDo.getNextprocessesids())) {
+            List<ApsProcessOperationProcessEquDo> processOperationProcessEquDos = apsProcessOperationDao.getNextProcessOperationEqusByNextIds(processOperationProcessEquDo.getNextprocessesids().replace(",", "','"));
+            for (ApsProcessOperationProcessEquDo processOperationEquDo : processOperationProcessEquDos) {
+                if (StringUtils.isNotBlank(apsProcessOperationDo.getIfblankprocess()) && "是".equals(apsProcessOperationDo.getIfblankprocess())){
+                    //是否坯料工序为是则更新该作业明细所有后道作业明细的坯料批次号=该作业明细输出物料批次号。
+                    if (StringUtils.isNotBlank(outPutNumber)){
+                        processOperationEquDo.setBlankbatchnumber(outPutNumber);
+                    }
+                }else {
+                    //是否坯料工序为否则更新该作业明细所有后道作业明细的坯料批次号=该作业明细输入物料批次号。
+                    processOperationEquDo.setBlankbatchnumber(nowReportRecordsDo.getBatchnumber());
+                }
+                apsProcessOperationProcessEquService.updateById(processOperationEquDo);
+                updateAfterBlankByBatchAndOutPutNumber(apsProcessOperationDo,nowReportRecordsDo,processOperationEquDo,outPutNumber);
+            }
+        }
+    }
+
 
 }
 

+ 25 - 1
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationProcessEquDao.xml

@@ -191,7 +191,31 @@
         a3.BLANKNUMBER as blankNumber,
         a3.PLANHAVEMATERIALDATE as planhavematerialdate,
         a2.SINGLEROLLWEIGHT,
-        a2.SINGLEROLLWEIGHT * a1.PLANPROCESSRALL as totalRollWeight
+        a2.SINGLEROLLWEIGHT * a1.PLANPROCESSRALL as totalRollWeight,
+        IF (
+        IFNULL(a1.BACHMATERIALPROCESS,'')=''and IFNULL(a1.DOINGBATCHNUMBER,'')=''and IFNULL(a1.REPORTBATCHNUMBER,'')='',
+        a1.BLANKBATCHNUMBER,
+        IF
+        (
+        a2.PROCESS = "小卷成退"
+        OR a2.PROCESS = "小卷包装",
+        CONCAT_WS(
+        ',',
+        SUBSTRING_INDEX( IF ( a1.BACHMATERIALPROCESS = '', NULL, trim( BOTH ',' FROM a1.BACHMATERIALPROCESS ) ), ",", 1 ),
+        SUBSTRING_INDEX( IF ( a1.DOINGBATCHNUMBER = '', NULL, trim( BOTH ',' FROM a1.DOINGBATCHNUMBER ) ), ",", 1 ),
+        SUBSTRING_INDEX( IF ( a1.REPORTBATCHNUMBER = '', NULL, trim( BOTH ',' FROM a1.REPORTBATCHNUMBER ) ), ",", 1 )
+        ),
+        CONCAT_WS(
+        ',',
+        IF
+        ( a1.BACHMATERIALPROCESS = '', NULL, trim( BOTH ',' FROM a1.BACHMATERIALPROCESS ) ),
+        IF
+        ( a1.DOINGBATCHNUMBER = '', NULL, trim( BOTH ',' FROM a1.DOINGBATCHNUMBER ) ),
+        IF
+        ( a1.REPORTBATCHNUMBER = '', NULL, trim( BOTH ',' FROM a1.REPORTBATCHNUMBER ) )
+        )
+        )
+        ) AS SHOWBATCHNUMBER
         FROM
         (SELECT
         a3.*,

+ 10 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationProcessEquDo.java

@@ -184,4 +184,14 @@ public class ApsProcessOperationProcessEquDo extends BaseDo {
      */
     @TableField("SECONDROLL")
     private Integer secondroll;
+    /**
+     * 坯料批次号
+     */
+    @TableField("BLANKBATCHNUMBER")
+    private String blankbatchnumber;
+    /**
+     * 报工料卷批次号
+     */
+    @TableField("REPORTBATCHNUMBER")
+    private String reportbatchnumber;
 }

+ 5 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/GanttVos.java

@@ -235,4 +235,9 @@ public class GanttVos {
      * 合计卷重
      */
     private BigDecimal totalRollWeight;
+
+    /**
+     * 批次号
+     */
+    private String showbatchnumber;
 }