Browse Source

'客户提醒信息表-发送接口、优化产品信息表-新增接口和设备信息表-新增接口(都新增产品编码字段)'

james 1 year ago
parent
commit
55405b6bd2

+ 12 - 0
service-iot/service-iot-biz/pom.xml

@@ -25,6 +25,18 @@
             <artifactId>easypoi-spring-boot-starter</artifactId>
             <version>4.1.0</version>
         </dependency>
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-core</artifactId>
+            <version>4.5.16</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
+            <version>1.1.0</version>
+        </dependency>
         
 
     </dependencies>

+ 42 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/CrmCustomRemindController.java

@@ -0,0 +1,42 @@
+package com.usky.iot.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.iot.domain.CrmCustomRemind;
+import com.usky.iot.service.CrmCustomRemindService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 客户提醒信息表 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+@RestController
+@RequestMapping("/crmCustomRemind")
+public class CrmCustomRemindController {
+
+    @Autowired
+    private CrmCustomRemindService crmCustomRemindService;
+
+    /**
+     * 发送
+     * @param crmCustomRemind
+     * @return
+     */
+    @PostMapping
+    public ApiResult<Void> add(@RequestBody CrmCustomRemind crmCustomRemind){
+        crmCustomRemindService.add(crmCustomRemind);
+        return ApiResult.success();
+    }
+
+}
+

+ 6 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/CrmCustomInfo.java

@@ -118,7 +118,12 @@ public class CrmCustomInfo implements Serializable {
     private LocalDateTime updateTime;
 
     /**
-     * 租户号
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
      */
     private Integer tenantId;
 

+ 91 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/CrmCustomRemind.java

@@ -0,0 +1,91 @@
+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;
+
+/**
+ * <p>
+ * 客户提醒信息表
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class CrmCustomRemind implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 客户管理id
+     */
+    private Integer customId;
+
+    /**
+     * 客户名称
+     */
+    private String customName;
+
+    /**
+     * 手机号码
+     */
+    private String phone;
+
+    /**
+     * 邮箱地址
+     */
+    private String email;
+
+    /**
+     * 提醒方式;1:短信,2:邮箱
+     */
+    private String remindMethod;
+
+    /**
+     * 发送状态;1:短信成功,2:短信失败,3:邮箱成功,4:邮箱失败
+     */
+    private String sendStatus;
+
+    /**
+     * 发送内容
+     */
+    private String sendContext;
+
+    /**
+     * 发送时间
+     */
+    private LocalDateTime sendTime;
+
+    /**
+     * 创建用户
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 5 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceInfo.java

@@ -122,6 +122,11 @@ public class DmpDeviceInfo implements Serializable {
      */
     private Integer serviceStatus;
 
+    /**
+     * 产品编码
+     */
+    private String productCode;
+
     /**
      * 设备状态;1:在线,2:离线
      */

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

@@ -136,6 +136,10 @@ public class DmpProductInfo implements Serializable {
      */
     private Integer tenantId;
 
+    /**
+     * 产品编码
+     */
+    private String productCode;
 
     /**
      * 设备总数

+ 16 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/CrmCustomRemindMapper.java

@@ -0,0 +1,16 @@
+package com.usky.iot.mapper;
+
+import com.usky.iot.domain.CrmCustomRemind;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 客户提醒信息表 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+public interface CrmCustomRemindMapper extends CrudMapper<CrmCustomRemind> {
+
+}

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

@@ -4,9 +4,12 @@ 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.iot.domain.DmpProductInfo;
 import com.usky.iot.service.vo.DmpDeviceInfoRequest;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -18,7 +21,7 @@ import org.apache.ibatis.annotations.Param;
  */
 public interface DmpDeviceInfoMapper extends CrudMapper<DmpDeviceInfo> {
 
-
+    List<DmpProductInfo> getProductInfo(String productCode);
 
     Page<DmpDeviceInfo> page(IPage<DmpDeviceInfo> page, @Param("ar")DmpDeviceInfoRequest dmpDeviceInfoRequest);
 }

+ 18 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/CrmCustomRemindService.java

@@ -0,0 +1,18 @@
+package com.usky.iot.service;
+
+import com.usky.iot.domain.CrmCustomRemind;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 客户提醒信息表 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+public interface CrmCustomRemindService extends CrudService<CrmCustomRemind> {
+
+    void add(CrmCustomRemind crmCustomRemind);
+
+}

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

@@ -22,7 +22,7 @@ import java.util.Map;
  */
 public interface DmpDeviceInfoService extends CrudService<DmpDeviceInfo> {
 
-    boolean add(DmpDeviceInfo dmpDeviceInfo);
+    void add(DmpDeviceInfo dmpDeviceInfo);
 
     void update(DmpDeviceInfo dmpDeviceInfo);
 

+ 69 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/CrmCustomRemindServiceImpl.java

@@ -0,0 +1,69 @@
+package com.usky.iot.service.impl;
+
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.iot.domain.CrmCustomRemind;
+import com.usky.iot.mapper.CrmCustomRemindMapper;
+import com.usky.iot.service.CrmCustomRemindService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+import com.aliyuncs.exceptions.ClientException;
+import com.aliyuncs.profile.DefaultProfile;
+import com.google.gson.Gson;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * <p>
+ * 客户提醒信息表 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+@Service
+public class CrmCustomRemindServiceImpl extends AbstractCrudService<CrmCustomRemindMapper, CrmCustomRemind> implements CrmCustomRemindService {
+
+    @Override
+    public void add(CrmCustomRemind crmCustomRemind){
+        String method = crmCustomRemind.getRemindMethod();
+        StringBuffer sendStatus = new StringBuffer();
+        //发送短信
+        DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "LTAI9WERPIFIlHDg", "p7SQ0rYpraebcdoJ0l3tOtYmmgrR4q");
+        IAcsClient client = new DefaultAcsClient(profile);
+        SendSmsRequest request = new SendSmsRequest();
+        request.setPhoneNumbers(crmCustomRemind.getPhone());//接收短信的手机号码
+        request.setSignName("永天智慧云");//短信签名名称
+        request.setTemplateCode("SMS_164095840");//短信模板CODE
+        String code = "test";
+        request.setTemplateParam("{\"code\":\""+code+"\"}");//短信模板变量对应的实际值
+        try {
+            SendSmsResponse response = client.getAcsResponse(request);
+            if(response.getCode() != null){
+                if(response.getCode().equals("OK")){
+                    sendStatus.append("1");
+                }else{
+                    sendStatus.append("2");
+                }
+            }
+            System.out.println(new Gson().toJson(response));
+        } catch (ClientException e) {
+            System.out.println("ErrCode:" + e.getErrCode());
+            System.out.println("ErrMsg:" + e.getErrMsg());
+            System.out.println("RequestId:" + e.getRequestId());
+        }
+
+        crmCustomRemind.setSendStatus(sendStatus.toString());  //发送状态需要根据发送返回结果确认
+        crmCustomRemind.setSendTime(LocalDateTime.now());
+        crmCustomRemind.setCreateBy(SecurityUtils.getUsername());
+        crmCustomRemind.setCreateTime(LocalDateTime.now());
+        crmCustomRemind.setTenantId(SecurityUtils.getTenantId());
+        this.save(crmCustomRemind);
+    }
+
+}

+ 19 - 13
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java

@@ -20,11 +20,8 @@ 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.iot.domain.BaseGgpFacility;
+import com.usky.iot.domain.*;
 import com.usky.common.security.utils.SecurityUtils;
-import com.usky.iot.domain.BaseFacilityDevice;
-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;
@@ -58,13 +55,22 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
     private DmpDeviceStatusService dmpDeviceStatusService;
 
     @Override
-    public boolean add(DmpDeviceInfo dmpDeviceInfo) {
-        dmpDeviceInfo.setDeviceId(UUIDUtils.uuid());
-        dmpDeviceInfo.setCreatedBy(SecurityUtils.getUsername());
-        dmpDeviceInfo.setCreatedTime(LocalDateTime.now());
+    public void add(DmpDeviceInfo dmpDeviceInfo) {
         if (checkNameUnique(dmpDeviceInfo)){
-            throw new BusinessException("新增设备信息'" + dmpDeviceInfo.getDeviceName() + "'失败,设备信息已存在");
+            throw new BusinessException("新增设备信息'" + dmpDeviceInfo.getDeviceId() + "'失败,设备信息已存在");
         }
+        List<DmpProductInfo> list = baseMapper.getProductInfo(dmpDeviceInfo.getProductCode());
+        if(CollectionUtils.isNotEmpty(list)){
+            dmpDeviceInfo.setDeviceType(list.get(0).getDeviceType());
+            dmpDeviceInfo.setProductId(list.get(0).getId());
+            dmpDeviceInfo.setCreatedBy(SecurityUtils.getUsername());
+            dmpDeviceInfo.setCreatedTime(LocalDateTime.now());
+            dmpDeviceInfo.setTenantId(SecurityUtils.getTenantId());
+            dmpDeviceInfo.setServiceStatus(1);
+            this.save(dmpDeviceInfo);
+        }
+
+
         DmpDeviceStatus dmpDeviceStatus = new DmpDeviceStatus();
         dmpDeviceStatus.setDeviceId(dmpDeviceInfo.getDeviceId());
         dmpDeviceStatus.setProductId(dmpDeviceInfo.getProductId());
@@ -72,7 +78,7 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
         dmpDeviceStatus.setLastOfflineTime(LocalDateTime.now());
         dmpDeviceStatusService.save(dmpDeviceStatus);
 
-        return this.save(dmpDeviceInfo);
+
     }
 
     @Override
@@ -80,7 +86,7 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
         dmpDeviceInfo.setUpdatedBy(SecurityUtils.getUsername());
         dmpDeviceInfo.setUpdatedTime(LocalDateTime.now());
         if (checkNameUnique(dmpDeviceInfo)){
-            throw new BusinessException("修改设备信息'" + dmpDeviceInfo.getDeviceName() + "'失败,设备信息已存在");
+            throw new BusinessException("修改设备信息'" + dmpDeviceInfo.getDeviceId() + "'失败,设备信息已存在");
         }
         this.updateById(dmpDeviceInfo);
 
@@ -91,8 +97,8 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
         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::getDeviceId,dmpDeviceInfo.getDeviceId())
+                .eq(DmpDeviceInfo::getProductCode,dmpDeviceInfo.getProductCode())
                 .eq(DmpDeviceInfo::getDeleteFlag,0);
         DmpDeviceInfo one = this.getOne(queryWrapper);
         return null != one && !Objects.equals(one.getId(), id);

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

@@ -54,7 +54,7 @@ public class DmpProductInfoServiceImpl extends AbstractCrudService<DmpProductInf
     @Override
     public void add(DmpProductInfo dmpProductInfo) {
         if (checkNameUnique(dmpProductInfo)){
-            throw new BusinessException("新增产品信息'" + dmpProductInfo.getProductName() + "'失败,产品信息已存在");
+            throw new BusinessException("新增产品信息'" + dmpProductInfo.getProductCode() + "'失败,产品信息已存在");
         }
         dmpProductInfo.setCreatedBy(SecurityUtils.getUsername());
         dmpProductInfo.setCreatedTime(new Date());
@@ -107,16 +107,16 @@ public class DmpProductInfoServiceImpl extends AbstractCrudService<DmpProductInf
     public void update(DmpProductInfo dmpProductInfo) {
         dmpProductInfo.setUpdatedTime(new Date());
         if (checkNameUnique(dmpProductInfo)){
-            throw new BusinessException("修改产品信息'" + dmpProductInfo.getProductName() + "'失败,产品信息已存在");
+            throw new BusinessException("修改产品信息'" + dmpProductInfo.getProductCode() + "'失败,产品信息已存在");
         }
         this.updateById(dmpProductInfo);
     }
 
     @Override
-    public boolean checkNameUnique(DmpProductInfo dmpProductInfo) {
+    public boolean checkNameUnique(DmpProductInfo dmpProductInfo) { //根据产品编码判断唯一
         Integer id = null == dmpProductInfo.getId() ? -1 : dmpProductInfo.getId();
         LambdaQueryWrapper<DmpProductInfo> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(DmpProductInfo::getProductName,dmpProductInfo.getProductName())
+        queryWrapper.eq(DmpProductInfo::getProductCode,dmpProductInfo.getProductCode())
                 .eq(DmpProductInfo::getDeleteFlag,0);
         DmpProductInfo one = this.getOne(queryWrapper);
         return null != one && !Objects.equals(one.getId(), id);

+ 22 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/CrmCustomRemindMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.iot.mapper.CrmCustomRemindMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.iot.domain.CrmCustomRemind">
+        <id column="id" property="id" />
+        <result column="custom_id" property="customId" />
+        <result column="custom_name" property="customName" />
+        <result column="phone" property="phone" />
+        <result column="email" property="email" />
+        <result column="remind_method" property="remindMethod" />
+        <result column="send_status" property="sendStatus" />
+        <result column="send_context" property="sendContext" />
+        <result column="send_time" property="sendTime" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="dept_id" property="deptId" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

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

@@ -44,5 +44,17 @@
         </where>
         order by ddi.id desc
     </select>
+    <select id="getProductInfo" resultType="com.usky.iot.domain.DmpProductInfo">
+        select dpi.*
+        from dmp_product dpi
+        <where>
+            <if test="productCode != null">
+                and dpi.product_code = #{productCode}
+            </if>
+            <if test="1 == 1">
+                and dpi.delete_flag = 0
+            </if>
+        </where>
+    </select>
 
 </mapper>