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,"用户名称重复!"); + } + } + +}