Browse Source

aps-在制品库存状态修改

sucheng 2 months ago
parent
commit
e6235026fc

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

@@ -410,12 +410,19 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         //如果是否备料=是,备料对应在制品的备料计划ID=(空),在制品状态=备料中
         if (ObjectUtil.isNotEmpty(apsBlankOrderDo.getPreparematerialbatchno()) && apsBlankOrderDo.getPreparematerial().equals("否")) {
             List<String> batchNumberList = Arrays.asList(apsBlankOrderDo.getPreparematerialbatchno().split(","));
-            apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
-                    .set(ApsWorkInProgressInventoryDo::getPlanmaterialid, null)
-                    .setSql("WORKINPROCESSSTATUS = IF(IF(PREVIOUSWORKINPROCESSSTATUS != '' && PREVIOUSWORKINPROCESSSTATUS is not null,PREVIOUSWORKINPROCESSSTATUS,'备料中') = '待加工','备料中',PREVIOUSWORKINPROCESSSTATUS)")
-                    .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
+            List<ApsWorkInProgressInventoryDo> apsWorkInProgressInventoryDos = apsWorkInProgressInventoryService.list(new LambdaQueryWrapper<ApsWorkInProgressInventoryDo>()
                     .in(ApsWorkInProgressInventoryDo::getBatchnumber, batchNumberList));
-
+            List<String> workInProgressIds = apsWorkInProgressInventoryDos.stream().filter(item -> StringUtils.isNotBlank(item.getPreviousworkinprocessstatus()))
+                    .map(ApsWorkInProgressInventoryDo::getId)
+                    .distinct()
+                    .collect(Collectors.toList());
+            if (!workInProgressIds.isEmpty()) {
+                apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
+                        .set(ApsWorkInProgressInventoryDo::getPlanmaterialid, null)
+                        .setSql("WORKINPROCESSSTATUS = IF(PREVIOUSWORKINPROCESSSTATUS = '待加工','备料中',PREVIOUSWORKINPROCESSSTATUS)")
+                        .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
+                        .in(ApsWorkInProgressInventoryDo::getId, workInProgressIds));
+            }
             //更新坯料计划该字段为空
             apsBlankOrderService.update(new UpdateWrapper<ApsBlankOrderDo>().lambda()
                     .set(ApsBlankOrderDo::getPreparematerialbatchno, null)
@@ -3097,11 +3104,19 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
 //                    .set(ApsWorkInProgressInventoryDo::getWorkinprocessstatus, SaveConstans.WorkInProgressStatus.WAITING)
 //                    .eq(ApsWorkInProgressInventoryDo::getBlankid, req.getId()));
             List<String> batchNumberList = Arrays.asList(apsBlankOrderDo.getPreparematerialbatchno().split(","));
-            apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
-                    .set(ApsWorkInProgressInventoryDo::getPlanmaterialid, null)
-                    .setSql("WORKINPROCESSSTATUS = IF(IF(PREVIOUSWORKINPROCESSSTATUS != '' && PREVIOUSWORKINPROCESSSTATUS is not null,PREVIOUSWORKINPROCESSSTATUS,'备料中') = '待加工','备料中',PREVIOUSWORKINPROCESSSTATUS)")
-                    .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
+            List<ApsWorkInProgressInventoryDo> apsWorkInProgressInventoryDos = apsWorkInProgressInventoryService.list(new LambdaQueryWrapper<ApsWorkInProgressInventoryDo>()
                     .in(ApsWorkInProgressInventoryDo::getBatchnumber, batchNumberList));
+            List<String> workInProgressIds = apsWorkInProgressInventoryDos.stream().filter(item -> StringUtils.isNotBlank(item.getPreviousworkinprocessstatus()))
+                    .map(ApsWorkInProgressInventoryDo::getId)
+                    .distinct()
+                    .collect(Collectors.toList());
+            if (!workInProgressIds.isEmpty()) {
+                apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
+                        .set(ApsWorkInProgressInventoryDo::getPlanmaterialid, null)
+                        .setSql("WORKINPROCESSSTATUS = IF(PREVIOUSWORKINPROCESSSTATUS = '待加工','备料中',PREVIOUSWORKINPROCESSSTATUS)")
+                        .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
+                        .in(ApsWorkInProgressInventoryDo::getId, workInProgressIds));
+            }
             //更新坯料计划该字段为空
             apsBlankOrderService.update(new UpdateWrapper<ApsBlankOrderDo>().lambda()
                     .set(ApsBlankOrderDo::getPreparematerialbatchno, null)
@@ -4023,11 +4038,19 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
              */
             //原批次号(修改前的值),对应的所有在制品的在制品状态=备料中,在制品的备料计划ID=(空)
             if (ObjectUtil.isNotEmpty(delBatchNumberList)) {
-                apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
-                        .set(ApsWorkInProgressInventoryDo::getPlanmaterialid, null)
-                        .setSql("WORKINPROCESSSTATUS = IF(IF(PREVIOUSWORKINPROCESSSTATUS != '' && PREVIOUSWORKINPROCESSSTATUS is not null,PREVIOUSWORKINPROCESSSTATUS,'备料中') = '待加工','备料中',PREVIOUSWORKINPROCESSSTATUS)")
-                        .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
+                List<ApsWorkInProgressInventoryDo> apsWorkInProgressInventoryDos = apsWorkInProgressInventoryService.list(new LambdaQueryWrapper<ApsWorkInProgressInventoryDo>()
                         .in(ApsWorkInProgressInventoryDo::getBatchnumber, delBatchNumberList));
+                List<String> workInProgressIds = apsWorkInProgressInventoryDos.stream().filter(item -> StringUtils.isNotBlank(item.getPreviousworkinprocessstatus()))
+                        .map(ApsWorkInProgressInventoryDo::getId)
+                        .distinct()
+                        .collect(Collectors.toList());
+                if (!workInProgressIds.isEmpty()) {
+                    apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
+                            .set(ApsWorkInProgressInventoryDo::getPlanmaterialid, null)
+                            .setSql("WORKINPROCESSSTATUS = IF(PREVIOUSWORKINPROCESSSTATUS = '待加工','备料中',PREVIOUSWORKINPROCESSSTATUS)")
+                            .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
+                            .in(ApsWorkInProgressInventoryDo::getId, workInProgressIds));
+                }
 //            //更新坯料计划该字段为空
 //            apsBlankOrderService.update(new UpdateWrapper<ApsBlankOrderDo>().lambda()
 //                    .set(ApsBlankOrderDo::getPreparematerialbatchno, null)

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

@@ -1338,11 +1338,19 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
             //如果是否备料=是,备料对应在制品的备料计划ID=(空),在制品状态=备料中
             if (ObjectUtil.isNotEmpty(apsBlankOrderDo.getPreparematerialbatchno())) {
                 List<String> batchNumberList = Arrays.asList(apsBlankOrderDo.getPreparematerialbatchno().split(","));
-                apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
-                        .set(ApsWorkInProgressInventoryDo::getPlanmaterialid, null)
-                        .setSql("WORKINPROCESSSTATUS = IF(IF(PREVIOUSWORKINPROCESSSTATUS != '' && PREVIOUSWORKINPROCESSSTATUS is not null,PREVIOUSWORKINPROCESSSTATUS,'备料中') = '待加工','备料中',PREVIOUSWORKINPROCESSSTATUS)")
-                        .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
+                List<ApsWorkInProgressInventoryDo> apsWorkInProgressInventoryDos = apsWorkInProgressInventoryService.list(new LambdaQueryWrapper<ApsWorkInProgressInventoryDo>()
                         .in(ApsWorkInProgressInventoryDo::getBatchnumber, batchNumberList));
+                List<String> workInProgressIds = apsWorkInProgressInventoryDos.stream().filter(item -> StringUtils.isNotBlank(item.getPreviousworkinprocessstatus()))
+                        .map(ApsWorkInProgressInventoryDo::getId)
+                        .distinct()
+                        .collect(Collectors.toList());
+                if (!workInProgressIds.isEmpty()) {
+                    apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
+                            .set(ApsWorkInProgressInventoryDo::getPlanmaterialid, null)
+                            .setSql("WORKINPROCESSSTATUS = IF(PREVIOUSWORKINPROCESSSTATUS = '待加工','备料中',PREVIOUSWORKINPROCESSSTATUS)")
+                            .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
+                            .in(ApsWorkInProgressInventoryDo::getId, workInProgressIds));
+                }
 
                 //更新坯料计划该字段为空
                 apsBlankOrderService.update(new UpdateWrapper<ApsBlankOrderDo>().lambda()