Przeglądaj źródła

Merge remote-tracking branch 'origin/master'

李进 1 rok temu
rodzic
commit
a2bd903712

+ 3 - 1
device-api-service-merc-mini/src/main/java/com/xy/controller/MercMiniDeviceController.java

@@ -196,7 +196,9 @@ public class MercMiniDeviceController {
         R checkR = this.checkDeviceByMerc(deviceInfo);
         if (checkR.getCode() == R.Enum.SUCCESS.getCode()) {
             Integer activeState = SysDictUtils.getValue(EnumDeviceActiveStatus.Code.CODE.getCode(), EnumDeviceActiveStatus.N_1.getCode(), Integer.class);
-            if (!deviceInfo.getActiveState().equals(activeState)) {
+            String refMercCode = deviceInfo.getMercCode();
+            //非质检商户需要进行判断,质检商户跳过
+            if (!"10001".equals(refMercCode) && !deviceInfo.getActiveState().equals(activeState)) {
                 return R.fail("机器未激活");
             }
             return R.ok();

+ 6 - 0
device-api-service/pom.xml

@@ -104,5 +104,11 @@
             <version>1.0</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>com.xy</groupId>
+            <artifactId>xy-cloudwalk</artifactId>
+            <version>1.0</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 </project>

+ 49 - 2
device-api-service/src/main/java/com/xy/service/DeviceInfoServiceImpl.java

@@ -27,6 +27,7 @@ import com.xy.device.EnumDeviceFaultLevelPayThreshold;
 import com.xy.device.EnumDeviceOnlineStatus;
 import com.xy.device.EnumQualityMercSets;
 import com.xy.dto.*;
+import com.xy.dto.api.biz.ContainerAddDTO;
 import com.xy.dto.be.MercDto;
 import com.xy.entity.*;
 import com.xy.enums.FileExportType;
@@ -75,6 +76,7 @@ import static com.xy.utils.PlusBeans.*;
 @Api(tags = "设备-信息")
 public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceInfo> implements DeviceInfoService {
 
+    private final CloudWalkApiService cloudWalkApiService;
     /**
      * 质检商户code
      */
@@ -271,7 +273,17 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
         DeviceInfo deviceInfo = copy(DeviceInfo.class, update)
                 .setUpdateTime(LocalDateTime.now());
         updateById(deviceInfo);
-        DeviceInfoDto.Vo device = R.feignCheckData(this.obj(new DeviceInfoDto.Obj().setDeviceId(update.getDeviceId()).setIsSysinfo(true)));
+        Long deviceId = deviceInfo.getDeviceId();
+        DeviceInfoDto.Vo device = R.feignCheckData(this.obj(new DeviceInfoDto.Obj().setDeviceId(deviceId).setIsSysinfo(true)));
+        Long algorithmId = update.getAlgorithmId();
+        if (algorithmId != null && AlgorithmTypeEnum.CLOUD.getId() == algorithmId) {
+            //云从算法
+            boolean b = cloudWalkApiService.checkDeviceExist(deviceId);
+            if (!b) {
+                //货柜不存在,新增
+                cloudWalkApiService.containerAdd(new ContainerAddDTO().setContainerCode(String.valueOf(deviceId)));
+            }
+        }
         Integer deviceType = device.getDeviceType();
         if (ObjectUtil.equals(DeviceTypeEnum.TYPE5.getCode(), deviceType)) {
             DeviceUpdateDTO deviceUpdateDTO = new DeviceUpdateDTO();
@@ -415,9 +427,21 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
         List<DeviceInfo> deviceInfos = this.listByIds(deviceIds);
         for (DeviceInfo deviceInfo : deviceInfos) {
             Integer deviceType = deviceInfo.getDeviceType();
+            Long deviceId = deviceInfo.getDeviceId();
+
             if (ObjectUtil.equals(deviceType, DeviceTypeEnum.TYPE5.getCode())) {
                 //支付宝设备算法
                 algorithmId = AlgorithmTypeEnum.ALIPAY.getId();
+            } else {
+                //非支付宝算法
+                if (AlgorithmTypeEnum.CLOUD.getId() == algorithmId) {
+                    //云从算法
+                    boolean b = cloudWalkApiService.checkDeviceExist(deviceId);
+                    if (!b) {
+                        //货柜不存在,新增
+                        cloudWalkApiService.containerAdd(new ContainerAddDTO().setContainerCode(String.valueOf(deviceId)));
+                    }
+                }
             }
             int refMercId = deviceInfo.getMercId().intValue();
             String refMercCode = deviceInfo.getMercCode();
@@ -654,6 +678,27 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
         } else {
             dto.setActiveState("1");
         }
+
+
+        Integer busyStatus = dto.getBusyStatus();
+        Integer onlineStatus = dto.getOnlineStatus();
+        Integer deviceType = dto.getDeviceType();
+        //条件查询 在线状态,运营状态,设备类型,
+        List<Long> deviceIdList = new ArrayList<>();
+        if (deviceId != null) {
+            deviceIdList.add(deviceId);
+        }
+        if (onlineStatus != null) {
+            List<DeviceStatus> deviceStatusList = deviceStatusService.list(Wrappers.<DeviceStatus>lambdaQuery()
+                    .eq(onlineStatus != null, DeviceStatus::getNetState, onlineStatus)
+            );
+            if (CollUtil.isNotEmpty(deviceStatusList)) {
+                List<Long> dbDeviceIdList = deviceStatusList.stream().map(DeviceStatus::getDeviceId).collect(Collectors.toList());
+                deviceIdList.addAll(dbDeviceIdList);
+            }
+        }
+        dto.setDeviceIdList(deviceIdList);
+
         List<DeviceInfoDto.MercHomeCountVO> list = this.baseMapper.merHomeCountList(dto);
         if (CollUtil.isEmpty(list)) {
             return R.ok(Collections.emptyList());
@@ -664,7 +709,9 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
         //非质检商户才需要激活
         lqw.eq(!isQa, DeviceInfo::getActiveState, DeviceActiveStateEnum.TRUE.getCode());
         lqw.eq(mercId != null, DeviceInfo::getMercId, mercId);
-        lqw.eq(deviceId != null, DeviceInfo::getDeviceId, deviceId);
+        lqw.eq(busyStatus != null, DeviceInfo::getBusyState, busyStatus);
+        lqw.eq(deviceType != null, DeviceInfo::getDeviceType, deviceType);
+        lqw.in(CollUtil.isNotEmpty(deviceIdList), DeviceInfo::getDeviceId, deviceIdList);
         lqw.like(StrUtil.isNotEmpty(deviceName), DeviceInfo::getDeviceName, deviceName).orderByAsc(true, DeviceInfo::getDeviceName, DeviceInfo::getDeviceId);
         List<DeviceInfo> deviceInfoList = this.list(lqw);
         //未分配线路的设置默认值

+ 16 - 4
device-api-service/src/main/resources/mapper/DeviceInfoMapper.xml

@@ -3,6 +3,7 @@
 <mapper namespace="com.xy.mapper.DeviceInfoMapper">
     <resultMap id="queryPageMap" type="com.xy.mapper.entity.DeviceInfoQueryPage">
         <id column="device_id" property="deviceId"/>
+        <result column="algorithm_id" property="algorithmId"/>
         <result column="device_name" property="deviceName"/>
         <result column="m" property="m"/>
         <result column="lon" property="lon"/>
@@ -308,7 +309,15 @@
 
         <where>
             <if test="query.activeState != null and query.activeState != ''">
-                active_state = #{query.activeState}
+                and active_state = #{query.activeState}
+            </if>
+
+            <if test="query.busyStatus != null">
+                and busy_state = #{query.busyStatus}
+            </if>
+
+            <if test="query.deviceType != null">
+                and device_type = #{query.deviceType}
             </if>
 
             <if test="query.mercId != null">
@@ -317,8 +326,11 @@
             <if test="query.deviceName != null and query.deviceName != ''">
                 and device_name like concat('%', #{query.deviceName}, '%')
             </if>
-            <if test="query.deviceId != null">
-                and device_id = #{query.deviceId}
+            <if test="query.deviceIdList != null and query.deviceIdList.size > 0">
+                and device_id in
+                <foreach collection="query.deviceIdList" index="index" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
             </if>
         </where>
         group by place_line_id
@@ -329,7 +341,7 @@
         LEFT JOIN device_status s ON s.device_id = d.device_id
         <where>
             d.active_state = '1'
-            <if test="mercIdList != null and mercIdList.size()>0">
+            <if test="mercIdList != null and mercIdList.size() > 0">
                 AND d.merc_id IN
                 <foreach collection="mercIdList" item="mercId" index="index"
                          open="(" close=")" separator=",">

+ 12 - 1
device-api/src/main/java/com/xy/dto/DeviceInfoDto.java

@@ -652,7 +652,6 @@ public class DeviceInfoDto {
         @ApiModelProperty(value = "商户id")
         private Long mercId;
 
-
         @ApiModelProperty(value = "设备名称")
         private String deviceName;
 
@@ -662,6 +661,18 @@ public class DeviceInfoDto {
         @ApiModelProperty("激活状态")
         private String activeState;
 
+        @ApiModelProperty("在线状态-字典类型:device_online_status(1-在线,2-离线)")
+        private Integer onlineStatus;
+
+        @ApiModelProperty("运营状态-字典类型:device_busy_status(1-运营中,2-已停运)")
+        private Integer busyStatus;
+
+        @ApiModelProperty("设备类型-字典类型:device_type")
+        private Integer deviceType;
+
+        @ApiModelProperty(value = "设备ID", hidden = true)
+        private List<Long> deviceIdList;
+
     }
 
 

+ 1 - 1
device-start/src/main/resources/bootstrap.yml

@@ -10,7 +10,7 @@ cloud:
   center:
     url: 119.96.213.127:9007
     config:
-      shared-configs: redis.yaml,mysql.yaml,mqtt.yaml,xxl-job.yaml,algorithm.yaml,xy-oss.yaml,alipay.yaml
+      shared-configs: redis.yaml,mysql.yaml,mqtt.yaml,xxl-job.yaml,algorithm.yaml,xy-oss.yaml,alipay.yaml,cloudwalk.yaml
       name: device
   service:
     name: dev-device