|
|
|
|
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import cn.hutool.json.JSONArray;
|
|
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
@@ -14,8 +15,10 @@ import com.njcn.harmonic.enums.HarmonicResponseEnum;
|
|
|
|
|
import com.njcn.harmonic.mapper.CustomReportMapper;
|
|
|
|
|
import com.njcn.harmonic.mapper.EleEpdMapper;
|
|
|
|
|
import com.njcn.harmonic.pojo.dto.ReportTemplateDTO;
|
|
|
|
|
import com.njcn.harmonic.pojo.param.ReportQueryParam;
|
|
|
|
|
import com.njcn.harmonic.pojo.param.ReportTemplateParam;
|
|
|
|
|
import com.njcn.harmonic.pojo.po.EleEpdPqd;
|
|
|
|
|
import com.njcn.harmonic.pojo.po.EventDetail;
|
|
|
|
|
import com.njcn.harmonic.pojo.po.ReportTemplate;
|
|
|
|
|
import com.njcn.harmonic.pojo.vo.ReportTemplateVO;
|
|
|
|
|
import com.njcn.harmonic.pojo.vo.ReportTreeVO;
|
|
|
|
|
@@ -106,7 +109,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Page<ReportTemplateVO> getReportTemplateList(BaseParam baseParam) {
|
|
|
|
|
return customReportMapper.getReportTemplateList(new Page<>(PageFactory.getPageNum(baseParam),PageFactory.getPageSize(baseParam)),baseParam);
|
|
|
|
|
return customReportMapper.getReportTemplateList(new Page<>(PageFactory.getPageNum(baseParam), PageFactory.getPageSize(baseParam)), baseParam);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@@ -124,8 +127,8 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|
|
|
|
ReportTemplate report = new ReportTemplate();
|
|
|
|
|
report.setActive(0);
|
|
|
|
|
UpdateWrapper<ReportTemplate> updateWrapper = new UpdateWrapper<>();
|
|
|
|
|
updateWrapper.eq("sys_report_template.active",1).eq("sys_report_template.state",1);
|
|
|
|
|
customReportMapper.update(report,updateWrapper);
|
|
|
|
|
updateWrapper.eq("sys_report_template.active", 1).eq("sys_report_template.state", 1);
|
|
|
|
|
customReportMapper.update(report, updateWrapper);
|
|
|
|
|
|
|
|
|
|
ReportTemplate reportTemplate = new ReportTemplate();
|
|
|
|
|
reportTemplate.setId(id);
|
|
|
|
|
@@ -136,204 +139,136 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public JSONArray getCustomReport() {
|
|
|
|
|
public String getCustomReport(ReportQueryParam reportQueryParam) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<ReportTemplate> lambdaQuery = new LambdaQueryWrapper<>();
|
|
|
|
|
lambdaQuery.eq(ReportTemplate::getActive, DataStateEnum.ENABLE.getCode())
|
|
|
|
|
.eq(ReportTemplate::getState, DataStateEnum.ENABLE.getCode());
|
|
|
|
|
ReportTemplate tem = customReportMapper.selectOne(lambdaQuery);
|
|
|
|
|
|
|
|
|
|
if (Objects.isNull(tem)) {
|
|
|
|
|
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_ACTIVE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<String> stringList = new ArrayList<>();
|
|
|
|
|
List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>();
|
|
|
|
|
JSONArray jsonArray = null;
|
|
|
|
|
try {
|
|
|
|
|
jsonArray = JSONUtil.parseArray(tem.getDocContent());
|
|
|
|
|
jsonArray.forEach(item -> {
|
|
|
|
|
JSONObject jsonObject = (JSONObject) item;
|
|
|
|
|
JSONArray itemArr = (JSONArray) jsonObject.get("data");
|
|
|
|
|
itemArr.forEach((ite) -> {
|
|
|
|
|
JSONArray j = (JSONArray) ite;
|
|
|
|
|
j.forEach(it -> {
|
|
|
|
|
if (Objects.nonNull(it) && !"null".equals(it.toString())) {
|
|
|
|
|
JSONObject son = (JSONObject) it; //获取到1列
|
|
|
|
|
if (son.containsKey("v")) {
|
|
|
|
|
String v = son.getStr("v");
|
|
|
|
|
System.out.println(v);
|
|
|
|
|
if (v.charAt(0) == '$' && v.contains("#")) {
|
|
|
|
|
v = v.replace("$", "");
|
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<ReportTemplate> lambdaQuery= new LambdaQueryWrapper<>();
|
|
|
|
|
lambdaQuery.eq(ReportTemplate::getActive,DataStateEnum.ENABLE.getCode())
|
|
|
|
|
.eq(ReportTemplate::getState,DataStateEnum.ENABLE.getCode());
|
|
|
|
|
ReportTemplate tem = customReportMapper.selectOne(lambdaQuery);
|
|
|
|
|
JSONArray jsonArray = new JSONArray(tem.getDocContent());
|
|
|
|
|
jsonArray.forEach(item->{
|
|
|
|
|
JSONObject jsonObject = (JSONObject)item;
|
|
|
|
|
JSONArray itemArr = (JSONArray) jsonObject.get("data");
|
|
|
|
|
itemArr.forEach((ite)->{
|
|
|
|
|
JSONArray j = (JSONArray)ite;
|
|
|
|
|
j.forEach(it->{
|
|
|
|
|
if (Objects.nonNull(it) && !"null".equals(it.toString())) {
|
|
|
|
|
JSONObject son = (JSONObject) it; //获取到1列
|
|
|
|
|
if (son.containsKey("v")) {
|
|
|
|
|
String v = son.getStr("v");
|
|
|
|
|
System.out.println(v);
|
|
|
|
|
if (v.charAt(0) == '$' && v.contains("#")) {
|
|
|
|
|
v=v.replace("$","");
|
|
|
|
|
String[] vItem = v.split("#");
|
|
|
|
|
|
|
|
|
|
String[] vItem = v.split("#");
|
|
|
|
|
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
|
|
|
|
|
reportTemplateDTO.setItemName(v);
|
|
|
|
|
String t = vItem[0].replace("_", "");
|
|
|
|
|
if (vItem.length == 3) {
|
|
|
|
|
|
|
|
|
|
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
|
|
|
|
|
reportTemplateDTO.setItemName(v);
|
|
|
|
|
String t = vItem[0].replace("_","");
|
|
|
|
|
if(vItem.length == 3){
|
|
|
|
|
reportTemplateDTO.setTemplateName(t);
|
|
|
|
|
reportTemplateDTO.setPhase(vItem[1]);
|
|
|
|
|
reportTemplateDTO.setStatMethod(vItem[2]);
|
|
|
|
|
|
|
|
|
|
reportTemplateDTO.setTemplateName(t);
|
|
|
|
|
reportTemplateDTO.setPhase(vItem[1]);
|
|
|
|
|
reportTemplateDTO.setStatMethod(vItem[2]);
|
|
|
|
|
|
|
|
|
|
}else if(vItem.length == 2){
|
|
|
|
|
reportTemplateDTO.setTemplateName(t);
|
|
|
|
|
reportTemplateDTO.setStatMethod(vItem[1]);
|
|
|
|
|
reportTemplateDTO.setPhase("M");
|
|
|
|
|
} else if (vItem.length == 2) {
|
|
|
|
|
reportTemplateDTO.setTemplateName(t);
|
|
|
|
|
reportTemplateDTO.setStatMethod(vItem[1]);
|
|
|
|
|
reportTemplateDTO.setPhase("M");
|
|
|
|
|
}
|
|
|
|
|
if (vItem[0].contains("_")) {
|
|
|
|
|
String col = vItem[0].split("_")[0];
|
|
|
|
|
reportTemplateDTO.setName(col);
|
|
|
|
|
stringList.add(col);
|
|
|
|
|
} else {
|
|
|
|
|
reportTemplateDTO.setName(vItem[0]);
|
|
|
|
|
stringList.add(vItem[0]);
|
|
|
|
|
}
|
|
|
|
|
reportTemplateDTOList.add(reportTemplateDTO);
|
|
|
|
|
}
|
|
|
|
|
if (vItem[0].contains("_")) {
|
|
|
|
|
String col = vItem[0].split("_")[0];
|
|
|
|
|
reportTemplateDTO.setName(col);
|
|
|
|
|
stringList.add(col);
|
|
|
|
|
} else {
|
|
|
|
|
reportTemplateDTO.setName(vItem[0]);
|
|
|
|
|
stringList.add(vItem[0]);
|
|
|
|
|
}
|
|
|
|
|
reportTemplateDTOList.add(reportTemplateDTO);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<ReportTemplateDTO> endList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
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));
|
|
|
|
|
mapEpd.forEach((key,tableClass)->{
|
|
|
|
|
|
|
|
|
|
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());
|
|
|
|
|
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
|
|
|
|
|
phaseMap.forEach((phKey,phValue)->{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if("M".equals(phKey)){
|
|
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
Map<String, List<ReportTemplateDTO>> statMap = phValue.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getStatMethod));
|
|
|
|
|
statMap.forEach((statKey,statValue)->{
|
|
|
|
|
StringBuilder sql = new StringBuilder("select ");
|
|
|
|
|
|
|
|
|
|
if(statKey.equals("max")){
|
|
|
|
|
for(int i = 0;i<statValue.size();i++){
|
|
|
|
|
if(i==statValue.size()-1){
|
|
|
|
|
sql.append("MAX("+statValue.get(i).getTemplateName()+") as ").append(statValue.get(i).getTemplateName());
|
|
|
|
|
}else {
|
|
|
|
|
sql.append("MAX("+statValue.get(i).getTemplateName()+") as ").append(statValue.get(i).getTemplateName()).append(",");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
sql.append(" from ").append(key).append(" where Phase = '").append(phKey).append("' and LineId='00B78D123456$DEV$NPQS588$0002$NPQS588$01'").append(" and Stat_Method='").append(statKey+"'").append(" order by time desc limit 1").append(InfluxDBPublicParam.TIME_ZONE);
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}else if(statKey.equals("min")){
|
|
|
|
|
for(int i = 0;i<statValue.size();i++){
|
|
|
|
|
if(i==statValue.size()-1){
|
|
|
|
|
sql.append("MIN("+statValue.get(i).getTemplateName()+") as ").append(statValue.get(i).getTemplateName());
|
|
|
|
|
}else {
|
|
|
|
|
sql.append("MIN("+statValue.get(i).getTemplateName()+") as ").append(statValue.get(i).getTemplateName()).append(",");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
sql.append(" from ").append(key).append(" where Phase = '").append(phKey).append("' and LineId='00B78D123456$DEV$NPQS588$0002$NPQS588$01'").append(" and Stat_Method='").append(statKey+"'").append(" order by time desc limit 1").append(InfluxDBPublicParam.TIME_ZONE);
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}else if(statKey.equals("avg")){
|
|
|
|
|
for(int i = 0;i<statValue.size();i++){
|
|
|
|
|
if(i==statValue.size()-1){
|
|
|
|
|
sql.append("MEAN("+statValue.get(i).getTemplateName()+") as ").append(statValue.get(i).getTemplateName());
|
|
|
|
|
}else {
|
|
|
|
|
sql.append("MEAN("+statValue.get(i).getTemplateName()+") as ").append(statValue.get(i).getTemplateName()).append(",");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
sql.append(" from ").append(key).append(" where Phase = '").append(phKey).append("' and LineId='00B78D123456$DEV$NPQS588$0002$NPQS588$01'").append(" and Stat_Method='").append(statKey+"'").append(" order by time desc limit 1").append(InfluxDBPublicParam.TIME_ZONE);
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}else if(statKey.equals("cp95")){
|
|
|
|
|
for(int i = 0;i<statValue.size();i++){
|
|
|
|
|
if(i==statValue.size()-1){
|
|
|
|
|
sql.append("PERCENTILE("+statValue.get(i).getTemplateName()+",95) as ").append(statValue.get(i).getTemplateName());
|
|
|
|
|
}else {
|
|
|
|
|
sql.append("PERCENTILE("+statValue.get(i).getTemplateName()+",95) as ").append(statValue.get(i).getTemplateName()).append(",");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
sql.append(" from ").append(key).append(" where Phase = '").append(phKey).append("' and LineId='00B78D123456$DEV$NPQS588$0002$NPQS588$01'").append(" and Stat_Method='").append(statKey+"'").append(" order by time desc limit 1").append(InfluxDBPublicParam.TIME_ZONE);
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
phaseMap.forEach((phKey, phValue) -> {
|
|
|
|
|
|
|
|
|
|
Map<String, List<ReportTemplateDTO>> statMap = phValue.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getStatMethod));
|
|
|
|
|
statMap.forEach((statKey, statValue) -> {
|
|
|
|
|
StringBuilder sql = new StringBuilder("select ");
|
|
|
|
|
if ("max".equals(statKey)) {
|
|
|
|
|
assSql(statValue, sql, key, phKey, statKey, endList, "MAX",reportQueryParam);
|
|
|
|
|
} else if ("min".equals(statKey)) {
|
|
|
|
|
assSql(statValue, sql, key, phKey, statKey, endList, "MIN",reportQueryParam);
|
|
|
|
|
} else if ("avg".equals(statKey)) {
|
|
|
|
|
assSql(statValue, sql, key, phKey, statKey, endList, "MEAN",reportQueryParam);
|
|
|
|
|
} else if ("cp95".equals(statKey)) {
|
|
|
|
|
assSql(statValue, sql, key, phKey, statKey, endList, "PERCENTILE",reportQueryParam);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(CollUtil.isEmpty(endList)){
|
|
|
|
|
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_EMPTY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//进行反向赋值到模板
|
|
|
|
|
Map<String, List<ReportTemplateDTO>> assMap = endList.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getItemName));
|
|
|
|
|
jsonArray.forEach(item->{
|
|
|
|
|
JSONObject jsonObject = (JSONObject)item;
|
|
|
|
|
jsonArray.forEach(item -> {
|
|
|
|
|
JSONObject jsonObject = (JSONObject) item;
|
|
|
|
|
JSONArray itemArr = (JSONArray) jsonObject.get("data");
|
|
|
|
|
itemArr.forEach((ite)->{
|
|
|
|
|
JSONArray j = (JSONArray)ite;
|
|
|
|
|
j.forEach(it->{
|
|
|
|
|
itemArr.forEach((ite) -> {
|
|
|
|
|
JSONArray j = (JSONArray) ite;
|
|
|
|
|
j.forEach(it -> {
|
|
|
|
|
if (Objects.nonNull(it) && !"null".equals(it.toString())) {
|
|
|
|
|
JSONObject son = (JSONObject) it; //获取到1列
|
|
|
|
|
if (son.containsKey("v")) {
|
|
|
|
|
String v = son.getStr("v");
|
|
|
|
|
System.out.println(v);
|
|
|
|
|
if (v.charAt(0) == '$' && v.contains("#")) {
|
|
|
|
|
|
|
|
|
|
String str = assMap.get(v.replace("$","")).get(0).getValue();
|
|
|
|
|
son.set("v",str);
|
|
|
|
|
son.set("m",str);
|
|
|
|
|
String str = assMap.get(v.replace("$", "")).get(0).getValue();
|
|
|
|
|
son.set("v", str);
|
|
|
|
|
son.set("m", str);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@@ -342,7 +277,30 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return jsonArray;
|
|
|
|
|
return jsonArray.toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void assSql(List<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 (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<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
|
|
|
|
|
@@ -368,12 +326,12 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|
|
|
|
reportTreeCount.setName(value.get(0).getName() + "_" + i);
|
|
|
|
|
reportTreeCount.setShowName(i + "次" + value.get(0).getShowName());
|
|
|
|
|
reportTreeVO.setFlag(1);
|
|
|
|
|
assPhase(value, reportTreeCount);
|
|
|
|
|
assPhase(value, reportTreeCount,reportTreeCount.getName());
|
|
|
|
|
reHarm.add(reportTreeCount);
|
|
|
|
|
}
|
|
|
|
|
reportTreeVO.setChildren(reHarm);
|
|
|
|
|
} else {
|
|
|
|
|
assPhase(value, reportTreeVO);
|
|
|
|
|
assPhase(value, reportTreeVO,key);
|
|
|
|
|
}
|
|
|
|
|
tree.add(reportTreeVO);
|
|
|
|
|
});
|
|
|
|
|
@@ -384,8 +342,8 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*组装相别*/
|
|
|
|
|
private void assPhase(List<EleEpdPqd> value, ReportTreeVO reportTreeItem) {
|
|
|
|
|
/*组装相别*/
|
|
|
|
|
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<>();
|
|
|
|
|
value.forEach(item -> {
|
|
|
|
|
@@ -394,20 +352,20 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|
|
|
|
reportTreePhase.setName(item.getPhase());
|
|
|
|
|
reportTreePhase.setShowName(item.getPhase());
|
|
|
|
|
|
|
|
|
|
assStatMethod(item, statTree);
|
|
|
|
|
assStatMethod(item, statTree,key,item.getPhase());
|
|
|
|
|
reportTreePhase.setChildren(statTree);
|
|
|
|
|
phaseTree.add(reportTreePhase);
|
|
|
|
|
});
|
|
|
|
|
reportTreeItem.setChildren(phaseTree);
|
|
|
|
|
} else {
|
|
|
|
|
List<ReportTreeVO> statTree = new ArrayList<>();
|
|
|
|
|
assStatMethod(value.get(0), statTree);
|
|
|
|
|
assStatMethod(value.get(0), statTree,key,"");
|
|
|
|
|
reportTreeItem.setChildren(statTree);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void assStatMethod(EleEpdPqd item, List<ReportTreeVO> statTree) {
|
|
|
|
|
private void assStatMethod(EleEpdPqd item, List<ReportTreeVO> statTree,String oneKey,String twoKey) {
|
|
|
|
|
//存在向别为M但是Stat_Method不为空
|
|
|
|
|
if (StrUtil.isNotBlank(item.getStatMethod())) {
|
|
|
|
|
String[] arr = item.getStatMethod().split(",");
|
|
|
|
|
@@ -415,7 +373,12 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|
|
|
|
if (CollUtil.isNotEmpty(stat)) {
|
|
|
|
|
stat.forEach(statItem -> {
|
|
|
|
|
ReportTreeVO reportTreeStat = new ReportTreeVO();
|
|
|
|
|
reportTreeStat.setName(statItem);
|
|
|
|
|
if(StrUtil.isNotBlank(twoKey)){
|
|
|
|
|
reportTreeStat.setName("$"+oneKey+"#"+twoKey+"#"+statItem+"$");
|
|
|
|
|
}else {
|
|
|
|
|
reportTreeStat.setName("$"+oneKey+"#"+statItem+"$");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
reportTreeStat.setShowName(statItem);
|
|
|
|
|
statTree.add(reportTreeStat);
|
|
|
|
|
});
|
|
|
|
|
@@ -441,16 +404,15 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(StrUtil.isNotBlank(reportTemplateParam.getDeptId())){
|
|
|
|
|
if (StrUtil.isNotBlank(reportTemplateParam.getDeptId())) {
|
|
|
|
|
Dept dept = deptFeignClient.getDeptById(reportTemplateParam.getDeptId()).getData();
|
|
|
|
|
if(Objects.isNull(dept)){
|
|
|
|
|
if (Objects.isNull(dept)) {
|
|
|
|
|
throw new BusinessException(CommonResponseEnum.FAIL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
lambdaQueryWrapper.clear();
|
|
|
|
|
lambdaQueryWrapper.eq(ReportTemplate::getDeptId,reportTemplateParam.getDeptId())
|
|
|
|
|
.eq(ReportTemplate::getState,DataStateEnum.ENABLE.getCode());
|
|
|
|
|
lambdaQueryWrapper.eq(ReportTemplate::getDeptId, reportTemplateParam.getDeptId())
|
|
|
|
|
.eq(ReportTemplate::getState, DataStateEnum.ENABLE.getCode());
|
|
|
|
|
|
|
|
|
|
if (isUpdate) {
|
|
|
|
|
if (reportTemplateParam instanceof ReportTemplateParam.UpdateReportTemplateParam) {
|
|
|
|
|
@@ -459,7 +421,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int countDept = customReportMapper.selectCount(lambdaQueryWrapper);
|
|
|
|
|
if(countDept>0){
|
|
|
|
|
if (countDept > 0) {
|
|
|
|
|
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_DEPT);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@@ -467,7 +429,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|
|
|
|
|
|
|
|
|
DictData dictData = dicDataFeignClient.getDicDataById(reportTemplateParam.getReportType()).getData();
|
|
|
|
|
|
|
|
|
|
if(Objects.isNull(dictData)){
|
|
|
|
|
if (Objects.isNull(dictData)) {
|
|
|
|
|
throw new BusinessException(HarmonicResponseEnum.CUSTOM_TYPE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|