Browse Source

Merge branch 'master' into prod

李进 1 year ago
parent
commit
183fcf8ac5

+ 6 - 0
device-api-service/src/main/java/com/xy/entity/DeviceStatus.java

@@ -182,4 +182,10 @@ public class DeviceStatus {
      * 是否使用电池
      */
     private Boolean isUseBattery;
+
+    /**
+     * 是否可交易
+     */
+    private Boolean isPay;
+
 }

+ 17 - 23
device-api-service/src/main/java/com/xy/service/DeviceInfoServiceImpl.java

@@ -288,18 +288,19 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
             return R.fail("设备已停运");
         }
         DeviceStatusDto.Vo deviceStatus = deviceInfo.getDeviceStatus();
-        SysDictRedis sysDictRedis = SysDictUtils.get(EnumDeviceFaultLevelPayThreshold.Code.CODE.getCode(), EnumDeviceFaultLevelPayThreshold.NOT_PAY.getCode());
-        if (deviceInfo.getFaultLevel() >= Integer.valueOf(sysDictRedis.getValue())) {
-            return R.fail("设备故障");
-        }
-        check(deviceStatus.getNetState(), 2, "设备已离线");
-        check(obj.getDoor() != null && obj.getDoor() == 1 ? deviceStatus.getDoorStateR() : deviceStatus.getDoorStateL(), 1, "设备正在使用中,请稍后");
-        //质检用户不检查
         SysDictRedis qualitySets = SysDictUtils.get(EnumQualityMercSets.Code.CODE.getCode(), EnumQualityMercSets.MERC_CODE.getCode());
+        //设备当前商户是质检时不检查
         if (!qualitySets.getValue().equals(deviceInfo.getMercCode())) {
+            check(deviceInfo.getActiveState(), 2, "设备未激活");
             check(deviceInfo.getFreezeStatus(), 2, "设备已冻结");
             check(obj.getDoor() != null && obj.getDoor() == 1 ? deviceStatus.getLockStateR() : deviceStatus.getLockStateL(), 2, "设备已锁机");
+            check(deviceStatus.getIsPay(), Boolean.FALSE, "设备不可交易");
+            check(deviceInfo.getBusyState(), 2, "设备已停运");
+            SysDictRedis sysDictRedis = SysDictUtils.get(EnumDeviceFaultLevelPayThreshold.Code.CODE.getCode(), EnumDeviceFaultLevelPayThreshold.NOT_PAY.getCode());
+            check(deviceInfo.getFaultLevel(), sysDictRedis.getValue(), "设备故障");
         }
+        check(deviceStatus.getNetState(), 2, "设备已离线");
+        check(obj.getDoor() != null && obj.getDoor() == 1 ? deviceStatus.getDoorStateR() : deviceStatus.getDoorStateL(), 1, "设备正在使用中,请稍后");
         return R.ok(deviceInfo);
     }
 
@@ -475,6 +476,7 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
         }
         //更新商户设备授权
         List<DeviceInfo> deviceInfos = this.listByIds(deviceIds);
+        List<DeviceStatus> deviceStatuses = new ArrayList<>();
         for (DeviceInfo deviceInfo : deviceInfos) {
             Integer deviceType = deviceInfo.getDeviceType();
             Long deviceId = deviceInfo.getDeviceId();
@@ -514,24 +516,16 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
             }
             //绑定关系
             deviceInfo.setMercId(mercId).setMercCode(mercCode).setAlgorithmId(algorithmId).setMercName(mercName);
+            //标记机器可交易
+            DeviceStatus deviceStatus = new DeviceStatus()
+                    .setDeviceId(deviceInfo.getDeviceId())
+                    .setIsPay(true);
+            deviceStatuses.add(deviceStatus);
         }
         saveOrUpdateBatch(deviceInfos);
-//        //原来存在的设备关系,不在最终设备列表中的移除
-//        if (CollUtil.isNotEmpty(devices)) {
-//            List<Long> oldIds = new ArrayList<>();
-//            List<Long> removeIds = new ArrayList<>();
-//            devices.forEach(device -> oldIds.add(device.getDeviceId()));
-//            oldIds.forEach(deviceId -> {
-//                //不在最终设备列表中的待移除
-//                if (!deviceIds.contains(deviceId)) {
-//                    removeIds.add(deviceId);
-//                }
-//            });
-//            if (CollUtil.isNotEmpty(removeIds)) {
-//                List<DeviceInfo> removeList = this.listByIds(removeIds);
-//                removeMerRefDevices(removeList, parentId);
-//            }
-//        }
+        if (Emptys.check(deviceStatuses)) {
+            deviceStatusService.updateBatchById(deviceStatuses);
+        }
         return R.ok(Boolean.TRUE);
     }
 

+ 13 - 1
device-api-service/src/main/java/com/xy/service/DeviceQualityServiceImpl.java

@@ -53,6 +53,8 @@ public class DeviceQualityServiceImpl extends ServiceImpl<DeviceQualityMapper, D
 
     private DeviceSysinfoServiceImpl deviceSysinfoService;
 
+    private DeviceStatusServiceImpl deviceStatusService;
+
     private void queryDeviceQualityValue(List<DeviceQualityDto.Vo> list) {
         if (Emptys.check(list)) {
             JList<Integer> qualityIds = new JArrayList<>(list).getProperty(DeviceQualityDto.Vo::getQualityId);
@@ -125,10 +127,12 @@ public class DeviceQualityServiceImpl extends ServiceImpl<DeviceQualityMapper, D
         List<DeviceSysinfo> deviceSysinfos = deviceSysinfoService.list(new LambdaQueryWrapper<DeviceSysinfo>().in(DeviceSysinfo::getDeviceId, new JArrayList<>(vos).getProperty(DeviceQualityDto.Vo::getDeviceId)));
         JMap<Long, DeviceSysinfo> deviceSysinfosJMaps = new JArrayList<>(deviceSysinfos).toMap(DeviceSysinfo::getDeviceId).cover();
         int qualified = SysDictUtils.getValue(EnumDeviceQualityStatus.Code.CODE.getCode(), EnumDeviceQualityStatus.QUALIFIED.getCode(), Integer.class);
+        List<DeviceStatus> deviceStatuses = new ArrayList<>();
         for (DeviceQuality deviceQuality : deviceQualities) {
             if (deviceQuality.getQualityState() != null) {
-                //合格时检查磁盘空间和内存容量
+                //合格
                 if (qualified == deviceQuality.getQualityState()) {
+                    //检查磁盘空间和内存容量
                     DeviceSysinfo deviceSysinfo = deviceSysinfosJMaps.get(deviceQuality.getDeviceId());
                     Integer diskSpace = deviceSysinfo.getDiskSpace();
                     int diskSpaceSize = SysDictUtils.getValue(EnumDeviceQualityThreshold.Code.CODE.getCode(), EnumDeviceQualityThreshold.DISK_SPACE_SIZE.getCode(), Integer.class);
@@ -140,6 +144,11 @@ public class DeviceQualityServiceImpl extends ServiceImpl<DeviceQualityMapper, D
                     if (memerySpace == null || memerySpace < memerySpaceSize) {
                         return R.fail(deviceSysinfo.getDeviceId() + "内存容量不足" + memerySpaceSize + "M");
                     }
+                    //标记机器不可交易
+                    DeviceStatus deviceStatus = new DeviceStatus()
+                            .setDeviceId(deviceQuality.getDeviceId())
+                            .setIsPay(false);
+                    deviceStatuses.add(deviceStatus);
                 }
                 deviceQuality.setQualityAuditUserId(AuthorizeUtils.getLoginId(Long.class));
             }
@@ -149,6 +158,9 @@ public class DeviceQualityServiceImpl extends ServiceImpl<DeviceQualityMapper, D
             deviceQuality.setUpdateTime(now);
         }
         updateBatchById(deviceQualities);
+        if(Emptys.check(deviceStatuses)) {
+            deviceStatusService.updateBatchById(deviceStatuses);
+        }
         return R.ok();
     }
 

+ 3 - 0
device-api/src/main/java/com/xy/dto/DeviceStatusDto.java

@@ -156,6 +156,9 @@ public class DeviceStatusDto {
         @ApiModelProperty("是否使用电池")
         private Boolean isUseBattery;
 
+        @ApiModelProperty("是否可交易")
+        private Boolean isPay;
+
         @ApiModelProperty("更新时间")
         @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
         private LocalDateTime updateTime;