caozixuan vor 1 Jahr
Ursprung
Commit
7b51af38de

+ 35 - 22
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDeviceInOutServiceImpl.java

@@ -38,21 +38,28 @@ import java.util.stream.Stream;
  */
 @Service
 public class TBDeviceInOutServiceImpl extends ServiceImpl<TBDeviceInOutMapper, TBDeviceInOut> implements TBDeviceInOutService {
+
     @Resource
     private SysDeviceService sysDeviceService;
+
     @Resource
     private SequenceService sequenceService;
+
     @Resource
     private SysUserService sysUserService;
+
     @Resource
     private TBCrmService tbCrmService;
+
     @Resource
     private SysCustomService sysCustomService;
+
     @Resource
     private TBDeviceDeliveryService tbDeviceDeliveryService;
 
     @Override
-    public IPage<DeviceInOutResult> findDeviceInOutPageBySop(Long serviceUnitId, DeviceUsageTypeEnum usageType, Long userId, DeviceStatusEnum deviceStatus, Long inOutTimeStart, Long inOutTimeEnd, String deviceNo, String deviceSerialNo, String customName, String location, String address, String serialNo, Integer pageNumber, Integer pageSize) {
+    public IPage<DeviceInOutResult> findDeviceInOutPageBySop(Long serviceUnitId, DeviceUsageTypeEnum usageType, Long userId, DeviceStatusEnum deviceStatus, Long inOutTimeStart, Long inOutTimeEnd, String deviceNo,
+            String deviceSerialNo, String customName, String location, String address, String serialNo, Integer pageNumber, Integer pageSize) {
         deviceNo = SystemConstant.translateSpecificSign(deviceNo);
         deviceSerialNo = SystemConstant.translateSpecificSign(deviceSerialNo);
         customName = SystemConstant.translateSpecificSign(customName);
@@ -62,8 +69,9 @@ public class TBDeviceInOutServiceImpl extends ServiceImpl<TBDeviceInOutMapper, T
 
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
-        IPage<DeviceInOutResult> result = this.baseMapper.findDeviceInOutPageBySop(new Page<>(pageNumber, pageSize), serviceUnitId, usageType,
-                userId, deviceStatus, inOutTimeStart, inOutTimeEnd, deviceNo, deviceSerialNo, customName, location, address, serialNo, dpr);
+        IPage<DeviceInOutResult> result = this.baseMapper.findDeviceInOutPageBySop(new Page<>(pageNumber, pageSize),
+                serviceUnitId, usageType, userId, deviceStatus, inOutTimeStart, inOutTimeEnd, deviceNo, deviceSerialNo,
+                customName, location, address, serialNo, dpr);
         result.getRecords().forEach(e -> {
             String addressArrTemp = e.getAddressArrTemp();
             String locationArrTemp = e.getLocationArrTemp();
@@ -86,12 +94,12 @@ public class TBDeviceInOutServiceImpl extends ServiceImpl<TBDeviceInOutMapper, T
             crmNo = sopCrmInfo.getCrmNo();
         }
 
-        List<TBDeviceDelivery> tbDeviceDeliveryList = tbDeviceDeliveryService.list(new QueryWrapper<TBDeviceDelivery>()
-                .lambda()
-                .eq(TBDeviceDelivery::getEffect, true));
+        List<TBDeviceDelivery> tbDeviceDeliveryList = tbDeviceDeliveryService.list(
+                new QueryWrapper<TBDeviceDelivery>().lambda().eq(TBDeviceDelivery::getEffect, true));
 
         List<DeviceInOutResult> result = new ArrayList<>();
-        List<DeviceInOutResult> deviceInOutResultList = this.baseMapper.findDeviceCanOutInfo(supplierId, DeviceStatusEnum.NORMAL, InOutTypeEnum.IN);
+        List<DeviceInOutResult> deviceInOutResultList = this.baseMapper.findDeviceCanOutInfo(supplierId,
+                DeviceStatusEnum.NORMAL, InOutTypeEnum.IN);
         for (DeviceInOutResult e : deviceInOutResultList) {
             String locationArrTemp = e.getLocationArrTemp();
             if (locationArrTemp != null && locationArrTemp.length() > 0) {
@@ -118,6 +126,11 @@ public class TBDeviceInOutServiceImpl extends ServiceImpl<TBDeviceInOutMapper, T
                         e.setDefaultData(true);
                         e.setExpressNo(tbDeviceDelivery.getExpressNo());
                         result.add(e);
+                    } else if (deliveryCrmNo == null || deliveryCrmNo.length() == 0){
+                        // 也可以选用设备发货管理里没有绑sop的
+                        e.setDefaultData(true);
+                        e.setExpressNo(tbDeviceDelivery.getExpressNo());
+                        result.add(e);
                     }
                 } else {
                     // 用于培训
@@ -141,7 +154,6 @@ public class TBDeviceInOutServiceImpl extends ServiceImpl<TBDeviceInOutMapper, T
         }).collect(Collectors.toList());
     }
 
-
     @Transactional
     @Override
     public void deviceInOutSubmit(DeviceInOutSubmitParam deviceInOutSubmitParam) {
@@ -152,6 +164,13 @@ public class TBDeviceInOutServiceImpl extends ServiceImpl<TBDeviceInOutMapper, T
 
         Long serviceUnitId = deviceInOutSubmitParam.getServiceUnitId();
         String crmNo = deviceInOutSubmitParam.getCrmNo();
+        String sopNo = deviceInOutSubmitParam.getSopNo();
+
+        List<TBDeviceInOut> alreadyOutList = this.list(
+                new QueryWrapper<TBDeviceInOut>().lambda().eq(TBDeviceInOut::getSopNo, sopNo)
+                        .eq(TBDeviceInOut::getType, InOutTypeEnum.OUT));
+        List<String> alreadyOutSerialNoList = alreadyOutList.stream().map(TBDeviceInOut::getDeviceSerialNo).distinct().collect(Collectors.toList());
+
         String customName = null;
         if (crmNo != null && crmNo.length() > 0) {
             TBCrm tbCrm = tbCrmService.findByCrmNo(crmNo);
@@ -162,13 +181,8 @@ public class TBDeviceInOutServiceImpl extends ServiceImpl<TBDeviceInOutMapper, T
                     customName = sysCustom.getName();
                 }
             }
-
-
         }
 
-
-        String sopNo = deviceInOutSubmitParam.getSopNo();
-
         DeviceUsageTypeEnum usageType;
         if (sopNo != null && sopNo.length() > 0) {
             usageType = DeviceUsageTypeEnum.PROJECT;
@@ -181,7 +195,7 @@ public class TBDeviceInOutServiceImpl extends ServiceImpl<TBDeviceInOutMapper, T
 
         List<DeviceInOutForm> deviceInOutFormList = deviceInOutSubmitParam.getDeviceInOutFormList();
         String finalCustomName = customName;
-        List<TBDeviceInOut> tbDeviceInOutList = deviceInOutFormList.stream().flatMap(e -> {
+        List<TBDeviceInOut> tbDeviceInOutList = deviceInOutFormList.stream().filter(e -> !alreadyOutSerialNoList.contains(e.getSerialNo())).flatMap(e -> {
             TBDeviceInOut tbDeviceInOut = new TBDeviceInOut();
             if (serviceUnitId != null && serviceUnitId > 0) {
                 tbDeviceInOut.setServiceId(serviceUnitId);
@@ -213,13 +227,10 @@ public class TBDeviceInOutServiceImpl extends ServiceImpl<TBDeviceInOutMapper, T
             }
 
             UpdateWrapper<SysDevice> updateWrapper = new UpdateWrapper<>();
-            updateWrapper.lambda()
-                    .set(SysDevice::getLocation, e.getAddress())
+            updateWrapper.lambda().set(SysDevice::getLocation, e.getAddress())
                     .set(SysDevice::getLocationArr, JSON.toJSONString(e.getAddressArr()))
                     .set(SysDevice::getScanCount, e.getScanCount())
-                    .set(SysDevice::getStatus, e.getDeviceStatus())
-                    .set(SysDevice::getBound, inOutType)
-                    .eq(SysDevice::getSerialNo, e.getSerialNo());
+                    .set(SysDevice::getStatus, e.getDeviceStatus()).set(SysDevice::getBound, inOutType).eq(SysDevice::getSerialNo, e.getSerialNo());
             sysDeviceService.update(updateWrapper);
 
             return Stream.of(tbDeviceInOut);
@@ -237,7 +248,8 @@ public class TBDeviceInOutServiceImpl extends ServiceImpl<TBDeviceInOutMapper, T
     }
 
     @Override
-    public IPage<DeviceInOutResult> findDeviceInOutPageBySource(Long serviceUnitId, DeviceUsageTypeEnum usageType, Long userId, DeviceStatusEnum deviceStatus, Long inOutTimeStart, Long inOutTimeEnd, String deviceNo, String deviceSerialNo, String customName, String location, String address, String serialNo, Integer pageNumber, Integer pageSize) {
+    public IPage<DeviceInOutResult> findDeviceInOutPageBySource(Long serviceUnitId, DeviceUsageTypeEnum usageType, Long userId, DeviceStatusEnum deviceStatus, Long inOutTimeStart, Long inOutTimeEnd, String deviceNo,
+            String deviceSerialNo, String customName, String location, String address, String serialNo, Integer pageNumber, Integer pageSize) {
         deviceNo = SystemConstant.translateSpecificSign(deviceNo);
         customName = SystemConstant.translateSpecificSign(customName);
         location = SystemConstant.translateSpecificSign(location);
@@ -248,8 +260,9 @@ public class TBDeviceInOutServiceImpl extends ServiceImpl<TBDeviceInOutMapper, T
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
 
-        IPage<DeviceInOutResult> result = this.baseMapper.findDeviceInOutPageBySource(new Page<>(pageNumber, pageSize), serviceUnitId, usageType,
-                userId, deviceStatus, inOutTimeStart, inOutTimeEnd, deviceNo, deviceSerialNo, customName, location, address, serialNo, dpr);
+        IPage<DeviceInOutResult> result = this.baseMapper.findDeviceInOutPageBySource(new Page<>(pageNumber, pageSize),
+                serviceUnitId, usageType, userId, deviceStatus, inOutTimeStart, inOutTimeEnd, deviceNo, deviceSerialNo,
+                customName, location, address, serialNo, dpr);
 
         result.getRecords().forEach(e -> {
             String addressArrTemp = e.getAddressArrTemp();