Browse Source

Merge branch 'master' into master-xcq

# Conflicts:
#	iot-module/iot-module-manage/iot-module-manage-biz/src/main/resources/mapper/IotDeviceMapper.xml
#	iot-module/iot-module-manage/iot-module-manage-biz/src/main/resources/mapper/IotProductMapper.xml
xucaiqin 2 years ago
parent
commit
377077753a
28 changed files with 1113 additions and 74 deletions
  1. 1 1
      iot-framework/iot-starter-satoken/src/main/java/com/middle/platform/satoken/config/SaTokenConfig.java
  2. 21 0
      iot-module/iot-module-manage/iot-module-manage-api/src/main/java/com/middle/platform/manage/api/enums/DeviceStatus.java
  3. 0 6
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/controller/IotProductController.java
  4. 74 3
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/controller/IotProjectController.java
  5. 59 3
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/controller/IotProjectDeviceController.java
  6. 24 0
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/req/ChangeStatus.java
  7. 2 0
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/req/IotDevicePara.java
  8. 45 0
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/req/IotProDevicePara.java
  9. 30 0
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/req/IotProjectDevicePara.java
  10. 42 0
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/req/IotProjectPara.java
  11. 15 0
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/req/ProjectPage.java
  12. 10 0
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/vo/IotDeviceVo.java
  13. 70 0
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/vo/IotProjectVo.java
  14. 1 0
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/entity/IotProjectDevice.java
  15. 45 0
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/entity/IotProjectDeviceLog.java
  16. 17 0
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/mapper/IotProjectDeviceLogMapper.java
  17. 30 3
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/mapper/IotProjectDeviceMapper.java
  18. 18 0
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/mapper/IotProjectMapper.java
  19. 108 3
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotProjectDeviceService.java
  20. 92 3
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotProjectService.java
  21. 20 5
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/resources/mapper/IotDeviceMapper.xml
  22. 107 18
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/resources/mapper/IotProjectDeviceMapper.xml
  23. 96 21
      iot-module/iot-module-manage/iot-module-manage-biz/src/main/resources/mapper/IotProjectMapper.xml
  24. 45 8
      iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/controller/DictController.java
  25. 6 0
      iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/mapper/SysDictItemMapper.java
  26. 55 0
      iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/pojo/req/SysDictItemPara.java
  27. 41 0
      iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/service/SysDictItemService.java
  28. 39 0
      iot-module/iot-module-system/iot-module-system-biz/src/main/resources/mapper/SysDictItemMapper.xml

+ 1 - 1
iot-framework/iot-starter-satoken/src/main/java/com/middle/platform/satoken/config/SaTokenConfig.java

@@ -17,7 +17,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 public class SaTokenConfig implements WebMvcConfigurer {
     private final String[] exclude = new String[]{
             RpcConstants.RPC_API_PREFIX + "/**",
-            "/auth/login", "/auth/logout",
+            "/auth/login", "/auth/logout", "/**"
     };
 
     @Bean

+ 21 - 0
iot-module/iot-module-manage/iot-module-manage-api/src/main/java/com/middle/platform/manage/api/enums/DeviceStatus.java

@@ -0,0 +1,21 @@
+package com.middle.platform.manage.api.enums;
+
+/**
+ * 设备在线状态
+ *
+ * @author Aick Spt
+ * @date 2023-12-21 17:27
+ */
+public class DeviceStatus {
+    public static final int ONLINE_VAL = 1;//在线
+
+    public static final int OFFLINE_VAL = 0;//离线
+
+    public static final String ONLINE = "在线";
+
+    public static final String OFFLINE = "离线";
+
+    public String getStatus(Integer status) {
+        return (status.equals(ONLINE_VAL)) ? ONLINE : OFFLINE;
+    }
+}

+ 0 - 6
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/controller/IotProductController.java

@@ -40,9 +40,6 @@ public class IotProductController {
 
     /**
      * 分页查询产品数据
-     *
-     * @param productPage
-     * @return
      */
     @PostMapping("/list")
     public Result<Object> list(@RequestBody @Validated ProductPage productPage) {
@@ -51,9 +48,6 @@ public class IotProductController {
 
     /**
      * 新增产品
-     *
-     * @param iotProductPara
-     * @return
      */
     @PostMapping("/save")
     public Result<Object> save(@RequestBody @Validated IotProductPara iotProductPara) {

+ 74 - 3
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/controller/IotProjectController.java

@@ -1,8 +1,14 @@
 package com.middle.platform.manage.biz.controller;
 
+import com.middle.platform.common.utils.Result;
+import com.middle.platform.manage.biz.domain.req.ChangeStatus;
+import com.middle.platform.manage.biz.domain.req.IotProjectPara;
+import com.middle.platform.manage.biz.domain.req.ProjectPage;
+import com.middle.platform.manage.biz.service.IotProjectService;
+import jakarta.validation.constraints.NotNull;
 import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * 项目表(iot_project)表控制层
@@ -10,8 +16,73 @@ import org.springframework.web.bind.annotation.RestController;
  * @author xxxxx
  */
 @RestController
-@RequestMapping("/iot_project")
+@RequestMapping("/iotProject")
 @RequiredArgsConstructor
+@Validated
 public class IotProjectController {
+    private final IotProjectService iotProjectService;
+
+
+    /**
+     * 分页查询项目数据
+     */
+    @PostMapping("/list")
+    public Result<Object> list(@RequestBody @Validated ProjectPage projectPage) {
+        return Result.ok(iotProjectService.pageQuery(projectPage));
+    }
+
+    /**
+     * 新增项目
+     */
+    @PostMapping("/save")
+    public Result<Object> save(@RequestBody @Validated IotProjectPara iotProjectPara) {
+        return Result.ok(iotProjectService.save(iotProjectPara), "保存成功");
+    }
+
+    /**
+     * 删除项目
+     */
+    @DeleteMapping("/remove")
+    public Result<Object> remove(@RequestParam("id") @NotNull(message = "id不能为空") Long id) {
+        return Result.ok(iotProjectService.remove(id), "删除成功");
+    }
+
+    /**
+     * 项目状态更改
+     */
+    @PostMapping("/changeStatus")
+    public Result<Object> changeStatus(@RequestBody @Validated ChangeStatus changeStatus) {
+        int suc = iotProjectService.changeStatus(changeStatus);
+        return Result.ok(suc, (suc == 1) ? "成功" : "失败或状态未变化");
+    }
+
+
+    /**
+     * 项目详情
+     */
+    @GetMapping("/detail")
+    public Result<Object> detail(@RequestParam("id") @NotNull(message = "id不能为空") Long id) {
+        return Result.ok(iotProjectService.detail(id), "查询成功");
+    }
+
+
+
+    /**
+     * 设备位置选点
+     */
+
+
+    /**
+     * 项目关联设备
+     */
+
+
+    /**
+     * 设备解绑
+     */
+
+
+
+
 
 }

+ 59 - 3
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/controller/IotProjectDeviceController.java

@@ -1,8 +1,14 @@
 package com.middle.platform.manage.biz.controller;
 
+import com.middle.platform.common.utils.Result;
+import com.middle.platform.manage.biz.domain.req.IotProDevicePara;
+import com.middle.platform.manage.biz.domain.req.IotProjectDevicePara;
+import com.middle.platform.manage.biz.service.IotProjectDeviceService;
+import jakarta.validation.constraints.NotNull;
 import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * 产品关联设备表(iot_project_device)表控制层
@@ -10,8 +16,58 @@ import org.springframework.web.bind.annotation.RestController;
  * @author xxxxx
  */
 @RestController
-@RequestMapping("/iot_project_device")
+@RequestMapping("/iotProjectDevice")
 @RequiredArgsConstructor
 public class IotProjectDeviceController {
 
+    private final IotProjectDeviceService iotProjectDeviceService;
+
+    /**
+     * 关联设备列表查询
+     */
+    @PostMapping("/list")
+    public Result<Object> list(@RequestBody @Validated IotProjectDevicePara iotProjectDevicePara) {
+        return Result.ok(iotProjectDeviceService.pageQuery(iotProjectDevicePara));
+    }
+
+
+    /**
+     * 项目关联设备
+     */
+    @PostMapping("/save")
+    @Transactional(rollbackFor = Exception.class)
+    public Result<Object> save(@RequestBody @Validated IotProjectDevicePara iotProjectDevicePara) {
+        return Result.ok(iotProjectDeviceService.save(iotProjectDevicePara), "保存成功");
+    }
+
+
+    /**
+     * 修改项目关联设备位置选点
+     */
+    @PostMapping("/updateProjectDevice")
+    @Transactional(rollbackFor = Exception.class)
+    public Result<Object> updateProjectDevice(@RequestBody @Validated IotProDevicePara iotProDevicePara) {
+        return Result.ok(iotProjectDeviceService.updateProjectDevice(iotProDevicePara), "保存成功");
+    }
+
+    /**
+     * 设备状态修改
+     */
+    @GetMapping("/updateDeviceStatus")
+    @Transactional(rollbackFor = Exception.class)
+    public Result<Object> updateDeviceStatus(@RequestParam("deviceId") @NotNull(message = "deviceId不能为空") Long deviceId, @RequestParam("enableFlag") @NotNull(message = "启用状态不能为空") Long enableFlag) {
+        return Result.ok(iotProjectDeviceService.updateProDeviceStatus(deviceId, enableFlag), "保存成功");
+    }
+
+
+    /**
+     * 设备解绑
+     */
+    @GetMapping("/deleteProDeviceUntie")
+    @Transactional(rollbackFor = Exception.class)
+    public Result<Object> deleteProDeviceUntie(@RequestParam("id") @NotNull(message = "id不能为空") Long id) {
+        return Result.ok(iotProjectDeviceService.deleteProDeviceUntie(id), "保存成功");
+    }
+
+
 }

+ 24 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/req/ChangeStatus.java

@@ -0,0 +1,24 @@
+package com.middle.platform.manage.biz.domain.req;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 更改状态
+ *
+ * @author Aick Spt
+ * @date 2023-12-22 11:14
+ */
+@Getter
+@Setter
+public class ChangeStatus {
+
+    @NotNull(message = "ID值不能为空")
+    public Long id;
+
+    @NotNull(message = "状态值不能为空")
+    public Integer status;
+
+}

+ 2 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/req/IotDevicePara.java

@@ -17,6 +17,8 @@ import java.time.LocalDateTime;
 @Setter
 public class IotDevicePara {
 
+
+
     /**
      * 所属产品
      */

+ 45 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/req/IotProDevicePara.java

@@ -0,0 +1,45 @@
+package com.middle.platform.manage.biz.domain.req;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 设备位置表
+ *
+ * @author Aick Spt
+ * @date 2023-12-24 11:27
+ */
+@Getter
+@Setter
+public class IotProDevicePara {
+
+    /**
+     * ID
+     */
+    @NotNull(message = "设备id不能为空")
+    private Long id;
+
+    /**
+     * 经度
+     */
+    @NotNull(message = "设备经度不能为空")
+    private BigDecimal lon;
+
+    /**
+     * 纬度
+     */
+    @NotNull(message = "设备纬度不能为空")
+    private BigDecimal lat;
+
+    /**
+     * 所属区域
+     */
+    @NotBlank(message = "设备所属区域不能为空")
+    private String address;
+
+
+}

+ 30 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/req/IotProjectDevicePara.java

@@ -0,0 +1,30 @@
+package com.middle.platform.manage.biz.domain.req;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 项目关联设备新增参数
+ * @author Aick Spt
+ * @date 2023-12-22 09:34
+ */
+@Getter
+@Setter
+public class IotProjectDevicePara extends ProjectPage{
+
+    /**
+     * 项目ID
+     */
+    @NotNull(message = "项目ID不能为空")
+    private Long projectId;
+
+    /**
+     * 设备ID
+     */
+    private List<Long> deviceIds;
+
+}

+ 42 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/req/IotProjectPara.java

@@ -0,0 +1,42 @@
+package com.middle.platform.manage.biz.domain.req;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目新增参数
+ * @author Aick Spt
+ * @date 2023-12-22 09:34
+ */
+@Getter
+@Setter
+public class IotProjectPara {
+
+    /**
+     * 项目所属企业字典值
+     */
+    @NotNull(message = "项目所属企业不能为空")
+    private Long companyId;
+
+
+    /**
+     * 项目名称
+     */
+    @NotBlank(message = "项目名称不能为空")
+    private String title;
+
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+    /**
+     * 状态 0 启用 1 禁用
+     */
+    @NotNull(message = "项目状态不能为空")
+    private Integer status;
+}

+ 15 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/req/ProjectPage.java

@@ -0,0 +1,15 @@
+package com.middle.platform.manage.biz.domain.req;
+
+import com.middle.platform.common.modle.BasePara;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Aick Spt
+ * @date 2023-12-19 16:24
+ */
+@Getter
+@Setter
+public class ProjectPage extends BasePara {
+}

+ 10 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/vo/IotDeviceVo.java

@@ -74,11 +74,21 @@ public class IotDeviceVo extends BaseVO {
      */
     private Integer status;
 
+    /**
+     * 状态名称
+     */
+    private String statusName;
+
     /**
      * 启用状态 1-启用 0-禁用
      */
     private Integer enableFlag;
 
+    /**
+     * 启用状态名称
+     */
+    private String enableFlagName;
+
     /**
      * 备注
      */

+ 70 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/vo/IotProjectVo.java

@@ -0,0 +1,70 @@
+package com.middle.platform.manage.biz.domain.vo;
+
+import com.middle.platform.mybatis.core.dataobject.BaseVO;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serial;
+
+/**
+ * 项目表
+ * @author Aick Spt
+ * @date 2023-12-21 09:56
+ */
+@Getter
+@Setter
+public class IotProjectVo extends BaseVO {
+
+
+    @Serial
+    private static final long serialVersionUID = -3229867893315660464L;
+
+
+    private Long id;
+
+    /**
+     * 项目编码
+     */
+    private String code;
+
+    /**
+     * 项目名称
+     */
+    private String title;
+
+    /**
+     *  所属企业
+     */
+    private Long companyId;
+
+    /**
+     *  所属企业名称
+     */
+    private String companyName;
+
+    /**
+     *  备注
+     */
+    private String remark;
+
+    /**
+     * 状态 0 正常 1 停用
+     */
+    private Integer status;
+
+    /**
+     * 状态 0 正常 1 停用
+     */
+    private String statusName;
+
+    /**
+     * 设备总数量
+     */
+    private Integer deviceNum;
+
+    /**
+     * 设备在线数量
+     */
+    private Integer deviceOnlineNum;
+
+}

+ 1 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/entity/IotProjectDevice.java

@@ -35,4 +35,5 @@ public class IotProjectDevice extends BaseDO {
      */
     @TableField(value = "device_id")
     private Long deviceId;
+
 }

+ 45 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/entity/IotProjectDeviceLog.java

@@ -0,0 +1,45 @@
+package com.middle.platform.manage.biz.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.middle.platform.mybatis.core.dataobject.BaseDO;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 产品关联设备表
+ *
+ * @author xucaiqin
+ * @date 2023-12-19 13:43:38
+ */
+@Getter
+@Setter
+@TableName(value = "iot_project_device_log")
+public class IotProjectDeviceLog extends BaseDO {
+    /**
+     * id
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 项目id
+     */
+    @TableField(value = "project_id")
+    private Long projectId;
+
+    /**
+     * 设备id
+     */
+    @TableField(value = "device_id")
+    private Long deviceId;
+
+    /**
+     * 解绑备注
+     */
+    @TableField(value = "remark")
+    private String remark;
+
+}

+ 17 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/mapper/IotProjectDeviceLogMapper.java

@@ -0,0 +1,17 @@
+package com.middle.platform.manage.biz.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.middle.platform.manage.biz.entity.IotProjectDeviceLog;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ *
+ * @author Aick Spt
+ * @date 2023-12-24 15:20
+ */
+@Mapper
+public interface IotProjectDeviceLogMapper extends BaseMapper<IotProjectDeviceLog> {
+
+}

+ 30 - 3
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/mapper/IotProjectDeviceMapper.java

@@ -1,13 +1,40 @@
 package com.middle.platform.manage.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.middle.platform.manage.biz.domain.req.IotProjectDevicePara;
+import com.middle.platform.manage.biz.domain.req.ProjectPage;
+import com.middle.platform.manage.biz.domain.vo.IotDeviceVo;
 import com.middle.platform.manage.biz.entity.IotProjectDevice;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
-* @date 2023-12-19 13:43:38
-* @author xucaiqin
-*/
+ * @author xucaiqin
+ * @date 2023-12-19 13:43:38
+ */
 @Mapper
 public interface IotProjectDeviceMapper extends BaseMapper<IotProjectDevice> {
+
+
+    /**
+     * 查找项目对应设备
+     *
+     * @author Aick Spt
+     * @date 2023-12-21 16:49
+     */
+    Integer queryDeviceNum(@Param("projectId") Long projectId, @Param("status") Integer status);
+
+
+    List<IotDeviceVo> pageQuery(@Param("iotProjectDevicePara") IotProjectDevicePara iotProjectDevicePara);
+
+    IotProjectDevice selectByProjectDevice(IotProjectDevice iotProjectDevice);
+
+    Integer updateById(@Param("deviceId") Long deviceId,@Param("enableFlag")  Long enableFlag);
+
+    Integer updateProDeviceUntie(@Param("id") Long id);
+    Integer deleteProDeviceUntie(@Param("id") Long id);
+
+    Integer updateByProjectDevice(IotProjectDevice iotProjectDevice);
 }

+ 18 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/mapper/IotProjectMapper.java

@@ -1,8 +1,14 @@
 package com.middle.platform.manage.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.middle.platform.manage.biz.domain.req.ChangeStatus;
+import com.middle.platform.manage.biz.domain.req.ProjectPage;
+import com.middle.platform.manage.biz.domain.vo.IotProjectVo;
 import com.middle.platform.manage.biz.entity.IotProject;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
 * @date 2023-12-19 13:43:38
@@ -10,4 +16,16 @@ import org.apache.ibatis.annotations.Mapper;
 */
 @Mapper
 public interface IotProjectMapper extends BaseMapper<IotProject> {
+
+    /**
+     * 分页项目查询
+     */
+    List<IotProjectVo> pageQuery(ProjectPage projectPage);
+
+
+    int delete(@Param("id") Long id);
+
+    IotProjectVo detail(@Param("id") Long id);
+
+    int changeStatus(@Param("changeStatus") ChangeStatus changeStatus);
 }

+ 108 - 3
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotProjectDeviceService.java

@@ -1,14 +1,119 @@
 package com.middle.platform.manage.biz.service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.middle.platform.common.utils.PageRes;
+import com.middle.platform.manage.biz.domain.req.IotProDevicePara;
+import com.middle.platform.manage.biz.domain.req.IotProjectDevicePara;
+import com.middle.platform.manage.biz.domain.vo.IotDeviceVo;
+import com.middle.platform.manage.biz.entity.IotDevice;
 import com.middle.platform.manage.biz.entity.IotProjectDevice;
+import com.middle.platform.manage.biz.entity.IotProjectDeviceLog;
+import com.middle.platform.manage.biz.mapper.IotDeviceMapper;
+import com.middle.platform.manage.biz.mapper.IotProjectDeviceLogMapper;
 import com.middle.platform.manage.biz.mapper.IotProjectDeviceMapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
+
 /**
-* @date 2023-12-19 13:43:38
-* @author xucaiqin
-*/
+ * @author xucaiqin
+ * @date 2023-12-19 13:43:38
+ */
 @Service
+@RequiredArgsConstructor
 public class IotProjectDeviceService extends ServiceImpl<IotProjectDeviceMapper, IotProjectDevice> {
 
+    private final IotProjectDeviceMapper iotProjectDeviceMapper;
+
+    private final IotProjectDeviceLogMapper iotProjectDeviceLogMapper;
+
+    private final IotDeviceMapper iotDeviceMapper;
+
+    /**
+     * 项目设备关联查询
+     *
+     * @author Aick Spt
+     * @date 2023-12-23 14:56
+     */
+    public Object pageQuery(IotProjectDevicePara iotProjectDevicePara) {
+        PageHelper.startPage(iotProjectDevicePara.getPage(), iotProjectDevicePara.getPageSize());
+        List<IotDeviceVo> iotDeviceVos = iotProjectDeviceMapper.pageQuery(iotProjectDevicePara);
+        iotDeviceVos.forEach(e -> {
+            e.setStatusName((e.getStatus().equals(1)) ? "在线" : "离线");
+            e.setEnableFlagName((e.getEnableFlag().equals(1)) ? "启用" : "禁用");
+        });
+        return new PageRes<>(iotDeviceVos);
+    }
+
+
+    /**
+     * 新增插入关联设备
+     *
+     * @author Aick Spt
+     * @date 2023-12-24 11:08
+     */
+    public Object save(IotProjectDevicePara iotProjectDevicePara) {
+        if (iotProjectDevicePara.getDeviceIds() == null) {
+            throw new RuntimeException("设备ID集合不能为空");
+        }
+        iotProjectDevicePara.getDeviceIds().forEach(e -> {
+            IotProjectDevice iotProjectDevice = new IotProjectDevice();
+            iotProjectDevice.setDeviceId(e);
+            iotProjectDevice.setProjectId(iotProjectDevicePara.getProjectId());
+            IotProjectDevice res = iotProjectDeviceMapper.selectByProjectDevice(iotProjectDevice);
+            if (res == null) {
+                //没有则新增
+                iotProjectDeviceMapper.insert(iotProjectDevice);
+            } else {
+                //有则更新状态即可
+                iotProjectDeviceMapper.updateByProjectDevice(iotProjectDevice);
+            }
+        });
+        return true;
+    }
+
+    /**
+     * 修改关联设备位置
+     *
+     * @author Aick Spt
+     * @date 2023-12-24 11:34
+     */
+    public Object updateProjectDevice(IotProDevicePara iotProDevicePara) {
+        IotDevice iotDevice = iotDeviceMapper.selectById(iotProDevicePara.getId());
+        BeanUtils.copyProperties(iotProDevicePara, iotDevice);
+        return iotDeviceMapper.updateById(iotDevice);
+    }
+
+
+    /**
+     * 设备状态修改
+     *
+     * @author Aick Spt
+     * @date 2023-12-24 14:21
+     */
+    public Object updateProDeviceStatus(Long deviceId, Long enableFlag) {
+        if (!(enableFlag == 1 || enableFlag == 0)) {
+            throw new RuntimeException("修改状态异常");
+        }
+        return iotProjectDeviceMapper.updateById(deviceId, enableFlag);
+    }
+
+    /**
+     * 设备解绑
+     */
+    public Object deleteProDeviceUntie(Long id) {
+        IotProjectDevice res = iotProjectDeviceMapper.selectById(id);
+        if (res != null) {
+            IotProjectDeviceLog iotProjectDeviceLog = new IotProjectDeviceLog();
+            BeanUtils.copyProperties(res, iotProjectDeviceLog);
+            iotProjectDeviceLog.setRemark("设备解绑");
+            iotProjectDeviceLogMapper.insert(iotProjectDeviceLog);
+            return iotProjectDeviceMapper.deleteProDeviceUntie(id);
+        } else {
+            throw new RuntimeException("查无设备,解绑失败");
+        }
+    }
 }

+ 92 - 3
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotProjectService.java

@@ -1,14 +1,103 @@
 package com.middle.platform.manage.biz.service;
 
+import cn.hutool.core.util.IdUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.middle.platform.common.utils.PageRes;
+import com.middle.platform.manage.api.enums.DeviceStatus;
+import com.middle.platform.manage.biz.domain.req.ChangeStatus;
+import com.middle.platform.manage.biz.domain.req.IotProjectPara;
+import com.middle.platform.manage.biz.domain.req.ProjectPage;
+import com.middle.platform.manage.biz.domain.vo.IotProjectVo;
 import com.middle.platform.manage.biz.entity.IotProject;
+import com.middle.platform.manage.biz.mapper.IotProjectDeviceMapper;
 import com.middle.platform.manage.biz.mapper.IotProjectMapper;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+
 /**
-* @date 2023-12-19 13:43:38
-* @author xucaiqin
-*/
+ * 项目
+ *
+ * @author xucaiqin
+ * @date 2023-12-19 13:43:38
+ */
 @Service
+@RequiredArgsConstructor
 public class IotProjectService extends ServiceImpl<IotProjectMapper, IotProject> {
 
+    private final IotProjectMapper iotProjectMapper;
+    private final IotProjectDeviceMapper iotProjectDeviceMapper;
+
+
+    /**
+     * 分页查询
+     * @author Aick Spt
+     * @date 2023-12-23 14:35
+     */
+    public Object pageQuery(ProjectPage projectPage) {
+        PageHelper.startPage(projectPage.getPage(), projectPage.getPageSize());
+        List<IotProjectVo> iotProductVos = iotProjectMapper.pageQuery(projectPage);
+        iotProductVos.forEach(this::getIotProjectStatusAndDeviceNum);
+        return new PageRes<>(iotProductVos);
+    }
+
+    /**
+     * 新增
+     *
+     * @author Aick Spt
+     * @date 2023-12-22 09:41
+     */
+    public Object save(IotProjectPara iotProjectPara) {
+        IotProject iotProject = new IotProject();
+        iotProject.setCode(IdUtil.nanoId(12));
+        iotProject.setRemark(iotProjectPara.getRemark());
+        iotProject.setTitle(iotProjectPara.getTitle());
+        iotProject.setStatus(iotProjectPara.getStatus());
+        iotProject.setCompanyId(iotProjectPara.getCompanyId());
+        return iotProjectMapper.insert(iotProject);
+    }
+
+
+    /**
+     * 删除
+     * @author Aick Spt
+     * @date 2023-12-23 14:35
+     */
+    public int remove(Long id) {
+        return iotProjectMapper.delete(id);
+    }
+
+    /**
+     * 详情
+     * @author Aick Spt
+     * @date 2023-12-23 14:36
+     */
+    public IotProjectVo detail(Long id) {
+        IotProjectVo iotProjectVo = iotProjectMapper.detail(id);
+        return this.getIotProjectStatusAndDeviceNum(iotProjectVo);
+    }
+
+    /**
+     * 调整返回结果
+     * @author Aick Spt
+     * @date 2023-12-23 14:36
+     */
+    private IotProjectVo getIotProjectStatusAndDeviceNum(IotProjectVo iotProjectVo) {
+        iotProjectVo.setStatusName((iotProjectVo.getStatus().equals(1)) ? "禁用" : "运行中");
+        Integer deviceNum = iotProjectDeviceMapper.queryDeviceNum(iotProjectVo.getId(), null);
+        Integer deviceOnlineNum = iotProjectDeviceMapper.queryDeviceNum(iotProjectVo.getId(), DeviceStatus.ONLINE_VAL);
+        iotProjectVo.setDeviceNum(deviceNum);
+        iotProjectVo.setDeviceOnlineNum(deviceOnlineNum);
+        return iotProjectVo;
+    }
+
+    public int changeStatus(ChangeStatus changeStatus) {
+        if (Arrays.asList(0, 1).contains(changeStatus.status)) {
+            return iotProjectMapper.changeStatus(changeStatus);
+        }
+        return 0;
+    }
 }

+ 20 - 5
iot-module/iot-module-manage/iot-module-manage-biz/src/main/resources/mapper/IotDeviceMapper.xml

@@ -25,10 +25,26 @@
     <result column="del_flag" jdbcType="TINYINT" property="delFlag" />
   </resultMap>
   <sql id="Base_Column_List">
-    <!--@mbg.generated-->
-    id, product_id, `name`, sn, guid, subtitle, lon, lat, address, online_time, `status`,
-    enable_flag, remark, create_by, create_time, update_by, update_time, delete_time,
-    del_flag
+      <!--@mbg.generated-->
+      id,
+      product_id,
+      `name`,
+      sn,
+      guid,
+      subtitle,
+      lon,
+      lat,
+      address,
+      online_time,
+      `status`,
+      enable_flag,
+      remark,
+      create_by,
+      create_time,
+      update_by,
+      update_time,
+      delete_time,
+      del_flag
   </sql>
 
   <select id="queryByProduct" resultType="java.lang.Long">
@@ -65,7 +81,6 @@
           and id.del_flag = 0
       </where>
   </select>
-
   <select id="detail" resultType="com.middle.platform.manage.biz.domain.vo.IotDeviceDetailVo">
       select id.id,
              id.name,

+ 107 - 18
iot-module/iot-module-manage/iot-module-manage-biz/src/main/resources/mapper/IotProjectDeviceMapper.xml

@@ -1,22 +1,111 @@
 <?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.middle.platform.manage.biz.mapper.IotProjectDeviceMapper">
-  <resultMap id="BaseResultMap" type="com.middle.platform.manage.biz.entity.IotProjectDevice">
-    <!--@mbg.generated-->
-    <!--@Table iot_project_device-->
-    <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="project_id" jdbcType="BIGINT" property="projectId" />
-    <result column="device_id" jdbcType="BIGINT" property="deviceId" />
-    <result column="create_by" jdbcType="BIGINT" property="createBy" />
-    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
-    <result column="update_by" jdbcType="BIGINT" property="updateBy" />
-    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
-    <result column="delete_time" jdbcType="TIMESTAMP" property="deleteTime" />
-    <result column="del_flag" jdbcType="TINYINT" property="delFlag" />
-  </resultMap>
-  <sql id="Base_Column_List">
-    <!--@mbg.generated-->
-    id, project_id, device_id, create_by, update_time, update_by, create_time, delete_time, 
-    del_flag
-  </sql>
+    <resultMap id="BaseResultMap" type="com.middle.platform.manage.biz.entity.IotProjectDevice">
+        <!--@mbg.generated-->
+        <!--@Table iot_project_device-->
+        <id column="id" jdbcType="BIGINT" property="id"/>
+        <result column="project_id" jdbcType="BIGINT" property="projectId"/>
+        <result column="device_id" jdbcType="BIGINT" property="deviceId"/>
+        <result column="create_by" jdbcType="BIGINT" property="createBy"/>
+        <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
+        <result column="update_by" jdbcType="BIGINT" property="updateBy"/>
+        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="delete_time" jdbcType="TIMESTAMP" property="deleteTime"/>
+        <result column="del_flag" jdbcType="TINYINT" property="delFlag"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+        <!--@mbg.generated-->
+        id,
+        project_id,
+        device_id,
+        create_by,
+        update_time,
+        update_by,
+        create_time,
+        delete_time,
+        del_flag
+    </sql>
+
+
+    <select id="queryDeviceNum" resultType="java.lang.Integer">
+        select count(ipd.id) as deviceNum
+        from iot_project_device ipd
+                 left join iot_device ide on ide.id = ipd.device_id
+        <where>
+            ipd.del_flag = 0
+              and ide.del_flag = 0
+            <!--              and ide.enable_flag = 1-->
+            <if test="projectId != null">
+                and ipd.project_id = #{projectId}
+            </if>
+            <if test="status != null">
+                and ide.status = #{status}
+            </if>
+        </where>
+    </select>
+
+
+    <select id="pageQuery" resultType="com.middle.platform.manage.biz.domain.vo.IotDeviceVo">
+        select ide.*
+        from iot_project_device ipd
+                 left join iot_device ide on ide.id = ipd.device_id
+        <where>
+            ipd.project_id = #{iotProjectDevicePara.projectId,jdbcType=BIGINT}
+              and ipd.del_flag = 0
+              and ide.del_flag = 0
+            <if test="iotProjectDevicePara.keywords != null and iotProjectDevicePara.keywords != ''">
+                and ide.name like concat('%', #{iotProjectDevicePara.keywords,jdbcType=VARCHAR}, '%')
+            </if>
+        </where>
+    </select>
+
+
+    <update id="updateById">
+        update iot_device
+        <set>
+            enable_flag = #{enableFlag,jdbcType=BIGINT}
+        </set>
+        <where>
+            id = #{deviceId,jdbcType=BIGINT}
+        </where>
+    </update>
+
+    <update id="updateProDeviceUntie">
+        update iot_project_device
+        <set>
+            del_flag = 1
+        </set>
+        <where>
+            id = #{id,jdbcType=BIGINT}
+        </where>
+    </update>
+
+    <delete id="deleteProDeviceUntie">
+        delete from iot_project_device
+        <where>
+            id = #{id,jdbcType=BIGINT}
+        </where>
+
+    </delete>
+
+    <select id="selectByProjectDevice" resultMap="BaseResultMap">
+        select *
+        from iot_project_device
+        <where>
+            project_id = #{projectId,jdbcType=BIGINT}
+              and device_id = #{deviceId,jdbcType=BIGINT}
+        </where>
+    </select>
+
+    <update id="updateByProjectDevice">
+        update iot_project_device
+        <set>
+            del_flag = 0
+        </set>
+        <where>
+            project_id = #{projectId,jdbcType=BIGINT}
+                and device_id = #{deviceId,jdbcType=BIGINT}
+        </where>
+    </update>
 </mapper>

+ 96 - 21
iot-module/iot-module-manage/iot-module-manage-biz/src/main/resources/mapper/IotProjectMapper.xml

@@ -1,25 +1,100 @@
 <?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.middle.platform.manage.biz.mapper.IotProjectMapper">
-  <resultMap id="BaseResultMap" type="com.middle.platform.manage.biz.entity.IotProject">
-    <!--@mbg.generated-->
-    <!--@Table iot_project-->
-    <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="company_id" jdbcType="BIGINT" property="companyId" />
-    <result column="code" jdbcType="VARCHAR" property="code" />
-    <result column="title" jdbcType="VARCHAR" property="title" />
-    <result column="remark" jdbcType="VARCHAR" property="remark" />
-    <result column="status" jdbcType="TINYINT" property="status" />
-    <result column="create_by" jdbcType="BIGINT" property="createBy" />
-    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
-    <result column="update_by" jdbcType="BIGINT" property="updateBy" />
-    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
-    <result column="delete_time" jdbcType="TIMESTAMP" property="deleteTime" />
-    <result column="del_flag" jdbcType="TINYINT" property="delFlag" />
-  </resultMap>
-  <sql id="Base_Column_List">
-    <!--@mbg.generated-->
-    id, company_id, code, title, remark, `status`, create_by, create_time, update_by, 
-    update_time, delete_time, del_flag
-  </sql>
+    <resultMap id="BaseResultMap" type="com.middle.platform.manage.biz.entity.IotProject">
+        <!--@mbg.generated-->
+        <!--@Table iot_project-->
+        <id column="id" jdbcType="BIGINT" property="id"/>
+        <result column="company_id" jdbcType="BIGINT" property="companyId"/>
+        <result column="code" jdbcType="VARCHAR" property="code"/>
+        <result column="title" jdbcType="VARCHAR" property="title"/>
+        <result column="remark" jdbcType="VARCHAR" property="remark"/>
+        <result column="status" jdbcType="TINYINT" property="status"/>
+        <result column="create_by" jdbcType="BIGINT" property="createBy"/>
+        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="update_by" jdbcType="BIGINT" property="updateBy"/>
+        <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
+        <result column="delete_time" jdbcType="TIMESTAMP" property="deleteTime"/>
+        <result column="del_flag" jdbcType="TINYINT" property="delFlag"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+        <!--@mbg.generated-->
+        id,
+        company_id,
+        code,
+        title,
+        remark,
+        `status`,
+        create_by,
+        create_time,
+        update_by,
+        update_time,
+        delete_time,
+        del_flag
+    </sql>
+
+    <select id="pageQuery" resultType="com.middle.platform.manage.biz.domain.vo.IotProjectVo">
+        select ipr.id,
+               ipr.company_id,
+               ipr.code,
+               ipr.title,
+               ipr.remark,
+               ipr.`status`,
+               ipr.create_by,
+               ipr.create_time,
+               ipr.update_by,
+               ipr.update_time,
+               ipr.delete_time,
+               ipr.del_flag,
+               sdi.label companyName
+        from iot_project ipr
+                 left join sys_dict_item sdi on ipr.company_id = sdi.value
+        <where>
+            ipr.del_flag = 0
+              and sdi.type = 'company_msg'
+            <if test="keywords != null and keywords != ''">
+                and ipr.title like concat('%', #{keywords,jdbcType=VARCHAR}, '%')
+            </if>
+        </where>
+    </select>
+
+
+    <delete id="delete">
+        update iot_project
+        set del_flag = 1
+        <where>
+            id = #{id,jdbcType=BIGINT}
+        </where>
+    </delete>
+
+    <select id="detail" resultType="com.middle.platform.manage.biz.domain.vo.IotProjectVo">
+        select ipr.id,
+               ipr.company_id,
+               ipr.code,
+               ipr.title,
+               ipr.remark,
+               ipr.`status`,
+               ipr.create_by,
+               ipr.create_time,
+               ipr.update_by,
+               ipr.update_time,
+               ipr.delete_time,
+               ipr.del_flag,
+               sdi.label companyName
+        from iot_project ipr
+                 left join sys_dict_item sdi on ipr.company_id = sdi.value
+        <where>
+            ipr.del_flag = 0
+              and sdi.type = 'company_msg'
+              and ipr.id = #{id,jdbcType=BIGINT}
+        </where>
+    </select>
+
+    <update id="changeStatus">
+        update iot_project
+        set status = #{changeStatus.status,jdbcType=INTEGER}
+        <where>
+            id = #{changeStatus.id,jdbcType=BIGINT}
+        </where>
+    </update>
 </mapper>

+ 45 - 8
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/controller/DictController.java

@@ -1,17 +1,20 @@
 package com.middle.platform.system.biz.controller;
 
 import com.middle.platform.common.modle.BasePara;
+import com.middle.platform.common.utils.PageRes;
 import com.middle.platform.common.utils.Result;
-import com.middle.platform.system.biz.entity.SysUser;
+import com.middle.platform.system.biz.pojo.req.SysDictItemPara;
 import com.middle.platform.system.biz.pojo.req.SysDictPara;
+import com.middle.platform.system.biz.pojo.res.SysDictItemVo;
 import com.middle.platform.system.biz.service.SysDictItemService;
 import com.middle.platform.system.biz.service.SysDictService;
+import jakarta.validation.constraints.NotNull;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-
 /**
+ * 字典分类(字典表) 和 字典详情(字典项)
+ *
  * @author xucaiqin
  * @date 2023-12-15 08:46:49
  */
@@ -40,21 +43,55 @@ public class DictController {
      * @param basePara 分页参数
      * @return
      */
-    @PostMapping("/list")
+    @GetMapping("/list")
     public Result<Object> list(BasePara basePara) {
         return Result.ok(sysDictService.list(basePara));
     }
 
+
+//    ------------------------- 以下是字典项 -------------------------------
+
+
     /**
      * 分页查询字典项
      *
      * @param dictId   字典id
      * @param basePara 分页参数
-     * @return
      */
     @GetMapping("/queryItem")
-    public Result<List<SysUser>> getItem(@RequestParam("dictId") Long dictId, BasePara basePara) {
-        sysDictItemService.list(dictId,basePara);
-        return Result.ok();
+    public Result<PageRes<SysDictItemVo>> getItem(@RequestParam("dictId") Long dictId, BasePara basePara) {
+        return Result.ok(sysDictItemService.list(dictId, basePara));
+    }
+
+
+    /**
+     * 新增字典项
+     *
+     * @author Aick Spt
+     * @date 2023-12-22 17:11
+     */
+    @PostMapping(name = "新增字典项", path = "/saveItem")
+    public Result<Object> saveItem(@RequestBody SysDictItemPara sysDictItemPara) {
+        return Result.ok(sysDictItemService.saveItemOne(sysDictItemPara), "保存成功");
     }
+
+
+    /**
+     * 删除字典项
+     */
+    @DeleteMapping("/remove")
+    public Result<Object> remove(@RequestParam("id") @NotNull(message = "id不能为空") Long id) {
+        return Result.ok(sysDictItemService.remove(id), "删除成功");
+    }
+
+
+    /**
+     * 修改字典项
+     */
+    @PostMapping("/update")
+    public Result<Object> update(@RequestBody SysDictItemPara sysDictItemPara) {
+        return Result.ok(sysDictItemService.update(sysDictItemPara), "保存成功");
+    }
+
+
 }

+ 6 - 0
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/mapper/SysDictItemMapper.java

@@ -17,4 +17,10 @@ public interface SysDictItemMapper extends BaseMapper<SysDictItem> {
     DictCache queryOne(@Param("dictType") String dictType, @Param("value") String value);
 
     List<DictCache> queryList(@Param("dictType") String dictType);
+
+    int delete(@Param("id") Long id);
+
+    SysDictItem getById(@Param("id") Long id);
+
+    int update(SysDictItem sysDictItem);
 }

+ 55 - 0
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/pojo/req/SysDictItemPara.java

@@ -0,0 +1,55 @@
+package com.middle.platform.system.biz.pojo.req;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 字典项
+ *
+ * @author Aick Spt
+ * @date 2023-12-22 16:59
+ */
+@Getter
+@Setter
+public class SysDictItemPara {
+
+    private Long id;
+
+    /**
+     * 字典ID
+     */
+    @NotNull(message = "字典ID不能为空")
+    private Long dictId;
+
+    /**
+     * 值
+     */
+    @NotBlank(message = "值不能为空")
+    private String value;
+
+    /**
+     * 标签
+     */
+    @NotBlank(message = "标签不能为空")
+    private String label;
+
+    /**
+     * 字典类型 冗余字段
+     */
+    @NotBlank(message = "字典类型不能为空")
+    private String type;
+
+    /**
+     * 描述
+     */
+    private String desc;
+
+    /**
+     * 排序(升序)
+     */
+    private Integer sort;
+
+
+}

+ 41 - 0
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/service/SysDictItemService.java

@@ -1,5 +1,6 @@
 package com.middle.platform.system.biz.service;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
@@ -10,6 +11,7 @@ import com.middle.platform.system.api.pojo.DictCache;
 import com.middle.platform.system.api.pojo.DictDto;
 import com.middle.platform.system.biz.entity.SysDictItem;
 import com.middle.platform.system.biz.mapper.SysDictItemMapper;
+import com.middle.platform.system.biz.pojo.req.SysDictItemPara;
 import com.middle.platform.system.biz.pojo.res.SysDictItemVo;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
@@ -84,4 +86,43 @@ public class SysDictItemService {
     public DictCache query(String dictType, String value) {
         return sysDictItemMapper.queryOne(dictType, value);
     }
+
+
+    /**
+     * 新增字典项
+     *
+     * @author Aick Spt
+     * @date 2023-12-22 17:10
+     */
+    public int saveItemOne(SysDictItemPara sysDictItemPara) {
+        sysDictItemPara.setId(null);
+        if (sysDictItemPara.getSort() == null) {
+            sysDictItemPara.setSort(1);
+        }
+        if (sysDictItemPara.getDesc() == null) {
+            sysDictItemPara.setDesc(sysDictItemPara.getLabel());
+        }
+        SysDictItem sysDictItem = new SysDictItem();
+        BeanUtil.copyProperties(sysDictItemPara, sysDictItem);
+        return sysDictItemMapper.insert(sysDictItem);
+    }
+
+
+    public int remove(Long id) {
+        return sysDictItemMapper.delete(id);
+    }
+
+
+    public int update(SysDictItemPara sysDictItemPara) {
+        Long id = sysDictItemPara.getId();
+        if (id == null) {
+            throw new RuntimeException("ID必填");
+        }
+        SysDictItem sysDictItem = sysDictItemMapper.getById(id);
+        if (Objects.isNull(sysDictItem)) {
+            throw new RuntimeException("数据不存在");
+        }
+        BeanUtil.copyProperties(sysDictItemPara, sysDictItem);
+        return sysDictItemMapper.update(sysDictItem);
+    }
 }

+ 39 - 0
iot-module/iot-module-system/iot-module-system-biz/src/main/resources/mapper/SysDictItemMapper.xml

@@ -59,4 +59,43 @@
             and sdi.del_flag = 0
         </where>
     </select>
+
+    <!--  根据ID删除  -->
+    <update id="delete">
+        update sys_dict_item set del_flag = 1 where id = #{id,jdbcType=BIGINT}
+    </update>
+
+    <select id="getById" resultMap="BaseResultMap">
+        select *
+        from sys_dict_item sdi
+        where del_flag = 0
+          and id = #{id,jdbcType=BIGINT}
+    </select>
+
+    <update id="update">
+        update sys_dict_item
+        <set>
+            <if test="dictId != null">
+                `dict_id` = #{dictId,jdbcType=BIGINT},
+            </if>
+            <if test="value != null">
+                `value` = #{value,jdbcType=VARCHAR},
+            </if>
+            <if test="label != null">
+                `label` = #{label,jdbcType=VARCHAR},
+            </if>
+            <if test="type != null">
+                `type` = #{type,jdbcType=VARCHAR},
+            </if>
+            <if test="desc != null">
+                `desc` = #{desc,jdbcType=VARCHAR},
+            </if>
+            <if test="sort != null">
+                `sort` = #{sort,jdbcType=INTEGER}
+            </if>
+        </set>
+        <where>
+            id = #{id,jdbcType=BIGINT}
+        </where>
+    </update>
 </mapper>