diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/mapper/ResultAnalysisMapper.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/mapper/ResultAnalysisMapper.java index 2464b8e..18711c0 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/mapper/ResultAnalysisMapper.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/mapper/ResultAnalysisMapper.java @@ -22,6 +22,8 @@ public interface ResultAnalysisMapper { List selectResultAnalysisListByMainId(ResultAnalysis resultAnalysis); + List selectResultAnalysisListByMainIdNew(ResultAnalysis resultAnalysis); + List selectResultAnd(ResultAnalysis resultAnalysis); Map selectAlgorithmInfo(String key); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/insreport/domain/InspectionReport.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/insreport/domain/InspectionReport.java index 145c3f0..c0236b6 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/insreport/domain/InspectionReport.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/insreport/domain/InspectionReport.java @@ -98,6 +98,7 @@ public class InspectionReport extends BaseEntity { private Date cycleStartTime; private Date cycleEndTime; private String taskPatrolledId; + private String filter; List ReportDatalist; private List info; diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/insreportdata/domain/InspectionReportData.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/insreportdata/domain/InspectionReportData.java index 20b7460..6d53347 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/insreportdata/domain/InspectionReportData.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/insreportdata/domain/InspectionReportData.java @@ -68,6 +68,7 @@ public class InspectionReportData extends BaseEntity { private String inspectionImg; private String reportId; List reportImgList; + private String algName; @Override public boolean equals(Object object) { diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/BasePointAreaInfo.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/BasePointAreaInfo.java index 45bd013..6df8557 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/BasePointAreaInfo.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/BasePointAreaInfo.java @@ -15,6 +15,8 @@ public class BasePointAreaInfo { private String mainName; private String jgName; private String areaName; + private String channelId; + private String eqpBookId; @Override public boolean equals(Object object) { diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/PatrolResultRef.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/PatrolResultRef.java index 0c3bbbc..2b99cfd 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/PatrolResultRef.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/PatrolResultRef.java @@ -21,6 +21,19 @@ public class PatrolResultRef { private String pointStatus; private String valueUnit; private String resultContent; + private String resStatus; + private String resImgUrl; + private String resValue; + private String resDesc; + private String deviceName; + private String patrolDeviceName; + private String taskName; + private String dataType; + private String patrolDeviceCode; + private String taskCode; + private String taskPatrolledId; + private String originalValue; + private String filter; @Override public boolean equals(Object object) { diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/mapper/PatrolResultMapper.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/mapper/PatrolResultMapper.java index 866dd9d..acb9401 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/mapper/PatrolResultMapper.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/mapper/PatrolResultMapper.java @@ -112,4 +112,8 @@ public interface PatrolResultMapper { List selectResultDoc(PatrolResult patrolResult); + List selectBaseInfoByMainIdByReport(String report); + + Map selectDeviceNameById(BasePointAreaInfo basePointAreaInfo); + } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/IPatrolResultService.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/IPatrolResultService.java index 5a9a325..c29c67e 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/IPatrolResultService.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/IPatrolResultService.java @@ -19,6 +19,8 @@ public interface IPatrolResultService { List selectPatrolResultList(PatrolResult patrolResult); + ResultAnalysis selectTaskAbnormalData(ResultAnalysis resultAnalysis); + List selectPatrolResultListOrderBy(PatrolResult patrolResult); List selectPatrolDataResultByTaskCode(PatrolResult patrolResult); @@ -79,6 +81,8 @@ public interface IPatrolResultService { Long saveReport(PatrolTaskResultMain resultMain, List lineIds, Long currentLineId, List resultList); + List saveReportV2(PatrolTaskResultMain patrolTaskResultMain, List patrolResultList); + List selectResultRefByLineId(String lineId); List selectBaseInfoByMainId(String mainId); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/impl/PatrolResultServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/impl/PatrolResultServiceImpl.java index bcde5ef..1b6f74b 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/impl/PatrolResultServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/impl/PatrolResultServiceImpl.java @@ -2,6 +2,7 @@ package com.inspect.partrolresult.service.impl; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; +import com.inspect.analysis.domain.AlgValue; import com.inspect.analysis.domain.AnalyseResPoint; import com.inspect.analysis.domain.ResultAnalysis; import com.inspect.analysis.domain.resultList; @@ -31,11 +32,8 @@ import com.inspect.task.mapper.PatrolTaskMapper; import com.inspect.taskstatus.domain.PatrolTaskStatus; import com.inspect.taskstatus.mapper.PatrolTaskStatusMapper; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -94,6 +92,10 @@ public class PatrolResultServiceImpl implements IPatrolResultService { return patrolResultMapper.selectPatrolResultList(patrolResult); } + public ResultAnalysis selectTaskAbnormalData(ResultAnalysis patrolResult) { + return resultAnalysisMapper.selectTaskAbnormalData(patrolResult); + } + public List selectPatrolResultListOrderBy(PatrolResult patrolResult) { return patrolResultMapper.selectPatrolResultListOrderBy(patrolResult); } @@ -318,6 +320,19 @@ public class PatrolResultServiceImpl implements IPatrolResultService { return saveReportData(resultList, resultMain, lineIds); } + @Transactional + public List saveReportV2(PatrolTaskResultMain resultMain, List resultList) { + long startTime = System.currentTimeMillis(); + String mainId = String.valueOf(resultMain.getLineId()); + resultMain.setCheckTime(new Date()); + resultMain.setFileStatus("1"); + patrolTaskResultMainMapper.updatePatrolTaskResultMain(resultMain); + patrolResultMapper.updatePatrolResultByMainId(mainId); + PrintUtil.useTime("修正数据", startTime); + List reportIds = saveReportDataV2(resultList, resultMain); + return reportIds; + } + public Long saveReportData(List resultList, PatrolTaskResultMain resultMain, List lineIds) { long startTime = System.currentTimeMillis(); String mainId = String.valueOf(resultMain.getLineId()); @@ -381,6 +396,96 @@ public class PatrolResultServiceImpl implements IPatrolResultService { } } + public List saveReportDataV2(List resultList, PatrolTaskResultMain resultMain) { + long startTime = System.currentTimeMillis(); + String mainId = String.valueOf(resultMain.getLineId()); + String filterNum = statisticsAnalyseNumV2(mainId, "1"); + String AiNum = statisticsAnalyseNumV2(mainId, "0"); + String[] nums = new String[]{AiNum, filterNum}; + startTime = PrintUtil.useTime("统计分析数据", startTime); + if(resultList.isEmpty()) { + throw new ServiceException("缺少巡检结果:" + mainId); + } else { + PatrolResult patrolResult = resultList.get(0); + String taskCode = patrolResult.getTaskCode(); + String taskPatrolId = patrolResult.getTaskPatrolledId(); + if(StringUtils.isEmpty(taskPatrolId)) { + throw new ServiceException("缺少执行ID:" + mainId); + } else { + List taskStatuses = this.patrolTaskStatusMapper.selectPatrolTaskStatusList(new PatrolTaskStatus(taskPatrolId)); + startTime = PrintUtil.useTime("查询状态数据", startTime); + if(taskStatuses.isEmpty()) { + throw new ServiceException("缺少状态数据:" + mainId); + } else { + PatrolTaskStatus taskStatus = taskStatuses.get(0); + PatrolTask patrolTask = new PatrolTask(); + patrolTask.setTaskCode(taskCode); + List list = this.patrolTaskMapper.selectPatrolTaskList(patrolTask); + startTime = PrintUtil.useTime("查询任务计划", startTime); + if(list.isEmpty()) { + throw new ServiceException("任务计划丢失:" + taskCode); + } else { + PatrolTask task = list.get(0); + startTime = PrintUtil.useTime("查询任务报告", startTime); + Map stationMap = patrolResultMapper.selectBasedataStation(); + String stationName = stationMap.get("station_name"); + String stationType = stationMap.get("station_type"); + ResultAnalysis resultAnalysis = new ResultAnalysis(); + resultAnalysis.setTaskPatrolledId(resultList.get(0).getTaskPatrolledId()); + ResultAnalysis ras = resultAnalysisMapper.selectTaskAbnormalData(resultAnalysis); + int ii = 0; + int iii = 0; + if(0 == ras.getCsQxNum()) { + ras.setFilter("0"); + ii = 0; + iii = 0; + } + + if(0 == ras.getAiQxNum()) { + ras.setFilter("1"); + ii = 0; + iii = 1; + } + + if(0 != ras.getCsQxNum() && 0 != ras.getAiQxNum()) { + ras.setFilter("2"); + ii = 2; + } + Long[] ids = new Long[ii]; + List list1 = new ArrayList<>(); + + for(int i = 0; i < 2; ++i) { + if(0 != ras.getCsQxNum() && 0 != ras.getAiQxNum()) { + iii = i; + } + + if(i != Integer.parseInt(ras.getFilter())) { + InspectionReport report = new InspectionReport(); + resetReport(report, nums[iii], mainId, task, taskStatus); + report.setFilter(iii + ""); + report.setTaskId(String.valueOf(task.getTaskId())); + report.setTaskPatrolledId(taskPatrolId); + report.setInspectionTaskName(task.getTaskName()); + report.setDescription(resultMain.getTaskResult()); + report.setCheckPerson(resultMain.getCheckPerson()); + report.setCheckTime(resultMain.getCheckTime()); + report.setStationName(stationName); + report.setVoltLevel(this.voltage); + report.setStationType(stationType); + inspectionReportMapper.insertInspectionReport(report); + PrintUtil.useTime("新增任务报告", startTime); + batchInsertReportDataV2(String.valueOf(report.getLineId()), mainId, iii + ""); + list1.add(report.getLineId()); + PrintUtil.useTime("批量插入明细", startTime); + } + } + + return list1; + } + } + } + } + } private void resetReport(InspectionReport report, String analyseNum, String mainId, PatrolTask task, PatrolTaskStatus taskStatus) { report.setPatrolStatistics(analyseNum); //report.setInspectionDate(task.getCreateTime()); @@ -506,6 +611,138 @@ public class PatrolResultServiceImpl implements IPatrolResultService { } } + public void batchInsertReportDataV2(String reportId, String mainId, String filter) { + long startTime = System.currentTimeMillis(); + long okNum = 1L; + long failNum = 1L; + long confirmNum = 1L; + List patrolResultRefs = patrolResultMapper.selectResultRefByLineId(mainId); + patrolResultRefs = patrolResultRefs.stream().filter((item) -> { + return filter.equals(item.getFilter()); + }).collect(Collectors.toList()); + startTime = PrintUtil.useTime("查询结果关联信息", startTime); + List areas = patrolResultMapper.selectBaseInfoByMainIdByReport(mainId); + List algInfos = patrolResultMapper.selectAlgInfo(new PatrolResult()); + PrintUtil.useTime("查询地区", startTime); + log.info("[报告点位数量]: {}", patrolResultRefs.size()); + List reportDatas = new ArrayList<>(); + List reportImages = new ArrayList<>(); + + int i; + for(i = 0; i < patrolResultRefs.size(); ++i) { + PatrolResultRef ref = patrolResultRefs.get(i); + ref.setAlgName(algInfos.stream().filter((alg) -> { + return alg.getAlgSubtypeCode().equals(ref.getAlgType()); + }).findFirst().get().getAlgSubtypeName()); + String type = ref.getDevType(); + + BasePointAreaInfo area; + try { + area = areas.stream().filter((item) -> { + return item != null && ref.getDeviceId().equals(item.getPatrolPointId()); + }).findFirst().get(); + } catch (Exception e) { + log.error("[整理报告明细] 该点位没有所属区域: {}", ref.getDeviceId()); + area = new BasePointAreaInfo(); + } + + Map map = null; + BasePointAreaInfo basePointAreaInfo; + if(StringUtils.isNotNull(area.getEqpBookId())) { + basePointAreaInfo = new BasePointAreaInfo(); + basePointAreaInfo.setEqpBookId(area.getEqpBookId()); + map = patrolResultMapper.selectDeviceNameById(basePointAreaInfo); + } + + if(StringUtils.isNotNull(area.getChannelId())) { + basePointAreaInfo = new BasePointAreaInfo(); + basePointAreaInfo.setChannelId(area.getChannelId()); + map = patrolResultMapper.selectDeviceNameById(basePointAreaInfo); + } + + InspectionReportData reportData = new InspectionReportData(); + reportData.setReportId(reportId); + reportData.setArea(area.getAreaName()); + reportData.setTimeInterval(area.getJgName()); + reportData.setEqName(area.getMainName()); + reportData.setParts(area.getDeviceName()); + reportData.setPointName(area.getPatrolPointName()); + reportData.setAlgName(ref.getAlgName()); + if(type.equals("0") || type.equals("1")) { + reportData.setDataSources(map.get("device_source") + "/" + map.get("patrol_device_name")); + } else { + reportData.setDataSources(map.get("device_source") + "/" + map.get("channel_name")); + } + + try { + reportData.setAcquisitionTime(DateUtil.parseDateTime(ref.getTime())); + } catch (Exception e) { + reportData.setAcquisitionTime(new Date()); + } + + String desc = ref.getResDesc(); + String resultContent; + if("meter".equals(ref.getAlgType()) || "infrared".equals(ref.getAlgType())) { + desc = ref.getResValue(); + AlgValue algValue = new AlgValue(); + resultContent = algValue.formatValue(desc); + if(resultContent.equals("1")) { + desc = "采集图片为空"; + } else if(resultContent.equals("-1")) { + desc = "与样本有差异"; + } + } + + reportData.setInspectionResults(desc); + if("meter".equals(ref.getAlgType())) { + if("0".equals(ref.getPointStatus())) { + reportData.setPointStatus(ref.getDescription() + "(" + ref.getResValue() + ")"); + } else { + reportData.setPointStatus(ref.getResValue()); + } + } else { + reportData.setPointStatus(ref.getDescription()); + } + + reportData.setPointStatus("异常"); + reportData.setCode(failNum); + ++failNum; + String reportDataId = reportId + "_" + (100000 + i); + reportData.setLineId(reportDataId); + reportDatas.add(reportData); + resultContent = ref.getResultContent(); + AnalyseResPoint resPoint = JSONObject.parseObject(resultContent, AnalyseResPoint.class); + String imgUrl = resPoint.getResImageUrl(); + if(StringUtils.isEmpty(imgUrl)) { + imgUrl = ref.getFilePath().split(StringUtils.COMMA)[0]; + } + + InspectionReportImg reportImg = new InspectionReportImg(); + reportImg.setReportInfoId(reportDataId); + reportImg.setImg(ref.getResImgUrl()); + reportImg.setImgSrc(ref.getResImgUrl()); + reportImg.setImgType("0"); + reportImg.setCreatTime(new Date()); + reportImages.add(reportImg); + } + + i = reportDatas.size() / 50; + if(reportDatas.size() % 50 > 0) { + ++i; + } + + for(int j = 0; j < reportDatas.size(); j += 50) { + log.info("[批量插入报告明细] 进度: {}/{}", j / 50 + 1, j); + int end = j + 50; + if(end > reportDatas.size()) { + end = reportDatas.size(); + } + + inspectionReportDataMapper.batchInsertInspectionReportData(reportDatas.subList(j, end)); + inspectionReportImgMapper.batchInsertInspectionReportImg(reportImages.subList(j, end)); + } + + } public String statisticsAnalyseNum(List lineIds, int totalNum) { int okNum = 0; int failNum = 0; @@ -535,6 +772,58 @@ public class PatrolResultServiceImpl implements IPatrolResultService { return String.format(messageUtils.get("总点位:%d个,已检点位:%d个,未检点位:0个,正常点位:%d个,异常点位:%d个,待人工确认点位:%d个。"), totalNum, totalNum, okNum, failNum, confirmNum); } + public String statisticsAnalyseNumV2(String mainId, String filter) { + int okNum = 0; + int failNum = 0; + int confirmNum = 0; + ResultAnalysis resultAnalysis = new ResultAnalysis(mainId); + resultAnalysis.setFilter(filter); + List analyses = resultAnalysisMapper.selectResultAnalysisListByMainIdNew(resultAnalysis); + + for (ResultAnalysis analyse : analyses) { + String var10 = analyse.getResStatus(); + byte var11 = -1; + switch (var10.hashCode()) { + case 49: + if (var10.equals("1")) { + var11 = 0; + } + break; + case 50: + if (var10.equals("2")) { + var11 = 1; + } + break; + case 51: + if (var10.equals("3")) { + var11 = 2; + } + } + + switch (var11) { + case 0: + ++failNum; + break; + case 1: + ++okNum; + break; + case 2: + ++confirmNum; + break; + default: + log.error("【归档-统计分析数量】异常分析类型:{}", analyse.getPointStatus()); + } + } + + int totalNum = analyses.size(); + int lastNum = totalNum - failNum - confirmNum; + if(lastNum != okNum) { + ; + } + + return String.format("缺陷总数:%d个", totalNum); + } + public List selectResultRefByLineId(String mainId) { return this.patrolResultMapper.selectResultRefByLineId(mainId); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/controller/PatrolTaskResultMainController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/controller/PatrolTaskResultMainController.java index 45b785d..c5cbc18 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/controller/PatrolTaskResultMainController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/controller/PatrolTaskResultMainController.java @@ -1,6 +1,7 @@ package com.inspect.resultmain.controller; import cn.hutool.core.date.DateUtil; +import com.inspect.analysis.domain.ResultAnalysis; import com.inspect.analysis.domain.resultList; import com.inspect.analysis.service.IResultAnalysisService; import com.inspect.base.core.sftp.SftpClient; @@ -228,6 +229,43 @@ public class PatrolTaskResultMainController extends BaseController { } + @GetMapping({"/updateInfo_v2"}) + public AjaxResult updateInfoV2(PatrolTaskResultMain resultMain) { + String mainId = String.valueOf(resultMain.getLineId()); + long startTime = System.currentTimeMillis(); + logger.info("[归档]开始处理ID: {}", mainId); + AtomicInteger modifyNum = new AtomicInteger(0); + List resultList = patrolResultService.selectPatrolResultList(new PatrolResult(mainId)); + ResultAnalysis resultAnalysis = new ResultAnalysis(); + resultAnalysis.setTaskPatrolledId(resultList.get(0).getTaskPatrolledId()); + ResultAnalysis ras = patrolResultService.selectTaskAbnormalData(resultAnalysis); + if(0 == ras.getCsQxNum() && 0 == ras.getAiQxNum()) { + logger.error("[归档]没有缺陷数据, 无需归档!"); + return AjaxResult.error("没有缺陷数据, 无需归档!"); + } else if(resultList.isEmpty()) { + logger.error("[归档]失败, 数据采集中..."); + return AjaxResult.error("数据采集中请稍后...."); + } else { + int collectNum = resultList.size(); + int analyseNum = resultAnalysisService.selectResultAnalysisByMainId(resultMain.getLineId()); + startTime = PrintUtil.useTime("查询分析数据", startTime); + logger.info("[归档]执行ID: {}, 采集条数: {}, 分析条数: {}, 修正条数: {} ", mainId, collectNum, analyseNum, modifyNum.get()); + List reportIds = patrolResultService.saveReportV2(resultMain, resultList); + PrintUtil.useTime("归档结束", startTime); + (new Thread(() -> { + long beginTime = (new Date()).getTime(); + logger.info("[导出报告] 开始时间: {}", DateUtil.now()); + + for(int i = 0; i < reportIds.size(); ++i) { + exportExcelWordAndZip(String.valueOf(reportIds.get(i))); + } + + PrintUtil.useTime("导出报告结束", beginTime); + })).start(); + return toAjax(1); + } + } + public String ToStationIn(String areaId) { String areaName = ""; Map map = this.patrolResultService.selectAreaInfo(areaId); diff --git a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml index a1a23bd..291db1f 100644 --- a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml +++ b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml @@ -1088,4 +1088,25 @@ and b.line_id = #{lineId} + + + diff --git a/inspect-main/inspect-main-task/src/main/resources/mapper/task/ResultAnalysisMapper.xml b/inspect-main/inspect-main-task/src/main/resources/mapper/task/ResultAnalysisMapper.xml index a8448c0..e2ef1a1 100644 --- a/inspect-main/inspect-main-task/src/main/resources/mapper/task/ResultAnalysisMapper.xml +++ b/inspect-main/inspect-main-task/src/main/resources/mapper/task/ResultAnalysisMapper.xml @@ -133,6 +133,14 @@ and b.business_id is not null + +