From be3df5c497c3ee59c55feebd3f16f31d27df67aa Mon Sep 17 00:00:00 2001 From: caozehui <2427765068@qq.com> Date: Fri, 18 Apr 2025 15:59:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gather/report/pojo/DevReportParam.java | 2 + .../report/service/IPqReportService.java | 2 +- .../service/impl/PqReportServiceImpl.java | 671 ++++++++++-------- .../src/main/resources/model/njcn_882B4.docx | Bin 27629 -> 25156 bytes .../main/resources/model/report_table.docx | Bin 27628 -> 28127 bytes .../service/impl/AdHarmonicServiceImpl.java | 7 +- .../impl/AdNonHarmonicServiceImpl.java | 7 +- .../service/impl/SysLogAuditServiceImpl.java | 2 +- 8 files changed, 379 insertions(+), 312 deletions(-) diff --git a/detection/src/main/java/com/njcn/gather/report/pojo/DevReportParam.java b/detection/src/main/java/com/njcn/gather/report/pojo/DevReportParam.java index e09e8769..81adf7e3 100644 --- a/detection/src/main/java/com/njcn/gather/report/pojo/DevReportParam.java +++ b/detection/src/main/java/com/njcn/gather/report/pojo/DevReportParam.java @@ -3,6 +3,7 @@ package com.njcn.gather.report.pojo; import lombok.Data; import java.io.Serializable; +import java.util.List; /** * @author hongawen @@ -34,4 +35,5 @@ public class DevReportParam implements Serializable { */ private String devId; + private List devIdList; } diff --git a/detection/src/main/java/com/njcn/gather/report/service/IPqReportService.java b/detection/src/main/java/com/njcn/gather/report/service/IPqReportService.java index a374c512..5dfb69b5 100644 --- a/detection/src/main/java/com/njcn/gather/report/service/IPqReportService.java +++ b/detection/src/main/java/com/njcn/gather/report/service/IPqReportService.java @@ -67,5 +67,5 @@ public interface IPqReportService extends IService { void downloadReport(DevReportParam devReportParam, HttpServletResponse response); - Map getMap(DevReportParam devReportParam); + //Map getMap(DevReportParam devReportParam); } diff --git a/detection/src/main/java/com/njcn/gather/report/service/impl/PqReportServiceImpl.java b/detection/src/main/java/com/njcn/gather/report/service/impl/PqReportServiceImpl.java index 3648670c..5e660d96 100644 --- a/detection/src/main/java/com/njcn/gather/report/service/impl/PqReportServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/report/service/impl/PqReportServiceImpl.java @@ -9,7 +9,6 @@ import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; -import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -18,6 +17,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.common.pojo.constant.PatternRegex; import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.gather.detection.pojo.enums.DetectionCodeEnum; import com.njcn.gather.detection.pojo.vo.DetectionData; import com.njcn.gather.device.pojo.enums.DevReportStateEnum; import com.njcn.gather.device.pojo.vo.PqDevVO; @@ -72,8 +72,6 @@ import org.docx4j.jaxb.Context; import org.docx4j.openpackaging.packages.WordprocessingMLPackage; import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart; import org.docx4j.wml.*; -import org.docx4j.wml.CTTblLayoutType; -import org.docx4j.wml.STTblLayoutType; import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; @@ -85,7 +83,6 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.xml.bind.JAXBElement; import java.io.*; -import java.lang.reflect.Field; import java.math.BigDecimal; import java.math.BigInteger; import java.math.RoundingMode; @@ -525,50 +522,53 @@ public class PqReportServiceImpl extends ServiceImpl i * @param devReportParam 被检设备信息 */ private void generateReportByDevType(AdPlan plan, DevReportParam devReportParam) { - // 根据设备类型找到报告模板 - PqDevVO pqDevVO = iPqDevService.getPqDevById(devReportParam.getDevId()); - if (Objects.isNull(pqDevVO)) { - throw new BusinessException(ReportResponseEnum.DEVICE_NOT_EXIST); - } - // 获取设备型号 - DevType devType = devTypeService.getById(pqDevVO.getDevType()); - if (Objects.isNull(devType)) { - throw new BusinessException(ReportResponseEnum.DEVICE_TYPE_NOT_EXIST); - } - DictData reportName = devTypeService.getReportName(pqDevVO.getDevType()); - if (Objects.isNull(reportName)) { - throw new BusinessException(ReportResponseEnum.REPORT_TEMPLATE_NOT_EXIST); - } - // 读取模板文件 - ClassPathResource resource = new ClassPathResource("/model/" + reportName.getCode() + ReportConstant.DOCX); - try (InputStream inputStream = resource.getInputStream()) { - // 加载Word文档 - XWPFDocument baseModelDocument = new XWPFDocument(inputStream); - // 处理基础模版中的信息 - Map baseModelDataMap = dealBaseModelData(pqDevVO, devType, "${", "}"); - // 替换模板中的信息,避免信息丢失,段落和表格均参与替换 - WordUtil.replacePlaceholders(baseModelDocument, baseModelDataMap); - // 处理数据页中的信息 - dealDataModel(baseModelDocument, devReportParam, pqDevVO); - // 处理需要输出的目录地址 基础路径+设备类型+装置编号.docx - // 最终文件输出的路径 - String dirPath = reportPath.concat(File.separator).concat(devType.getName()); - // 确保目录存在 - ensureDirectoryExists(dirPath); - FileOutputStream out = new FileOutputStream(dirPath.concat(File.separator).concat(pqDevVO.getCreateId()).concat(".docx")); - // 4. 保存新的Word文档 - try { - baseModelDocument.write(out); + devReportParam.getDevIdList().forEach(devId -> { + devReportParam.setDevId(devId); + // 根据设备类型找到报告模板 + PqDevVO pqDevVO = iPqDevService.getPqDevById(devReportParam.getDevId()); + if (Objects.isNull(pqDevVO)) { + throw new BusinessException(ReportResponseEnum.DEVICE_NOT_EXIST); + } + // 获取设备型号 + DevType devType = devTypeService.getById(pqDevVO.getDevType()); + if (Objects.isNull(devType)) { + throw new BusinessException(ReportResponseEnum.DEVICE_TYPE_NOT_EXIST); + } + DictData reportName = devTypeService.getReportName(pqDevVO.getDevType()); + if (Objects.isNull(reportName)) { + throw new BusinessException(ReportResponseEnum.REPORT_TEMPLATE_NOT_EXIST); + } + // 读取模板文件 + ClassPathResource resource = new ClassPathResource("/model/" + reportName.getCode() + ReportConstant.DOCX); + try (InputStream inputStream = resource.getInputStream()) { + // 加载Word文档 + XWPFDocument baseModelDocument = new XWPFDocument(inputStream); + // 处理基础模版中的信息 + Map baseModelDataMap = dealBaseModelData(pqDevVO, devType, "${", "}"); + // 替换模板中的信息,避免信息丢失,段落和表格均参与替换 + WordUtil.replacePlaceholders(baseModelDocument, baseModelDataMap); + // 处理数据页中的信息 + dealDataModel(baseModelDocument, devReportParam, pqDevVO); + // 处理需要输出的目录地址 基础路径+设备类型+装置编号.docx + // 最终文件输出的路径 + String dirPath = reportPath.concat(File.separator).concat(devType.getName()); + // 确保目录存在 + ensureDirectoryExists(dirPath); + FileOutputStream out = new FileOutputStream(dirPath.concat(File.separator).concat(pqDevVO.getCreateId()).concat(".docx")); + // 4. 保存新的Word文档 + try { + baseModelDocument.write(out); + } catch (IOException e) { + throw new BusinessException(ReportResponseEnum.GENERATE_REPORT_ERROR); + } + out.close(); + + this.updateDevAndPlanState(devReportParam.getDevId(), devReportParam.getPlanId()); } catch (IOException e) { + log.error(ReportResponseEnum.GENERATE_REPORT_ERROR.getMessage(), e); throw new BusinessException(ReportResponseEnum.GENERATE_REPORT_ERROR); } - out.close(); - - this.updateDevAndPlanState(devReportParam.getDevId(), devReportParam.getPlanId()); - } catch (IOException e) { - log.error(ReportResponseEnum.GENERATE_REPORT_ERROR.getMessage(), e); - throw new BusinessException(ReportResponseEnum.GENERATE_REPORT_ERROR); - } + }); } /** @@ -579,41 +579,44 @@ public class PqReportServiceImpl extends ServiceImpl i * @param devReportParam 设备信息 */ private void generateReportByPlan(AdPlan plan, DevReportParam devReportParam) { - // 准备被检设备的基础信息 - PqDevVO pqDevVO = iPqDevService.getPqDevById(devReportParam.getDevId()); - if (Objects.isNull(pqDevVO)) { - throw new BusinessException(ReportResponseEnum.DEVICE_NOT_EXIST); - } - // 获取设备型号 - DevType devType = devTypeService.getById(pqDevVO.getDevType()); - if (Objects.isNull(devType)) { - throw new BusinessException(ReportResponseEnum.DEVICE_TYPE_NOT_EXIST); - } - PqReport report = this.lambdaQuery().eq(PqReport::getId, plan.getReportTemplateId()).eq(PqReport::getState, DataStateEnum.ENABLE.getCode()).one(); - if (Objects.isNull(report)) { - throw new BusinessException(ReportResponseEnum.REPORT_TEMPLATE_NOT_EXIST); - } - try { - WordprocessingMLPackage baseModelDocument = WordprocessingMLPackage.load(new File(report.getBasePath())); - WordprocessingMLPackage detailModelDocument = WordprocessingMLPackage.load(new File(report.getDetailPath())); - // 获取文档基础部分,并替换占位符 - MainDocumentPart baseDocumentPart = baseModelDocument.getMainDocumentPart(); - Map baseModelDataMap = dealBaseModelData(pqDevVO, devType, "", ""); - baseDocumentPart.variableReplace(baseModelDataMap); - // 获取数据模版页内容,根据脚本动态组装数据页内容 - MainDocumentPart detailDocumentPart = detailModelDocument.getMainDocumentPart(); - dealDataModelScattered(baseDocumentPart, detailDocumentPart, devReportParam, pqDevVO); - // 保存新的文档 - String dirPath = reportPath.concat(File.separator).concat(devType.getName()); - // 确保目录存在 - ensureDirectoryExists(dirPath); - baseModelDocument.save(new File(dirPath.concat(File.separator).concat(pqDevVO.getCreateId()).concat(ReportConstant.DOCX))); + devReportParam.getDevIdList().forEach(devId -> { + devReportParam.setDevId(devId); + // 准备被检设备的基础信息 + PqDevVO pqDevVO = iPqDevService.getPqDevById(devReportParam.getDevId()); + if (Objects.isNull(pqDevVO)) { + throw new BusinessException(ReportResponseEnum.DEVICE_NOT_EXIST); + } + // 获取设备型号 + DevType devType = devTypeService.getById(pqDevVO.getDevType()); + if (Objects.isNull(devType)) { + throw new BusinessException(ReportResponseEnum.DEVICE_TYPE_NOT_EXIST); + } + PqReport report = this.lambdaQuery().eq(PqReport::getId, plan.getReportTemplateId()).eq(PqReport::getState, DataStateEnum.ENABLE.getCode()).one(); + if (Objects.isNull(report)) { + throw new BusinessException(ReportResponseEnum.REPORT_TEMPLATE_NOT_EXIST); + } + try { + WordprocessingMLPackage baseModelDocument = WordprocessingMLPackage.load(new File(report.getBasePath())); + WordprocessingMLPackage detailModelDocument = WordprocessingMLPackage.load(new File(report.getDetailPath())); + // 获取文档基础部分,并替换占位符 + MainDocumentPart baseDocumentPart = baseModelDocument.getMainDocumentPart(); + Map baseModelDataMap = dealBaseModelData(pqDevVO, devType, "", ""); + baseDocumentPart.variableReplace(baseModelDataMap); + // 获取数据模版页内容,根据脚本动态组装数据页内容 + MainDocumentPart detailDocumentPart = detailModelDocument.getMainDocumentPart(); + dealDataModelScattered(baseDocumentPart, detailDocumentPart, devReportParam, pqDevVO); + // 保存新的文档 + String dirPath = reportPath.concat(File.separator).concat(devType.getName()); + // 确保目录存在 + ensureDirectoryExists(dirPath); + baseModelDocument.save(new File(dirPath.concat(File.separator).concat(pqDevVO.getCreateId()).concat(ReportConstant.DOCX))); - this.updateDevAndPlanState(devReportParam.getDevId(), devReportParam.getPlanId()); - } catch (Exception e) { - log.error(ReportResponseEnum.GENERATE_REPORT_ERROR.getMessage(), e); - throw new BusinessException(ReportResponseEnum.GENERATE_REPORT_ERROR); - } + this.updateDevAndPlanState(devReportParam.getDevId(), devReportParam.getPlanId()); + } catch (Exception e) { + log.error(ReportResponseEnum.GENERATE_REPORT_ERROR.getMessage(), e); + throw new BusinessException(ReportResponseEnum.GENERATE_REPORT_ERROR); + } + }); } /** @@ -956,7 +959,7 @@ public class PqReportServiceImpl extends ServiceImpl i TcPr tcPr = element.getValue().getTcPr(); TblWidth cellWidth = factory.createTblWidth(); cellWidth.setType("dxa"); - cellWidth.setW(BigInteger.valueOf(5000/tableKeys.size())); + cellWidth.setW(BigInteger.valueOf(5000 / tableKeys.size())); tcPr.setTcW(cellWidth); tbl.getContent().remove(existingRow); // 迭代增加行,需要填充的表格keys在tableKeys集合中 @@ -970,7 +973,6 @@ public class PqReportServiceImpl extends ServiceImpl i // 插入段落,处理下样式 - paragraphs.add(position++, copiedTableElement); } } @@ -1057,7 +1059,7 @@ public class PqReportServiceImpl extends ServiceImpl i // 获取设备型号 baseModelMap.put(prefix + BaseReportKeyEnum.DEV_TYPE.getKey() + suffix, devType.getName()); // 检测员 - baseModelMap.put(prefix + BaseReportKeyEnum.INSPECTOR.getKey() + suffix, pqDevVO.getCheckBy()); + baseModelMap.put(prefix + BaseReportKeyEnum.INSPECTOR.getKey() + suffix, pqDevVO.getCheckBy() + ""); // 调试日期 if (pqDevVO.getCheckTime() != null) { baseModelMap.put(prefix + BaseReportKeyEnum.TEST_DATE.getKey() + suffix, DateUtil.format(pqDevVO.getCheckTime(), DatePattern.CHINESE_DATE_PATTERN)); @@ -1115,147 +1117,39 @@ public class PqReportServiceImpl extends ServiceImpl i singleNonHarmParam.setChannelNo(i); // 获取数据 - Map dataModelMap = new HashMap<>(16); + Map dataModelMap = new HashMap<>(); dataModelMap.put("${CreateId}", pqDevVO.getCreateId()); dataModelMap.put("${total}", pqDevVO.getDevChns().toString()); dataModelMap.put("${count}", i + ""); - // 区分谐波和非谐波数据 - // 谐波类 + // 读取模板文件中的占位符 + List allMarkList = getAllKeys(dataModelDocumentTemp); + Map> indexKeysMap = allMarkList.stream() + .collect(Collectors.groupingBy( + obj -> obj.split("#")[0].replace("${", ""), + Collectors.mapping(obj -> { + int index1 = obj.indexOf("#") + 1; + return obj.substring(index1, obj.indexOf("#", index1)); + }, Collectors.toSet()))); //key为index,value为该index下所有测试项对应的code - // 非谐波类 - // 57V电压 电压&相角 index 不用计算了,固定为1 -// Integer testItemIndex = getTestItemIndex(scriptId, "e797c4b940389404e64fb92e4507c5f4", "Base", "VOL", 57); - // 获取输出脚本ID - Integer testItemIndex = 1; -// String pqScriptCheckDataService = getPqScriptCheckDataByScriptId(scriptId,testItemIndex,1,Arrays.asList("A","B","C")); - String pqScriptCheckDataService = "8e221487f242c77f1eff05234580d4c5"; - // 获取数据 - singleNonHarmParam.setAdType(pqScriptCheckDataService); - singleNonHarmParam.setSort(testItemIndex); - fillMapValue(singleNonHarmParam, dataModelMap, "57Ua", "57Ub", "57Uc"); - - // 57V相角 - testItemIndex = 1; - pqScriptCheckDataService = "e8bbfaad7a3fa343d3c46d345fb45fa3"; - // 获取数据 - singleNonHarmParam.setAdType(pqScriptCheckDataService); - singleNonHarmParam.setSort(testItemIndex); - fillMapValue(singleNonHarmParam, dataModelMap, "57UaA", "57UbA", "57UcA"); - - // 10V电压 - testItemIndex = 2; - pqScriptCheckDataService = "8e221487f242c77f1eff05234580d4c5"; - // 获取数据 - singleNonHarmParam.setAdType(pqScriptCheckDataService); - singleNonHarmParam.setSort(testItemIndex); - fillMapValue(singleNonHarmParam, dataModelMap, "10Ua", "10Ub", "10Uc"); - - - // 电压偏差 - testItemIndex = 3; - pqScriptCheckDataService = "8e221487f242c77f1eff05234580d4c5"; - // 获取数据 - singleNonHarmParam.setAdType(pqScriptCheckDataService); - singleNonHarmParam.setSort(testItemIndex); - fillMapValue(singleNonHarmParam, dataModelMap, "DELTA_Ua", "DELTA_Ub", "DELTA_Uc"); - // 特殊处理电压偏差 - specialDealVoltage(dataModelMap, "${DELTA_Ua}"); - specialDealVoltage(dataModelMap, "${DELTA_Ub}"); - specialDealVoltage(dataModelMap, "${DELTA_Uc}"); - - // 5A 电流 - testItemIndex = 4; - pqScriptCheckDataService = "7fbadbeb9dd5ccb69d216f4f9ad60b4f"; - // 获取数据 - singleNonHarmParam.setAdType(pqScriptCheckDataService); - singleNonHarmParam.setSort(testItemIndex); - fillMapValue(singleNonHarmParam, dataModelMap, "5Ia", "5Ib", "5Ic"); - - // 5A 电流相角 - testItemIndex = 4; - pqScriptCheckDataService = "fdffc6b5dfdc8751b9fde9b599b8ea51"; - // 获取数据 - singleNonHarmParam.setAdType(pqScriptCheckDataService); - singleNonHarmParam.setSort(testItemIndex); - fillMapValue(singleNonHarmParam, dataModelMap, "5IaA", "5IbA", "5IcA"); - - // 1A 电流 - testItemIndex = 5; - pqScriptCheckDataService = "7fbadbeb9dd5ccb69d216f4f9ad60b4f"; - // 获取数据 - singleNonHarmParam.setAdType(pqScriptCheckDataService); - singleNonHarmParam.setSort(testItemIndex); - fillMapValue(singleNonHarmParam, dataModelMap, "1Ia", "1Ib", "1Ic"); - - - // 三相电压不平衡度 - testItemIndex = 6; - pqScriptCheckDataService = "9e9910f3627870c7fcf5846342f29d26"; - // 获取数据 - singleNonHarmParam.setAdType(pqScriptCheckDataService); - singleNonHarmParam.setSort(testItemIndex); - fillMapValueT(singleNonHarmParam, dataModelMap, "V_UNBAN"); - - - // 频率 45 - testItemIndex = 7; - pqScriptCheckDataService = "2da2a32c0cd19fb6368b9f4c249c2b3c"; - // 获取数据 - singleNonHarmParam.setAdType(pqScriptCheckDataService); - singleNonHarmParam.setSort(testItemIndex); - fillMapValueT(singleNonHarmParam, dataModelMap, "FREQ45"); - - - // 频率 50 - testItemIndex = 8; - pqScriptCheckDataService = "2da2a32c0cd19fb6368b9f4c249c2b3c"; - // 获取数据 - singleNonHarmParam.setAdType(pqScriptCheckDataService); - singleNonHarmParam.setSort(testItemIndex); - fillMapValueT(singleNonHarmParam, dataModelMap, "FREQ50"); - - - // 频率 55 - testItemIndex = 9; - pqScriptCheckDataService = "2da2a32c0cd19fb6368b9f4c249c2b3c"; - // 获取数据 - singleNonHarmParam.setAdType(pqScriptCheckDataService); - singleNonHarmParam.setSort(testItemIndex); - fillMapValueT(singleNonHarmParam, dataModelMap, "FREQ55"); - - // 谐波电压 - testItemIndex = 10; - pqScriptCheckDataService = "cce92410f1902897a61f644d875f2216"; - // 获取数据 - singleNonHarmParam.setAdType(pqScriptCheckDataService); - singleNonHarmParam.setSort(testItemIndex); - fillMapValueHarm(singleNonHarmParam, dataModelMap, "Uha", "Uhb", "Uhc", 57.74, 100); - - // 谐波电电流 - testItemIndex = 11; - pqScriptCheckDataService = "3e5e384d38485ca4242152fba336de1d"; - // 获取数据 - singleNonHarmParam.setAdType(pqScriptCheckDataService); - singleNonHarmParam.setSort(testItemIndex); - fillMapValueHarm(singleNonHarmParam, dataModelMap, "Iha", "Ihb", "Ihc", 1, 1); - - // 间谐波电压 - testItemIndex = 12; - pqScriptCheckDataService = "d57ea0e085ecf6c4e9f4da09b948befe"; - // 获取数据 - singleNonHarmParam.setAdType(pqScriptCheckDataService); - singleNonHarmParam.setSort(testItemIndex); - fillMapValueHarm(singleNonHarmParam, dataModelMap, "InUa", "InUb", "InUc", 57.74, 100); - - // 间谐波电流 - testItemIndex = 13; - pqScriptCheckDataService = "6bc58769dcbb2f83a13ff965a20a3cf3"; - // 获取数据 - singleNonHarmParam.setAdType(pqScriptCheckDataService); - singleNonHarmParam.setSort(testItemIndex); - fillMapValueHarm(singleNonHarmParam, dataModelMap, "InIa", "InIb", "InIc", 1, 1); + List adNonHarmonicResultList = adNonHarmonicService.listAll(devReportParam.getScriptId(), devReportParam.getPlanCode(), devReportParam.getDevId() + "_" + i); + List adHarmonicResultList = adHarmonicService.listAll(devReportParam.getScriptId(), devReportParam.getPlanCode(), devReportParam.getDevId() + "_" + i); + // 填充数据 + indexKeysMap.forEach((index, keys) -> { + String s1 = keys.stream().findFirst().get(); + // 谐波类 + if (DetectionCodeEnum.V2_50.getCode().equals(s1) || DetectionCodeEnum.I2_50.getCode().equals(s1) || DetectionCodeEnum.SV_1_49.getCode().equals(s1) || DetectionCodeEnum.SI_1_49.getCode().equals(s1)) { + fillMapValueHarm(adHarmonicResultList, dataModelMap, keys, index); + } else { + // 非谐波类 + if (DetectionCodeEnum.V_UNBAN.getCode().equals(s1) || DetectionCodeEnum.FREQ.getCode().equals(s1)) { + fillMapValueT(adNonHarmonicResultList, dataModelMap, keys, index); + } else { + fillMapValueABC(adNonHarmonicResultList, dataModelMap, keys, index); + } + } + }); // 替换文档内容 WordUtil.replacePlaceholdersInParagraphs(dataModelDocumentTemp, dataModelMap); @@ -1264,6 +1158,171 @@ public class PqReportServiceImpl extends ServiceImpl i } } + /** + * 填充数据(ABC相) + * + * @param allNonHarmonicResultList + * @param dataModelMap + * @param keys + * @param index + */ + private void fillMapValueABC(List allNonHarmonicResultList, Map dataModelMap, Set keys, String index) { + keys.forEach(key -> { + List resultList = allNonHarmonicResultList.stream().filter(obj -> obj.getAdType().equals(key) && obj.getSort().toString().equals(index)).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(resultList)) { + AdNonHarmonicResult adNonHarmonicResult = resultList.get(0); + if (ObjectUtil.isNotNull(adNonHarmonicResult)) { + dataModelMap.put("${" + index + "#" + key + "#A}", devValue(adNonHarmonicResult.getAValue(), 1, 1)); + dataModelMap.put("${" + index + "#" + key + "#B}", devValue(adNonHarmonicResult.getBValue(), 1, 1)); + dataModelMap.put("${" + index + "#" + key + "#C}", devValue(adNonHarmonicResult.getCValue(), 1, 1)); + } + } + }); + } + + /** + * 填充数据(T相) + * + * @param allNonHarmonicResultList + * @param dataModelMap + * @param keys + * @param index + */ + private void fillMapValueT(List allNonHarmonicResultList, Map dataModelMap, Set keys, String index) { + keys.forEach(key -> { + List resultList = allNonHarmonicResultList.stream().filter(obj -> obj.getAdType().equals(key) && obj.getSort().toString().equals(index)).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(resultList)) { + AdNonHarmonicResult adNonHarmonicResult = resultList.get(0); + if (ObjectUtil.isNotNull(adNonHarmonicResult)) { + dataModelMap.put("${" + index + "#" + key + "#T}", devValue(adNonHarmonicResult.getTValue(), 1, 1)); + } + } + }); + } + + /** + * 填充数据(谐波类) + * + * @param allHarmonicResultList + * @param dataModelMap + * @param keys + * @param index + */ + private void fillMapValueHarm(List allHarmonicResultList, Map dataModelMap, Set keys, String index) { + keys.forEach(key -> { + List resultList = allHarmonicResultList.stream().filter(obj -> obj.getAdType().equals(key) && obj.getSort().toString().equals(index)).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(resultList)) { + AdHarmonicResult adHarmonicResult = resultList.get(0); + if (Objects.nonNull(adHarmonicResult)) { + if (DetectionCodeEnum.V2_50.getCode().equals(key) || DetectionCodeEnum.SV_1_49.getCode().equals(key)) { + fillHarm(dataModelMap, adHarmonicResult, index, key, 57.74, 100); + } + if (DetectionCodeEnum.I2_50.getCode().equals(key) || DetectionCodeEnum.SI_1_49.getCode().equals(key)) { + fillHarm(dataModelMap, adHarmonicResult, index, key, 1, 1); + } + } + } + }); + } + + /** + * 对谐波类数据进行处理,并填充到map中 + * + * @param dataModelMap + * @param adHarmonicResult + * @param index + * @param key + * @param baseValue + * @param percent + */ + private void fillHarm(Map dataModelMap, AdHarmonicResult adHarmonicResult, String index, String key, double baseValue, int percent) { + // 要处理 2 5 7 11 23 35 43 50 + // 基波 + String aBase = devValue(adHarmonicResult.getAValue1(), 1, 1); + String bBase = devValue(adHarmonicResult.getBValue1(), 1, 1); + String cBase = devValue(adHarmonicResult.getCValue1(), 1, 1); + dataModelMap.put("${" + index + "#" + key + "#A#1}", aBase); + dataModelMap.put("${" + index + "#" + key + "#B#1}", bBase); + dataModelMap.put("${" + index + "#" + key + "#C#1}", cBase); + + double aBaseValue = baseValue; + double bBaseValue = baseValue; + double cBaseValue = baseValue; + + if (!aBase.equals(StrPool.SLASH)) { + aBaseValue = Double.parseDouble(aBase); + } + if (!bBase.equals(StrPool.SLASH)) { + bBaseValue = Double.parseDouble(bBase); + } + if (!cBase.equals(StrPool.SLASH)) { + cBaseValue = Double.parseDouble(cBase); + } + + dataModelMap.put("${" + index + "#" + key + "#A#2}", devValue(adHarmonicResult.getAValue2(), aBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#B#2}", devValue(adHarmonicResult.getBValue2(), bBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#C#2}", devValue(adHarmonicResult.getCValue2(), cBaseValue, percent)); + + dataModelMap.put("${" + index + "#" + key + "#A#5}", devValue(adHarmonicResult.getAValue5(), aBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#B#5}", devValue(adHarmonicResult.getBValue5(), bBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#C#5}", devValue(adHarmonicResult.getCValue5(), cBaseValue, percent)); + + dataModelMap.put("${" + index + "#" + key + "#A#7}", devValue(adHarmonicResult.getAValue7(), aBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#B#7}", devValue(adHarmonicResult.getBValue7(), bBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#C#7}", devValue(adHarmonicResult.getCValue7(), cBaseValue, percent)); + + dataModelMap.put("${" + index + "#" + key + "#A#11}", devValue(adHarmonicResult.getAValue11(), aBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#B#11}", devValue(adHarmonicResult.getBValue11(), bBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#C#11}", devValue(adHarmonicResult.getCValue11(), cBaseValue, percent)); + + dataModelMap.put("${" + index + "#" + key + "#A#23}", devValue(adHarmonicResult.getAValue23(), aBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#B#23}", devValue(adHarmonicResult.getBValue23(), bBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#C#23}", devValue(adHarmonicResult.getCValue23(), cBaseValue, percent)); + + dataModelMap.put("${" + index + "#" + key + "#A#35}", devValue(adHarmonicResult.getAValue35(), aBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#B#35}", devValue(adHarmonicResult.getBValue35(), bBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#C#35}", devValue(adHarmonicResult.getCValue35(), cBaseValue, percent)); + + dataModelMap.put("${" + index + "#" + key + "#A#43}", devValue(adHarmonicResult.getAValue43(), aBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#B#43}", devValue(adHarmonicResult.getBValue43(), bBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#C#43}", devValue(adHarmonicResult.getCValue43(), cBaseValue, percent)); + + dataModelMap.put("${" + index + "#" + key + "#A#50}", devValue(adHarmonicResult.getAValue50(), aBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#B#50}", devValue(adHarmonicResult.getBValue50(), bBaseValue, percent)); + dataModelMap.put("${" + index + "#" + key + "#C#50}", devValue(adHarmonicResult.getCValue50(), cBaseValue, percent)); + } + + /** + * 获取文件所有表格中的占位符 + * + * @param dataModelDocumentTemp + * @return + */ + private List getAllKeys(XWPFDocument dataModelDocumentTemp) { + List allMarkList = new ArrayList<>(); + List tables = dataModelDocumentTemp.getTables(); + + for (XWPFTable table : tables) { + List rows = table.getRows(); + for (XWPFTableRow row : rows) { + List cells = row.getTableCells(); + for (XWPFTableCell cell : cells) { + List paragraphs = cell.getParagraphs(); + for (XWPFParagraph paragraph : paragraphs) { + List runs = paragraph.getRuns(); + for (XWPFRun run : runs) { + String text = run.getText(0); + if (StrUtil.isNotBlank(text) && text.startsWith("$")) { + allMarkList.add(text); + } + } + } + } + } + } + return allMarkList.stream().sorted(Comparator.comparing(String::toString)).collect(Collectors.toList()); + } + private void dealDataModelZJ(XWPFDocument baseModelDocument, DevReportParam devReportParam, PqDevVO pqDevVO) { List nonHarmonicResultList = adNonHarmonicService.get(devReportParam.getScriptId(), null, devReportParam.getDevId(), "-1", devReportParam.getPlanCode()); List harmonicResultList = adHarmonicService.get(devReportParam.getScriptId(), null, devReportParam.getDevId(), "-1", devReportParam.getPlanCode()); @@ -2026,93 +2085,93 @@ public class PqReportServiceImpl extends ServiceImpl i } - @Override - public Map getMap(DevReportParam devReportParam) { - HashMap resultMap = new HashMap<>(); - List adNonHarmonicResultList = adNonHarmonicService.listAll(devReportParam.getScriptId(), "result_" + devReportParam.getPlanCode(), devReportParam.getDevId()); - List adHarmonicResultList = adHarmonicService.listAll(devReportParam.getScriptId(), "result_" + devReportParam.getPlanCode(), devReportParam.getDevId()); - - Map> monitorIdMap1 = adNonHarmonicResultList.stream() - .sorted(Comparator.comparing(AdNonHarmonicResult::getMonitorId)) - .collect(Collectors.groupingBy(AdNonHarmonicResult::getMonitorId, LinkedHashMap::new, Collectors.toList())); - Map> monitorIdMap2 = adHarmonicResultList.stream() - .sorted(Comparator.comparing(AdHarmonicResult::getMonitorId)) - .collect(Collectors.groupingBy(AdHarmonicResult::getMonitorId, LinkedHashMap::new, Collectors.toList())); - - String[] monitorIds = monitorIdMap1.keySet().stream().map(String::valueOf).toArray(String[]::new); - - monitorIdMap1.get(monitorIds[0]).stream().forEach(adNonHarmonicResult -> { - DictTree dictTree = dictTreeService.getById(adNonHarmonicResult.getAdType()); - - DetectionData detectionDataA = JSON.parseObject(adNonHarmonicResult.getAValue(), DetectionData.class); - DetectionData detectionDataB = JSON.parseObject(adNonHarmonicResult.getBValue(), DetectionData.class); - DetectionData detectionDataC = JSON.parseObject(adNonHarmonicResult.getCValue(), DetectionData.class); - - DetectionData detectionDataT = JSON.parseObject(adNonHarmonicResult.getTValue(), DetectionData.class); - // 标准值 - Double standardValue = null; - if (ObjectUtil.isNotNull(detectionDataT)) { - standardValue = detectionDataT.getResultData(); - - resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_T_Standard", detectionDataT.getResultData()); - resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_T_Test", detectionDataT.getData()); - } else { - standardValue = detectionDataA.getResultData(); - - resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_A_Standard", detectionDataA.getResultData()); - resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_A_Test", detectionDataA.getData()); - - resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_B_Standard", detectionDataB.getResultData()); - resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_B_Test", detectionDataB.getData()); - - resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_C_Standard", detectionDataC.getResultData()); - resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_C_Test", detectionDataC.getData()); - } - resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_Result", getResultStr(adNonHarmonicResult.getResultFlag())); - }); - - monitorIdMap2.get(monitorIds[0]).stream().forEach(adHarmonicResult -> { - DictTree dictTree = dictTreeService.getById(adHarmonicResult.getAdType()); - - for (int i = 2; i <= 50; i++) { - try { - Field fieldA = adHarmonicResult.getClass().getDeclaredField("aValue" + i); - fieldA.setAccessible(true); - Object a = fieldA.get(adHarmonicResult); - - Field fieldB = adHarmonicResult.getClass().getDeclaredField("bValue" + i); - fieldB.setAccessible(true); - Object b = fieldB.get(adHarmonicResult); - - Field fieldC = adHarmonicResult.getClass().getDeclaredField("cValue" + i); - fieldC.setAccessible(true); - Object c = fieldC.get(adHarmonicResult); - - List isDataList = new ArrayList<>(); - if (ObjectUtil.isNotNull(a) && ObjectUtil.isNotNull(b) && ObjectUtil.isNotNull(c)) { - DetectionData detectionData = JSON.parseObject(a.toString(), DetectionData.class); - resultMap.putIfAbsent(dictTree.getCode() + "_" + detectionData.getResultData() + "_" + i + "_A_Standard", detectionData.getResultData()); - resultMap.putIfAbsent(dictTree.getCode() + "_" + detectionData.getResultData() + "_" + i + "_A_Test", detectionData.getData()); - isDataList.add(detectionData.getIsData()); - - detectionData = JSON.parseObject(b.toString(), DetectionData.class); - resultMap.putIfAbsent(dictTree.getCode() + "_" + detectionData.getResultData() + "_" + i + "_B_Standard", detectionData.getResultData()); - resultMap.putIfAbsent(dictTree.getCode() + "_" + detectionData.getResultData() + "_" + i + "_B_Test", detectionData.getData()); - isDataList.add(detectionData.getIsData()); - - detectionData = JSON.parseObject(c.toString(), DetectionData.class); - resultMap.putIfAbsent(dictTree.getCode() + "_" + detectionData.getResultData() + "_" + i + "_C_Standard", detectionData.getResultData()); - resultMap.putIfAbsent(dictTree.getCode() + "_" + detectionData.getResultData() + "_" + i + "_C_Test", detectionData.getData()); - isDataList.add(detectionData.getIsData()); - } - - resultMap.putIfAbsent(dictTree.getCode() + "_" + i + "_Result", getResultStr(isDataList.stream().allMatch(data -> data == 1) ? 1 : (isDataList.stream().anyMatch(data -> data == 2) ? 2 : 4))); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - }); - - return resultMap; - } +// @Override +// public Map getMap(DevReportParam devReportParam) { +// HashMap resultMap = new HashMap<>(); +// List adNonHarmonicResultList = adNonHarmonicService.listAll(devReportParam.getScriptId(), "result_" + devReportParam.getPlanCode(), devReportParam.getDevId()); +// List adHarmonicResultList = adHarmonicService.listAll(devReportParam.getScriptId(), "result_" + devReportParam.getPlanCode(), devReportParam.getDevId()); +// +// Map> monitorIdMap1 = adNonHarmonicResultList.stream() +// .sorted(Comparator.comparing(AdNonHarmonicResult::getMonitorId)) +// .collect(Collectors.groupingBy(AdNonHarmonicResult::getMonitorId, LinkedHashMap::new, Collectors.toList())); +// Map> monitorIdMap2 = adHarmonicResultList.stream() +// .sorted(Comparator.comparing(AdHarmonicResult::getMonitorId)) +// .collect(Collectors.groupingBy(AdHarmonicResult::getMonitorId, LinkedHashMap::new, Collectors.toList())); +// +// String[] monitorIds = monitorIdMap1.keySet().stream().map(String::valueOf).toArray(String[]::new); +// +// monitorIdMap1.get(monitorIds[0]).stream().forEach(adNonHarmonicResult -> { +// DictTree dictTree = dictTreeService.getById(adNonHarmonicResult.getAdType()); +// +// DetectionData detectionDataA = JSON.parseObject(adNonHarmonicResult.getAValue(), DetectionData.class); +// DetectionData detectionDataB = JSON.parseObject(adNonHarmonicResult.getBValue(), DetectionData.class); +// DetectionData detectionDataC = JSON.parseObject(adNonHarmonicResult.getCValue(), DetectionData.class); +// +// DetectionData detectionDataT = JSON.parseObject(adNonHarmonicResult.getTValue(), DetectionData.class); +// // 标准值 +// Double standardValue = null; +// if (ObjectUtil.isNotNull(detectionDataT)) { +// standardValue = detectionDataT.getResultData(); +// +// resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_T_Standard", detectionDataT.getResultData()); +// resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_T_Test", detectionDataT.getData()); +// } else { +// standardValue = detectionDataA.getResultData(); +// +// resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_A_Standard", detectionDataA.getResultData()); +// resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_A_Test", detectionDataA.getData()); +// +// resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_B_Standard", detectionDataB.getResultData()); +// resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_B_Test", detectionDataB.getData()); +// +// resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_C_Standard", detectionDataC.getResultData()); +// resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_C_Test", detectionDataC.getData()); +// } +// resultMap.putIfAbsent(dictTree.getCode() + "_" + standardValue + "_Result", getResultStr(adNonHarmonicResult.getResultFlag())); +// }); +// +// monitorIdMap2.get(monitorIds[0]).stream().forEach(adHarmonicResult -> { +// DictTree dictTree = dictTreeService.getById(adHarmonicResult.getAdType()); +// +// for (int i = 2; i <= 50; i++) { +// try { +// Field fieldA = adHarmonicResult.getClass().getDeclaredField("aValue" + i); +// fieldA.setAccessible(true); +// Object a = fieldA.get(adHarmonicResult); +// +// Field fieldB = adHarmonicResult.getClass().getDeclaredField("bValue" + i); +// fieldB.setAccessible(true); +// Object b = fieldB.get(adHarmonicResult); +// +// Field fieldC = adHarmonicResult.getClass().getDeclaredField("cValue" + i); +// fieldC.setAccessible(true); +// Object c = fieldC.get(adHarmonicResult); +// +// List isDataList = new ArrayList<>(); +// if (ObjectUtil.isNotNull(a) && ObjectUtil.isNotNull(b) && ObjectUtil.isNotNull(c)) { +// DetectionData detectionData = JSON.parseObject(a.toString(), DetectionData.class); +// resultMap.putIfAbsent(dictTree.getCode() + "_" + detectionData.getResultData() + "_" + i + "_A_Standard", detectionData.getResultData()); +// resultMap.putIfAbsent(dictTree.getCode() + "_" + detectionData.getResultData() + "_" + i + "_A_Test", detectionData.getData()); +// isDataList.add(detectionData.getIsData()); +// +// detectionData = JSON.parseObject(b.toString(), DetectionData.class); +// resultMap.putIfAbsent(dictTree.getCode() + "_" + detectionData.getResultData() + "_" + i + "_B_Standard", detectionData.getResultData()); +// resultMap.putIfAbsent(dictTree.getCode() + "_" + detectionData.getResultData() + "_" + i + "_B_Test", detectionData.getData()); +// isDataList.add(detectionData.getIsData()); +// +// detectionData = JSON.parseObject(c.toString(), DetectionData.class); +// resultMap.putIfAbsent(dictTree.getCode() + "_" + detectionData.getResultData() + "_" + i + "_C_Standard", detectionData.getResultData()); +// resultMap.putIfAbsent(dictTree.getCode() + "_" + detectionData.getResultData() + "_" + i + "_C_Test", detectionData.getData()); +// isDataList.add(detectionData.getIsData()); +// } +// +// resultMap.putIfAbsent(dictTree.getCode() + "_" + i + "_Result", getResultStr(isDataList.stream().allMatch(data -> data == 1) ? 1 : (isDataList.stream().anyMatch(data -> data == 2) ? 2 : 4))); +// } catch (Exception e) { +// throw new RuntimeException(e); +// } +// } +// }); +// +// return resultMap; +// } } diff --git a/entrance/src/main/resources/model/njcn_882B4.docx b/entrance/src/main/resources/model/njcn_882B4.docx index 2b7f1acd3e35a8d5d2ae912560bc047b33e07f0a..c6c1588e99be55d79553453a47b6770e65623902 100644 GIT binary patch delta 21424 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℘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∈dB4W|TW!$TzR!^ZKa} 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 w`yHMXTb-Eg zZPSumPY;bjyV1Ti1JKuTCHETQjlf4DKo3(N6QIMo)#Ey=TdTiORz$In5{wfx4PgP| zQfy`%dU*zM-r=#*X|6e!p_DRyNkO8Eg&cM8m_?w{JmOR1wI|xuI?ojmwE5n-cs-WL zdM;>)?6uODr72u%2Z630j9cia?gI*1TF}&6V#1xh(|6PyNgORNOnKXj4j8wn8s-?) ztSO!szMjOUrI#rP-q5Ak&`wim>K$UR#>>9dJQ^n58*3s2qlVGF88Svyf9y#7ufu5V z_BHQ= z6905MP`7d@VpZv9JsjBKQ=mx6L1B6X#r_Go>C3gqdm0PEUskkOi0x>BIc09$%ihwl z*w4ZY{Kf40gH4B@r0{{b`b&)5<2>G-0GlE0Y_h%A61c(Zs?lHzD zy~_%k^|J!6E-Rv-*G{q6G-Vo#)hO9e9l_tQ4Ci?xe^2rkR+W?(5KIZ56tpvvhaA(c zkA=-lbr;(QwEeuH@)(nitz&D4i~4osr%*nQ!Jz6)AeWX#M(xOP z0{+x!J$ct43_iMXI5)mJjQ?stp8e>0pt>iD&r@;^{()|^jTrG$cme)0d#7Vo7DCwd zhtW8TE=7t>S-Xd87e6HHpi-`|A~2}c%oO|QiOc%`;_Iyat*EgrbwUy}VloI)O4MGjAuX=yV5N9BAqI1Sq zqW=JU8OTymLdn1(ym+Y1Qqu4t(qM4^+V?-%!{XAel?iP<&CaU&QogA%NgM$im`1m7 zXNlRtoF z=AI(O8PnF#?Fo?^Dy3ZSc;feG3niaTZa zFvsD0ox<? zJlGL=N}aFUh1FuT`vV50w`g}DdT+qKK<+cqwrp+f{5kDz_B0q5hIJ40)|BZGWkcoD zsFoE`dZf$EntyD4j9Bx+eUKYwZO*Nk3Sm0kN**Y1C;#Ff+X|+LQ4a7e03_8a&%DN{ zFn+Nm9yO}=5tN_2>e;v8iJFC4!+;31wyt%=yyMBGkWv3qisfJL)Dx5ALjkQlFUvp4 z9&R5qyV%8_YenE(23QmQRzZdy@LEnTtFVp`GwvDZld_fNW`CmNEerQZTa#wt*5UQ{ z_SP?fKRNkDIpFQm&iAV{(M1BHVeEqI$qqTV`XRpbM|pa%aCA%l=KI%;Lkrb#m!k%v z9%X7z$=#oyfKd8edckO~;F-NW@+!GVK68Pv=r^()RWcoTMhpF2<5NcF&ffB;zEbal zLhr3GTa~H_^ny+%Aons)TD-g%!A0yDj^*D0HU`hC%_ulqR^Ysi6dij)w7MW=N{le) z-tED(q_E-|?P8XXUSXVNFy|m!RV2jf-7wR zIuGJ+|20b;@y;ByQlU0W;-k)WdOlam+dmy;TkSq#uiP>qkm#!9EIA?Yya>w4XJmJY7SYT^!JtC5Yq;?)DS&(KrofZ_sO-JlvjV;lH_C-B@+6x_6-ZvRl6p=bZFryIQshB%;Q_!_y_h$%^AKipr?2H+WSBAF3;HM8e>Qh zkT9hG&WF96T+Nx?EZp5~9If2`lMgp*$vUm`VDuofeD%+4)|V}^onbYYbJG55DVxh+ zXPo7tMg!6&sH-0@PZy=~l&=<^7%P=--`(C``rcpZ8B7vICL}jD|E#gMlhW>&|BGaI zejdPOq|08;Lhmw+tD{FvR_*2V^}esz`b&ZqC5ioqv8x8Q-FcaMqb`HF3k7GYRu?Hk zx*wBm)lMxBgDnHmnx)}QM}O3nwdA7B?uw^zEDO-zp*gr(D#Aw*zMpcNzPe%WO^|W) zncXJBsNHKu!Dn_UwEXkWPZG?Pz6^mmDJAR2>%xBYc=XZzX`)+gtt9>Mi#*x5>B}~n zJkG#jf$A9;Lljz45f4s*)<4ODgCy5rC##EEJ7>erPh#Rhd<}2&tFAf*C-{Ye61S;W z5LiI*bW%`5?b*@dl&ED|&1c-&^Nz}zL@h}CSZ`F$1EwDynhlm7^&Pw{OgA;b4;Kkm z-9I<{_quXDD#Iec1`s0&SC+)sWxB~N0)Is<;9AN38zK}ylOs7KZvU%C>OKC~E;tAZ zCmts^3d$kL_)mKW3d4xR8^aHs6AEyOfqXO|Tp_x%L+rm~^Z0eS&3%I!Z+3%YUUa=3 zB(Z11nY&E*R|u+oIwxn)Az7T&Ph$fgtj}l|$!K|iFpgxoJ)J+FS*g_~V^hdHgwQJM zsB)d~FHfk4y$DFAKKh~(*mOp3PLs1e?1Zd5J=l~|r z5^`*J5py*gL)HiWcIkJoO?h0mO8KCd{0;f)&Yq~IHj&w8ldq-TCcJ{*GGeHq?^|`y zQY!JOVE`%Is}ghcIFN+iiI#jhlql{jOw_vqRr;5`U$kt zv%B58V+Dm$YH$yW_wi9qirc>80rBKWgE_M-2;(fsBoRu)f-gO%Y)2NjZQ@DQsT8g<;CJ>S?Pi7Bc`Me8XbSA=R2 zBokb)xkB=?wd0SL*_G~|eF>(hNxpLQpHlF_qyNmvsS&zXxV9QMo&nbWHW<8)=1n9~ z?=zf*!?~BdQpEOiEbc8-y_BO$W<`*Z=ga`>1z2$o&hh0yc{XOmn5SZxAfSS^&5rNx z3V~6PLmG{kRFeaSd5bJ{j2SmjhHX#~Rm?FNkGBRtZ1+eN+UFLEbbSYq?A_u74Ry`a zv;P{Gf$o!_4pnI&Jeh!vXYZCaPP0J;Mf~1&v|--HuWcu?hmgmVhl4+#cggi%C?;eyX)$A+9&yG<8GV#SX&+Q%zp(8D*VRkeqE65R z+|-7~7ko}%?ZgQDKJFKuJpbAe>m@863BkgNBjF^P;_xbLx5AUIdJW0;Dt$qp6rK-` zgd#TEJcGH{S5Fq~n`0y744AHr@+$7ijj%fpE*4y?esu{LjH+OSJ%GO$x(hpm6M}3W zoF-0i`hrZrYb3#ufdY0QsDB{|gMh>nL;e?|{I5It8&rBYSU9@>=T5#1u!|=@PT6__ zc|isj1HC|IuV}5<>fmVc186CO(~HiQmBdSNc9v%0a*ZV{&KIF#B_zVwN#8Q+Qg3;n zSY1B)3Nv6pcK+cDJ3xL@Lz|Y&d&hR&YORo2ie`%m*u`{cU4 zBnbz23U)m$H}2(6nl@-=)=a`prPq<}N|JPf?w6w~;GvOUBlL2}r@H{YFcQ(j$g)!$ zu`tmC@PpfFWImc(G6?3~DCxBAdfM{liNWb%A?vX)t#hhp&3i9?$4QV#xwhN*pRqu< z|NUB)PUD4US z_(Jn>S0G=}PD&r7`h(saop=gZPDN*x{d!$dK<3la3hvtnUmW2pPqBlE?X2EIw!9$0 zN5|bF?Jnb^Ls!Q?lF!BGCf>v=$DPmW^R?PXkV&;Dy;sfLIFrm(Yxo8o8WP$bYDG!? zOy;-LHb-k(TY8Ck*CoQdph;_gM0z+0w-t`k*m3QjY=0L~-!Ge{cK4^i${kfta`^_u z0563*?x;TBU8&g5EwN&19hh&9YW@8D-gZ3M{AP$Hc8>+}Ap&_lMv9D~fXHolF~R$}*OOpoTsH$F+4s`_Mh0&=0%3!` znBO1Kfqa=?*&ip9ClHctW;lN<54<;WBruUJpNtToTqAndE zNXzTi&RX84-+FKN)7A4D{?BQ?V=ME20)eapMh@}RyZ>lDMx5fqwocf3NPzBN7pQ*N zx2r-|g1sG1-IGkhJqkSd4A#VxKq^Dx7zegTtIvn>ZT@zzYs0;RKG5xyTl4Laxy77N z>et1zug78Jua|HA9ybjZE@u_}t#A);Un#Hm@riZRw&CCBqlJy!)X=Te5S4ZQDlWQm zWr%yi*CsK?7jA+6gH$G z(N?pwF;zAu#1wa;HVSyH`F}D4eLloVqI`wG8?{l zfm}EH$bG9DL{IJ+H_BYk&R{*)dpZyn*w)s#5QFmyBFZ8}H^OYWW@R)@{qn94ejE3W z!L0l&jmIN`8DHd~aHuPIukjhjhctfk$GP#~qZk!JSs|Sj%0w|h%MkdlT~B3T@7nw> zy3*$7{cfHQah%giEP`62je^{XAyU+^s&x^a#I1+ z>dd?OK)+LNhJ+Q>U-7ps8gCBJze$7r#;-G0<+c~f5*p@5evem(W+LxahQh&hK2zB_ znBnvZjEz7dWIh(6tTc5CUkrlzgKzrgK!071EfdwYX za_m?IkUYBTL^D{h_&KuT#ccofM*`onLLwK(Tx6xF1lwO4<<=2#zIfN2Zil8(=B%-l z|AFfNl6CzK?2YdQ|MI>KQ8xN~y6%1-^D^>(Ka3{+{Jq@!$;=%1gMU$Ztlq?Vi8CJj`>=V0~s(FA8`eNAG3afOZ zTshClo2EnBud%nmr#JP~IDpw*$n*cWH3EL*OdGxfPu^++KO`ydL7k(Iz`cBE0~qXt zItosL&5K?RB2k^oYzLs$(~+DMs)ipItqHyFx8v8J z)^sTf zl1m1r^h|$JQioEiRWYfEJT{aX6b#3*b5WL?$_xsRP|W_ip6(h9C%d-8z1{rI7Rsff zP}f*s9CT;M%?N(}n8Kh`_sq)F40Gl|tHAIDmIla`1<=qC$2fW$(5&<~1Z!*Jtd{ms zok!_ZzY}V#B*%aSm)b@ZQx%HnmlI-JaI5bAc!K^#15Df4JcPgYu(ez#h|NCcIxzn+ z&|KceL|x;AE_{Ky;81%A6lMmqDpI$hr~{R4TxR|vSAtR$ zIC{bHW3}My?dz%YOYJ$$7S283FJ7kdf@hf+ZKZLWc>s&tU}oK=b3hg(g+J$*rUe}@ z*EO$+3{6$g_&MhegzQSJ+mYlY#O*#-02CmRWt!mrT5Y0;t)~R_hx0xDaFoo}b3}!e zVZ&2CMRFD3Li{|oO3Q^phpk$?eBS&8XxKukWXgq}xx=qD%tiClrH7u&TAh91RYHPe zpv}#Q(?e22E>y)lII9mrYkbpo0b|ycY#dcRsY9Knj$mT*>@>YhK81P!t6eWv)l7bp zTHeX+pGP^s#*7N!0wJB!gk~DRM{6Si2X>ujw0wpT1Keq`AL5kyBOrtnB1|- zyjwTM+ZXKKUElc%(qa;7Xb#MUMZnrgw*Bx5MYCKmXtIv6V>>wu}T9QeA`{)K9Q zh4{xA4B**LzG_h&>Jx`Xg+LtvROvJDT&GtNHBFa{JxPb+rbk4goOqLvz;r7|$5L%S z1SRo{la8utTTn;RgWkOq29Wt1(nv}ThVYSvWNWF3o}KgC)8eMIUsRJ86h@X-CZD=E zNxCL7OAc5+{lw6*50Ud4rJ;f5k*0M`bl-L$C@xjBU!7rPwsW+h^-aB=uis{$?2+r_U8^RH@b8|hHSLKPGXLeOMS{mMx7iGTV-eJvoylpTkwl#frF8M zmLTn4ek_9_sC2mP!Dd+^Fxb&9lb#yGp5Pk&+868xK<#Ui>u0Fl;;2wX;-m_>qw`3D4889+q(`9+%HT=EW}yGU{y_w zC_LfAifl1YKF}$_Ko}l<9hL#OVN|R_W<{#R*camH@Is0+vW=@b8N@RUE_LBt&GrMT4!+XANxY{4rA&u@HZ;Oj_ z7K}^xlb*oMpbjjrAYGlEq4mdfA3~K5F3u_$_+U%7hpP$XeWJcvf<|?pf9lU64gy#fZ@eRMm&=s zFh>p`K@3y4klBYy!~r|io6m>8I+wmyLj8}f{%WlA*B2#vhxtCH9>U`OFsL>K8XA}( zjy4?|7HqOg=6RB2r&4&K?7o}cXe+}q0>)~hFusA?V%zvFPiIk-NS(NR_1I|zLzPS%hPwt( z^Rg@u=TIh@91vG!;P#jACH7#n>$h@IeE9%Gz4?#b?L!;+2FvIgOR5T8T~XXV{<8_C z!5pGkID|Sf>!=bvx}_a1ufj!L(S|vx*bo$oEK8+eimX&7Yz2a0^ERC^7A*>Trv)Au z(FPl+;%CL6+76$?(%fL za>U`(cjUgj^)Ob{m(?KK7y_T}R>u}rtTv~Z}RUYue z*tWECN8L2{wtfyu?#~|}g~?ZJ^ch=pFKmYty;u2ro2HpDKs3DPIKjloe%S;BTjO9a z4pWe%+anu>S}y(51{&q2q(om508JXiHR*0l!Gp;WjP9aaKap#fpEBPQk|5H`o`2EU z&rC_@l7~0ge@LU`hlLU+%oN{+Wp0qf`8z+^?-uO-wouJW0M7CT8!z!_I1sm|=I?Q; zr%hhXj~|3YL+&a#WPn|g}V)w)88$Y1D|2xUQqP`(j(CkuJ3Of(0K zXj{$pdE!gTPAsGX*JGDCAauN?477W@&Is-EnVv-O)4a2z`~v$sOgCRYe?LSD=Rkj0 z6W(0-yo(HE#PX;%ARH}zCx*kwLIJlq#68c)(?*|n`)R^om`~57f`7k&oiLCH#s}P# zeKgEcNlUXh$zDgDtGE;@dd>#avm4n)NnwvOie=$jo__MNwk&wFLs`DR^S5O(X=PIZ zrV}K10PvWTt;Tbcjdf1YhePGO*X|_0^(wza2^^<1M5VO({^6oX?)a2hgxrsiE(QKR zDGx{9>6+?^YB9#7Dl|!8ngX_6MyB3)6T+9F|EF-zXQi^S^fnvP`=8$OhI!S62R2Wv za>ty8MtdI1Dmh@*Z3q}?hh++?J!=goNli{@boyM_zY%8Pm;JPD`l+_4QSQRCU@^jw zP92Kv1pjrxm(m-+lGgPWg2}(|uZeT%Ds4llzwr(bYH-WDvj-O6(N zK^=CkO;%Cj{RY;2L!p@c3NR|6n=s)6A&rI895#t;U7f?6dfT;bKHnq<>h&$9mE|%> z{BI;}NrBvyn;ro$o$vWxwIgyUAkL(zzpSAgTKawcMly#4d`=M1K`Mj|hMw0+!JtU%BkFScc(rJ`@2 zZ~nxLANVi#_Oelfe}1Js`!4gxX}2C3@o)ovGsaIedizkIbTAxj#U{Es9h&+ib(y)m z1|v>yPc~Z#I1-w=^mhW;oobpkVc~>mQ09;!A(NXSu!Jj?_?=v6TrYn{aNgXBGBYyh zAESC)TLQFXcXdkI6F4=6E#h{dC|h}_9h~SGakw}m^;AS7AT-cnEB=O%CKl0kzgnIr zP@s%MhHC&#C7{BJsnm@~q%~YA)nC^74V=~0QS+M{N%WghMus0|??iAD8KC}x%(@fJ z$=;GVN3feXeYHk}@H^A83UF_vOk3Mb6WBN#ypErQRockI z_5ZjK-FYMTa_`nJtLWbB-8(&yaO2-bY&1YKFupj+Ow9oXGmwcAtdW=Z0s9clf z;tV`mv}Q36v_FR-k%8khHm9L_!{-)yv>NGtf?ED;Xc-xsbNk%xppzXafB-&UJ{i5| z0sTL?f%7Xb>i7u-xDYLmtf?@Vl8SJC{fUioIe$~KHFjBR&Ox~SDHd{a^@7SuYgT}x z&5pUtSFamHe=$m{11itfhCIt7Q3`}2RMMPcrLb>bQrseL_Pl`06{nK*`UaAco3HNZ za93Iia>ZqyDXN{GmqGhJqO0=;9_ABC0aSU28Bs^H>FG-xnoD7_%R5LRK=x^$w4?ct$auSRu2JFy^!{nZrtZmu_}Ad$Z|xS%I;`QVCc~eT|L9 zCSkU*Zmy^SkGu8tZ*{%&_Fo=$yrHRK>UQM971LO)FNgo~@UOEkqUTkGammO0-!H{pF3Jjh-MinX897 zxCPgO*76@ZLmQu0u6`NZW*0!48)>#II_Y$$jltG_QKK{k%s+~=8kC}5$efOjT!hUp zdA2#Qp1T?OEuxUpE^DzRE9>L(>t&VwpX!YMUg<3+YhgC)fYW~^_Sv%XZTM2WSD{CQ zGC!GQSs1b^ObbI1<~s>xT33;IUSKtFph?6S5=D^pkf>j(7~)=Z9U*}rrC!Iu+UR;; zcA?#vN|jYGr4qxz^HH!{2Grhfr!7u_R0;0mKZDS1)gsGq=Nj$>^ZO!SHtoy9n+`Hm z43_K5bIX)%wlj>KxR`s@G=k(Tiy@2y!(TQ@kGzH<5BYqvx4Cy|*_n+|lyk zAcYSv$w`6F_0S*4B$ZZb8g|*aX~$#SqXp+)e=4fr<0NKqxs_*_d8U|wuWwqww@z$g zpw0`=;Dt5MYB}qmC~)dx;QG05kB%`DA29JqY&DCak8Tbe!UD$H88Pup)dIg(qm=_S zK6s*oQ@yg8e}_a%qdP%B2b|-&#=5Ny&A9`_QUjL=e>2jp+UOzF69mswmD-OEF_z8i zUfGMv1dt@)rRH*AhAil`sEN*_!8DhHkXn`V;H@TJt|Vqc)nSmN|N7At0scF`wKEP! zO!J^G5nNaTsS6lZv98dtVu_Sp76o^HDqk0IiT}S^jlhG#tuH4}Vz4 zn6=DxuwCiR$M5DJYi(P#=6~69{;ro%bJA_N`*d!WodvX%i*nFIN|;Ko;f!+@DiDM0 z?S&RL+| z-*i7-u39W7#=c4!*W%k+qinN91>$ zQg?t-z;8&(x4SLgprZGIo7jFlO|qu9jkmO4?ns&zobIc= zxlrC^R0((Fd4_O~03PO9vO1`58wS0L^&KY#hJaeI6$32c(|5>p`VIeMf@Z~%Rn#u$ zWFwFb-~SuwLF)Q1E3y!Bl4&(bv?JWdNiBeo)6szFH?edXRrgj2`C#m;WhVgTg7-vH zG)$er{`^+;X!1hK!_sIN_OakSPe0$1U0dqE7yd7b#L*5_j=uy}`2+@-NbK7{8kj{)&$3sM z6nb3c08`~SPZiiLT$QH_SZSZxx z^&ga8`GkN?RLWUK)>%>@vBIBIm=Jx9SINEOvi?Y+yiD8$?zbj|V zhh#iK6?1E(k|h78kex+Qr9;tamFd^}!fzyC(9G!r~hzr7@%8^fc|8>Ll+{c7k4lc zA#mqdwei4id$a|yYCJ6BPm@92Th_WFZ8{ibM}qaZvUFC?NNTa68r59i+pZR@k^D5}nG}A-75Ums$ zB1rxzM?r^sxz6QFL9>&-VS4YzMv?f|x#(LE

5#^fh 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 listAll(String scriptId, String code, String devId) { - String prefix = "ad_harmonic_" + code; + String prefix = "ad_harmonic_result_" + code; DynamicTableNameHandler.setTableName(prefix); MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); - wrapper.eq(AdHarmonicResult::getScriptId, scriptId).likeRight(AdHarmonicResult::getMonitorId, devId); + wrapper.selectAll(AdHarmonicResult.class) + .selectAs(DictTree::getCode, AdHarmonicResult::getAdType) + .leftJoin(DictTree.class, DictTree::getId, AdHarmonicResult::getAdType).eq(AdHarmonicResult::getScriptId, scriptId) + .likeRight(AdHarmonicResult::getMonitorId, devId); List results = this.getBaseMapper().selectJoinList(AdHarmonicResult.class, wrapper); DynamicTableNameHandler.remove(); return results; diff --git a/storage/src/main/java/com/njcn/gather/storage/service/impl/AdNonHarmonicServiceImpl.java b/storage/src/main/java/com/njcn/gather/storage/service/impl/AdNonHarmonicServiceImpl.java index 93b3227e..5989efa8 100644 --- a/storage/src/main/java/com/njcn/gather/storage/service/impl/AdNonHarmonicServiceImpl.java +++ b/storage/src/main/java/com/njcn/gather/storage/service/impl/AdNonHarmonicServiceImpl.java @@ -155,10 +155,13 @@ public class AdNonHarmonicServiceImpl extends ServiceImpl listAll(String scriptId, String code, String devId) { - String prefix = "ad_non_harmonic_" + code; + String prefix = "ad_non_harmonic_result_" + code; DynamicTableNameHandler.setTableName(prefix); MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); - wrapper.eq(AdNonHarmonicResult::getScriptId, scriptId) + wrapper.selectAll(AdNonHarmonicResult.class) + .selectAs(DictTree::getCode, AdNonHarmonicResult::getAdType) + .leftJoin(DictTree.class, DictTree::getId, AdNonHarmonicResult::getAdType) + .eq(AdNonHarmonicResult::getScriptId, scriptId) .likeRight(AdNonHarmonicResult::getMonitorId, devId); List results = this.getBaseMapper().selectJoinList(AdNonHarmonicResult.class, wrapper); DynamicTableNameHandler.remove(); diff --git a/system/src/main/java/com/njcn/gather/system/log/service/impl/SysLogAuditServiceImpl.java b/system/src/main/java/com/njcn/gather/system/log/service/impl/SysLogAuditServiceImpl.java index 30f44749..af2b9e49 100644 --- a/system/src/main/java/com/njcn/gather/system/log/service/impl/SysLogAuditServiceImpl.java +++ b/system/src/main/java/com/njcn/gather/system/log/service/impl/SysLogAuditServiceImpl.java @@ -138,7 +138,7 @@ public class SysLogAuditServiceImpl extends ServiceImpl