diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/PatternRegex.java b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/PatternRegex.java index db76710e6..087ad961a 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/PatternRegex.java +++ b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/PatternRegex.java @@ -73,9 +73,9 @@ public interface PatternRegex { String DEPT_NAME_REGEX = "^[\\u4e00-\\u9fa5]{1,20}$"; /** - * 字典名称包括中文、数字、字母、括号以及点号 + * 字典名称包括中文、数字、字母、罗马数字、括号以及点号 */ - String DIC_REGEX = "^[\\w\\u4E00-\\u9FA5()()_/、\\- ]+\\.?[\\w\\u4E00-\\u9FA5()()/]{0,125}$"; + String DIC_REGEX = "^[\\w\\u4E00-\\u9FA5()()_/、\\- ]+\\.?[\\w\\u4E00-\\u9FA5()()I II III IV V /]{0,125}$"; /** * 密码有效期(月)1-3月 diff --git a/pqs-device/device-api/src/main/java/com/njcn/device/enums/LineBaseEnum.java b/pqs-device/device-api/src/main/java/com/njcn/device/enums/LineBaseEnum.java index ec0257e20..737842b7c 100644 --- a/pqs-device/device-api/src/main/java/com/njcn/device/enums/LineBaseEnum.java +++ b/pqs-device/device-api/src/main/java/com/njcn/device/enums/LineBaseEnum.java @@ -24,7 +24,20 @@ public enum LineBaseEnum { DEVICE_LEVEL(4, "设备"), SUB_V_LEVEL(5, "母线"), LINE_LEVEL(6, "监测点"), - INVALID_LEVEL(-1, "非法拓扑等级"); + INVALID_LEVEL(-1, "非法拓扑等级"), + + + + /** + * 分布式光伏树层级 + */ + PV_UNIT_LEVEL(0,"单位"), + PV_SUB_LEVEL(1,"变电站"), + PV_SUB_AREA_LEVEL(2,"台区") + + + + ; private final Integer code; private final String message; diff --git a/pqs-device/device-api/src/main/java/com/njcn/device/enums/PvDeviceResponseEnum.java b/pqs-device/device-api/src/main/java/com/njcn/device/enums/PvDeviceResponseEnum.java index ff2885809..ac38c9b79 100644 --- a/pqs-device/device-api/src/main/java/com/njcn/device/enums/PvDeviceResponseEnum.java +++ b/pqs-device/device-api/src/main/java/com/njcn/device/enums/PvDeviceResponseEnum.java @@ -20,16 +20,20 @@ public enum PvDeviceResponseEnum { VOLTAGE_REPEAT("A0352","母线名称重复"), SUB_AREA_REPEAT("A0353","台区名称重复"), SUB_NUM_REPEAT("A0354","母线号重复"), - + DVE_CODE_REPEAT("A0355","终端编号重复"), + USER_CODE_REPEAT("A0356","用户编号重复"), + SUB_AREA_EMPTY("A0357","台区不能为空"), TEN_VOLTAGE_NULL("A0360","未查询到指定10kV线路"), UNIT_NULL("A0361","未查询到指定单位"), SUB_AREA_NULL("A0362","未查询到指定台区"), - DEV_NULL("A0363","未查询到指定终端") - - - + DEV_NULL("A0363","未查询到指定终端"), + SUBSTATION_NULL("A0364","未查询到指定变电站"), + VOLTAGE_NULL("A0365","未查询到指定母线"), + DEV_NUM_NULL("A0366","当前装置监测点序号已存在"), + ONE_SUB_VOLTAGE_EMPTY("A0367","I类监测点变电站母线不可为空"), + TWO_SUB_VOLTAGE_EMPTY_MUST("A0368","II类监测点变电站母线必须为空"), ; diff --git a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/pv/PvLineDetailParam.java b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/pv/PvLineDetailParam.java index c744b8ea1..c62dd5e25 100644 --- a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/pv/PvLineDetailParam.java +++ b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/pv/PvLineDetailParam.java @@ -4,11 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.njcn.common.pojo.constant.PatternRegex; import com.njcn.db.bo.BaseEntity; import com.njcn.web.constant.ValidMessage; +import com.njcn.web.pojo.annotation.DateTimeStrValid; 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; import javax.validation.constraints.Pattern; import java.io.Serializable; import java.time.LocalDateTime; @@ -27,200 +30,245 @@ public class PvLineDetailParam implements Serializable { private static final long serialVersionUID = 1L; + /** + * 监测点名称 + */ + @ApiModelProperty(name = "name",value = "监测点名称",required = true) + @NotBlank(message = "监测点名称不能为空") + private String name; + + /** + * 监测点编号 + */ + @ApiModelProperty(name = "code",value = "监测点编号",required = true) + @NotBlank(message = "监测点编号不能为空") + private String code; /** * 所属终端 */ - @ApiModelProperty(name = "",value = "",required = true) + @ApiModelProperty(name = "devId",value = "所属终端",required = true) + @NotBlank(message = "所属终端id不能为空") + @Pattern(regexp = PatternRegex.SYSTEM_ID, message = "所属终端id违规") private String devId; /** * 监测点类型(I类监测点、II类监测点、III类监测点),字典表 */ - @ApiModelProperty(name = "",value = "",required = true) + @ApiModelProperty(name = "type",value = "监测点类型(I类监测点、II类监测点、III类监测点),字典表",required = true) + @NotBlank(message = "监测点类型不能为空") + @Pattern(regexp = PatternRegex.SYSTEM_ID, message = "监测点类型违规") private String type; /** * 所属变电站(I类监测点) */ - @ApiModelProperty(name = "",value = "",required = true) + @ApiModelProperty(name = "substationId",value = "所属变电站(I类监测点)") private String substationId; /** * 所属母线名称(I类监测点) */ - @ApiModelProperty(name = "",value = "") + @ApiModelProperty(name = "voltageId",value = "所属母线名称(I类监测点)") private String voltageId; /** * 所属台区ID(II类监测点) */ - @ApiModelProperty(name = "",value = "") + @ApiModelProperty(name = "subAreaId",value = "所属台区ID(II类监测点)") private String subAreaId; /** - * 所属分布式光伏台账(III类监测点) + * 用户编号 */ - @ApiModelProperty(name = "",value = "") - private String distributedId; + @ApiModelProperty(name = "userCode",value = "用户编号") + @NotBlank(message = "用户编号不能为空") + private String userCode; + /** - * 所属低压用户台账(III类监测点) + * 电压等级 */ - @ApiModelProperty(name = "",value = "") - private String lvUserId; + @ApiModelProperty(name = "scale",value = "电压等级") + private String scale; /** * 线路号(在同一台设备中的监测点号) */ - @ApiModelProperty(name = "",value = "") + @ApiModelProperty(name = "num",value = "线路号(在同一台设备中的监测点号)") + @NotNull(message = "线路号不可为空") + @Range(min = 1,max = 10,message = "线路号违规") private Integer num; /** * PT一次变比 */ - @ApiModelProperty(name = "",value = "") + @NotNull(message = "PT一次变比不可为空") + @ApiModelProperty(name = "pt1",value = "PT一次变比") private Float pt1; /** * PT二次变比 */ - @ApiModelProperty(name = "",value = "") + @NotNull(message = "PT二次变比不可为空") + @ApiModelProperty(name = "pt2",value = "PT二次变比") private Float pt2; /** * CT一次变比 */ - @ApiModelProperty(name = "",value = "") + @NotNull(message = "CT一次变比不可为空") + @ApiModelProperty(name = "ct1",value = "CT一次变比") private Float ct1; /** * CT二次变比 */ - @ApiModelProperty(name = "",value = "") + @NotNull(message = "CT二次变比不可为空") + @ApiModelProperty(name = "ct2",value = "CT二次变比") private Float ct2; /** * 设备容量 */ - @ApiModelProperty(name = "",value = "") + @NotNull(message = "设备容量不可为空") + @ApiModelProperty(name = "devCapacity",value = "设备容量") private Float devCapacity; /** * 短路容量 */ - @ApiModelProperty(name = "",value = "") + @NotNull(message = "短路容量不可为空") + @ApiModelProperty(name = "shortCapacity",value = "短路容量") private Float shortCapacity; /** * 基准容量 */ - @ApiModelProperty(name = "",value = "") + @NotNull(message = "基准容量不可为空") + @ApiModelProperty(name = "standardCapacity",value = "基准容量") private Float standardCapacity; /** * 协议容量 */ - @ApiModelProperty(name = "",value = "") + @NotNull(message = "协议容量不可为空") + @ApiModelProperty(name = "dealCapacity",value = "协议容量") private Float dealCapacity; /** * 接线类型(0:星型接法;1:三角型接法;2:开口三角型接法) */ - @ApiModelProperty(name = "",value = "") + @NotNull(message = "接线类型不可为空") + @ApiModelProperty(name = "ptType",value = "接线类型(0:星型接法;1:三角型接法;2:开口三角型接法)") + @Range(min = 0,max = 2,message = "接线类型违规") private Integer ptType; /** * 测量间隔(1-10分钟) */ - @ApiModelProperty(name = "",value = "") + @NotNull(message = "测量间隔不可为空") + @ApiModelProperty(name = "timeInterval",value = "测量间隔(1-10分钟)") + @Range(min = 1,max = 10,message = "测量间隔(1-10分钟)") private Integer timeInterval; /** * 干扰源类型,字典表 */ - @ApiModelProperty(name = "",value = "") + @NotNull(message = "干扰源类型不可为空") + @ApiModelProperty(name = "loadType",value = "干扰源类型,字典表") + @Pattern(regexp = PatternRegex.SYSTEM_ID, message = "干扰源类型id违规") private String loadType; /** * 行业类型,字典表 */ - @ApiModelProperty(name = "",value = "") + @NotNull(message = "行业类型不可为空") + @ApiModelProperty(name = "businessType",value = "行业类型,字典表") + @Pattern(regexp = PatternRegex.SYSTEM_ID, message = "行业类型id违规") private String businessType; /** * 网公司谐波监测平台标志(0-否;1-是),默认否 */ - @ApiModelProperty(name = "",value = "") + @NotNull(message = "网公司谐波监测平台标志不可为空") + @ApiModelProperty(name = "monitorFlag",value = "网公司谐波监测平台标志(0-否;1-是),默认否") + @Range(min = 0,max = 1,message = "网公司谐波监测平台标志违规") private Integer monitorFlag; /** * 电网标志(0-电网侧;1-非电网侧) */ - @ApiModelProperty(name = "",value = "") + @NotNull(message = "电网标志不可为空") + @ApiModelProperty(name = "powerFlag",value = "电网标志(0-电网侧;1-非电网侧)") + @Range(min = 0,max = 1,message = "电网标志违规") private Integer powerFlag; /** * 国网谐波监测平台监测点号 */ - @ApiModelProperty(name = "",value = "") + @ApiModelProperty(name = "monitorId",value = "国网谐波监测平台监测点号") private String monitorId; /** * 监测点对象名称 */ - @ApiModelProperty(name = "",value = "") + @ApiModelProperty(name = "objName",value = "监测点对象名称") private String objName; /** * 人为干预是否参与统计(0:不参与,1:参与)默认参与统计 */ - @ApiModelProperty(name = "",value = "") - private Integer statFlag; + @NotNull(message = "人为干预是否参与统计标志不可为空") + @ApiModelProperty(name = "statFlag",value = "人为干预是否参与统计(0:不参与,1:参与)默认参与统计") + @Range(min = 0,max = 1,message = "为干预是否参与统计违规") + private Integer statFlag = 1; /** * 备注 */ - @ApiModelProperty(name = "",value = "") + @ApiModelProperty(name = "remark",value = "备注") private String remark; /** * 电压互感器类型,字典表 */ - @ApiModelProperty(name = "",value = "") + @ApiModelProperty(name = "tfType",value = "电压互感器类型,字典表") private String tfType; /** * 所属变压器编号 */ - @ApiModelProperty(name = "",value = "") + @ApiModelProperty(name = "tfCode",value = "所属变压器编号") private String tfCode; /** * 中性点接地方式,字典表 */ - @ApiModelProperty(name = "",value = "") + @ApiModelProperty(name = "groundType",value = "中性点接地方式,字典表") private String groundType; /** * 投运日期 */ - @ApiModelProperty(name = "",value = "") + @ApiModelProperty(name = "putIn",value = "投运日期") + @DateTimeStrValid(message = "投运日期格式有误") private String putIn; /** * 接入日期 */ - @ApiModelProperty(name = "",value = "") + @ApiModelProperty(name = "access",value = "接入日期") + @DateTimeStrValid(message = "接入日期格式有误") private String access; /** * 是否专项供电(0:否,1:是)默认参与统计 */ - @ApiModelProperty(name = "",value = "") + @ApiModelProperty(name = "powerSupply",value = "是否专项供电(0:否,1:是)默认参与统计") private Integer powerSupply; - + @Data @EqualsAndHashCode(callSuper = true) diff --git a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/pv/PvTerminalBaseQuery.java b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/pv/PvTerminalBaseQuery.java new file mode 100644 index 000000000..14a2a5e6b --- /dev/null +++ b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/pv/PvTerminalBaseQuery.java @@ -0,0 +1,33 @@ +package com.njcn.device.pojo.param.pv; + +import com.njcn.web.pojo.param.BaseParam; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * pqs + * + * @author cdf + * @date 2022/7/12 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class PvTerminalBaseQuery extends BaseParam { + + @ApiModelProperty(name = "id",value = "单位变电站台区索引",required = true) + @NotEmpty(message = "单位变电站台区索引不能为空") + private List id; + + @ApiModelProperty(name = "level",value = "0.单位 1.变电站 2.台区",required = true) + @NotNull(message = "树层级不可为空") + private Integer level; + + @ApiModelProperty(name = "type",value = "字典类型 I II III类监测点类型id") + private Integer type; +} diff --git a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/po/pv/PvLineDetail.java b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/po/pv/PvLineDetail.java index baa378fcc..17f74aa92 100644 --- a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/po/pv/PvLineDetail.java +++ b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/po/pv/PvLineDetail.java @@ -3,6 +3,7 @@ package com.njcn.device.pojo.po.pv; import com.baomidou.mybatisplus.annotation.TableName; import com.njcn.db.bo.BaseEntity; import java.io.Serializable; +import java.time.LocalDate; import java.time.LocalDateTime; import lombok.Data; @@ -30,6 +31,10 @@ public class PvLineDetail extends BaseEntity { */ private String id; + private String name; + + private String code; + /** * 所属终端 */ @@ -55,15 +60,12 @@ public class PvLineDetail extends BaseEntity { */ private String subAreaId; - /** - * 所属分布式光伏台账(III类监测点) - */ - private String distributedId; + private String userCode; /** - * 所属低压用户台账(III类监测点) + * 电压等级 */ - private String lvUserId; + private String scale; /** * 线路号(在同一台设备中的监测点号) @@ -178,12 +180,12 @@ public class PvLineDetail extends BaseEntity { /** * 投运日期 */ - private LocalDateTime putIn; + private LocalDate putIn; /** * 接入日期 */ - private LocalDateTime access; + private LocalDate access; /** * 是否专项供电(0:否,1:是)默认参与统计 diff --git a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/pv/PvLineAllDetailVO.java b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/pv/PvLineAllDetailVO.java new file mode 100644 index 000000000..35ac9b452 --- /dev/null +++ b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/pv/PvLineAllDetailVO.java @@ -0,0 +1,203 @@ +package com.njcn.device.pojo.vo.pv; + +import lombok.Data; + +import java.time.LocalDate; +import java.util.List; + +/** + * pqs + * + * @author cdf + * @date 2022/7/12 + */ +@Data +public class PvLineAllDetailVO { + + + /** + * 监测点序号 + */ + private String id; + + private String name; + + private String code; + + /** + * 所属终端 + */ + private String devName; + + /** + * 监测点类型(I类监测点、II类监测点、III类监测点),字典表 + */ + private String type; + + /** + * 所属变电站(I类监测点) + */ + private String substationName; + + /** + * 所属母线名称(I类监测点) + */ + private String voltageName; + + /** + * 所属台区ID(II类监测点) + */ + private String subAreaName; + + private String userCode; + + /** + * 分布式光伏名称 + */ + private String distributeName; + + /** + * 低压用户名称 + */ + private String lvUserName; + + + /** + * 电压等级 + */ + private String scale; + + /** + * 线路号(在同一台设备中的监测点号) + */ + private Integer num; + + /** + * PT一次变比 + */ + private Float pt1; + + /** + * PT二次变比 + */ + private Float pt2; + + /** + * CT一次变比 + */ + private Float ct1; + + /** + * CT二次变比 + */ + private Float ct2; + + /** + * 设备容量 + */ + private Float devCapacity; + + /** + * 短路容量 + */ + private Float shortCapacity; + + /** + * 基准容量 + */ + private Float standardCapacity; + + /** + * 协议容量 + */ + private Float dealCapacity; + + /** + * 接线类型(0:星型接法;1:三角型接法;2:开口三角型接法) + */ + private Integer ptType; + + /** + * 测量间隔(1-10分钟) + */ + private Integer timeInterval; + + /** + * 干扰源类型,字典表 + */ + private String loadType; + + /** + * 行业类型,字典表 + */ + private String businessType; + + /** + * 网公司谐波监测平台标志(0-否;1-是),默认否 + */ + private Integer monitorFlag; + + /** + * 电网标志(0-电网侧;1-非电网侧) + */ + private Integer powerFlag; + + /** + * 国网谐波监测平台监测点号 + */ + private String monitorId; + + /** + * 监测点对象名称 + */ + private String objName; + + /** + * 人为干预是否参与统计(0:不参与,1:参与)默认参与统计 + */ + private Integer statFlag; + + /** + * 备注 + */ + private String remark; + + /** + * 电压互感器类型,字典表 + */ + private String tfType; + + /** + * 所属变压器编号 + */ + private String tfCode; + + /** + * 中性点接地方式,字典表 + */ + private String groundType; + + /** + * 投运日期 + */ + private LocalDate putIn; + + /** + * 接入日期 + */ + private LocalDate access; + + /** + * 是否专项供电(0:否,1:是)默认参与统计 + */ + private Integer powerSupply; + + /** + * 状态 + */ + private Integer state; + + +} + + diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/controller/PvTerminalBaseController.java b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/controller/PvTerminalBaseController.java new file mode 100644 index 000000000..7fbdf0292 --- /dev/null +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/controller/PvTerminalBaseController.java @@ -0,0 +1,72 @@ +package com.njcn.pvdevice.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.njcn.common.pojo.annotation.OperateInfo; +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.pojo.param.pv.PvTerminalBaseQuery; +import com.njcn.device.pojo.vo.pv.PvLineAllDetailVO; +import com.njcn.pvdevice.service.PvTerminalBaseService; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * pqs + * 台账相关控制 + * + * @author cdf + * @date 2022/7/11 + */ +@RestController +@RequestMapping("/pvTerminalBase") +@Api(tags = "pv终端相关基础管理") +@RequiredArgsConstructor +public class PvTerminalBaseController extends BaseController { + + private final PvTerminalBaseService pvTerminalBaseService; + + + /** + * 获取终端台账树 + * + * @author cdf + * @date 2022/7/11 + */ + @GetMapping("pvTree") + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation("获取终端台账树") + public HttpResult> pvTerminalTree() { + String methodDescribe = getMethodDescribe("pvTerminalTree"); + List tree = pvTerminalBaseService.pvTerminalTree(); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, tree, methodDescribe); + } + + + /** + * 点击变电站台区展示监测点详情 + * @param pvTerminalBaseQuery 传参 + * @author cdf + * @date 2022/7/11 + */ + @PostMapping("pvLineDetail") + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation("点击树节点获取监测点详情") + @ApiImplicitParam(name = "pvTerminalBaseQuery",value = "参数",required = true) + public HttpResult> lineDetailBySubId(@RequestBody @Validated PvTerminalBaseQuery pvTerminalBaseQuery) { + String methodDescribe = getMethodDescribe("lineDetailBySubId"); + Page all = pvTerminalBaseService.lineDetailBySubId(pvTerminalBaseQuery); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, all, methodDescribe); + } + + +} diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvLineDetailMapper.java b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvLineDetailMapper.java index d82aad350..5125986b2 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvLineDetailMapper.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvLineDetailMapper.java @@ -1,7 +1,12 @@ package com.njcn.pvdevice.mapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.device.pojo.po.pv.PvLineDetail; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.device.pojo.vo.pv.PvLineAllDetailVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,16 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface PvLineDetailMapper extends BaseMapper { + + /** + * 分页查询监测点 + * @param subIds 变电站ids + * @param subAreaIds 台区ids + * @author cdf + * @date 2022/7/5 + * @return Page + */ + Page getPvLineAllDetailMain(Page page,@Param("subIds") List subIds, @Param("subAreaIds")List subAreaIds); + + } diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvSubAreaMapper.java b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvSubAreaMapper.java index 62141d615..3a2d50f00 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvSubAreaMapper.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvSubAreaMapper.java @@ -4,8 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.device.pojo.param.pv.SubAreaQueryParam; import com.njcn.device.pojo.po.pv.PvSubArea; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** *

* Mapper 接口 @@ -24,4 +27,10 @@ public interface PvSubAreaMapper extends BaseMapper { */ Page getPvSubAreaList(Page page,@Param("subsAreaQueryParam") SubAreaQueryParam subsAreaQueryParam); + /** + * 查询所有台区 + * @author cdf + * @date 2022/7/11 + */ + List getSubAreaTreeList(); } diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvSubstationMapper.java b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvSubstationMapper.java index b58b65aa6..7e5f6cb3a 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvSubstationMapper.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvSubstationMapper.java @@ -4,8 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.device.pojo.param.pv.SubstationQueryParam; import com.njcn.device.pojo.po.pv.PvSubstation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** *

* Mapper 接口 @@ -18,4 +21,10 @@ public interface PvSubstationMapper extends BaseMapper { Page getPvSubstationList(Page page,@Param("substationQueryParam") SubstationQueryParam substationQueryParam); + /** + * 终端树结构的变电站 + * @author cdf + * @date 2022/7/11 + */ + List getSubstationTreeList(); } diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvUnitMapper.java b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvUnitMapper.java index ea0372bb0..d3d6e7b17 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvUnitMapper.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/PvUnitMapper.java @@ -3,7 +3,7 @@ package com.njcn.pvdevice.mapper; import com.njcn.device.pojo.po.pv.PvUnit; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.njcn.device.pojo.vo.pv.UnitTreeVO; -import com.njcn.web.pojo.param.BaseParam; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -25,4 +25,8 @@ public interface PvUnitMapper extends BaseMapper { */ List getPvUnitList(@Param("orderBy")String orderBy,@Param("sortBy")String sortBy); + + + + } diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvLineDetailMapper.xml b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvLineDetailMapper.xml index a3efeab81..e9fbd397c 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvLineDetailMapper.xml +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvLineDetailMapper.xml @@ -2,4 +2,132 @@ + + diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvSubAreaMapper.xml b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvSubAreaMapper.xml index 3e8eb5c8a..3016c5863 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvSubAreaMapper.xml +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvSubAreaMapper.xml @@ -46,4 +46,9 @@ order by ten.create_time asc + + + diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvSubstationMapper.xml b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvSubstationMapper.xml index cb4d48d4d..1947e39de 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvSubstationMapper.xml +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvSubstationMapper.xml @@ -36,4 +36,9 @@ + + + diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvUnitMapper.xml b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvUnitMapper.xml index ddf5fe332..9a58bc348 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvUnitMapper.xml +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/mapper/mapping/PvUnitMapper.xml @@ -9,4 +9,7 @@ order by concat(#{sortBy},' ',#{orderBy}) + + + diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/IPvLineDetailService.java b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/IPvLineDetailService.java index 9fef54fe5..042f0d0e4 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/IPvLineDetailService.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/IPvLineDetailService.java @@ -6,6 +6,7 @@ import com.njcn.device.pojo.param.pv.PvLineDetailParam; import com.njcn.device.pojo.po.pv.PvLineDetail; import com.njcn.device.pojo.po.pv.PvLineDetail; import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.device.pojo.vo.pv.PvLineAllDetailVO; import java.util.List; @@ -69,4 +70,17 @@ public interface IPvLineDetailService extends IService { */ boolean delPvLineDetail(String id); + + /** + * 分页查询监测点 + * @param subIds 变电站ids + * @param subAreaIds 台区ids + * @author cdf + * @date 2022/7/5 + * @return Page + */ + Page getPvLineAllDetailMain(Integer pageNum,Integer pageSize,List subIds, List subAreaIds); + + + } diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/IPvUnitService.java b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/IPvUnitService.java index 8be03eb74..71c16c0f2 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/IPvUnitService.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/IPvUnitService.java @@ -4,6 +4,7 @@ import com.njcn.device.pojo.param.pv.PvUnitParam; import com.njcn.device.pojo.po.pv.PvUnit; import com.baomidou.mybatisplus.extension.service.IService; import com.njcn.device.pojo.vo.pv.UnitTreeVO; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; import com.njcn.web.pojo.param.BaseParam; import java.util.List; @@ -38,7 +39,7 @@ public interface IPvUnitService extends IService { /** - * 分页查询单位 + * 查询树形结构单位 * @param baseParam 单位实体 * @author cdf * @date 2022/7/5 @@ -47,6 +48,8 @@ public interface IPvUnitService extends IService { List getPvUnitList(BaseParam baseParam); + + /** * 根据单位id查询单位 * @param id 单位id diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/PvTerminalBaseService.java b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/PvTerminalBaseService.java new file mode 100644 index 000000000..90fb1d3d0 --- /dev/null +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/PvTerminalBaseService.java @@ -0,0 +1,32 @@ +package com.njcn.pvdevice.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.njcn.device.pojo.param.pv.PvTerminalBaseQuery; +import com.njcn.device.pojo.vo.pv.PvLineAllDetailVO; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; + +import java.util.List; + +/** + * pqs + * + * @author cdf + * @date 2022/7/11 + */ +public interface PvTerminalBaseService { + + /** + * 获取设备树 + * @author cdf + * @date 2022/7/11 + */ + List pvTerminalTree(); + + + /** + * 点击变电站台区展示监测点详情 + * @author cdf + * @date 2022/7/11 + */ + Page lineDetailBySubId(PvTerminalBaseQuery pvTerminalBaseQuery); +} diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvDeviceServiceImpl.java b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvDeviceServiceImpl.java index 3a3fa7ea8..6394ee4c0 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvDeviceServiceImpl.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvDeviceServiceImpl.java @@ -42,7 +42,6 @@ public class PvDeviceServiceImpl extends ServiceImpl i @Override public boolean addDevice(PvDeviceParam pvDeviceParam) { checkNameAndParam(pvDeviceParam, false); - PvDevice pvDevice = new PvDevice(); BeanUtils.copyProperties(pvDeviceParam, pvDevice); pvDevice.setState(DataStateEnum.ENABLE.getCode()); @@ -54,7 +53,6 @@ public class PvDeviceServiceImpl extends ServiceImpl i @Override public boolean updateDevice(PvDeviceParam.UpdatePvDeviceParam updatePvDeviceParam) { checkNameAndParam(updatePvDeviceParam, true); - PvDevice pvDevice = new PvDevice(); BeanUtils.copyProperties(updatePvDeviceParam, pvDevice); pvDevice.setState(DataStateEnum.ENABLE.getCode()); @@ -99,20 +97,24 @@ public class PvDeviceServiceImpl extends ServiceImpl i } int count = this.count(lambdaQueryWrapper); if (count > 0) { - throw new BusinessException(PvDeviceResponseEnum.SUB_AREA_REPEAT); + throw new BusinessException(PvDeviceResponseEnum.DVE_CODE_REPEAT); } + /*校验终端类型*/ + if (Objects.isNull(dicDataFeignClient.getDicDataById(pvDeviceParam.getType()).getData())) { + throw new BusinessException(SystemResponseEnum.DEV_VARIETY); + } /*校验设备型号*/ if (StrUtil.isNotBlank(pvDeviceParam.getDevType())) { - if (Objects.isNull(dicDataFeignClient.getDicDataById(pvDeviceParam.getDevType()))) { + if (Objects.isNull(dicDataFeignClient.getDicDataById(pvDeviceParam.getDevType()).getData())) { throw new BusinessException(SystemResponseEnum.DEV_TYPE_EMPTY); } } /*校验生产厂家*/ - if (Objects.isNull(dicDataFeignClient.getDicDataById(pvDeviceParam.getManufacturer()))) { + if (Objects.isNull(dicDataFeignClient.getDicDataById(pvDeviceParam.getManufacturer()).getData())) { throw new BusinessException(SystemResponseEnum.MANUFACTURER); } diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvDistributedServiceImpl.java b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvDistributedServiceImpl.java index 36263e4ee..947edf770 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvDistributedServiceImpl.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvDistributedServiceImpl.java @@ -87,7 +87,7 @@ public class PvDistributedServiceImpl extends ServiceImpl 0) { throw new BusinessException(PvDeviceResponseEnum.SUB_AREA_REPEAT); } + + lambdaQueryWrapper.clear(); + lambdaQueryWrapper.eq(PvDistributed::getUserCode, pvDistributedParam.getUserCode()); + if (isUpdate) { + //更新操作 + if (pvDistributedParam instanceof PvDistributedParam.UpdatePvDistributedParam) { + lambdaQueryWrapper.eq(PvDistributed::getId, ((PvDistributedParam.UpdatePvDistributedParam) pvDistributedParam).getId()); + } + } + int countUserCode = this.count(lambdaQueryWrapper); + if (countUserCode > 0) { + throw new BusinessException(PvDeviceResponseEnum.USER_CODE_REPEAT); + } } diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvLineDetailServiceImpl.java b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvLineDetailServiceImpl.java index 3e5b00433..969b40185 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvLineDetailServiceImpl.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvLineDetailServiceImpl.java @@ -1,19 +1,25 @@ package com.njcn.pvdevice.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.utils.PubUtils; import com.njcn.device.enums.PvDeviceResponseEnum; import com.njcn.device.pojo.param.pv.LineDetailQueryParam; import com.njcn.device.pojo.param.pv.PvLineDetailParam; import com.njcn.device.pojo.po.pv.PvLineDetail; import com.njcn.device.pojo.po.pv.PvLineDetail; +import com.njcn.device.pojo.vo.pv.PvLineAllDetailVO; import com.njcn.pvdevice.mapper.PvLineDetailMapper; -import com.njcn.pvdevice.service.IPvDeviceService; -import com.njcn.pvdevice.service.IPvLineDetailService; +import com.njcn.pvdevice.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.SystemResponseEnum; +import com.njcn.system.pojo.po.DictData; +import com.njcn.system.utils.SystemEnumUtil; import com.njcn.web.factory.PageFactory; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; @@ -38,30 +44,74 @@ public class PvLineDetailServiceImpl extends ServiceImpl query = new LambdaQueryWrapper<>(); + query.eq(PvLineDetail::getDevId,pvLineDetailParam.getDevId()) + .eq(PvLineDetail::getNum,pvLineDetailParam.getNum()) + .eq(PvLineDetail::getState,DataStateEnum.ENABLE.getCode()); + if(isUpdate){ + if(pvLineDetailParam instanceof PvLineDetailParam.UpdatePvLineDetailParam){ + query.ne(PvLineDetail::getId,((PvLineDetailParam.UpdatePvLineDetailParam) pvLineDetailParam).getId()); + } + } + int count = this.count(query); + if (count > 0) { + throw new BusinessException(PvDeviceResponseEnum.DEV_NUM_NULL); + } + + } + @Override public Page getPvLineDetailList(LineDetailQueryParam subsAreaQueryParam) { Page page = new Page<>(PageFactory.getPageNum(subsAreaQueryParam),PageFactory.getPageSize(subsAreaQueryParam)); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - return this.page(page,lambdaQueryWrapper); } @@ -80,34 +130,99 @@ public class PvLineDetailServiceImpl extends ServiceImpl getPvLineAllDetailMain(Integer pageNum,Integer pageSize,List subIds, List subAreaIds) { + + Page page = new Page<>(pageNum,pageSize); + + return this.baseMapper.getPvLineAllDetailMain(page,subIds,subAreaIds); + + + } + /** * 校验单位名称是否重复 */ - private void checkName(PvLineDetailParam pvLineDetailParam, boolean isUpdate) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(PvLineDetail::getNum, pvLineDetailParam.getNum()); - if (isUpdate) { - //更新操作 - if (pvLineDetailParam instanceof PvLineDetailParam.UpdatePvLineDetailParam) { - lambdaQueryWrapper.eq(PvLineDetail::getId, ((PvLineDetailParam.UpdatePvLineDetailParam) pvLineDetailParam).getId()); - } - } - int count = this.count(lambdaQueryWrapper); - if (count > 0) { - throw new BusinessException(PvDeviceResponseEnum.SUB_AREA_REPEAT); - } - } + private void checkNameAndParam(PvLineDetailParam pvLineDetailParam) { - /** - * 校验参数是否违规 - */ - private void checkParam(PvLineDetailParam pvLineDetailParam){ - if(Objects.isNull(dicDataFeignClient.getDicDataById(pvLineDetailParam.getLoadType()))){ - throw new BusinessException(SystemResponseEnum.INTERFERENCE_EMPTY); - } if(Objects.isNull(iPvDeviceService.getPvDeviceById(pvLineDetailParam.getDevId()))){ throw new BusinessException(PvDeviceResponseEnum.DEV_NULL); } + + /*校验监测类型*/ + DictData lineType = dicDataFeignClient.getDicDataById(pvLineDetailParam.getType()).getData(); + if(Objects.isNull(lineType)){ + throw new BusinessException(SystemResponseEnum.LINE_TYPE_VARIETY_EMPTY); + } + if(DicDataEnum.ONE_LINE.getCode().equals(lineType.getCode())){ + if(StrUtil.hasBlank(pvLineDetailParam.getSubstationId(),pvLineDetailParam.getVoltageId())){ + throw new BusinessException(PvDeviceResponseEnum.ONE_SUB_VOLTAGE_EMPTY); + } + if(StrUtil.isNotBlank(pvLineDetailParam.getSubAreaId())){ + pvLineDetailParam.setSubAreaId(""); + } + }else if(DicDataEnum.TWO_LINE.getCode().equals(lineType.getCode())){ + if(StrUtil.isNotBlank(pvLineDetailParam.getSubstationId()) ||StrUtil.isNotBlank(pvLineDetailParam.getVoltageId())){ + throw new BusinessException(PvDeviceResponseEnum.TWO_SUB_VOLTAGE_EMPTY_MUST); + } + + //2类3类监测点必须存在台区 + if(StrUtil.isBlank(pvLineDetailParam.getSubAreaId())){ + throw new BusinessException(PvDeviceResponseEnum.SUB_AREA_EMPTY); + } + + + }else if(DicDataEnum.THREE_LINE.getCode().equals(lineType.getCode())){ + if(StrUtil.isNotBlank(pvLineDetailParam.getSubstationId()) ||StrUtil.isNotBlank(pvLineDetailParam.getVoltageId())){ + throw new BusinessException(PvDeviceResponseEnum.TWO_SUB_VOLTAGE_EMPTY_MUST); + } + + //2类3类监测点必须存在台区 + if(StrUtil.isBlank(pvLineDetailParam.getSubAreaId())){ + throw new BusinessException(PvDeviceResponseEnum.SUB_AREA_EMPTY); + } + } + + + + if(Objects.isNull(dicDataFeignClient.getDicDataById(pvLineDetailParam.getBusinessType()).getData())){ + throw new BusinessException(SystemResponseEnum.BUSINESS_EMPTY); + } + + if(StrUtil.isNotBlank(pvLineDetailParam.getScale())) { + if (Objects.isNull(dicDataFeignClient.getDicDataById(pvLineDetailParam.getScale()).getData())) { + throw new BusinessException(SystemResponseEnum.LINE_TYPE_VARIETY_EMPTY); + } + } + + if(Objects.isNull(dicDataFeignClient.getDicDataById(pvLineDetailParam.getLoadType()).getData())){ + throw new BusinessException(SystemResponseEnum.INTERFERENCE_EMPTY); + } + + /*校验变电站*/ + if(StrUtil.isNotBlank(pvLineDetailParam.getSubstationId())) { + if (Objects.isNull(iPvSubstationService.getPvSubstationById(pvLineDetailParam.getSubstationId()))) { + throw new BusinessException(PvDeviceResponseEnum.SUBSTATION_NULL); + } + } + + /*校验母线*/ + if(StrUtil.isNotBlank(pvLineDetailParam.getVoltageId())) { + if (Objects.isNull(iPvVoltageService.getPvVoltageById(pvLineDetailParam.getVoltageId()))) { + throw new BusinessException(PvDeviceResponseEnum.VOLTAGE_NULL); + } + } + + /*校验台区*/ + if(StrUtil.isNotBlank(pvLineDetailParam.getSubAreaId())) { + if (Objects.isNull(iPvSubAreaService.getPvSubAreaById(pvLineDetailParam.getSubAreaId()))) { + throw new BusinessException(PvDeviceResponseEnum.SUB_AREA_NULL); + } + } + + } + + } diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvLvUserServiceImpl.java b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvLvUserServiceImpl.java index a003e1450..7b9d99225 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvLvUserServiceImpl.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvLvUserServiceImpl.java @@ -7,7 +7,9 @@ import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.device.enums.PvDeviceResponseEnum; import com.njcn.device.pojo.param.pv.LvUserQueryParam; +import com.njcn.device.pojo.param.pv.PvDistributedParam; import com.njcn.device.pojo.param.pv.PvLvUserParam; +import com.njcn.device.pojo.po.pv.PvDistributed; import com.njcn.device.pojo.po.pv.PvLvUser; import com.njcn.device.pojo.po.pv.PvLvUser; import com.njcn.pvdevice.mapper.PvLvUserMapper; @@ -85,7 +87,7 @@ public class PvLvUserServiceImpl extends ServiceImpl i private void checkNameAndParam(PvLvUserParam pvLvUserParam, boolean isUpdate) { if(StrUtil.isNotBlank(pvLvUserParam.getScale())) { - if (Objects.isNull(dicDataFeignClient.getDicDataById(pvLvUserParam.getScale()))) { + if (Objects.isNull(dicDataFeignClient.getDicDataById(pvLvUserParam.getScale()).getData())) { throw new BusinessException(SystemResponseEnum.VOLTAGE_EMPTY); } } @@ -102,6 +104,20 @@ public class PvLvUserServiceImpl extends ServiceImpl i if (count > 0) { throw new BusinessException(PvDeviceResponseEnum.SUB_AREA_REPEAT); } + + + lambdaQueryWrapper.clear(); + lambdaQueryWrapper.eq(PvLvUser::getUserCode, pvLvUserParam.getUserCode()); + if (isUpdate) { + //更新操作 + if (pvLvUserParam instanceof PvLvUserParam.UpdatePvLvUserParam) { + lambdaQueryWrapper.eq(PvLvUser::getId, ((PvLvUserParam.UpdatePvLvUserParam) pvLvUserParam).getId()); + } + } + int countUserCode = this.count(lambdaQueryWrapper); + if (countUserCode > 0) { + throw new BusinessException(PvDeviceResponseEnum.USER_CODE_REPEAT); + } } diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvTerminalBaseServiceImpl.java b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvTerminalBaseServiceImpl.java new file mode 100644 index 000000000..023b05fa0 --- /dev/null +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvTerminalBaseServiceImpl.java @@ -0,0 +1,111 @@ +package com.njcn.pvdevice.service.impl; + +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.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.device.enums.LineBaseEnum; +import com.njcn.device.pojo.param.pv.PvTerminalBaseQuery; +import com.njcn.device.pojo.po.pv.PvSubArea; +import com.njcn.device.pojo.po.pv.PvSubstation; +import com.njcn.device.pojo.vo.pv.PvLineAllDetailVO; +import com.njcn.pvdevice.mapper.PvLineDetailMapper; +import com.njcn.pvdevice.mapper.PvSubAreaMapper; +import com.njcn.pvdevice.mapper.PvSubstationMapper; +import com.njcn.pvdevice.service.*; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; +import com.njcn.web.pojo.param.BaseParam; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * pqs + * + * @author cdf + * @date 2022/7/11 + */ +@Service +@RequiredArgsConstructor +public class PvTerminalBaseServiceImpl implements PvTerminalBaseService { + + private final IPvUnitService iPvUnitService; + + private final IPvSubstationService iPvSubstationService; + + private final IPvSubAreaService iPvSubAreaService; + + private final IPvLineDetailService iPvLineDetailService; + + private final PvSubstationMapper pvSubstationMapper; + + private final PvSubAreaMapper pvSubAreaMapper; + + private final PvLineDetailMapper pvLineDetailMapper; + + private final DicDataFeignClient dicDataFeignClient; + + private final DeptFeignClient deptFeignClient; + + @Override + public List pvTerminalTree() { + List unitTreeList = deptFeignClient.allDeptList().getData(); + List subTreeList = pvSubstationMapper.getSubstationTreeList(); + List subAreaTreeList = pvSubAreaMapper.getSubAreaTreeList(); + unitTreeList.addAll(subTreeList); + unitTreeList.addAll(subAreaTreeList); + List newUnit = unitTreeList.stream().filter(item->item.getPid().equals("0")).peek(tem->tem.setChildren(getChildren(tem,unitTreeList))).collect(Collectors.toList()); + + return newUnit; + } + + @Override + public Page lineDetailBySubId(PvTerminalBaseQuery pvTerminalBaseQuery) { + List ids = pvTerminalBaseQuery.getId(); + Integer level = pvTerminalBaseQuery.getLevel(); + + if(level.equals(LineBaseEnum.PV_UNIT_LEVEL.getCode())){ + //点击的是单位节点 + LambdaQueryWrapper subQuery= new LambdaQueryWrapper<>(); + subQuery.in(PvSubstation::getUnitId,ids); + List substationList = iPvSubstationService.list(subQuery); + List subIds = substationList.stream().map(PvSubstation::getId).collect(Collectors.toList()); + + LambdaQueryWrapper areaQuery= new LambdaQueryWrapper<>(); + areaQuery.in(PvSubArea::getUnitId,ids); + List subAreaList = iPvSubAreaService.list(areaQuery); + List subAreaIds = subAreaList.stream().map(PvSubArea::getId).collect(Collectors.toList()); + return iPvLineDetailService.getPvLineAllDetailMain(1,10,subIds,subAreaIds); + }else if(level.equals(LineBaseEnum.PV_SUB_LEVEL.getCode())){ + + return iPvLineDetailService.getPvLineAllDetailMain(1,10, ids,null); + }else if(level.equals(LineBaseEnum.PV_SUB_AREA_LEVEL.getCode())){ + + return iPvLineDetailService.getPvLineAllDetailMain(1,10,null,ids); + + } + throw new BusinessException(CommonResponseEnum.FAIL); + } + + + private void diGui(List unitTreeList,List subTreeList,List subAreaTreeList) { + for (PvTerminalTreeVO unit : unitTreeList) { + if (CollUtil.isNotEmpty(unit.getChildren())) { + diGui(unit.getChildren(),subTreeList,subAreaTreeList); + } else { + unit.setChildren(getChildren(unit, subTreeList)); + unit.setChildren(getChildren(unit, subAreaTreeList)); + } + } + } + + + private List getChildren(PvTerminalTreeVO tem, List children) { + return children.stream().filter(item -> item.getPid().equals(tem.getId())).peek(t->t.setChildren(getChildren(t,children))).collect(Collectors.toList()); + } +} diff --git a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvUnitServiceImpl.java b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvUnitServiceImpl.java index e3bbbc805..d9e7d5ad7 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvUnitServiceImpl.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/pvdevice/service/impl/PvUnitServiceImpl.java @@ -10,6 +10,7 @@ import com.njcn.device.pojo.vo.pv.UnitTreeVO; import com.njcn.pvdevice.mapper.PvUnitMapper; import com.njcn.pvdevice.service.IPvUnitService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; import com.njcn.web.pojo.param.BaseParam; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -54,6 +55,8 @@ public class PvUnitServiceImpl extends ServiceImpl impleme return parentList; } + + /** * 递归查询子节点 * @param root 根节点 @@ -65,6 +68,11 @@ public class PvUnitServiceImpl extends ServiceImpl impleme .peek(m -> m.setChildren(getChildren(m, all))).collect(Collectors.toList()); } + private List getChildrens(PvTerminalTreeVO root, List all) { + return all.stream().filter(m -> Objects.equals(m.getPid(), root.getId())) + .peek(m -> m.setChildren(getChildrens(m, all))).collect(Collectors.toList()); + } + @Override public PvUnit getPvUnitById(String id) { return this.getById(id); diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java index 86e899e05..940104894 100644 --- a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java +++ b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java @@ -22,7 +22,18 @@ public enum DicDataEnum { CSSB_ENUM("长时闪变", "CSSB"), XBDL_ENUM("谐波电流", "XBDL"), FXDL_ENUM("负序电流", "FXDL"), - JXBDY_ENUM("间谐波电压", "JXBDY"); + JXBDY_ENUM("间谐波电压", "JXBDY"), + + + + /** + * 监测点类型 + */ + ONE_LINE("I类监测点","One_Line"), + TWO_LINE("II类监测点","Two_Line"), + THREE_LINE("III类监测点","Three_Line") + + ; private final String name; diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java index 1f814eb82..ffa13da35 100644 --- a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java +++ b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java @@ -16,6 +16,7 @@ public enum DicDataTypeEnum { */ FRONT_TYPE("前置类型"), DEV_TYPE("终端型号"), + DEV_VARIETY("终端类型"), DEV_FUN("终端功能"), DEV_STATUS("终端状态"), DEV_LEVEL("终端等级"), @@ -33,8 +34,8 @@ public enum DicDataTypeEnum { RATE_TYPE("费率类型"), ELE_LOAD_TYPE("用能负荷类型"), ELE_STATISTICAL_TYPE("用能统计类型"), - LINE_MARK("监测点评分等级") - + LINE_MARK("监测点评分等级"), + LINE_TYPE("监测点类型") ; diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/enums/SystemResponseEnum.java b/pqs-system/system-api/src/main/java/com/njcn/system/enums/SystemResponseEnum.java index ddd4096a3..1c91dde0b 100644 --- a/pqs-system/system-api/src/main/java/com/njcn/system/enums/SystemResponseEnum.java +++ b/pqs-system/system-api/src/main/java/com/njcn/system/enums/SystemResponseEnum.java @@ -26,7 +26,8 @@ public enum SystemResponseEnum { BUSINESS_EMPTY("A00356","查询字典行业类型数据为空"), DEV_TYPE_EMPTY("A00357","查询字典设备类型数据为空"), MANUFACTURER("A00358","查询字典终端厂家数据为空"), - + DEV_VARIETY("A00359","查询字典终端类型数据为空"), + LINE_TYPE_VARIETY_EMPTY("A00360","查询字典监测点类型数据为空"), ; diff --git a/pqs-user/user-api/src/main/java/com/njcn/user/api/DeptFeignClient.java b/pqs-user/user-api/src/main/java/com/njcn/user/api/DeptFeignClient.java index 84f09a1c8..68d3c4565 100644 --- a/pqs-user/user-api/src/main/java/com/njcn/user/api/DeptFeignClient.java +++ b/pqs-user/user-api/src/main/java/com/njcn/user/api/DeptFeignClient.java @@ -4,6 +4,7 @@ import com.njcn.common.pojo.constant.ServerInfo; import com.njcn.common.pojo.response.HttpResult; import com.njcn.user.api.fallback.DeptFeignClientFallbackFactory; import com.njcn.user.pojo.dto.DeptDTO; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -45,4 +46,11 @@ public interface DeptFeignClient { */ @GetMapping("/getAreaIdByDeptId") HttpResult getAreaIdByDeptId(@RequestParam("deptId") String deptId); + + /** + * 获取所有部门 + */ + @GetMapping("/allDeptList") + HttpResult> allDeptList(); + } diff --git a/pqs-user/user-api/src/main/java/com/njcn/user/api/fallback/DeptFeignClientFallbackFactory.java b/pqs-user/user-api/src/main/java/com/njcn/user/api/fallback/DeptFeignClientFallbackFactory.java index 1526f7639..466581baf 100644 --- a/pqs-user/user-api/src/main/java/com/njcn/user/api/fallback/DeptFeignClientFallbackFactory.java +++ b/pqs-user/user-api/src/main/java/com/njcn/user/api/fallback/DeptFeignClientFallbackFactory.java @@ -5,6 +5,7 @@ import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.response.HttpResult; import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.dto.DeptDTO; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; import com.njcn.user.utils.UserEnumUtil; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; @@ -55,6 +56,12 @@ public class DeptFeignClientFallbackFactory implements FallbackFactory> allDeptList() { + log.error("{}异常,降级处理,异常为:{}","查询所有部门异常",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } }; } } diff --git a/pqs-user/user-api/src/main/java/com/njcn/user/pojo/vo/PvTerminalTreeVO.java b/pqs-user/user-api/src/main/java/com/njcn/user/pojo/vo/PvTerminalTreeVO.java new file mode 100644 index 000000000..60d06931d --- /dev/null +++ b/pqs-user/user-api/src/main/java/com/njcn/user/pojo/vo/PvTerminalTreeVO.java @@ -0,0 +1,38 @@ +package com.njcn.user.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * pqs + * + * @author cdf + * @date 2022/7/11 + */ +@Data +public class PvTerminalTreeVO { + + @ApiModelProperty(name = "id",value = "id") + private String id; + + @ApiModelProperty(name = "pid",value = "父级id") + private String pid; + + @ApiModelProperty(name = "name",value = "名称") + private String name; + + @ApiModelProperty(name = "code",value = "code") + private String code; + + /** + * 0.单位 1.变电站 2.台区 + */ + @ApiModelProperty(name = "level",value = "0.单位 1.变电站 2.台区") + private Integer level; + + @ApiModelProperty(name = "children",value = "子级") + private List children = new ArrayList<>(); +} diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/controller/DeptController.java b/pqs-user/user-boot/src/main/java/com/njcn/user/controller/DeptController.java index 198ed8440..87c0ad458 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/controller/DeptController.java +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/controller/DeptController.java @@ -16,9 +16,8 @@ import com.njcn.user.pojo.param.DeptParam; import com.njcn.user.pojo.vo.DeptAllTreeVO; import com.njcn.user.pojo.vo.DeptTreeVO; import com.njcn.user.pojo.vo.DeptVO; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; import com.njcn.user.service.IDeptService; -import com.njcn.web.pojo.param.DeptLineParam; -import com.njcn.web.utils.ControllerUtil; import io.swagger.annotations.*; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -256,5 +255,19 @@ public class DeptController extends BaseController { } } + /** + * 获取所有的部门 + * @author cdf + * @date 2022/7/12 + */ + @OperateInfo(info = LogEnum.SYSTEM_COMMON) + @GetMapping("/allDeptList") + @ApiOperation("获取所有单位") + public HttpResult> allDeptList() { + String methodDescribe = getMethodDescribe("allDeptList"); + List result = deptService.allDeptList(); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + } diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/DeptMapper.java b/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/DeptMapper.java index e31856e9e..33242772f 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/DeptMapper.java +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/DeptMapper.java @@ -8,6 +8,7 @@ import com.njcn.user.pojo.po.Dept; import com.njcn.user.pojo.vo.DeptAllTreeVO; import com.njcn.user.pojo.vo.DeptTreeVO; import com.njcn.user.pojo.vo.DeptVO; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -91,4 +92,7 @@ public interface DeptMapper extends BaseMapper { * @return 后代部门索引 */ List getDeptDescendantIndexes(@Param("id")String id, @Param("type")List type); + + + List allDeptList(); } diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/mapping/DeptMapper.xml b/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/mapping/DeptMapper.xml index 1c268948e..e50514254 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/mapping/DeptMapper.xml +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/mapping/DeptMapper.xml @@ -155,4 +155,9 @@ + + + diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/service/IDeptService.java b/pqs-user/user-boot/src/main/java/com/njcn/user/service/IDeptService.java index 45d2a7d82..991fe28d7 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/service/IDeptService.java +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/service/IDeptService.java @@ -9,7 +9,7 @@ import com.njcn.user.pojo.po.Dept; import com.njcn.user.pojo.vo.DeptAllTreeVO; import com.njcn.user.pojo.vo.DeptTreeVO; import com.njcn.user.pojo.vo.DeptVO; -import com.njcn.web.pojo.param.DeptLineParam; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; import java.util.List; @@ -131,4 +131,11 @@ public interface IDeptService extends IService { * @date 2022/3/28 9:32 */ String getTopDeptId(); + + /** + * 获取所有的部门 + * @author cdf + * @date 2022/7/12 + */ + List allDeptList(); } diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/DeptServiceImpl.java b/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/DeptServiceImpl.java index ad16f28d8..7acd02484 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/DeptServiceImpl.java +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/DeptServiceImpl.java @@ -24,10 +24,10 @@ import com.njcn.user.pojo.po.User; import com.njcn.user.pojo.vo.DeptAllTreeVO; import com.njcn.user.pojo.vo.DeptTreeVO; import com.njcn.user.pojo.vo.DeptVO; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; import com.njcn.user.service.IDeptService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.web.factory.PageFactory; -import com.njcn.web.pojo.param.DeptLineParam; import com.njcn.web.utils.RequestUtil; import com.njcn.web.utils.WebUtil; import lombok.RequiredArgsConstructor; @@ -251,6 +251,11 @@ public class DeptServiceImpl extends ServiceImpl implements ID return this.lambdaQuery().eq(Dept::getPid,"0").one().getId(); } + @Override + public List allDeptList(){ + return this.baseMapper.allDeptList(); + } + /** * 校验参数,检查是否存在相同编码的部门 */