浏览代码

fix:设备批量签收自动生成超出入库明细bug

caozixuan 1 年之前
父节点
当前提交
78d74f50fc

+ 5 - 1
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDeviceDeliveryServiceImpl.java

@@ -402,6 +402,7 @@ public class TBDeviceDeliveryServiceImpl extends ServiceImpl<TBDeviceDeliveryMap
             case RECEIVE:
             case RECEIVE:
                 // 变更为已签收状态(设备发货列表点击签收触发||sop现场测试签收 -> DELIVER -> RECEIVE)
                 // 变更为已签收状态(设备发货列表点击签收触发||sop现场测试签收 -> DELIVER -> RECEIVE)
                 // 入库签收终止该入库记录的生命周期(出库签收不终止,设备发货出库生命周期的终止是在设备出库提交,生成设备发货入库记录时触发)
                 // 入库签收终止该入库记录的生命周期(出库签收不终止,设备发货出库生命周期的终止是在设备出库提交,生成设备发货入库记录时触发)
+                List<Long> needAutoReceiveIdList = new ArrayList<>();
                 if (tbDeviceDeliveryList.stream()
                 if (tbDeviceDeliveryList.stream()
                         .anyMatch(e -> !DeviceDeliveryStatusEnum.DELIVER.equals(e.getStatus()) || !e.getEffect())) {
                         .anyMatch(e -> !DeviceDeliveryStatusEnum.DELIVER.equals(e.getStatus()) || !e.getEffect())) {
                     throw ExceptionResultEnum.ERROR.exception(
                     throw ExceptionResultEnum.ERROR.exception(
@@ -422,9 +423,12 @@ public class TBDeviceDeliveryServiceImpl extends ServiceImpl<TBDeviceDeliveryMap
                         if (DeviceUsageTypeEnum.PROJECT.equals(e.getUsageType())) {
                         if (DeviceUsageTypeEnum.PROJECT.equals(e.getUsageType())) {
                             throw ExceptionResultEnum.ERROR.exception("项目用途的设备不能手动签收(sop现场环境测试签收)");
                             throw ExceptionResultEnum.ERROR.exception("项目用途的设备不能手动签收(sop现场环境测试签收)");
                         }
                         }
-                        this.autoOutDeviceForTrain(deviceDeliveryIdList);
+                        needAutoReceiveIdList.add(e.getId());
                     }
                     }
                 }).collect(Collectors.toList());
                 }).collect(Collectors.toList());
+                if (CollectionUtils.isNotEmpty(needAutoReceiveIdList)) {
+                    this.autoOutDeviceForTrain(needAutoReceiveIdList);
+                }
                 this.updateBatchById(tbDeviceDeliveryList);
                 this.updateBatchById(tbDeviceDeliveryList);
                 break;
                 break;
             case CANCEL:
             case CANCEL: