Parcourir la source

优化service-iot服务中设备信息表-新增接口,处理子系统推送过来设备信息入库校验逻辑,开发service-iot服务中设备信息表-物联中心绑定子系统同步过来的设备接口

james il y a 22 heures
Parent
commit
c74ddf1084

+ 11 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpDeviceInfoController.java

@@ -53,6 +53,17 @@ public class DmpDeviceInfoController {
         return ApiResult.success();
     }
 
+    /**
+     * 物联中心绑定子系统同步过来的设备
+     * @param dmpDeviceInfo
+     * @return
+     */
+    @PutMapping
+    public ApiResult<Void> bindSubsystemDevice(@RequestBody DmpDeviceInfo dmpDeviceInfo) {
+        dmpDeviceInfoService.bindSubsystemDevice(dmpDeviceInfo);
+        return ApiResult.success();
+    }
+
     /**
      * 更新设备列表状态
      * @param queryVO

+ 1 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDeviceInfoMapper.java

@@ -42,4 +42,5 @@ public interface DmpDeviceInfoMapper extends CrudMapper<DmpDeviceInfo> {
     List<BaseAlarm> baseAlarmList(@Param("deviceIdList") List<String> deviceIdList);
 
     Integer sysTenantId(@Param("domain") String domain);
+    Integer sysTenantCount(@Param("tenantId") Integer tenantId);
 }

+ 2 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDeviceInfoService.java

@@ -29,6 +29,8 @@ public interface DmpDeviceInfoService extends CrudService<DmpDeviceInfo> {
 
     void update(DmpDeviceInfo dmpDeviceInfo);
 
+    void bindSubsystemDevice(DmpDeviceInfo dmpDeviceInfo);
+
     boolean checkNameUnique(DmpDeviceInfo dmpDeviceInfo);
 
     boolean checkNameUnique1(DmpDeviceInfo dmpDeviceInfo,Integer tenantId);

+ 33 - 2
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java

@@ -541,6 +541,10 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
             throw new BusinessException("新增设备信息'" + dmpDeviceInfo.getDeviceId() + "'失败,设备信息已存在");
         }
         List<DmpProductInfo> list = baseMapper.getProductInfo(dmpDeviceInfo.getProductCode());
+        int count = 0;
+        if(dmpDeviceInfo.getTenantId() != null){
+            count = baseMapper.sysTenantCount(dmpDeviceInfo.getTenantId());
+        }
         if (CollectionUtils.isNotEmpty(list)) {
             dmpDeviceInfo.setDeviceType(list.get(0).getDeviceType());
             dmpDeviceInfo.setProductId(list.get(0).getId());
@@ -566,8 +570,24 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
             dmpDeviceStatus.setProductCode(dmpDeviceInfo.getProductCode());
             dmpDeviceStatus.setDeviceUuid(dmpDeviceInfo.getDeviceUuid());
             dmpDeviceStatusService.save(dmpDeviceStatus);
+        } else if(count > 0){  //子系统同步到平台
+            dmpDeviceInfo.setDeviceType(Integer.valueOf(""));
+            dmpDeviceInfo.setProductId(Integer.valueOf(""));
+            dmpDeviceInfo.setCreatedBy(SecurityUtils.getUsername());
+            dmpDeviceInfo.setCreatedTime(LocalDateTime.now());
+            dmpDeviceInfo.setServiceStatus(1);
+            this.save(dmpDeviceInfo);
+
+            DmpDeviceStatus dmpDeviceStatus = new DmpDeviceStatus();
+            dmpDeviceStatus.setDeviceId(dmpDeviceInfo.getDeviceId());
+            dmpDeviceStatus.setProductId(Integer.valueOf(""));
+            dmpDeviceStatus.setDeviceStatus(2);
+            dmpDeviceStatus.setLastOfflineTime(LocalDateTime.now());
+            dmpDeviceStatus.setProductCode("");
+            dmpDeviceStatus.setDeviceUuid(dmpDeviceInfo.getDeviceUuid());
+            dmpDeviceStatusService.save(dmpDeviceStatus);
         } else {
-            throw new BusinessException("新增设备信息'" + dmpDeviceInfo.getDeviceId() + "'失败,无对应产品信息");
+            throw new BusinessException("新增设备信息'" + dmpDeviceInfo.getDeviceId() + "'失败,无对应产品信息或租户Id");
         }
     }
 
@@ -580,10 +600,21 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
         }
         this.updateById(dmpDeviceInfo);
 
+    }
+
+    @Override
+    public void bindSubsystemDevice(DmpDeviceInfo dmpDeviceInfo) {
+        dmpDeviceInfo.setUpdatedBy(SecurityUtils.getUsername());
+        dmpDeviceInfo.setUpdatedTime(LocalDateTime.now());
+        if (checkNameUnique(dmpDeviceInfo)) {
+            throw new BusinessException("修改设备信息'" + dmpDeviceInfo.getDeviceId() + "'失败,设备信息已存在");
+        }
+        this.updateById(dmpDeviceInfo);
+
         LambdaUpdateWrapper<DmpDeviceStatus> updateWrapper = Wrappers.lambdaUpdate();
         updateWrapper.set(DmpDeviceStatus::getProductId,dmpDeviceInfo.getProductId())
                 .set(DmpDeviceStatus::getProductCode,dmpDeviceInfo.getProductCode())
-                .eq(DmpDeviceStatus::getDeviceId, dmpDeviceInfo.getDeviceId());
+                .eq(DmpDeviceStatus::getDeviceUuid, dmpDeviceInfo.getDeviceUuid());
 
     }
 

+ 9 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpDeviceInfoMapper.xml

@@ -146,6 +146,15 @@
             </if>
         </where>
     </select>
+    <select id="sysTenantCount" resultType="integer">
+        select count(*)
+        from sys_tenant
+        <where>
+            <if test="1 == 1">
+                and id = #{tenantId}
+            </if>
+        </where>
+    </select>
     <select id="baseAlarmList" resultType="com.usky.iot.domain.BaseAlarm">
         select *
         from base_alarm