yq %!s(int64=2) %!d(string=hai) anos
pai
achega
686830151d
Modificáronse 35 ficheiros con 588 adicións e 44 borrados
  1. 56 5
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpDeviceInfoController.java
  2. 70 5
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpProductAttributeController.java
  3. 12 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpProductInfoController.java
  4. 11 3
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceInfo.java
  5. 8 3
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpProductAttribute.java
  6. 6 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpProductInfo.java
  7. 2 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDataEventMapper.java
  8. 2 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDataInfoMapper.java
  9. 9 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDeviceInfoMapper.java
  10. 2 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDeviceStatusMapper.java
  11. 2 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpProductAttributeAttachMapper.java
  12. 2 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpProductAttributeMapper.java
  13. 2 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpSoftwareSubpackageMapper.java
  14. 2 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpSoftwareUpgradeMapper.java
  15. 2 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDataEventService.java
  16. 2 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDataInfoService.java
  17. 30 2
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDeviceInfoService.java
  18. 2 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDeviceStatusService.java
  19. 11 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpProductAttributeAttachService.java
  20. 17 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpProductAttributeService.java
  21. 2 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpProductInfoService.java
  22. 2 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpSoftwareSubpackageService.java
  23. 2 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpSoftwareUpgradeService.java
  24. 1 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDataEventServiceImpl.java
  25. 1 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDataInfoServiceImpl.java
  26. 74 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java
  27. 1 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceStatusServiceImpl.java
  28. 29 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpProductAttributeAttachServiceImpl.java
  29. 95 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpProductAttributeServiceImpl.java
  30. 34 2
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpProductInfoServiceImpl.java
  31. 1 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpSoftwareSubpackageServiceImpl.java
  32. 1 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpSoftwareUpgradeServiceImpl.java
  33. 44 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/DmpDeviceInfoRequest.java
  34. 25 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/DmpProductAttributeRequest.java
  35. 26 0
      service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpDeviceInfoMapper.xml

+ 56 - 5
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpDeviceInfoController.java

@@ -1,13 +1,16 @@
 package com.usky.iot.controller.web;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.iot.domain.DmpDeviceInfo;
+import com.usky.iot.service.DmpDeviceInfoService;
+import com.usky.iot.service.vo.DmpDeviceInfoRequest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 /**
- * <p>
- * 设备信息表 前端控制器
- * </p>
+ * 设备信息表
  *
  * @author ya
  * @since 2022-10-08
@@ -16,5 +19,53 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/dmpDeviceInfo")
 public class DmpDeviceInfoController {
 
+    @Autowired
+    private DmpDeviceInfoService dmpDeviceInfoService;
+
+    /**
+     * 新增
+     * @param dmpDeviceInfo
+     * @return
+     */
+    @PostMapping
+    public ApiResult<Void> add(@RequestBody DmpDeviceInfo dmpDeviceInfo){
+        dmpDeviceInfoService.add(dmpDeviceInfo);
+        return ApiResult.success();
+    }
+
+    /**
+     * 修改
+     * @param dmpDeviceInfo
+     * @return
+     */
+    @PutMapping
+    public ApiResult<Void> edit(@RequestBody DmpDeviceInfo dmpDeviceInfo){
+        dmpDeviceInfoService.update(dmpDeviceInfo);
+        return ApiResult.success();
+    }
+
+
+    /**
+     * 分页
+     * @param dmpDeviceInfoRequest
+     * @return
+     */
+    @GetMapping("/page")
+    public ApiResult<CommonPage<DmpDeviceInfo>> page(@RequestBody DmpDeviceInfoRequest dmpDeviceInfoRequest)
+    {
+        return ApiResult.success(dmpDeviceInfoService.page(dmpDeviceInfoRequest));
+    }
+
+
+
+    /**
+     * 删除记录
+     */
+    @DeleteMapping("/{id}")
+    public ApiResult<Void> remove(@PathVariable("id") Integer id)
+    {
+        dmpDeviceInfoService.remove(id);
+        return ApiResult.success();
+    }
 }
 

+ 70 - 5
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpProductAttributeController.java

@@ -1,13 +1,18 @@
 package com.usky.iot.controller.web;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.iot.domain.DmpProductAttribute;
+import com.usky.iot.service.DmpProductAttributeService;
+import com.usky.iot.service.vo.DmpProductAttributeRequest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
- * <p>
- * 产品属性表 前端控制器
- * </p>
+ * 产品属性表
  *
  * @author ya
  * @since 2022-10-08
@@ -16,5 +21,65 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/dmpProductAttribute")
 public class DmpProductAttributeController {
 
+
+    @Autowired
+    private DmpProductAttributeService dmpProductAttributeService;
+
+    /**
+     * 新增
+     * @param dmpProductAttribute
+     * @return
+     */
+    @PostMapping
+    public ApiResult<Void> add(@RequestBody DmpProductAttribute dmpProductAttribute){
+        dmpProductAttributeService.add(dmpProductAttribute);
+        return ApiResult.success();
+    }
+
+    /**
+     * 修改
+     * @param dmpProductAttribute
+     * @return
+     */
+    @PutMapping
+    public ApiResult<Void> edit(@RequestBody DmpProductAttribute dmpProductAttribute){
+        dmpProductAttributeService.update(dmpProductAttribute);
+        return ApiResult.success();
+    }
+
+
+    /**
+     * 分页
+     * @param dmpProductAttributeRequest
+     * @return
+     */
+    @GetMapping("/page")
+    public ApiResult<CommonPage<DmpProductAttribute>> page(@RequestBody DmpProductAttributeRequest dmpProductAttributeRequest)
+    {
+        return ApiResult.success(dmpProductAttributeService.page(dmpProductAttributeRequest));
+    }
+
+
+
+    /**
+     * 删除记录
+     */
+    @DeleteMapping("/{id}")
+    public ApiResult<Void> remove(@PathVariable("id") Integer id)
+    {
+        dmpProductAttributeService.remove(id);
+        return ApiResult.success();
+    }
+
+    /**
+     * 批量设置属性绑定状态
+     * @param ids
+     * @return
+     */
+    @PutMapping("updateBatchBind")
+    public ApiResult<Void> updateBatchBind(@RequestParam("ids[]") List<Integer> ids){
+        dmpProductAttributeService.updateBatchBind(ids);
+        return ApiResult.success();
+    }
 }
 

+ 12 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpProductInfoController.java

@@ -59,6 +59,18 @@ public class DmpProductInfoController {
 
 
 
+    /**
+     * 删除记录
+     */
+    @DeleteMapping("/{id}")
+    public ApiResult<Void> remove(@PathVariable("id") Integer id)
+    {
+        dmpProductInfoService.remove(id);
+        return ApiResult.success();
+    }
+
+
+
 
 }
 

+ 11 - 3
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceInfo.java

@@ -2,11 +2,12 @@ package com.usky.iot.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
-import java.io.Serializable;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
 /**
  * <p>
  * 设备信息表
@@ -102,5 +103,12 @@ public class DmpDeviceInfo implements Serializable {
      */
     private Integer tenantId;
 
-
+    /**
+     * 产品名称
+     */
+    private String productName;
+    /**
+     * 设备状态
+     */
+    private Integer deviceStatus;
 }

+ 8 - 3
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpProductAttribute.java

@@ -1,13 +1,16 @@
 package com.usky.iot.domain;
 
-import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
-import java.io.Serializable;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
 /**
  * <p>
  * 产品属性表
@@ -134,4 +137,6 @@ public class DmpProductAttribute implements Serializable {
     private Integer tenantId;
 
 
+    @TableField(exist = false)
+    private List<DmpProductAttributeAttach> dmpProductAttributeAttachList;
 }

+ 6 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpProductInfo.java

@@ -1,6 +1,7 @@
 package com.usky.iot.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import java.io.Serializable;
@@ -133,4 +134,9 @@ public class DmpProductInfo implements Serializable {
     private Integer tenantId;
 
 
+    /**
+     * 设备总数
+     */
+    @TableField(exist = false)
+    private Integer deviceCount;
 }

+ 2 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDataEventMapper.java

@@ -1,7 +1,8 @@
 package com.usky.iot.mapper;
 
+import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.domain.DmpDataEvent;
-import com.usky.common.mvc.base.CrudMapper;
+
 
 /**
  * <p>

+ 2 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDataInfoMapper.java

@@ -1,7 +1,8 @@
 package com.usky.iot.mapper;
 
+import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.domain.DmpDataInfo;
-import com.usky.common.mvc.base.CrudMapper;
+
 
 /**
  * <p>

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

@@ -1,7 +1,12 @@
 package com.usky.iot.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.domain.DmpDeviceInfo;
-import com.usky.common.mvc.base.CrudMapper;
+import com.usky.iot.service.vo.DmpDeviceInfoRequest;
+import org.apache.ibatis.annotations.Param;
+
 
 /**
  * <p>
@@ -13,4 +18,7 @@ import com.usky.common.mvc.base.CrudMapper;
  */
 public interface DmpDeviceInfoMapper extends CrudMapper<DmpDeviceInfo> {
 
+
+
+    Page<DmpDeviceInfo> page(IPage<DmpDeviceInfo> page, @Param("ar")DmpDeviceInfoRequest dmpDeviceInfoRequest);
 }

+ 2 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDeviceStatusMapper.java

@@ -1,7 +1,8 @@
 package com.usky.iot.mapper;
 
+import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.domain.DmpDeviceStatus;
-import com.usky.common.mvc.base.CrudMapper;
+
 
 /**
  * <p>

+ 2 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpProductAttributeAttachMapper.java

@@ -1,7 +1,8 @@
 package com.usky.iot.mapper;
 
+import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.domain.DmpProductAttributeAttach;
-import com.usky.common.mvc.base.CrudMapper;
+
 
 /**
  * <p>

+ 2 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpProductAttributeMapper.java

@@ -1,7 +1,8 @@
 package com.usky.iot.mapper;
 
+import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.domain.DmpProductAttribute;
-import com.usky.common.mvc.base.CrudMapper;
+
 
 /**
  * <p>

+ 2 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpSoftwareSubpackageMapper.java

@@ -1,7 +1,8 @@
 package com.usky.iot.mapper;
 
+import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.domain.DmpSoftwareSubpackage;
-import com.usky.common.mvc.base.CrudMapper;
+
 
 /**
  * <p>

+ 2 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpSoftwareUpgradeMapper.java

@@ -1,7 +1,8 @@
 package com.usky.iot.mapper;
 
+import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.domain.DmpSoftwareUpgrade;
-import com.usky.common.mvc.base.CrudMapper;
+
 
 /**
  * <p>

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

@@ -1,7 +1,8 @@
 package com.usky.iot.service;
 
+import com.usky.common.mybatis.core.CrudService;
 import com.usky.iot.domain.DmpDataEvent;
-import com.usky.common.mvc.base.CrudService;
+
 
 /**
  * <p>

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

@@ -1,7 +1,8 @@
 package com.usky.iot.service;
 
+import com.usky.common.mybatis.core.CrudService;
 import com.usky.iot.domain.DmpDataInfo;
-import com.usky.common.mvc.base.CrudService;
+
 
 /**
  * <p>

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

@@ -1,11 +1,17 @@
 package com.usky.iot.service;
 
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.mybatis.core.CrudService;
 import com.usky.iot.domain.DmpDeviceInfo;
-import com.usky.common.mvc.base.CrudService;
+import com.usky.iot.service.vo.DmpDeviceInfoRequest;
+
+import java.util.List;
+import java.util.Map;
+
 
 /**
  * <p>
- * 设备信息表 服务类
+ * 设备信息表
  * </p>
  *
  * @author ya
@@ -13,4 +19,26 @@ import com.usky.common.mvc.base.CrudService;
  */
 public interface DmpDeviceInfoService extends CrudService<DmpDeviceInfo> {
 
+    boolean add(DmpDeviceInfo dmpDeviceInfo);
+
+    void update(DmpDeviceInfo dmpDeviceInfo);
+
+    boolean checkNameUnique(DmpDeviceInfo dmpDeviceInfo);
+
+    CommonPage<DmpDeviceInfo> page(DmpDeviceInfoRequest dmpDeviceInfoRequest);
+
+    boolean remove(Integer id);
+
+    /**
+     * 设备状态统计
+     * @return
+     */
+    List<Map<String,Object>> deviceCollect(List<Integer> productIds);
+
+    /**
+     * 设备总数
+     * @param productId
+     * @return
+     */
+    int deviceCountByProductId(Integer productId);
 }

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

@@ -1,7 +1,8 @@
 package com.usky.iot.service;
 
+import com.usky.common.mybatis.core.CrudService;
 import com.usky.iot.domain.DmpDeviceStatus;
-import com.usky.common.mvc.base.CrudService;
+
 
 /**
  * <p>

+ 11 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpProductAttributeAttachService.java

@@ -1,7 +1,11 @@
 package com.usky.iot.service;
 
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.iot.domain.DmpProductAttribute;
 import com.usky.iot.domain.DmpProductAttributeAttach;
-import com.usky.common.mvc.base.CrudService;
+
+import java.util.List;
+
 
 /**
  * <p>
@@ -13,4 +17,10 @@ import com.usky.common.mvc.base.CrudService;
  */
 public interface DmpProductAttributeAttachService extends CrudService<DmpProductAttributeAttach> {
 
+
+    void addBatch(DmpProductAttribute dmpProductAttribute);
+
+    void deleteBatch(DmpProductAttribute dmpProductAttribute);
+
+    List<DmpProductAttributeAttach> listByAttributeIds(List<Integer> attributeIds);
 }

+ 17 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpProductAttributeService.java

@@ -1,7 +1,12 @@
 package com.usky.iot.service;
 
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.mybatis.core.CrudService;
 import com.usky.iot.domain.DmpProductAttribute;
-import com.usky.common.mvc.base.CrudService;
+import com.usky.iot.service.vo.DmpProductAttributeRequest;
+
+import java.util.List;
+
 
 /**
  * <p>
@@ -13,4 +18,15 @@ import com.usky.common.mvc.base.CrudService;
  */
 public interface DmpProductAttributeService extends CrudService<DmpProductAttribute> {
 
+    boolean add(DmpProductAttribute dmpProductAttribute);
+
+    void update(DmpProductAttribute dmpProductAttribute);
+
+    boolean checkNameUnique(DmpProductAttribute dmpProductAttribute);
+
+    CommonPage<DmpProductAttribute> page(DmpProductAttributeRequest dmpProductAttributeRequest);
+
+    boolean remove(Integer id);
+
+    void updateBatchBind(List<Integer> ids);
 }

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

@@ -18,10 +18,11 @@ public interface DmpProductInfoService extends CrudService<DmpProductInfo> {
 
     boolean add(DmpProductInfo dmpProductInfo);
 
-    boolean update(DmpProductInfo dmpProductInfo);
+    void update(DmpProductInfo dmpProductInfo);
 
     boolean checkNameUnique(DmpProductInfo dmpProductInfo);
 
     CommonPage<DmpProductInfo> page(DmpProductInfoRequest dmpProductInfoRequest);
 
+    boolean remove(Integer id);
 }

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

@@ -1,7 +1,8 @@
 package com.usky.iot.service;
 
+import com.usky.common.mybatis.core.CrudService;
 import com.usky.iot.domain.DmpSoftwareSubpackage;
-import com.usky.common.mvc.base.CrudService;
+
 
 /**
  * <p>

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

@@ -1,7 +1,8 @@
 package com.usky.iot.service;
 
+import com.usky.common.mybatis.core.CrudService;
 import com.usky.iot.domain.DmpSoftwareUpgrade;
-import com.usky.common.mvc.base.CrudService;
+
 
 /**
  * <p>

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

@@ -1,9 +1,9 @@
 package com.usky.iot.service.impl;
 
+import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.iot.domain.DmpDataEvent;
 import com.usky.iot.mapper.DmpDataEventMapper;
 import com.usky.iot.service.DmpDataEventService;
-import com.usky.common.mvc.base.AbstractCrudService;
 import org.springframework.stereotype.Service;
 
 /**

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

@@ -1,9 +1,9 @@
 package com.usky.iot.service.impl;
 
+import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.iot.domain.DmpDataInfo;
 import com.usky.iot.mapper.DmpDataInfoMapper;
 import com.usky.iot.service.DmpDataInfoService;
-import com.usky.common.mvc.base.AbstractCrudService;
 import org.springframework.stereotype.Service;
 
 /**

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

@@ -1,11 +1,25 @@
 package com.usky.iot.service.impl;
 
+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.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.iot.domain.DmpDeviceInfo;
 import com.usky.iot.mapper.DmpDeviceInfoMapper;
 import com.usky.iot.service.DmpDeviceInfoService;
-import com.usky.common.mvc.base.AbstractCrudService;
+import com.usky.iot.service.vo.DmpDeviceInfoRequest;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+
 /**
  * <p>
  * 设备信息表 服务实现类
@@ -17,4 +31,63 @@ import org.springframework.stereotype.Service;
 @Service
 public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoMapper, DmpDeviceInfo> implements DmpDeviceInfoService {
 
+    @Override
+    public boolean add(DmpDeviceInfo dmpDeviceInfo) {
+        if (checkNameUnique(dmpDeviceInfo)){
+            throw new BusinessException("新增设备信息'" + dmpDeviceInfo.getDeviceName() + "'失败,设备信息已存在");
+        }
+        return this.save(dmpDeviceInfo);
+    }
+
+    @Override
+    public void update(DmpDeviceInfo dmpDeviceInfo) {
+        if (checkNameUnique(dmpDeviceInfo)){
+            throw new BusinessException("修改设备信息'" + dmpDeviceInfo.getDeviceName() + "'失败,设备信息已存在");
+        }
+        this.updateById(dmpDeviceInfo);
+    }
+
+    @Override
+    public boolean checkNameUnique(DmpDeviceInfo dmpDeviceInfo) {
+        Integer id = null == dmpDeviceInfo.getId() ? -1 : dmpDeviceInfo.getId();
+        LambdaQueryWrapper<DmpDeviceInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper
+                .eq(DmpDeviceInfo::getDeviceName,dmpDeviceInfo.getDeviceName())
+                .eq(DmpDeviceInfo::getProductId,dmpDeviceInfo.getProductId())
+                .eq(DmpDeviceInfo::getDeleteFlag,0);
+        DmpDeviceInfo one = this.getOne(queryWrapper);
+        return null != one && !Objects.equals(one.getId(), id);
+    }
+
+    @Override
+    public CommonPage<DmpDeviceInfo> page(DmpDeviceInfoRequest diRequest) {
+        IPage<DmpDeviceInfo> page = new Page<>(diRequest.getCurrent(), diRequest.getSize());
+        page = baseMapper.page(page,diRequest);
+        return new CommonPage<>(page.getRecords(),page.getTotal(),page.getCurrent(),page.getSize());
+    }
+
+    @Override
+    public boolean remove(Integer id) {
+        DmpDeviceInfo dmpDeviceInfo = this.getById(id);
+        Optional.ofNullable(dmpDeviceInfo).orElseThrow(() -> new BusinessException("设备不存在"));
+        dmpDeviceInfo.setDeleteFlag(1);
+        return this.updateById(dmpDeviceInfo);
+    }
+
+    @Override
+    public List<Map<String, Object>> deviceCollect(List<Integer> productIds) {
+        QueryWrapper<DmpDeviceInfo> query = Wrappers.query();
+        query.select("product_id as productId","count(*) as count")
+                .in(CollectionUtil.isNotEmpty(productIds),"product_id",productIds)
+                .groupBy("product_id");
+        return this.listMaps(query);
+    }
+
+    @Override
+    public int deviceCountByProductId(Integer productId) {
+        LambdaQueryWrapper<DmpDeviceInfo> lambdaQuery = Wrappers.lambdaQuery();
+        lambdaQuery.eq(DmpDeviceInfo::getProductId,productId)
+                .eq(DmpDeviceInfo::getDeleteFlag,0);
+        return this.count(lambdaQuery);
+    }
 }

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

@@ -1,9 +1,9 @@
 package com.usky.iot.service.impl;
 
+import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.iot.domain.DmpDeviceStatus;
 import com.usky.iot.mapper.DmpDeviceStatusMapper;
 import com.usky.iot.service.DmpDeviceStatusService;
-import com.usky.common.mvc.base.AbstractCrudService;
 import org.springframework.stereotype.Service;
 
 /**

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

@@ -1,11 +1,17 @@
 package com.usky.iot.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.iot.domain.DmpProductAttribute;
 import com.usky.iot.domain.DmpProductAttributeAttach;
 import com.usky.iot.mapper.DmpProductAttributeAttachMapper;
 import com.usky.iot.service.DmpProductAttributeAttachService;
-import com.usky.common.mvc.base.AbstractCrudService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 产品属性附表 服务实现类
@@ -17,4 +23,26 @@ import org.springframework.stereotype.Service;
 @Service
 public class DmpProductAttributeAttachServiceImpl extends AbstractCrudService<DmpProductAttributeAttachMapper, DmpProductAttributeAttach> implements DmpProductAttributeAttachService {
 
+    @Override
+    public void addBatch(DmpProductAttribute dmpProductAttribute) {
+        List<DmpProductAttributeAttach> dmpProductAttributeAttachList = dmpProductAttribute.getDmpProductAttributeAttachList();
+        if (CollectionUtil.isNotEmpty(dmpProductAttributeAttachList)){
+            dmpProductAttributeAttachList.forEach(s -> s.setAttributeId(dmpProductAttribute.getId()));
+            this.saveBatch(dmpProductAttributeAttachList);
+        }
+    }
+
+    @Override
+    public void deleteBatch(DmpProductAttribute dmpProductAttribute) {
+        LambdaQueryWrapper<DmpProductAttributeAttach> lambdaQuery = Wrappers.lambdaQuery();
+        lambdaQuery.eq(DmpProductAttributeAttach::getAttributeId,dmpProductAttribute.getId());
+        this.remove(lambdaQuery);
+    }
+
+    @Override
+    public List<DmpProductAttributeAttach> listByAttributeIds(List<Integer> attributeIds) {
+        LambdaQueryWrapper<DmpProductAttributeAttach> lambdaQuery = Wrappers.lambdaQuery();
+        lambdaQuery.in(CollectionUtil.isNotEmpty(attributeIds),DmpProductAttributeAttach::getAttributeId,attributeIds);
+        return this.list(lambdaQuery);
+    }
 }

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

@@ -1,10 +1,28 @@
 package com.usky.iot.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.iot.domain.DmpProductAttribute;
+import com.usky.iot.domain.DmpProductAttributeAttach;
 import com.usky.iot.mapper.DmpProductAttributeMapper;
+import com.usky.iot.service.DmpProductAttributeAttachService;
 import com.usky.iot.service.DmpProductAttributeService;
-import com.usky.common.mvc.base.AbstractCrudService;
+import com.usky.iot.service.vo.DmpProductAttributeRequest;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -17,4 +35,80 @@ import org.springframework.stereotype.Service;
 @Service
 public class DmpProductAttributeServiceImpl extends AbstractCrudService<DmpProductAttributeMapper, DmpProductAttribute> implements DmpProductAttributeService {
 
+
+    @Autowired
+    private DmpProductAttributeAttachService dmpProductAttributeAttachService;
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public boolean add(DmpProductAttribute dmpProductAttribute) {
+        if (checkNameUnique(dmpProductAttribute)){
+            throw new BusinessException("新增产品属性信息'" + dmpProductAttribute.getAttributeName() + "'失败,产品信息已存在");
+        }
+        this.save(dmpProductAttribute);
+        dmpProductAttributeAttachService.addBatch(dmpProductAttribute);
+        return true;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void update(DmpProductAttribute dmpProductAttribute) {
+        if (checkNameUnique(dmpProductAttribute)){
+            throw new BusinessException("新增产品属性信息'" + dmpProductAttribute.getAttributeName() + "'失败,产品信息已存在");
+        }
+        this.updateById(dmpProductAttribute);
+        dmpProductAttributeAttachService.deleteBatch(dmpProductAttribute);
+        dmpProductAttributeAttachService.addBatch(dmpProductAttribute);
+    }
+
+    @Override
+    public boolean checkNameUnique(DmpProductAttribute dmpProductAttribute) {
+        Integer id = null == dmpProductAttribute.getId() ? -1 : dmpProductAttribute.getId();
+        LambdaQueryWrapper<DmpProductAttribute> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(DmpProductAttribute::getAttributeName,dmpProductAttribute.getAttributeName())
+                .eq(DmpProductAttribute::getDeleteFlag,0);
+        DmpProductAttribute one = this.getOne(queryWrapper);
+        return null != one && !Objects.equals(one.getId(), id);
+    }
+
+    @Override
+    public CommonPage<DmpProductAttribute> page(DmpProductAttributeRequest paRequest) {
+        IPage<DmpProductAttribute> page = new Page<>(paRequest.getCurrent(), paRequest.getSize());
+        LambdaQueryWrapper<DmpProductAttribute> lambdaQuery = Wrappers.lambdaQuery();
+        lambdaQuery
+                .eq(StringUtils.isNotBlank(paRequest.getAttributeName()),DmpProductAttribute::getAttributeName,paRequest.getAttributeName())
+                .eq(null != paRequest.getProductId(),DmpProductAttribute::getProductId,paRequest.getProductId())
+                .eq(DmpProductAttribute::getDeleteFlag,0);
+        page = this.page(page,lambdaQuery);
+        List<DmpProductAttribute> records = page.getRecords();
+        List<DmpProductAttributeAttach> dmpProductAttributeAttaches = dmpProductAttributeAttachService.listByAttributeIds(records.stream().map(DmpProductAttribute::getId).collect(Collectors.toList()));
+        page.getRecords().forEach(s ->
+            enhanceDmpProductAttribute(s,dmpProductAttributeAttaches));
+        return new CommonPage<>(page.getRecords(),page.getTotal(),page.getCurrent(),page.getSize());
+    }
+
+    public void enhanceDmpProductAttribute(DmpProductAttribute dmpProductAttribute, List<DmpProductAttributeAttach> dmpProductAttributeAttachList){
+        List<DmpProductAttributeAttach> collect = dmpProductAttributeAttachList
+                .stream()
+                .filter(s -> s.getAttributeId().equals(dmpProductAttribute.getProductId()))
+                .collect(Collectors.toList());
+        dmpProductAttribute.setDmpProductAttributeAttachList(collect);
+    }
+
+    @Override
+    public boolean remove(Integer id) {
+        DmpProductAttribute dmpProductAttribute = this.getById(id);
+        Optional.ofNullable(dmpProductAttribute).orElseThrow(() -> new BusinessException("产品不存在"));
+        dmpProductAttribute.setDeleteFlag(1);
+        return this.updateById(dmpProductAttribute);
+    }
+
+    @Override
+    public void updateBatchBind(List<Integer> ids) {
+        LambdaUpdateWrapper<DmpProductAttribute> updateWrapper = Wrappers.lambdaUpdate();
+        updateWrapper
+                .set(DmpProductAttribute::getBindStatus,2)
+                .in(DmpProductAttribute::getId,ids);
+        this.update(updateWrapper);
+    }
 }

+ 34 - 2
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpProductInfoServiceImpl.java

@@ -10,11 +10,17 @@ import com.usky.common.core.exception.BusinessException;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.iot.domain.DmpProductInfo;
 import com.usky.iot.mapper.DmpProductInfoMapper;
+import com.usky.iot.service.DmpDeviceInfoService;
 import com.usky.iot.service.DmpProductInfoService;
 import com.usky.iot.service.vo.DmpProductInfoRequest;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Map;
 import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -28,6 +34,9 @@ import java.util.Objects;
 public class DmpProductInfoServiceImpl extends AbstractCrudService<DmpProductInfoMapper, DmpProductInfo> implements DmpProductInfoService {
 
 
+    @Autowired
+    private DmpDeviceInfoService dmpDeviceInfoService;
+
     @Override
     public boolean add(DmpProductInfo dmpProductInfo) {
         if (checkNameUnique(dmpProductInfo)){
@@ -37,11 +46,11 @@ public class DmpProductInfoServiceImpl extends AbstractCrudService<DmpProductInf
     }
 
     @Override
-    public boolean update(DmpProductInfo dmpProductInfo) {
+    public void update(DmpProductInfo dmpProductInfo) {
         if (checkNameUnique(dmpProductInfo)){
             throw new BusinessException("修改产品信息'" + dmpProductInfo.getProductName() + "'失败,产品信息已存在");
         }
-        return this.updateById(dmpProductInfo);
+        this.updateById(dmpProductInfo);
     }
 
     @Override
@@ -54,6 +63,7 @@ public class DmpProductInfoServiceImpl extends AbstractCrudService<DmpProductInf
         return null != one && !Objects.equals(one.getId(), id);
     }
 
+
     @Override
     public CommonPage<DmpProductInfo> page(DmpProductInfoRequest piRequest) {
         IPage<DmpProductInfo> page = new Page<>(piRequest.getCurrent(), piRequest.getSize());
@@ -61,7 +71,29 @@ public class DmpProductInfoServiceImpl extends AbstractCrudService<DmpProductInf
         lambdaQuery
                 .eq(StringUtils.isNotBlank(piRequest.getProductName()),DmpProductInfo::getProductName,piRequest.getProductName())
                 .eq(DmpProductInfo::getDeleteFlag,0);
+        List<DmpProductInfo> records = page.getRecords();
+        List<Map<String, Object>> maps = dmpDeviceInfoService.deviceCollect(records.stream().map(DmpProductInfo::getId).collect(Collectors.toList()));
+        records.forEach(s -> enhanceByDevice(s,maps));
         page = this.page(page,lambdaQuery);
         return new CommonPage<>(page.getRecords(),page.getTotal(),page.getCurrent(),page.getSize());
     }
+
+    public void enhanceByDevice(DmpProductInfo dmpProductInfo, List<Map<String,Object>> list){
+        list.stream()
+                .filter(s -> dmpProductInfo.getId().toString().equals(s.get("productId")))
+                .findAny()
+                .ifPresent(s -> dmpProductInfo.setDeviceCount(Integer.getInteger(s.get("count").toString())));
+    }
+
+    @Override
+    public boolean remove(Integer id) {
+        int deviceCount = dmpDeviceInfoService.deviceCountByProductId(id);
+        if (deviceCount > 0){
+            throw new BusinessException("产品下存在设备,请先删除设备,再删除产品");
+        }
+        DmpProductInfo dmpProductInfo = this.getById(id);
+        Optional.ofNullable(dmpProductInfo).orElseThrow(() -> new BusinessException("产品不存在"));
+        dmpProductInfo.setDeleteFlag(1);
+        return this.updateById(dmpProductInfo);
+    }
 }

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

@@ -1,9 +1,9 @@
 package com.usky.iot.service.impl;
 
+import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.iot.domain.DmpSoftwareSubpackage;
 import com.usky.iot.mapper.DmpSoftwareSubpackageMapper;
 import com.usky.iot.service.DmpSoftwareSubpackageService;
-import com.usky.common.mvc.base.AbstractCrudService;
 import org.springframework.stereotype.Service;
 
 /**

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

@@ -1,9 +1,9 @@
 package com.usky.iot.service.impl;
 
+import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.iot.domain.DmpSoftwareUpgrade;
 import com.usky.iot.mapper.DmpSoftwareUpgradeMapper;
 import com.usky.iot.service.DmpSoftwareUpgradeService;
-import com.usky.common.mvc.base.AbstractCrudService;
 import org.springframework.stereotype.Service;
 
 /**

+ 44 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/DmpDeviceInfoRequest.java

@@ -0,0 +1,44 @@
+package com.usky.iot.service.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class DmpDeviceInfoRequest {
+
+    /**
+     * 页数
+     */
+    private Integer current;
+    /**
+     * 条数
+     */
+    private Integer size;
+
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+    /**
+     * 产品id
+      */
+    private Integer productId;
+    /**
+     * 产品名称
+     */
+    private String productName;
+    /**
+     * 设备状态
+      */
+    private Integer deviceStatus;
+
+    /**
+     * 开始时间
+     */
+    private Date startTime;
+    /**
+     * 结束时间
+     */
+    private Date endTime;
+}

+ 25 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/DmpProductAttributeRequest.java

@@ -0,0 +1,25 @@
+package com.usky.iot.service.vo;
+
+import lombok.Data;
+
+@Data
+public class DmpProductAttributeRequest {
+
+    /**
+     * 页数
+     */
+    private Integer current;
+    /**
+     * 条数
+     */
+    private Integer size;
+
+    /**
+     * 产品名称
+     */
+    private String attributeName;
+    /**
+     * 产品编号
+     */
+    private Integer productId;
+}

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

@@ -21,5 +21,31 @@
         <result column="updated_time" property="updatedTime" />
         <result column="tenant_id" property="tenantId" />
     </resultMap>
+    <select id="page" resultType="com.usky.iot.domain.DmpDeviceInfo">
+        select ddi.*,dpi.product_name as productName, dds.device_status as deviceStatus
+        from dmp_product_info dpi
+        inner join dmp_device_info ddi
+        on dpi.id = ddi.product_id
+        inner join dmp_device_status dds
+        on dpi.id  = dds.product_id
+        <where>
+            <if test="ar.startTime != null and ar.endTime != null">
+                and  dds.last_online_time between #{ar.startTime}
+                and #{ar.endTime}
+            </if>
+            <if test="ar.deviceName != null">
+                and ddi.device_name like CONCAT('%',#{ar.deviceName},'%')
+            </if>
+            <if test="ar.productId != null">
+                and dpi.id = #{ar.productId}
+            </if>
+            <if test="ar.productName != null">
+                and dpi.product_name like CONCAT('%',#{ar.productName},'%')
+            </if>
+            <if test="ar.deviceStatus != null">
+                and dds.device_status = #{ar.deviceStatus}
+            </if>
+        </where>
+    </select>
 
 </mapper>