Prechádzať zdrojové kódy

feat:新增根据用户获取监控对象列表接口
feat:获取设备对象分页接口返回值新增设备区域相关信息
feat:新增获取监控设备列表接口
feat:新增根据targetId获取region列表接口
feat:删除设备对象接口新增对象是否包含未删除区域校验

黄渊昊 6 mesiacov pred
rodič
commit
99bdc5cdd5
10 zmenil súbory, kde vykonal 203 pridanie a 1 odobranie
  1. 10 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/controller/MonitorDeviceController.java
  2. 10 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/controller/MonitorTargetController.java
  3. 35 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/entity/MonitorTarget.java
  4. 5 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/service/MonitorTargetService.java
  5. 35 1
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/service/impl/MonitorTargetServiceImpl.java
  6. 31 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/entity/MonitorTargetRegion.java
  7. 32 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/param/MonitorTargetRegionAddParam.java
  8. 32 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/param/MonitorTargetRegionEditParam.java
  9. 5 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/service/MonitorTargetRegionService.java
  10. 8 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/service/impl/MonitorTargetRegionServiceImpl.java

+ 10 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/controller/MonitorDeviceController.java

@@ -120,4 +120,14 @@ public class MonitorDeviceController {
     public CommonResult<MonitorDevice> detail(@Valid MonitorDeviceIdParam monitorDeviceIdParam) {
         return CommonResult.data(monitorDeviceService.detail(monitorDeviceIdParam));
     }
+
+    /**
+     * 获取监控设备列表
+     */
+    @Operation(summary = "获取监控设备列表")
+    @SaCheckPermission("/coldchain/monitordevice/list")
+    @GetMapping("/coldchain/monitordevice/list")
+    public CommonResult<List<MonitorDevice>> list() {
+        return CommonResult.data(monitorDeviceService.list());
+    }
 }

+ 10 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/controller/MonitorTargetController.java

@@ -120,4 +120,14 @@ public class MonitorTargetController {
     public CommonResult<MonitorTarget> detail(@Valid MonitorTargetIdParam monitorTargetIdParam) {
         return CommonResult.data(monitorTargetService.detail(monitorTargetIdParam));
     }
+
+    /**
+     * 根据用户获取监控对象列表
+     */
+    @Operation(summary = "根据用户获取监控对象列表")
+    @SaCheckPermission("/coldchain/monitortarget/getListByUser")
+    @GetMapping("/coldchain/monitortarget/getListByUser")
+    public CommonResult<List<MonitorTarget>> getListByUser(String userId) {
+        return CommonResult.data(monitorTargetService.getListByUser(userId));
+    }
 }

+ 35 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/entity/MonitorTarget.java

@@ -12,11 +12,16 @@
  */
 package vip.xiaonuo.coldchain.modular.monitortarget.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Getter;
 import lombok.Setter;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.entity.MonitorTargetRegion;
+
+import java.util.Date;
+import java.util.List;
 
 /**
  * 监控对象管理实体
@@ -83,4 +88,34 @@ public class MonitorTarget {
      */
     @Schema(description = "报警下限")
     private String limitDown;
+
+    /**
+     * 记录创建时间
+     */
+    @Schema(description = "记录创建时间")
+    private Date createdTime;
+
+    /**
+     * 记录创建用户
+     */
+    @Schema(description = "记录创建用户")
+    private String createdBy;
+
+    /**
+     * 记录修改时间
+     */
+    @Schema(description = "记录修改时间")
+    private Date updatedTime;
+
+    /**
+     * 记录修改用户
+     */
+    @Schema(description = "记录修改用户")
+    private String updatedBy;
+
+    /**
+     * 设备区域列表
+     */
+    @TableField(exist = false)
+    private List<MonitorTargetRegion> monitorTargetRegionList;
 }

+ 5 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/service/MonitorTargetService.java

@@ -77,4 +77,9 @@ public interface MonitorTargetService extends IService<MonitorTarget> {
      * @date 2024/11/13 16:56
      **/
     MonitorTarget queryEntity(String id);
+
+    /**
+     * 根据用户获取监控对象列表
+     */
+    List<MonitorTarget> getListByUser(String userId);
 }

+ 35 - 1
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/service/impl/MonitorTargetServiceImpl.java

@@ -16,11 +16,15 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollStreamUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDevice;
+import vip.xiaonuo.coldchain.modular.monitordevice.service.MonitorDeviceService;
 import vip.xiaonuo.coldchain.modular.monitortarget.entity.MonitorTarget;
 import vip.xiaonuo.coldchain.modular.monitortarget.mapper.MonitorTargetMapper;
 import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetAddParam;
@@ -28,6 +32,8 @@ import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetEditParam;
 import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetIdParam;
 import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetPageParam;
 import vip.xiaonuo.coldchain.modular.monitortarget.service.MonitorTargetService;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.entity.MonitorTargetRegion;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.service.MonitorTargetRegionService;
 import vip.xiaonuo.common.enums.CommonSortOrderEnum;
 import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.page.CommonPageRequest;
@@ -43,6 +49,11 @@ import java.util.List;
 @Service
 public class MonitorTargetServiceImpl extends ServiceImpl<MonitorTargetMapper, MonitorTarget> implements MonitorTargetService {
 
+    @Resource
+    private MonitorTargetRegionService monitorTargetRegionService;
+    @Resource
+    private MonitorDeviceService monitorDeviceService;
+
     @Override
     public Page<MonitorTarget> page(MonitorTargetPageParam monitorTargetPageParam) {
         QueryWrapper<MonitorTarget> queryWrapper = new QueryWrapper<MonitorTarget>().checkSqlInjection();
@@ -56,7 +67,12 @@ public class MonitorTargetServiceImpl extends ServiceImpl<MonitorTargetMapper, M
         } else {
             queryWrapper.lambda().orderByAsc(MonitorTarget::getId);
         }
-        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+        Page<MonitorTarget> page = this.page(CommonPageRequest.defaultPage(), queryWrapper);
+        //获取设备区域列表并赋值返回
+        page.getRecords().forEach(monitorTarget -> {
+            monitorTarget.setMonitorTargetRegionList(monitorTargetRegionService.getRegionListByTargetId(monitorTarget.getId()));
+        });
+        return page;
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -77,6 +93,12 @@ public class MonitorTargetServiceImpl extends ServiceImpl<MonitorTargetMapper, M
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void delete(List<MonitorTargetIdParam> monitorTargetIdParamList) {
+        for (MonitorTargetIdParam monitorTargetIdParam : monitorTargetIdParamList) {
+            List<MonitorTargetRegion> regionList = monitorTargetRegionService.getRegionListByTargetId(monitorTargetIdParam.getId());
+            if (!regionList.isEmpty()) {
+                throw new CommonException("监控对象下仍存在分区,无法删除!");
+            }
+        }
         // 执行删除
         this.removeByIds(CollStreamUtil.toList(monitorTargetIdParamList, MonitorTargetIdParam::getId));
     }
@@ -94,4 +116,16 @@ public class MonitorTargetServiceImpl extends ServiceImpl<MonitorTargetMapper, M
         }
         return monitorTarget;
     }
+
+    @Override
+    public List<MonitorTarget> getListByUser(String userId) {
+        LambdaQueryWrapper<MonitorTarget> queryWrapper = new LambdaQueryWrapper<MonitorTarget>();
+        queryWrapper.eq(MonitorTarget::getCreatedBy,userId).orderByDesc(MonitorTarget::getCreatedTime);
+        List<MonitorTarget> monitorTargetList = list(queryWrapper);
+        monitorTargetList.forEach(monitorTarget -> {
+            monitorTarget.setMonitorTargetRegionList(monitorTargetRegionService.getRegionListByTargetId(monitorTarget.getId()));
+        });
+        return monitorTargetList;
+    }
+
 }

+ 31 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/entity/MonitorTargetRegion.java

@@ -15,6 +15,7 @@ package vip.xiaonuo.coldchain.modular.monitortargetregion.entity;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -97,4 +98,34 @@ public class MonitorTargetRegion {
      */
     @Schema(description = "记录修改用户")
     private String updatedBy;
+
+    /**
+     * 监控设备型号
+     */
+    @Schema(description = "监控设备型号")
+    private String modelName;
+
+    /**
+     * 监控设备编号
+     */
+    @Schema(description = "监控设备编号")
+    private String monitorDeviceId;
+
+    /**
+     * 冷链编号
+     */
+    @Schema(description = "冷链编号")
+    private String code;
+
+    /**
+     * 报警上限
+     */
+    @Schema(description = "报警上限")
+    private String limitUp;
+
+    /**
+     * 报警下限
+     */
+    @Schema(description = "报警下限")
+    private String limitDown;
 }

+ 32 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/param/MonitorTargetRegionAddParam.java

@@ -13,6 +13,7 @@
 package vip.xiaonuo.coldchain.modular.monitortargetregion.param;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -62,4 +63,35 @@ public class MonitorTargetRegionAddParam {
     @Schema(description = "传感器路数")
     private Integer sensorRoute;
 
+    /**
+     * 监控设备型号
+     */
+    @Schema(description = "监控设备型号")
+    private String modelName;
+
+    /**
+     * 监控设备编号
+     */
+    @Schema(description = "监控设备编号")
+    private String monitorDeviceId;
+
+    /**
+     * 冷链编号
+     */
+    @Schema(description = "冷链编号")
+    private String code;
+
+    /**
+     * 报警上限
+     */
+    @Schema(description = "报警上限")
+    @NotNull(message = "报警上限不能为空")
+    private String limitUp;
+
+    /**
+     * 报警下限
+     */
+    @Schema(description = "报警下限")
+    @NotNull(message = "报警下限不能为空")
+    private String limitDown;
 }

+ 32 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/param/MonitorTargetRegionEditParam.java

@@ -14,6 +14,7 @@ package vip.xiaonuo.coldchain.modular.monitortargetregion.param;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -70,4 +71,35 @@ public class MonitorTargetRegionEditParam {
     @Schema(description = "传感器路数")
     private Integer sensorRoute;
 
+    /**
+     * 监控设备型号
+     */
+    @Schema(description = "监控设备型号")
+    private String modelName;
+
+    /**
+     * 监控设备编号
+     */
+    @Schema(description = "监控设备编号")
+    private String monitorDeviceId;
+
+    /**
+     * 冷链编号
+     */
+    @Schema(description = "冷链编号")
+    private String code;
+
+    /**
+     * 报警上限
+     */
+    @Schema(description = "报警上限")
+    @NotNull(message = "报警上限不能为空")
+    private String limitUp;
+
+    /**
+     * 报警下限
+     */
+    @Schema(description = "报警下限")
+    @NotNull(message = "报警下限不能为空")
+    private String limitDown;
 }

+ 5 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/service/MonitorTargetRegionService.java

@@ -77,4 +77,9 @@ public interface MonitorTargetRegionService extends IService<MonitorTargetRegion
      * @date 2024/11/13 16:57
      **/
     MonitorTargetRegion queryEntity(String id);
+
+    /**
+     * 根据targetId获取region列表
+     */
+    List<MonitorTargetRegion> getRegionListByTargetId(String targetId);
 }

+ 8 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/service/impl/MonitorTargetRegionServiceImpl.java

@@ -16,6 +16,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollStreamUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -97,4 +98,11 @@ public class MonitorTargetRegionServiceImpl extends ServiceImpl<MonitorTargetReg
         }
         return monitorTargetRegion;
     }
+
+    @Override
+    public List<MonitorTargetRegion> getRegionListByTargetId(String targetId) {
+        LambdaQueryWrapper<MonitorTargetRegion> queryWrapper = new LambdaQueryWrapper<MonitorTargetRegion>();
+        queryWrapper.eq(MonitorTargetRegion::getMonitorTargetId,targetId);
+        return list(queryWrapper);
+    }
 }