From 4793c7cdbe37ff2ee6476ce7dae28138cb07e866 Mon Sep 17 00:00:00 2001 From: yinhuaiwei Date: Sun, 12 Apr 2026 15:39:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E5=A4=9A=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E8=81=94=E5=90=88=E4=BB=BB=E5=8A=A1=E4=B8=8B=E5=8F=91?= =?UTF-8?q?;=E7=BA=A0=E5=81=8F=E7=AE=97=E6=B3=95=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=88=B0=E5=85=B6=E4=BB=96=E7=AE=97=E6=B3=95=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/inspect/job/task/JobMainTask.java | 5 +- .../controller/PatrolTaskExecController.java | 2 +- .../analysis/domain/ResultAnalysis.java | 3 +- .../domain/ResultAnalysisSummaryDTO.java | 17 + .../analysis/mapper/ResultAnalysisMapper.java | 7 +- .../service/IResultAnalysisService.java | 3 + .../impl/AnalyseResponseServiceImpl.java | 21 +- .../impl/ResultAnalysisServiceImpl.java | 18 +- .../analysis/utils/ResultAnalysisUtils.java | 7 +- .../controller/PatrolResultController.java | 205 +++++----- .../mapper/PatrolResultMapper.java | 3 +- .../service/impl/PatrolResultServiceImpl.java | 117 +++--- .../mapper/PatrolTaskResultMainMapper.java | 2 + .../service/IPatrolTaskResultMainService.java | 1 + .../impl/PatrolTaskResultMainServiceImpl.java | 4 + .../task/controller/PatrolTaskController.java | 337 ++++++++--------- .../com/inspect/task/domain/SendTask.java | 2 + .../service/impl/PatrolTaskServiceImpl.java | 36 +- .../PatrolTaskStatusController.java | 77 ++-- .../taskstatus/domain/PatrolTaskStatus.java | 60 +-- .../mapper/PatrolTaskStatusMapper.java | 6 + .../service/IPatrolTaskStatusService.java | 10 + .../impl/PatrolTaskStatusServiceImpl.java | 351 ++++++++++++++---- .../mapper/task/PatrolResultMapper.xml | 150 +++++++- .../task/PatrolTaskResultMainMapper.xml | 24 +- .../mapper/task/PatrolTaskStatusMapper.xml | 172 ++++++++- .../mapper/task/ResultAnalysisMapper.xml | 22 ++ 27 files changed, 1086 insertions(+), 576 deletions(-) create mode 100644 inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysisSummaryDTO.java diff --git a/inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java b/inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java index e5c907b..65942f1 100644 --- a/inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java +++ b/inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java @@ -1099,7 +1099,6 @@ public class JobMainTask { String immediatelyExecTaskTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); redisService.setCacheObjectOfTask(RedisConst.IMMEDIATELY_EXEC_TASK_TIME, patrolTask.getTaskCode(), immediatelyExecTaskTime); log.info("SET TASK_CURRENT_CODE: key: {}, value: {}", RedisConst.TASK_CURRENT_CODE + patrolTask.getTaskCode(), RedisConst.TASK_CODE + patrolTask.getTaskCode() + StringUtils.AT + immediatelyExecTaskTime); - redisService.setCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, patrolTask.getTaskCode(), RedisConst.TASK_CODE + patrolTask.getTaskCode() + StringUtils.AT + immediatelyExecTaskTime, 4L, TimeUnit.HOURS); resetRecordCounter(patrolTask.getTaskCode()); log.info("TASK REC CNT: {}", cameraPatrolTasks.size());//devType是2的设备数 setRedisRecordCount(patrolTask.getTaskCode(), cameraPatrolTasks.size()); @@ -2056,14 +2055,14 @@ public class JobMainTask { if (!patrolTaskControlList.isEmpty()) { log.info(Color.YELLOW + "PATROL_TASK_LIST_DEVICE: {}, task list size: {}" + Color.END, redisKey, patrolTaskControlList.size()); - redisService.setCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskCode, redisKey, 5L, TimeUnit.MINUTES); + redisService.setCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskCode, redisKey, 1L, TimeUnit.HOURS); // 执行机器狗,无人机设备任务 taskExecClient.execDeviceTask(patrolTaskControlList); } if (!patrolTaskListEx.isEmpty()) { log.info(Color.YELLOW + "PATROL_TASK_LIST_VL: {}, task list size: {}" + Color.END, redisKey, patrolTaskListEx.size()); - redisService.setCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskCode, redisKey, 5L, TimeUnit.MINUTES); + redisService.setCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskCode, redisKey, 1L, TimeUnit.HOURS); execEveryDayTask(patrolTaskListEx); } // if (patrolTaskList != null && !patrolTaskList.isEmpty()) { diff --git a/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java b/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java index 86576b5..d8bde52 100644 --- a/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java +++ b/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java @@ -857,7 +857,7 @@ public class PatrolTaskExecController extends BaseController { private void extracted(String key, String taskCode) { log.info(Color.RED + "[EXEC] Add new task [{}]" + Color.END, key);//日志里没搜到 - redisService.setCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskCode, key, 5L, TimeUnit.MINUTES); + redisService.setCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskCode, key, 4L, TimeUnit.HOURS); log.info("[EXEC] key: {}", key); List cameraPatrolTasks = redisService.getCacheObject(key); if (!cameraPatrolTasks.isEmpty()) { 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 9d4da3e..7ba4bc1 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 @@ -1,6 +1,5 @@ package com.inspect.analysis.domain; -import com.inspect.analysis.constant.AnalyseConstants; import com.inspect.base.core.annotation.Excel; import com.inspect.base.core.utils.StringUtils; import com.inspect.base.core.web.domain.BaseEntity; @@ -65,6 +64,7 @@ public class ResultAnalysis extends BaseEntity { private int csYcNum; private int aiQxNum; private int aiYcNum; + private int qxNum; private String pointName; private String deviceName; private String abnormal; @@ -72,6 +72,7 @@ public class ResultAnalysis extends BaseEntity { private String deviceSource; private String filterDesc; private String desc; + private List taskPatrolIds; public ResultAnalysis(String businessId) { this.businessId = businessId; diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysisSummaryDTO.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysisSummaryDTO.java new file mode 100644 index 0000000..04d78df --- /dev/null +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysisSummaryDTO.java @@ -0,0 +1,17 @@ +package com.inspect.analysis.domain; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@ToString +public class ResultAnalysisSummaryDTO { + private String taskPatrolId; + private int qxNum; // 注意:COUNT/SUM 返回的是数值类型 + private int csQxNum; + private int aiQxNum; + private int csYcNum; + private int aiYcNum; +} 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 6ffa9e3..6506198 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 @@ -1,9 +1,6 @@ package com.inspect.analysis.mapper; -import com.inspect.analysis.domain.AlgPatrolPoint; -import com.inspect.analysis.domain.AnalyseLog; -import com.inspect.analysis.domain.AnalyseSummaryAlarmModel; -import com.inspect.analysis.domain.ResultAnalysis; +import com.inspect.analysis.domain.*; import com.inspect.partrolresult.domain.PatrolResult; import com.inspect.task.domain.PatrolData; import org.apache.ibatis.annotations.Mapper; @@ -83,4 +80,6 @@ public interface ResultAnalysisMapper { List selectResultAnalysisListBatch(@Param("list") List taskPatrolIds, @Param("resultType") String resultType); void updateResultAnalysisByCondition(ResultAnalysis analysis); + + List countResultAnalysisSummary(@Param("list") List taskPatrolIds); } 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 ef56b19..0ecc153 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 @@ -3,6 +3,7 @@ package com.inspect.analysis.service; import com.inspect.analysis.domain.AlgPatrolPoint; import com.inspect.analysis.domain.AnalyseSummaryAlarmModel; import com.inspect.analysis.domain.ResultAnalysis; +import com.inspect.analysis.domain.ResultAnalysisSummaryDTO; import com.inspect.partrolresult.domain.PatrolResult; import com.inspect.task.domain.PatrolData; @@ -59,4 +60,6 @@ public interface IResultAnalysisService { Long getDefectCountGroupByPoint(String defectFilter, String defectIsToday, String type); void updateResultAnalysisByCondition(ResultAnalysis analysis); + + List countResultAnalysisSummary(List taskPatrolIds); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalyseResponseServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalyseResponseServiceImpl.java index f880501..19c649a 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalyseResponseServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalyseResponseServiceImpl.java @@ -17,6 +17,7 @@ import com.inspect.base.core.constant.Color; import com.inspect.base.core.constant.RedisConst; import com.inspect.base.core.constant.Tags; import com.inspect.base.core.enums.TaskStatus; +import com.inspect.base.core.utils.BigDecimalUtil; import com.inspect.base.core.utils.DateUtils; import com.inspect.base.core.utils.StringUtils; import com.inspect.base.redis.service.RedisService; @@ -39,6 +40,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.IOException; +import java.math.BigDecimal; import java.text.DecimalFormat; import java.util.*; import java.util.stream.Collectors; @@ -751,11 +753,7 @@ public class AnalyseResponseServiceImpl implements IAnalyseResponseService { private Map selectObj2PatrolResultMap(String filter, String patrolTaskId, String deviceId) { log.info("OBJ_TO_PATROL_RESULT_S taskPatrolId: {}, filter: {}, deviceId: {}", patrolTaskId, filter, deviceId); - List resultMainList = - patrolTaskResultMainService.selectPatrolTaskResultMainList(new PatrolTaskResultMain(patrolTaskId)); - assert resultMainList != null; - assert !resultMainList.isEmpty(); - PatrolTaskResultMain resultMain = resultMainList.get(0); + PatrolTaskResultMain resultMain = patrolTaskResultMainService.selectPatrolTaskResultMainOne(patrolTaskId); PatrolResult patrolResult = new PatrolResult(); patrolResult.setMainId(String.valueOf(resultMain.getLineId())); patrolResult.setDeviceId(deviceId); @@ -930,8 +928,9 @@ public class AnalyseResponseServiceImpl implements IAnalyseResponseService { if (!patrolTaskStatusList.isEmpty()) { patrolTaskStatus = patrolTaskStatusList.get(0); patrolTaskStatus.setTaskEstimatedTime(algorithmProgress); - if ("100.0".equals(algorithmProgress)) { - patrolTaskStatus.setEndTime(DateUtil.formatDateTime(new Date())); + BigDecimal algorithmProgressBD = BigDecimalUtil.toBigDecimal(algorithmProgress); + BigDecimal oneHundredBD = new BigDecimal(100); + if (algorithmProgressBD.compareTo(oneHundredBD) == 0) { log.info(Color.GREEN + "DONE CALC_REMOTE_ALGORITHM_PROGRESS taskPatrolledId: {}, objectId: {}, curNumber: {}, totalNumer: {}, algorithmProgress: {}, db-taskProgress: {}" + Color.END, taskPatrolledId, objectId, @@ -939,11 +938,11 @@ public class AnalyseResponseServiceImpl implements IAnalyseResponseService { totalNumber, algorithmProgress, patrolTaskStatus.getTaskProgress()); - //patrolTaskStatus.setTaskProgress("100.0"); - if("100.0".equals(patrolTaskStatus.getTaskProgress())) { + BigDecimal taskProgressBD = BigDecimalUtil.toBigDecimal(patrolTaskStatus.getTaskProgress()); + if (taskProgressBD.compareTo(oneHundredBD) == 0) { patrolTaskStatus.setTaskState(TaskStatus.DONE.getCode()); } - patrolTaskStatusService.updatePatrolTaskStatus(patrolTaskStatus); + patrolTaskStatusService.updateTaskProgress(patrolTaskStatus.getLineId(), patrolTaskStatus.getTaskProgress(), patrolTaskStatus.getTaskEstimatedTime(), patrolTaskStatus.getTaskState()); } else { log.info(Color.GREEN + "RUNNING CALC_REMOTE_ALGORITHM_PROGRESS taskPatrolledId: {}, objectId: {}, curNumber: {}, totalNumer: {}, algorithmProgress: {}, status: {}" + Color.END, taskPatrolledId, @@ -955,7 +954,7 @@ public class AnalyseResponseServiceImpl implements IAnalyseResponseService { if (TaskStatus.RUNNING.getCode().equals(patrolTaskStatus.getTaskState())) { patrolTaskStatus.setTaskState(TaskStatus.RUNNING.getCode()); - patrolTaskStatusService.updatePatrolTaskStatus(patrolTaskStatus); + patrolTaskStatusService.updateTaskProgress(patrolTaskStatus.getLineId(), patrolTaskStatus.getTaskProgress(), patrolTaskStatus.getTaskEstimatedTime(), patrolTaskStatus.getTaskState()); } } } 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 9126711..3cc4cee 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 @@ -3,10 +3,14 @@ package com.inspect.analysis.service.impl; import com.inspect.analysis.domain.AlgPatrolPoint; import com.inspect.analysis.domain.AnalyseSummaryAlarmModel; import com.inspect.analysis.domain.ResultAnalysis; +import com.inspect.analysis.domain.ResultAnalysisSummaryDTO; import com.inspect.analysis.mapper.ResultAnalysisMapper; import com.inspect.analysis.service.IResultAnalysisService; import com.inspect.base.core.utils.StringUtils; import com.inspect.partrolresult.domain.PatrolResult; +import com.inspect.task.domain.PatrolData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; @@ -14,11 +18,6 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import com.inspect.task.domain.PatrolData; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - @Service @Slf4j public class ResultAnalysisServiceImpl implements IResultAnalysisService { @@ -103,6 +102,14 @@ public class ResultAnalysisServiceImpl implements IResultAnalysisService { this.resultAnalysisMapper.updateResultAnalysisByCondition(analysis); } + @Override + public List countResultAnalysisSummary(List taskPatrolledIds) { + if (taskPatrolledIds.size() == 0) { + return null; + } + return resultAnalysisMapper.countResultAnalysisSummary(taskPatrolledIds); + } + public int deleteResultAnalysisByLineIds(Long[] lineIds) { return this.resultAnalysisMapper.deleteResultAnalysisByLineIds(lineIds); } @@ -115,6 +122,7 @@ public class ResultAnalysisServiceImpl implements IResultAnalysisService { return this.resultAnalysisMapper.selectTaskAbnormalData(resultAnalysis); } + @Override public Map selectTaskAbnormalDataBatch(List taskPatrolledIds) { if (taskPatrolledIds == null || taskPatrolledIds.isEmpty()) { return new HashMap<>(); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java index 3c67d0e..e8ce09d 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java @@ -66,12 +66,7 @@ public class ResultAnalysisUtils { log.info("PARSE_ALG algType: {}, algValue: {}, value: {}, defaultDesc: {}", algType, algValue, value, defaultDesc); // 初筛红外 - if ("1".equals(resultAnalysis.getFilter()) && algType != null && - (algType.equals("infrared") || - algType.equals("infra_1800") || - algType.equals("infra_yu3") || - algType.equals("infra_camera") || - algType.equals("infra_camera_reverse"))) { + if ("1".equals(resultAnalysis.getFilter()) && AlgConstants.ALG_INFRARED_LIST.contains(algType)) { // 绍兴初筛红外改成正常 resultAnalysis.setResultType("1"); resultAnalysis.setPointStatus("1"); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java index 1952b6a..ac4b23c 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java @@ -10,10 +10,11 @@ import com.inspect.base.core.constant.AlgConstants; import com.inspect.base.core.constant.Color; import com.inspect.base.core.constant.RedisConst; import com.inspect.base.core.domain.DataMsg; +import com.inspect.base.core.domain.maintain.MaintainRegion; import com.inspect.base.core.enums.StaEnum; import com.inspect.base.core.enums.TaskStatus; +import com.inspect.base.core.enums.TaskType; import com.inspect.base.core.exception.ServiceException; -import com.inspect.base.core.service.SyncDataToUpstreamService; import com.inspect.base.core.sftp.SftpClient; import com.inspect.base.core.sftp.SftpUploadEntity; import com.inspect.base.core.utils.DateUtils; @@ -26,16 +27,15 @@ import com.inspect.base.core.utils.xml.GenXmlByBean; import com.inspect.base.core.web.controller.BaseController; import com.inspect.base.core.web.domain.AjaxResult; import com.inspect.base.core.web.page.TableDataInfo; +import com.inspect.base.redis.service.RedisService; import com.inspect.common.log.annotation.Log; import com.inspect.common.log.enums.BizType; -import com.inspect.base.redis.service.RedisService; import com.inspect.fegin.FeignMinioService; import com.inspect.fegin.MultipartFileUtils; import com.inspect.fegin.UploadResponse; import com.inspect.infrared.InfraredImageParser; import com.inspect.infrared.InfraredRequestParam; import com.inspect.infrared.InfraredResponse; -import com.inspect.base.core.domain.maintain.MaintainRegion; import com.inspect.maintain.domain.MaintainAreaXML; import com.inspect.maintain.domain.PatrolMaintainModuleXml; import com.inspect.maintain.service.IMaintainRegionService; @@ -48,7 +48,6 @@ import com.inspect.partrolresult.mapper.DeviceStateMapper; import com.inspect.partrolresult.mapper.PatrolResultMapper; import com.inspect.partrolresult.service.IAnalyseRequestService; import com.inspect.partrolresult.service.IPatrolResultService; -import com.inspect.partrolresult.util.ImageUtil; import com.inspect.partrolresultAux.domain.PatrolResultAux; import com.inspect.partrolresultAux.service.IPatrolResultAuxService; import com.inspect.resultmain.domain.PatrolTaskResultMain; @@ -65,7 +64,16 @@ import com.inspect.taskftp.domain.PatrolTaskFtp; import com.inspect.taskftp.service.IPatrolTaskFtpService; import com.inspect.taskstatus.domain.PatrolTaskStatus; import com.inspect.taskstatus.service.IPatrolTaskStatusService; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; @@ -75,41 +83,20 @@ import java.net.URL; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; +import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; -import javax.annotation.Resource; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.format.annotation.DateTimeFormat; -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.RequestParam; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; @RestController @RequestMapping({"/partrolresult"}) public class PatrolResultController extends BaseController { private static final ExecutorService executor = Executors.newFixedThreadPool(100); + @Resource + DeviceStateMapper deviceStateMapper; + @Resource + ResultStatistics resultStatistics; @Value("${sftp.ip}") private String ip; @Value("${sftp.port}") @@ -120,7 +107,6 @@ public class PatrolResultController extends BaseController { private String password; @Value("${INTRANET_FTP_VIEW_ADDRESS}") private String intranetFtpAddress; - @Resource private IPatrolResultService patrolResultService; @Resource @@ -133,14 +119,8 @@ public class PatrolResultController extends BaseController { private IPatrolTaskStatusService patrolTaskStatusService; @Resource private IPatrolTaskStatusService iPatrolTaskStatusService; - @Resource private IResultAnalysisService resultAnalysisService; - - @Resource - SyncDataToUpstreamService syncDataToUpstreamService; - @Resource - IUploadServer iUploadServer; @Resource private IPatrolTaskResultMainService iPatrolTaskResultMainService; @Resource @@ -152,16 +132,11 @@ public class PatrolResultController extends BaseController { @Resource private SftpClient sftpClient; @Resource - DeviceStateMapper deviceStateMapper; - @Resource private IPatrolTaskResultMainService patrolTaskResultMainService; @Resource private IMaintainRegionService maintainRegionService; @Resource private BaseDataClient baseDataClient; - @Resource - ResultStatistics resultStatistics; - @Resource private PatrolResultMapper patrolResultMapper; @@ -1143,7 +1118,7 @@ public class PatrolResultController extends BaseController { } catch (Exception e) { logger.error("error", e); } - + PatrolTask patrolTaskDb = patrolTaskListOfDb.get(0); if (StringUtils.isNotEmpty(patrolTaskStatusItem.getTaskPatrolledId())) { String str = ""; @@ -1166,21 +1141,13 @@ public class PatrolResultController extends BaseController { if (!patrolTaskStatusList.isEmpty()) { PatrolTaskStatus patrolTaskStatusOfDb = patrolTaskStatusList.get(0); // 除了db非完成或终止或暂停状态,当db状态与上报状态不一致时,更新db状态 - // sendCode.isEmpty为摄像机 if (!Arrays.asList(TaskStatus.DONE.getCode(), TaskStatus.HALTED.getCode()).contains(patrolTaskStatusOfDb.getTaskState()) - && !patrolTaskStatusItem.getTaskState().equals(TaskStatus.DONE.getCode()) - && !patrolTaskStatusOfDb.getTaskState().equals(patrolTaskStatusItem.getTaskState()) - && !sendCode.isEmpty() + && !Arrays.asList(TaskStatus.DONE.getCode(),patrolTaskStatusOfDb.getTaskState()).contains(patrolTaskStatusItem.getTaskState()) + && !sendCode.equals("摄像头") ) { logger.info("GET_INFO_41 UPDATE TASK_STATE old: {} TO new: {}", patrolTaskStatusOfDb.getTaskState(), patrolTaskStatusItem.getTaskState()); patrolTaskStatusOfDb.setTaskState(patrolTaskStatusItem.getTaskState()); - // 如果上报状态为终止或超期限制状态时,需更新终止时间 - if(patrolTaskStatusItem.getTaskState().equals(TaskStatus.HALTED.getCode())|| patrolTaskStatusItem.getTaskState().equals(TaskStatus.EXPIRED.getCode())) { - String endTime = DateUtils.parseDateToStr(DateUtils.yyyyMMddHHmmss2, new Date()); - patrolTaskStatusItem.setEndTime(endTime); - patrolTaskStatusOfDb.setEndTime(endTime); - } - iPatrolTaskStatusService.updatePatrolTaskStatusOfTaskState(patrolTaskStatusOfDb); + iPatrolTaskStatusService.updateTaskProgress(patrolTaskStatusOfDb.getLineId(), patrolTaskStatusOfDb.getTaskProgress(), null, patrolTaskStatusOfDb.getTaskState()); } double runProgress = 0.0; double dbProgress = 0.0; @@ -1214,9 +1181,6 @@ public class PatrolResultController extends BaseController { calProgressInDb); if (runProgress > dbProgress) { patrolTaskStatusItem.setLineId(patrolTaskStatusOfDb.getLineId()); - if (patrolTaskStatusItem.getTaskName().contains("联合") && !patrolTaskStatusItem.getTaskName().startsWith(sendCode)) { - patrolTaskStatusItem.setTaskName(sendCode + "-" + patrolTaskStatusItem.getTaskName()); - } logger.info(Color.CYAN + "updating patrol_task_status taskPatrolledId: {}, progress: {}, taskState: {}" + Color.END, patrolTaskStatusItem.getTaskPatrolledId(), runProgress, @@ -1240,14 +1204,12 @@ public class PatrolResultController extends BaseController { RedisConst.TASK_CURRENT_CODE + patrolTaskStatusItem.getTaskCode()); PatrolTaskStatus taskStatus = statusList.get(0); taskStatus.setTaskProgress(String.valueOf(runProgress)); - iPatrolTaskStatusService.updatePatrolTaskStatusOfTaskProgress(taskStatus); // 仅当智巡进度100%+算法进度100%才更新任务状态为完成 if ("100.0".equals(calProgressInDb)) { logger.info("!!!!!!!!!!!!!!!!!! set task_status done!!!"); taskStatus.setTaskState(TaskStatus.DONE.getCode()); - iPatrolTaskStatusService.updatePatrolTaskStatusOfTaskState(taskStatus); } - redisService.deleteObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskStatus.getTaskCode()); + iPatrolTaskStatusService.updateTaskProgress(taskStatus.getLineId(), taskStatus.getTaskProgress(), null, taskStatus.getTaskState()); } } else { List statusList = patrolTaskStatusService.selectPatrolTaskStatusList(PatrolTaskStatus.builder().taskPatrolledId(patrolTaskStatusItem.getTaskPatrolledId()).build()); @@ -1263,7 +1225,7 @@ public class PatrolResultController extends BaseController { patrolTaskStatusOfDb.getTaskEstimatedTime()); patrolTaskStatusItem.setTaskState(TaskStatus.RUNNING.getCode()); patrolTaskStatusItem.setTaskProgress(String.valueOf(runProgress)); - i = iPatrolTaskStatusService.updatePatrolTaskStatusRunning(patrolTaskStatusItem); + iPatrolTaskStatusService.updateTaskProgress(patrolTaskStatusItem.getLineId(), patrolTaskStatusItem.getTaskProgress(), null, patrolTaskStatusItem.getTaskState()); } } } @@ -1283,10 +1245,45 @@ public class PatrolResultController extends BaseController { patrolTaskStatusItem.setCreateTime(new Date()); patrolTaskStatusItem.setStartTime(new Date()); patrolTaskStatusItem.setTaskEstimatedTime(""); - - if (patrolTaskStatusItem.getTaskName().contains("联合") && !patrolTaskStatusItem.getTaskName().startsWith(sendCode)) { - patrolTaskStatusItem.setTaskName(sendCode + "-" + patrolTaskStatusItem.getTaskName()); + patrolTaskStatusItem.setTaskType(TaskType.ORDINARY.getCode()); + String devType = patrolTaskDb.getDevType(); + String taskCode = patrolTaskDb.getTaskCode(); + String[] devTypeArray = Arrays.stream(devType.split(",")).distinct().toArray(String[]::new); + // note 任务包含多个设备类型,则为联合任务 + if (devTypeArray.length > 1) { + // 当taskCode为多设备且redis中正在执行该taskCode的任务时,新增或ignore主任务 + final String taskCurrentCode = redisService.getCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskCode); + logger.info(Color.CYAN + "task is union task, taskCode: {}, devType: {}, taskCurrentCode: {}" + Color.END, taskCode, devType, taskCurrentCode); + if (StringUtils.isNotEmpty(taskCurrentCode)) { + String execTime = taskCurrentCode.substring(taskCurrentCode.lastIndexOf("@") + 1); + String taskPatrolledId = taskCode + "_" + execTime + "_uni"; + PatrolTaskStatus patrolTaskStatusMain = PatrolTaskStatus.builder() + .createTime(patrolTaskStatusItem.getCreateTime()) + .startTime(patrolTaskStatusItem.getStartTime()) + .taskPatrolledId(taskPatrolledId) + .taskCode(taskCode) + .posType("-1") + .taskState(TaskStatus.RUNNING.getCode()) + .taskName(patrolTaskDb.getTaskName()) + .taskProgress("0") + .taskEstimatedTime("0") + .taskType(TaskType.MAIN.getCode()) + .build(); + + patrolTaskStatusItem.setTaskName(sendCode + "@" + patrolTaskStatusItem.getTaskName()); + patrolTaskStatusItem.setMainId(patrolTaskStatusMain.getTaskPatrolledId()); + patrolTaskStatusItem.setTaskType(TaskType.SUB.getCode()); + + int row = iPatrolTaskStatusService.insertIgnorePatrolTaskStatus(patrolTaskStatusMain); + if (row > 0) { + logger.info("主任务{}, patrolTaskStatusMain: {} 插入成功", patrolTaskStatusMain.getLineId(), patrolTaskStatusMain); + } else { + logger.info("主任务{}, taskPatrolledId: {} 已存在,忽略", patrolTaskStatusMain.getLineId(), patrolTaskStatusMain.getTaskPatrolledId()); + } + } } + + // 普通任务或子任务 i = iPatrolTaskStatusService.insertPatrolTaskStatus(patrolTaskStatusItem); } } @@ -1406,64 +1403,26 @@ public class PatrolResultController extends BaseController { // } // } } - List tasks = patrolTaskService.selectPatrolTaskList(PatrolTask.builder().taskCode(code).build()); String datetype; - if (!tasks.isEmpty()) { - PatrolTaskResultMain taskResultMain = new PatrolTaskResultMain(); - taskResultMain.setTaskId(String.valueOf(tasks.get(0).getTaskId())); - taskResultMain.setTaskPatrolledId(patrolResultList.get(0).getTaskPatrolledId()); - logger.info("taskResultMain: {}", taskResultMain); - List patrolTaskResultMainList = iPatrolTaskResultMainService.selectPatrolTaskResultMainList(taskResultMain); - if (!patrolTaskResultMainList.isEmpty()) { - mainID = patrolTaskResultMainList.get(0).getLineId().intValue(); - logger.info("exist PatrolTaskResultMain Id: {}", mainID); - } else { - PatrolTaskResultMain patrolTaskResultMain = new PatrolTaskResultMain(); - patrolTaskResultMain.setTaskId(String.valueOf(tasks.get(0).getTaskId())); - patrolTaskResultMain.setCreateBy("admin"); - patrolTaskResultMain.setCreateTime(new Date()); - if (StringUtils.isNotEmpty(tasks.get(0).getAreaName())) { - patrolTaskResultMain.setAreaName(tasks.get(0).getAreaName()); - } - - patrolTaskResultMain.setFileStatus("0"); - patrolTaskResultMain.setTaskPatrolledId(patrolResultList.get(0).getTaskPatrolledId()); - int devCount = tasks.get(0).getDevNo().split(StringUtils.COMMA).length; - if (devCount > 1) { - PatrolTaskResultMain resultMainQuery = new PatrolTaskResultMain(); - resultMainQuery.setTaskId(String.valueOf(tasks.get(0).getTaskId())); - //select unified_task_patrolled_id from patrol_task_result_main where task_id = #{taskId} and file_status = 0 and (now() - create_time) <= 120 ORDER BY line_id desc limit 1 - String unifiedTaskPatrolledId = iPatrolTaskResultMainService.selectUnifiedTaskPatrolledId(resultMainQuery); - if (unifiedTaskPatrolledId != null) { - patrolTaskResultMain.setUnifiedTaskPatrolledId(unifiedTaskPatrolledId); - } else { - patrolTaskResultMain.setUnifiedTaskPatrolledId(taskResultMain.getTaskId() + "_" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())); - } - } else { - patrolTaskResultMain.setUnifiedTaskPatrolledId(taskResultMain.getTaskId() + "_" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())); - } - patrolTaskResultMain.setTaskCode(tasks.get(0).getTaskCode()); - patrolTaskResultMain.setTaskName(tasks.get(0).getTaskName()); - patrolTaskResultMain.setTaskType(tasks.get(0).getType()); - patrolTaskResultMain.setTaskTime(tasks.get(0).getCreateTime()); - if (StringUtils.isNotEmpty(tasks.get(0).getAreaId())) { - Map map = patrolResultService.selectAreaByAudit(tasks.get(0).getAreaId()); - if (map != null && map.get("area_name") != null) { - patrolTaskResultMain.setIntervalName(map.get("area_name")); - } - } - - datetype = toDevType(patrolDeviceCodeList); - if (StringUtils.isNotEmpty(datetype)) { - patrolTaskResultMain.setDevType(datetype); - } else { - patrolTaskResultMain.setDevType(tasks.get(0).getDevType()); - } - - mainID = iPatrolTaskResultMainService.insertPatrolTaskResultMain(patrolTaskResultMain);// - logger.info("insert PatrolTaskResultMain Id: {}", mainID); - } + // 创建巡视归档记录taskMain + PatrolTaskStatus mainTaskStatus = iPatrolTaskStatusService.selectPatrolTaskStatusMain(patrolResultList.get(0).getTaskPatrolledId()); + logger.info("mainTaskStatus: {}", mainTaskStatus); + if (mainTaskStatus == null) { + logger.info("GET_INFO_61 ROBOT_TASK_STATUS CODE {} NO EXIST, SKIP IT!", patrolResultList.get(0).getTaskCode()); + return toAjax(i); + } + PatrolTaskResultMain taskResultMain = new PatrolTaskResultMain(); + taskResultMain.setTaskId(String.valueOf(tasks.get(0).getTaskId())); + taskResultMain.setTaskPatrolledId(mainTaskStatus.getTaskPatrolledId()); + logger.info("taskResultMain: {}", taskResultMain); + List patrolTaskResultMainList = iPatrolTaskResultMainService.selectPatrolTaskResultMainList(taskResultMain); + if (!patrolTaskResultMainList.isEmpty()) { + mainID = patrolTaskResultMainList.get(0).getLineId().intValue(); + logger.info("exist PatrolTaskResultMain Id: {}", mainID); + } else { + mainID = iPatrolTaskStatusService.generateTaskResultMain(mainTaskStatus); + logger.info("insert PatrolTaskResultMain Id: {}", mainID); } List algrithomPatrolResultList = new ArrayList<>(); @@ -1671,11 +1630,13 @@ public class PatrolResultController extends BaseController { if (!algrithomPatrolResultList.isEmpty()) { logger.info(Color.CYAN + "+++++++ callAlgorithm start +++++++" + Color.END); + // 非摄像头的设备任务,需要从数据库统计执行点位数量 if (jsonRootBean.getTotalNumber() == null && !tasks.isEmpty()) { logger.info("jsonRootBean.getTotalNumber not NULL: {}", algrithomPatrolResultList); String taskId = String.valueOf(tasks.get(0).getTaskId()); - logger.info("taskId: {}", taskId); - List algList = patrolResultMapper.selectAlgList(taskId); + logger.info("taskId: {}, sendCode: {}", taskId, sendCode); + // 获取设备标识,以便统计执行点位数量 + List algList = patrolResultMapper.selectAlgList(taskId, sendCode, null); logger.info("algList: {}", algList.toString()); int algCount = 0; for (String alg : algList) { 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 a62888b..11286d8 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 @@ -118,6 +118,7 @@ public interface PatrolResultMapper { Map selectDeviceNameById(BasePointAreaInfo basePointAreaInfo); - List selectAlgList(String taskId); + List selectAlgList(@Param("taskId") String taskId, @Param("sendCode") String sendCode, @Param("devType") String devType); + List selectPatrolDataResultByTaskCodeV3(ResultAnalysis resultAnalysis); } 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 1845b7a..fb36a48 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 @@ -8,6 +8,7 @@ import com.inspect.analysis.domain.AnalyseResPoint; import com.inspect.analysis.domain.ResultAnalysis; import com.inspect.analysis.mapper.ResultAnalysisMapper; import com.inspect.base.core.constant.AlgConstants; +import com.inspect.base.core.enums.TaskType; import com.inspect.base.core.exception.ServiceException; import com.inspect.base.core.utils.DateUtils; import com.inspect.base.core.utils.StringUtils; @@ -34,11 +35,6 @@ import com.inspect.task.domain.PatrolTask; import com.inspect.task.mapper.PatrolTaskMapper; import com.inspect.taskstatus.domain.PatrolTaskStatus; import com.inspect.taskstatus.mapper.PatrolTaskStatusMapper; - -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.stream.Collectors; - import io.seata.common.util.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,20 +44,25 @@ import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + @Service @RefreshScope public class PatrolResultServiceImpl implements IPatrolResultService { private static final Logger log = LoggerFactory.getLogger(PatrolResultServiceImpl.class); - - @Value("${inspect.task.report.voltage:±800kv}") - private String voltage; - - @Value("${inspect.task.report.all:0}") - private String exportReportFlag; - - private final PatrolResultMapper patrolResultMapper; + private static final Set validAlgTypes = new HashSet<>(Arrays.asList( + AlgConstants.METER, + AlgConstants.XB, + AlgConstants.INFRA_1800, + AlgConstants.INFRA_YU3, + AlgConstants.INFRA_CAMERA, + AlgConstants.INFRA_CAMERA_REVERSE + )); final PatrolResultDefaultValueMapper patrolResultDefaultvalueMapper; + private final PatrolResultMapper patrolResultMapper; private final PatrolTaskResultMainMapper patrolTaskResultMainMapper; private final PatrolTaskStatusMapper patrolTaskStatusMapper; private final PatrolTaskMapper patrolTaskMapper; @@ -69,20 +70,14 @@ public class PatrolResultServiceImpl implements IPatrolResultService { private final InspectionReportImgMapper inspectionReportImgMapper; private final InspectionReportDataMapper inspectionReportDataMapper; private final ResultAnalysisMapper resultAnalysisMapper; - private final FeignBasedataAreaService feignBasedataAreaService; - + @Value("${inspect.task.report.voltage:±800kv}") + private String voltage; + @Value("${inspect.task.report.all:0}") + private String exportReportFlag; @Autowired private MessageUtils messageUtils; - - private static final Set validAlgTypes = new HashSet<>(Arrays.asList( - AlgConstants.METER, - AlgConstants.XB, - AlgConstants.INFRA_1800, - AlgConstants.INFRA_YU3, - AlgConstants.INFRA_CAMERA, - AlgConstants.INFRA_CAMERA_REVERSE - ));; + ; public PatrolResultServiceImpl(PatrolResultMapper patrolResultMapper, PatrolResultDefaultValueMapper patrolResultDefaultvalueMapper, PatrolTaskResultMainMapper patrolTaskResultMainMapper, PatrolTaskStatusMapper patrolTaskStatusMapper, PatrolTaskMapper patrolTaskMapper, InspectionReportMapper inspectionReportMapper, InspectionReportImgMapper inspectionReportImgMapper, InspectionReportDataMapper inspectionReportDataMapper, ResultAnalysisMapper resultAnalysisMapper, FeignBasedataAreaService feignBasedataAreaService) { this.patrolResultMapper = patrolResultMapper; @@ -130,11 +125,21 @@ public class PatrolResultServiceImpl implements IPatrolResultService { return patrolResultMapper.selectPatrolDataResultByTaskCode(patrolResult); } + @Override public List selectPatrolDataResultByTaskCodeV2(ResultAnalysis resultAnalysis) { - return this.patrolResultMapper.selectPatrolDataResultByTaskCodeV2(resultAnalysis); + PatrolTaskStatus patrolTaskStatus = patrolTaskStatusMapper.selectPatrolTaskStatusByTaskPatrolledId(resultAnalysis.getTaskPatrolId()); + if (patrolTaskStatus != null) { + if (patrolTaskStatus.getTaskType().equals(TaskType.MAIN.getCode())) { + List taskPatrolIds = patrolTaskStatus.getChildren().stream().map(PatrolTaskStatus::getTaskPatrolledId).collect(Collectors.toList()); + resultAnalysis.setTaskPatrolIds(taskPatrolIds); + } else { + resultAnalysis.setTaskPatrolIds(Collections.singletonList(patrolTaskStatus.getTaskPatrolledId())); + } + } + log.info("---------------[TASK] query resultAnalysis {}", resultAnalysis); + return this.patrolResultMapper.selectPatrolDataResultByTaskCodeV3(resultAnalysis); } - public List selectPatrolDataResultByTaskCodeList(PatrolTaskStatus patrolTaskStatus) { return patrolResultMapper.selectPatrolDataResultByTaskCodeList(patrolTaskStatus); } @@ -366,7 +371,6 @@ public class PatrolResultServiceImpl implements IPatrolResultService { // return saveReportData(resultList, resultMain, lineIds); } - @Transactional public List saveReportLingzhou_v2(PatrolTaskResultMain resultMain, List lineIds, Long currentLineId, List resultList) { long startTime = System.currentTimeMillis(); @@ -504,6 +508,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { @Transactional public List saveReportShaoxing(PatrolTaskResultMain resultMain, List lineIds, List resultList) { + log.info("saveReportShaoxing PatrolTaskResultMain:{},lineIds:{},resultList:{} ", resultMain, lineIds, resultList); long startTime = System.currentTimeMillis(); List reportIds = new ArrayList<>(); // 获取站信息 @@ -536,6 +541,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { List taskNames = resultList.stream().map(PatrolResult::getTaskName).distinct().collect(Collectors.toList()); String taskName = StringUtils.join(taskNames, ","); boolean isMultipleTasks = CollectionUtils.isNotEmpty(taskPatrolledIds) && taskPatrolledIds.size() > 1; + // todo 多任务判断有问题 if (isMultipleTasks) { // 说明多个任务合并,任务名称修改为巡视日期-巡视报告 例如:2026年3月23日-巡视报告 Date date = CollectionUtils.isNotEmpty(startTimes) ? startTimes.get(0) : new Date(); @@ -713,11 +719,13 @@ public class PatrolResultServiceImpl implements IPatrolResultService { resultMain.setCheckTime(new Date()); resultMain.setFileStatus("1"); String mainId = String.valueOf(resultMain.getLineId()); + // 查询当前的结果信息 PatrolResult patrolResult = resultList.stream().filter(item -> mainId.equals(item.getMainId())).findFirst().orElse(null); assert patrolResult != null; String taskCode = patrolResult.getTaskCode(); - String taskPatrolId = patrolResult.getTaskPatrolledId(); + PatrolTaskResultMain main = patrolTaskResultMainMapper.selectPatrolTaskResultMainByLineId(lineId); + String taskPatrolId = main.getTaskPatrolledId(); if (StringUtils.isEmpty(taskPatrolId)) { throw new ServiceException("LACK PLAN ID: " + mainId); } else { @@ -922,7 +930,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { if ("0".equals(exportReportFlag) && aiQxNum == 0 && csQxNum == 0) { continue; } - Map keyPatrolResultRef = new HashMap<>(); + Map keyPatrolResultRef = new HashMap<>(); List patrolResultRefs = patrolResultMapper.selectResultRefByLineIds(lineIds, "0"); List patrolResultRefsFilter = patrolResultMapper.selectResultRefByLineIds(lineIds, "1"); for (PatrolResultRef AIRef : patrolResultRefs) { @@ -940,7 +948,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { report.setInspectionStartTime(startTimes.get(0)); report.setInspectionEndTime(DateUtils.parseDate(endTimes.get(endTimes.size() - 1))); report.setTaskId(String.valueOf(task.getTaskId())); - report.setEnvInfo(StringUtils.join(envoList,",")); + report.setEnvInfo(StringUtils.join(envoList, ",")); report.setTaskPatrolledId(taskPatrolId); report.setInspectionTaskName(taskName); report.setDescription(resultMain.getTaskResult()); @@ -973,18 +981,18 @@ public class PatrolResultServiceImpl implements IPatrolResultService { String AiNum = statisticsAnalyseNumV2(mainId, "0"); String[] nums = new String[]{AiNum, filterNum}; startTime = PrintUtil.useTime("统计分析数据", startTime); - if(resultList.isEmpty()) { + 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)) { + 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()) { + if (taskStatuses.isEmpty()) { throw new ServiceException("缺少状态数据:" + mainId); } else { PatrolTaskStatus taskStatus = taskStatuses.get(0); @@ -992,7 +1000,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { patrolTask.setTaskCode(taskCode); List list = this.patrolTaskMapper.selectPatrolTaskList(patrolTask); startTime = PrintUtil.useTime("查询任务计划", startTime); - if(list.isEmpty()) { + if (list.isEmpty()) { throw new ServiceException("任务计划丢失:" + taskCode); } else { PatrolTask task = list.get(0); @@ -1005,31 +1013,31 @@ public class PatrolResultServiceImpl implements IPatrolResultService { ResultAnalysis ras = resultAnalysisMapper.selectTaskAbnormalData(resultAnalysis); int ii = 0; int iii = 0; - if(0 == ras.getCsQxNum()) { + if (0 == ras.getCsQxNum()) { ras.setFilter("0"); ii = 0; iii = 0; } - if(0 == ras.getAiQxNum()) { + if (0 == ras.getAiQxNum()) { ras.setFilter("1"); ii = 0; iii = 1; } - if(0 != ras.getCsQxNum() && 0 != ras.getAiQxNum()) { + 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()) { + for (int i = 0; i < 2; ++i) { + if (0 != ras.getCsQxNum() && 0 != ras.getAiQxNum()) { iii = i; } - if(i != Integer.parseInt(ras.getFilter())) { + if (i != Integer.parseInt(ras.getFilter())) { InspectionReport report = new InspectionReport(); resetReport(report, nums[iii], mainId, task, taskStatus); report.setFilter(iii + ""); @@ -1056,6 +1064,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { } } } + private void resetReport(InspectionReport report, String analyseNum, String mainId, PatrolTask task, PatrolTaskStatus taskStatus) { report.setPatrolStatistics(analyseNum); //report.setInspectionDate(task.getCreateTime()); @@ -1071,7 +1080,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { // List patrolResultRefs = patrolResultMapper.selectResultRefByLineId(mainId); // List patrolResultRefs = patrolResultMapper.selectResultRefByLineIds(mainIds, filter); if ("0".equals(exportReportFlag)) { - List resultRefs = new ArrayList<>(); + List resultRefs = new ArrayList<>(); // 只导出缺陷 patrolResultRefs = patrolResultRefs.stream().filter((item) -> "0".equals(item.getResultType())).collect(Collectors.toList()); // 分组,按点位ID和算法类型进行分组 @@ -1148,7 +1157,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { } reportData.setAlgName(patrolResultRef.getAlgName()); String threshold = patrolResultRef.getThreshold(); - if(StringUtils.isBlank(threshold)) { + if (StringUtils.isBlank(threshold)) { threshold = ""; } if ("1".equals(patrolResultRef.getResultType()) && threshold.contains("sub_53")) { @@ -1182,7 +1191,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { // ++okNum; // } log.info("[RESULT] resultType: {}, patrolResultRef: {}", resultType, patrolResultRef); - if(resultType == null) { + if (resultType == null) { continue; } else if (resultType.equals("0")) { reportData.setPointStatus(messageUtils.get("缺陷")); @@ -1294,7 +1303,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { } reportData.setAlgName(patrolResultRef.getAlgName()); String threshold = patrolResultRef.getThreshold(); - if(StringUtils.isBlank(threshold)) { + if (StringUtils.isBlank(threshold)) { threshold = ""; } if ("1".equals(patrolResultRef.getResultType()) && threshold.contains("sub_53")) { @@ -1312,7 +1321,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { String pointStatus = patrolResultRef.getPointStatus(); String resultType = patrolResultRef.getResultType(); log.info("[RESULT] resultType: {}, patrolResultRef: {}", resultType, patrolResultRef); - if(resultType == null) { + if (resultType == null) { continue; } else if (resultType.equals("0")) { reportData.setPointStatus(messageUtils.get("缺陷")); @@ -1394,7 +1403,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { public void batchInsertReportData_Lingzhou(String reportId, List basePointAreaInfoList, String filter, List patrolResultRefs) { long startTime = System.currentTimeMillis(); if ("0".equals(exportReportFlag)) { - List resultRefs = new ArrayList<>(); + List resultRefs = new ArrayList<>(); // 只导出缺陷 patrolResultRefs = patrolResultRefs.stream().filter((item) -> "0".equals(item.getResultType())).collect(Collectors.toList()); // 分组,按点位ID和算法类型进行分组 @@ -1466,7 +1475,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { } reportData.setAlgName(patrolResultRef.getAlgName()); String threshold = patrolResultRef.getThreshold(); - if(StringUtils.isBlank(threshold)) { + if (StringUtils.isBlank(threshold)) { threshold = ""; } if ("1".equals(patrolResultRef.getResultType()) && threshold.contains("sub_53")) { @@ -1483,7 +1492,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { String resultType = patrolResultRef.getResultType(); log.info("[RESULT] resultType: {}, patrolResultRef: {}", resultType, patrolResultRef); - if(resultType == null) { + if (resultType == null) { continue; } else if (resultType.equals("0")) { reportData.setPointStatus(messageUtils.get("缺陷")); @@ -1559,7 +1568,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { List reportImages = new ArrayList<>(); int i; - for(i = 0; i < patrolResultRefs.size(); ++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()); @@ -1730,7 +1739,6 @@ public class PatrolResultServiceImpl implements IPatrolResultService { return String.format(messageUtils.get("缺陷总数:%d个"), confirmNum); } - public String statisticsAnalyseNumLingZhou(List lineIds) { int okNum = 0; int failNum = 0; @@ -1777,7 +1785,6 @@ public class PatrolResultServiceImpl implements IPatrolResultService { } } - public String statisticsAnalyseNumShaoxing(List lineIds) { int okNum = 0; int failNum = 0; @@ -1850,7 +1857,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { int totalNum = analyses.size(); int lastNum = totalNum - failNum - confirmNum; - if(lastNum != okNum) { + if (lastNum != okNum) { ; } @@ -1928,7 +1935,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { report.setStationType(stationType); Map> groupKeyListMap; if ("0".equals(exportReportFlag)) { - List resultRefs = new ArrayList<>(); + List resultRefs = new ArrayList<>(); // 只导出缺陷 patrolResultRefs = patrolResultRefs.stream().filter((item) -> "0".equals(item.getResultType())).collect(Collectors.toList()); // 分组,按点位ID和算法类型进行分组 @@ -2093,7 +2100,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { } reportData.setAlgName(patrolResultRef.getAlgName()); String threshold = patrolResultRef.getThreshold(); - if(StringUtils.isBlank(threshold)) { + if (StringUtils.isBlank(threshold)) { threshold = ""; } if ("1".equals(patrolResultRef.getResultType()) && threshold.contains("sub_53")) { @@ -2110,7 +2117,7 @@ public class PatrolResultServiceImpl implements IPatrolResultService { String resultType = patrolResultRef.getResultType(); // log.info("[RESULT] resultType: {}, patrolResultRef: {}", resultType, patrolResultRef); - if(resultType == null) { + if (resultType == null) { continue; } else if (resultType.equals("0")) { reportData.setPointStatus(messageUtils.get("缺陷")); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/mapper/PatrolTaskResultMainMapper.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/mapper/PatrolTaskResultMainMapper.java index 5140165..96967ca 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/mapper/PatrolTaskResultMainMapper.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/mapper/PatrolTaskResultMainMapper.java @@ -33,4 +33,6 @@ public interface PatrolTaskResultMainMapper { List selectLineIds(Long lineId); List selectLineIdsByList(@Param("lineIds") List lineIds); + + PatrolTaskResultMain selectPatrolTaskResultMainOne(String patrolTaskId); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/service/IPatrolTaskResultMainService.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/service/IPatrolTaskResultMainService.java index b9077c7..f2a8003 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/service/IPatrolTaskResultMainService.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/service/IPatrolTaskResultMainService.java @@ -31,4 +31,5 @@ public interface IPatrolTaskResultMainService { List selectLineIdsByList(List lineIds); + PatrolTaskResultMain selectPatrolTaskResultMainOne(String patrolTaskId); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/service/impl/PatrolTaskResultMainServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/service/impl/PatrolTaskResultMainServiceImpl.java index 2a3c07c..7ab2ce2 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/service/impl/PatrolTaskResultMainServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/service/impl/PatrolTaskResultMainServiceImpl.java @@ -74,4 +74,8 @@ public class PatrolTaskResultMainServiceImpl implements IPatrolTaskResultMainSer return this.patrolTaskResultMainMapper.selectLineIdsByList(lineIds); } + @Override + public PatrolTaskResultMain selectPatrolTaskResultMainOne(String patrolTaskId) { + return this.patrolTaskResultMainMapper.selectPatrolTaskResultMainOne(patrolTaskId); + } } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java index 362d008..a3ec552 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java @@ -6,6 +6,7 @@ import com.github.pagehelper.PageInfo; import com.inspect.analysis.domain.AlgValue; import com.inspect.analysis.domain.ResultAnalysis; import com.inspect.analysis.service.IResultAnalysisService; +import com.inspect.base.core.constant.AlgConstants; import com.inspect.base.core.constant.Color; import com.inspect.base.core.constant.RedisConst; import com.inspect.base.core.domain.DataMsg; @@ -269,233 +270,205 @@ public class PatrolTaskController extends BaseController { return getDataTable(list); } - @GetMapping({"/taskInfo_v2"}) - public TableDataInfo taskInfoV2(PatrolTaskStatus patrolTaskStatus) { + @GetMapping("/taskInfo_v2") + public TableDataInfo taskInfoV3(PatrolTaskStatus patrolTaskStatus) { logger.info(Color.GREEN + "[MAIN TASK] taskInfoV2 param: {}" + Color.END, patrolTaskStatus); Long lineId = patrolTaskStatus.getLineId(); if (lineId == null) { return getDataTable(1, new ArrayList<>(), new ArrayList<>()); } - long t1 = System.currentTimeMillis(); - PatrolTaskStatus taskStatus = patrolTaskStatusService.selectPatrolTaskStatusByLineId(patrolTaskStatus.getLineId()); + PatrolTaskStatus taskStatus = patrolTaskStatusService.selectPatrolTaskStatusByLineId(lineId); if (taskStatus == null) { return getDataTable(2, new ArrayList<>(), new ArrayList<>()); } + // 查询算法列表 + List algInfos = patrolResultService.selectAlgInfo(new PatrolResult()); ResultAnalysis resultAnalysis = new ResultAnalysis(); resultAnalysis.setTaskPatrolId(taskStatus.getTaskPatrolledId()); resultAnalysis.setPosType(patrolTaskStatus.getPosType()); resultAnalysis.setFilter("1"); - logger.info("---------------[TASK] query resultAnalysis {}", resultAnalysis); - // 初筛数据 + // 初筛数据(filter=1) List filterList = patrolResultService.selectPatrolDataResultByTaskCodeV2(resultAnalysis); -// logger.debug("---------------[TASK] query filterList {}", filterList); - List algInfos = patrolResultService.selectAlgInfo(new PatrolResult()); + + // 大模型数据(filter=0) resultAnalysis.setFilter("0"); - long t2 = System.currentTimeMillis(); - // 大模型数据 List newList = patrolResultService.selectPatrolDataResultByTaskCodeV2(resultAnalysis); - // 光明大模型数据 + + // 光明模型数据(filter=2) resultAnalysis.setFilter("2"); - List brightNewList = patrolResultService.selectPatrolDataResultByTaskCodeV2(resultAnalysis); -// logger.info("----------------[TASK] query newList {}", newList); -// if (newList == null) { -// return getDataTable(2, new ArrayList<>(), new ArrayList<>()); -// } - long t3 = System.currentTimeMillis(); + List brightList = patrolResultService.selectPatrolDataResultByTaskCodeV2(resultAnalysis); + + // 1. 预构建 algName 映射(避免每次循环 stream 查找) + Map algNameMap = algInfos.stream() + .collect(Collectors.toMap( + AlgInfo::getAlgSubtypeCode, + AlgInfo::getAlgSubtypeName, + (a, b) -> a // 重复时保留第一个 + )); + + // 2. 使用 LinkedHashMap 构建 filter/bright 映射(O(1) 查找 + 保持原有顺序) + Map filterMap = filterList.stream() + .collect(Collectors.toMap( + data -> data.getObjectId() + "_" + data.getAlgType(), + data -> data, + (a, b) -> a, + LinkedHashMap::new + )); + + Map brightMap = brightList.stream() + .collect(Collectors.toMap( + data -> data.getObjectId() + "_" + data.getAlgType(), + data -> data, + (a, b) -> a, + LinkedHashMap::new + )); + for (PatrolData item : newList) { -// item.setAlgName((algInfos.stream().filter((alg) -> { -// return alg.getAlgSubtypeCode().equals(item.getAlgType()); -// }).findFirst().get()).getAlgSubtypeName()); - item.setAlgName( - algInfos.stream().anyMatch((alg) -> { - return alg.getAlgSubtypeCode().equals(item.getAlgType()); - }) ? - algInfos.stream().filter((alg) -> { - return alg.getAlgSubtypeCode().equals(item.getAlgType()); - }).findFirst().get().getAlgSubtypeName() : "" - ); - if ("0".equals(item.getFilter())) { - // 初筛数据 - List filterDatas = filterList.stream().filter((data) -> { - return data.getObjectId().equals(item.getObjectId()) && data.getAlgType().equals(item.getAlgType()); - }).collect(Collectors.toList()); - if (!filterDatas.isEmpty()) { - item.setImg((filterDatas.get(0)).getImgAnalyse()); - item.setFilterDesc((filterDatas.get(0)).getDesc()); - if (StringUtils.isEmpty(item.getImageNormalUrlPath())) { - item.setImageNormalUrlPath((filterDatas.get(0)).getImageNormalUrlPath()); - } -// filterList.remove(filterDatas.get(0)); - filterList.removeAll(filterDatas); - } - // 光明大模型数据 - List brightDatas = brightNewList.stream().filter((bright) -> { - return bright.getObjectId().equals(item.getObjectId()) && bright.getAlgType().equals(item.getAlgType()); - }).collect(Collectors.toList()); - if (!brightDatas.isEmpty()) { - item.setBrightDesc(brightDatas.get(0).getDesc()); - item.setBrightResStatus(brightDatas.get(0).getResStatus()); - item.setBrightImgAnalyse(brightDatas.get(0).getImgAnalyse()); -// brightNewList.remove(brightDatas.get(0)); - brightNewList.removeAll(brightDatas); + String key = item.getObjectId() + "_" + item.getAlgType(); + + // 初筛数据合并 + PatrolData filterData = filterMap.get(key); + if (filterData != null) { + item.setImg(filterData.getImgAnalyse()); + item.setFilterDesc(filterData.getDesc()); + if (StringUtils.isEmpty(item.getImageNormalUrlPath())) { + item.setImageNormalUrlPath(filterData.getImageNormalUrlPath()); } + filterMap.remove(key); } - AlgValue algValue = new AlgValue(); - if (item.getResValue() != null) { - String str = algValue.formatValue(item.getResValue()); - if ("meter".equals(item.getAlgType())) { - if (str.equals("-1")) { - item.setResValue("空值"); - } - } + // 光明大模型数据合并 + PatrolData brightData = brightMap.get(key); + if (brightData != null) { + item.setBrightDesc(brightData.getDesc()); + item.setBrightResStatus(brightData.getResStatus()); + item.setBrightImgAnalyse(brightData.getImgAnalyse()); + brightMap.remove(key); } } - for (PatrolData item : filterList) { - // 光明大模型数据 - List brightDatas = brightNewList.stream().filter((bright) -> { - return bright.getObjectId().equals(item.getObjectId()) && bright.getAlgType().equals(item.getAlgType()); - }).collect(Collectors.toList()); - if (!brightDatas.isEmpty()) { - item.setBrightDesc(brightDatas.get(0).getDesc()); - item.setBrightResStatus(brightDatas.get(0).getResStatus()); - item.setBrightImgAnalyse(brightDatas.get(0).getImgAnalyse()); -// brightNewList.remove(brightDatas.get(0)); - brightNewList.removeAll(brightDatas); - } - item.setAlgName( - algInfos.stream().anyMatch((alg) -> { - return alg.getAlgSubtypeCode().equals(item.getAlgType()); - }) ? - algInfos.stream().filter((alg) -> { - return alg.getAlgSubtypeCode().equals(item.getAlgType()); - }).findFirst().get().getAlgSubtypeName() : "" - ); - AlgValue algValue = new AlgValue(); - if (item.getResValue() != null) { - String str = algValue.formatValue(item.getResValue()); - if ("meter".equals(item.getAlgType())) { - if (str.equals("-1")) { - item.setResValue("空值"); - } - } + + // 4. 处理剩余初筛数据 + List remainingFilters = new ArrayList<>(filterMap.values()); + for (PatrolData item : remainingFilters) { + String key = item.getObjectId() + "_" + item.getAlgType(); + PatrolData brightData = brightMap.get(key); + if (brightData != null) { + item.setBrightDesc(brightData.getDesc()); + item.setBrightResStatus(brightData.getResStatus()); + item.setBrightImgAnalyse(brightData.getImgAnalyse()); + brightMap.remove(key); } item.setImgAnalyse(null); item.setFilterDesc(item.getDesc()); item.setDesc(""); } - for (PatrolData item : brightNewList) { - item.setAlgName( - algInfos.stream().anyMatch((alg) -> { - return alg.getAlgSubtypeCode().equals(item.getAlgType()); - }) ? - algInfos.stream().filter((alg) -> { - return alg.getAlgSubtypeCode().equals(item.getAlgType()); - }).findFirst().get().getAlgSubtypeName() : "" - ); - AlgValue algValue = new AlgValue(); - if (item.getResValue() != null) { - String str = algValue.formatValue(item.getResValue()); - if ("meter".equals(item.getAlgType())) { - if (str.equals("-1")) { - item.setResValue("空值"); - } - } - } + + // 5. 处理剩余光明大模型数据 + List remainingBrights = new ArrayList<>(brightMap.values()); + for (PatrolData item : remainingBrights) { item.setBrightDesc(item.getDesc()); item.setBrightResStatus(item.getResStatus()); item.setBrightImgAnalyse(item.getImgAnalyse()); item.setDesc(""); } - newList.addAll(filterList); - newList.addAll(brightNewList); - if (StringUtils.isNotEmpty(patrolTaskStatus.getAlgName())) { - newList = newList.stream().filter((element) -> { - return patrolTaskStatus.getAlgName().equals(element.getAlgName()); - }).collect(Collectors.toList()); - } - if (StringUtils.isNotEmpty(patrolTaskStatus.getFilterDesc())) { - newList = newList.stream().filter((element) -> { - return patrolTaskStatus.getFilterDesc().equals(element.getFilterDesc()); - }).collect(Collectors.toList()); - } - - // 生产设备 模糊匹配 - if (StringUtils.isNotEmpty(patrolTaskStatus.getDeviceName())) { - newList = newList.stream().filter((element) -> - element.getDeviceName().contains(patrolTaskStatus.getDeviceName()) - ).collect(Collectors.toList()); - } - // 点位名称 模糊匹配 - if (StringUtils.isNotEmpty(patrolTaskStatus.getPointName())) { - newList = newList.stream().filter((element) -> - element.getPointName().contains(patrolTaskStatus.getPointName()) - ).collect(Collectors.toList()); - } - // 相机名称 模糊匹配 - if (StringUtils.isNotEmpty(patrolTaskStatus.getChannelName())) { - newList = newList.stream().filter((element) -> - element.getChannelName().contains(patrolTaskStatus.getChannelName()) - ).collect(Collectors.toList()); - } - // 来源系统 模糊匹配 - if (StringUtils.isNotEmpty(patrolTaskStatus.getDeviceSource())) { - newList = newList.stream().filter((element) -> - element.getDeviceSource().contains(patrolTaskStatus.getDeviceSource()) - ).collect(Collectors.toList()); - } - - if (StringUtils.isNotEmpty(patrolTaskStatus.getPointStatus())) { - newList = newList.stream().filter((element) -> { - return patrolTaskStatus.getPointStatus().equals(element.getPointStatus()); - }).collect(Collectors.toList()); - } - - if (StringUtils.isNotEmpty(patrolTaskStatus.getDesc())) { - newList = newList.stream().filter((element) -> { - return patrolTaskStatus.getDesc().equals(element.getDesc()); - }).collect(Collectors.toList()); - } - - if (StringUtils.isNotEmpty(patrolTaskStatus.getResultType())) { - newList = newList.stream().filter((element) -> { - return patrolTaskStatus.getResultType().equals(element.getWarnStatus()); - }).collect(Collectors.toList()); - } + // 合并所有数据 + newList.addAll(remainingFilters); + newList.addAll(remainingBrights); + // 6. 统一设置 algName + resValue 格式化(只循环一次) + AlgValue algValue = new AlgValue(); + for (PatrolData item : newList) { + item.setAlgName(algNameMap.getOrDefault(item.getAlgType(), "")); + if (item.getResValue() != null) { + String str = algValue.formatValue(item.getResValue()); + if ("meter".equals(item.getAlgType()) && "-1".equals(str)) { + item.setResValue("空值"); + } + } + } + + // 6.1 合并纠偏算法数据 + Map> partitionedMap = newList.stream() + .collect(Collectors.partitioningBy(element -> AlgConstants.CORRECTION.equals(element.getAlgType()))); + List correctionList = partitionedMap.getOrDefault(true, Collections.emptyList()); + newList = partitionedMap.getOrDefault(false, Collections.emptyList()); + + if(!correctionList.isEmpty()) { + for(PatrolData item : newList) { + Optional correctionOptional = correctionList.stream().filter(element -> element.getObjectId().equals(item.getObjectId())).findFirst(); + if (correctionOptional.isPresent()) { + PatrolData correctionData = correctionOptional.get(); + item.setResStatus(correctionData.getResStatus()); + item.setOriginalValue(correctionData.getOriginalValue()); + } + } + } + + // 7. 所有过滤条件合并为一个 stream(避免多次 filter + collect) + newList = newList.stream() + .filter(element -> StringUtils.isEmpty(patrolTaskStatus.getAlgName()) + || patrolTaskStatus.getAlgName().equals(element.getAlgName())) + .filter(element -> StringUtils.isEmpty(patrolTaskStatus.getFilterDesc()) + || patrolTaskStatus.getFilterDesc().equals(element.getFilterDesc())) + // 生产设备、点位名称等模糊匹配(增加 null 保护,防止 NPE) + .filter(element -> StringUtils.isEmpty(patrolTaskStatus.getDeviceName()) + || (element.getDeviceName() != null && element.getDeviceName().contains(patrolTaskStatus.getDeviceName()))) + .filter(element -> StringUtils.isEmpty(patrolTaskStatus.getPointName()) + || (element.getPointName() != null && element.getPointName().contains(patrolTaskStatus.getPointName()))) + .filter(element -> StringUtils.isEmpty(patrolTaskStatus.getChannelName()) + || (element.getChannelName() != null && element.getChannelName().contains(patrolTaskStatus.getChannelName()))) + .filter(element -> StringUtils.isEmpty(patrolTaskStatus.getDeviceSource()) + || (element.getDeviceSource() != null && element.getDeviceSource().contains(patrolTaskStatus.getDeviceSource()))) + .filter(element -> StringUtils.isEmpty(patrolTaskStatus.getPointStatus()) + || patrolTaskStatus.getPointStatus().equals(element.getPointStatus())) + .filter(element -> StringUtils.isEmpty(patrolTaskStatus.getDesc()) + || patrolTaskStatus.getDesc().equals(element.getDesc())) + .filter(element -> StringUtils.isEmpty(patrolTaskStatus.getResultType()) + || patrolTaskStatus.getResultType().equals(element.getWarnStatus())) + .collect(Collectors.toList()); + + // 8. 去重(保持首次出现顺序) Map keyPatrolData = new LinkedHashMap<>(); for (PatrolData patrolData : newList) { keyPatrolData.putIfAbsent(patrolData.getObjectId() + "_" + patrolData.getAlgType(), patrolData); } newList = new ArrayList<>(keyPatrolData.values()); + + // 9. 异常置顶排序 if ("1".equals(patrolTaskStatus.getAbnormal())) { - // 异常置顶 newList.sort(Comparator.comparingInt(obj -> { switch (obj.getPointStatus()) { - case "6": return 1; // 缺陷 - case "5": return 2; // 确认 - case "4": return 3; // 跟踪(告警) - case "0": return 4; // 异常 - case "1": return 5; // 正常 - case "2": return 6; // 待人工确认 - case "3": return 7; // 已撤销(忽略) - default: return 8; + case "6": + return 1; // 缺陷 + case "5": + return 2; // 确认 + case "4": + return 3; // 跟踪(告警) + case "0": + return 4; // 异常 + case "1": + return 5; // 正常 + case "2": + return 6; // 待人工确认 + case "3": + return 7; // 已撤销(忽略) + default: + return 8; } })); } + // 10. 分页(仍为内存分页,详见下方说明) PageDomain pageDomain = TableSupport.buildPageRequest(); int pageNum = pageDomain.getPageNum(); int pageSize = pageDomain.getPageSize(); - int toNum = Math.min(newList.size(), pageNum * pageSize); - List pageList = newList.subList((pageNum - 1) * pageSize, toNum); -// int toNum = newList.size(); -// List pageList = newList.subList(0, toNum); - long t5 = System.currentTimeMillis(); - logger.info("[MAIN TASK] task detail inquery step 1 cost: {}", (t2 - t1)); - logger.info("[MAIN TASK] task detail inquery step 2 cost: {}", (t3 - t2)); - logger.info("[MAIN TASK] task detail inquery step 3 cost: {}", (t5 - t3)); + int fromIndex = (pageNum - 1) * pageSize; + int toIndex = Math.min(newList.size(), pageNum * pageSize); + List pageList = (fromIndex < newList.size()) + ? newList.subList(fromIndex, toIndex) + : new ArrayList<>(); + return getDataTable(0, pageList, newList); } @@ -3231,9 +3204,8 @@ public class PatrolTaskController extends BaseController { @GetMapping({"/getPatrolPointName"}) public AjaxResult getPatrolPointName(PatrolTaskStatus patrolTaskStatus) { - PatrolTaskStatus patro = patrolTaskStatusService.selectPatrolTaskStatusByLineId(patrolTaskStatus.getLineId()); ResultAnalysis resultAnalysis = new ResultAnalysis(); - resultAnalysis.setTaskPatrolId(patro.getTaskPatrolledId()); + resultAnalysis.setTaskPatrolId(patrolTaskStatus.getTaskPatrolledId()); resultAnalysis.setFilter("1"); resultAnalysis.setDeviceName(patrolTaskStatus.getDeviceName()); resultAnalysis.setPointName(patrolTaskStatus.getPointName()); @@ -3335,7 +3307,7 @@ public class PatrolTaskController extends BaseController { mapList.add(map1); } else { logger.info("GET_PATROL_POINT_NAME taskPatrolId: {} result_analysis point_status is null, item: {}", - patro.getTaskPatrolledId(), + patrolTaskStatus.getTaskPatrolledId(), item); } } @@ -3450,7 +3422,4 @@ public class PatrolTaskController extends BaseController { map.put("listAlgName", listAlgName); return AjaxResult.success(map); } - - public static void main(String[] args) { - } } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/SendTask.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/SendTask.java index 7ea63de..06422f3 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/SendTask.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/SendTask.java @@ -29,6 +29,8 @@ public class SendTask { name = "Command" ) private String command; + + private String Time; @JSONField( name = "Type" ) diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java index 0523398..bf5b3ba 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/service/impl/PatrolTaskServiceImpl.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.inspect.analysis.domain.ResultAnalysis; import com.inspect.analysis.mapper.ResultAnalysisMapper; +import com.inspect.base.core.constant.AlgConstants; import com.inspect.base.core.sftp.SftpClient; import com.inspect.base.core.sftp.SftpUploadEntity; import com.inspect.base.core.utils.DateUtils; @@ -15,19 +16,12 @@ import com.inspect.partrolresult.util.PrintUtil; import com.inspect.resultmain.controller.PatrolTaskResultMainController; import com.inspect.resultmain.domain.PatrolTaskResultMain; import com.inspect.task.domain.DeviceConvert; - import com.inspect.task.domain.PatrolData; import com.inspect.task.domain.PatrolTask; import com.inspect.task.mapper.PatrolTaskMapper; import com.inspect.task.service.IPatrolTaskService; - -import java.net.URLEncoder; -import java.util.*; -import java.util.stream.Collectors; - import com.inspect.taskstatus.domain.PatrolTaskStatus; import com.inspect.taskstatus.mapper.PatrolTaskStatusMapper; -import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; @@ -35,7 +29,9 @@ import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; -import java.util.List; +import java.net.URLEncoder; +import java.util.*; +import java.util.stream.Collectors; @Slf4j @EnableScheduling @@ -43,20 +39,14 @@ import java.util.List; public class PatrolTaskServiceImpl implements IPatrolTaskService { final PatrolTaskMapper patrolTaskMapper; - - @Autowired - private PatrolTaskStatusMapper patrolTaskStatusMapper; - + final ResultAnalysisMapper resultAnalysisMapper; @Autowired private PatrolTaskResultMainController patrolTaskResultMainController; - @Autowired private TaskCalendarGenerator taskCalendarGenerator; @Autowired private SftpClient sftpClient; - final ResultAnalysisMapper resultAnalysisMapper; - @Autowired public PatrolTaskServiceImpl(PatrolTaskMapper patrolTaskMapper, ResultAnalysisMapper resultAnalysisMapper) { this.patrolTaskMapper = patrolTaskMapper; @@ -203,9 +193,19 @@ public class PatrolTaskServiceImpl implements IPatrolTaskService { ObjectMapper mapper = new ObjectMapper(); List> list; + ResultAnalysis resultAnalysis = new ResultAnalysis(); + resultAnalysis.setTaskPatrolId(patrolData.getTaskPatrolId()); + resultAnalysis.setObjectId(patrolData.getPointId()); + resultAnalysis.setAlgType(AlgConstants.CORRECTION); try { - list = mapper.readValue(patrolData.getResValue(), new TypeReference>>() { - }); + List resultAnalysisList = resultAnalysisMapper.selectResultAnalysisList(resultAnalysis); + if (!resultAnalysisList.isEmpty()) { + resultAnalysis = resultAnalysisList.get(0); + list = mapper.readValue(resultAnalysis.getResValue(), new TypeReference>>() { + }); + } else { + list = new ArrayList<>(); + } log.info("controller correctionAlgorithm correction value: {}", list); } catch (Exception e) { log.info("controller correctionAlgorithm correction value exception"); @@ -265,8 +265,6 @@ public class PatrolTaskServiceImpl implements IPatrolTaskService { // 更新结果 if (!StringUtils.isEmpty(patrolData.getLineId()) && filePath != "") { - ResultAnalysis resultAnalysis = new ResultAnalysis(); - resultAnalysis.setLineId(Long.valueOf(patrolData.getLineId())); resultAnalysis.setResStatus("4"); resultAnalysis.setDescription("已完成纠偏"); resultAnalysis.setOriginalValue(filePath); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java index f0d1318..76db817 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java @@ -3,9 +3,11 @@ package com.inspect.taskstatus.controller; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.inspect.analysis.domain.ResultAnalysis; +import com.inspect.analysis.domain.ResultAnalysisSummaryDTO; import com.inspect.analysis.service.IResultAnalysisService; import com.inspect.base.core.constant.RedisConst; import com.inspect.base.core.enums.TaskStatus; +import com.inspect.base.core.enums.TaskType; import com.inspect.base.core.utils.DateUtils; import com.inspect.base.core.utils.DescUtil; import com.inspect.base.core.utils.StringUtils; @@ -45,6 +47,7 @@ import java.text.ParseException; import java.time.*; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @RestController @@ -171,7 +174,7 @@ public class PatrolTaskStatusController extends BaseController { // 更新结果 List taskPatrolIds = list.stream().filter(item -> !item.getTaskState().equals(TaskStateEnum.PENDING.getCode())).map(PatrolTaskStatus::getTaskPatrolledId).collect(Collectors.toList()); - if(taskPatrolIds.size() > 0) { + if (taskPatrolIds.size() > 0) { List resultMains = patrolTaskResultMainService.selectMainFileStatus(taskPatrolIds); List taskCodeIds = list.stream().map(PatrolTaskStatus::getTaskCode).collect(Collectors.toList()); List> pointList = patrolTaskInfoService.selectPatrolTaskInfoCount(taskCodeIds); @@ -226,30 +229,30 @@ public class PatrolTaskStatusController extends BaseController { @GetMapping({"/list"}) public TableDataInfo list(PatrolTaskStatus patrolTaskStatus) { this.startPage(); + patrolTaskStatus.setFilterTaskType("2"); + // 分页查询执行任务列表 List list = patrolTaskStatusService.selectPatrolTaskStatusList(patrolTaskStatus); if (list == null || list.size() == 0) { return this.getDataTable(list); } + // 收集执行id List taskPatrolIds = list.stream().map(PatrolTaskStatus::getTaskPatrolledId).collect(Collectors.toList()); + // 查询归档信息 List resultMains = patrolTaskResultMainService.selectMainFileStatus(taskPatrolIds); + // 收集任务code List taskCodeIds = list.stream().map(PatrolTaskStatus::getTaskCode).collect(Collectors.toList()); + // 查询任务详情 List> pointList = patrolTaskInfoService.selectPatrolTaskInfoCount(taskCodeIds); Map pointMap = pointList.stream().collect(Collectors.toMap((item) -> { return (String) item.get("taskMajorId"); }, (item) -> { return String.valueOf(item.get("num")); })); - - Map abnormalDataBatchMap = resultAnalysisService.selectTaskAbnormalDataBatch(taskPatrolIds); - List allQxAnalysisList = resultAnalysisService.selectResultAnalysisListBatch(taskPatrolIds, "0"); - Map>> groupedAnalysisMap = allQxAnalysisList.stream() - .collect(Collectors.groupingBy( - ResultAnalysis::getTaskPatrolId, - Collectors.groupingBy(data -> new GroupKey(data.getObjectId(), data.getAlgType())) - )); + // 填充每个任务的扩展统计信息 list.forEach((item) -> { item.setPatrolStatus("1"); item.setPointCount(pointMap.get(item.getTaskCode())); + // 根据任务进度和归档信息设置文件状态 if (!item.getTaskProgress().contains("100")) { item.setFileStatus("0"); } else { @@ -262,14 +265,25 @@ public class PatrolTaskStatusController extends BaseController { item.setFileStatus("0"); } } - // 异常数据统计 - ResultAnalysis resultAnalysis = abnormalDataBatchMap.getOrDefault(item.getTaskPatrolledId(), new ResultAnalysis()); - item.setCsQxNum(resultAnalysis.getCsQxNum()); - item.setAiQxNum(resultAnalysis.getAiQxNum()); - item.setCsYcNum(resultAnalysis.getCsYcNum()); - item.setAiYcNum(resultAnalysis.getAiYcNum()); - Map> groupKeyListMap = groupedAnalysisMap.get(item.getTaskPatrolledId()); - item.setQxNum(groupKeyListMap == null ? 0 : groupKeyListMap.size()); + List summaryDTOList; + if (item.getTaskType().equals(TaskType.MAIN.getCode())) { + List taskPatrolledIds = item.getChildren().stream().map(PatrolTaskStatus::getTaskPatrolledId).collect(Collectors.toList()); + summaryDTOList = resultAnalysisService.countResultAnalysisSummary(taskPatrolledIds); + } else { + summaryDTOList = resultAnalysisService.countResultAnalysisSummary(Collections.singletonList(item.getTaskPatrolledId())); + } + if (summaryDTOList != null && !summaryDTOList.isEmpty()) { + summaryDTOList.forEach(summaryDTO -> { + if (summaryDTO != null) { + // 使用 Optional 或三元运算符防止 null 值累加 + item.setCsQxNum(item.getCsQxNum() + summaryDTO.getCsQxNum()); + item.setAiQxNum(item.getAiQxNum() + summaryDTO.getAiQxNum()); + item.setCsYcNum(item.getCsYcNum() + summaryDTO.getCsYcNum()); + item.setAiYcNum(item.getAiYcNum() + summaryDTO.getAiYcNum()); + item.setQxNum(item.getQxNum() + summaryDTO.getQxNum()); + } + }); + } if (StringUtils.isEmpty(item.getTaskEstimatedTime())) { item.setTaskEstimatedTime("0"); } @@ -789,8 +803,11 @@ public class PatrolTaskStatusController extends BaseController { } } + String immediatelyExecTaskTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); + redisService.setCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, patrolTask.getTaskCode(), RedisConst.TASK_CODE + patrolTask.getTaskCode() + StringUtils.AT + immediatelyExecTaskTime, 1L, TimeUnit.HOURS); + // 下发无人机任务 - for(String pilotTaskCmd : pilotTaskCmds) { + for (String pilotTaskCmd : pilotTaskCmds) { log.info("无人机-机器人任务下发, pilotTaskCmd: {}", pilotTaskCmd); try { this.feignTaskClient.sendCommand(pilotTaskCmd); @@ -824,6 +841,25 @@ public class PatrolTaskStatusController extends BaseController { String command = params.getCommand(); log.info("[TASK] task_status_change cmd: {}, task: {}", command, patrolTaskStatus); + if (patrolTaskStatus.getTaskType().equals(TaskType.MAIN.getCode())) { + for (PatrolTaskStatus status : patrolTaskStatus.getChildren()) { + execCommand(command, status); + } + } else { + execCommand(command, patrolTaskStatus); + } + return toAjax(1); + } + + // 执行修改任务状态命令 + private void execCommand(String command, PatrolTaskStatus patrolTaskStatus) { + log.info("[TASK] task_status_change cmd: {}, task: {}", command, patrolTaskStatus); + // 任务为完成、终止、过期状态时,不允许改变状态 + if (Arrays.asList(TaskStatus.DONE.getCode(), TaskStatus.HALTED.getCode(), TaskStatus.EXPIRED.getCode()).contains(patrolTaskStatus.getTaskState())) { + log.info("[TASK] STATUS CHANGE IS NOT ALLOWED cmd: {}, task: {}", command, patrolTaskStatus); + return; + } + if (TaskStatus.DONE.getCode().equals(command)) { patrolTaskStatus.setTaskState(TaskStatus.RUNNING.getCode()); } else if (TaskStatus.RUNNING.getCode().equals(command)) { @@ -836,10 +872,9 @@ public class PatrolTaskStatusController extends BaseController { feignJobTaskClient.resumeExecTask(patrolTaskStatus.getTaskPatrolledId()); } - int res = patrolTaskStatusService.updatePatrolTaskStatus(patrolTaskStatus); + patrolTaskStatusService.updateTaskProgress(patrolTaskStatus.getLineId(), null, null, patrolTaskStatus.getTaskState()); patrolTaskStatus.setCommand(command); issuePatrolTask(patrolTaskStatus); - return toAjax(res); } public void issuePatrolTask(PatrolTaskStatus patrolTaskStatus) { @@ -910,7 +945,7 @@ public class PatrolTaskStatusController extends BaseController { Set wrjCode = new HashSet<>();//droneCode for (BasedataEqpBookMoMain book : bookList) { final String type = book.getType(); - if(StringUtils.isEmpty(type)) { + if (StringUtils.isEmpty(type)) { continue; } if (!type.equals("1") && !type.equals("2") && !type.equals("3") && !type.equals("13")) { diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/domain/PatrolTaskStatus.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/domain/PatrolTaskStatus.java index ee64a13..2484148 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/domain/PatrolTaskStatus.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/domain/PatrolTaskStatus.java @@ -5,16 +5,15 @@ import com.inspect.base.core.web.domain.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.util.Date; +import java.util.List; import lombok.*; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; @Setter @Getter @Builder @AllArgsConstructor - +@ToString public class PatrolTaskStatus extends BaseEntity { private static final long serialVersionUID = 1L; private Long lineId; @@ -81,6 +80,11 @@ public class PatrolTaskStatus extends BaseEntity { @Excel( name = "巡检类型" ) + // 主任务id + private String mainId; + private String taskType; + private String filterTaskType; + private List children; private String patrolType; private String timeType; private String timeConditions; @@ -107,7 +111,6 @@ public class PatrolTaskStatus extends BaseEntity { private int csYcNum; private int aiQxNum; private int aiYcNum; - private int qxNum; private String resultType; private String pointStatus; @@ -120,53 +123,4 @@ public class PatrolTaskStatus extends BaseEntity { public PatrolTaskStatus() { } - - @Override - public String toString() { - return "PatrolTaskStatus{" + - "lineId=" + lineId + - ", taskPatrolledId='" + taskPatrolledId + '\'' + - ", taskName='" + taskName + '\'' + - ", areaTaskName='" + areaTaskName + '\'' + - ", taskCode='" + taskCode + '\'' + - ", taskState='" + taskState + '\'' + - ", planStartTime=" + planStartTime + - ", startTime=" + startTime + - ", taskProgress='" + taskProgress + '\'' + - ", taskEstimatedTime='" + taskEstimatedTime + '\'' + - ", description='" + description + '\'' + - ", posType='" + posType + '\'' + - ", code='" + code + '\'' + - ", pos='" + pos + '\'' + - ", patrolType='" + patrolType + '\'' + - ", timeType='" + timeType + '\'' + - ", timeConditions='" + timeConditions + '\'' + - ", beginTime='" + beginTime + '\'' + - ", endTime='" + endTime + '\'' + - ", createTime=" + createTime + - ", patrolStatus='" + patrolStatus + '\'' + - ", year=" + year + - ", devNo='" + devNo + '\'' + - ", command='" + command + '\'' + - ", pointCount='" + pointCount + '\'' + - ", execType='" + execType + '\'' + - ", fileStatus='" + fileStatus + '\'' + - ", filter='" + filter + '\'' + - ", pointName='" + pointName + '\'' + - ", deviceName='" + deviceName + '\'' + - ", abnormal='" + abnormal + '\'' + - ", channelName='" + channelName + '\'' + - ", deviceSource='" + deviceSource + '\'' + - ", filterDesc='" + filterDesc + '\'' + - ", desc='" + desc + '\'' + - ", csQxNum=" + csQxNum + - ", csYcNum=" + csYcNum + - ", aiQxNum=" + aiQxNum + - ", aiYcNum=" + aiYcNum + - ", qxNum=" + qxNum + - ", resultType='" + resultType + '\'' + - ", pointStatus='" + pointStatus + '\'' + - ", algName='" + algName + '\'' + - '}'; - } } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/mapper/PatrolTaskStatusMapper.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/mapper/PatrolTaskStatusMapper.java index 48d0920..b1d3b72 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/mapper/PatrolTaskStatusMapper.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/mapper/PatrolTaskStatusMapper.java @@ -46,4 +46,10 @@ public interface PatrolTaskStatusMapper { List selectDailyStatsByYearAndMonth(@Param("year") Integer year, @Param("month") Integer month); List selectDailyStatsByYearAndMonthAndDay(@Param("year") Integer year, @Param("month") Integer month, @Param("day") Integer day); + + int insertIgnorePatrolTaskStatus(PatrolTaskStatus patrolTaskStatusMain); + + List selectPatrolTaskStatusListByMainId(String taskPatrolledId); + + PatrolTaskStatus selectPatrolTaskStatusMain(String taskPatrolledId); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/IPatrolTaskStatusService.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/IPatrolTaskStatusService.java index e7050fa..2b82f28 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/IPatrolTaskStatusService.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/IPatrolTaskStatusService.java @@ -33,4 +33,14 @@ public interface IPatrolTaskStatusService { int deletePatrolTaskStatusByLineIds(Long[] lineIds); int deletePatrolTaskStatusByLineId(Long lineId); + + int insertIgnorePatrolTaskStatus(PatrolTaskStatus patrolTaskStatusMain); + + void updateTaskProgress(Long lineId, String taskProgress, String taskEstimatedTime, String taskState); + + List selectPatrolTaskStatusListByMainId(String taskPatrolledId); + + int generateTaskResultMain(PatrolTaskStatus patrolTaskStatusMain); + + PatrolTaskStatus selectPatrolTaskStatusMain(String taskPatrolledId); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/impl/PatrolTaskStatusServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/impl/PatrolTaskStatusServiceImpl.java index 4a1a6f9..f7bd88b 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/impl/PatrolTaskStatusServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/service/impl/PatrolTaskStatusServiceImpl.java @@ -2,88 +2,293 @@ package com.inspect.taskstatus.service.impl; import com.inspect.annotation.TaskStatusChange; import com.inspect.base.core.constant.Color; +import com.inspect.base.core.constant.RedisConst; +import com.inspect.base.core.enums.TaskStatus; +import com.inspect.base.core.enums.TaskType; +import com.inspect.base.core.utils.BigDecimalUtil; +import com.inspect.base.core.utils.DateUtils; +import com.inspect.base.core.utils.StringUtils; +import com.inspect.base.redis.service.RedisService; +import com.inspect.partrolresult.mapper.PatrolResultMapper; +import com.inspect.resultmain.domain.PatrolTaskResultMain; +import com.inspect.resultmain.service.IPatrolTaskResultMainService; +import com.inspect.task.domain.PatrolTask; +import com.inspect.task.service.IPatrolTaskService; import com.inspect.taskstatus.domain.PatrolTaskStatus; import com.inspect.taskstatus.domain.TaskCount; import com.inspect.taskstatus.mapper.PatrolTaskStatusMapper; import com.inspect.taskstatus.service.IPatrolTaskStatusService; -import java.util.Date; -import java.util.List; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; @Service public class PatrolTaskStatusServiceImpl implements IPatrolTaskStatusService { - private final Logger log = LoggerFactory.getLogger(this.getClass()); - private final PatrolTaskStatusMapper patrolTaskStatusMapper; - - @Autowired - public PatrolTaskStatusServiceImpl(PatrolTaskStatusMapper patrolTaskStatusMapper) { - this.patrolTaskStatusMapper = patrolTaskStatusMapper; - } - - public PatrolTaskStatus selectPatrolTaskStatusByLineId(Long lineId) { - return this.patrolTaskStatusMapper.selectPatrolTaskStatusByLineId(lineId); - } - - public PatrolTaskStatus selectPatrolTaskStatusByTaskPatrolledId(String taskPatrolledId) { - return this.patrolTaskStatusMapper.selectPatrolTaskStatusByTaskPatrolledId(taskPatrolledId); - } - - public List selectPatrolTaskStatusList(PatrolTaskStatus patrolTaskStatus) { - return this.patrolTaskStatusMapper.selectPatrolTaskStatusList(patrolTaskStatus); - } - - public List selectPatrolTaskStatusCount(PatrolTaskStatus patrolTaskStatus) { - return this.patrolTaskStatusMapper.selectPatrolTaskStatusCount(patrolTaskStatus); - } - - public List selectCountList(PatrolTaskStatus patrolTaskStatus) { - return this.patrolTaskStatusMapper.selectCountList(patrolTaskStatus); - } - - public List selectCountListByDate(PatrolTaskStatus patrolTaskStatus) { - return this.patrolTaskStatusMapper.selectCountListByDate(patrolTaskStatus); - } - - @TaskStatusChange(targetState = "1", async = true) // "1"表示已完成状态 - public int insertPatrolTaskStatus(PatrolTaskStatus patrolTaskStatus) { - patrolTaskStatus.setCreateTime(new Date()); - patrolTaskStatus.setStartTime(new Date()); - return this.patrolTaskStatusMapper.insertPatrolTaskStatus(patrolTaskStatus); - } - - @TaskStatusChange(targetState = "1", async = true) // "1"表示已完成状态 - public int updatePatrolTaskStatus(PatrolTaskStatus patrolTaskStatus) { - log.info(Color.RED + "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" + Color.END); - log.info("patrolTaskStatus: {}", patrolTaskStatus); - return this.patrolTaskStatusMapper.updatePatrolTaskStatus(patrolTaskStatus); - } - - public int updatePatrolTaskStatusOfTaskProgress(PatrolTaskStatus patrolTaskStatus) { - return this.patrolTaskStatusMapper.updatePatrolTaskStatusOfTaskProgress(patrolTaskStatus); - } - - @TaskStatusChange(targetState = "1", async = true) // "1"表示已完成状态 - public int updatePatrolTaskStatusOfTaskState(PatrolTaskStatus patrolTaskStatus) { - return this.patrolTaskStatusMapper.updatePatrolTaskStatusOfTaskState(patrolTaskStatus); - } - - public int updatePatrolTaskStatusOfTaskStateAndEndTime(PatrolTaskStatus patrolTaskStatus) { - return this.patrolTaskStatusMapper.updatePatrolTaskStatusOfTaskStateAndEndTime(patrolTaskStatus); - } - - public int updatePatrolTaskStatusRunning(PatrolTaskStatus patrolTaskStatus) { - return this.patrolTaskStatusMapper.updatePatrolTaskStatusRunning(patrolTaskStatus); - } - - public int deletePatrolTaskStatusByLineIds(Long[] lineIds) { - return this.patrolTaskStatusMapper.deletePatrolTaskStatusByLineIds(lineIds); - } - - public int deletePatrolTaskStatusByLineId(Long lineId) { - return this.patrolTaskStatusMapper.deletePatrolTaskStatusByLineId(lineId); - } + private final Logger log = LoggerFactory.getLogger(this.getClass()); + private final PatrolTaskStatusMapper patrolTaskStatusMapper; + + @Resource + private RedisService redisService; + + @Resource + private IPatrolTaskService patrolTaskService; + + @Resource + private IPatrolTaskResultMainService patrolTaskResultMainService; + + @Resource + private PatrolResultMapper patrolResultMapper; + + @Autowired + public PatrolTaskStatusServiceImpl(PatrolTaskStatusMapper patrolTaskStatusMapper) { + this.patrolTaskStatusMapper = patrolTaskStatusMapper; + } + + public PatrolTaskStatus selectPatrolTaskStatusByLineId(Long lineId) { + return this.patrolTaskStatusMapper.selectPatrolTaskStatusByLineId(lineId); + } + + public PatrolTaskStatus selectPatrolTaskStatusByTaskPatrolledId(String taskPatrolledId) { + return this.patrolTaskStatusMapper.selectPatrolTaskStatusByTaskPatrolledId(taskPatrolledId); + } + + public List selectPatrolTaskStatusList(PatrolTaskStatus patrolTaskStatus) { + return this.patrolTaskStatusMapper.selectPatrolTaskStatusList(patrolTaskStatus); + } + + public List selectPatrolTaskStatusCount(PatrolTaskStatus patrolTaskStatus) { + return this.patrolTaskStatusMapper.selectPatrolTaskStatusCount(patrolTaskStatus); + } + + public List selectCountList(PatrolTaskStatus patrolTaskStatus) { + return this.patrolTaskStatusMapper.selectCountList(patrolTaskStatus); + } + + @Override + public List selectCountListByDate(PatrolTaskStatus patrolTaskStatus) { + return this.patrolTaskStatusMapper.selectCountListByDate(patrolTaskStatus); + } + + @TaskStatusChange(targetState = "1", async = true) // "1"表示已完成状态 + public int insertPatrolTaskStatus(PatrolTaskStatus patrolTaskStatus) { + patrolTaskStatus.setCreateTime(new Date()); + patrolTaskStatus.setStartTime(new Date()); + return this.patrolTaskStatusMapper.insertPatrolTaskStatus(patrolTaskStatus); + } + + @Override + @TaskStatusChange(targetState = "1", async = true) // "1"表示已完成状态 + public int updatePatrolTaskStatus(PatrolTaskStatus patrolTaskStatus) { + log.info(Color.RED + "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" + Color.END); + log.info("patrolTaskStatus: {}", patrolTaskStatus); + return this.patrolTaskStatusMapper.updatePatrolTaskStatus(patrolTaskStatus); + } + + public int updatePatrolTaskStatusOfTaskProgress(PatrolTaskStatus patrolTaskStatus) { + return this.patrolTaskStatusMapper.updatePatrolTaskStatusOfTaskProgress(patrolTaskStatus); + } + + @TaskStatusChange(targetState = "1", async = true) // "1"表示已完成状态 + public int updatePatrolTaskStatusOfTaskState(PatrolTaskStatus patrolTaskStatus) { + return this.patrolTaskStatusMapper.updatePatrolTaskStatusOfTaskState(patrolTaskStatus); + } + + public int updatePatrolTaskStatusOfTaskStateAndEndTime(PatrolTaskStatus patrolTaskStatus) { + return this.patrolTaskStatusMapper.updatePatrolTaskStatusOfTaskStateAndEndTime(patrolTaskStatus); + } + + public int updatePatrolTaskStatusRunning(PatrolTaskStatus patrolTaskStatus) { + return this.patrolTaskStatusMapper.updatePatrolTaskStatusRunning(patrolTaskStatus); + } + + public int deletePatrolTaskStatusByLineIds(Long[] lineIds) { + return this.patrolTaskStatusMapper.deletePatrolTaskStatusByLineIds(lineIds); + } + + public int deletePatrolTaskStatusByLineId(Long lineId) { + return this.patrolTaskStatusMapper.deletePatrolTaskStatusByLineId(lineId); + } + + @Override + public int insertIgnorePatrolTaskStatus(PatrolTaskStatus patrolTaskStatusMain) { + return this.patrolTaskStatusMapper.insertIgnorePatrolTaskStatus(patrolTaskStatusMain); + } + + @Override + public List selectPatrolTaskStatusListByMainId(String taskPatrolledId) { + return this.patrolTaskStatusMapper.selectPatrolTaskStatusListByMainId(taskPatrolledId); + } + + @Override + public PatrolTaskStatus selectPatrolTaskStatusMain(String taskPatrolledId) { + return patrolTaskStatusMapper.selectPatrolTaskStatusMain(taskPatrolledId); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateTaskProgress(Long lineId, String collectionProgress, String algorithmProgress, String state) { + log.info("==========updateTaskProgress=============== lineId: {}", lineId); + if (lineId == null) { + throw new IllegalArgumentException("lineId 不能为空"); + } + + // 查找任务 + PatrolTaskStatus patrolTaskStatus = selectPatrolTaskStatusByLineId(lineId); + + if (patrolTaskStatus == null) { + throw new IllegalArgumentException("执行任务不存在,lineId: " + lineId); + } + + // 主任务由子任务更新 + if (TaskType.MAIN.getCode().equals(patrolTaskStatus.getTaskType())) { + throw new IllegalArgumentException("主任务进度/状态由子任务自动计算,不能直接修改:" + patrolTaskStatus.getTaskPatrolledId()); + } + + // 任务状态完成/超期,更新结束时间 + if (state.equals(TaskStatus.DONE.getCode()) || state.equals(TaskStatus.HALTED.getCode())) { + String endTime = DateUtils.parseDateToStr(DateUtils.yyyyMMddHHmmss2, new Date()); + patrolTaskStatus.setEndTime(endTime); + } + + patrolTaskStatus.setTaskProgress(collectionProgress); + patrolTaskStatus.setTaskEstimatedTime(algorithmProgress); + patrolTaskStatus.setTaskState(state); + // 普通任务且状态为已完成,删除redis任务缓存 + if (TaskType.ORDINARY.getCode().equals(patrolTaskStatus.getTaskType()) && state.equals(TaskStatus.DONE.getCode())) { + redisService.deleteObjectOfTask(RedisConst.TASK_CURRENT_CODE, patrolTaskStatus.getTaskCode()); + } + // 更新子任务或普通任务 + updatePatrolTaskStatus(patrolTaskStatus); + log.info("updateTaskProgress: {}", patrolTaskStatus); + // 如果是子任务,需要同步更新主任务 + if (TaskType.SUB.getCode().equals(patrolTaskStatus.getTaskType()) && patrolTaskStatus.getMainId() != null) { + updateMainTask(patrolTaskStatus.getMainId(), patrolTaskStatus.getTaskCode()); + } + } + + private void updateMainTask(String mainId, String taskCode) { + // 查找子任务 + List subTasks = selectPatrolTaskStatusListByMainId(mainId); + if (subTasks.isEmpty()) { + return; + } + + BigDecimal execTotalPoints = BigDecimal.ZERO; + BigDecimal execTotalAlgorithms = BigDecimal.ZERO; + TaskStatus mainTaskState = TaskStatus.DONE; + + // 计算平均进度 + for (PatrolTaskStatus subTask : subTasks) { + String[] taskNames = subTask.getTaskName().split("@"); + log.info("taskNames: {}", subTask.getTaskName()); + if (taskNames.length > 1) { + String sendCode = taskNames[0]; + List algList = new ArrayList<>(); + if (sendCode.equals("摄像头")) { + algList = patrolResultMapper.selectAlgList(taskCode, null, "2"); + } else { + algList = patrolResultMapper.selectAlgList(taskCode, sendCode, null); + } + int subTotalPoints = algList.size(); + int subTotalAlgorithms = algList.stream().mapToInt(s -> s.split(",").length).sum(); + + BigDecimal subTaskProgress = BigDecimalUtil.toBigDecimal(subTask.getTaskProgress()); + BigDecimal subAlgorithmProgress = BigDecimalUtil.toBigDecimal(subTask.getTaskEstimatedTime()); + BigDecimal subExecPoints = subTaskProgress.multiply(new BigDecimal(subTotalPoints)).divide(BigDecimal.valueOf(100), 1, RoundingMode.DOWN); + BigDecimal subExecAlgorithms = subAlgorithmProgress.multiply(new BigDecimal(subTotalAlgorithms)).divide(BigDecimal.valueOf(100), 1, RoundingMode.DOWN); + execTotalPoints = execTotalPoints.add(subExecPoints); + execTotalAlgorithms = execTotalAlgorithms.add(subExecAlgorithms); + log.info("subTotalPoints:{},subTotalAlgorithms:{},execTotalPoints:{},execTotalAlgorithms:{}", subTotalPoints, subTotalAlgorithms, execTotalPoints, execTotalAlgorithms); + } + + // 按状态优先级设置主任务状态 + TaskStatus subTaskState = TaskStatus.fromCode(subTask.getTaskState()); + if (subTaskState == null) { + continue; + } + if (mainTaskState.getPriority() > subTaskState.getPriority()) { + mainTaskState = subTaskState; + } + } + + List algList = patrolResultMapper.selectAlgList(taskCode, null, null); + int totalPoints = algList.size(); + int totalAlgorithms = algList.stream().mapToInt(s -> s.split(",").length).sum(); + log.info("totalPoints:{},totalAlgorithms:{}", totalPoints, totalAlgorithms); + BigDecimal mainTaskProgress = execTotalPoints + .multiply(BigDecimal.valueOf(100)) + .divide( + BigDecimal.valueOf(totalPoints), + 1, RoundingMode.DOWN + ); + + BigDecimal mainAlgorithmProgress = execTotalAlgorithms + .multiply(BigDecimal.valueOf(100)) + .divide( + BigDecimal.valueOf(totalAlgorithms), + 1, RoundingMode.DOWN + ); + + PatrolTaskStatus mainTask = selectPatrolTaskStatusByTaskPatrolledId(mainId); + + // 如果状态为已完成,但采集和分析进度小于100,说明还有任务未上报,更新为运行中 + if (mainTaskState.getCode().equals(TaskStatus.DONE.getCode()) + && (mainTaskProgress.compareTo(new BigDecimal(100)) != 0 || mainAlgorithmProgress.compareTo(new BigDecimal(100)) != 0 )){ + mainTaskState = TaskStatus.RUNNING; + } + if (mainTaskState.getCode().equals(TaskStatus.DONE.getCode()) || mainTaskState.getCode().equals(TaskStatus.HALTED.getCode())) { + // 主任务且状态为已完成,删除redis任务缓存 + redisService.deleteObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskCode); + String endTime = DateUtils.parseDateToStr(DateUtils.yyyyMMddHHmmss2, new Date()); + mainTask.setEndTime(endTime); +// generateTaskResultMain(mainTask); + } + mainTask.setTaskState(mainTaskState.getCode()); + mainTask.setTaskProgress(mainTaskProgress.toString()); + mainTask.setTaskEstimatedTime(mainAlgorithmProgress.toString()); + // 更新主任务 + patrolTaskStatusMapper.updatePatrolTaskStatus(mainTask); + } + + // 生成巡视归档记录 + @Override + public int generateTaskResultMain(PatrolTaskStatus patrolTaskStatus) { + int mainId = -1; + if (patrolTaskStatus != null && !patrolTaskStatus.getTaskType().equals(TaskType.SUB.getCode())) { + PatrolTaskResultMain taskResultMain = new PatrolTaskResultMain(); + taskResultMain.setTaskId(patrolTaskStatus.getTaskCode()); + taskResultMain.setTaskCode(patrolTaskStatus.getTaskCode()); + taskResultMain.setTaskTime(patrolTaskStatus.getStartTime()); + taskResultMain.setTaskPatrolledId(patrolTaskStatus.getTaskPatrolledId()); + taskResultMain.setTaskName(patrolTaskStatus.getTaskName()); + taskResultMain.setCreateBy("sys"); + taskResultMain.setCreateTime(new Date()); + taskResultMain.setFileStatus("0"); + PatrolTask patrolTask = patrolTaskService.selectPatrolTaskByTaskId(Long.valueOf(patrolTaskStatus.getTaskCode())); + taskResultMain.setTaskType(patrolTask.getType()); + taskResultMain.setDevType(patrolTask.getDevType()); + if (patrolTask != null && StringUtils.isNotEmpty(patrolTask.getAreaName())) { + taskResultMain.setAreaName(patrolTask.getAreaName()); + } + + taskResultMain.setUnifiedTaskPatrolledId(patrolTaskStatus.getTaskPatrolledId()); + + mainId = patrolTaskResultMainService.insertPatrolTaskResultMain(taskResultMain); + log.info("生成巡视归档记录: {}", taskResultMain); + } else { + log.info("子任务不生成归档记录!"); + } + + return mainId; + } } 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 ebb6f19..0006be0 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 @@ -214,6 +214,7 @@ ORDER BY line_id desc + + + diff --git a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskResultMainMapper.xml b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskResultMainMapper.xml index d0a314f..8be83dd 100644 --- a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskResultMainMapper.xml +++ b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskResultMainMapper.xml @@ -142,12 +142,12 @@ + diff --git a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskStatusMapper.xml b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskStatusMapper.xml index c5c9fbc..f12eae8 100644 --- a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskStatusMapper.xml +++ b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolTaskStatusMapper.xml @@ -22,6 +22,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -40,7 +74,9 @@ pos_type, code, pos, - exec_type + exec_type, + task_type, + main_id from patrol_task_status @@ -79,8 +115,72 @@ a.pos, a.end_time, b.type as patrol_type, - b.execution_status as exec_type from patrol_task_status a - LEFT JOIN patrol_task b on a.task_code=b.task_code + a.task_type, + a.main_id, + b.execution_status as exec_type + from patrol_task_status a + LEFT JOIN patrol_task b on a.task_code=b.task_code + + and a.task_type != #{filterTaskType} + + and a.task_patrolled_id = #{taskPatrolledId} + + + and a.task_name like concat('%', #{taskName}, '%') + + + and b.area_name like concat('%', #{areaTaskName}, '%') + + and a.task_code = #{taskCode} + and a.task_state = #{taskState} + and a.plan_start_time = #{planStartTime} + + and date_format(a.start_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d') + + and date_format(a.create_time,'%y%m%d') = + date_format(#{createTime},'%y%m%d') + + and a.task_progress = #{taskProgress} + and a.task_estimated_time = + #{taskEstimatedTime} + + and a.description = #{description} + and a.pos_type = #{posType} + and a.code = #{code} + and a.pos = #{pos} + and b.type = #{patrolType} + + and date_format(a.start_time,'%y%m%d') >= date_format(#{beginTime},'%y%m%d') + + + and date_format(a.start_time,'%y%m%d') <= date_format(#{endTime},'%y%m%d') + + + ORDER BY line_id desc + + + @@ -238,6 +341,22 @@ GROUP BY m.month ORDER BY m.month + + + insert into patrol_task_status @@ -258,6 +377,51 @@ end_time, create_time, exec_type, + task_type, + main_id, + + + #{taskPatrolledId}, + #{taskName}, + #{taskCode}, + #{taskState}, + #{planStartTime}, + #{startTime}, + #{taskProgress}, + #{taskEstimatedTime}, + #{description}, + #{posType}, + #{code}, + #{pos}, + #{patrolType}, + #{endTime}, + #{createTime}, + #{execType}, + #{taskType}, + #{mainId}, + + + + insert ignore into patrol_task_status + + task_patrolled_id, + task_name, + task_code, + task_state, + plan_start_time, + start_time, + task_progress, + task_estimated_time, + description, + pos_type, + code, + pos, + patrol_type, + end_time, + create_time, + exec_type, + task_type, + main_id, #{taskPatrolledId}, @@ -276,6 +440,8 @@ #{endTime}, #{createTime}, #{execType}, + #{taskType}, + #{mainId}, 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 9df78ed..fdc6bf4 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 @@ -121,6 +121,12 @@ and line_id = #{lineId} + + and task_patrol_id in + + #{item} + + ORDER BY line_id desc @@ -629,6 +635,22 @@ ) aiYcNum +