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

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

fangpy 8 месяцев назад
Родитель
Сommit
4330fd44a6
16 измененных файлов с 320 добавлено и 251 удалено
  1. 3 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsBlankOrderDao.java
  2. 1 7
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationDao.java
  3. 36 27
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsBlankOrderServiceImpl.java
  4. 4 2
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationServiceImpl.java
  5. 7 6
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportOutputServiceImpl.java
  6. 41 33
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportRecordsServiceImpl.java
  7. 70 42
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ReportCheckServiceImpl.java
  8. 23 15
      cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationDao.xml
  9. 109 116
      cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationProcessEquDao.xml
  10. 4 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/GanttVos.java
  11. 4 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquMaintenanceTaskDao.java
  12. 2 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquMaintenanceTaskService.java
  13. 10 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquMaintenanceTaskServiceImpl.java
  14. 4 1
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquipmentSendNotifyServiceImpl.java
  15. 1 1
      cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquLubricationPlanDetailDo.java
  16. 1 1
      cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquLubricationTaskDetailDo.java

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

@@ -144,4 +144,7 @@ public interface ApsBlankOrderDao extends BaseMapper<ApsBlankOrderDo> {
 
     @Select("select * from aps_process_operation_process_equ where DELETED = 0 AND FIND_IN_SET(#{batchnumber},BACHMATERIALPROCESS) limit 1")
     ApsProcessOperationProcessEquDo selectUseThisBatchNumberProcessEqu(@Param("batchnumber") String batchnumber);
+
+    @Select("select * from aps_blank_order where DELETED = 0 AND FIND_IN_SET(#{batchNumber},PREPAREMATERIALBATCHNO) limit 1")
+    ApsBlankOrderDo countThisBatchNumber(@Param("batchNumber") String batchNumber);
 }

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

@@ -105,12 +105,6 @@ public interface ApsProcessOperationDao extends BaseMapper<ApsProcessOperationDo
     @Select("SELECT * FROM aps_process_operation_process_equ WHERE DELETED = 0 AND ID in ('${nextIds}')")
     List<ApsProcessOperationProcessEquDo> getNextProcessOperationEqusByNextIds(@Param("nextIds") String nextIds);
 
-    @Select({" <script>",
-            "update aps_work_in_progress_inventory set WORKINPROCESSSTATUS='备料中',PLANMATERIALID=null where DELETED='0' and PROCESSOPERATIONEQUID=#{processoperationequid} and BLANKBATCHNUMBER in",
-            " <foreach collection=\"blankbatchnumbers\" item=\"blankbatchnumber\" index=\"index\" open=\"(\" close=\")\" separator=\",\"> ",
-            "  #{blankbatchnumbers}",
-            "</foreach>",
-            "</script>"})
-    void updateProgressInventory(@Param("blankbatchnumbers") List<String> blankbatchnumbers, @Param("processoperationequid") String processoperationequid);
+    void updateProgressInventory(@Param("batchnumbers") List<String> batchnumbers);
 
 }

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

@@ -681,7 +681,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void apsAfter(ProductionScheduleRetVo productionScheduleRetVo, List<ApsBlankOrderVo> apsBlankOrders,SysUserVo currentUser) {
+    public void apsAfter(ProductionScheduleRetVo productionScheduleRetVo, List<ApsBlankOrderVo> apsBlankOrders, SysUserVo currentUser) {
         // 先删除所有作业的明细
         List<String> blankids = apsBlankOrders.stream().map(v -> v.getId()).collect(Collectors.toList());
 //        processOperationProcessEquService.remove(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
@@ -894,7 +894,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
 //            apsProcessOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getBlankid, blankKeys).set(ApsProcessOperationProcessEquDo::getLockmark, "y"));
         }
         logger.info("作业加锁结束..: " + blankids);
-        backupProcessOperation(apsProcessOperationProcessEquDos, productionScheduleRetVo.getProcesses(),currentUser);
+        backupProcessOperation(apsProcessOperationProcessEquDos, productionScheduleRetVo.getProcesses(), currentUser);
     }
 
     /**
@@ -904,7 +904,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
      * @param processes
      */
     private void backupProcessOperation(List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos,
-                                        List<ProductionProcesses> processes,SysUserVo currentUser) {
+                                        List<ProductionProcesses> processes, SysUserVo currentUser) {
 
 
         // 工序作业明细ID
@@ -912,7 +912,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                 .flatMap(List::stream)
                 .distinct()
                 .collect(Collectors.toList());
-        if(currentUser == null){
+        if (currentUser == null) {
             currentUser = CXCommonUtils.getCurrentUser();
         }
         //删除备份
@@ -2351,28 +2351,31 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         }
 
         //如果存在订单产品和输出单卷重都相同坯料输出成品,错误提示:以下坯料输出成品重复:{订单产品1}{输出单卷重}{数量单位},{订单产品2}{输出单卷重}{数量单位}
-        //组装一下list
-        List<String> processOutputDesList = apsProcessOutputProductDoList.stream().map(item -> {
+        //新需求:如果存在关联相同的订单产品,并且输出单卷重都相同坯料输出成品,错误提示:以下坯料输出成品重复:{订单产品1}{输出单卷重}{数量单位},{订单产品2}{输出单卷重}{数量单位}
+        //用于判断是否重复
+        Map<String, String> checkOutputDesMap = new HashMap<>();
+        //有重复数据订单产品的数组
+        List<String> endCheckOutputDesList = new LinkedList<>();
+        for (ApsProcessOutputProductDo apsProcessOutputProductDo : apsProcessOutputProductDoList) {
+            //产品明细的ID
+            String productid = apsProcessOutputProductDo.getProductid();
+
             String unit = "吨";
-            if (item.getCountunit().equals(SaveConstans.CountUnit.KG)) {
+            if (apsProcessOutputProductDo.getCountunit().equals(SaveConstans.CountUnit.KG)) {
                 unit = "千克";
             }
-            return item.getProductname() + item.getOutputonerollweigth() + unit;
-        }).collect(Collectors.toList());
+            //拼接字段
+            String s = apsProcessOutputProductDo.getProductname() + apsProcessOutputProductDo.getOutputonerollweigth() + unit;
 
-        //用于判断是否重复
-        List<String> checkOutputDesList = new LinkedList<>();
-        //有重复数据订单产品的数组
-        List<String> endCheckOutputDesList = new LinkedList<>();
-        for (String s : processOutputDesList) {
-            if (checkOutputDesList.contains(s)) {
+            if (checkOutputDesMap.containsKey(productid) && checkOutputDesMap.get(productid).equals(s)) {
                 endCheckOutputDesList.add(s);
             } else {
-                checkOutputDesList.add(s);
+                checkOutputDesMap.put(productid, s);
             }
         }
-        if (endCheckOutputDesList.size() > 0) {
-            String join = String.join(",", endCheckOutputDesList);
+        List<String> collect = endCheckOutputDesList.stream().distinct().collect(Collectors.toList());
+        if (!collect.isEmpty()) {
+            String join = String.join(",", collect);
             return R.error("坯料计划" + apsBlankOrderDo.getBlanknumber() + " 以下坯料输出成品重复:" + join);
         }
 
@@ -3423,11 +3426,11 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         List<ApsProcessOperationProcessEquDo> needUpdateProcessEquList = new ArrayList<>();
         List<ApsProcessOperationProcessEquDo> clearBachMaterialProcessEquList = new ArrayList<>();
         //符合条件的需要先清除原待加工料卷批次号
-        updateOperationProcessEquList.forEach(equDo->{
+        updateOperationProcessEquList.forEach(equDo -> {
             //剩余待开工卷数 =计划加工卷数-已开工卷数-已取消卷数
             int leaveWaitWorkRoll = equDo.getPlanprocessrall() - equDo.getStartingroll() - equDo.getCancelroll();
-            if (leaveWaitWorkRoll>0){
-                if (StringUtils.isNotBlank(equDo.getBachmaterialprocess())){
+            if (leaveWaitWorkRoll > 0) {
+                if (StringUtils.isNotBlank(equDo.getBachmaterialprocess())) {
                     equDo.setBachmaterialprocess("");
                     clearBachMaterialProcessEquList.add(equDo);
                 }
@@ -3436,13 +3439,13 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         if (ObjectUtil.isNotEmpty(clearBachMaterialProcessEquList)) {
             apsProcessOperationProcessEquService.updateBatchById(clearBachMaterialProcessEquList);
         }
-        updateOperationProcessEquList.forEach(equDo->{
+        updateOperationProcessEquList.forEach(equDo -> {
             //剩余待开工卷数 =计划加工卷数-已开工卷数-已取消卷数
             int leaveWaitWorkRoll = equDo.getPlanprocessrall() - equDo.getStartingroll() - equDo.getCancelroll();
-            if (leaveWaitWorkRoll>0&& finalBatchNumberList.size()>0){
+            if (leaveWaitWorkRoll > 0 && finalBatchNumberList.size() > 0) {
                 //有几个剩余待开工卷数就要分配几个batchNumberList中批次号的个数
                 List<String> distributionNumbers = finalBatchNumberList.stream().limit(leaveWaitWorkRoll).collect(Collectors.toList());
-                equDo.setBachmaterialprocess(String.join(",",distributionNumbers));
+                equDo.setBachmaterialprocess(String.join(",", distributionNumbers));
                 finalBatchNumberList.removeAll(distributionNumbers);
                 needUpdateProcessEquList.add(equDo);
             }
@@ -3452,9 +3455,6 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         }
 
 
-
-
-
         //在制品的在制品状态=待加工
         //在制品的备料计划ID=该坯料计划ID
         if (ObjectUtil.isNotEmpty(addBatchNumberList)) {
@@ -3657,6 +3657,15 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
 
         List<ApsWorkInProgressInventoryDo> workInProgressInventoryDos = new LinkedList<>();
         if (ObjectUtil.isNotEmpty(addBatchNumberList)) {
+            //查询是否已被其他坯料计划领料
+            for (String batchNumber : addBatchNumberList) {
+                ApsBlankOrderDo blankOrderDo = this.baseMapper.countThisBatchNumber(batchNumber);
+                if (ObjectUtil.isNotEmpty(blankOrderDo)) {
+                    return R.error("该批次号" + batchNumber + "已被其他坯料计划" + blankOrderDo.getBlanknumber() + "领料");
+                }
+            }
+
+
             //查询新增的批次号
             workInProgressInventoryDos =
                     apsWorkInProgressInventoryService.list(new QueryWrapper<ApsWorkInProgressInventoryDo>().lambda()

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

@@ -2219,7 +2219,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                 List<String> newpch = new ArrayList<>();
                 List<String> delpch = new ArrayList<>();
                 for (String bachmaterialprocess : bachmaterialprocessArr) {
-                    if (newpch.size() <= processOperationProcessEquDo.getLeavewaitworkroll()) {
+                    if (newpch.size() < processOperationProcessEquDo.getLeavewaitworkroll()) {
                         newpch.add(bachmaterialprocess);
                     } else {
                         delpch.add(bachmaterialprocess);
@@ -2227,7 +2227,9 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                 }
                 processOperationProcessEquDo.setBachmaterialprocess(String.join(",", newpch));
                 //将这些批次号对应在制品退回备料库
-                apsProcessOperationDao.updateProgressInventory(delpch, processOperationProcessEquDo.getId());
+                if (delpch.size() > 0) {
+                    apsProcessOperationDao.updateProgressInventory(delpch);
+                }
             }
         }
 

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

@@ -13,6 +13,7 @@ import com.rongwei.bsentity.domain.ApsProcessOperationOutMaterDo;
 import com.rongwei.bsentity.domain.ApsReportOutputDo;
 import com.rongwei.bsentity.domain.ApsReportRecordsDo;
 import com.rongwei.bsentity.vo.InsertMyReportOutputReq;
+import com.rongwei.commonservice.serial.service.SysSerialNumberService;
 import com.rongwei.rwadmincommon.system.domain.SysDictDo;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.R;
@@ -50,6 +51,8 @@ public class ApsReportOutputServiceImpl extends ServiceImpl<ApsReportOutputDao,
     private ApsProcessOperationService apsProcessOperationService;
     @Autowired
     private ApsReportOutputDao apsReportOutputDao;
+    @Autowired
+    private SysSerialNumberService sysSerialNumberService;
 
     @Override
     @Transactional
@@ -84,15 +87,13 @@ public class ApsReportOutputServiceImpl extends ServiceImpl<ApsReportOutputDao,
                         vo.setResetrule("date:yyyyMM");
                         vo.setIfautomaticreset("y");
                         vo.setInitValue(0L);
-                        Map<String, Object> codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
-                        String code = codeData.get("code").toString();
-                        if (StringUtils.isNotBlank(code)){
+                        String code = sysSerialNumberService.getCodeByTemplate(vo);
+                        if (StringUtils.isNotBlank(code)) {
                             //取出批次号后三位
                             String lastThreeChars = code.substring(code.length() - 3);
                             //判断如果code最后三位如果为000时再次调用序列号接口/修复跨月流水号问题
-                            if ("000".equals(lastThreeChars)){
-                                codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
-                                code = codeData.get("code").toString();
+                            if ("000".equals(lastThreeChars)) {
+                                code = sysSerialNumberService.getCodeByTemplate(vo);
                                 lastThreeChars = code.substring(code.length() - 3);
                             }
                             //当工序为‘铸轧’时添加序列号将序列号默认为批次号后三位

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

@@ -14,6 +14,7 @@ import com.rongwei.bscommon.sys.dao.ApsReportRecordsDao;
 import com.rongwei.bscommon.sys.service.*;
 import com.rongwei.bsentity.domain.*;
 import com.rongwei.bsentity.vo.*;
+import com.rongwei.commonservice.serial.service.SysSerialNumberService;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.base.exception.CustomException;
@@ -90,6 +91,8 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
     private ApsProcessOutputProductDao apsProcessOutputProductDao;
     @Autowired
     private ApsOrderAlloyCompositionService apsOrderAlloyCompositionService;
+    @Autowired
+    private SysSerialNumberService sysSerialNumberService;
 
     @Override
     @Transactional
@@ -166,17 +169,17 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
          */
         if (ObjectUtil.isNotEmpty(recordsDo.getBatchnumber())) {
             List<String> doingBatchNumbers = new LinkedList<>(Arrays.asList(apsProcessOperationProcessEquDo.getDoingbatchnumber().split(",")));
-            if (ObjectUtil.isNotEmpty(doingBatchNumbers)){
+            if (ObjectUtil.isNotEmpty(doingBatchNumbers)) {
                 doingBatchNumbers.removeAll(batchNumberList);
                 //加工中批次号=当前工序作业明细的加工中批次号应该减去“{批次号}”
-                if (doingBatchNumbers.size()>0){
-                    processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getDoingbatchnumber, String.join(",",doingBatchNumbers));
-                }else {
+                if (doingBatchNumbers.size() > 0) {
+                    processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getDoingbatchnumber, String.join(",", doingBatchNumbers));
+                } else {
                     //加工中批次号=(空)
                     processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getDoingbatchnumber, null);
                 }
             }
-        }else {
+        } else {
             //加工中批次号=(空)
             processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getDoingbatchnumber, null);
         }
@@ -192,7 +195,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         /**
          * 新加需求:更新“剩余待开工卷数”=计划加工卷数-已开工卷数-已取消卷数
          */
-        Integer newLeaveWaitWorkRoll = apsProcessOperationProcessEquDo.getPlanprocessrall()-newStartingRoll-apsProcessOperationProcessEquDo.getCancelroll();
+        Integer newLeaveWaitWorkRoll = apsProcessOperationProcessEquDo.getPlanprocessrall() - newStartingRoll - apsProcessOperationProcessEquDo.getCancelroll();
         processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getLeavewaitworkroll, newLeaveWaitWorkRoll);
         //更新
         apsProcessOperationProcessEquService.update(processEquUpdateWrapper);
@@ -526,9 +529,9 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
              */
             //加工中批次号
             if (ObjectUtil.isNotEmpty(req.getInputBatchNumber())) {
-                if (StringUtils.isNotBlank(apsProcessOperationProcessEquDo.getDoingbatchnumber())){
-                    needUpdateProcessOperationProcessEqu.setDoingbatchnumber(apsProcessOperationProcessEquDo.getDoingbatchnumber()+","+req.getInputBatchNumber());
-                }else {
+                if (StringUtils.isNotBlank(apsProcessOperationProcessEquDo.getDoingbatchnumber())) {
+                    needUpdateProcessOperationProcessEqu.setDoingbatchnumber(apsProcessOperationProcessEquDo.getDoingbatchnumber() + "," + req.getInputBatchNumber());
+                } else {
                     needUpdateProcessOperationProcessEqu.setDoingbatchnumber(req.getInputBatchNumber());
                 }
             }
@@ -539,7 +542,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             /**
              * 新加需求:更新“剩余待开工卷数”=计划加工卷数-已开工卷数-已取消卷数
              */
-            Integer newLeaveWaitWorkRoll = apsProcessOperationProcessEquDo.getPlanprocessrall()-newStartingRoll-apsProcessOperationProcessEquDo.getCancelroll();
+            Integer newLeaveWaitWorkRoll = apsProcessOperationProcessEquDo.getPlanprocessrall() - newStartingRoll - apsProcessOperationProcessEquDo.getCancelroll();
             needUpdateProcessOperationProcessEqu.setLeavewaitworkroll(newLeaveWaitWorkRoll);
             apsProcessOperationProcessEquService.updateById(needUpdateProcessOperationProcessEqu);
 
@@ -678,13 +681,13 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                 vo.setResetrule("date:yyyyMM");
                 vo.setIfautomaticreset("y");
                 vo.setInitValue(0L);
-                Map<String, Object> codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
-                heatNumber = codeData.get("code").toString();
+//                Map<String, Object> codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
+                heatNumber = sysSerialNumberService.getCodeByTemplate(vo);
                 if (StringUtils.isNotBlank(heatNumber)) {
                     //判断如果heatNumber如果为000时再次调用序列号接口/修复跨月流水号问题
                     if ("000".equals(heatNumber)) {
-                        codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
-                        heatNumber = codeData.get("code").toString();
+//                        codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
+                        heatNumber = sysSerialNumberService.getCodeByTemplate(vo);
                     }
                 }
             }
@@ -1068,12 +1071,12 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
              * 如果剩余待报工卷数=0,则完工状态=已完工,实际完工时间=当前时间
              * 如果剩余待报工卷数>0,则完工状态=未完工
              */
-            Integer newLeaveWaitJobRoll = unfinishroll-apsProcessOperationProcessEquDo.getCancelroll();
+            Integer newLeaveWaitJobRoll = unfinishroll - apsProcessOperationProcessEquDo.getCancelroll();
             processEquWrapper.set(ApsProcessOperationProcessEquDo::getLeavewaitjobroll, newLeaveWaitJobRoll);
-            if (newLeaveWaitJobRoll>0){
+            if (newLeaveWaitJobRoll > 0) {
                 processEquWrapper.set(ApsProcessOperationProcessEquDo::getClosestatus, "未完工");
-            }else {
-                if (newLeaveWaitJobRoll==0){
+            } else {
+                if (newLeaveWaitJobRoll == 0) {
                     processEquWrapper.set(ApsProcessOperationProcessEquDo::getClosestatus, "已完工");
                     processEquWrapper.set(ApsProcessOperationProcessEquDo::getActualfinishdate, new Date());
                 }
@@ -1199,10 +1202,14 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             if (ObjectUtil.isNotEmpty(apsReportOutputDos)) {
                 //如果主表的批次号不为空,查找 在制品库存中是否有此 批次号 的数据,有 复制并删除原数据,坯料批次号 等坯料数据不变,其余数据变更
                 if (ObjectUtil.isNotEmpty(apsReportRecordsDo.getBatchnumber())) {
-                    ApsWorkInProgressInventoryDo apsWorkInProgressInventoryDo = apsWorkInProgressInventoryService.getOne(new QueryWrapper<ApsWorkInProgressInventoryDo>().lambda().eq(ApsWorkInProgressInventoryDo::getDeleted, "0").eq(ApsWorkInProgressInventoryDo::getBatchnumber, apsReportRecordsDo.getBatchnumber()));
+
+                    List<ApsWorkInProgressInventoryDo> apsWorkInProgressInventoryDos = apsWorkInProgressInventoryService.list(new QueryWrapper<ApsWorkInProgressInventoryDo>().lambda()
+                            .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
+                            .in(ApsWorkInProgressInventoryDo::getBatchnumber, Arrays.asList(apsReportRecordsDo.getBatchnumber().split(","))));
+                    ApsWorkInProgressInventoryDo apsWorkInProgressInventoryDo = apsWorkInProgressInventoryDos.get(0);
                     //不为空,则删除数据(逻辑删除)
-                    if (ObjectUtil.isNotEmpty(apsWorkInProgressInventoryDo)) {
-                        apsWorkInProgressInventoryService.removeById(apsWorkInProgressInventoryDo.getId());
+                    if (ObjectUtil.isNotEmpty(apsWorkInProgressInventoryDos)) {
+                        apsWorkInProgressInventoryService.removeByIds(apsWorkInProgressInventoryDos.stream().map(ApsWorkInProgressInventoryDo::getId).collect(Collectors.toList()));
                     }
                     //增加或者复制在制品库存
                     addOrCopyWorkInProgress(apsReportOutputDos,
@@ -1527,13 +1534,13 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                 vo.setResetrule("date:yyyyMM");
                 vo.setIfautomaticreset("y");
                 vo.setInitValue(0L);
-                Map<String, Object> codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
-                heatNumber = codeData.get("code").toString();
-                if (StringUtils.isNotBlank(heatNumber)){
+//                Map<String, Object> codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
+                heatNumber = sysSerialNumberService.getCodeByTemplate(vo);
+                if (StringUtils.isNotBlank(heatNumber)) {
                     //判断如果heatNumber如果为000时再次调用序列号接口/修复跨月流水号问题
-                    if ("000".equals(heatNumber)){
-                        codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
-                        heatNumber = codeData.get("code").toString();
+                    if ("000".equals(heatNumber)) {
+//                        codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
+                        heatNumber = sysSerialNumberService.getCodeByTemplate(vo);
                     }
                 }
             }
@@ -1821,7 +1828,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             /**
              * 新加需求:更新“剩余待开工卷数”=计划加工卷数-已开工卷数-已取消卷数
              */
-            Integer newLeaveWaitWorkRoll = apsProcessOperationProcessEquDo.getPlanprocessrall()-needUpdateProcessEqu.getStartingroll()-apsProcessOperationProcessEquDo.getCancelroll();
+            Integer newLeaveWaitWorkRoll = apsProcessOperationProcessEquDo.getPlanprocessrall() - needUpdateProcessEqu.getStartingroll() - apsProcessOperationProcessEquDo.getCancelroll();
             needUpdateProcessEqu.setLeavewaitworkroll(newLeaveWaitWorkRoll);
 
             apsProcessOperationProcessEquService.updateById(needUpdateProcessEqu);
@@ -1976,10 +1983,11 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
 
     /**
      * 更新报工记录-输出物料子表中序列号与批次号
+     *
      * @param apsReportOutputDoList
      * @param recordsDo
      */
-    private void updateSerialnumber(List<ApsReportOutputDo> apsReportOutputDoList,ApsReportRecordsDo recordsDo){
+    private void updateSerialnumber(List<ApsReportOutputDo> apsReportOutputDoList, ApsReportRecordsDo recordsDo) {
         //查询对应的工序作业
         ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(recordsDo.getProcessoperationid());
         //查询对应的工序作业明细信息
@@ -1987,19 +1995,19 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         //1.循环输出物料2.判断输出物料序列号字段是否有值是否与批次号后三位相等,不相等则更新批次号和序列号为最新的值3.将平台序列号表更新输出物料流水的最大值4.只针对铸轧
         String nodeMonthCode = SaveConstans.MONTH_CODE_LIST.get(DateUtil.month(DateUtil.date()));
         String nowYear = (DateUtil.year(DateUtil.date()) % 100) + "";
-        apsReportOutputDoList.forEach(info ->{
-            if (StringUtils.isNotBlank(info.getOutputnumber())){
+        apsReportOutputDoList.forEach(info -> {
+            if (StringUtils.isNotBlank(info.getOutputnumber())) {
                 String outputCode = info.getOutputnumber();
                 String nextChar = "";
                 int index = outputCode.indexOf(nowYear);
                 if (index != -1) {
                     nextChar = String.valueOf(outputCode.charAt(index + nowYear.length()));
                     //需要判断每条数据在当前月
-                    if ("铸轧".equals(apsProcessOperationDo.getProcess())&&nodeMonthCode.equals(nextChar)){
+                    if ("铸轧".equals(apsProcessOperationDo.getProcess()) && nodeMonthCode.equals(nextChar)) {
                         //取出批次号最后三位字符串
                         String lastThreeChars = outputCode.substring(outputCode.length() - 3);
                         //校验序列号大小是否大于等于批次号后三位
-                        if (info.getSerialnumber()!= null&&info.getSerialnumber()!= Long.parseLong(lastThreeChars)){
+                        if (info.getSerialnumber() != null && info.getSerialnumber() != Long.parseLong(lastThreeChars)) {
                             // 删除批次号原来的后三位字符串,将序列号的三位数字更新到批次号中
                             String newOutput = outputCode.substring(0, outputCode.length() - 3);
                             String formatSerialnumber = String.format("%03d", info.getSerialnumber());

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

@@ -3,6 +3,7 @@ package com.rongwei.bscommon.sys.service.impl;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.rongwei.bscommon.sys.service.ApsBlankOrderService;
 import com.rongwei.bscommon.sys.service.ApsReportRecordsService;
 import com.rongwei.bscommon.sys.service.ReportCheckService;
@@ -29,6 +30,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
 import javax.validation.constraints.NotNull;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
@@ -654,8 +656,8 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                     .filter(info -> entryentry.getKey().equals(info.getPlaninputid()))
                     .collect(Collectors.toList());
             /**
-              * 需求变更:查找该作业明细的该工序作业输出物料对应的所有后道作业明细,即该报工记录的作业明细的所有后道作业明细中,其工序作业的输入物料ID是报工记录的输出物料ID的所有作业明细,
-              * 根据计划开工时间的先后顺序,将流转组批次号依次分配给这些后道作业明细;注意:是追加批次号到待加工料卷批次号后面
+             * 需求变更:查找该作业明细的该工序作业输出物料对应的所有后道作业明细,即该报工记录的作业明细的所有后道作业明细中,其工序作业的输入物料ID是报工记录的输出物料ID的所有作业明细,
+             * 根据计划开工时间的先后顺序,将流转组批次号依次分配给剩余待开工卷数-待加工料卷批次号数量>0的作业明细的待加工料卷批次号;注意:是追加批次号到待加工料卷批次号后面
              */
             List<String> processIds = apsProcessOperationDos.stream().map(ApsProcessOperationDo::getId).collect(Collectors.toList());
             List<ApsProcessOperationProcessEquDo> updateProcessEquList = nextProcessOperationProcessEquDos.stream().filter(info -> processIds.contains(info.getProcessid()))
@@ -663,16 +665,42 @@ public class ReportCheckServiceImpl implements ReportCheckService {
             List<String> outPutNumbers = entryentry.getValue();
             outPutNumbers.sort(Comparator.comparing(this::toSortBatchNumber));
             for (ApsProcessOperationProcessEquDo equDo : updateProcessEquList) {
-                if (ObjectUtil.isNotEmpty(outPutNumbers)){
+                if (ObjectUtil.isNotEmpty(outPutNumbers)) {
+                    //剩余待开工卷数
+                    Integer leavewaitworkroll = equDo.getLeavewaitworkroll();
+                    //待加工料卷批次号数量
+                    Integer waitToDoCount = 0;
+                    String bachmaterialprocess = equDo.getBachmaterialprocess();
+                    if (ObjectUtil.isNotEmpty(bachmaterialprocess)) {
+                        waitToDoCount = bachmaterialprocess.split(",").length;
+                    }
+                    if (leavewaitworkroll - waitToDoCount <= 0) {
+                        continue;
+                    }
+                    //需要获取的批次号
+                    List<String> needGetBatchNumberList;
+                    if (outPutNumbers.size() <= leavewaitworkroll - waitToDoCount) {
+                        needGetBatchNumberList = outPutNumbers;
+                    } else {
+                        needGetBatchNumberList = outPutNumbers.subList(0, leavewaitworkroll - waitToDoCount);
+                    }
+
                     apsProcessOperationProcessEquDo = new ApsProcessOperationProcessEquDo();
                     apsProcessOperationProcessEquDo.setId(equDo.getId());
-                    apsProcessOperationProcessEquDo.setBachmaterialprocess(strAppendListConvertStr(equDo.getBachmaterialprocess(), Collections.singletonList(outPutNumbers.get(0))));
+                    apsProcessOperationProcessEquDo.setBachmaterialprocess(strAppendListConvertStr(equDo.getBachmaterialprocess(), needGetBatchNumberList));
                     apsProcessOperationProcessEquDo.setModifydate(new Date());
-                    log.debug("将批次号:{}流转给工序作业明细:{}", outPutNumbers.get(0), equDo.getId());
+                    log.debug("将批次号:{}流转给工序作业明细:{}", needGetBatchNumberList, equDo.getId());
                     updateProcessEquData.add(apsProcessOperationProcessEquDo);
-                    outPutNumbers.removeAll(Collections.singletonList(outPutNumbers.get(0)));
+                    outPutNumbers.removeAll(needGetBatchNumberList);
                 }
             }
+            //如果还有剩余批次号没有分配完,表示后道作业取消了,无需分配,需要转到备料库,即设置在制品状态=备料中
+            if (!outPutNumbers.isEmpty()) {
+                apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
+                        .set(ApsWorkInProgressInventoryDo::getWorkinprocessstatus, "备料中")
+                        .in(ApsWorkInProgressInventoryDo::getBatchnumber, outPutNumbers)
+                        .eq(ApsWorkInProgressInventoryDo::getDeleted, "0"));
+            }
 //            for (ApsProcessOperationDo apsProcessOperationDo : apsProcessOperationDos) {
 //                updateOperationDo = new ApsProcessOperationDo();
 //                // 更新ID
@@ -743,14 +771,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;
     }
 
@@ -1188,42 +1216,42 @@ public class ReportCheckServiceImpl implements ReportCheckService {
             workInProgressInventoryDos.stream()
                     .filter(inventory -> apsReportOutputDo.getOutputnumber().equals(inventory.getBatchnumber()))
                     .collect(Collectors.toList()).forEach(data -> {
-                if ("是".equals(ifblankprocess)) {
-                    data.setBlankname(apsReportOutputDo.getOutputdesc());
-                }
-                data.setWorkinprocess(apsReportOutputDo.getOutputdesc());
-                data.setInspectionlevel(apsReportOutputDo.getInsepctionlevel());
-                data.setIsqualified(apsReportOutputDo.getQualified());
-                String formatMajor = handleDefect(apsReportOutputDo.getMajor(), defectTypes);
-                String formatMinor = handleDefect(apsReportOutputDo.getMinor(), defectTypes);
-                if (StringUtils.isNotBlank(formatMajor) && StringUtils.isNotBlank(formatMinor)) {
-                    if (StringUtils.isNotBlank(apsReportOutputDo.getCheckremark())) {
-                        data.setRemark("主要缺陷:" + formatMajor + ";次要缺陷:" + formatMinor + ";检验备注:" + apsReportOutputDo.getCheckremark() + ";");
-                    } else {
-                        data.setRemark("主要缺陷:" + formatMajor + ";次要缺陷:" + formatMinor + ";");
-                    }
-                } else {
-                    if (StringUtils.isNotBlank(formatMajor)) {
-                        if (StringUtils.isNotBlank(apsReportOutputDo.getCheckremark())) {
-                            data.setRemark("主要缺陷:" + formatMajor + ";检验备注:" + apsReportOutputDo.getCheckremark() + ";");
-                        } else {
-                            data.setRemark("主要缺陷:" + formatMajor + ";");
+                        if ("是".equals(ifblankprocess)) {
+                            data.setBlankname(apsReportOutputDo.getOutputdesc());
                         }
-                    } else {
-                        if (StringUtils.isNotBlank(formatMinor)) {
+                        data.setWorkinprocess(apsReportOutputDo.getOutputdesc());
+                        data.setInspectionlevel(apsReportOutputDo.getInsepctionlevel());
+                        data.setIsqualified(apsReportOutputDo.getQualified());
+                        String formatMajor = handleDefect(apsReportOutputDo.getMajor(), defectTypes);
+                        String formatMinor = handleDefect(apsReportOutputDo.getMinor(), defectTypes);
+                        if (StringUtils.isNotBlank(formatMajor) && StringUtils.isNotBlank(formatMinor)) {
                             if (StringUtils.isNotBlank(apsReportOutputDo.getCheckremark())) {
-                                data.setRemark("次要缺陷:" + formatMinor + ";检验备注:" + apsReportOutputDo.getCheckremark() + ";");
+                                data.setRemark("主要缺陷:" + formatMajor + ";次要缺陷:" + formatMinor + ";检验备注:" + apsReportOutputDo.getCheckremark() + ";");
                             } else {
-                                data.setRemark("次要缺陷:" + formatMinor + ";");
+                                data.setRemark("主要缺陷:" + formatMajor + ";次要缺陷:" + formatMinor + ";");
                             }
                         } else {
-                            if (StringUtils.isNotBlank(apsReportOutputDo.getCheckremark())) {
-                                data.setRemark("检验备注:" + apsReportOutputDo.getCheckremark() + ";");
+                            if (StringUtils.isNotBlank(formatMajor)) {
+                                if (StringUtils.isNotBlank(apsReportOutputDo.getCheckremark())) {
+                                    data.setRemark("主要缺陷:" + formatMajor + ";检验备注:" + apsReportOutputDo.getCheckremark() + ";");
+                                } else {
+                                    data.setRemark("主要缺陷:" + formatMajor + ";");
+                                }
+                            } else {
+                                if (StringUtils.isNotBlank(formatMinor)) {
+                                    if (StringUtils.isNotBlank(apsReportOutputDo.getCheckremark())) {
+                                        data.setRemark("次要缺陷:" + formatMinor + ";检验备注:" + apsReportOutputDo.getCheckremark() + ";");
+                                    } else {
+                                        data.setRemark("次要缺陷:" + formatMinor + ";");
+                                    }
+                                } else {
+                                    if (StringUtils.isNotBlank(apsReportOutputDo.getCheckremark())) {
+                                        data.setRemark("检验备注:" + apsReportOutputDo.getCheckremark() + ";");
+                                    }
+                                }
                             }
                         }
-                    }
-                }
-            });
+                    });
         });
     }
 

+ 23 - 15
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationDao.xml

@@ -7,9 +7,9 @@
 
         update aps_process_operation
         <set>
-<!--            <if test="batchNum != null and batchNum!=''">-->
-<!--                BACHMATERIALPROCESS = CONCAT_WS(',',BACHMATERIALPROCESS,#{batchNum}),-->
-<!--            </if>-->
+            <!--            <if test="batchNum != null and batchNum!=''">-->
+            <!--                BACHMATERIALPROCESS = CONCAT_WS(',',BACHMATERIALPROCESS,#{batchNum}),-->
+            <!--            </if>-->
             INPUTUNQUALIFIEDROLL = INPUTUNQUALIFIEDROLL +#{unqualifiedQuantity}
         </set>
         <where>
@@ -28,17 +28,17 @@
             UNFINISHROLL = UNFINISHROLL -#{currentCheckNum},
             <!-- 完工状态-->
             CLOSESTATUS = case when UNFINISHROLL -#{currentCheckNum} = SECONDROLL+CANCELROLL then '已完工' else '加工中' end,
-<!--            ,-->
-<!--            &lt;!&ndash;实际完工时间&ndash;&gt;-->
-<!--            ACTUALFINISHDATE = (select IF(COUNT(ID) !=0 ,NULL,NOW()) from aps_process_operation_process_equ where-->
-<!--            PROCESSID =#{id} and CLOSESTATUS !='已完工'),-->
+            <!--            ,-->
+            <!--            &lt;!&ndash;实际完工时间&ndash;&gt;-->
+            <!--            ACTUALFINISHDATE = (select IF(COUNT(ID) !=0 ,NULL,NOW()) from aps_process_operation_process_equ where-->
+            <!--            PROCESSID =#{id} and CLOSESTATUS !='已完工'),-->
 
-<!--            &lt;!&ndash; 作业状态&ndash;&gt;-->
-<!--            WORKSTATUS = (select IF(COUNT(ID) !=0 ,'加工中','已完工') from aps_process_operation_process_equ where-->
-<!--            PROCESSID =#{id} and CLOSESTATUS !='已完工'),-->
-<!--            &lt;!&ndash; 生产状态&ndash;&gt;-->
-<!--            PROCESSSTATUS = (select IF(COUNT(ID) !=0 ,'40','50') from aps_process_operation_process_equ where PROCESSID-->
-<!--            =#{id} and CLOSESTATUS !='已完工')-->
+            <!--            &lt;!&ndash; 作业状态&ndash;&gt;-->
+            <!--            WORKSTATUS = (select IF(COUNT(ID) !=0 ,'加工中','已完工') from aps_process_operation_process_equ where-->
+            <!--            PROCESSID =#{id} and CLOSESTATUS !='已完工'),-->
+            <!--            &lt;!&ndash; 生产状态&ndash;&gt;-->
+            <!--            PROCESSSTATUS = (select IF(COUNT(ID) !=0 ,'40','50') from aps_process_operation_process_equ where PROCESSID-->
+            <!--            =#{id} and CLOSESTATUS !='已完工')-->
         </set>
         <where>
             ID =#{id}
@@ -46,7 +46,8 @@
     </update>
     <update id="updateBatchNumberByProcessList">
         update aps_process_operation_process_equ
-        set BACHMATERIALPROCESS = IF(BACHMATERIALPROCESS is null || BACHMATERIALPROCESS = '',#{batchnumber},concat(BACHMATERIALPROCESS,',',#{batchnumber}))
+        set BACHMATERIALPROCESS = IF(BACHMATERIALPROCESS is null || BACHMATERIALPROCESS =
+        '',#{batchnumber},concat(BACHMATERIALPROCESS,',',#{batchnumber}))
         where DELETED = 0
         AND PROCESSID in
         <foreach collection="processIdList" separator="," open="(" item="item" close=")">
@@ -96,7 +97,7 @@
                 <foreach collection="productionOrderIds" open="(" close=")" item="id" separator=",">
                     #{id}
                 </foreach>
-               and DELETED='0')
+                and DELETED='0')
             </where>
         </if>
     </update>
@@ -116,4 +117,11 @@
             </where>
         </if>
     </update>
+    <update id="updateProgressInventory">
+        update aps_work_in_progress_inventory set WORKINPROCESSSTATUS='备料中',PLANMATERIALID=null where DELETED='0' and
+        BATCHNUMBER in
+        <foreach collection="batchnumbers" item="batchnumber" index="index" open="(" close=")" separator=",">
+            #{batchnumber}
+        </foreach>
+    </update>
 </mapper>

+ 109 - 116
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationProcessEquDao.xml

@@ -146,143 +146,137 @@
     <select id="getGanttDataList" resultType="com.rongwei.bsentity.vo.GanttVos">
         SELECT
         UUID_SHORT() as uuid,
-        a1.ID,
-        a1.PLANPROCESSRALL,
-        a1.PLANSTARTDATE,
-        a1.PLANENDDATE,
-        a1.PROCESSWORKSHOPID,
-        a1.PROCESSWORKSHOP,
-        a1.PROCESSDEVICEID,
-        a1.PROCESSDEVICE,
-        a1.STARTINGROLL,
-        a1.REPORTROLL,
-        a1.CHECKOUTROLL,
-        a1.UNFINISHROLL,
-        a1.WORKSTATUS,
-        a1.CONFLICTDES,
-        a1.HASCONFLICT,
-        a1.SOFTCONFLICTDES,
-        a1.nextprocessesids,
-        a1.previousprocessesids,
-        a1.CANCELROLL,
-        a2.ID as processid,
-        a2.PLANINPUT AS INMATERCONDITION,
-        a2.PROCESSSTATUS,
-        a1.ACTUALSTARTDATE,
-        a1.ACTUALFINISHDATE,
-        a2.PROCESSNAME,
-        a2.LOCKMARK,
-        a2.PROCESSWAY,
-        a3.ID AS blankOrderId,
-        a3.OUTPUTORDERPRODUCT,
-        DATE(a3.PROMISEDATESTART) AS PROMISEDATESTART,
-        DATE(a3.PROMISEDATEEND) AS PROMISEDATEEND,
-        DATE(a3.DELIVERYDATE) AS DELIVERYDATE,
-        a3.PRODUCTNAME ,
-        a6.ID AS productionorderid,
-        a6.ORDERNO,
-        a6.CUSTOMNAME,
-        a6.ORDERDATE,
-        a6.CUSTOMORDERNO,
-        Date(a6.PROMISEDELIVERYDATE) as PROMISEDELIVERYDATE,
-        Date(a6.SCHEDULEDELIVERYDATE) as SCHEDULEDELIVERYDATE,
-        a7.CUSTOMERABBREVIATION as CUSTOMERABBREVIATION,
-        a7.CUSTOMERUNIT,
-        a3.BLANKNUMBER as blankNumber,
-        a3.PLANHAVEMATERIALDATE as planhavematerialdate,
-        a2.SINGLEROLLWEIGHT,
-        a2.SINGLEROLLWEIGHT * a1.PLANPROCESSRALL as totalRollWeight,
-        IF(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 )
+        apope.ID,
+        apope.PLANPROCESSRALL,
+        apope.PLANSTARTDATE,
+        apope.PLANENDDATE,
+        apope.PROCESSWORKSHOPID,
+        apope.PROCESSWORKSHOP,
+        apope.PROCESSDEVICEID,
+        apope.PROCESSDEVICE,
+        apope.STARTINGROLL,
+        apope.REPORTROLL,
+        apope.CHECKOUTROLL,
+        apope.UNFINISHROLL,
+        apope.WORKSTATUS,
+        apope.CONFLICTDES,
+        apope.HASCONFLICT,
+        apope.SOFTCONFLICTDES,
+        apope.nextprocessesids,
+        apope.previousprocessesids,
+        apope.CANCELROLL,
+        apo.ID as processid,
+        apo.PLANINPUT AS INMATERCONDITION,
+        apo.PROCESSSTATUS,
+        apope.ACTUALSTARTDATE,
+        apope.ACTUALFINISHDATE,
+        apo.PROCESSNAME,
+        apo.LOCKMARK as processLock, -- 原工序作业的是否锁定改名
+        apope.LOCKMARKDETAIL as LOCKMARK, -- 增加作业明细的是否锁定字段
+        apo.PROCESSWAY,
+        abo.ID AS blankOrderId,
+        abo.OUTPUTORDERPRODUCT,
+        DATE(abo.PROMISEDATESTART) AS PROMISEDATESTART,
+        DATE(abo.PROMISEDATEEND) AS PROMISEDATEEND,
+        DATE(abo.DELIVERYDATE) AS DELIVERYDATE,
+        apop.PRODUCTNAME ,
+        apro.ID AS productionorderid,
+        apro.ORDERNO,
+        apro.CUSTOMNAME,
+        apro.ORDERDATE,
+        ifnull(apop.CUSTOMORDERNO,apro.CUSTOMORDERNO) CUSTOMORDERNO,
+        Date(apro.PROMISEDELIVERYDATE) as PROMISEDELIVERYDATE,
+        Date(apro.SCHEDULEDELIVERYDATE) as SCHEDULEDELIVERYDATE,
+        acm.CUSTOMERABBREVIATION as CUSTOMERABBREVIATION,
+        acm.CUSTOMERUNIT,
+        abo.BLANKNUMBER as blankNumber,
+        abo.PLANHAVEMATERIALDATE as planhavematerialdate,
+        apo.SINGLEROLLWEIGHT,
+        apo.SINGLEROLLWEIGHT * apope.PLANPROCESSRALL as totalRollWeight,
+        IF(IFNULL(apope.BACHMATERIALPROCESS,'')=''and IFNULL(apope.DOINGBATCHNUMBER,'')=''and IFNULL(apope.REPORTBATCHNUMBER,'')='',
+        IF(IFNULL(apope.BLANKBATCHNUMBER,'')='',SUBSTRING_INDEX(abo.PREPAREMATERIALBATCHNO, ',', 1),apope.BLANKBATCHNUMBER),
+        IF(apo.PROCESS = "小卷成退"OR apo.PROCESS = "小卷包装",
+        CONCAT_WS(',',
+        SUBSTRING_INDEX( trim( BOTH ',' FROM IFNULL(apope.BACHMATERIALPROCESS,'') ), ',', 1 ),
+        SUBSTRING_INDEX( trim( BOTH ',' FROM IFNULL(apope.DOINGBATCHNUMBER,'') ), ',', 1 ),
+        SUBSTRING_INDEX( trim( BOTH ',' FROM IFNULL(apope.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 ) )
+        CONCAT_WS(',',
+        trim( BOTH ',' FROM IFNULL(apope.BACHMATERIALPROCESS,'') ),
+        trim( BOTH ',' FROM IFNULL(apope.DOINGBATCHNUMBER,'') ),
+        trim( BOTH ',' FROM IFNULL(apope.REPORTBATCHNUMBER,'') )
         )
         )
-        )='',a2.PREVIOUSPROCESSID IS NULL AND a3.PREPAREMATERIAL = '是',a3.PREPAREMATERIALBATCHNO ) AS SHOWBATCHNUMBER
+        ) AS SHOWBATCHNUMBER
         FROM
-        (SELECT
-        a3.*,
-        GROUP_CONCAT( a4.PRODUCTNAME ) as PRODUCTNAME
+        aps_process_operation_process_equ apope
+        JOIN aps_process_operation apo ON apope.PROCESSID = apo.ID
+        join aps_blank_order abo ON apo.BLANKID = abo.ID
+        JOIN aps_production_order apro ON abo.PRODUCTIONORDERID = apro.ID
+        LEFT JOIN aps_customer_management acm ON apro.CUSTOMID = acm.ID
+        LEFT JOIN (
+        SELECT
+        apop.BLANKID, GROUP_CONCAT( apop.PRODUCTNAME ) as PRODUCTNAME,
+        GROUP_CONCAT( distinct apd.CUSTOMORDERNO) as CUSTOMORDERNO
         FROM
-        aps_blank_order a3
-        LEFT JOIN aps_process_output_product a4 FORCE INDEX(aps_process_output_product_idx) on a3.ID=a4.BLANKID
+        aps_process_output_product apop
+        left join aps_product_detail apd on apop.PRODUCTID = apd.id
         WHERE
-        a4.DELETED = '0'
+        apop.DELETED = '0'
         GROUP BY
-        a3.ID) a3
-        LEFT JOIN aps_production_order a6 ON a3.PRODUCTIONORDERID = a6.ID
-        LEFT JOIN aps_customer_management a7 ON a6.CUSTOMID = a7.ID
-        LEFT JOIN aps_process_operation a2 ON a3.ID= a2.BLANKID
-        LEFT JOIN aps_process_operation_process_equ a1 FORCE INDEX (aps_process_operation_process_equ_idx2) ON
-        a1.PROCESSID = a2.ID
+        apop.BLANKID
+        ) apop on abo.id=apop.BLANKID
         <where>
             <if test="factoryId != null and factoryId != '' and factoryId != 'ALL'">
-                 a1.TENANTID = #{factoryId}
-                and a3.TENANTID= #{factoryId}
+                apope.TENANTID = #{factoryId}
+                and abo.TENANTID= #{factoryId}
             </if>
-            and a3.SCHEDULINGSTATUS != '10'
-            and a1.DELETED ='0'
-            AND a2.DELETED = '0'
-            AND a3.DELETED = '0'
-            AND a6.DELETED='0'
-            and (a1.PROCESSDEVICE is not null and a1.PROCESSDEVICE !='' )
-            and (a1.PROCESSWORKSHOP is not null and a1.PROCESSWORKSHOP !='' )
+            and abo.SCHEDULINGSTATUS != '10'
+            and apope.DELETED = '0'
+            and apo.DELETED = '0'
+            and abo.DELETED = '0'
+            and apro.DELETED = '0'
+            and (apope.PROCESSDEVICE is not null and apope.PROCESSDEVICE !='' )
+            and (apope.PROCESSWORKSHOP is not null and apope.PROCESSWORKSHOP !='' )
             <if test="ids != null and ids.size()>0">
-                and a1.ID in
+                and apope.ID in
                 <foreach collection="ids" item="id" open="(" close=")" separator=",">
                     #{id}
                 </foreach>
             </if>
             <if test="workshopIds != null and workshopIds.size()>0">
-                and a1.PROCESSWORKSHOPID in
+                and apope.PROCESSWORKSHOPID in
                 <foreach collection="workshopIds" item="workshopId" open="(" close=")" separator=",">
                     #{workshopId}
                 </foreach>
             </if>
             <if test="orderNos !=null and orderNos.size()>0">
-                and a6.ORDERNO in
+                and apro.ORDERNO in
                 <foreach collection="orderNos" item="orderNo" open="(" close=")" separator=",">
                     #{orderNo}
                 </foreach>
             </if>
             <if test="equIds != null and equIds.size()>0">
-                and a1.PROCESSDEVICEID in
+                and apope.PROCESSDEVICEID in
                 <foreach collection="equIds" item="equId" open="(" close=")" separator=",">
                     #{equId}
                 </foreach>
             </if>
             <if test="equName !=null and equName!=''">
                 <bind name="pattern" value="'%' + equName + '%'"/>
-                and a1.PROCESSDEVICE like #{pattern}
+                and apope.PROCESSDEVICE like #{pattern}
             </if>
 
             <if test="startTime != null and endTime != null ">
-                and not (a1.PLANSTARTDATE &gt; #{endTime} or a1.PLANENDDATE &lt; #{startTime})
+                and not (apope.PLANSTARTDATE &gt; #{endTime} or apope.PLANENDDATE &lt; #{startTime})
             </if>
-            <if test="processids != null ">and a1.PROCESSID in (${processids})</if>
+            <if test="processids != null ">and apope.PROCESSID in (${processids})</if>
             <if test="blankNumber != null and blankNumber != ''">
                 <bind name="blankNumberPattern" value="'%' + blankNumber + '%'"/>
-                and a3.BLANKNUMBER like #{blankNumberPattern}
+                and abo.BLANKNUMBER like #{blankNumberPattern}
             </if>
         </where>
-        # order by a1.PROCESSWORKSHOP,a1.PROCESSDEVICE,a1.PLANSTARTDATE asc,a1.PLANENDDATE desc
+        # order by apope.PROCESSWORKSHOP,apope.PROCESSDEVICE,apope.PLANSTARTDATE asc,apope.PLANENDDATE desc
     </select>
     <select id="selectNeedUpdate" resultType="com.rongwei.bsentity.vo.CommonUpdateProductionStatusReq">
         SELECT
@@ -483,38 +477,37 @@
         </where>
     </select>
     <select id="getWorkshopAndDeviceByFactoryId" resultType="com.rongwei.bsentity.vo.GanttVos">
-        SELECT DISTINCTROW
-            a1.PROCESSWORKSHOPID AS processworkshopid,
-            a1.PROCESSWORKSHOP AS processworkshop,
-            a1.PROCESSDEVICEID AS processdeviceid,
-            b.CHECKITEMNAME AS processdevice,
+        SELECT
+            apope.PROCESSDEVICEID AS processdeviceid,
+            ifnull(aci.CHECKITEMNAME,apope.PROCESSDEVICE) AS processdevice,
+            ifnull(aci.USEDEPTID,apope.PROCESSWORKSHOPID) AS processworkshopid,
+            ifnull(aci.USEDEPTNAME,apope.PROCESSWORKSHOP) AS processworkshop,
+            aci.CHECKITEMTYPE,
             ape.PRODUCTLINENAME AS productlinename,
-            ape.productlineid AS productlineid,
-            b.CHECKITEMTYPE
+            ape.productlineid AS productlineid
         FROM
-            aps_process_operation_process_equ a1
+            aps_process_operation_process_equ apope
+            LEFT JOIN asp_check_items aci ON apope.PROCESSDEVICEID = aci.ID
             LEFT JOIN (
                 SELECT
                     ape.EQUIPMENTID,
                     apl.PRODUCTLINENAME,
                     apl.ID AS productlineid
                 FROM
-                    aps_production_line apl
-                    JOIN aps_resources_equipment ape ON ape.MAINID = apl.ID
+                    aps_resources_equipment ape
+                    JOIN aps_production_line apl ON ape.MAINID = apl.ID
                 WHERE
                     apl.DELETED = '0'
                     AND ape.DELETED = '0'
-            ) ape ON ape.EQUIPMENTID = a1.PROCESSDEVICEID
-            LEFT JOIN asp_check_items b ON a1.PROCESSDEVICEID = b.ID
+            ) ape ON ape.EQUIPMENTID = apope.PROCESSDEVICEID
         WHERE
-            a1.DELETED = '0'
-            AND a1.TENANTID = #{factoryId}
-            AND ( a1.PROCESSDEVICE IS NOT NULL AND a1.PROCESSDEVICE != '' )
-            AND ( a1.PROCESSWORKSHOP IS NOT NULL AND a1.PROCESSWORKSHOP != '' )
+            apope.DELETED = '0'
+            AND apope.TENANTID = #{factoryId}
+            AND ( apope.PROCESSDEVICEID IS NOT NULL AND apope.PROCESSDEVICEID != '' )
+        group BY
+            processdeviceid
         ORDER BY
-            a1.PROCESSWORKSHOP,
-            a1.PROCESSDEVICE,
-            b.CHECKITEMTYPE
+            processworkshop,processdevice,CHECKITEMTYPE
     </select>
     <select id="getTimeOverlapByEquId" resultType="com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo">
         select apope.*

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

@@ -240,4 +240,8 @@ public class GanttVos {
      * 批次号
      */
     private String showbatchnumber;
+    /**
+     * 工序作业锁定状态
+     */
+    private String processLock;
 }

+ 4 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquMaintenanceTaskDao.java

@@ -2,6 +2,8 @@ package com.rongwei.bscommon.sys.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.rongwei.bsentity.domain.EquMaintenanceTaskDo;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
 
 /**
  * @author shangmi
@@ -10,4 +12,6 @@ import com.rongwei.bsentity.domain.EquMaintenanceTaskDo;
  * @description 保养检修任务
  */
 public interface EquMaintenanceTaskDao extends BaseMapper<EquMaintenanceTaskDo> {
+    @Update(" UPDATE sys_notify_announce SET DELETED='1',MODIFYDATE=NOW() WHERE NOTIFYTYPE = #{notifytype} AND ROPTION = #{roption} AND DELETED='0'")
+    int deleteNotice(@Param("notifytype") String notifytype, @Param("roption") String roption);
 }

+ 2 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquMaintenanceTaskService.java

@@ -20,4 +20,6 @@ public interface EquMaintenanceTaskService extends IService<EquMaintenanceTaskDo
     List<EquMaintenanceTaskDo> getListByYearAndMonth(int year, int month);
 
     List<EquMaintenanceTaskDo> getListByTimeQuantum(int year, int month,boolean stride);
+
+    int deleteNotice(String notifytype, String roption);
 }

+ 10 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquMaintenanceTaskServiceImpl.java

@@ -82,4 +82,14 @@ public class EquMaintenanceTaskServiceImpl extends ServiceImpl<EquMaintenanceTas
                 .eq(EquMaintenanceTaskDo::getMonth,month));
         return maintenanceTaskDao.selectList(queryWrapper);
     }
+
+    /**
+     * 删除对应的消息提醒记录
+     * @return
+     */
+    @Override
+    public int deleteNotice(String notifytype, String roption) {
+
+        return maintenanceTaskDao.deleteNotice(notifytype,roption);
+    }
 }

+ 4 - 1
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquipmentSendNotifyServiceImpl.java

@@ -84,6 +84,8 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
     @Autowired
     private SysFileItemService sysFileItemService;
 
+
+
     /**
      * 根据任务ID发送 提醒
      *
@@ -129,7 +131,8 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
                     maintenanceTaskDo.getWorkshop(), maintenanceTaskDo.getEquipmentname(), maintenanceTaskDo.getEquipmentnumber(),
                     maintenanceTaskDo.getMaintenancesite(), maintenanceTaskDo.getPrincipal(), maintenanceTaskDo.getOtherengineers());
             // 删除提醒
-            CXCommonUtils.deleteSendNotify("maintain", id);
+       //     CXCommonUtils.deleteSendNotify("maintain", id);
+            maintenanceTaskService.deleteNotice("maintain", id);
 
             // 发送提醒
             CXCommonUtils.sendNotify(title, context, null, userId.stream().distinct().collect(Collectors.toList()),

+ 1 - 1
cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquLubricationPlanDetailDo.java

@@ -66,7 +66,7 @@ public class EquLubricationPlanDetailDo extends BaseDo implements Serializable {
      * 润滑量
      */
     @TableField("LUBRICATIONAMOUNT")
-    private BigDecimal lubricationamount;
+    private String lubricationamount;
 
     /**
      * 频率

+ 1 - 1
cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquLubricationTaskDetailDo.java

@@ -67,7 +67,7 @@ public class EquLubricationTaskDetailDo extends BaseDo implements Serializable {
      * 润滑量
      */
     @TableField("LUBRICATIONAMOUNT")
-    private BigDecimal lubricationamount;
+    private String lubricationamount;
 
     /**
      * 频率