From 56182aa79c78882034701bc609f326a7dd749982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=A8=E6=9C=A8c?= <857448963@qq.com> Date: Wed, 7 Sep 2022 15:01:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/InfluxDBResultMapperCn.java | 2 +- .../influxdb/utils/InfluxDBCommUtils.java | 27 +- .../compent/NacosWeightLoadBalanceRule.java | 13 +- .../microservice/config/RibbonConfig.java | 6 +- .../device/pojo/param/DeviceInfoParam.java | 18 +- .../device/pojo/param/RunManageParam.java | 8 +- .../njcn/device/pojo/vo/AreaLineInfoVO.java | 3 + .../device/pojo/vo/LineInfluxDbOnlineVO.java | 2 +- .../com/njcn/device/pojo/vo/RunTimeVO.java | 2 +- .../controller/OperationContrController.java | 2 +- .../controller/RunManageController.java | 7 +- .../com/njcn/device/mapper/DeviceMapper.java | 3 +- .../device/mapper/mapping/DeviceMapper.xml | 8 +- .../njcn/device/mapper/mapping/LineMapper.xml | 10 +- .../com/njcn/device/service/LineService.java | 2 +- .../njcn/device/service/RunManageService.java | 3 +- .../device/service/impl/LineServiceImpl.java | 2 +- .../service/impl/RunManageServiceImpl.java | 81 +++-- .../njcn/event/pojo/po/EventDetailNew.java | 6 +- .../service/Impl/AreaLineServiceImpl.java | 1 - .../harmonic/enums/HarmonicResponseEnum.java | 4 +- .../harmonic/pojo/param/ReportQueryParam.java | 30 ++ .../controller/CustomReportController.java | 7 +- .../SteadyExceedRateController.java | 2 +- .../harmonic/service/CustomReportService.java | 18 +- .../service/SteadyExceedRateService.java | 2 +- .../service/impl/CustomReportServiceImpl.java | 318 ++++++++---------- .../impl/SteadyExceedRateServiceImpl.java | 2 +- .../njcn/system/enums/SystemResponseEnum.java | 2 + .../pojo/param/ReportTemplateParam.java | 43 +++ .../njcn/system/pojo/po/ReportTemplate.java | 31 ++ .../controller/ReportTemplateController.java | 142 ++++++++ .../system/mapper/ReportTemplateMapper.java | 14 + .../system/service/ReportTemplateService.java | 58 ++++ .../impl/ReportTemplateServiceImpl.java | 108 ++++++ 35 files changed, 704 insertions(+), 283 deletions(-) create mode 100644 pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/ReportQueryParam.java create mode 100644 pqs-system/system-api/src/main/java/com/njcn/system/pojo/param/ReportTemplateParam.java create mode 100644 pqs-system/system-api/src/main/java/com/njcn/system/pojo/po/ReportTemplate.java create mode 100644 pqs-system/system-boot/src/main/java/com/njcn/system/controller/ReportTemplateController.java create mode 100644 pqs-system/system-boot/src/main/java/com/njcn/system/mapper/ReportTemplateMapper.java create mode 100644 pqs-system/system-boot/src/main/java/com/njcn/system/service/ReportTemplateService.java create mode 100644 pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/ReportTemplateServiceImpl.java diff --git a/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/mapper/InfluxDBResultMapperCn.java b/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/mapper/InfluxDBResultMapperCn.java index 3c0bc4382..05d364fa1 100644 --- a/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/mapper/InfluxDBResultMapperCn.java +++ b/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/mapper/InfluxDBResultMapperCn.java @@ -309,7 +309,7 @@ public class InfluxDBResultMapperCn { if (String.class.isAssignableFrom(fieldType)) { if("timeId".equals(field.getName()) || "time".equals(field.getName())){ LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.from(DateTimeFormatter.ISO_DATE_TIME.parse(String.valueOf(value))), ZoneId.systemDefault()); - String time = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + String time = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")); field.set(object,time); }else { field.set(object, String.valueOf(value)); diff --git a/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/utils/InfluxDBCommUtils.java b/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/utils/InfluxDBCommUtils.java index d19fb9778..e5593181e 100644 --- a/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/utils/InfluxDBCommUtils.java +++ b/pqs-common/common-influxdb/src/main/java/com/njcn/influxdb/utils/InfluxDBCommUtils.java @@ -1,16 +1,20 @@ package com.njcn.influxdb.utils; import org.springframework.stereotype.Component; +import org.springframework.validation.annotation.Validated; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; import java.util.List; /** * pqs - * + * 传入终端id集合返回influxdb使用sql * @author cdf * @date 2022/7/1 */ @Component +@Validated public class InfluxDBCommUtils { /** @@ -19,7 +23,7 @@ public class InfluxDBCommUtils { * @param lineIds 监测点参数 * @return StringBuilder */ - public static StringBuilder assToInfluxParam(List lineIds){ + public static StringBuilder assToInfluxParam(@NotEmpty List lineIds){ StringBuilder lineIdsStr = new StringBuilder("("); for (int i = 0; i < lineIds.size(); i++) { if (lineIds.size() - i != 1) { @@ -30,4 +34,23 @@ public class InfluxDBCommUtils { } return lineIdsStr; } + + + /** + * 组装为influxdb监测点参数 + * + * @param devIds 设备ids参数 + * @return StringBuilder + */ + public static StringBuilder assToInfluxParamDev(@NotEmpty List devIds){ + StringBuilder lineIdsStr = new StringBuilder("("); + for (int i = 0; i < devIds.size(); i++) { + if (devIds.size() - i != 1) { + lineIdsStr.append("dev_id ='").append(devIds.get(i)).append("' or "); + } else { + lineIdsStr.append("dev_id ='").append(devIds.get(i)).append("') "); + } + } + return lineIdsStr; + } } diff --git a/pqs-common/common-microservice/src/main/java/com/njcn/microservice/compent/NacosWeightLoadBalanceRule.java b/pqs-common/common-microservice/src/main/java/com/njcn/microservice/compent/NacosWeightLoadBalanceRule.java index bdc7a6f62..30a4665df 100644 --- a/pqs-common/common-microservice/src/main/java/com/njcn/microservice/compent/NacosWeightLoadBalanceRule.java +++ b/pqs-common/common-microservice/src/main/java/com/njcn/microservice/compent/NacosWeightLoadBalanceRule.java @@ -1,3 +1,4 @@ +/* package com.njcn.microservice.compent; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; @@ -12,17 +13,19 @@ import com.netflix.loadbalancer.Server; import javax.annotation.Resource; +*/ /** * 自定义负载均衡算法 - */ + *//* + public class NacosWeightLoadBalanceRule extends AbstractLoadBalancerRule { - + @Override public void initWithNiwsConfig(IClientConfig clientConfig) {} - + @Resource private NacosDiscoveryProperties nacosDiscoveryProperties; - + @Override public Server choose(Object key) { // 1.获取服务的名称 @@ -38,4 +41,4 @@ public class NacosWeightLoadBalanceRule extends AbstractLoadBalancerRule { } return null; } -} \ No newline at end of file +}*/ diff --git a/pqs-common/common-microservice/src/main/java/com/njcn/microservice/config/RibbonConfig.java b/pqs-common/common-microservice/src/main/java/com/njcn/microservice/config/RibbonConfig.java index 74109d567..2c866fdb4 100644 --- a/pqs-common/common-microservice/src/main/java/com/njcn/microservice/config/RibbonConfig.java +++ b/pqs-common/common-microservice/src/main/java/com/njcn/microservice/config/RibbonConfig.java @@ -1,3 +1,4 @@ +/* package com.njcn.microservice.config; import com.netflix.loadbalancer.IRule; @@ -5,11 +6,13 @@ import com.njcn.microservice.compent.NacosWeightLoadBalanceRule; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +*/ /** * @author hongawen * @version 1.0.0 * @date 2022年08月25日 19:53 - */ + *//* + @Configuration public class RibbonConfig { @@ -20,3 +23,4 @@ public class RibbonConfig { } +*/ diff --git a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/DeviceInfoParam.java b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/DeviceInfoParam.java index 57e541af4..1bc52d1ac 100644 --- a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/DeviceInfoParam.java +++ b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/DeviceInfoParam.java @@ -136,6 +136,9 @@ public class DeviceInfoParam implements Serializable { @Pattern(regexp = PatternRegex.TIME_FORMAT, message = "时间格式错误") private String searchEndTime; + @ApiModelProperty("时间范围标志 0.查询展示天 1.查询展示月") + private Integer timeFlag; + } @Data @@ -152,20 +155,5 @@ public class DeviceInfoParam implements Serializable { } - @Data - @EqualsAndHashCode(callSuper = true) - public static class ConditionBusinessParam extends BusinessParam{ - - /** - * 0-年份 - * 1-月份 - * 2-天 - */ - @ApiModelProperty("时间间隔标识(0:按月查 1:按天查 2:查询当日)") - @Range(min = 0, max = 2, message = "时间间隔标识" + ValidMessage.PARAM_FORMAT_ERROR) - private int timeFlag; - - } - } diff --git a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/RunManageParam.java b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/RunManageParam.java index 763df278c..9feb748a5 100644 --- a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/RunManageParam.java +++ b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/param/RunManageParam.java @@ -26,7 +26,6 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = true) @ApiModel -@NoArgsConstructor public class RunManageParam extends BaseParam implements Serializable { @ApiModelProperty(name = "statisticalType", value = "统计类型") @@ -38,6 +37,7 @@ public class RunManageParam extends BaseParam implements Serializable { private String deptIndex; @ApiModelProperty(name = "serverName", value = "服务名称") + @NotBlank(message = "服务名称不可为空") private String serverName; @ApiModelProperty(name = "scale", value = "电压等级") @@ -56,7 +56,7 @@ public class RunManageParam extends BaseParam implements Serializable { */ @ApiModelProperty("网公司标识") @Range(min = 0, max = 2, message = "网公司标识" + ValidMessage.PARAM_FORMAT_ERROR) - private int monitorFlag; + private Integer monitorFlag; /** * 0-电网侧 @@ -64,14 +64,12 @@ public class RunManageParam extends BaseParam implements Serializable { */ @ApiModelProperty("电网侧标识") @Range(min = 0, max = 2, message = "电网侧标识" + ValidMessage.PARAM_FORMAT_ERROR) - private int powerFlag; + private Integer powerFlag; @ApiModelProperty(name = "comFlag", value = "通讯状态") - @NotNull(message = "通讯状态不可为空") private List comFlag; @ApiModelProperty(name = "runFlag", value = "终端状态") - @NotNull(message = "终端状态不可为空") private List runFlag; } diff --git a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/AreaLineInfoVO.java b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/AreaLineInfoVO.java index 5b84fca3f..c4c858afe 100644 --- a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/AreaLineInfoVO.java +++ b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/AreaLineInfoVO.java @@ -26,6 +26,9 @@ public class AreaLineInfoVO implements Serializable { @ApiModelProperty(name = "subName",value = "变电站名称") private String subName; + @ApiModelProperty(name = "subScale",value = "变电站电压等级") + private String subScale; + @ApiModelProperty(name = "gdId",value = "供电公司id") private String gdId; diff --git a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/LineInfluxDbOnlineVO.java b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/LineInfluxDbOnlineVO.java index 4de73f5e6..a47c4797f 100644 --- a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/LineInfluxDbOnlineVO.java +++ b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/LineInfluxDbOnlineVO.java @@ -17,7 +17,7 @@ public class LineInfluxDbOnlineVO implements Serializable { @Column(name = "dev_id") private String devIndex; - @Column(name = "onlinerate") + @Column(name = "online_rate") private Double onlineRate; diff --git a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/RunTimeVO.java b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/RunTimeVO.java index 108c59e65..230daa290 100644 --- a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/RunTimeVO.java +++ b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/RunTimeVO.java @@ -59,5 +59,5 @@ public class RunTimeVO implements Serializable { private String updateTime; @ApiModelProperty(name = "onlineEvaluate",value = "在线率评价") - private Float onlineEvaluate; + private Double onlineEvaluate; } diff --git a/pqs-device/device-boot/src/main/java/com/njcn/device/controller/OperationContrController.java b/pqs-device/device-boot/src/main/java/com/njcn/device/controller/OperationContrController.java index 64aa7de1c..99867a67f 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/device/controller/OperationContrController.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/device/controller/OperationContrController.java @@ -101,7 +101,7 @@ public class OperationContrController extends BaseController { @PostMapping("/getComunicateStatics") @ApiOperation("获取中断异常统计") @ApiImplicitParam(name = "conditionBusinessParam", value = "实体", required = true) - public HttpResult getComunicateStatics(@RequestBody @Validated DeviceInfoParam.ConditionBusinessParam conditionBusinessParam) { + public HttpResult getComunicateStatics(@RequestBody @Validated DeviceInfoParam.BusinessParam conditionBusinessParam) { String methodDescribe = getMethodDescribe("getComunicateStatics"); DeviceAbnormalVO result = lineService.getComunicateStatics(conditionBusinessParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); diff --git a/pqs-device/device-boot/src/main/java/com/njcn/device/controller/RunManageController.java b/pqs-device/device-boot/src/main/java/com/njcn/device/controller/RunManageController.java index 66d65bc2a..7475c7633 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/device/controller/RunManageController.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/device/controller/RunManageController.java @@ -1,5 +1,6 @@ package com.njcn.device.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; @@ -44,10 +45,10 @@ public class RunManageController extends BaseController { @PostMapping("/getLineLedger") @ApiOperation("监测点台账信息") @ApiImplicitParam(name = "runManageParam", value = "监测点台账参数", required = true) - public HttpResult> getLineLedger(@RequestBody @Validated RunManageParam runManageParam) { + public HttpResult> getLineLedger(@RequestBody @Validated RunManageParam runManageParam) { String methodDescribe = getMethodDescribe("getLineLedger"); - List result = runManageService.getLineLedger(runManageParam); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + Page res = runManageService.getLineLedger(runManageParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, res, methodDescribe); } @OperateInfo(info = LogEnum.BUSINESS_COMMON) diff --git a/pqs-device/device-boot/src/main/java/com/njcn/device/mapper/DeviceMapper.java b/pqs-device/device-boot/src/main/java/com/njcn/device/mapper/DeviceMapper.java index c84e37d7f..fe57e24e7 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/device/mapper/DeviceMapper.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/device/mapper/DeviceMapper.java @@ -2,6 +2,7 @@ package com.njcn.device.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.device.pojo.po.Device; import com.njcn.device.pojo.vo.RunManageVO; import com.njcn.device.pojo.vo.RunTimeVO; @@ -34,7 +35,7 @@ public interface DeviceMapper extends BaseMapper { * @param runFlag 状态 * @return 结果 */ - List getRunManageList(@Param("list") List list, @Param("comFlag")List comFlag, @Param("runFlag")List runFlag); + Page getRunManageList(@Param("page") Page page, @Param("list") List list, @Param("comFlag")List comFlag, @Param("runFlag")List runFlag); /** * 获取监测点台账信息 diff --git a/pqs-device/device-boot/src/main/java/com/njcn/device/mapper/mapping/DeviceMapper.xml b/pqs-device/device-boot/src/main/java/com/njcn/device/mapper/mapping/DeviceMapper.xml index 7c73394a7..c460db986 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/device/mapper/mapping/DeviceMapper.xml +++ b/pqs-device/device-boot/src/main/java/com/njcn/device/mapper/mapping/DeviceMapper.xml @@ -143,21 +143,21 @@ INNER JOIN pq_line sub ON sub.Id = dev.Pid INNER JOIN pq_line gd ON gd.Id = sub.Pid INNER JOIN pq_line areaId ON areaId.Id = gd.Pid - INNER JOIN sys_area area ON area.Id = areaId. - NAME INNER JOIN pq_device device ON device.Id = dev.Id + INNER JOIN sys_area area ON area.Id = areaId.NAME + INNER JOIN pq_device device ON device.Id = dev.Id INNER JOIN sys_dict_data manufacturerId ON manufacturerId.Id = device.Manufacturer INNER JOIN sys_dict_data devT ON devT.Id = device.Dev_Type WHERE dev.Id in #{item} - + and device.Run_Flag in #{item1} - + and device.Com_Flag in #{item2} diff --git a/pqs-device/device-boot/src/main/java/com/njcn/device/mapper/mapping/LineMapper.xml b/pqs-device/device-boot/src/main/java/com/njcn/device/mapper/mapping/LineMapper.xml index 4cd89c727..6b58bbe1c 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/device/mapper/mapping/LineMapper.xml +++ b/pqs-device/device-boot/src/main/java/com/njcn/device/mapper/mapping/LineMapper.xml @@ -481,6 +481,7 @@ gd.`Name` gdName, substation.id subId, substation.`Name` subName, + subscale.name subScale, pqdevice.IP ip, pqdevice.Com_Flag comFlag, factory.`Name` manufacturer, @@ -520,7 +521,7 @@ AND pqdevice.Manufacturer = factory.id AND device.pid = substation.id AND substation.id = pqsubstation.id - AND pqsubstation.Scale = subscale.id + AND pqsubstation.scale = subscale.id AND substation.pid = gd.id AND detail.load_type = loadtype.id AND line.Id IN @@ -534,13 +535,6 @@ or substation.name like CONCAT('%', #{searchValue},'%') or gd.name like CONCAT('%', #{searchValue},'%')) - - and (line.name like CONCAT('%', #{searchValue},'%') - or voltage.name like CONCAT('%', #{searchValue},'%') - or device.name like CONCAT('%', #{searchValue},'%') - or substation.name like CONCAT('%', #{searchValue},'%') - or gd.name like CONCAT('%', #{searchValue},'%')) - and pqdevice.com_flag = #{comFlag} diff --git a/pqs-device/device-boot/src/main/java/com/njcn/device/service/LineService.java b/pqs-device/device-boot/src/main/java/com/njcn/device/service/LineService.java index 80b924bec..74889298f 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/device/service/LineService.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/device/service/LineService.java @@ -146,6 +146,6 @@ public interface LineService { * @param deviceInfoParam 参数 * @return 结果 */ - DeviceAbnormalVO getComunicateStatics(DeviceInfoParam.ConditionBusinessParam deviceInfoParam); + DeviceAbnormalVO getComunicateStatics(DeviceInfoParam.BusinessParam deviceInfoParam); } diff --git a/pqs-device/device-boot/src/main/java/com/njcn/device/service/RunManageService.java b/pqs-device/device-boot/src/main/java/com/njcn/device/service/RunManageService.java index af4323ef2..be3889a7f 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/device/service/RunManageService.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/device/service/RunManageService.java @@ -1,5 +1,6 @@ package com.njcn.device.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.device.pojo.param.DeviceInfoParam; import com.njcn.device.pojo.param.RunManageParam; import com.njcn.device.pojo.param.TerminalLedgerParam; @@ -20,7 +21,7 @@ public interface RunManageService { * @param runManageParam 参数 * @return 结果 */ - List getLineLedger(RunManageParam runManageParam); + Page getLineLedger(RunManageParam runManageParam); /** * 获取终端台账信息 diff --git a/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/LineServiceImpl.java b/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/LineServiceImpl.java index 9cf7b2272..0f1283b85 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/LineServiceImpl.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/LineServiceImpl.java @@ -672,7 +672,7 @@ public class LineServiceImpl extends ServiceImpl implements Li @SneakyThrows @Override - public DeviceAbnormalVO getComunicateStatics(DeviceInfoParam.ConditionBusinessParam conditionBusinessParam) { + public DeviceAbnormalVO getComunicateStatics(DeviceInfoParam.BusinessParam conditionBusinessParam) { DeviceAbnormalVO deviceAbnormalVO = new DeviceAbnormalVO(); //获取所有监测点 List generalDeviceDTOList = generalDeviceService.getDeviceInfo(conditionBusinessParam, null, Stream.of(1).collect(Collectors.toList())); diff --git a/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/RunManageServiceImpl.java b/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/RunManageServiceImpl.java index d39eeeaec..2bd1b8da5 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/RunManageServiceImpl.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/RunManageServiceImpl.java @@ -4,8 +4,12 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.dto.SimpleDTO; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.utils.PubUtils; +import com.njcn.device.enums.DeviceResponseEnum; import com.njcn.device.enums.LineBaseEnum; import com.njcn.device.mapper.DeviceMapper; import com.njcn.device.mapper.LineDetailMapper; @@ -16,34 +20,37 @@ import com.njcn.device.pojo.param.RunManageParam; import com.njcn.device.pojo.po.Device; import com.njcn.device.pojo.po.Line; import com.njcn.device.pojo.po.LineDetail; +import com.njcn.device.pojo.po.pv.PvVoltage; import com.njcn.device.pojo.vo.*; import com.njcn.device.service.LineService; import com.njcn.device.service.RunManageService; import com.njcn.device.service.TerminalBaseService; +import com.njcn.influxdb.mapper.InfluxDBResultMapperCn; +import com.njcn.influxdb.utils.InfluxDBCommUtils; import com.njcn.influxdb.utils.InfluxDbUtils; import com.njcn.system.api.AreaFeignClient; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.enums.DicDataTypeEnum; import com.njcn.system.pojo.enums.StatisticsEnum; import com.njcn.system.pojo.po.DictData; +import com.njcn.web.factory.PageFactory; import com.njcn.web.pojo.vo.LineDataVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.influxdb.dto.QueryResult; +import org.influxdb.impl.InfluxDBResultMapper; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; import static com.njcn.influxdb.param.InfluxDBPublicParam.*; +import static org.influxdb.querybuilder.BuiltQuery.QueryBuilder.select; /** * @author denghuajun @@ -61,68 +68,56 @@ public class RunManageServiceImpl implements RunManageService { private final DeviceMapper deviceMapper; - private final LineMapper lineMapper; - private final DicDataFeignClient dicDataFeignClient; private final TerminalBaseService terminalBaseService; private final LineDetailMapper lineDetailMapper; - private final AreaFeignClient areaFeignClient; - private final InfluxDbUtils influxDbUtils; @Override - public List getLineLedger(RunManageParam runManageParam) { - List runManageVOList = new ArrayList<>(); + public Page getLineLedger(RunManageParam runManageParam) { DeviceInfoParam deviceInfoParam = new DeviceInfoParam(); BeanUtil.copyProperties(runManageParam, deviceInfoParam); List generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, runManageParam.getRunFlag(), Stream.of(1).collect(Collectors.toList())); - List lineIndexes = new ArrayList<>(); - if (!CollectionUtils.isEmpty(generalDeviceDTOList)) { - for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { - lineIndexes.addAll(generalDeviceDTO.getLineIndexes()); - } - List list = deviceMapper.getRunManageList(lineIndexes, runManageParam.getComFlag(), runManageParam.getRunFlag()); - runManageVOList = list.stream().skip((runManageParam.getPageNum() - 1) * runManageParam.getPageSize()).limit(runManageParam.getPageSize()). - collect(Collectors.toList()); - int i = 1; - for (RunManageVO runManageVO : runManageVOList) { - runManageVO.setRunNo(i); - i++; - } + List lineIndexes = generalDeviceDTOList.stream().flatMap(list->list.getLineIndexes().stream()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(lineIndexes)) { + Page page = new Page<>(PageFactory.getPageNum(runManageParam),PageFactory.getPageSize(runManageParam)); + return deviceMapper.getRunManageList(page,lineIndexes, runManageParam.getComFlag(), runManageParam.getRunFlag()); + }else { + throw new BusinessException(CommonResponseEnum.FAIL); } - return runManageVOList; } @Override public List getRuntimeDetail(RunManageParam runManageParam) { - List runTimeVOList = new ArrayList<>(); + List runManageDevList = new ArrayList<>(); DeviceInfoParam deviceInfoParam = new DeviceInfoParam(); BeanUtil.copyProperties(runManageParam, deviceInfoParam); - List generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, Stream.of(0).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList())); - List devIndexes = new ArrayList<>(); + List generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, runManageParam.getRunFlag(), Stream.of(1).collect(Collectors.toList())); + if (!CollectionUtils.isEmpty(generalDeviceDTOList)) { - for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { - devIndexes.addAll(generalDeviceDTO.getDeviceIndexes()); - } - List list = deviceMapper.getRunManageDevList(devIndexes, runManageParam.getComFlag(), runManageParam.getRunFlag()); - runTimeVOList = list.stream().skip((runManageParam.getPageNum() - 1) * runManageParam.getPageSize()).limit(runManageParam.getPageSize()). - collect(Collectors.toList()); - int i = 1; - for (RunTimeVO runTimeVO : runTimeVOList) { - runTimeVO.setRunNo(i); - //获取在线率 - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - runTimeVO.setOnlineEvaluate(getCondition(formatter.format(DateUtil.lastMonth()), formatter.format(DateUtil.dateNew(new Date())), runTimeVO.getId()) * 100); - i++; + List devIndexes = generalDeviceDTOList.stream().flatMap(list->list.getDeviceIndexes().stream()).collect(Collectors.toList()); + + if(CollectionUtil.isNotEmpty(devIndexes)){ + runManageDevList = deviceMapper.getRunManageDevList(devIndexes, runManageParam.getComFlag(), runManageParam.getRunFlag()); + + StringBuilder devSql = InfluxDBCommUtils.assToInfluxParamDev(devIndexes); + String stringBuilder = "time >= '" + runManageParam.getSearchBeginTime() + "' and " + "time <= '" + runManageParam.getSearchEndTime()+"' and "+devSql+" group by dev_id"; + //sql语句 + String sql = "SELECT MEAN(online_rate) AS online_rate FROM " + PQS_ONLINERATE + " WHERE " + stringBuilder + TIME_ZONE+")"; + QueryResult queryResult = influxDbUtils.query(sql); + + InfluxDBResultMapper inCn = new InfluxDBResultMapper(); + List lineInfluxDbOnlineVOList = inCn.toPOJO(queryResult,LineInfluxDbOnlineVO.class); + runManageDevList = runManageDevList.stream().peek(item-> lineInfluxDbOnlineVOList.stream().filter(it-> Objects.equals(item.getId(),it.getDevIndex())).findFirst().ifPresent(i->item.setOnlineEvaluate(i.getOnlineRate()))).collect(Collectors.toList()); } } - return runTimeVOList; + return runManageDevList; } - private Float getCondition(String startTime, String endTime, String lineId) { + /* private Float getCondition(String startTime, String endTime, String lineId) { final Float[] floatList = {0.0f}; QueryResult queryResult; if (!lineId.isEmpty()) { @@ -148,7 +143,7 @@ public class RunManageServiceImpl implements RunManageService { } return floatList[0]; - } + }*/ @Override public List getTerminalLedger(DeviceInfoParam deviceInfoParam) { diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/EventDetailNew.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/EventDetailNew.java index 18305011b..9ee1a9dcf 100644 --- a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/EventDetailNew.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/EventDetailNew.java @@ -3,6 +3,9 @@ package com.njcn.event.pojo.po; import lombok.Data; import org.influxdb.annotation.Column; import org.influxdb.annotation.Measurement; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.Instant; /** * @author cdf @@ -18,7 +21,8 @@ public class EventDetailNew { private String lineId; @Column(name = "time") - private String timeId; + @DateTimeFormat(pattern = "yyyy-mm-dd") + private Instant timeId; @Column(name = "event_describe") private String eventDescribe; diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/AreaLineServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/AreaLineServiceImpl.java index 5df6680b5..89b312cd2 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/AreaLineServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/AreaLineServiceImpl.java @@ -23,7 +23,6 @@ import com.njcn.event.service.EventDetailService; import com.njcn.influxdb.param.InfluxDBPublicParam; import com.njcn.influxdb.utils.InfluxDbUtils; import com.njcn.system.pojo.enums.StatisticsEnum; -import com.sun.org.apache.regexp.internal.RE; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.influxdb.dto.QueryResult; diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/enums/HarmonicResponseEnum.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/enums/HarmonicResponseEnum.java index cd370245f..8977abe1b 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/enums/HarmonicResponseEnum.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/enums/HarmonicResponseEnum.java @@ -23,7 +23,9 @@ public enum HarmonicResponseEnum { CUSTOM_REPORT_JSON("A00553","模板非严格json数据"), CUSTOM_REPORT_DEPT("A00554","该部门已存在绑定报表模板"), - CUSTOM_TYPE("A00555","字典中未查询到报表模板类型") + CUSTOM_TYPE("A00555","字典中未查询到报表模板类型"), + CUSTOM_REPORT_ACTIVE("A00556","不存在激活的自定义报告模板"), + CUSTOM_REPORT_EMPTY("A00557","自定义报表模板异常,模板数据为空"), ; private final String code; diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/ReportQueryParam.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/ReportQueryParam.java new file mode 100644 index 000000000..1d23b33dc --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/ReportQueryParam.java @@ -0,0 +1,30 @@ +package com.njcn.harmonic.pojo.param; + +import com.njcn.web.pojo.annotation.DateTimeStrValid; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * pqs + * + * @author cdf + * @date 2022/8/26 + */ +@Data +public class ReportQueryParam { + + @ApiModelProperty(name = "lineId",value = "监测点id") + private String lineId; + + @ApiModelProperty(name = "startTime",value = "开始时间") + @NotBlank(message = "起始时间不可为空") + @DateTimeStrValid(message = "起始时间格式出错") + private String startTime; + + @ApiModelProperty(name = "endTime",value = "结束时间") + @NotBlank(message = "结束时间不可为空") + private String endTime; + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/CustomReportController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/CustomReportController.java index 6c6551975..767ad7147 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/CustomReportController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/CustomReportController.java @@ -9,6 +9,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.LogUtil; +import com.njcn.harmonic.pojo.param.ReportQueryParam; import com.njcn.harmonic.pojo.param.ReportTemplateParam; import com.njcn.harmonic.pojo.po.ReportTemplate; import com.njcn.harmonic.pojo.vo.OverAreaLimitVO; @@ -166,10 +167,10 @@ public class CustomReportController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getCustomReport") @ApiOperation("获取报表") - @ApiImplicitParam(name = "id", value = "id", required = true) - public HttpResult getCustomReport(@RequestParam("id") String id){ + @ApiImplicitParam(name = "reportQueryParam", value = "查询体", required = true) + public HttpResult getCustomReport(@RequestBody @Validated ReportQueryParam reportQueryParam){ String methodDescribe = getMethodDescribe("getCustomReport"); - JSONArray res = customReportService.getCustomReport(); + String res = customReportService.getCustomReport(reportQueryParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, res, methodDescribe); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/SteadyExceedRateController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/SteadyExceedRateController.java index 812ae30a0..2da6d4006 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/SteadyExceedRateController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/SteadyExceedRateController.java @@ -52,7 +52,7 @@ public class SteadyExceedRateController extends BaseController { @PostMapping("/getSteadyExceedRateCensus") @ApiOperation("稳态超标占比图表") @ApiImplicitParam(name = "steadyExceedCensusParam", value = "稳态超标占比参数", required = true) - public HttpResult getSteadyExceedRateCensus(@RequestBody @Validated DeviceInfoParam.ConditionBusinessParam steadyExceedCensusParam){ + public HttpResult getSteadyExceedRateCensus(@RequestBody @Validated DeviceInfoParam.BusinessParam steadyExceedCensusParam){ String methodDescribe = getMethodDescribe("getSteadyExceedRateCensus"); SteadyExceedRateCensusVO censusVO = steadyExceedRateService.getSteadyExceedRateCensus(steadyExceedCensusParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, censusVO, methodDescribe); diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/CustomReportService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/CustomReportService.java index d3c718665..187cca084 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/CustomReportService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/CustomReportService.java @@ -3,6 +3,7 @@ package com.njcn.harmonic.service; import cn.hutool.json.JSONArray; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.response.HttpResult; +import com.njcn.harmonic.pojo.param.ReportQueryParam; import com.njcn.harmonic.pojo.param.ReportTemplateParam; import com.njcn.harmonic.pojo.po.ReportTemplate; import com.njcn.harmonic.pojo.vo.ReportTemplateVO; @@ -16,7 +17,7 @@ import java.util.List; /** * pqs - * + * 自定义报表 * @author cdf * @date 2022/8/16 */ @@ -69,7 +70,20 @@ public interface CustomReportService { boolean updateStatus(String id); - JSONArray getCustomReport(); + /** + * 查询报告 + * @param reportQueryParam 请求参数 + * @return JSONArray + * @author cdf + * @date 2022/8/26 + */ + String getCustomReport(ReportQueryParam reportQueryParam); + + /** + * 查询报告模板树节点 + * @author cdf + * @date 2022/8/26 + */ List reportChooseTree(); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/SteadyExceedRateService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/SteadyExceedRateService.java index 7abb16575..2e4aae97f 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/SteadyExceedRateService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/SteadyExceedRateService.java @@ -25,6 +25,6 @@ public interface SteadyExceedRateService { * @param steadyExceedCensusParam * @return */ - SteadyExceedRateCensusVO getSteadyExceedRateCensus(DeviceInfoParam.ConditionBusinessParam steadyExceedCensusParam); + SteadyExceedRateCensusVO getSteadyExceedRateCensus(DeviceInfoParam.BusinessParam steadyExceedCensusParam); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java index 11ba5e37f..5dad28ddd 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -14,8 +15,10 @@ import com.njcn.harmonic.enums.HarmonicResponseEnum; import com.njcn.harmonic.mapper.CustomReportMapper; import com.njcn.harmonic.mapper.EleEpdMapper; import com.njcn.harmonic.pojo.dto.ReportTemplateDTO; +import com.njcn.harmonic.pojo.param.ReportQueryParam; import com.njcn.harmonic.pojo.param.ReportTemplateParam; import com.njcn.harmonic.pojo.po.EleEpdPqd; +import com.njcn.harmonic.pojo.po.EventDetail; import com.njcn.harmonic.pojo.po.ReportTemplate; import com.njcn.harmonic.pojo.vo.ReportTemplateVO; import com.njcn.harmonic.pojo.vo.ReportTreeVO; @@ -106,7 +109,7 @@ public class CustomReportServiceImpl implements CustomReportService { @Override public Page getReportTemplateList(BaseParam baseParam) { - return customReportMapper.getReportTemplateList(new Page<>(PageFactory.getPageNum(baseParam),PageFactory.getPageSize(baseParam)),baseParam); + return customReportMapper.getReportTemplateList(new Page<>(PageFactory.getPageNum(baseParam), PageFactory.getPageSize(baseParam)), baseParam); } @Override @@ -124,8 +127,8 @@ public class CustomReportServiceImpl implements CustomReportService { ReportTemplate report = new ReportTemplate(); report.setActive(0); UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("sys_report_template.active",1).eq("sys_report_template.state",1); - customReportMapper.update(report,updateWrapper); + updateWrapper.eq("sys_report_template.active", 1).eq("sys_report_template.state", 1); + customReportMapper.update(report, updateWrapper); ReportTemplate reportTemplate = new ReportTemplate(); reportTemplate.setId(id); @@ -136,204 +139,136 @@ public class CustomReportServiceImpl implements CustomReportService { @Override - public JSONArray getCustomReport() { + public String getCustomReport(ReportQueryParam reportQueryParam) { + + + LambdaQueryWrapper lambdaQuery = new LambdaQueryWrapper<>(); + lambdaQuery.eq(ReportTemplate::getActive, DataStateEnum.ENABLE.getCode()) + .eq(ReportTemplate::getState, DataStateEnum.ENABLE.getCode()); + ReportTemplate tem = customReportMapper.selectOne(lambdaQuery); + + if (Objects.isNull(tem)) { + throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_ACTIVE); + } + List stringList = new ArrayList<>(); List reportTemplateDTOList = new ArrayList<>(); + JSONArray jsonArray = null; + try { + jsonArray = JSONUtil.parseArray(tem.getDocContent()); + jsonArray.forEach(item -> { + JSONObject jsonObject = (JSONObject) item; + JSONArray itemArr = (JSONArray) jsonObject.get("data"); + itemArr.forEach((ite) -> { + JSONArray j = (JSONArray) ite; + j.forEach(it -> { + if (Objects.nonNull(it) && !"null".equals(it.toString())) { + JSONObject son = (JSONObject) it; //获取到1列 + if (son.containsKey("v")) { + String v = son.getStr("v"); + System.out.println(v); + if (v.charAt(0) == '$' && v.contains("#")) { + v = v.replace("$", ""); - LambdaQueryWrapper lambdaQuery= new LambdaQueryWrapper<>(); - lambdaQuery.eq(ReportTemplate::getActive,DataStateEnum.ENABLE.getCode()) - .eq(ReportTemplate::getState,DataStateEnum.ENABLE.getCode()); - ReportTemplate tem = customReportMapper.selectOne(lambdaQuery); - JSONArray jsonArray = new JSONArray(tem.getDocContent()); - jsonArray.forEach(item->{ - JSONObject jsonObject = (JSONObject)item; - JSONArray itemArr = (JSONArray) jsonObject.get("data"); - itemArr.forEach((ite)->{ - JSONArray j = (JSONArray)ite; - j.forEach(it->{ - if (Objects.nonNull(it) && !"null".equals(it.toString())) { - JSONObject son = (JSONObject) it; //获取到1列 - if (son.containsKey("v")) { - String v = son.getStr("v"); - System.out.println(v); - if (v.charAt(0) == '$' && v.contains("#")) { - v=v.replace("$",""); + String[] vItem = v.split("#"); - String[] vItem = v.split("#"); + ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO(); + reportTemplateDTO.setItemName(v); + String t = vItem[0].replace("_", ""); + if (vItem.length == 3) { - ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO(); - reportTemplateDTO.setItemName(v); - String t = vItem[0].replace("_",""); - if(vItem.length == 3){ + reportTemplateDTO.setTemplateName(t); + reportTemplateDTO.setPhase(vItem[1]); + reportTemplateDTO.setStatMethod(vItem[2]); - reportTemplateDTO.setTemplateName(t); - reportTemplateDTO.setPhase(vItem[1]); - reportTemplateDTO.setStatMethod(vItem[2]); - - }else if(vItem.length == 2){ - reportTemplateDTO.setTemplateName(t); - reportTemplateDTO.setStatMethod(vItem[1]); - reportTemplateDTO.setPhase("M"); + } else if (vItem.length == 2) { + reportTemplateDTO.setTemplateName(t); + reportTemplateDTO.setStatMethod(vItem[1]); + reportTemplateDTO.setPhase("M"); + } + if (vItem[0].contains("_")) { + String col = vItem[0].split("_")[0]; + reportTemplateDTO.setName(col); + stringList.add(col); + } else { + reportTemplateDTO.setName(vItem[0]); + stringList.add(vItem[0]); + } + reportTemplateDTOList.add(reportTemplateDTO); } - if (vItem[0].contains("_")) { - String col = vItem[0].split("_")[0]; - reportTemplateDTO.setName(col); - stringList.add(col); - } else { - reportTemplateDTO.setName(vItem[0]); - stringList.add(vItem[0]); - } - reportTemplateDTOList.add(reportTemplateDTO); } } - } + }); }); }); - }); - + } catch (Exception e) { + throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON); + } List endList = new ArrayList<>(); + if(CollUtil.isEmpty(stringList) ||CollUtil.isEmpty(reportTemplateDTOList)){ + throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_EMPTY); + } LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(EleEpdPqd::getName,stringList.stream().distinct().collect(Collectors.toList())).orderByAsc(EleEpdPqd::getSort); + lambdaQueryWrapper.in(EleEpdPqd::getName, stringList.stream().distinct().collect(Collectors.toList())).orderByAsc(EleEpdPqd::getSort); List eleEpdPqdList = eleEpdMapper.selectList(lambdaQueryWrapper); Map> mapEpd = eleEpdPqdList.stream().collect(Collectors.groupingBy(EleEpdPqd::getClassId)); - mapEpd.forEach((key,tableClass)->{ + + if(mapEpd.size() == 0){ + throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_EMPTY); + } + + mapEpd.forEach((key, tableClass) -> { List column = tableClass.stream().map(EleEpdPqd::getName).distinct().collect(Collectors.toList()); - List classList = reportTemplateDTOList.stream().filter(item->column.contains(item.getName())).collect(Collectors.toList()); + List classList = reportTemplateDTOList.stream().filter(item -> column.contains(item.getName())).collect(Collectors.toList()); Map> phaseMap = classList.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getPhase)); //开始组织sql - phaseMap.forEach((phKey,phValue)->{ - - - if("M".equals(phKey)){ - - }else { - Map> statMap = phValue.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getStatMethod)); - statMap.forEach((statKey,statValue)->{ - StringBuilder sql = new StringBuilder("select "); - - if(statKey.equals("max")){ - for(int i = 0;i> resMap = influxDbUtils.getMapResult(sql.toString()); - - if(CollUtil.isNotEmpty(resMap)) { - List temValue = statValue.stream().map(item -> { - String value = resMap.get(0).get(item.getTemplateName()).toString(); - item.setValue(value); - return item; - }).collect(Collectors.toList()); - endList.addAll(temValue); - } - }else if(statKey.equals("min")){ - for(int i = 0;i> resMap = influxDbUtils.getMapResult(sql.toString()); - - if(CollUtil.isNotEmpty(resMap)) { - List temValue = statValue.stream().map(item -> { - String value = resMap.get(0).get(item.getTemplateName()).toString(); - item.setValue(value); - return item; - }).collect(Collectors.toList()); - endList.addAll(temValue); - } - }else if(statKey.equals("avg")){ - for(int i = 0;i> resMap = influxDbUtils.getMapResult(sql.toString()); - - if(CollUtil.isNotEmpty(resMap)) { - List temValue = statValue.stream().map(item -> { - String value = resMap.get(0).get(item.getTemplateName()).toString(); - item.setValue(value); - return item; - }).collect(Collectors.toList()); - endList.addAll(temValue); - } - }else if(statKey.equals("cp95")){ - for(int i = 0;i> resMap = influxDbUtils.getMapResult(sql.toString()); - - if(CollUtil.isNotEmpty(resMap)) { - List temValue = statValue.stream().map(item -> { - String value = resMap.get(0).get(item.getTemplateName()).toString(); - item.setValue(value); - return item; - }).collect(Collectors.toList()); - endList.addAll(temValue); - } - } - - - - }); - - - - } + phaseMap.forEach((phKey, phValue) -> { + Map> statMap = phValue.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getStatMethod)); + statMap.forEach((statKey, statValue) -> { + StringBuilder sql = new StringBuilder("select "); + if ("max".equals(statKey)) { + assSql(statValue, sql, key, phKey, statKey, endList, "MAX",reportQueryParam); + } else if ("min".equals(statKey)) { + assSql(statValue, sql, key, phKey, statKey, endList, "MIN",reportQueryParam); + } else if ("avg".equals(statKey)) { + assSql(statValue, sql, key, phKey, statKey, endList, "MEAN",reportQueryParam); + } else if ("cp95".equals(statKey)) { + assSql(statValue, sql, key, phKey, statKey, endList, "PERCENTILE",reportQueryParam); + } + }); }); }); + if(CollUtil.isEmpty(endList)){ + throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_EMPTY); + } + //进行反向赋值到模板 Map> assMap = endList.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getItemName)); - jsonArray.forEach(item->{ - JSONObject jsonObject = (JSONObject)item; + jsonArray.forEach(item -> { + JSONObject jsonObject = (JSONObject) item; JSONArray itemArr = (JSONArray) jsonObject.get("data"); - itemArr.forEach((ite)->{ - JSONArray j = (JSONArray)ite; - j.forEach(it->{ + itemArr.forEach((ite) -> { + JSONArray j = (JSONArray) ite; + j.forEach(it -> { if (Objects.nonNull(it) && !"null".equals(it.toString())) { JSONObject son = (JSONObject) it; //获取到1列 if (son.containsKey("v")) { String v = son.getStr("v"); System.out.println(v); if (v.charAt(0) == '$' && v.contains("#")) { - - String str = assMap.get(v.replace("$","")).get(0).getValue(); - son.set("v",str); - son.set("m",str); + String str = assMap.get(v.replace("$", "")).get(0).getValue(); + son.set("v", str); + son.set("m", str); } } } @@ -342,7 +277,30 @@ public class CustomReportServiceImpl implements CustomReportService { }); - return jsonArray; + return jsonArray.toString(); + } + + + private void assSql(List statValue, StringBuilder sql, String key, String phKey, String statKey, List endList, String tag,ReportQueryParam reportQueryParam) { + for (int i = 0; i < statValue.size(); i++) { + if (i == statValue.size() - 1) { + sql.append(tag).append("(").append(statValue.get(i).getTemplateName()).append(") as ").append(statValue.get(i).getTemplateName()); + } else { + sql.append(tag).append("(").append(statValue.get(i).getTemplateName()).append(") as ").append(statValue.get(i).getTemplateName()).append(","); + } + } + + sql.append(" from ").append(key).append(" where Phase = '").append(phKey).append("' and time>='").append(reportQueryParam.getStartTime()).append(InfluxDBPublicParam.START_TIME).append("' and time<='").append(reportQueryParam.getEndTime()).append(InfluxDBPublicParam.END_TIME).append("' and LineId='").append(reportQueryParam.getLineId()).append("' and Stat_Method='").append(statKey).append("'").append(InfluxDBPublicParam.TIME_ZONE); + List> resMap = influxDbUtils.getMapResult(sql.toString()); + + if (CollUtil.isNotEmpty(resMap)) { + List temValue = statValue.stream().map(item -> { + String value = resMap.get(0).get(item.getTemplateName()).toString(); + item.setValue(value); + return item; + }).collect(Collectors.toList()); + endList.addAll(temValue); + } } @Override @@ -368,12 +326,12 @@ public class CustomReportServiceImpl implements CustomReportService { reportTreeCount.setName(value.get(0).getName() + "_" + i); reportTreeCount.setShowName(i + "次" + value.get(0).getShowName()); reportTreeVO.setFlag(1); - assPhase(value, reportTreeCount); + assPhase(value, reportTreeCount,reportTreeCount.getName()); reHarm.add(reportTreeCount); } reportTreeVO.setChildren(reHarm); } else { - assPhase(value, reportTreeVO); + assPhase(value, reportTreeVO,key); } tree.add(reportTreeVO); }); @@ -384,8 +342,8 @@ public class CustomReportServiceImpl implements CustomReportService { } - /*组装相别*/ - private void assPhase(List value, ReportTreeVO reportTreeItem) { + /*组装相别*/ + private void assPhase(List value, ReportTreeVO reportTreeItem,String key) { if (Objects.nonNull(value.get(0).getPhase()) && !"M".equals(value.get(0).getPhase())) { List phaseTree = new ArrayList<>(); value.forEach(item -> { @@ -394,20 +352,20 @@ public class CustomReportServiceImpl implements CustomReportService { reportTreePhase.setName(item.getPhase()); reportTreePhase.setShowName(item.getPhase()); - assStatMethod(item, statTree); + assStatMethod(item, statTree,key,item.getPhase()); reportTreePhase.setChildren(statTree); phaseTree.add(reportTreePhase); }); reportTreeItem.setChildren(phaseTree); } else { List statTree = new ArrayList<>(); - assStatMethod(value.get(0), statTree); + assStatMethod(value.get(0), statTree,key,""); reportTreeItem.setChildren(statTree); } } - private void assStatMethod(EleEpdPqd item, List statTree) { + private void assStatMethod(EleEpdPqd item, List statTree,String oneKey,String twoKey) { //存在向别为M但是Stat_Method不为空 if (StrUtil.isNotBlank(item.getStatMethod())) { String[] arr = item.getStatMethod().split(","); @@ -415,7 +373,12 @@ public class CustomReportServiceImpl implements CustomReportService { if (CollUtil.isNotEmpty(stat)) { stat.forEach(statItem -> { ReportTreeVO reportTreeStat = new ReportTreeVO(); - reportTreeStat.setName(statItem); + if(StrUtil.isNotBlank(twoKey)){ + reportTreeStat.setName("$"+oneKey+"#"+twoKey+"#"+statItem+"$"); + }else { + reportTreeStat.setName("$"+oneKey+"#"+statItem+"$"); + } + reportTreeStat.setShowName(statItem); statTree.add(reportTreeStat); }); @@ -441,16 +404,15 @@ public class CustomReportServiceImpl implements CustomReportService { } - - if(StrUtil.isNotBlank(reportTemplateParam.getDeptId())){ + if (StrUtil.isNotBlank(reportTemplateParam.getDeptId())) { Dept dept = deptFeignClient.getDeptById(reportTemplateParam.getDeptId()).getData(); - if(Objects.isNull(dept)){ + if (Objects.isNull(dept)) { throw new BusinessException(CommonResponseEnum.FAIL); } lambdaQueryWrapper.clear(); - lambdaQueryWrapper.eq(ReportTemplate::getDeptId,reportTemplateParam.getDeptId()) - .eq(ReportTemplate::getState,DataStateEnum.ENABLE.getCode()); + lambdaQueryWrapper.eq(ReportTemplate::getDeptId, reportTemplateParam.getDeptId()) + .eq(ReportTemplate::getState, DataStateEnum.ENABLE.getCode()); if (isUpdate) { if (reportTemplateParam instanceof ReportTemplateParam.UpdateReportTemplateParam) { @@ -459,7 +421,7 @@ public class CustomReportServiceImpl implements CustomReportService { } int countDept = customReportMapper.selectCount(lambdaQueryWrapper); - if(countDept>0){ + if (countDept > 0) { throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_DEPT); } } @@ -467,7 +429,7 @@ public class CustomReportServiceImpl implements CustomReportService { DictData dictData = dicDataFeignClient.getDicDataById(reportTemplateParam.getReportType()).getData(); - if(Objects.isNull(dictData)){ + if (Objects.isNull(dictData)) { throw new BusinessException(HarmonicResponseEnum.CUSTOM_TYPE); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyExceedRateServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyExceedRateServiceImpl.java index 50820587f..50b341657 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyExceedRateServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyExceedRateServiceImpl.java @@ -72,7 +72,7 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService { @Override - public SteadyExceedRateCensusVO getSteadyExceedRateCensus(DeviceInfoParam.ConditionBusinessParam steadyExceedCensusParam) { + public SteadyExceedRateCensusVO getSteadyExceedRateCensus(DeviceInfoParam.BusinessParam steadyExceedCensusParam) { SteadyExceedRateCensusVO steadyExceedRateCensusVO = new SteadyExceedRateCensusVO(); List type = new ArrayList<>(), time = new ArrayList<>(); List> steadyExceedList = new ArrayList<>(); 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 1c91dde0b..2d3c5cc89 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 @@ -29,6 +29,8 @@ public enum SystemResponseEnum { DEV_VARIETY("A00359","查询字典终端类型数据为空"), LINE_TYPE_VARIETY_EMPTY("A00360","查询字典监测点类型数据为空"), + EVENT_REPORT_REPEAT("A00361","暂态报告模板重复"), + ; private final String code; diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/pojo/param/ReportTemplateParam.java b/pqs-system/system-api/src/main/java/com/njcn/system/pojo/param/ReportTemplateParam.java new file mode 100644 index 000000000..1c7561e0b --- /dev/null +++ b/pqs-system/system-api/src/main/java/com/njcn/system/pojo/param/ReportTemplateParam.java @@ -0,0 +1,43 @@ +package com.njcn.system.pojo.param; + +import com.njcn.common.pojo.constant.PatternRegex; +import com.njcn.web.constant.ValidMessage; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; + +/** + * pqs-event + * + * @author cdf + * @date 2022/8/29 + */ +@Data +public class ReportTemplateParam { + + private String name; + + private String code; + + private Integer type; + + /** + * 更新操作实体 + */ + @Data + @EqualsAndHashCode(callSuper = true) + public static class UpdateReportTemplateParam extends ReportTemplateParam { + /** + * 表Id + */ + @ApiModelProperty("id") + @NotBlank(message = ValidMessage.ID_NOT_BLANK) + @Pattern(regexp = PatternRegex.SYSTEM_ID, message = ValidMessage.ID_FORMAT_ERROR) + private String id; + } + + +} diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/pojo/po/ReportTemplate.java b/pqs-system/system-api/src/main/java/com/njcn/system/pojo/po/ReportTemplate.java new file mode 100644 index 000000000..c15d5e7ae --- /dev/null +++ b/pqs-system/system-api/src/main/java/com/njcn/system/pojo/po/ReportTemplate.java @@ -0,0 +1,31 @@ +package com.njcn.system.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.bo.BaseEntity; +import io.swagger.models.auth.In; +import lombok.Data; +import lombok.EqualsAndHashCode; +import nonapi.io.github.classgraph.json.Id; + +/** + * pqs-event + * + * @author cdf + * @date 2022/8/29 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName(value = "pq_report_template") +public class ReportTemplate extends BaseEntity { + + private String id; + + private String name; + + private String code; + + private Integer type; + + private Integer state; + +} diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/controller/ReportTemplateController.java b/pqs-system/system-boot/src/main/java/com/njcn/system/controller/ReportTemplateController.java new file mode 100644 index 000000000..c15516071 --- /dev/null +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/controller/ReportTemplateController.java @@ -0,0 +1,142 @@ +package com.njcn.system.controller; + +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.system.pojo.param.ReportTemplateParam; +import com.njcn.system.pojo.po.ReportTemplate; +import com.njcn.system.service.ReportTemplateService; +import com.njcn.web.controller.BaseController; +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.List; +import java.util.Objects; + +/** + * pqs-event + * 暂态报告模板 + * @author cdf + * @date 2022/8/29 + */ +@Slf4j +@RestController +@RequestMapping("/reportTemplate") +@Api(tags = "暂态报告模板") +@AllArgsConstructor +public class ReportTemplateController extends BaseController { + + private final ReportTemplateService reportTemplateService; + + + /** + * 新增暂态报表模板 + * @param reportTemplateParam 暂态报表模板实体 + * @author cdf + * @date 2022/7/5 + */ + @PostMapping("addReportTemplate") + @OperateInfo(info = LogEnum.SYSTEM_COMMON,operateType = OperateType.ADD) + @ApiOperation("新增暂态报表模板") + @ApiImplicitParam(name = "reportTemplateParam",value = "暂态报表模板实体",required = true) + public HttpResult addReportTemplate(@RequestBody @Validated ReportTemplateParam reportTemplateParam){ + String methodDescribe = getMethodDescribe("addReportTemplate"); + boolean res = reportTemplateService.addReportTemplate(reportTemplateParam); + if(res){ + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); + } + + + /** + * 修改暂态报表模板 + * @author cdf + * @date 2022/7/5 + */ + @PostMapping("updateReportTemplate") + @OperateInfo(info = LogEnum.SYSTEM_COMMON,operateType = OperateType.UPDATE) + @ApiOperation("修改暂态报表模板") + @ApiImplicitParam(name = "updateReportTemplateParam",value = "暂态报表模板实体",required = true) + public HttpResult updateReportTemplate(@RequestBody @Validated ReportTemplateParam.UpdateReportTemplateParam updateReportTemplateParam){ + String methodDescribe = getMethodDescribe("updateReportTemplate"); + boolean res = reportTemplateService.updateReportTemplate(updateReportTemplateParam); + if(res){ + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); + } + + + + + /** + * 查询所有暂态报表模板 + * @author cdf + * @date 2022/7/5 + * @return Page + */ + @GetMapping("getAllReportTemplateList") + @OperateInfo(info = LogEnum.SYSTEM_COMMON) + @ApiOperation("查询所有暂态报表模板") + public HttpResult> getAllReportTemplateList(){ + String methodDescribe = getMethodDescribe("getAllReportTemplateList"); + List list = reportTemplateService.getAllReportTemplateList(); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + + /** + * 根据暂态报表模板id查询暂态报表模板 + * @param id 暂态报表模板id + * @author cdf + * @date 2022/7/5 + * @return ReportTemplate + */ + @GetMapping("getReportTemplateById") + @OperateInfo(info = LogEnum.SYSTEM_COMMON) + @ApiOperation("根据暂态报表模板id查询暂态报表模板") + @ApiImplicitParam(name = "id",value = "暂态报表模板id",required = true) + public HttpResult getReportTemplateById(@RequestParam("id") String id){ + String methodDescribe = getMethodDescribe("getReportTemplateById"); + ReportTemplate reportTemplate = reportTemplateService.getReportTemplateById(id); + if(Objects.nonNull(reportTemplate)){ + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, reportTemplate, methodDescribe); + } + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + + } + + + /** + * 删除暂态报表模板 + * @param ids 暂态报表模板id + * @author cdf + * @date 2022/7/5 + * @return boolean + */ + @PostMapping("delReportTemplate") + @OperateInfo(info = LogEnum.SYSTEM_COMMON) + @ApiOperation("删除暂态报表模板") + @ApiImplicitParam(name = "ids",value = "暂态报表模板ids",required = true) + public HttpResult delReportTemplate(@RequestBody List ids){ + String methodDescribe = getMethodDescribe("delReportTemplate"); + boolean res = reportTemplateService.delReportTemplate(ids); + if(res){ + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); + } + + +} diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/ReportTemplateMapper.java b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/ReportTemplateMapper.java new file mode 100644 index 000000000..cd48bbce2 --- /dev/null +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/ReportTemplateMapper.java @@ -0,0 +1,14 @@ +package com.njcn.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.system.pojo.po.ReportTemplate; + + +/** + * pqs-event + * 报表模板 + * @author cdf + * @date 2022/8/29 + */ +public interface ReportTemplateMapper extends BaseMapper { +} diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/service/ReportTemplateService.java b/pqs-system/system-boot/src/main/java/com/njcn/system/service/ReportTemplateService.java new file mode 100644 index 000000000..3ed373992 --- /dev/null +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/service/ReportTemplateService.java @@ -0,0 +1,58 @@ +package com.njcn.system.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.njcn.system.pojo.param.ReportTemplateParam; +import com.njcn.system.pojo.po.ReportTemplate; + + +import java.util.List; + +/** + * pqs-event + * + * @author cdf + * @date 2022/8/29 + */ +public interface ReportTemplateService { + + /** + * 新增暂态报告模板 + * @param reportTemplateParam 暂态报告模板实体 + * @author cdf + * @date 2022/7/5 + * @return boolean + */ + boolean addReportTemplate(ReportTemplateParam reportTemplateParam); + + /** + * 修改暂态报告模板 + * @param updateReportTemplateParam 暂态报告模板实体 + * @author cdf + * @date 2022/7/5 + * @return boolean + */ + boolean updateReportTemplate(ReportTemplateParam.UpdateReportTemplateParam updateReportTemplateParam); + + + + List getAllReportTemplateList(); + + + /** + * 根据暂态报告模板id查询暂态报告模板 + * @param id 暂态报告模板id + * @author cdf + * @date 2022/7/5 + * @return PvReportTemplate + */ + ReportTemplate getReportTemplateById(String id); + + /** + * 删除暂态报告模板 + * @param ids 暂态报告模板id + * @author cdf + * @date 2022/7/5 + * @return boolean + */ + boolean delReportTemplate(List ids); +} diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/ReportTemplateServiceImpl.java b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/ReportTemplateServiceImpl.java new file mode 100644 index 000000000..7f58df06b --- /dev/null +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/ReportTemplateServiceImpl.java @@ -0,0 +1,108 @@ +package com.njcn.system.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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.common.pojo.enums.common.DataStateEnum; +import com.njcn.common.pojo.exception.BusinessException; + +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.SystemResponseEnum; +import com.njcn.system.mapper.ReportTemplateMapper; +import com.njcn.system.pojo.param.ReportTemplateParam; +import com.njcn.system.pojo.po.ReportTemplate; +import com.njcn.system.service.ReportTemplateService; +import com.njcn.web.factory.PageFactory; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * pqs-event + * + * @author cdf + * @date 2022/8/29 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class ReportTemplateServiceImpl extends ServiceImpl implements ReportTemplateService { + + + @Override + public boolean addReportTemplate(ReportTemplateParam reportTemplateParam) { + checkNameAndParam(reportTemplateParam,false); + ReportTemplate reportTemplate = new ReportTemplate(); + BeanUtils.copyProperties(reportTemplateParam,reportTemplate); + reportTemplate.setState(DataStateEnum.ENABLE.getCode()); + return this.save(reportTemplate); + } + + @Override + public boolean updateReportTemplate(ReportTemplateParam.UpdateReportTemplateParam updateReportTemplateParam) { + checkNameAndParam(updateReportTemplateParam,true); + ReportTemplate reportTemplate = new ReportTemplate(); + BeanUtils.copyProperties(updateReportTemplateParam,reportTemplate); + return this.updateById(reportTemplate); + } + + + + @Override + public List getAllReportTemplateList() { + return this.list(); + } + + @Override + public ReportTemplate getReportTemplateById(String id) { + return this.getById(id); + } + + @Override + public boolean delReportTemplate(List ids) { + return this.removeByIds(ids); + } + + + /** + * 校验单位名称是否重复 + */ + private void checkNameAndParam(ReportTemplateParam reportTemplateParam, boolean isUpdate) { + + + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ReportTemplate::getName, reportTemplateParam.getName()) + .eq(ReportTemplate::getType,reportTemplateParam.getType()); + if (isUpdate) { + //更新操作 + if (reportTemplateParam instanceof ReportTemplateParam.UpdateReportTemplateParam) { + lambdaQueryWrapper.ne(ReportTemplate::getId, ((ReportTemplateParam.UpdateReportTemplateParam) reportTemplateParam).getId()); + } + } + int count = this.count(lambdaQueryWrapper); + if (count > 0) { + throw new BusinessException(SystemResponseEnum.EVENT_REPORT_REPEAT); + } + + lambdaQueryWrapper.clear(); + lambdaQueryWrapper.eq(ReportTemplate::getCode, reportTemplateParam.getCode()) + .eq(ReportTemplate::getType,reportTemplateParam.getType()); + if (isUpdate) { + //更新操作 + if (reportTemplateParam instanceof ReportTemplateParam.UpdateReportTemplateParam) { + lambdaQueryWrapper.ne(ReportTemplate::getId, ((ReportTemplateParam.UpdateReportTemplateParam) reportTemplateParam).getId()); + } + } + int countUserCode = this.count(lambdaQueryWrapper); + if (countUserCode > 0) { + throw new BusinessException(SystemResponseEnum.EVENT_REPORT_REPEAT); + } + } + +}