From b840272936c3b5a95eefbe3222f18745dfb63566 Mon Sep 17 00:00:00 2001 From: lizhenhua <1075222162@qq.com> Date: Fri, 23 Jan 2026 13:36:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E4=BB=A3=E7=A0=81=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SjNewHjjcAnalysisController.java | 44 ++++++++++ .../SjNewWorkerAnalysisController.java | 21 +++-- .../screen/domain/SjNewHjjcAnalysis.java | 52 +++++++++++ .../screen/domain/WorkerAnalysisVO.java | 17 ++++ .../screen/domain/WorkerTaskSummaryVO.java | 2 + .../screen/domain/WorkerWarnVO.java | 21 +++++ .../mapper/SjNewHjjcAnalysisMapper.java | 29 +++++++ .../mapper/WorkerTaskAnalysisMapper.java | 12 +++ .../service/ISjNewHjjcAnalysisService.java | 24 ++++++ .../service/WorkerTaskAnalysisService.java | 6 ++ .../impl/SjNewHjjcAnalysisServiceImpl.java | 33 +++++++ .../impl/WorkerTaskAnalysisServiceImpl.java | 41 +++++++++ .../mapper/SjNewHjjcAnalysisMapper.xml | 39 +++++++++ .../mapper/WorkerTaskAnalysisMapper.xml | 86 +++++++++++++++---- 14 files changed, 406 insertions(+), 21 deletions(-) create mode 100644 securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/SjNewHjjcAnalysisController.java create mode 100644 securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/SjNewHjjcAnalysis.java create mode 100644 securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/WorkerAnalysisVO.java create mode 100644 securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/WorkerWarnVO.java create mode 100644 securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/SjNewHjjcAnalysisMapper.java create mode 100644 securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/ISjNewHjjcAnalysisService.java create mode 100644 securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/SjNewHjjcAnalysisServiceImpl.java create mode 100644 securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/SjNewHjjcAnalysisMapper.xml diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/SjNewHjjcAnalysisController.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/SjNewHjjcAnalysisController.java new file mode 100644 index 0000000..6ff1ce1 --- /dev/null +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/SjNewHjjcAnalysisController.java @@ -0,0 +1,44 @@ +package com.securitycontrol.screen.controller; + +import com.securitycontrol.common.core.web.domain.AjaxResult; +import com.securitycontrol.screen.domain.SjNewHjjcAnalysis; +import com.securitycontrol.screen.service.ISjNewHjjcAnalysisService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description: 环境检测分析 Controller + */ +@RestController +@RequestMapping("/environment/analysis") +public class SjNewHjjcAnalysisController { + + @Resource + private ISjNewHjjcAnalysisService analysisService; + + /** + * 查询环境检测数据 + * + * @return 环境检测数据列表 + */ + @GetMapping("/list") + public AjaxResult getAnalysisList(@RequestBody SjNewHjjcAnalysis analysis) { + + List list = analysisService.getAnalysisByDateRange(analysis.getProjectId(), analysis.getStartTime(), analysis.getEndTime()); + return AjaxResult.success(list); + } + + /** + * 查询环境检测数据预警 + * + * @return 环境检测数据列表 + */ + @GetMapping("/warnlist") + public AjaxResult warnlist(@RequestBody SjNewHjjcAnalysis analysis) { + + List list = analysisService.getwarnlist(analysis.getProjectId(), analysis.getStartTime(), analysis.getEndTime()); + return AjaxResult.success(list); + } +} diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/SjNewWorkerAnalysisController.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/SjNewWorkerAnalysisController.java index bc9f665..de54eb6 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/SjNewWorkerAnalysisController.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/SjNewWorkerAnalysisController.java @@ -3,13 +3,12 @@ package com.securitycontrol.screen.controller; import com.securitycontrol.common.core.web.controller.BaseController; import com.securitycontrol.common.core.web.domain.AjaxResult; import com.securitycontrol.common.core.web.page.TableDataInfo; +import com.securitycontrol.screen.domain.WorkerAnalysisVO; import com.securitycontrol.screen.domain.WorkerTaskSummaryVO; +import com.securitycontrol.screen.domain.WorkerWarnVO; import com.securitycontrol.screen.service.WorkerTaskAnalysisService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/worker/analysis") @@ -66,9 +65,21 @@ public class SjNewWorkerAnalysisController extends BaseController { * 电工 30% */ @GetMapping("/delay/workType") - public AjaxResult delayDistributionByWorkType(WorkerTaskSummaryVO vo) { + public AjaxResult delayDistributionByWorkType( @RequestBody WorkerTaskSummaryVO vo) { return AjaxResult.success( workerTaskAnalysisService.selectDelayDistributionByWorkType(vo) ); } + + @GetMapping("/yujingdetail") + public AjaxResult getWarnDetailByMonth(@RequestBody WorkerWarnVO vo) { + return AjaxResult.success( + workerTaskAnalysisService.selectWarnDetailByMonth(vo.getStartTime()) + ); + } + @GetMapping("/gzsummary") + public AjaxResult getSummary(@RequestBody WorkerAnalysisVO work) { + WorkerAnalysisVO vo = workerTaskAnalysisService.getWorkerAnalysis(work); + return AjaxResult.success(vo); + } } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/SjNewHjjcAnalysis.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/SjNewHjjcAnalysis.java new file mode 100644 index 0000000..64aa803 --- /dev/null +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/SjNewHjjcAnalysis.java @@ -0,0 +1,52 @@ +package com.securitycontrol.screen.domain; + +import lombok.Data; + +/** + * @Description: 环境检测分析表实体类 + */ +@Data +public class SjNewHjjcAnalysis { + /** 主键ID */ + private Long id; + + /** 检测时间(yyyy-MM-dd HH:mm:ss 或 yyyy-MM-dd) */ + private String jcTime; + + /** 温度 */ + private String wd; + + /** 湿度 */ + private String sd; + + /** 风速 */ + private String speed; + + /** 噪声 */ + private String noise; + + /** 空气质量 */ + private String kqzl; + + /** 备注 */ + private String remark; + + /** pm10 */ + private String pm1Data; + + /** pm2.5 */ + private String pm2Data; + + /** 创建时间 */ + private String createTime; + + /** 项目ID */ + private String projectId; + + private String startTime; + + private String endTime; + private String content; + private String txTime; +} + diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/WorkerAnalysisVO.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/WorkerAnalysisVO.java new file mode 100644 index 0000000..4cccad2 --- /dev/null +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/WorkerAnalysisVO.java @@ -0,0 +1,17 @@ +package com.securitycontrol.screen.domain; + +import lombok.Data; + +import java.util.Map; + +@Data + public class WorkerAnalysisVO { + private Integer totalPerson; // 任务人员数量 + private Integer totalTask; // 总任务数量 + private Double avgTaskPerPerson; // 人均任务数量 + private Map taskCountByWorkType; // 工种 -> 任务数量 + private String projectId; + private String month; + private String startTime; + + } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/WorkerTaskSummaryVO.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/WorkerTaskSummaryVO.java index 1e0bf7b..604b6ba 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/WorkerTaskSummaryVO.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/WorkerTaskSummaryVO.java @@ -88,4 +88,6 @@ public class WorkerTaskSummaryVO { /** 延期数量 */ private Integer delayCount; + private String progress; + } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/WorkerWarnVO.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/WorkerWarnVO.java new file mode 100644 index 0000000..2f932a3 --- /dev/null +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/domain/WorkerWarnVO.java @@ -0,0 +1,21 @@ +package com.securitycontrol.screen.domain; + +import lombok.Data; + +@Data + public class WorkerWarnVO { + + private Long id; + private String txTime; // 提醒时间 + private String txType; // 预警类型 + private String content; // 提醒内容 + private String dataType; // 类型 + private String remark; // 备注 + private String createTime; // 创建时间 + private String measureData; // 处理措施 + private String filePath; // 文件路径 + private String startTime; // 文件路径 + + /** 查询参数:月份 yyyy-MM */ + private String month; +} diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/SjNewHjjcAnalysisMapper.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/SjNewHjjcAnalysisMapper.java new file mode 100644 index 0000000..041de3e --- /dev/null +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/SjNewHjjcAnalysisMapper.java @@ -0,0 +1,29 @@ +package com.securitycontrol.screen.mapper; + +import com.securitycontrol.screen.domain.SjNewHjjcAnalysis; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: 环境检测分析 Mapper 接口 + */ +@Mapper +public interface SjNewHjjcAnalysisMapper { + + /** + * 根据项目ID和日期区间查询环境检测数据 + * + * @param projectId 项目ID,可为空 + * @param startTime 开始日期(yyyy-MM-dd) + * @param endTime 结束日期(yyyy-MM-dd) + * @return 环境检测数据列表 + */ + List selectByDateRange( + @Param("projectId") String projectId, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List getwarnlist(String projectId, String startTime, String endTime); +} diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/WorkerTaskAnalysisMapper.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/WorkerTaskAnalysisMapper.java index 61db629..51f65e7 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/WorkerTaskAnalysisMapper.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/WorkerTaskAnalysisMapper.java @@ -2,8 +2,12 @@ package com.securitycontrol.screen.mapper; import com.securitycontrol.screen.domain.WorkerDelayDTO; import com.securitycontrol.screen.domain.WorkerTaskSummaryVO; +import com.securitycontrol.screen.domain.WorkerWarnVO; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; +import java.util.Map; public interface WorkerTaskAnalysisMapper { /** @@ -25,4 +29,12 @@ public interface WorkerTaskAnalysisMapper { * 月任务延期分布(按工种) */ List selectDelayDistributionByWorkType(WorkerTaskSummaryVO vo); + + List selectWarnDetailByMonth( + @Param("month") String month + ); + Integer countDistinctUser(@Param("projectId") String projectId, @Param("month") String month); + Integer countTotalTask(@Param("projectId") String projectId, @Param("month") String month); + + List> countTaskByWorkType(@Param("projectId") String projectId, @Param("month") String month); } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/ISjNewHjjcAnalysisService.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/ISjNewHjjcAnalysisService.java new file mode 100644 index 0000000..f97355d --- /dev/null +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/ISjNewHjjcAnalysisService.java @@ -0,0 +1,24 @@ +package com.securitycontrol.screen.service; + + +import com.securitycontrol.screen.domain.SjNewHjjcAnalysis; + +import java.util.List; + +/** + * @Description: 环境检测分析 Service 接口 + */ +public interface ISjNewHjjcAnalysisService { + + /** + * 根据项目ID和日期区间查询环境检测数据 + * + * @param projectId 项目ID,可为空 + * @param startDate 开始日期(yyyy-MM-dd) + * @param endDate 结束日期(yyyy-MM-dd) + * @return 环境检测数据列表 + */ + List getAnalysisByDateRange(String projectId, String startDate, String endDate); + + List getwarnlist(String projectId, String startTime, String endTime); +} diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/WorkerTaskAnalysisService.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/WorkerTaskAnalysisService.java index 940c007..c76a829 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/WorkerTaskAnalysisService.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/WorkerTaskAnalysisService.java @@ -1,7 +1,9 @@ package com.securitycontrol.screen.service; +import com.securitycontrol.screen.domain.WorkerAnalysisVO; import com.securitycontrol.screen.domain.WorkerDelayDTO; import com.securitycontrol.screen.domain.WorkerTaskSummaryVO; +import com.securitycontrol.screen.domain.WorkerWarnVO; import java.util.List; @@ -31,4 +33,8 @@ public interface WorkerTaskAnalysisService { * 月任务延期分布(按工种) */ List selectDelayDistributionByWorkType(WorkerTaskSummaryVO vo); + + List selectWarnDetailByMonth(String month); + + WorkerAnalysisVO getWorkerAnalysis(WorkerAnalysisVO vo); } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/SjNewHjjcAnalysisServiceImpl.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/SjNewHjjcAnalysisServiceImpl.java new file mode 100644 index 0000000..8df25bf --- /dev/null +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/SjNewHjjcAnalysisServiceImpl.java @@ -0,0 +1,33 @@ +package com.securitycontrol.screen.service.impl; + +import com.securitycontrol.screen.domain.SjNewHjjcAnalysis; +import com.securitycontrol.screen.mapper.SjNewHjjcAnalysisMapper; +import com.securitycontrol.screen.service.ISjNewHjjcAnalysisService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +/** + * @Description: 环境检测分析 Service 实现类 + */ +@Service +public class SjNewHjjcAnalysisServiceImpl implements ISjNewHjjcAnalysisService { + + @Resource + private SjNewHjjcAnalysisMapper analysisMapper; + + /** + * 根据项目ID和日期区间查询环境检测数据 + */ + @Override + public List getAnalysisByDateRange(String projectId, String startDate, String endDate) { + return analysisMapper.selectByDateRange(projectId, startDate, endDate); + } + + @Override + public List getwarnlist(String projectId, String startTime, String endTime) { + return analysisMapper.getwarnlist(projectId, startTime, endTime); + } +} diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/WorkerTaskAnalysisServiceImpl.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/WorkerTaskAnalysisServiceImpl.java index ed90743..536d6b4 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/WorkerTaskAnalysisServiceImpl.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/WorkerTaskAnalysisServiceImpl.java @@ -1,13 +1,17 @@ package com.securitycontrol.screen.service.impl; +import com.securitycontrol.screen.domain.WorkerAnalysisVO; import com.securitycontrol.screen.domain.WorkerDelayDTO; import com.securitycontrol.screen.domain.WorkerTaskSummaryVO; +import com.securitycontrol.screen.domain.WorkerWarnVO; import com.securitycontrol.screen.mapper.WorkerTaskAnalysisMapper; import com.securitycontrol.screen.service.WorkerTaskAnalysisService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Service public class WorkerTaskAnalysisServiceImpl @@ -34,4 +38,41 @@ public class WorkerTaskAnalysisServiceImpl public List selectDelayDistributionByWorkType(WorkerTaskSummaryVO vo) { return workerTaskAnalysisMapper.selectDelayDistributionByWorkType(vo); } + + @Override + public List selectWarnDetailByMonth(String month) { + return workerTaskAnalysisMapper.selectWarnDetailByMonth(month); + } + + @Override + public WorkerAnalysisVO getWorkerAnalysis(WorkerAnalysisVO vo) { + // 1. 任务人员数量 + Integer totalPerson = workerTaskAnalysisMapper.countDistinctUser(vo.getProjectId(), vo.getMonth()); + vo.setTotalPerson(totalPerson != null ? totalPerson : 0); + + // 2. 总任务数量 + Integer totalTask = workerTaskAnalysisMapper.countTotalTask(vo.getProjectId(), vo.getMonth()); + vo.setTotalTask(totalTask != null ? totalTask : 0); + + // 3. 人均任务数量 + if (totalPerson != null && totalPerson > 0) { + vo.setAvgTaskPerPerson(totalTask.doubleValue() / totalPerson); + } else { + vo.setAvgTaskPerPerson(0.0); + } + + // 4. 按工种统计任务数量 + List> taskByWorkType = workerTaskAnalysisMapper.countTaskByWorkType(vo.getProjectId(), vo.getMonth()); + Map taskCountByWorkType = new HashMap<>(); + if (taskByWorkType != null) { + for (Map map : taskByWorkType) { + String workType = (String) map.get("workType"); + Number count = (Number) map.get("taskCount"); + taskCountByWorkType.put(workType != null ? workType : "未知", count != null ? count.intValue() : 0); + } + } + vo.setTaskCountByWorkType(taskCountByWorkType); + + return vo; + } } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/SjNewHjjcAnalysisMapper.xml b/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/SjNewHjjcAnalysisMapper.xml new file mode 100644 index 0000000..e7caed5 --- /dev/null +++ b/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/SjNewHjjcAnalysisMapper.xml @@ -0,0 +1,39 @@ + + + + + + diff --git a/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/WorkerTaskAnalysisMapper.xml b/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/WorkerTaskAnalysisMapper.xml index 68c4bc8..4465258 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/WorkerTaskAnalysisMapper.xml +++ b/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/WorkerTaskAnalysisMapper.xml @@ -84,33 +84,87 @@ + + + + + + + + + +