Selaa lähdekoodia

iot-production模块
行业管理
产品管理
设备管理
基础增删改查

home 2 vuotta sitten
vanhempi
commit
67f44de7c8
23 muutettua tiedostoa jossa 272 lisäystä ja 143 poistoa
  1. 0 1
      hx-common/code-generator/src/main/resources/codeTemplates/serviceImpl.java.vm
  2. 28 5
      hx-common/hx-tool/src/main/java/com/fjhx/base/BaseService.java
  3. 1 15
      hx-service-api/iot-production-api/src/main/java/com/fjhx/entity/tda/TdaApplication.java
  4. 1 26
      hx-service-api/iot-production-api/src/main/java/com/fjhx/entity/tda/TdaDevice.java
  5. 17 11
      hx-service-api/iot-production-api/src/main/java/com/fjhx/entity/tda/TdaProduct.java
  6. 5 2
      hx-service-api/iot-production-api/src/main/java/com/fjhx/params/tda/TdaProductEx.java
  7. 5 0
      hx-service/iot-production/pom.xml
  8. 2 2
      hx-service/iot-production/src/main/java/com/fjhx/config/IoTDAConfig.java
  9. 49 0
      hx-service/iot-production/src/main/java/com/fjhx/config/MybatisConfig.java
  10. 1 7
      hx-service/iot-production/src/main/java/com/fjhx/controller/tda/TdaApplicationController.java
  11. 2 7
      hx-service/iot-production/src/main/java/com/fjhx/controller/tda/TdaDeviceController.java
  12. 7 13
      hx-service/iot-production/src/main/java/com/fjhx/controller/tda/TdaProductController.java
  13. 6 0
      hx-service/iot-production/src/main/java/com/fjhx/mapper/tda/TdaDeviceMapper.java
  14. 13 0
      hx-service/iot-production/src/main/java/com/fjhx/mapper/tda/TdaDeviceMapper.xml
  15. 6 0
      hx-service/iot-production/src/main/java/com/fjhx/mapper/tda/TdaProductMapper.java
  16. 14 0
      hx-service/iot-production/src/main/java/com/fjhx/mapper/tda/TdaProductMapper.xml
  17. 1 3
      hx-service/iot-production/src/main/java/com/fjhx/service/tda/TdaApplicationService.java
  18. 2 3
      hx-service/iot-production/src/main/java/com/fjhx/service/tda/TdaDeviceService.java
  19. 2 3
      hx-service/iot-production/src/main/java/com/fjhx/service/tda/TdaProductService.java
  20. 24 14
      hx-service/iot-production/src/main/java/com/fjhx/service/tda/impl/TdaApplicationServiceImpl.java
  21. 42 15
      hx-service/iot-production/src/main/java/com/fjhx/service/tda/impl/TdaDeviceServiceImpl.java
  22. 42 14
      hx-service/iot-production/src/main/java/com/fjhx/service/tda/impl/TdaProductServiceImpl.java
  23. 2 2
      hx-service/iot-production/src/main/java/com/fjhx/utils/IoTDAUtil.java

+ 0 - 1
hx-common/code-generator/src/main/resources/codeTemplates/serviceImpl.java.vm

@@ -30,7 +30,6 @@ public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.m
         QueryWrapper<${entity}> wrapper = Wrappers.query();
 
         WrapperUtil.init(condition, wrapper)
-                .eqTenantId()
                 .createTimeDesc();
 
         Page<${entity}> page = page(condition, wrapper);

+ 28 - 5
hx-common/hx-tool/src/main/java/com/fjhx/base/BaseService.java

@@ -20,13 +20,24 @@ public interface BaseService<T> extends IService<T> {
      * 获取分页
      */
     default Page<T> createPage(Map<String, String> condition) {
-        String pageNumStr = condition.get("pageNum");
-        String pageSizeStr = condition.get("pageSize");
+        return new Page<>(getCurrent(condition), getSize(condition));
+    }
+
+    /**
+     * 获取分页
+     */
+    default Page<Map<String, Object>> createPageMap(Map<String, String> condition) {
+        return new Page<>(getCurrent(condition), getSize(condition));
+    }
 
-        int pageNum = ObjectUtil.isEmpty(pageNumStr) ? 1 : Integer.parseInt(pageNumStr);
-        int pageSize = ObjectUtil.isEmpty(pageSizeStr) ? 10 : Integer.parseInt(pageSizeStr);
+    default int getCurrent(Map<String, String> condition) {
+        String currentStr = condition.get("pageNum");
+        return ObjectUtil.isEmpty(currentStr) ? 1 : Integer.parseInt(currentStr);
+    }
 
-        return new Page<>(pageNum, pageSize);
+    default int getSize(Map<String, String> condition) {
+        String sizeStr = condition.get("pageSize");
+        return ObjectUtil.isEmpty(sizeStr) ? 10 : Integer.parseInt(sizeStr);
     }
 
     /**
@@ -42,6 +53,18 @@ public interface BaseService<T> extends IService<T> {
     }
 
     /**
+     * 执行分页查询
+     *
+     * @param condition    条件
+     * @param queryWrapper wrapper
+     * @return 分页后的对象
+     */
+    default Page<Map<String, Object>> pageMaps(Map<String, String> condition, Wrapper<T> queryWrapper) {
+        Page<Map<String, Object>> page = createPageMap(condition);
+        return pageMaps(page, queryWrapper);
+    }
+
+    /**
      * 条件查询
      */
     default List<T> list(SFunction<T, ?> column, Object val) {

+ 1 - 15
hx-service-api/iot-production-api/src/main/java/com/fjhx/entity/tda/TdaApplication.java

@@ -1,18 +1,12 @@
 package com.fjhx.entity.tda;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.Version;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.fjhx.base.BaseEntity;
-import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 /**
  * <p>
- * 
+ *
  * </p>
  *
  * @author ${author}
@@ -33,12 +27,4 @@ public class TdaApplication extends BaseEntity {
      */
     private String appName;
 
-    /**
-     * 逻辑删除 0未删除 1已删除
-     */
-    @TableField(fill = FieldFill.INSERT)
-    @TableLogic
-    private Integer delFlag;
-
-
 }

+ 1 - 26
hx-service-api/iot-production-api/src/main/java/com/fjhx/entity/tda/TdaDevice.java

@@ -1,18 +1,12 @@
 package com.fjhx.entity.tda;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.Version;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.fjhx.base.BaseEntity;
-import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 /**
  * <p>
- * 
+ *
  * </p>
  *
  * @author ${author}
@@ -22,17 +16,6 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class TdaDevice extends BaseEntity {
 
-
-    /**
-     * 资源空间表id
-     */
-    private Long tdaApplicationId;
-
-    /**
-     * 华为tda资源空间id
-     */
-    private String appId;
-
     /**
      * 产品表id
      */
@@ -63,12 +46,4 @@ public class TdaDevice extends BaseEntity {
      */
     private String secret;
 
-    /**
-     * 逻辑删除 0未删除 1已删除
-     */
-    @TableField(fill = FieldFill.INSERT)
-    @TableLogic
-    private Integer delFlag;
-
-
 }

+ 17 - 11
hx-service-api/iot-production-api/src/main/java/com/fjhx/entity/tda/TdaProduct.java

@@ -1,18 +1,13 @@
 package com.fjhx.entity.tda;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.Version;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.fjhx.base.BaseEntity;
-import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springblade.core.tool.utils.ObjectUtil;
 
 /**
  * <p>
- * 
+ *
  * </p>
  *
  * @author ${author}
@@ -54,11 +49,22 @@ public class TdaProduct extends BaseEntity {
     private String manufacturerName;
 
     /**
-     * 逻辑删除 0未删除 1已删除
+     * 协议类型 默认MQTT
+     */
+    private String protocolType;
+
+    /**
+     * 数据格式 默认json
      */
-    @TableField(fill = FieldFill.INSERT)
-    @TableLogic
-    private Integer delFlag;
+    private String dataFormat;
 
+    public String getProtocolType() {
+        if (ObjectUtil.isEmpty(protocolType)) return "MQTT";
+        return protocolType;
+    }
 
+    public String getDataFormat() {
+        if (ObjectUtil.isEmpty(dataFormat)) return "json";
+        return dataFormat;
+    }
 }

+ 5 - 2
hx-service-api/iot-production-api/src/main/java/com/fjhx/params/tda/TdaProductEx.java

@@ -5,8 +5,6 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 /**
- * 
- *
  * @author ${author}
  * @since 2022-07-21
  */
@@ -14,4 +12,9 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class TdaProductEx extends TdaProduct {
 
+    /**
+     * 资源空间名称
+     */
+    private String appName;
+
 }

+ 5 - 0
hx-service/iot-production/pom.xml

@@ -20,6 +20,11 @@
 
         <dependency>
             <groupId>com.fjhx</groupId>
+            <artifactId>client-util</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fjhx</groupId>
             <artifactId>service-file-api</artifactId>
         </dependency>
 

+ 2 - 2
hx-service/iot-production/src/main/java/com/fjhx/config/IoTDAConfig.java

@@ -4,10 +4,10 @@ import com.huaweicloud.sdk.core.auth.ICredential;
 import com.huaweicloud.sdk.iotda.v5.IoTDAClient;
 import com.huaweicloud.sdk.iotda.v5.auth.IoTDACredentials;
 import com.huaweicloud.sdk.iotda.v5.region.IoTDARegion;
-import org.springframework.beans.factory.annotation.Configurable;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
 
-@Configurable
+@Configuration
 public class IoTDAConfig {
 
     // REGION_ID:如果是上海一,请填写"cn-east-3";如果是北京四,请填写"cn-north-4";如果是华南广州,请填写"cn-south-4"

+ 49 - 0
hx-service/iot-production/src/main/java/com/fjhx/config/MybatisConfig.java

@@ -0,0 +1,49 @@
+package com.fjhx.config;
+
+import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
+import com.baomidou.mybatisplus.extension.MybatisMapWrapperFactory;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
+import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
+import net.sf.jsqlparser.expression.Expression;
+import net.sf.jsqlparser.expression.StringValue;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisConfig {
+
+    /**
+     * 分页插件
+     */
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptorPage() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+
+        interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() {
+
+            @Override
+            public Expression getTenantId() {
+                return new StringValue(AuthUtil.getTenantId());
+            }
+
+            @Override
+            public boolean ignoreTable(String tableName) {
+                return false;
+            }
+
+        }));
+
+        return interceptor;
+    }
+
+    /**
+     * map返回查询结果时,自动转驼峰
+     */
+    @Bean
+    public ConfigurationCustomizer configurationCustomizer() {
+        return i -> i.setObjectWrapperFactory(new MybatisMapWrapperFactory());
+    }
+
+}

+ 1 - 7
hx-service/iot-production/src/main/java/com/fjhx/controller/tda/TdaApplicationController.java

@@ -30,7 +30,7 @@ public class TdaApplicationController {
 
     @PostMapping("/page")
     public R page(@RequestBody Map<String, String> condition){
-        Page<TdaApplication> result = tdaApplicationService.getPage(condition);
+        Page<Map<String, Object>> result = tdaApplicationService.getPage(condition);
         return R.success(result);
     }
 
@@ -40,12 +40,6 @@ public class TdaApplicationController {
         return R.success();
     }
 
-    @PostMapping("/edit")
-    public R edit(@RequestBody TdaApplicationVo tdaApplicationVo){
-        tdaApplicationService.edit(tdaApplicationVo);
-        return R.success();
-    }
-
     @PostMapping("/delete")
     public R delete(@RequestBody TdaApplicationVo tdaApplicationVo){
         tdaApplicationService.delete(tdaApplicationVo);

+ 2 - 7
hx-service/iot-production/src/main/java/com/fjhx/controller/tda/TdaDeviceController.java

@@ -1,6 +1,7 @@
 package com.fjhx.controller.tda;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.params.tda.TdaDeviceEx;
 import org.springblade.core.tool.api.R;
 import com.fjhx.entity.tda.TdaDevice;
 import com.fjhx.params.tda.TdaDeviceVo;
@@ -30,7 +31,7 @@ public class TdaDeviceController {
 
     @PostMapping("/page")
     public R page(@RequestBody Map<String, String> condition){
-        Page<TdaDevice> result = tdaDeviceService.getPage(condition);
+        Page<TdaDeviceEx> result = tdaDeviceService.getPage(condition);
         return R.success(result);
     }
 
@@ -40,12 +41,6 @@ public class TdaDeviceController {
         return R.success();
     }
 
-    @PostMapping("/edit")
-    public R edit(@RequestBody TdaDeviceVo tdaDeviceVo){
-        tdaDeviceService.edit(tdaDeviceVo);
-        return R.success();
-    }
-
     @PostMapping("/delete")
     public R delete(@RequestBody TdaDeviceVo tdaDeviceVo){
         tdaDeviceService.delete(tdaDeviceVo);

+ 7 - 13
hx-service/iot-production/src/main/java/com/fjhx/controller/tda/TdaProductController.java

@@ -1,10 +1,10 @@
 package com.fjhx.controller.tda;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.springblade.core.tool.api.R;
-import com.fjhx.entity.tda.TdaProduct;
+import com.fjhx.params.tda.TdaProductEx;
 import com.fjhx.params.tda.TdaProductVo;
 import com.fjhx.service.tda.TdaProductService;
+import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -15,7 +15,7 @@ import java.util.Map;
 
 /**
  * <p>
- *  前端控制器
+ * 前端控制器
  * </p>
  *
  * @author ${author}
@@ -29,25 +29,19 @@ public class TdaProductController {
     private TdaProductService tdaProductService;
 
     @PostMapping("/page")
-    public R page(@RequestBody Map<String, String> condition){
-        Page<TdaProduct> result = tdaProductService.getPage(condition);
+    public R page(@RequestBody Map<String, String> condition) {
+        Page<TdaProductEx> result = tdaProductService.getPage(condition);
         return R.success(result);
     }
 
     @PostMapping("/add")
-    public R add(@RequestBody TdaProductVo tdaProductVo){
+    public R add(@RequestBody TdaProductVo tdaProductVo) {
         tdaProductService.add(tdaProductVo);
         return R.success();
     }
 
-    @PostMapping("/edit")
-    public R edit(@RequestBody TdaProductVo tdaProductVo){
-        tdaProductService.edit(tdaProductVo);
-        return R.success();
-    }
-
     @PostMapping("/delete")
-    public R delete(@RequestBody TdaProductVo tdaProductVo){
+    public R delete(@RequestBody TdaProductVo tdaProductVo) {
         tdaProductService.delete(tdaProductVo);
         return R.success();
     }

+ 6 - 0
hx-service/iot-production/src/main/java/com/fjhx/mapper/tda/TdaDeviceMapper.java

@@ -1,7 +1,11 @@
 package com.fjhx.mapper.tda;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.tda.TdaDevice;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.params.tda.TdaDeviceEx;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +17,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface TdaDeviceMapper extends BaseMapper<TdaDevice> {
 
+    Page<TdaDeviceEx> getPage(@Param("page") Page<TdaDevice> page, @Param("ew") QueryWrapper<TdaDevice> wrapper);
+
 }

+ 13 - 0
hx-service/iot-production/src/main/java/com/fjhx/mapper/tda/TdaDeviceMapper.xml

@@ -2,4 +2,17 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.mapper.tda.TdaDeviceMapper">
 
+    <select id="getPage" resultType="com.fjhx.params.tda.TdaDeviceEx">
+        select ta.app_name applicationName,
+               tp.name     productName,
+               td.device_name,
+               td.node_id,
+               td.device_id,
+               td.device_name
+        from tda_device td
+                 left join tda_product tp on td.tda_product_id = tp.id
+                 left join tda_application ta on tp.tda_application_id = ta.id
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 6 - 0
hx-service/iot-production/src/main/java/com/fjhx/mapper/tda/TdaProductMapper.java

@@ -1,7 +1,11 @@
 package com.fjhx.mapper.tda;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.tda.TdaProduct;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.params.tda.TdaProductEx;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +17,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface TdaProductMapper extends BaseMapper<TdaProduct> {
 
+    Page<TdaProductEx> getPage(@Param("page") Page<TdaProduct> page, @Param("ew") QueryWrapper<TdaProductEx> wrapper);
+
 }

+ 14 - 0
hx-service/iot-production/src/main/java/com/fjhx/mapper/tda/TdaProductMapper.xml

@@ -2,4 +2,18 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.mapper.tda.TdaProductMapper">
 
+    <select id="getPage" resultType="com.fjhx.params.tda.TdaProductEx">
+        select tp.id,
+               ta.app_name,
+               tp.name,
+               tp.product_id,
+               tp.device_type,
+               tp.manufacturer_name,
+               tp.protocol_type,
+               tp.data_format
+        from tda_product tp
+                 left join tda_application ta on tp.tda_application_id = ta.id
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 1 - 3
hx-service/iot-production/src/main/java/com/fjhx/service/tda/TdaApplicationService.java

@@ -17,12 +17,10 @@ import java.util.Map;
  */
 public interface TdaApplicationService extends BaseService<TdaApplication> {
 
-    Page<TdaApplication> getPage(Map<String, String> condition);
+    Page<Map<String, Object>> getPage(Map<String, String> condition);
 
     void add(TdaApplicationVo tdaApplicationVo);
 
-    void edit(TdaApplicationVo tdaApplicationVo);
-
     void delete(TdaApplicationVo tdaApplicationVo);
 
 }

+ 2 - 3
hx-service/iot-production/src/main/java/com/fjhx/service/tda/TdaDeviceService.java

@@ -2,6 +2,7 @@ package com.fjhx.service.tda;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.tda.TdaDevice;
+import com.fjhx.params.tda.TdaDeviceEx;
 import com.fjhx.params.tda.TdaDeviceVo;
 import com.fjhx.base.BaseService;
 
@@ -17,12 +18,10 @@ import java.util.Map;
  */
 public interface TdaDeviceService extends BaseService<TdaDevice> {
 
-    Page<TdaDevice> getPage(Map<String, String> condition);
+    Page<TdaDeviceEx> getPage(Map<String, String> condition);
 
     void add(TdaDeviceVo tdaDeviceVo);
 
-    void edit(TdaDeviceVo tdaDeviceVo);
-
     void delete(TdaDeviceVo tdaDeviceVo);
 
 }

+ 2 - 3
hx-service/iot-production/src/main/java/com/fjhx/service/tda/TdaProductService.java

@@ -2,6 +2,7 @@ package com.fjhx.service.tda;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.tda.TdaProduct;
+import com.fjhx.params.tda.TdaProductEx;
 import com.fjhx.params.tda.TdaProductVo;
 import com.fjhx.base.BaseService;
 
@@ -17,12 +18,10 @@ import java.util.Map;
  */
 public interface TdaProductService extends BaseService<TdaProduct> {
 
-    Page<TdaProduct> getPage(Map<String, String> condition);
+    Page<TdaProductEx> getPage(Map<String, String> condition);
 
     void add(TdaProductVo tdaProductVo);
 
-    void edit(TdaProductVo tdaProductVo);
-
     void delete(TdaProductVo tdaProductVo);
 
 }

+ 24 - 14
hx-service/iot-production/src/main/java/com/fjhx/service/tda/impl/TdaApplicationServiceImpl.java

@@ -1,21 +1,25 @@
 package com.fjhx.service.tda.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.utils.WrapperUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.entity.tda.TdaApplication;
-import com.fjhx.params.tda.TdaApplicationVo;
 import com.fjhx.mapper.tda.TdaApplicationMapper;
+import com.fjhx.params.tda.TdaApplicationVo;
 import com.fjhx.service.tda.TdaApplicationService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.utils.IoTDAUtil;
+import com.fjhx.utils.UserClientUtil;
+import com.fjhx.utils.WrapperUtil;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
 import java.util.Map;
 
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author ${author}
@@ -25,31 +29,37 @@ import java.util.Map;
 public class TdaApplicationServiceImpl extends ServiceImpl<TdaApplicationMapper, TdaApplication> implements TdaApplicationService {
 
     @Override
-    public Page<TdaApplication> getPage(Map<String, String> condition) {
+    public Page<Map<String, Object>> getPage(Map<String, String> condition) {
 
         QueryWrapper<TdaApplication> wrapper = Wrappers.query();
 
         WrapperUtil.init(condition, wrapper)
-                .eqTenantId()
+                .keyword("app_name", "app_id")
                 .createTimeDesc();
 
-        Page<TdaApplication> page = page(condition, wrapper);
-        return page;
+        Page<Map<String, Object>> mapPage = pageMaps(condition, wrapper);
+        List<Map<String, Object>> records = mapPage.getRecords();
+
+        Map<Long, String> createUser = UserClientUtil.getUserNameMapFunctionLong(records, item -> BeanUtil.toBean(item.get("createUser"), Long.class));
+
+        records.forEach(item -> item.put("createUserName", createUser.get(BeanUtil.toBean(item.get("createUser"), Long.class))));
+
+        return mapPage;
     }
 
     @Override
     public void add(TdaApplicationVo tdaApplicationVo) {
+        String appId = IoTDAUtil.addApplication(tdaApplicationVo.getAppName());
+        tdaApplicationVo.setAppId(appId);
         save(tdaApplicationVo);
     }
 
     @Override
-    public void edit(TdaApplicationVo tdaApplicationVo) {
-        updateById(tdaApplicationVo);
-    }
-
-    @Override
     public void delete(TdaApplicationVo tdaApplicationVo) {
-        removeById(tdaApplicationVo.getId());
+        Long id = tdaApplicationVo.getId();
+        TdaApplication tdaApplication = getById(id);
+        IoTDAUtil.deleteApplication(tdaApplication.getAppName());
+        removeById(id);
     }
 
 }

+ 42 - 15
hx-service/iot-production/src/main/java/com/fjhx/service/tda/impl/TdaDeviceServiceImpl.java

@@ -3,19 +3,25 @@ package com.fjhx.service.tda.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.utils.WrapperUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.entity.tda.TdaDevice;
-import com.fjhx.params.tda.TdaDeviceVo;
+import com.fjhx.entity.tda.TdaProduct;
 import com.fjhx.mapper.tda.TdaDeviceMapper;
+import com.fjhx.params.tda.TdaDeviceEx;
+import com.fjhx.params.tda.TdaDeviceVo;
 import com.fjhx.service.tda.TdaDeviceService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.service.tda.TdaProductService;
+import com.fjhx.utils.Assert;
+import com.fjhx.utils.IoTDAUtil;
+import com.fjhx.utils.WrapperUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Map;
 
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author ${author}
@@ -24,32 +30,53 @@ import java.util.Map;
 @Service
 public class TdaDeviceServiceImpl extends ServiceImpl<TdaDeviceMapper, TdaDevice> implements TdaDeviceService {
 
+    @Autowired
+    private TdaProductService tdaProductService;
+
     @Override
-    public Page<TdaDevice> getPage(Map<String, String> condition) {
+    public Page<TdaDeviceEx> getPage(Map<String, String> condition) {
 
         QueryWrapper<TdaDevice> wrapper = Wrappers.query();
 
         WrapperUtil.init(condition, wrapper)
-                .eqTenantId()
-                .createTimeDesc();
+                .keyword("tp.name", "tp.product_id")
+                .createTimeDesc("tp");
 
-        Page<TdaDevice> page = page(condition, wrapper);
-        return page;
+        return baseMapper.getPage(createPage(condition), wrapper);
     }
 
     @Override
     public void add(TdaDeviceVo tdaDeviceVo) {
-        save(tdaDeviceVo);
-    }
+        String nodeId = tdaDeviceVo.getNodeId();
+        Assert.notEmpty(nodeId, "设备标识不能为空");
 
-    @Override
-    public void edit(TdaDeviceVo tdaDeviceVo) {
-        updateById(tdaDeviceVo);
+        String deviceName = tdaDeviceVo.getDeviceName();
+        Assert.notEmpty(deviceName, "设备名称不能为空");
+
+        Long tdaProductId = tdaDeviceVo.getTdaProductId();
+        Assert.notEmpty(tdaProductId, "产品表id不能为空");
+
+        // 查询资源所在空间和产品id
+        TdaProduct tdaProduct = tdaProductService.getById(tdaProductId);
+        String productId = tdaProduct.getProductId();
+
+        IoTDAUtil.DeviceKey deviceKey = IoTDAUtil.addDevice(nodeId, deviceName, tdaProduct.getAppId(), productId);
+
+        tdaDeviceVo.setProductId(productId);
+        tdaDeviceVo.setDeviceId(deviceKey.getDeviceId());
+        tdaDeviceVo.setSecret(deviceKey.getSecret());
+
+        save(tdaDeviceVo);
     }
 
     @Override
     public void delete(TdaDeviceVo tdaDeviceVo) {
-        removeById(tdaDeviceVo.getId());
+        Long id = tdaDeviceVo.getId();
+        TdaDevice tdaDevice = getById(id);
+
+        IoTDAUtil.deleteDevice(tdaDevice.getDeviceId());
+
+        removeById(id);
     }
 
 }

+ 42 - 14
hx-service/iot-production/src/main/java/com/fjhx/service/tda/impl/TdaProductServiceImpl.java

@@ -3,19 +3,25 @@ package com.fjhx.service.tda.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.utils.WrapperUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.entity.tda.TdaApplication;
 import com.fjhx.entity.tda.TdaProduct;
-import com.fjhx.params.tda.TdaProductVo;
 import com.fjhx.mapper.tda.TdaProductMapper;
+import com.fjhx.params.tda.TdaProductEx;
+import com.fjhx.params.tda.TdaProductVo;
+import com.fjhx.service.tda.TdaApplicationService;
 import com.fjhx.service.tda.TdaProductService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.utils.Assert;
+import com.fjhx.utils.IoTDAUtil;
+import com.fjhx.utils.WrapperUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Map;
 
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author ${author}
@@ -24,31 +30,53 @@ import java.util.Map;
 @Service
 public class TdaProductServiceImpl extends ServiceImpl<TdaProductMapper, TdaProduct> implements TdaProductService {
 
+    @Autowired
+    private TdaApplicationService tdaApplicationService;
+
     @Override
-    public Page<TdaProduct> getPage(Map<String, String> condition) {
+    public Page<TdaProductEx> getPage(Map<String, String> condition) {
 
-        QueryWrapper<TdaProduct> wrapper = Wrappers.query();
+        QueryWrapper<TdaProductEx> wrapper = Wrappers.query();
 
         WrapperUtil.init(condition, wrapper)
-                .eqTenantId()
+                .keyword("tp.name", "tp.product_id")
                 .createTimeDesc();
 
-        Page<TdaProduct> page = page(condition, wrapper);
-        return page;
+        return baseMapper.getPage(createPage(condition), wrapper);
     }
 
     @Override
     public void add(TdaProductVo tdaProductVo) {
-        save(tdaProductVo);
-    }
+        Long tdaApplicationId = tdaProductVo.getTdaApplicationId();
+        Assert.notEmpty(tdaApplicationId, "资源空间表id不能为空");
 
-    @Override
-    public void edit(TdaProductVo tdaProductVo) {
-        updateById(tdaProductVo);
+        String name = tdaProductVo.getName();
+        Assert.notEmpty(name, "产品名称不能为空");
+
+        String deviceType = tdaProductVo.getDeviceType();
+        Assert.notEmpty(deviceType, "设备类型不能为空");
+
+        String manufacturerName = tdaProductVo.getManufacturerName();
+        Assert.notEmpty(manufacturerName, "厂商名称不能为空");
+
+        TdaApplication tdaApplication = tdaApplicationService.getById(tdaApplicationId);
+        String appId = tdaApplication.getAppId();
+
+        String productId = IoTDAUtil.createProduct(appId, name, deviceType, manufacturerName);
+
+        tdaProductVo.setAppId(appId);
+        tdaProductVo.setProductId(productId);
+        save(tdaProductVo);
     }
 
     @Override
     public void delete(TdaProductVo tdaProductVo) {
+        Long id = tdaProductVo.getId();
+        Assert.notEmpty(id, "产品表id不能为空");
+
+        TdaProduct tdaProduct = getById(id);
+        IoTDAUtil.deleteProduct(tdaProduct.getAppId(), tdaProduct.getProductId());
+
         removeById(tdaProductVo.getId());
     }
 

+ 2 - 2
hx-service/iot-production/src/main/java/com/fjhx/utils/IoTDAUtil.java

@@ -114,8 +114,8 @@ public class IoTDAUtil {
     public static void deleteProduct(String appId, String productId) {
         try {
             DeleteProductRequest deleteProductRequest = new DeleteProductRequest();
-            deleteProductRequest.setAppId("fa74090e9e534511b65545a456f4bf2f");
-            deleteProductRequest.setProductId("62d793e26b9813541d52492b");
+            deleteProductRequest.setAppId(appId);
+            deleteProductRequest.setProductId(productId);
             client.deleteProduct(deleteProductRequest);
         } catch (Exception e) {
             throw new ServiceException("产品删除失败");