From aecee4de499d8a82d326f505b98bf0de035e13ce Mon Sep 17 00:00:00 2001
From: chendaofei <857448963@qq.com>
Date: Tue, 10 Feb 2026 14:36:12 +0800
Subject: [PATCH] =?UTF-8?q?1.=E7=94=A8=E6=88=B7=E5=AF=B9=E8=B1=A1=E7=AE=A1?=
=?UTF-8?q?=E7=90=86=E4=B8=9A=E5=8A=A1=E8=BF=81=E7=A7=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../pq/pojo/param/PqSensitiveUserParam.java | 76 ++++++++++++
.../device/pq/pojo/vo/PqSensitiveUserVo.java | 64 ++++++++++
.../controller/PqSensitiveUserController.java | 113 ++++++++++++++++++
.../service/IPqSensitiveUserService.java | 26 ++++
.../impl/PqSensitiveUserServiceImpl.java | 107 +++++++++++++++++
5 files changed, 386 insertions(+)
create mode 100644 pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/PqSensitiveUserParam.java
create mode 100644 pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/PqSensitiveUserVo.java
create mode 100644 pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/PqSensitiveUserController.java
create mode 100644 pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/pqUser/service/IPqSensitiveUserService.java
create mode 100644 pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/pqUser/service/impl/PqSensitiveUserServiceImpl.java
diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/PqSensitiveUserParam.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/PqSensitiveUserParam.java
new file mode 100644
index 000000000..7ee6dfe04
--- /dev/null
+++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/PqSensitiveUserParam.java
@@ -0,0 +1,76 @@
+package com.njcn.device.pq.pojo.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Author: cdf
+ * @CreateTime: 2025-12-02
+ * @Description:
+ */
+@Data
+public class PqSensitiveUserParam {
+
+
+
+
+ /**
+ * 敏感用户名称
+ */
+ @NotBlank(message = "用户名称不可为空")
+ @ApiModelProperty(name = "name",value = "用户名称不可为空")
+ private String name;
+
+ /**
+ * 敏感负荷类型
+ */
+ @NotBlank(message = "敏感负荷类型不可为空")
+ @ApiModelProperty(name = "loadType",value = "敏感负荷类型")
+ private String loadType;
+
+ /**
+ * 用户协议容量
+ */
+ @Range(min = 0,max = 10000000 )
+ @ApiModelProperty(name = "userAgreementCapacity",value = "用户协议容量")
+ private Double userAgreementCapacity;
+
+ /**
+ * 装机容量
+ */
+ @Range(min = 0,max = 10000000 )
+ @ApiModelProperty(name = "installedCapacity",value = "装机容量")
+ private Double installedCapacity;
+
+ /**
+ * 所属厂站名称
+ */
+ @NotBlank(message = "所属厂站名称不可为空")
+ @ApiModelProperty(name = "substationName",value = "所属厂站名称")
+ private String substationName;
+
+ /**
+ * 排序
+ */
+ @NotNull(message = "排序不可为空")
+ @ApiModelProperty(name = "sort",value = "排序")
+ private Integer sort;
+
+
+ @Data
+ @EqualsAndHashCode(callSuper = true)
+ public static class UpdatePqSensitiveUserParam extends PqSensitiveUserParam{
+
+ /**
+ * id
+ */
+ @NotBlank(message = "id不可为空")
+ @ApiModelProperty(name = "id",value = "id")
+ private String id;
+ }
+}
diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/PqSensitiveUserVo.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/PqSensitiveUserVo.java
new file mode 100644
index 000000000..7e58e4174
--- /dev/null
+++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/PqSensitiveUserVo.java
@@ -0,0 +1,64 @@
+package com.njcn.device.pq.pojo.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author xy
+ * @since 2025-11-17
+ */
+@Data
+public class PqSensitiveUserVo implements Serializable{
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * id
+ */
+ private String id;
+
+ /**
+ * 敏感用户名称
+ */
+ private String name;
+
+ /**
+ * 敏感负荷类型
+ */
+ private String loadType;
+
+ /**
+ * 排序
+ */
+ private Integer sort;
+
+ /**
+ * 是否监测
+ */
+ private String isMonitor;
+
+ /**
+ * 是否治理
+ */
+ private String isGovern;
+
+ /**
+ * 用户协议容量
+ */
+ private Double userAgreementCapacity;
+
+ /**
+ * 装机容量
+ */
+ private Double installedCapacity;
+
+ /**
+ * 所属厂站名称
+ */
+ private String substationName;
+}
diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/PqSensitiveUserController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/PqSensitiveUserController.java
new file mode 100644
index 000000000..e558ea599
--- /dev/null
+++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/PqSensitiveUserController.java
@@ -0,0 +1,113 @@
+package com.njcn.device.pq.controller;
+
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.njcn.common.pojo.annotation.OperateInfo;
+import com.njcn.common.pojo.constant.OperateType;
+import com.njcn.common.pojo.enums.common.LogEnum;
+import com.njcn.common.pojo.enums.response.CommonResponseEnum;
+import com.njcn.common.pojo.response.HttpResult;
+import com.njcn.common.utils.HttpResultUtil;
+
+
+import com.njcn.device.biz.pojo.po.PqSensitiveUser;
+import com.njcn.device.pq.pojo.param.PqSensitiveUserParam;
+import com.njcn.device.pq.pojo.vo.PqSensitiveUserVo;
+import com.njcn.device.pqUser.service.IPqSensitiveUserService;
+import com.njcn.web.controller.BaseController;
+import com.njcn.web.pojo.param.BaseParam;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author xy
+ * @since 2025-11-17
+ */
+@Slf4j
+@RestController
+@RequestMapping("/pqSensitiveUser")
+@Api(tags = "敏感负荷用户管理")
+@AllArgsConstructor
+public class PqSensitiveUserController extends BaseController {
+
+ private final IPqSensitiveUserService pqSensitiveUserService;
+
+ @OperateInfo(info = LogEnum.BUSINESS_COMMON)
+ @PostMapping("/getList")
+ @ApiOperation("获取敏感负荷用户列表")
+ @ApiImplicitParam(name = "param", value = "查询参数", required = true)
+ public HttpResult> getList(@RequestBody BaseParam param) {
+ String methodDescribe = getMethodDescribe("getList");
+ Page page = pqSensitiveUserService.getList(param);
+ return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe);
+ }
+
+ @OperateInfo(info = LogEnum.BUSINESS_COMMON)
+ @PostMapping("/getListByIds")
+ @ApiOperation("根据id集合获取敏感负荷用户列表")
+ @ApiImplicitParam(name = "ids", value = "id集合")
+ public HttpResult> getListByIds(@RequestParam(name = "ids", required = false) List ids) {
+ String methodDescribe = getMethodDescribe("getListByIds");
+ List list;
+ list = pqSensitiveUserService.list(
+ new LambdaQueryWrapper().in(PqSensitiveUser::getId, ids)
+ );
+ return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
+ }
+
+ /**
+ * 新增用户对象
+ */
+ @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
+ @PostMapping("/save")
+ @ApiOperation("新增用户对象")
+ public HttpResult save(@RequestBody @Validated PqSensitiveUserParam pqSensitiveUserParam) {
+ String methodDescribe = getMethodDescribe("save");
+ pqSensitiveUserService.save(pqSensitiveUserParam);
+ return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
+ }
+
+ /**
+ * 修改用户对象
+ */
+ @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.UPDATE)
+ @PostMapping("/update")
+ @ApiOperation("修改用户对象")
+ public HttpResult update(@RequestBody @Validated PqSensitiveUserParam.UpdatePqSensitiveUserParam pqSensitiveUserParam) {
+ String methodDescribe = getMethodDescribe("update");
+ pqSensitiveUserService.update(pqSensitiveUserParam);
+ return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
+ }
+
+
+ /**
+ * 删除用户对象
+ */
+ @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.DELETE)
+ @PostMapping("/delete")
+ @ApiOperation("删除用户对象")
+ @ApiImplicitParam(name = "ids", value = "id集合")
+ public HttpResult delete(@RequestBody List ids) {
+ String methodDescribe = getMethodDescribe("delete");
+ pqSensitiveUserService.removeByIds(ids);
+ return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
+ }
+
+}
+
diff --git a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/pqUser/service/IPqSensitiveUserService.java b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/pqUser/service/IPqSensitiveUserService.java
new file mode 100644
index 000000000..f581bef7e
--- /dev/null
+++ b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/pqUser/service/IPqSensitiveUserService.java
@@ -0,0 +1,26 @@
+package com.njcn.device.pqUser.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.njcn.device.biz.pojo.po.PqSensitiveUser;
+import com.njcn.device.pq.pojo.param.PqSensitiveUserParam;
+import com.njcn.device.pq.pojo.vo.PqSensitiveUserVo;
+import com.njcn.web.pojo.param.BaseParam;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author xy
+ * @since 2025-11-17
+ */
+public interface IPqSensitiveUserService extends IService {
+
+ Page getList(BaseParam param);
+
+ boolean save(PqSensitiveUserParam pqSensitiveUserParam);
+
+ boolean update(PqSensitiveUserParam.UpdatePqSensitiveUserParam pqSensitiveUserParam);
+
+}
diff --git a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/pqUser/service/impl/PqSensitiveUserServiceImpl.java b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/pqUser/service/impl/PqSensitiveUserServiceImpl.java
new file mode 100644
index 000000000..32125a398
--- /dev/null
+++ b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/pqUser/service/impl/PqSensitiveUserServiceImpl.java
@@ -0,0 +1,107 @@
+package com.njcn.device.pqUser.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.njcn.common.pojo.enums.response.CommonResponseEnum;
+import com.njcn.common.pojo.exception.BusinessException;
+
+import com.njcn.device.biz.mapper.PqSensitiveUserMapper;
+import com.njcn.device.biz.pojo.po.PqSensitiveUser;
+import com.njcn.device.pq.pojo.param.PqSensitiveUserParam;
+import com.njcn.device.pq.pojo.vo.PqSensitiveUserVo;
+import com.njcn.device.pqUser.service.IPqSensitiveUserService;
+import com.njcn.system.api.DicDataFeignClient;
+import com.njcn.system.pojo.po.DictData;
+import com.njcn.web.pojo.param.BaseParam;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author xy
+ * @since 2025-11-17
+ */
+@DS("sjzx")
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class PqSensitiveUserServiceImpl extends ServiceImpl implements IPqSensitiveUserService {
+
+
+ private final DicDataFeignClient dicDataFeignClient;
+
+ @Override
+ public Page getList(BaseParam param) {
+ Page result = new Page<>(param.getPageNum(),param.getPageSize());
+ LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.orderByDesc(PqSensitiveUser::getSort);
+ if (StrUtil.isNotBlank(param.getSearchValue())) {
+ lambdaQueryWrapper.like(PqSensitiveUser::getName, param.getSearchValue());
+ }
+ Page page = this.page(new Page<>(param.getPageNum(),param.getPageSize()),lambdaQueryWrapper);
+ if(CollUtil.isNotEmpty(page.getRecords())){
+ List dataGroupEventVOList = new ArrayList<>();
+ page.getRecords().forEach(item->{
+ PqSensitiveUserVo vo = new PqSensitiveUserVo();
+ BeanUtil.copyProperties(item,vo);
+ dataGroupEventVOList.add(vo);
+ });
+ result.setRecords(dataGroupEventVOList);
+ result.setTotal(page.getTotal());
+ result.setSize(page.getSize());
+ result.setCurrent(page.getCurrent());
+ result.setPages(page.getPages());
+ }
+ return result;
+ }
+
+ @Override
+ public boolean save(PqSensitiveUserParam pqSensitiveUserParam) {
+ checkParam(pqSensitiveUserParam,false);
+
+ PqSensitiveUser pqSensitiveUser = new PqSensitiveUser();
+ BeanUtil.copyProperties(pqSensitiveUserParam,pqSensitiveUser);
+ return this.save(pqSensitiveUser);
+ }
+
+ @Override
+ public boolean update(PqSensitiveUserParam.UpdatePqSensitiveUserParam pqSensitiveUserParam) {
+ checkParam(pqSensitiveUserParam,true);
+ PqSensitiveUser pqSensitiveUser = new PqSensitiveUser();
+ BeanUtil.copyProperties(pqSensitiveUserParam,pqSensitiveUser);
+ return this.updateById(pqSensitiveUser);
+ }
+
+
+ private void checkParam(PqSensitiveUserParam param,boolean update){
+ DictData data = dicDataFeignClient.getDicDataById(param.getLoadType()).getData();
+ if(Objects.isNull(data)){
+ throw new BusinessException(CommonResponseEnum.FAIL,"字典负荷类型缺失!");
+ }
+
+ LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(PqSensitiveUser::getName,param.getName());
+ if(update){
+ if(param instanceof PqSensitiveUserParam.UpdatePqSensitiveUserParam){
+ lambdaQueryWrapper.ne(PqSensitiveUser::getId,((PqSensitiveUserParam.UpdatePqSensitiveUserParam) param).getId());
+ }
+ }
+ int count = this.count(lambdaQueryWrapper);
+ if(count>0){
+ throw new BusinessException(CommonResponseEnum.FAIL,"用户名称重复!");
+ }
+ }
+
+}