From b55d988c7e2c5d485d3ae948b84526c7a0ba6a25 Mon Sep 17 00:00:00 2001 From: hongawen <83944980@qq.com> Date: Fri, 21 Oct 2022 09:05:55 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/njcn/harmonic/constant/Param.java | 3 +- .../harmonic/constant/ReportConstant.java | 23 - .../harmonic/pojo/dto/ReportTemplateDTO.java | 18 +- .../pojo/param/ReportTemplateParam.java | 13 +- .../com/njcn/harmonic/pojo/po/EleEpdPqd.java | 6 +- .../njcn/harmonic/pojo/po/ReportTemplate.java | 35 -- .../harmonic/pojo/vo/ReportTemplateVO.java | 6 +- .../controller/CustomReportController.java | 193 ++++--- .../harmonic/mapper/CustomReportMapper.java | 19 - .../mapper/mapping/CustomReportMapper.xml | 25 - .../harmonic/service/CustomReportService.java | 76 +-- .../service/impl/CustomReportServiceImpl.java | 473 ++++++++++-------- .../service/impl/NormLimitServiceImpl.java | 5 +- .../njcn/system/enums/DicDataTypeEnum.java | 3 +- 14 files changed, 446 insertions(+), 452 deletions(-) delete mode 100644 pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/constant/ReportConstant.java delete mode 100644 pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/ReportTemplate.java delete mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/CustomReportMapper.java delete mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/CustomReportMapper.xml diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/constant/Param.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/constant/Param.java index 7612d3869..f5d36619f 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/constant/Param.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/constant/Param.java @@ -11,6 +11,8 @@ public interface Param { */ String LIMIT_TARGET = "limit_target"; String LIMIT_RATE = "limit_rate"; + String DATA_I = "data_i"; + String DATA_HARMPOWER_Q = "data_harmpower_q"; /** * 数据完整性表公共字段 @@ -60,5 +62,4 @@ public interface Param { String PHASIC_TYPE = "phasic_type"; String PARENT_ID = "0"; - } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/constant/ReportConstant.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/constant/ReportConstant.java deleted file mode 100644 index d859fa16c..000000000 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/constant/ReportConstant.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.njcn.harmonic.constant; - -/** - * pqs - * - * @author cdf - * @date 2022/8/18 - */ -public interface ReportConstant { - String aMax = "#A#MAX"; - String bMax = "#B#MAX"; - String cMax = "#C#MAX"; - String aMIN = "#A#MIN"; - String bMIN = "#B#MIN"; - String cMIN = "#C#MIN"; - String aAVG = "#A#AVG"; - String bAVG = "#B#AVG"; - String cAVG = "#C#AVG"; - String aCP95 = "#A#CP95"; - String bCP95 = "#B#CP95"; - String cCP95 = "#C#CP95"; - -} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/ReportTemplateDTO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/ReportTemplateDTO.java index c2c3e287b..bf58191c6 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/ReportTemplateDTO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/ReportTemplateDTO.java @@ -2,8 +2,6 @@ package com.njcn.harmonic.pojo.dto; import lombok.Data; -import java.math.BigDecimal; - /** * pqs * @@ -13,17 +11,13 @@ import java.math.BigDecimal; @Data public class ReportTemplateDTO { /** - * $HA#B#max$ + * $HA[_25]#B#max#classId$ */ private String itemName; - /** - * 对应mysql数据库中字段 HA - */ - private String name; /** - * 对应influxdb数据库中字段 HA_25 + * 对应influxdb数据库中字段 */ private String templateName; @@ -37,6 +31,14 @@ public class ReportTemplateDTO { */ private String statMethod; + /** + * 对应influxdb数据库的表名 + */ + private String classId; + + /** + * 填入的value值 + */ private String value; } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/ReportTemplateParam.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/ReportTemplateParam.java index 3b140dfb3..9f8c0fed3 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/ReportTemplateParam.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/ReportTemplateParam.java @@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Pattern; +import java.util.List; /** * pqs @@ -18,25 +19,25 @@ import javax.validation.constraints.Pattern; @Data public class ReportTemplateParam { - - @ApiModelProperty(name = "name",value = "模板名称",required = true) @NotBlank(message = "模板名称不可为空") private String name; - @ApiModelProperty(name = "docContent",value = "json内容",required = true) + @ApiModelProperty(name = "content",value = "json内容",required = true) @NotBlank(message = "模板内容不可为空") - private String docContent; + private String content; @ApiModelProperty(name = "deptId",value = "部门id") - private String deptId; + private List deptId; + + @ApiModelProperty(name = "valueTitle",value = "存取库中") + private String valueTitle; @ApiModelProperty(name = "reportType",value = "自定义报表类型",required = true) @NotBlank(message = "自定义报表类型不可为空") private String reportType; - @Data @EqualsAndHashCode(callSuper = true) public static class UpdateReportTemplateParam extends ReportTemplateParam { diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/EleEpdPqd.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/EleEpdPqd.java index bf6e1e111..bd2f8424b 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/EleEpdPqd.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/EleEpdPqd.java @@ -22,10 +22,10 @@ public class EleEpdPqd implements Serializable { private String name; - private String showName; - private String otherName; + private String showName; + private Integer sort; private String type; @@ -41,4 +41,6 @@ public class EleEpdPqd implements Serializable { private String classId; private String statMethod; + + private String systemType; } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/ReportTemplate.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/ReportTemplate.java deleted file mode 100644 index 4dfe670d1..000000000 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/ReportTemplate.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.njcn.harmonic.pojo.po; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; -import com.mysql.cj.xdevapi.JsonArray; -import com.njcn.db.bo.BaseEntity; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * pqs - * 自定义报表 - * @author cdf - * @date 2022/8/16 - */ -@Data -@EqualsAndHashCode(callSuper = true) -@TableName(value = "sys_report_template") -public class ReportTemplate extends BaseEntity { - private String id; - - private String name; - - private String docContent; - - private String deptId; - - private String reportType; - - private Integer active; - - private Integer state; -} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/ReportTemplateVO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/ReportTemplateVO.java index 4614c6913..bd18eb4b7 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/ReportTemplateVO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/ReportTemplateVO.java @@ -1,6 +1,5 @@ package com.njcn.harmonic.pojo.vo; -import com.baomidou.mybatisplus.annotation.TableName; import com.njcn.db.bo.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -18,13 +17,14 @@ public class ReportTemplateVO extends BaseEntity { private String name; - private String docContent; + private String content; private String deptId; - private Integer active; + private Integer activation; private Integer state; private String deptName; + } 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 767ad7147..cd05bb0d2 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 @@ -1,6 +1,5 @@ package com.njcn.harmonic.controller; -import cn.hutool.json.JSONArray; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.constant.OperateType; @@ -8,24 +7,18 @@ 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.common.utils.LogUtil; -import com.njcn.harmonic.pojo.param.ReportQueryParam; +import com.njcn.harmonic.pojo.param.ReportSearchParam; import com.njcn.harmonic.pojo.param.ReportTemplateParam; -import com.njcn.harmonic.pojo.po.ReportTemplate; -import com.njcn.harmonic.pojo.vo.OverAreaLimitVO; -import com.njcn.harmonic.pojo.vo.OverAreaVO; +import com.njcn.harmonic.pojo.po.ExcelRptTemp; import com.njcn.harmonic.pojo.vo.ReportTemplateVO; import com.njcn.harmonic.pojo.vo.ReportTreeVO; +import com.njcn.harmonic.pojo.vo.SysDeptTempVO; import com.njcn.harmonic.service.CustomReportService; import com.njcn.web.controller.BaseController; -import com.njcn.web.pojo.param.BaseParam; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import io.swagger.models.auth.In; import lombok.AllArgsConstructor; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -51,7 +44,7 @@ public class CustomReportController extends BaseController { /** * 新增自定义报表模板 * @author cdf - * @date 2022/8/16 + * @date 2022/10/19 */ @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType=OperateType.ADD) @PostMapping("/addTemplate") @@ -67,11 +60,74 @@ public class CustomReportController extends BaseController { } } + /** + * 查询所有模板 + * @author qijian + * @date 2022/10/14 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getTemplateList") + @ApiOperation("查询报表模板") + @ApiImplicitParam(name = "reportSearchParam", value = "实体参数", required = false) + public HttpResult> getTemplateList(@RequestBody ReportSearchParam reportSearchParam){ + String methodDescribe = getMethodDescribe("getTemplateList"); + List list = customReportService.getTemplateList(reportSearchParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + /** + * 根据部门查询模板 + * @author qijian + * @date 2022/10/19 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @GetMapping("/getTemplateByDept") + @ApiOperation("根据部门查询模板") + @ApiImplicitParam(name = "id", value = "id", required = true) + public HttpResult> getTemplateByDept(@RequestParam("id") String id){ + String methodDescribe = getMethodDescribe("getTemplateList"); + List list = customReportService.getTemplateByDept(id); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + /** + * 删除模板 + * @author qijian + * @date 2022/10/18 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType=OperateType.DELETE) + @PostMapping("/delTemplate") + @ApiOperation("删除报表模板") + @ApiImplicitParam(name = "reportSearchParam", value = "实体参数", required = false) + public HttpResult delTemplate(@RequestBody ReportSearchParam reportSearchParam){ + String methodDescribe = getMethodDescribe("delTemplate"); + boolean res = customReportService.delTemplate(reportSearchParam); + if(res){ + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + }else { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); + } + } + + /** + * 根据id查询模板详情 + * @author qijian + * @date 2022/10/14 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @GetMapping("/getCustomReportTemplateById") + @ApiOperation("根据id查询模板详情") + @ApiImplicitParam(name = "id", value = "id", required = true) + public HttpResult getCustomReportTemplateById(@RequestParam("id") String id){ + String methodDescribe = getMethodDescribe("getCustomReportTemplateById"); + ExcelRptTemp excelRptTemp = customReportService.getCustomReportTemplateById(id); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, excelRptTemp, methodDescribe); + } /** * 修改自定义报表模板 - * @author cdf - * @date 2022/8/16 + * @author qijian + * @date 2022/10/18 */ @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType=OperateType.UPDATE) @PostMapping("/updateTemplate") @@ -88,33 +144,17 @@ public class CustomReportController extends BaseController { } /** - * 分页查询 - * @author cdf - * @date 2022/8/16 + * 绑定/解绑模板数据 + * @author qijian + * @date 2022/10/19 */ - @OperateInfo(info = LogEnum.BUSINESS_COMMON) - @PostMapping("/getTemplateList") - @ApiOperation("分页查询报表模板") - @ApiImplicitParam(name = "baseParam", value = "实体参数", required = true) - public HttpResult> getTemplateList(@RequestBody BaseParam baseParam){ - String methodDescribe = getMethodDescribe("getTemplateList"); - Page page = customReportService.getReportTemplateList(baseParam); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe); - } - - - /** - * 删除模板 - * @author cdf - * @date 2022/8/23 - */ - @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType=OperateType.DELETE) - @GetMapping("/delTemplate") - @ApiOperation("删除报表模板") - @ApiImplicitParam(name = "id", value = "模板id", required = true) - public HttpResult delTemplate(@RequestParam("id")String id){ - String methodDescribe = getMethodDescribe("delTemplate"); - boolean res = customReportService.delTemplate(id); + @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType=OperateType.UPDATE) + @PostMapping("/updateBindTemplate") + @ApiOperation("绑定/解绑模板数据") + @ApiImplicitParam(name = "reportSearchParams", value = "实体参数", required = false) + public HttpResult updateBindTemplate(@RequestBody List reportSearchParams){ + String methodDescribe = getMethodDescribe("updateBindTemplate"); + boolean res = customReportService.updateBindTemplate(reportSearchParams); if(res){ return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); }else { @@ -122,19 +162,33 @@ public class CustomReportController extends BaseController { } } + /** + * 根据模板ID查询数据 + * @author qijian + * @date 2022/10/19 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @GetMapping("/getDataByTempId") + @ApiOperation("根据模板ID查询数据") + @ApiImplicitParam(name = "id", value = "id", required = true) + public HttpResult> getDataByTempId(@RequestParam("id")String id){ + String methodDescribe = getMethodDescribe("getDataByTempId"); + List list = customReportService.getDataByTempId(id); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } /** * 修改激活状态 - * @author cdf - * @date 2022/8/23 + * @author qijian + * @date 2022/10/17 */ @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType=OperateType.UPDATE) - @GetMapping("/updateTemplateActive") + @PostMapping("/updateTemplateActive") @ApiOperation("修改激活状态") - @ApiImplicitParam(name = "id", value = "模板id", required = true) - public HttpResult> updateTemplateActive(@RequestParam("id")String id){ + @ApiImplicitParam(name = "reportSearchParam", value = "实体参数", required = false) + public HttpResult> updateTemplateActive(@RequestBody ReportSearchParam reportSearchParam){ String methodDescribe = getMethodDescribe("updateTemplateActive"); - boolean res = customReportService.updateStatus(id); + boolean res = customReportService.updateStatus(reportSearchParam); if(res){ return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); }else { @@ -142,39 +196,6 @@ public class CustomReportController extends BaseController { } } - - /** - * 根据id查询模板详情 - * @author cdf - * @date 2022/8/16 - */ - @OperateInfo(info = LogEnum.BUSINESS_COMMON) - @PostMapping("/getCustomReportTemplateById") - @ApiOperation("根据id查询模板详情") - @ApiImplicitParam(name = "id", value = "id", required = true) - public HttpResult getCustomReportTemplateById(@RequestParam("id") String id){ - String methodDescribe = getMethodDescribe("getCustomReportTemplateById"); - ReportTemplate reportTemplate = customReportService.getCustomReportTemplateById(id); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, reportTemplate, methodDescribe); - } - - - /** - * 根据id查询模板详情 - * @author cdf - * @date 2022/8/16 - */ - @OperateInfo(info = LogEnum.BUSINESS_COMMON) - @PostMapping("/getCustomReport") - @ApiOperation("获取报表") - @ApiImplicitParam(name = "reportQueryParam", value = "查询体", required = true) - public HttpResult getCustomReport(@RequestBody @Validated ReportQueryParam reportQueryParam){ - String methodDescribe = getMethodDescribe("getCustomReport"); - String res = customReportService.getCustomReport(reportQueryParam); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, res, methodDescribe); - } - - /** * 获取报表模板树 * @author cdf @@ -189,5 +210,21 @@ public class CustomReportController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, res, methodDescribe); } + /** + * 替换报表数据并返回 + * @author qijian + * @date 2022/10/19 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getCustomReport") + @ApiOperation("获取报表") + @ApiImplicitParam(name = "reportSearchParam", value = "查询体", required = false) + public HttpResult getCustomReport(@RequestBody ReportSearchParam reportSearchParam){ + String methodDescribe = getMethodDescribe("getCustomReport"); + String res = customReportService.getCustomReport(reportSearchParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, res, methodDescribe); + } + + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/CustomReportMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/CustomReportMapper.java deleted file mode 100644 index fa7765426..000000000 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/CustomReportMapper.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.njcn.harmonic.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.njcn.harmonic.pojo.po.ReportTemplate; -import com.njcn.harmonic.pojo.vo.ReportTemplateVO; -import com.njcn.web.pojo.param.BaseParam; -import org.apache.ibatis.annotations.Param; - -/** - * pqs - * - * @author cdf - * @date 2022/8/16 - */ -public interface CustomReportMapper extends BaseMapper { - - Page getReportTemplateList(Page page, @Param("baseParam")BaseParam baseParam); -} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/CustomReportMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/CustomReportMapper.xml deleted file mode 100644 index 98332dc0a..000000000 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/CustomReportMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - 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 187cca084..92f9631a3 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 @@ -1,17 +1,11 @@ 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.ReportSearchParam; import com.njcn.harmonic.pojo.param.ReportTemplateParam; -import com.njcn.harmonic.pojo.po.ReportTemplate; +import com.njcn.harmonic.pojo.po.ExcelRptTemp; import com.njcn.harmonic.pojo.vo.ReportTemplateVO; import com.njcn.harmonic.pojo.vo.ReportTreeVO; -import com.njcn.web.pojo.param.BaseParam; -import io.swagger.v3.oas.annotations.parameters.RequestBody; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.RequestParam; +import com.njcn.harmonic.pojo.vo.SysDeptTempVO; import java.util.List; @@ -26,58 +20,57 @@ public interface CustomReportService { /** * 新增自定义报表模板 - * @author cdf - * @date 2022/8/16 + * @author qijian + * @date 2022/10/18 */ boolean addCustomReportTemplate(ReportTemplateParam reportTemplateParam); /** * 修改自定义报表模板 - * @author cdf - * @date 2022/8/16 + * @author qijian + * @date 2022/10/18 */ boolean updateCustomReportTemplate(ReportTemplateParam reportTemplateParam); /** * 根据id获取模板 - * @author cdf - * @date 2022/8/16 + * @author qijian + * @date 2022/10/18 */ - ReportTemplate getCustomReportTemplateById(String id); + ExcelRptTemp getCustomReportTemplateById(String id); /** * 模板列表 - * @author cdf - * @date 2022/8/16 + * @author qijian + * @date 2022/10/18 */ - Page getReportTemplateList(BaseParam baseParam); + List getTemplateList(ReportSearchParam reportSearchParam); /** * 删除模板 - * @author cdf - * @date 2022/8/23 + * @author qijian + * @date 2022/10/18 */ - boolean delTemplate(String id); + boolean delTemplate(ReportSearchParam reportSearchParam); /** * 切换模板激活状态 - * @author cdf - * @date 2022/8/23 + * @author qijian + * @date 2022/10/18 */ - boolean updateStatus(String id); + boolean updateStatus(ReportSearchParam reportSearchParam); /** - * 查询报告 - * @param reportQueryParam 请求参数 - * @return JSONArray - * @author cdf - * @date 2022/8/26 + * 替换报表数据并返回 + * @param reportSearchParam 请求参数 + * @author qijian + * @date 2022/10/18 */ - String getCustomReport(ReportQueryParam reportQueryParam); + String getCustomReport(ReportSearchParam reportSearchParam); /** @@ -86,4 +79,25 @@ public interface CustomReportService { * @date 2022/8/26 */ List reportChooseTree(); + + /** + * 绑定/解绑模板数据 + * @author qijian + * @date 2022/10/18 + */ + boolean updateBindTemplate(List reportSearchParams); + + /** + * 根据模板ID查询数据 + * @author qijian + * @date 2022/10/18 + */ + List getDataByTempId(String id); + + /** + * 根据部门查询模板 + * @author qijian + * @date 2022/10/18 + */ + List getTemplateByDept(String id); } 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 5dad28ddd..e45745f6d 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 @@ -1,39 +1,40 @@ package com.njcn.harmonic.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; 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; import com.njcn.common.pojo.enums.common.DataStateEnum; -import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.harmonic.enums.HarmonicResponseEnum; -import com.njcn.harmonic.mapper.CustomReportMapper; +import com.njcn.harmonic.mapper.DeptTempMapper; import com.njcn.harmonic.mapper.EleEpdMapper; +import com.njcn.harmonic.mapper.ExcelRptMapper; +import com.njcn.harmonic.mapper.ExcelRptTempMapper; import com.njcn.harmonic.pojo.dto.ReportTemplateDTO; -import com.njcn.harmonic.pojo.param.ReportQueryParam; +import com.njcn.harmonic.pojo.param.ReportSearchParam; 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.po.ExcelRpt; +import com.njcn.harmonic.pojo.po.ExcelRptTemp; +import com.njcn.harmonic.pojo.po.SysDeptTemp; import com.njcn.harmonic.pojo.vo.ReportTemplateVO; import com.njcn.harmonic.pojo.vo.ReportTreeVO; +import com.njcn.harmonic.pojo.vo.SysDeptTempVO; import com.njcn.harmonic.service.CustomReportService; - -import com.njcn.influxdb.param.InfluxDBPublicParam; +import com.njcn.influxdb.config.InfluxDbConfig; +import com.njcn.influxdb.param.InfluxDBSqlConstant; +import com.njcn.influxdb.param.InfluxDBTableConstant; import com.njcn.influxdb.utils.InfluxDbUtils; import com.njcn.system.api.DicDataFeignClient; -import com.njcn.system.pojo.po.DictData; import com.njcn.user.api.DeptFeignClient; -import com.njcn.user.pojo.po.Dept; -import com.njcn.web.factory.PageFactory; -import com.njcn.web.pojo.param.BaseParam; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.influxdb.dto.QueryResult; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +59,9 @@ import java.util.stream.Stream; @Slf4j public class CustomReportServiceImpl implements CustomReportService { - private final CustomReportMapper customReportMapper; + private final ExcelRptTempMapper excelRptTempMapper; + + private final ExcelRptMapper excelRptMapper; private final DeptFeignClient deptFeignClient; @@ -68,21 +71,39 @@ public class CustomReportServiceImpl implements CustomReportService { private final DicDataFeignClient dicDataFeignClient; + private final DeptTempMapper deptTempMapper; + + @Resource + private InfluxDbConfig influxDbConfig; + @Override public boolean addCustomReportTemplate(ReportTemplateParam reportTemplateParam) { checkName(reportTemplateParam, false); + //检验模板json数据规范 try { - new JSONArray(reportTemplateParam.getDocContent()); + new JSONArray(reportTemplateParam.getContent()); } catch (Exception e) { throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON); } - ReportTemplate reportTemplate = new ReportTemplate(); - BeanUtils.copyProperties(reportTemplateParam, reportTemplate); - reportTemplate.setState(DataStateEnum.ENABLE.getCode()); - reportTemplate.setActive(DataStateEnum.DELETED.getCode()); - customReportMapper.insert(reportTemplate); + //新增模板表 + ExcelRptTemp excelRptTemp = new ExcelRptTemp(); + BeanUtils.copyProperties(reportTemplateParam, excelRptTemp); + excelRptTemp.setState(DataStateEnum.ENABLE.getCode()); + excelRptTempMapper.insert(excelRptTemp); + + //获取主键,并存入部门表 + String tempId = excelRptTemp.getId(); + for (String deptId : reportTemplateParam.getDeptId()) { + SysDeptTemp sysDeptTemp = new SysDeptTemp(); + sysDeptTemp.setTempId(tempId); + sysDeptTemp.setDeptId(deptId); + //未激活状态 + sysDeptTemp.setActivation(DataStateEnum.DELETED.getCode()); + deptTempMapper.insert(sysDeptTemp); + } + return true; } @@ -90,226 +111,211 @@ public class CustomReportServiceImpl implements CustomReportService { public boolean updateCustomReportTemplate(ReportTemplateParam reportTemplateParam) { checkName(reportTemplateParam, true); + //检验模板json数据规范 try { - new JSONArray(reportTemplateParam.getDocContent()); + new JSONArray(reportTemplateParam.getContent()); } catch (Exception e) { throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON); } - ReportTemplate reportTemplate = new ReportTemplate(); - BeanUtils.copyProperties(reportTemplateParam, reportTemplate); - customReportMapper.updateById(reportTemplate); + //修改模板数据 + ExcelRptTemp excelRptTemp = new ExcelRptTemp(); + BeanUtils.copyProperties(reportTemplateParam, excelRptTemp); + excelRptTempMapper.updateById(excelRptTemp); + return true; } @Override - public ReportTemplate getCustomReportTemplateById(String id) { - return customReportMapper.selectById(id); + public boolean updateBindTemplate(List reportSearchParams) { + //1、根据模板主键删除绑定的部门数据 + LambdaQueryWrapper lambdaQuery = new LambdaQueryWrapper<>(); + lambdaQuery.eq(SysDeptTemp::getTempId, reportSearchParams.get(0).getTempId()); + deptTempMapper.delete(lambdaQuery); + //2、新增部门 + for (ReportSearchParam reportSearchParam : reportSearchParams) { + SysDeptTemp sysDeptTemp = new SysDeptTemp(); + sysDeptTemp.setTempId(reportSearchParam.getTempId()); + sysDeptTemp.setDeptId(reportSearchParam.getDeptId()); + sysDeptTemp.setActivation(reportSearchParam.getActivation()); + deptTempMapper.insert(sysDeptTemp); + } + return true; } @Override - public Page getReportTemplateList(BaseParam baseParam) { - return customReportMapper.getReportTemplateList(new Page<>(PageFactory.getPageNum(baseParam), PageFactory.getPageSize(baseParam)), baseParam); + public List getDataByTempId(String id) { + return deptTempMapper.getDeptTempByTempId(id); } @Override - public boolean delTemplate(String id) { - ReportTemplate reportTemplate = new ReportTemplate(); - reportTemplate.setId(id); - reportTemplate.setState(DataStateEnum.DELETED.getCode()); - customReportMapper.updateById(reportTemplate); + public List getTemplateByDept(String id) { + return excelRptTempMapper.getReportTemplateByDept(id); + } + + @Override + public ExcelRptTemp getCustomReportTemplateById(String id) { + return excelRptTempMapper.selectById(id); + } + + + @Override + public List getTemplateList(ReportSearchParam reportSearchParam) { + return excelRptTempMapper.getReportTemplateList(reportSearchParam); + } + + @Override + public boolean delTemplate(ReportSearchParam reportSearchParam) { + //根据模板ID和部门ID删除绑定的数据 + LambdaQueryWrapper lambdaQuery = new LambdaQueryWrapper<>(); + lambdaQuery.eq(SysDeptTemp::getTempId, reportSearchParam.getTempId()).eq(SysDeptTemp::getDeptId, reportSearchParam.getDeptId()); + deptTempMapper.delete(lambdaQuery); + return true; } @Override @Transactional(rollbackFor = Exception.class) - public boolean updateStatus(String id) { - 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); + public boolean updateStatus(ReportSearchParam reportSearchParam) { + //先全体把激活的改为未激活,再改单个的激活值 + deptTempMapper.updateAllActivation(reportSearchParam.getDeptId()); - ReportTemplate reportTemplate = new ReportTemplate(); - reportTemplate.setId(id); - reportTemplate.setActive(DataStateEnum.ENABLE.getCode()); - customReportMapper.updateById(reportTemplate); + SysDeptTemp sysDeptTemp = new SysDeptTemp(); + BeanUtils.copyProperties(reportSearchParam, sysDeptTemp); + deptTempMapper.updateActivation(sysDeptTemp); return true; } @Override - public String getCustomReport(ReportQueryParam reportQueryParam) { + public String getCustomReport(ReportSearchParam reportSearchParam) { - - 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)) { + ExcelRptTemp excelRptTemp = excelRptTempMapper.selectById(reportSearchParam.getTempId()); + if (Objects.isNull(excelRptTemp)) { throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_ACTIVE); } - List stringList = new ArrayList<>(); + //根据content,获取v值并进行处理 List reportTemplateDTOList = new ArrayList<>(); JSONArray jsonArray = null; try { - jsonArray = JSONUtil.parseArray(tem.getDocContent()); + jsonArray = JSONUtil.parseArray(excelRptTemp.getContent()); 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("#"); - - 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]); - - } 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); + JSONArray itemArr = (JSONArray) jsonObject.get("celldata"); + itemArr.forEach((it) -> { + if (Objects.nonNull(it) && !"null".equals(it.toString())) { + //获取到1列 + JSONObject data = (JSONObject) it; + JSONObject son = (JSONObject) data.get("v"); + if (son.containsKey("v")) { + String v = son.getStr("v"); + //数据格式:$HA[_25]#B#max#classId$ 或 $HA[_25]#max#classId$ + if (v.charAt(0) == '$' && v.contains("#")) { + //剔除前后$ + v = v.replace("$", ""); + //封装ReportTemplateDTO + ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO(); + reportTemplateDTO.setItemName(v); + //根据#分割数据 + String[] vItem = v.split("#"); + if (vItem.length == 4) { + //$HA[_25]#B#max#classId$ + reportTemplateDTO.setTemplateName(vItem[0]); + reportTemplateDTO.setPhase(vItem[1]); + reportTemplateDTO.setStatMethod(vItem[2].toUpperCase()); + reportTemplateDTO.setClassId(vItem[3]); + } else if (vItem.length == 3) { + //$HA[_25]#max#classId$ + reportTemplateDTO.setTemplateName(vItem[0]); + reportTemplateDTO.setPhase("M"); + reportTemplateDTO.setStatMethod(vItem[1].toUpperCase()); + reportTemplateDTO.setClassId(vItem[2]); } + + 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); - List eleEpdPqdList = eleEpdMapper.selectList(lambdaQueryWrapper); - Map> mapEpd = eleEpdPqdList.stream().collect(Collectors.groupingBy(EleEpdPqd::getClassId)); - - 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()); - - Map> phaseMap = classList.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getPhase)); - + if (CollUtil.isNotEmpty(reportTemplateDTOList)) { //开始组织sql - 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); - } - }); + reportTemplateDTOList.stream().forEach(data -> { + StringBuilder sql = new StringBuilder(InfluxDBSqlConstant.SELECT); + if (InfluxDBTableConstant.MAX.equals(data.getStatMethod())) { + assSql(data, sql, endList, InfluxDBSqlConstant.MAX, reportSearchParam); + } else if (InfluxDBTableConstant.MIN.equals(data.getStatMethod())) { + assSql(data, sql, endList, InfluxDBSqlConstant.MIN, reportSearchParam); + } else if (InfluxDBTableConstant.AVG.equals(data.getStatMethod())) { + assSql(data, sql, endList, InfluxDBSqlConstant.AVG, reportSearchParam); + } else if (InfluxDBTableConstant.CP95.equals(data.getStatMethod())) { + assSql(data, sql, endList, InfluxDBSqlConstant.CP95, reportSearchParam); + } }); - }); - - - 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 itemArr = (JSONArray) jsonObject.get("data"); - itemArr.forEach((ite) -> { - JSONArray j = (JSONArray) ite; - j.forEach(it -> { + if (CollUtil.isNotEmpty(endList)) { + //进行反向赋值到模板 + //1、根据itemName分组 + Map> assMap = endList.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getItemName)); + //2、把itemName的value赋给v和m + jsonArray.forEach(item -> { + JSONObject jsonObject = (JSONObject) item; + JSONArray itemArr = (JSONArray) jsonObject.get("celldata"); + itemArr.forEach((it) -> { if (Objects.nonNull(it) && !"null".equals(it.toString())) { - JSONObject son = (JSONObject) it; //获取到1列 + //获取到1列 + JSONObject data = (JSONObject) it; + JSONObject son = (JSONObject) data.get("v"); if (son.containsKey("v")) { String v = son.getStr("v"); - System.out.println(v); + //数据格式:$HA[_25]#B#max#classId$ 或 $HA[_25]#max#classId$ if (v.charAt(0) == '$' && v.contains("#")) { String str = assMap.get(v.replace("$", "")).get(0).getValue(); + //没有值,赋"/" + if (StringUtils.isBlank(str)) { + str = "/"; + } son.set("v", str); - son.set("m", str); } } } }); }); - }); - - - 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); + String content = jsonArray.toString(); + //根据模板激活状态,判断是否进库(未激活不进库,已激活进库) + if (DataStateEnum.ENABLE.getCode().equals(reportSearchParam.getActivation())) { + //存入报表库 + ExcelRpt excelRpt = new ExcelRpt(); + excelRpt.setName(excelRptTemp.getName()); + excelRpt.setLineId(reportSearchParam.getLineId()); + excelRpt.setDataDate(DateUtil.parse(reportSearchParam.getStartTime())); + excelRpt.setTempId(excelRptTemp.getId()); + excelRpt.setContent(content); + excelRpt.setType(reportSearchParam.getType()); + excelRpt.setState(DataStateEnum.ENABLE.getCode()); + excelRptMapper.insert(excelRpt); } + + return content; } @Override public List reportChooseTree() { long a = System.currentTimeMillis(); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.isNotNull(EleEpdPqd::getOtherName); lambdaQueryWrapper.orderByAsc(EleEpdPqd::getSort); List list = eleEpdMapper.selectList(lambdaQueryWrapper); - Map> map = list.stream().collect(Collectors.groupingBy(EleEpdPqd::getName)); + Map> map = list.stream().collect(Collectors.groupingBy(EleEpdPqd::getOtherName)); List tree = new ArrayList<>(); map.forEach((key, value) -> { @@ -323,15 +329,15 @@ public class CustomReportServiceImpl implements CustomReportService { List reHarm = new ArrayList<>(); for (int i = value.get(0).getHarmStart(); i < value.get(0).getHarmEnd(); i++) { ReportTreeVO reportTreeCount = new ReportTreeVO(); - reportTreeCount.setName(value.get(0).getName() + "_" + i); + reportTreeCount.setName(value.get(0).getOtherName() + "_" + i); reportTreeCount.setShowName(i + "次" + value.get(0).getShowName()); reportTreeVO.setFlag(1); - assPhase(value, reportTreeCount,reportTreeCount.getName()); + assPhase(value, reportTreeCount, reportTreeCount.getName()); reHarm.add(reportTreeCount); } reportTreeVO.setChildren(reHarm); } else { - assPhase(value, reportTreeVO,key); + assPhase(value, reportTreeVO, key); } tree.add(reportTreeVO); }); @@ -341,31 +347,32 @@ public class CustomReportServiceImpl implements CustomReportService { return tree; } - /*组装相别*/ - 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 -> { + private void assPhase(List value, ReportTreeVO reportTreeItem, String key) { + List phaseTree = new ArrayList<>(); + value.forEach(item -> { + if (Objects.nonNull(item.getPhase()) && !"M".equals(item.getPhase())) { List statTree = new ArrayList<>(); ReportTreeVO reportTreePhase = new ReportTreeVO(); reportTreePhase.setName(item.getPhase()); reportTreePhase.setShowName(item.getPhase()); - assStatMethod(item, statTree,key,item.getPhase()); + 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,key,""); - reportTreeItem.setChildren(statTree); - } + + } else { + List statTree = new ArrayList<>(); + assStatMethod(item, statTree, key, ""); + reportTreeItem.setChildren(statTree); + } + }); + reportTreeItem.setChildren(phaseTree); + } - private void assStatMethod(EleEpdPqd item, List statTree,String oneKey,String twoKey) { + private void assStatMethod(EleEpdPqd item, List statTree, String oneKey, String twoKey) { //存在向别为M但是Stat_Method不为空 if (StrUtil.isNotBlank(item.getStatMethod())) { String[] arr = item.getStatMethod().split(","); @@ -373,10 +380,10 @@ public class CustomReportServiceImpl implements CustomReportService { if (CollUtil.isNotEmpty(stat)) { stat.forEach(statItem -> { ReportTreeVO reportTreeStat = new ReportTreeVO(); - if(StrUtil.isNotBlank(twoKey)){ - reportTreeStat.setName("$"+oneKey+"#"+twoKey+"#"+statItem+"$"); - }else { - reportTreeStat.setName("$"+oneKey+"#"+statItem+"$"); + if (StrUtil.isNotBlank(twoKey)) { + reportTreeStat.setName("$" + oneKey + "#" + twoKey + "#" + statItem + "#" + item.getClassId().trim() + "$"); + } else { + reportTreeStat.setName("$" + oneKey + "#" + statItem + "#" + item.getClassId().trim() + "$"); } reportTreeStat.setShowName(statItem); @@ -387,51 +394,79 @@ public class CustomReportServiceImpl implements CustomReportService { } + /** + * 检查名称是否已存在 + * + * @param reportTemplateParam,isUpdate 参数 + * @return 结果 + */ private void checkName(ReportTemplateParam reportTemplateParam, boolean isUpdate) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(ReportTemplate::getState, DataStateEnum.ENABLE.getCode()).eq(ReportTemplate::getName, reportTemplateParam.getName()); - + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + //条件组合:where state = 1 and name = ? + lambdaQueryWrapper.eq(ExcelRptTemp::getState, DataStateEnum.ENABLE.getCode()).eq(ExcelRptTemp::getName, reportTemplateParam.getName()); + //and id <> ? if (isUpdate) { if (reportTemplateParam instanceof ReportTemplateParam.UpdateReportTemplateParam) { - lambdaQueryWrapper.ne(ReportTemplate::getId, ((ReportTemplateParam.UpdateReportTemplateParam) reportTemplateParam).getId()); + lambdaQueryWrapper.ne(ExcelRptTemp::getId, ((ReportTemplateParam.UpdateReportTemplateParam) reportTemplateParam).getId()); } } - int count = customReportMapper.selectCount(lambdaQueryWrapper); + //若存在条件数据抛出异常 + int count = excelRptTempMapper.selectCount(lambdaQueryWrapper); if (count > 0) { throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_REPEAT); } + } - if (StrUtil.isNotBlank(reportTemplateParam.getDeptId())) { - Dept dept = deptFeignClient.getDeptById(reportTemplateParam.getDeptId()).getData(); - if (Objects.isNull(dept)) { - throw new BusinessException(CommonResponseEnum.FAIL); - } + /** + * 组装influxDB查询sql,查询value并封装endlist + * + * @return 结果 + */ + private void assSql(ReportTemplateDTO data, StringBuilder sql, List endList, String method, ReportSearchParam reportSearchParam) { + InfluxDbUtils influxDBUtil = new InfluxDbUtils(influxDbConfig.getUserName(), influxDbConfig.getPassword(), influxDbConfig.getInfluxDBUrl(), influxDbConfig.getDatabase(), ""); + //sql拼接示例:select MAX(IHA2) as IHA2 from power_quality_data where Phase = 'A' and LineId='1324564568' and Stat_Method='max' tz('Asia/Shanghai') + if (InfluxDBTableConstant.NO_PHASE.equals(data.getPhase())) { + sql.append(method).append(InfluxDBSqlConstant.LBK).append(data.getTemplateName()).append(InfluxDBSqlConstant.RBK).append(InfluxDBSqlConstant.AS_VALUE) + .append(InfluxDBSqlConstant.FROM).append(data.getClassId()) + .append(InfluxDBSqlConstant.WHERE).append(InfluxDBTableConstant.LINE_ID).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(reportSearchParam.getLineId()).append(InfluxDBSqlConstant.QM) + .append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getStatMethod()).append(InfluxDBSqlConstant.QM) + .append(InfluxDBSqlConstant.TZ); + } else { + sql.append(method).append(InfluxDBSqlConstant.LBK).append(data.getTemplateName()).append(InfluxDBSqlConstant.RBK).append(InfluxDBSqlConstant.AS_VALUE) + .append(InfluxDBSqlConstant.FROM).append(data.getClassId()) + .append(InfluxDBSqlConstant.WHERE).append(InfluxDBTableConstant.LINE_ID).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(reportSearchParam.getLineId()).append(InfluxDBSqlConstant.QM) + .append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getStatMethod()).append(InfluxDBSqlConstant.QM) + .append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.PHASIC_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getPhase()).append(InfluxDBSqlConstant.QM) + .append(InfluxDBSqlConstant.TZ); + } - lambdaQueryWrapper.clear(); - lambdaQueryWrapper.eq(ReportTemplate::getDeptId, reportTemplateParam.getDeptId()) - .eq(ReportTemplate::getState, DataStateEnum.ENABLE.getCode()); + //根据不同的库表赋值 + QueryResult queryResult = influxDBUtil.query(String.valueOf(sql)); - if (isUpdate) { - if (reportTemplateParam instanceof ReportTemplateParam.UpdateReportTemplateParam) { - lambdaQueryWrapper.ne(ReportTemplate::getId, ((ReportTemplateParam.UpdateReportTemplateParam) reportTemplateParam).getId()); + //剖析influx数据,填入value + List results = queryResult.getResults(); + if (results.size() != 0) { + QueryResult.Result result = results.get(0); + if (result.getSeries() != null){ + List seriess = result.getSeries(); + if (seriess.size() != 0) { + QueryResult.Series series = seriess.get(0); + List columns = series.getColumns(); + List> values = series.getValues(); + for (List columnValue : values) { + for (int i = 0; i < columnValue.size(); i++) { + if (columns.get(i).equals("value")) { + data.setValue(columnValue.get(i).toString()); + } + } + } } } - - int countDept = customReportMapper.selectCount(lambdaQueryWrapper); - if (countDept > 0) { - throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_DEPT); - } } - - - DictData dictData = dicDataFeignClient.getDicDataById(reportTemplateParam.getReportType()).getData(); - - if (Objects.isNull(dictData)) { - throw new BusinessException(HarmonicResponseEnum.CUSTOM_TYPE); - } - + endList.add(data); } + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/NormLimitServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/NormLimitServiceImpl.java index 3537b4121..54ff35f28 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/NormLimitServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/NormLimitServiceImpl.java @@ -16,6 +16,7 @@ import lombok.SneakyThrows; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -40,7 +41,9 @@ public class NormLimitServiceImpl implements NormLimitService { List lineIds = new ArrayList<>(); if (type == 0) { //处理接口数据 - System.arraycopy(historyHarmOverLimitParam.getLineId(), 0, lineIds, 0, historyHarmOverLimitParam.getLineId().length); + for (int i = 0; i < historyHarmOverLimitParam.getLineId().length; i++) { + lineIds.addAll(Collections.singleton(historyHarmOverLimitParam.getLineId()[i])); + } } else { DeviceInfoParam deviceInfoParam = new DeviceInfoParam(); deviceInfoParam.setDeptIndex(RequestUtil.getDeptIndex()); 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 bcf04fa37..a4b522d4e 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 @@ -39,7 +39,8 @@ public enum DicDataTypeEnum { LINE_TYPE("监测点类型","Line_Type"), STEADY_STATIS("稳态指标","Steady_Statis"), EVENT_STATIS("暂态指标","Event_Statis"), - MONITORING_LABELS("监测点标签","Monitoring_Labels") + MONITORING_LABELS("监测点标签","Monitoring_Labels"), + POLLUTION_STATIS("污区图统计类型","Pollution_Statis") ;