Преглед на файлове

'优化设备信息表-新增和设备信息表-修改两个接口,实现设备状态表的关联变化'

james преди 1 година
родител
ревизия
0324cdda2d

+ 15 - 4
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceInfo.java

@@ -8,6 +8,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -89,7 +90,7 @@ public class DmpDeviceInfo implements Serializable {
     /**
      * 创建时间
      */
-    private Date createdTime;
+    private LocalDateTime createdTime;
 
     /**
      * 更新人
@@ -99,7 +100,7 @@ public class DmpDeviceInfo implements Serializable {
     /**
      * 更新时间
      */
-    private Date updatedTime;
+    private LocalDateTime updatedTime;
 
     /**
      * 租户号
@@ -112,13 +113,23 @@ public class DmpDeviceInfo implements Serializable {
     @TableField(exist = false)
     private String productName;
     /**
-     * 设备状态
+     * 业务状态;1:未激活,2:已激活,3:上线,4:下线
      */
     @TableField(exist = false)
-    private Integer deviceStatus;
+    private Integer serviceStatus;
 
     /**
      * 是否自动订阅
      */
     private Integer subscribeFlag;
+
+    /**
+     * 单位编号
+     */
+    private String companyCode;
+
+    /**
+     * 安装位置
+     */
+    private String installAddress;
 }

+ 2 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceStatus.java

@@ -2,6 +2,7 @@ package com.usky.iot.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -48,7 +49,7 @@ public class DmpDeviceStatus implements Serializable {
      */
     private Integer deviceStatus;
     /**
-     * 业务状态1:已注册,2:待激活,3:已激活
+     * 业务状态;1:未激活,2:已激活,3:上线,4:下线
      */
     private Integer serviceStatus;
 

+ 34 - 4
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java

@@ -8,6 +8,7 @@ import cn.afterturn.easypoi.excel.entity.ImportParams;
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -18,19 +19,24 @@ import com.usky.common.core.exception.BusinessException;
 import com.usky.common.core.util.BeanMapperUtils;
 import com.usky.common.core.util.UUIDUtils;
 import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.common.security.utils.SecurityUtils;
 import com.usky.iot.domain.DmpDeviceInfo;
+import com.usky.iot.domain.DmpDeviceStatus;
 import com.usky.iot.mapper.DmpDeviceInfoMapper;
 import com.usky.iot.service.DmpDeviceInfoService;
+import com.usky.iot.service.DmpDeviceStatusService;
 import com.usky.iot.service.vo.DmpDeviceExcelVO;
 import com.usky.iot.service.vo.DmpDeviceExportVO;
 import com.usky.iot.service.vo.DmpDeviceInfoRequest;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -44,23 +50,47 @@ import java.util.stream.Collectors;
  */
 @Service
 public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoMapper, DmpDeviceInfo> implements DmpDeviceInfoService {
+    @Autowired
+    private DmpDeviceStatusService dmpDeviceStatusService;
 
     @Override
     public boolean add(DmpDeviceInfo dmpDeviceInfo) {
         dmpDeviceInfo.setDeviceId(UUIDUtils.uuid());
+        dmpDeviceInfo.setCreatedBy(SecurityUtils.getUsername());
+        dmpDeviceInfo.setCreatedTime(LocalDateTime.now());
         if (checkNameUnique(dmpDeviceInfo)){
             throw new BusinessException("新增设备信息'" + dmpDeviceInfo.getDeviceName() + "'失败,设备信息已存在");
         }
+        //在设备状态表中新增一条设备状态记录,业务状态置为 1 待激活
+        DmpDeviceStatus dmpDeviceStatus = new DmpDeviceStatus();
+        dmpDeviceStatus.setDeviceId(dmpDeviceInfo.getDeviceId());
+        dmpDeviceStatus.setDeviceCode(dmpDeviceInfo.getDeviceCode());
+        dmpDeviceStatus.setProductId(dmpDeviceInfo.getProductId());
+        dmpDeviceStatus.setDeviceStatus(4);
+        dmpDeviceStatus.setServiceStatus(1);
+        dmpDeviceStatus.setLastOfflineTime(LocalDateTime.now());
+        dmpDeviceStatusService.save(dmpDeviceStatus);
+
         return this.save(dmpDeviceInfo);
     }
 
     @Override
     public void update(DmpDeviceInfo dmpDeviceInfo) {
-        dmpDeviceInfo.setUpdatedTime(new Date());
-        if (checkNameUnique(dmpDeviceInfo)){
-            throw new BusinessException("修改设备信息'" + dmpDeviceInfo.getDeviceName() + "'失败,设备信息已存在");
-        }
+        dmpDeviceInfo.setUpdatedBy(SecurityUtils.getUsername());
+        dmpDeviceInfo.setUpdatedTime(LocalDateTime.now());
+//        if (checkNameUnique(dmpDeviceInfo)){
+//            throw new BusinessException("修改设备信息'" + dmpDeviceInfo.getDeviceName() + "'失败,设备信息已存在");
+//        }
         this.updateById(dmpDeviceInfo);
+
+        //更新设备状态表对应设备状态记录数据
+        LambdaQueryWrapper<DmpDeviceStatus> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(DmpDeviceStatus::getDeviceId,dmpDeviceInfo.getDeviceId());
+        DmpDeviceStatus one = dmpDeviceStatusService.getOne(queryWrapper);
+        if(null != one){
+            one.setServiceStatus(dmpDeviceInfo.getServiceStatus());
+            dmpDeviceStatusService.updateById(one);
+        }
     }
 
     @Override

+ 1 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceStatusServiceImpl.java

@@ -26,7 +26,7 @@ public class DmpDeviceStatusServiceImpl extends AbstractCrudService<DmpDeviceSta
     @Override
     public List<Map<String, Object>> getCollectByProduct(List<Integer> productIds) {
         QueryWrapper<DmpDeviceStatus> query = Wrappers.query();
-        query.select("product_id as productId","count(device_status != 4 or null) as deviceCount","count(service_status = 3 or null) as serviceCount")
+        query.select("product_id as productId","count(device_status != 4 or null) as deviceCount","count(service_status) as serviceCount")
                 .in(CollectionUtil.isNotEmpty(productIds),"product_id",productIds)
                 .groupBy("product_id");
         return this.listMaps(query);

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

@@ -27,7 +27,7 @@
         inner join dmp_device ddi
         on dpi.id = ddi.product_id
         left join dmp_device_status dds
-        on dpi.id  = dds.product_id
+        on ddi.device_id  = dds.device_id
         <where>
             <if test="ar.startTime != null and ar.endTime != null">
                 and  dds.last_online_time between #{ar.startTime}

+ 4 - 4
service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpDeviceStatusMapper.xml

@@ -17,8 +17,8 @@
         select ddi.product_id as productId,
         count(*) as deviceCount,
         COUNT(to_days(last_online_time) = to_days(now()) or null) as hyCount,
-        count(service_status = 3 or null) as jhCount,
-        count(service_status = 1 or null) as zcCount,
+        count(service_status = 2 or null) as jhCount,
+        count(service_status) as zcCount,
         count(device_status = 1 or null) as dzcCount,
         count(device_status = 4 or null) as dlxCount
         from dmp_device ddi
@@ -71,8 +71,8 @@
         select ddi.product_id as productId,
         count(*) as deviceCount,
         COUNT(to_days(last_online_time) = to_days(now()) or null) as hyCount,
-        count(service_status = 3 or null) as jhCount,
-        count(service_status = 1 or null) as zcCount,
+        count(service_status = 2 or null) as jhCount,
+        count(service_status) as zcCount,
         count(device_status = 1 or null) as dzcCount,
         count(device_status = 4 or null) as dlxCount
         from dmp_device ddi