自定义报表代码提交
This commit is contained in:
@@ -11,6 +11,8 @@ public interface Param {
|
|||||||
*/
|
*/
|
||||||
String LIMIT_TARGET = "limit_target";
|
String LIMIT_TARGET = "limit_target";
|
||||||
String LIMIT_RATE = "limit_rate";
|
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 PHASIC_TYPE = "phasic_type";
|
||||||
String PARENT_ID = "0";
|
String PARENT_ID = "0";
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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";
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -2,8 +2,6 @@ package com.njcn.harmonic.pojo.dto;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pqs
|
* pqs
|
||||||
*
|
*
|
||||||
@@ -13,17 +11,13 @@ import java.math.BigDecimal;
|
|||||||
@Data
|
@Data
|
||||||
public class ReportTemplateDTO {
|
public class ReportTemplateDTO {
|
||||||
/**
|
/**
|
||||||
* $HA#B#max$
|
* $HA[_25]#B#max#classId$
|
||||||
*/
|
*/
|
||||||
private String itemName;
|
private String itemName;
|
||||||
|
|
||||||
/**
|
|
||||||
* 对应mysql数据库中字段 HA
|
|
||||||
*/
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对应influxdb数据库中字段 HA_25
|
* 对应influxdb数据库中字段
|
||||||
*/
|
*/
|
||||||
private String templateName;
|
private String templateName;
|
||||||
|
|
||||||
@@ -37,6 +31,14 @@ public class ReportTemplateDTO {
|
|||||||
*/
|
*/
|
||||||
private String statMethod;
|
private String statMethod;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对应influxdb数据库的表名
|
||||||
|
*/
|
||||||
|
private String classId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 填入的value值
|
||||||
|
*/
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.Pattern;
|
import javax.validation.constraints.Pattern;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pqs
|
* pqs
|
||||||
@@ -18,25 +19,25 @@ import javax.validation.constraints.Pattern;
|
|||||||
@Data
|
@Data
|
||||||
public class ReportTemplateParam {
|
public class ReportTemplateParam {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ApiModelProperty(name = "name",value = "模板名称",required = true)
|
@ApiModelProperty(name = "name",value = "模板名称",required = true)
|
||||||
@NotBlank(message = "模板名称不可为空")
|
@NotBlank(message = "模板名称不可为空")
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
@ApiModelProperty(name = "docContent",value = "json内容",required = true)
|
@ApiModelProperty(name = "content",value = "json内容",required = true)
|
||||||
@NotBlank(message = "模板内容不可为空")
|
@NotBlank(message = "模板内容不可为空")
|
||||||
private String docContent;
|
private String content;
|
||||||
|
|
||||||
@ApiModelProperty(name = "deptId",value = "部门id")
|
@ApiModelProperty(name = "deptId",value = "部门id")
|
||||||
private String deptId;
|
private List<String> deptId;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "valueTitle",value = "存取库中")
|
||||||
|
private String valueTitle;
|
||||||
|
|
||||||
@ApiModelProperty(name = "reportType",value = "自定义报表类型",required = true)
|
@ApiModelProperty(name = "reportType",value = "自定义报表类型",required = true)
|
||||||
@NotBlank(message = "自定义报表类型不可为空")
|
@NotBlank(message = "自定义报表类型不可为空")
|
||||||
private String reportType;
|
private String reportType;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public static class UpdateReportTemplateParam extends ReportTemplateParam {
|
public static class UpdateReportTemplateParam extends ReportTemplateParam {
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ public class EleEpdPqd implements Serializable {
|
|||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
private String showName;
|
|
||||||
|
|
||||||
private String otherName;
|
private String otherName;
|
||||||
|
|
||||||
|
private String showName;
|
||||||
|
|
||||||
private Integer sort;
|
private Integer sort;
|
||||||
|
|
||||||
private String type;
|
private String type;
|
||||||
@@ -41,4 +41,6 @@ public class EleEpdPqd implements Serializable {
|
|||||||
private String classId;
|
private String classId;
|
||||||
|
|
||||||
private String statMethod;
|
private String statMethod;
|
||||||
|
|
||||||
|
private String systemType;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.njcn.harmonic.pojo.vo;
|
package com.njcn.harmonic.pojo.vo;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
|
||||||
import com.njcn.db.bo.BaseEntity;
|
import com.njcn.db.bo.BaseEntity;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
@@ -18,13 +17,14 @@ public class ReportTemplateVO extends BaseEntity {
|
|||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
private String docContent;
|
private String content;
|
||||||
|
|
||||||
private String deptId;
|
private String deptId;
|
||||||
|
|
||||||
private Integer active;
|
private Integer activation;
|
||||||
|
|
||||||
private Integer state;
|
private Integer state;
|
||||||
|
|
||||||
private String deptName;
|
private String deptName;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.njcn.harmonic.controller;
|
package com.njcn.harmonic.controller;
|
||||||
|
|
||||||
import cn.hutool.json.JSONArray;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||||
import com.njcn.common.pojo.constant.OperateType;
|
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.enums.response.CommonResponseEnum;
|
||||||
import com.njcn.common.pojo.response.HttpResult;
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
import com.njcn.common.utils.HttpResultUtil;
|
import com.njcn.common.utils.HttpResultUtil;
|
||||||
import com.njcn.common.utils.LogUtil;
|
import com.njcn.harmonic.pojo.param.ReportSearchParam;
|
||||||
import com.njcn.harmonic.pojo.param.ReportQueryParam;
|
|
||||||
import com.njcn.harmonic.pojo.param.ReportTemplateParam;
|
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.OverAreaLimitVO;
|
|
||||||
import com.njcn.harmonic.pojo.vo.OverAreaVO;
|
|
||||||
import com.njcn.harmonic.pojo.vo.ReportTemplateVO;
|
import com.njcn.harmonic.pojo.vo.ReportTemplateVO;
|
||||||
import com.njcn.harmonic.pojo.vo.ReportTreeVO;
|
import com.njcn.harmonic.pojo.vo.ReportTreeVO;
|
||||||
|
import com.njcn.harmonic.pojo.vo.SysDeptTempVO;
|
||||||
import com.njcn.harmonic.service.CustomReportService;
|
import com.njcn.harmonic.service.CustomReportService;
|
||||||
import com.njcn.web.controller.BaseController;
|
import com.njcn.web.controller.BaseController;
|
||||||
import com.njcn.web.pojo.param.BaseParam;
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
import io.swagger.annotations.ApiImplicitParams;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import io.swagger.models.auth.In;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
@@ -51,7 +44,7 @@ public class CustomReportController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 新增自定义报表模板
|
* 新增自定义报表模板
|
||||||
* @author cdf
|
* @author cdf
|
||||||
* @date 2022/8/16
|
* @date 2022/10/19
|
||||||
*/
|
*/
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType=OperateType.ADD)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType=OperateType.ADD)
|
||||||
@PostMapping("/addTemplate")
|
@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<List<ReportTemplateVO>> getTemplateList(@RequestBody ReportSearchParam reportSearchParam){
|
||||||
|
String methodDescribe = getMethodDescribe("getTemplateList");
|
||||||
|
List<ReportTemplateVO> 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<List<ReportTemplateVO>> getTemplateByDept(@RequestParam("id") String id){
|
||||||
|
String methodDescribe = getMethodDescribe("getTemplateList");
|
||||||
|
List<ReportTemplateVO> 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<Boolean> 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<ExcelRptTemp> getCustomReportTemplateById(@RequestParam("id") String id){
|
||||||
|
String methodDescribe = getMethodDescribe("getCustomReportTemplateById");
|
||||||
|
ExcelRptTemp excelRptTemp = customReportService.getCustomReportTemplateById(id);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, excelRptTemp, methodDescribe);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改自定义报表模板
|
* 修改自定义报表模板
|
||||||
* @author cdf
|
* @author qijian
|
||||||
* @date 2022/8/16
|
* @date 2022/10/18
|
||||||
*/
|
*/
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType=OperateType.UPDATE)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType=OperateType.UPDATE)
|
||||||
@PostMapping("/updateTemplate")
|
@PostMapping("/updateTemplate")
|
||||||
@@ -88,33 +144,17 @@ public class CustomReportController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询
|
* 绑定/解绑模板数据
|
||||||
* @author cdf
|
* @author qijian
|
||||||
* @date 2022/8/16
|
* @date 2022/10/19
|
||||||
*/
|
*/
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType=OperateType.UPDATE)
|
||||||
@PostMapping("/getTemplateList")
|
@PostMapping("/updateBindTemplate")
|
||||||
@ApiOperation("分页查询报表模板")
|
@ApiOperation("绑定/解绑模板数据")
|
||||||
@ApiImplicitParam(name = "baseParam", value = "实体参数", required = true)
|
@ApiImplicitParam(name = "reportSearchParams", value = "实体参数", required = false)
|
||||||
public HttpResult<Page<ReportTemplateVO>> getTemplateList(@RequestBody BaseParam baseParam){
|
public HttpResult<Boolean> updateBindTemplate(@RequestBody List<ReportSearchParam> reportSearchParams){
|
||||||
String methodDescribe = getMethodDescribe("getTemplateList");
|
String methodDescribe = getMethodDescribe("updateBindTemplate");
|
||||||
Page<ReportTemplateVO> page = customReportService.getReportTemplateList(baseParam);
|
boolean res = customReportService.updateBindTemplate(reportSearchParams);
|
||||||
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<Boolean> delTemplate(@RequestParam("id")String id){
|
|
||||||
String methodDescribe = getMethodDescribe("delTemplate");
|
|
||||||
boolean res = customReportService.delTemplate(id);
|
|
||||||
if(res){
|
if(res){
|
||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||||
}else {
|
}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<List<SysDeptTempVO>> getDataByTempId(@RequestParam("id")String id){
|
||||||
|
String methodDescribe = getMethodDescribe("getDataByTempId");
|
||||||
|
List<SysDeptTempVO> list = customReportService.getDataByTempId(id);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改激活状态
|
* 修改激活状态
|
||||||
* @author cdf
|
* @author qijian
|
||||||
* @date 2022/8/23
|
* @date 2022/10/17
|
||||||
*/
|
*/
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType=OperateType.UPDATE)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType=OperateType.UPDATE)
|
||||||
@GetMapping("/updateTemplateActive")
|
@PostMapping("/updateTemplateActive")
|
||||||
@ApiOperation("修改激活状态")
|
@ApiOperation("修改激活状态")
|
||||||
@ApiImplicitParam(name = "id", value = "模板id", required = true)
|
@ApiImplicitParam(name = "reportSearchParam", value = "实体参数", required = false)
|
||||||
public HttpResult<Page<ReportTemplate>> updateTemplateActive(@RequestParam("id")String id){
|
public HttpResult<Page<ExcelRptTemp>> updateTemplateActive(@RequestBody ReportSearchParam reportSearchParam){
|
||||||
String methodDescribe = getMethodDescribe("updateTemplateActive");
|
String methodDescribe = getMethodDescribe("updateTemplateActive");
|
||||||
boolean res = customReportService.updateStatus(id);
|
boolean res = customReportService.updateStatus(reportSearchParam);
|
||||||
if(res){
|
if(res){
|
||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||||
}else {
|
}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<ReportTemplate> 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<String> getCustomReport(@RequestBody @Validated ReportQueryParam reportQueryParam){
|
|
||||||
String methodDescribe = getMethodDescribe("getCustomReport");
|
|
||||||
String res = customReportService.getCustomReport(reportQueryParam);
|
|
||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, res, methodDescribe);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取报表模板树
|
* 获取报表模板树
|
||||||
* @author cdf
|
* @author cdf
|
||||||
@@ -189,5 +210,21 @@ public class CustomReportController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, res, methodDescribe);
|
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<String> getCustomReport(@RequestBody ReportSearchParam reportSearchParam){
|
||||||
|
String methodDescribe = getMethodDescribe("getCustomReport");
|
||||||
|
String res = customReportService.getCustomReport(reportSearchParam);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, res, methodDescribe);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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<ReportTemplate> {
|
|
||||||
|
|
||||||
Page<ReportTemplateVO> getReportTemplateList(Page<BaseParam> page, @Param("baseParam")BaseParam baseParam);
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
||||||
<mapper namespace="com.njcn.harmonic.mapper.CustomReportMapper">
|
|
||||||
|
|
||||||
<select id="getReportTemplateList" resultType="ReportTemplateVO">
|
|
||||||
select
|
|
||||||
a.id,
|
|
||||||
a.name,
|
|
||||||
a.dept_id,
|
|
||||||
b.name deptName,
|
|
||||||
a.active,
|
|
||||||
a.update_time,
|
|
||||||
c.name updateBy
|
|
||||||
from sys_report_template a
|
|
||||||
left join sys_dept b on a.dept_id = b.id
|
|
||||||
left join sys_user c on a.update_by = c.id
|
|
||||||
where a.state = 1
|
|
||||||
<if test="baseParam.searchValue!=null and baseParam.searchValue!=''">
|
|
||||||
and (
|
|
||||||
a.name like CONCAT('%', #{baseParam.searchValue},'%') or
|
|
||||||
b.name like CONCAT('%', #{baseParam.searchValue},'%')
|
|
||||||
)
|
|
||||||
</if>
|
|
||||||
</select>
|
|
||||||
</mapper>
|
|
||||||
@@ -1,17 +1,11 @@
|
|||||||
package com.njcn.harmonic.service;
|
package com.njcn.harmonic.service;
|
||||||
|
|
||||||
import cn.hutool.json.JSONArray;
|
import com.njcn.harmonic.pojo.param.ReportSearchParam;
|
||||||
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.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.ReportTemplateVO;
|
||||||
import com.njcn.harmonic.pojo.vo.ReportTreeVO;
|
import com.njcn.harmonic.pojo.vo.ReportTreeVO;
|
||||||
import com.njcn.web.pojo.param.BaseParam;
|
import com.njcn.harmonic.pojo.vo.SysDeptTempVO;
|
||||||
import io.swagger.v3.oas.annotations.parameters.RequestBody;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -26,58 +20,57 @@ public interface CustomReportService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增自定义报表模板
|
* 新增自定义报表模板
|
||||||
* @author cdf
|
* @author qijian
|
||||||
* @date 2022/8/16
|
* @date 2022/10/18
|
||||||
*/
|
*/
|
||||||
boolean addCustomReportTemplate(ReportTemplateParam reportTemplateParam);
|
boolean addCustomReportTemplate(ReportTemplateParam reportTemplateParam);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改自定义报表模板
|
* 修改自定义报表模板
|
||||||
* @author cdf
|
* @author qijian
|
||||||
* @date 2022/8/16
|
* @date 2022/10/18
|
||||||
*/
|
*/
|
||||||
boolean updateCustomReportTemplate(ReportTemplateParam reportTemplateParam);
|
boolean updateCustomReportTemplate(ReportTemplateParam reportTemplateParam);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据id获取模板
|
* 根据id获取模板
|
||||||
* @author cdf
|
* @author qijian
|
||||||
* @date 2022/8/16
|
* @date 2022/10/18
|
||||||
*/
|
*/
|
||||||
ReportTemplate getCustomReportTemplateById(String id);
|
ExcelRptTemp getCustomReportTemplateById(String id);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 模板列表
|
* 模板列表
|
||||||
* @author cdf
|
* @author qijian
|
||||||
* @date 2022/8/16
|
* @date 2022/10/18
|
||||||
*/
|
*/
|
||||||
Page<ReportTemplateVO> getReportTemplateList(BaseParam baseParam);
|
List<ReportTemplateVO> getTemplateList(ReportSearchParam reportSearchParam);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除模板
|
* 删除模板
|
||||||
* @author cdf
|
* @author qijian
|
||||||
* @date 2022/8/23
|
* @date 2022/10/18
|
||||||
*/
|
*/
|
||||||
boolean delTemplate(String id);
|
boolean delTemplate(ReportSearchParam reportSearchParam);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 切换模板激活状态
|
* 切换模板激活状态
|
||||||
* @author cdf
|
* @author qijian
|
||||||
* @date 2022/8/23
|
* @date 2022/10/18
|
||||||
*/
|
*/
|
||||||
boolean updateStatus(String id);
|
boolean updateStatus(ReportSearchParam reportSearchParam);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询报告
|
* 替换报表数据并返回
|
||||||
* @param reportQueryParam 请求参数
|
* @param reportSearchParam 请求参数
|
||||||
* @return JSONArray
|
* @author qijian
|
||||||
* @author cdf
|
* @date 2022/10/18
|
||||||
* @date 2022/8/26
|
|
||||||
*/
|
*/
|
||||||
String getCustomReport(ReportQueryParam reportQueryParam);
|
String getCustomReport(ReportSearchParam reportSearchParam);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -86,4 +79,25 @@ public interface CustomReportService {
|
|||||||
* @date 2022/8/26
|
* @date 2022/8/26
|
||||||
*/
|
*/
|
||||||
List<ReportTreeVO> reportChooseTree();
|
List<ReportTreeVO> reportChooseTree();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 绑定/解绑模板数据
|
||||||
|
* @author qijian
|
||||||
|
* @date 2022/10/18
|
||||||
|
*/
|
||||||
|
boolean updateBindTemplate(List<ReportSearchParam> reportSearchParams);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据模板ID查询数据
|
||||||
|
* @author qijian
|
||||||
|
* @date 2022/10/18
|
||||||
|
*/
|
||||||
|
List<SysDeptTempVO> getDataByTempId(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据部门查询模板
|
||||||
|
* @author qijian
|
||||||
|
* @date 2022/10/18
|
||||||
|
*/
|
||||||
|
List<ReportTemplateVO> getTemplateByDept(String id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,39 +1,40 @@
|
|||||||
package com.njcn.harmonic.service.impl;
|
package com.njcn.harmonic.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.json.JSONArray;
|
import cn.hutool.json.JSONArray;
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.common.DataStateEnum;
|
||||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
|
||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
import com.njcn.harmonic.enums.HarmonicResponseEnum;
|
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.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.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.param.ReportTemplateParam;
|
||||||
import com.njcn.harmonic.pojo.po.EleEpdPqd;
|
import com.njcn.harmonic.pojo.po.EleEpdPqd;
|
||||||
import com.njcn.harmonic.pojo.po.EventDetail;
|
import com.njcn.harmonic.pojo.po.ExcelRpt;
|
||||||
import com.njcn.harmonic.pojo.po.ReportTemplate;
|
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.ReportTemplateVO;
|
||||||
import com.njcn.harmonic.pojo.vo.ReportTreeVO;
|
import com.njcn.harmonic.pojo.vo.ReportTreeVO;
|
||||||
|
import com.njcn.harmonic.pojo.vo.SysDeptTempVO;
|
||||||
import com.njcn.harmonic.service.CustomReportService;
|
import com.njcn.harmonic.service.CustomReportService;
|
||||||
|
import com.njcn.influxdb.config.InfluxDbConfig;
|
||||||
import com.njcn.influxdb.param.InfluxDBPublicParam;
|
import com.njcn.influxdb.param.InfluxDBSqlConstant;
|
||||||
|
import com.njcn.influxdb.param.InfluxDBTableConstant;
|
||||||
import com.njcn.influxdb.utils.InfluxDbUtils;
|
import com.njcn.influxdb.utils.InfluxDbUtils;
|
||||||
import com.njcn.system.api.DicDataFeignClient;
|
import com.njcn.system.api.DicDataFeignClient;
|
||||||
import com.njcn.system.pojo.po.DictData;
|
|
||||||
import com.njcn.user.api.DeptFeignClient;
|
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.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.influxdb.dto.QueryResult;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -58,7 +59,9 @@ import java.util.stream.Stream;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class CustomReportServiceImpl implements CustomReportService {
|
public class CustomReportServiceImpl implements CustomReportService {
|
||||||
|
|
||||||
private final CustomReportMapper customReportMapper;
|
private final ExcelRptTempMapper excelRptTempMapper;
|
||||||
|
|
||||||
|
private final ExcelRptMapper excelRptMapper;
|
||||||
|
|
||||||
private final DeptFeignClient deptFeignClient;
|
private final DeptFeignClient deptFeignClient;
|
||||||
|
|
||||||
@@ -68,21 +71,39 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
|
|
||||||
private final DicDataFeignClient dicDataFeignClient;
|
private final DicDataFeignClient dicDataFeignClient;
|
||||||
|
|
||||||
|
private final DeptTempMapper deptTempMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private InfluxDbConfig influxDbConfig;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean addCustomReportTemplate(ReportTemplateParam reportTemplateParam) {
|
public boolean addCustomReportTemplate(ReportTemplateParam reportTemplateParam) {
|
||||||
checkName(reportTemplateParam, false);
|
checkName(reportTemplateParam, false);
|
||||||
|
|
||||||
|
//检验模板json数据规范
|
||||||
try {
|
try {
|
||||||
new JSONArray(reportTemplateParam.getDocContent());
|
new JSONArray(reportTemplateParam.getContent());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
|
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
|
||||||
}
|
}
|
||||||
|
|
||||||
ReportTemplate reportTemplate = new ReportTemplate();
|
//新增模板表
|
||||||
BeanUtils.copyProperties(reportTemplateParam, reportTemplate);
|
ExcelRptTemp excelRptTemp = new ExcelRptTemp();
|
||||||
reportTemplate.setState(DataStateEnum.ENABLE.getCode());
|
BeanUtils.copyProperties(reportTemplateParam, excelRptTemp);
|
||||||
reportTemplate.setActive(DataStateEnum.DELETED.getCode());
|
excelRptTemp.setState(DataStateEnum.ENABLE.getCode());
|
||||||
customReportMapper.insert(reportTemplate);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,226 +111,211 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
public boolean updateCustomReportTemplate(ReportTemplateParam reportTemplateParam) {
|
public boolean updateCustomReportTemplate(ReportTemplateParam reportTemplateParam) {
|
||||||
checkName(reportTemplateParam, true);
|
checkName(reportTemplateParam, true);
|
||||||
|
|
||||||
|
//检验模板json数据规范
|
||||||
try {
|
try {
|
||||||
new JSONArray(reportTemplateParam.getDocContent());
|
new JSONArray(reportTemplateParam.getContent());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
|
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
|
||||||
}
|
}
|
||||||
|
|
||||||
ReportTemplate reportTemplate = new ReportTemplate();
|
//修改模板数据
|
||||||
BeanUtils.copyProperties(reportTemplateParam, reportTemplate);
|
ExcelRptTemp excelRptTemp = new ExcelRptTemp();
|
||||||
customReportMapper.updateById(reportTemplate);
|
BeanUtils.copyProperties(reportTemplateParam, excelRptTemp);
|
||||||
|
excelRptTempMapper.updateById(excelRptTemp);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ReportTemplate getCustomReportTemplateById(String id) {
|
public boolean updateBindTemplate(List<ReportSearchParam> reportSearchParams) {
|
||||||
return customReportMapper.selectById(id);
|
//1、根据模板主键删除绑定的部门数据
|
||||||
|
LambdaQueryWrapper<SysDeptTemp> 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
|
@Override
|
||||||
public Page<ReportTemplateVO> getReportTemplateList(BaseParam baseParam) {
|
public List<SysDeptTempVO> getDataByTempId(String id) {
|
||||||
return customReportMapper.getReportTemplateList(new Page<>(PageFactory.getPageNum(baseParam), PageFactory.getPageSize(baseParam)), baseParam);
|
return deptTempMapper.getDeptTempByTempId(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean delTemplate(String id) {
|
public List<ReportTemplateVO> getTemplateByDept(String id) {
|
||||||
ReportTemplate reportTemplate = new ReportTemplate();
|
return excelRptTempMapper.getReportTemplateByDept(id);
|
||||||
reportTemplate.setId(id);
|
}
|
||||||
reportTemplate.setState(DataStateEnum.DELETED.getCode());
|
|
||||||
customReportMapper.updateById(reportTemplate);
|
@Override
|
||||||
|
public ExcelRptTemp getCustomReportTemplateById(String id) {
|
||||||
|
return excelRptTempMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ReportTemplateVO> getTemplateList(ReportSearchParam reportSearchParam) {
|
||||||
|
return excelRptTempMapper.getReportTemplateList(reportSearchParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean delTemplate(ReportSearchParam reportSearchParam) {
|
||||||
|
//根据模板ID和部门ID删除绑定的数据
|
||||||
|
LambdaQueryWrapper<SysDeptTemp> lambdaQuery = new LambdaQueryWrapper<>();
|
||||||
|
lambdaQuery.eq(SysDeptTemp::getTempId, reportSearchParam.getTempId()).eq(SysDeptTemp::getDeptId, reportSearchParam.getDeptId());
|
||||||
|
deptTempMapper.delete(lambdaQuery);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public boolean updateStatus(String id) {
|
public boolean updateStatus(ReportSearchParam reportSearchParam) {
|
||||||
ReportTemplate report = new ReportTemplate();
|
//先全体把激活的改为未激活,再改单个的激活值
|
||||||
report.setActive(0);
|
deptTempMapper.updateAllActivation(reportSearchParam.getDeptId());
|
||||||
UpdateWrapper<ReportTemplate> updateWrapper = new UpdateWrapper<>();
|
|
||||||
updateWrapper.eq("sys_report_template.active", 1).eq("sys_report_template.state", 1);
|
|
||||||
customReportMapper.update(report, updateWrapper);
|
|
||||||
|
|
||||||
ReportTemplate reportTemplate = new ReportTemplate();
|
SysDeptTemp sysDeptTemp = new SysDeptTemp();
|
||||||
reportTemplate.setId(id);
|
BeanUtils.copyProperties(reportSearchParam, sysDeptTemp);
|
||||||
reportTemplate.setActive(DataStateEnum.ENABLE.getCode());
|
deptTempMapper.updateActivation(sysDeptTemp);
|
||||||
customReportMapper.updateById(reportTemplate);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getCustomReport(ReportQueryParam reportQueryParam) {
|
public String getCustomReport(ReportSearchParam reportSearchParam) {
|
||||||
|
|
||||||
|
ExcelRptTemp excelRptTemp = excelRptTempMapper.selectById(reportSearchParam.getTempId());
|
||||||
LambdaQueryWrapper<ReportTemplate> lambdaQuery = new LambdaQueryWrapper<>();
|
if (Objects.isNull(excelRptTemp)) {
|
||||||
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);
|
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_ACTIVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> stringList = new ArrayList<>();
|
//根据content,获取v值并进行处理
|
||||||
List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>();
|
List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>();
|
||||||
JSONArray jsonArray = null;
|
JSONArray jsonArray = null;
|
||||||
try {
|
try {
|
||||||
jsonArray = JSONUtil.parseArray(tem.getDocContent());
|
jsonArray = JSONUtil.parseArray(excelRptTemp.getContent());
|
||||||
jsonArray.forEach(item -> {
|
jsonArray.forEach(item -> {
|
||||||
JSONObject jsonObject = (JSONObject) item;
|
JSONObject jsonObject = (JSONObject) item;
|
||||||
JSONArray itemArr = (JSONArray) jsonObject.get("data");
|
JSONArray itemArr = (JSONArray) jsonObject.get("celldata");
|
||||||
itemArr.forEach((ite) -> {
|
itemArr.forEach((it) -> {
|
||||||
JSONArray j = (JSONArray) ite;
|
|
||||||
j.forEach(it -> {
|
|
||||||
if (Objects.nonNull(it) && !"null".equals(it.toString())) {
|
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")) {
|
if (son.containsKey("v")) {
|
||||||
String v = son.getStr("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("#")) {
|
if (v.charAt(0) == '$' && v.contains("#")) {
|
||||||
|
//剔除前后$
|
||||||
v = v.replace("$", "");
|
v = v.replace("$", "");
|
||||||
|
//封装ReportTemplateDTO
|
||||||
String[] vItem = v.split("#");
|
|
||||||
|
|
||||||
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
|
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
|
||||||
reportTemplateDTO.setItemName(v);
|
reportTemplateDTO.setItemName(v);
|
||||||
String t = vItem[0].replace("_", "");
|
//根据#分割数据
|
||||||
if (vItem.length == 3) {
|
String[] vItem = v.split("#");
|
||||||
|
if (vItem.length == 4) {
|
||||||
reportTemplateDTO.setTemplateName(t);
|
//$HA[_25]#B#max#classId$
|
||||||
|
reportTemplateDTO.setTemplateName(vItem[0]);
|
||||||
reportTemplateDTO.setPhase(vItem[1]);
|
reportTemplateDTO.setPhase(vItem[1]);
|
||||||
reportTemplateDTO.setStatMethod(vItem[2]);
|
reportTemplateDTO.setStatMethod(vItem[2].toUpperCase());
|
||||||
|
reportTemplateDTO.setClassId(vItem[3]);
|
||||||
} else if (vItem.length == 2) {
|
} else if (vItem.length == 3) {
|
||||||
reportTemplateDTO.setTemplateName(t);
|
//$HA[_25]#max#classId$
|
||||||
reportTemplateDTO.setStatMethod(vItem[1]);
|
reportTemplateDTO.setTemplateName(vItem[0]);
|
||||||
reportTemplateDTO.setPhase("M");
|
reportTemplateDTO.setPhase("M");
|
||||||
|
reportTemplateDTO.setStatMethod(vItem[1].toUpperCase());
|
||||||
|
reportTemplateDTO.setClassId(vItem[2]);
|
||||||
}
|
}
|
||||||
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);
|
reportTemplateDTOList.add(reportTemplateDTO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
|
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
List<ReportTemplateDTO> endList = new ArrayList<>();
|
List<ReportTemplateDTO> endList = new ArrayList<>();
|
||||||
|
if (CollUtil.isNotEmpty(reportTemplateDTOList)) {
|
||||||
if(CollUtil.isEmpty(stringList) ||CollUtil.isEmpty(reportTemplateDTOList)){
|
|
||||||
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_EMPTY);
|
|
||||||
}
|
|
||||||
|
|
||||||
LambdaQueryWrapper<EleEpdPqd> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
||||||
lambdaQueryWrapper.in(EleEpdPqd::getName, stringList.stream().distinct().collect(Collectors.toList())).orderByAsc(EleEpdPqd::getSort);
|
|
||||||
List<EleEpdPqd> eleEpdPqdList = eleEpdMapper.selectList(lambdaQueryWrapper);
|
|
||||||
Map<String, List<EleEpdPqd>> mapEpd = eleEpdPqdList.stream().collect(Collectors.groupingBy(EleEpdPqd::getClassId));
|
|
||||||
|
|
||||||
if(mapEpd.size() == 0){
|
|
||||||
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_EMPTY);
|
|
||||||
}
|
|
||||||
|
|
||||||
mapEpd.forEach((key, tableClass) -> {
|
|
||||||
|
|
||||||
List<String> column = tableClass.stream().map(EleEpdPqd::getName).distinct().collect(Collectors.toList());
|
|
||||||
List<ReportTemplateDTO> classList = reportTemplateDTOList.stream().filter(item -> column.contains(item.getName())).collect(Collectors.toList());
|
|
||||||
|
|
||||||
Map<String, List<ReportTemplateDTO>> phaseMap = classList.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getPhase));
|
|
||||||
|
|
||||||
//开始组织sql
|
//开始组织sql
|
||||||
phaseMap.forEach((phKey, phValue) -> {
|
reportTemplateDTOList.stream().forEach(data -> {
|
||||||
|
StringBuilder sql = new StringBuilder(InfluxDBSqlConstant.SELECT);
|
||||||
Map<String, List<ReportTemplateDTO>> statMap = phValue.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getStatMethod));
|
if (InfluxDBTableConstant.MAX.equals(data.getStatMethod())) {
|
||||||
statMap.forEach((statKey, statValue) -> {
|
assSql(data, sql, endList, InfluxDBSqlConstant.MAX, reportSearchParam);
|
||||||
StringBuilder sql = new StringBuilder("select ");
|
} else if (InfluxDBTableConstant.MIN.equals(data.getStatMethod())) {
|
||||||
if ("max".equals(statKey)) {
|
assSql(data, sql, endList, InfluxDBSqlConstant.MIN, reportSearchParam);
|
||||||
assSql(statValue, sql, key, phKey, statKey, endList, "MAX",reportQueryParam);
|
} else if (InfluxDBTableConstant.AVG.equals(data.getStatMethod())) {
|
||||||
} else if ("min".equals(statKey)) {
|
assSql(data, sql, endList, InfluxDBSqlConstant.AVG, reportSearchParam);
|
||||||
assSql(statValue, sql, key, phKey, statKey, endList, "MIN",reportQueryParam);
|
} else if (InfluxDBTableConstant.CP95.equals(data.getStatMethod())) {
|
||||||
} else if ("avg".equals(statKey)) {
|
assSql(data, sql, endList, InfluxDBSqlConstant.CP95, reportSearchParam);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (CollUtil.isNotEmpty(endList)) {
|
||||||
//进行反向赋值到模板
|
//进行反向赋值到模板
|
||||||
|
//1、根据itemName分组
|
||||||
Map<String, List<ReportTemplateDTO>> assMap = endList.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getItemName));
|
Map<String, List<ReportTemplateDTO>> assMap = endList.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getItemName));
|
||||||
|
//2、把itemName的value赋给v和m
|
||||||
jsonArray.forEach(item -> {
|
jsonArray.forEach(item -> {
|
||||||
JSONObject jsonObject = (JSONObject) item;
|
JSONObject jsonObject = (JSONObject) item;
|
||||||
JSONArray itemArr = (JSONArray) jsonObject.get("data");
|
JSONArray itemArr = (JSONArray) jsonObject.get("celldata");
|
||||||
itemArr.forEach((ite) -> {
|
itemArr.forEach((it) -> {
|
||||||
JSONArray j = (JSONArray) ite;
|
|
||||||
j.forEach(it -> {
|
|
||||||
if (Objects.nonNull(it) && !"null".equals(it.toString())) {
|
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")) {
|
if (son.containsKey("v")) {
|
||||||
String v = son.getStr("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("#")) {
|
if (v.charAt(0) == '$' && v.contains("#")) {
|
||||||
String str = assMap.get(v.replace("$", "")).get(0).getValue();
|
String str = assMap.get(v.replace("$", "")).get(0).getValue();
|
||||||
|
//没有值,赋"/"
|
||||||
|
if (StringUtils.isBlank(str)) {
|
||||||
|
str = "/";
|
||||||
|
}
|
||||||
son.set("v", str);
|
son.set("v", str);
|
||||||
son.set("m", str);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
return jsonArray.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String content = jsonArray.toString();
|
||||||
private void assSql(List<ReportTemplateDTO> statValue, StringBuilder sql, String key, String phKey, String statKey, List<ReportTemplateDTO> endList, String tag,ReportQueryParam reportQueryParam) {
|
//根据模板激活状态,判断是否进库(未激活不进库,已激活进库)
|
||||||
for (int i = 0; i < statValue.size(); i++) {
|
if (DataStateEnum.ENABLE.getCode().equals(reportSearchParam.getActivation())) {
|
||||||
if (i == statValue.size() - 1) {
|
//存入报表库
|
||||||
sql.append(tag).append("(").append(statValue.get(i).getTemplateName()).append(") as ").append(statValue.get(i).getTemplateName());
|
ExcelRpt excelRpt = new ExcelRpt();
|
||||||
} else {
|
excelRpt.setName(excelRptTemp.getName());
|
||||||
sql.append(tag).append("(").append(statValue.get(i).getTemplateName()).append(") as ").append(statValue.get(i).getTemplateName()).append(",");
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
return content;
|
||||||
List<Map<String, Object>> resMap = influxDbUtils.getMapResult(sql.toString());
|
|
||||||
|
|
||||||
if (CollUtil.isNotEmpty(resMap)) {
|
|
||||||
List<ReportTemplateDTO> 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
|
@Override
|
||||||
public List<ReportTreeVO> reportChooseTree() {
|
public List<ReportTreeVO> reportChooseTree() {
|
||||||
long a = System.currentTimeMillis();
|
long a = System.currentTimeMillis();
|
||||||
LambdaQueryWrapper<EleEpdPqd> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<EleEpdPqd> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
lambdaQueryWrapper.isNotNull(EleEpdPqd::getOtherName);
|
||||||
lambdaQueryWrapper.orderByAsc(EleEpdPqd::getSort);
|
lambdaQueryWrapper.orderByAsc(EleEpdPqd::getSort);
|
||||||
List<EleEpdPqd> list = eleEpdMapper.selectList(lambdaQueryWrapper);
|
List<EleEpdPqd> list = eleEpdMapper.selectList(lambdaQueryWrapper);
|
||||||
Map<String, List<EleEpdPqd>> map = list.stream().collect(Collectors.groupingBy(EleEpdPqd::getName));
|
Map<String, List<EleEpdPqd>> map = list.stream().collect(Collectors.groupingBy(EleEpdPqd::getOtherName));
|
||||||
|
|
||||||
List<ReportTreeVO> tree = new ArrayList<>();
|
List<ReportTreeVO> tree = new ArrayList<>();
|
||||||
map.forEach((key, value) -> {
|
map.forEach((key, value) -> {
|
||||||
@@ -323,7 +329,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
List<ReportTreeVO> reHarm = new ArrayList<>();
|
List<ReportTreeVO> reHarm = new ArrayList<>();
|
||||||
for (int i = value.get(0).getHarmStart(); i < value.get(0).getHarmEnd(); i++) {
|
for (int i = value.get(0).getHarmStart(); i < value.get(0).getHarmEnd(); i++) {
|
||||||
ReportTreeVO reportTreeCount = new ReportTreeVO();
|
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());
|
reportTreeCount.setShowName(i + "次" + value.get(0).getShowName());
|
||||||
reportTreeVO.setFlag(1);
|
reportTreeVO.setFlag(1);
|
||||||
assPhase(value, reportTreeCount, reportTreeCount.getName());
|
assPhase(value, reportTreeCount, reportTreeCount.getName());
|
||||||
@@ -341,12 +347,11 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
return tree;
|
return tree;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*组装相别*/
|
/*组装相别*/
|
||||||
private void assPhase(List<EleEpdPqd> value, ReportTreeVO reportTreeItem, String key) {
|
private void assPhase(List<EleEpdPqd> value, ReportTreeVO reportTreeItem, String key) {
|
||||||
if (Objects.nonNull(value.get(0).getPhase()) && !"M".equals(value.get(0).getPhase())) {
|
|
||||||
List<ReportTreeVO> phaseTree = new ArrayList<>();
|
List<ReportTreeVO> phaseTree = new ArrayList<>();
|
||||||
value.forEach(item -> {
|
value.forEach(item -> {
|
||||||
|
if (Objects.nonNull(item.getPhase()) && !"M".equals(item.getPhase())) {
|
||||||
List<ReportTreeVO> statTree = new ArrayList<>();
|
List<ReportTreeVO> statTree = new ArrayList<>();
|
||||||
ReportTreeVO reportTreePhase = new ReportTreeVO();
|
ReportTreeVO reportTreePhase = new ReportTreeVO();
|
||||||
reportTreePhase.setName(item.getPhase());
|
reportTreePhase.setName(item.getPhase());
|
||||||
@@ -355,13 +360,15 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
assStatMethod(item, statTree, key, item.getPhase());
|
assStatMethod(item, statTree, key, item.getPhase());
|
||||||
reportTreePhase.setChildren(statTree);
|
reportTreePhase.setChildren(statTree);
|
||||||
phaseTree.add(reportTreePhase);
|
phaseTree.add(reportTreePhase);
|
||||||
});
|
|
||||||
reportTreeItem.setChildren(phaseTree);
|
|
||||||
} else {
|
} else {
|
||||||
List<ReportTreeVO> statTree = new ArrayList<>();
|
List<ReportTreeVO> statTree = new ArrayList<>();
|
||||||
assStatMethod(value.get(0), statTree,key,"");
|
assStatMethod(item, statTree, key, "");
|
||||||
reportTreeItem.setChildren(statTree);
|
reportTreeItem.setChildren(statTree);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
reportTreeItem.setChildren(phaseTree);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -374,9 +381,9 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
stat.forEach(statItem -> {
|
stat.forEach(statItem -> {
|
||||||
ReportTreeVO reportTreeStat = new ReportTreeVO();
|
ReportTreeVO reportTreeStat = new ReportTreeVO();
|
||||||
if (StrUtil.isNotBlank(twoKey)) {
|
if (StrUtil.isNotBlank(twoKey)) {
|
||||||
reportTreeStat.setName("$"+oneKey+"#"+twoKey+"#"+statItem+"$");
|
reportTreeStat.setName("$" + oneKey + "#" + twoKey + "#" + statItem + "#" + item.getClassId().trim() + "$");
|
||||||
} else {
|
} else {
|
||||||
reportTreeStat.setName("$"+oneKey+"#"+statItem+"$");
|
reportTreeStat.setName("$" + oneKey + "#" + statItem + "#" + item.getClassId().trim() + "$");
|
||||||
}
|
}
|
||||||
|
|
||||||
reportTreeStat.setShowName(statItem);
|
reportTreeStat.setShowName(statItem);
|
||||||
@@ -387,51 +394,79 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查名称是否已存在
|
||||||
|
*
|
||||||
|
* @param reportTemplateParam,isUpdate 参数
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
private void checkName(ReportTemplateParam reportTemplateParam, boolean isUpdate) {
|
private void checkName(ReportTemplateParam reportTemplateParam, boolean isUpdate) {
|
||||||
LambdaQueryWrapper<ReportTemplate> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ExcelRptTemp> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
lambdaQueryWrapper.eq(ReportTemplate::getState, DataStateEnum.ENABLE.getCode()).eq(ReportTemplate::getName, reportTemplateParam.getName());
|
//条件组合:where state = 1 and name = ?
|
||||||
|
lambdaQueryWrapper.eq(ExcelRptTemp::getState, DataStateEnum.ENABLE.getCode()).eq(ExcelRptTemp::getName, reportTemplateParam.getName());
|
||||||
|
|
||||||
|
//and id <> ?
|
||||||
if (isUpdate) {
|
if (isUpdate) {
|
||||||
if (reportTemplateParam instanceof ReportTemplateParam.UpdateReportTemplateParam) {
|
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) {
|
if (count > 0) {
|
||||||
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_REPEAT);
|
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lambdaQueryWrapper.clear();
|
/**
|
||||||
lambdaQueryWrapper.eq(ReportTemplate::getDeptId, reportTemplateParam.getDeptId())
|
* 组装influxDB查询sql,查询value并封装endlist
|
||||||
.eq(ReportTemplate::getState, DataStateEnum.ENABLE.getCode());
|
*
|
||||||
|
* @return 结果
|
||||||
if (isUpdate) {
|
*/
|
||||||
if (reportTemplateParam instanceof ReportTemplateParam.UpdateReportTemplateParam) {
|
private void assSql(ReportTemplateDTO data, StringBuilder sql, List<ReportTemplateDTO> endList, String method, ReportSearchParam reportSearchParam) {
|
||||||
lambdaQueryWrapper.ne(ReportTemplate::getId, ((ReportTemplateParam.UpdateReportTemplateParam) reportTemplateParam).getId());
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
int countDept = customReportMapper.selectCount(lambdaQueryWrapper);
|
//根据不同的库表赋值
|
||||||
if (countDept > 0) {
|
QueryResult queryResult = influxDBUtil.query(String.valueOf(sql));
|
||||||
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_DEPT);
|
|
||||||
|
//剖析influx数据,填入value
|
||||||
|
List<QueryResult.Result> results = queryResult.getResults();
|
||||||
|
if (results.size() != 0) {
|
||||||
|
QueryResult.Result result = results.get(0);
|
||||||
|
if (result.getSeries() != null){
|
||||||
|
List<QueryResult.Series> seriess = result.getSeries();
|
||||||
|
if (seriess.size() != 0) {
|
||||||
|
QueryResult.Series series = seriess.get(0);
|
||||||
|
List<String> columns = series.getColumns();
|
||||||
|
List<List<Object>> values = series.getValues();
|
||||||
|
for (List<Object> columnValue : values) {
|
||||||
|
for (int i = 0; i < columnValue.size(); i++) {
|
||||||
|
if (columns.get(i).equals("value")) {
|
||||||
|
data.setValue(columnValue.get(i).toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
DictData dictData = dicDataFeignClient.getDicDataById(reportTemplateParam.getReportType()).getData();
|
}
|
||||||
|
}
|
||||||
if (Objects.isNull(dictData)) {
|
endList.add(data);
|
||||||
throw new BusinessException(HarmonicResponseEnum.CUSTOM_TYPE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import lombok.SneakyThrows;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -40,7 +41,9 @@ public class NormLimitServiceImpl implements NormLimitService {
|
|||||||
List<String> lineIds = new ArrayList<>();
|
List<String> lineIds = new ArrayList<>();
|
||||||
if (type == 0) {
|
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 {
|
} else {
|
||||||
DeviceInfoParam deviceInfoParam = new DeviceInfoParam();
|
DeviceInfoParam deviceInfoParam = new DeviceInfoParam();
|
||||||
deviceInfoParam.setDeptIndex(RequestUtil.getDeptIndex());
|
deviceInfoParam.setDeptIndex(RequestUtil.getDeptIndex());
|
||||||
|
|||||||
@@ -39,7 +39,8 @@ public enum DicDataTypeEnum {
|
|||||||
LINE_TYPE("监测点类型","Line_Type"),
|
LINE_TYPE("监测点类型","Line_Type"),
|
||||||
STEADY_STATIS("稳态指标","Steady_Statis"),
|
STEADY_STATIS("稳态指标","Steady_Statis"),
|
||||||
EVENT_STATIS("暂态指标","Event_Statis"),
|
EVENT_STATIS("暂态指标","Event_Statis"),
|
||||||
MONITORING_LABELS("监测点标签","Monitoring_Labels")
|
MONITORING_LABELS("监测点标签","Monitoring_Labels"),
|
||||||
|
POLLUTION_STATIS("污区图统计类型","Pollution_Statis")
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user