diff --git a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/DefectLevel.java b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/DefectLevel.java index 730bd45..6b846b7 100644 --- a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/DefectLevel.java +++ b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/enums/DefectLevel.java @@ -4,11 +4,12 @@ import lombok.Getter; @Getter public enum DefectLevel { - // 0=无, 1=紧急, 2=严重, 3=一般 + // 0=无, 1=紧急, 2=严重, 3=一般, 4=轻微 NONE(0, "无"), - URGENT(1, ""), - SERIOUS(2, ""), - NORMAL(3, ""); + URGENT(1, "重大"), + SERIOUS(2, "严重"), + NORMAL(3, "一般"), + MINOR(4, "轻微"); private final Integer code; private final String info; diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/controller/ResultAnalysisController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/controller/ResultAnalysisController.java index 5b76671..f90b472 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/controller/ResultAnalysisController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/controller/ResultAnalysisController.java @@ -10,6 +10,7 @@ import com.inspect.analysis.service.DefectListAggregator; import com.inspect.api.service.AlarmPublisher; import com.inspect.base.core.constant.AlgConstants; import com.inspect.base.core.domain.Response; +import com.inspect.base.core.enums.DefectLevel; import com.inspect.base.core.enums.PointStatusEnum; import com.inspect.base.core.utils.StringUtils; import com.inspect.base.core.utils.poi.ExcelUtil; @@ -33,18 +34,16 @@ import com.inspect.task.service.IPatrolTaskService; import com.inspect.taskinfo.domain.PatrolTaskInfo; import com.inspect.taskinfo.service.IPatrolTaskInfoService; +import java.time.LocalDate; +import java.time.YearMonth; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import com.inspect.taskstatus.domain.PatrolTaskStatus; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequestMapping({"/analysis"}) @@ -300,6 +299,53 @@ public class ResultAnalysisController extends BaseController { return this.getDataTable(patrolResultList); } + /** + * 汇聚专用:按时间范围分页查询 result_analysis 原始结果。 + */ + @GetMapping({"/agg/list"}) + public TableDataInfo aggList(@RequestParam(required = false) String beginTime, + @RequestParam(required = false) String endTime, + @RequestParam(required = false) String taskPatrolId) { + this.startPage(); + ResultAnalysis query = new ResultAnalysis(); + query.setBeginTime(beginTime); + query.setEndTime(endTime); + query.setTaskPatrolId(taskPatrolId); + List list = this.resultAnalysisService.selectResultAnalysisList(query); + for (ResultAnalysis item : list) { + item.setDefectLevel(resolveDefectLevel(item.getResultType())); + } + return this.getDataTable(list); + } + + /** 汇聚专用:按月份聚合 defect 统计结果。 */ + @GetMapping({"/agg/defect/month"}) + public AjaxResult aggDefectMonth(@RequestParam String beginMonth, @RequestParam String endMonth) { + if (StringUtils.isEmpty(beginMonth) || StringUtils.isEmpty(endMonth)) { + return AjaxResult.error("beginMonth / endMonth 不能为空"); + } + try { + DateTimeFormatter month = DateTimeFormatter.ofPattern("yyyy-MM"); + DateTimeFormatter datetime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDate begin = YearMonth.parse(beginMonth, month).atDay(1); + LocalDate end = YearMonth.parse(endMonth, month).plusMonths(1).atDay(1); + List> list = resultAnalysisService.selectAggDefectMonthStat( + begin.atStartOfDay().format(datetime), end.atStartOfDay().format(datetime)); + return AjaxResult.success(list); + } catch (Exception e) { + return AjaxResult.error("月度缺陷统计失败: " + e.getMessage()); + } + } + private static Integer resolveDefectLevel(String resultType) { + if ("0".equals(resultType)) { + return DefectLevel.NORMAL.getCode(); + } + if ("2".equals(resultType)) { + return DefectLevel.MINOR.getCode(); + } + return DefectLevel.NONE.getCode(); + } + @Log( title = "分析结果", businessType = BizType.EXPORT diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysis.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysis.java index 903ae14..484d0e4 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysis.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysis.java @@ -46,6 +46,8 @@ public class ResultAnalysis extends BaseEntity { private String algType; private String filter; private String taskPatrolId; + /** 当前由 resultType/warnStatus 推导,后续可改为表字段 */ + private Integer defectLevel; private String resCode; private String resImgUrl; private String resConf; 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 6506198..bc15ec8 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 @@ -82,4 +82,7 @@ public interface ResultAnalysisMapper { void updateResultAnalysisByCondition(ResultAnalysis analysis); List countResultAnalysisSummary(@Param("list") List taskPatrolIds); + + List> selectAggDefectMonthStat(@Param("beginTime") String beginTime, + @Param("endTime") String endTime); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/IResultAnalysisService.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/IResultAnalysisService.java index 0ecc153..36c4314 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/IResultAnalysisService.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/IResultAnalysisService.java @@ -62,4 +62,6 @@ public interface IResultAnalysisService { void updateResultAnalysisByCondition(ResultAnalysis analysis); List countResultAnalysisSummary(List taskPatrolIds); + + List> selectAggDefectMonthStat(String format, String format1); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/ResultAnalysisServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/ResultAnalysisServiceImpl.java index 3cc4cee..5897eef 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/ResultAnalysisServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/ResultAnalysisServiceImpl.java @@ -12,10 +12,7 @@ import com.inspect.task.domain.PatrolData; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Service @@ -110,6 +107,11 @@ public class ResultAnalysisServiceImpl implements IResultAnalysisService { return resultAnalysisMapper.countResultAnalysisSummary(taskPatrolledIds); } + @Override + public List> selectAggDefectMonthStat(String beginTime, String endTime) { + return this.resultAnalysisMapper.selectAggDefectMonthStat(beginTime, endTime); + } + public int deleteResultAnalysisByLineIds(Long[] lineIds) { return this.resultAnalysisMapper.deleteResultAnalysisByLineIds(lineIds); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolData.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolData.java index e753afa..2daa47d 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolData.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolData.java @@ -105,9 +105,9 @@ public class PatrolData implements Comparable { public void setWarnStatus(String warnStatus) { this.warnStatus = warnStatus; if ("0".equals(warnStatus)) { - this.defectLevel = DefectLevel.SERIOUS.getCode(); - } else if ("2".equals(warnStatus)) { this.defectLevel = DefectLevel.NORMAL.getCode(); + } else if ("2".equals(warnStatus)) { + this.defectLevel = DefectLevel.MINOR.getCode(); } else { this.defectLevel = DefectLevel.NONE.getCode(); } 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 fdc6bf4..ee0cabb 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 @@ -757,5 +757,66 @@ and b.result_type = '0' +