From 9deb5985fa322bd9386eb48e2b7095dc2df84f9e Mon Sep 17 00:00:00 2001 From: yangzhe123 <2824096059@qq.com> Date: Thu, 28 Aug 2025 17:38:50 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E5=85=BB=E6=8A=A4-=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MentenceInfoCountController.java | 69 +++++++++++++++++++ .../entity/so/MentenceFarmerRecordPageSo.java | 7 ++ .../hsz/entity/vo/MentenceInfoCount12Vo.java | 14 ++++ .../hsz/entity/vo/MentenceInfoCountVo.java | 28 ++++++++ .../project/hsz/entity/vo/StatusCountVo.java | 9 +++ .../project/hsz/mapper/HiddenInfoMapper.java | 59 +++++++++++++++- .../mapper/MentenceFarmerRecordMapper.java | 39 ++++++++++- .../service/MentenceFarmerRecordService.java | 33 ++++++++- 8 files changed, 253 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/gunshi/project/hsz/controller/MentenceInfoCountController.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/MentenceInfoCount12Vo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/MentenceInfoCountVo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/StatusCountVo.java diff --git a/src/main/java/com/gunshi/project/hsz/controller/MentenceInfoCountController.java b/src/main/java/com/gunshi/project/hsz/controller/MentenceInfoCountController.java new file mode 100644 index 0000000..45c3e0e --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/controller/MentenceInfoCountController.java @@ -0,0 +1,69 @@ +package com.gunshi.project.hsz.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.MonthRangeSo; +import com.gunshi.project.hsz.entity.so.MentenceFarmerRecordPageSo; +import com.gunshi.project.hsz.entity.vo.MentenceInfoCount12Vo; +import com.gunshi.project.hsz.entity.vo.MentenceInfoCountVo; +import com.gunshi.project.hsz.service.FileAssociationsService; +import com.gunshi.project.hsz.service.MentenceFarmerRecordService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +@Tag(name = "维修养护-维护信息统计分析") +@RestController +@RequestMapping(value="/mic") +public class MentenceInfoCountController extends AbstractCommonFileController { + + + @Autowired + private MentenceFarmerRecordService mentenceFarmerRecordService; + + @Autowired + private FileAssociationsService fileService; + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody MentenceFarmerRecordPageSo pageSo) { + Page byPage = mentenceFarmerRecordService.pageInfoCountQuery(pageSo); + if(!CollectionUtils.isEmpty(byPage.getRecords())){ + byPage.getRecords().forEach(o -> o.setFiles( + fileService.getFiles(getGroupId(),o.getId().toString()) + )); + } + return R.ok(byPage); + } + + @Operation(summary = "根据时间统计隐患数目") + @PostMapping("/count12") + public List count12(@RequestBody MonthRangeSo monthRangeSo){ + List list = mentenceFarmerRecordService.count12(monthRangeSo); + return list; + } + + @Operation(summary = "根据时间统计隐患类型数目") + @PostMapping("/countType") + public Map countType(@RequestBody MonthRangeSo monthRangeSo){ + Map map = mentenceFarmerRecordService.countType(monthRangeSo); + return map; + } + + @Operation(summary = "统计本年的隐患数") + @GetMapping("/countYear/{year}") + public Map countYear(@PathVariable("year") String year){ + Map map = mentenceFarmerRecordService.countYear(year); + return map; + } + @Override + public String getGroupId() { + return "mentenceFarmerRecord"; + } +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/MentenceFarmerRecordPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/MentenceFarmerRecordPageSo.java index 187c945..fc4ce01 100644 --- a/src/main/java/com/gunshi/project/hsz/entity/so/MentenceFarmerRecordPageSo.java +++ b/src/main/java/com/gunshi/project/hsz/entity/so/MentenceFarmerRecordPageSo.java @@ -1,5 +1,6 @@ package com.gunshi.project.hsz.entity.so; +import com.gunshi.db.dto.DateTimeRangeSo; import com.gunshi.db.dto.PageSo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -15,4 +16,10 @@ public class MentenceFarmerRecordPageSo { @Schema(description = "维护项目Id") private Long mentenceStDetailId; + + @Schema(description = "状态") + private Integer status; + + @Schema(description = "时间范围") + private DateTimeRangeSo dateTimeSo; } diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/MentenceInfoCount12Vo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/MentenceInfoCount12Vo.java new file mode 100644 index 0000000..94acc6a --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/MentenceInfoCount12Vo.java @@ -0,0 +1,14 @@ +package com.gunshi.project.hsz.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +@Data +public class MentenceInfoCount12Vo { + + private String month; + + private Integer hiddenCount; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/MentenceInfoCountVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/MentenceInfoCountVo.java new file mode 100644 index 0000000..4274050 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/MentenceInfoCountVo.java @@ -0,0 +1,28 @@ +package com.gunshi.project.hsz.entity.vo; + + +import com.gunshi.project.hsz.model.FileAssociations; +import com.gunshi.project.hsz.model.HiddenInfo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +@Schema(description = "维护信息统计分析") +public class MentenceInfoCountVo extends HiddenInfo { + + @Schema(description = "维护对象名称") + private String mentenceStName; + + @Schema(description = "维护项目名称") + private String mentenceStDetailName; + + @Schema(description = "维护人Id") + private String mentencePersonId; + + @Schema(description = "维护人名称") + private String mentencePersonName; + + private List files; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StatusCountVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StatusCountVo.java new file mode 100644 index 0000000..fe6526a --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/StatusCountVo.java @@ -0,0 +1,9 @@ +package com.gunshi.project.hsz.entity.vo; + +import lombok.Data; + +@Data +public class StatusCountVo { + private Integer status; + private Integer count; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/HiddenInfoMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/HiddenInfoMapper.java index 7d3c8da..a3ece55 100644 --- a/src/main/java/com/gunshi/project/hsz/mapper/HiddenInfoMapper.java +++ b/src/main/java/com/gunshi/project/hsz/mapper/HiddenInfoMapper.java @@ -1,10 +1,67 @@ package com.gunshi.project.hsz.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.MonthRangeSo; +import com.gunshi.project.hsz.entity.vo.MentenceInfoCount12Vo; +import com.gunshi.project.hsz.entity.vo.StatusCountVo; import com.gunshi.project.hsz.model.HiddenInfo; -import com.gunshi.project.hsz.model.MentenceFarmerRecord; +import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; @Mapper public interface HiddenInfoMapper extends BaseMapper { + + @Select(""" + +""") + List selectCount12(@Param("dto") MonthRangeSo monthRangeSo); + + + @Select(""" + +""") + @MapKey("status") + List selectCountType(@Param("dto") MonthRangeSo monthRangeSo); + + @Select(""" + WITH all_status AS ( + SELECT 0 AS status UNION + SELECT 1 AS status + ) + SELECT + a.status, + COALESCE(COUNT(h.id), 0) AS count + FROM all_status a + LEFT JOIN hidden_info h + ON a.status = h.status + AND TO_CHAR(h.found_time, 'YYYY') = #{year} + GROUP BY a.status + ORDER BY a.status; +""") + @MapKey("status") + List countYear(@Param("year") String year); } diff --git a/src/main/java/com/gunshi/project/hsz/mapper/MentenceFarmerRecordMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/MentenceFarmerRecordMapper.java index b7a5390..056d603 100644 --- a/src/main/java/com/gunshi/project/hsz/mapper/MentenceFarmerRecordMapper.java +++ b/src/main/java/com/gunshi/project/hsz/mapper/MentenceFarmerRecordMapper.java @@ -3,8 +3,10 @@ package com.gunshi.project.hsz.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gunshi.project.hsz.entity.so.MentenceFarmerRecordPageSo; +import com.gunshi.project.hsz.entity.vo.MentenceInfoCountVo; import com.gunshi.project.hsz.model.MentenceFarmerRecord; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @Mapper @@ -12,9 +14,44 @@ public interface MentenceFarmerRecordMapper extends BaseMapper select t1.*,t2.name as mentenceStDetailName,t3.st_name as mentenceStName from mentence_farmer_record t1 join mentence_st_detail t2 on t1.mentence_st_detail_id = t2.id join mentence_st t3 on t1.mentence_st_id = t3.id + where 1=1 + + and t1.mentence_st_id = #{dto.mentenceStId} + + + and t1.mentence_st_detail_id = #{dto.mentenceStDetailId} + + """) - Page pageQuery(Page page, MentenceFarmerRecordPageSo pageSo); + Page pageQuery(Page page,@Param(value = "dto") MentenceFarmerRecordPageSo pageSo); + + @Select(""" + +""") + Page pageInfoCountQuery(Page page,@Param("dto") MentenceFarmerRecordPageSo pageSo); + } diff --git a/src/main/java/com/gunshi/project/hsz/service/MentenceFarmerRecordService.java b/src/main/java/com/gunshi/project/hsz/service/MentenceFarmerRecordService.java index d0ada67..7e9a744 100644 --- a/src/main/java/com/gunshi/project/hsz/service/MentenceFarmerRecordService.java +++ b/src/main/java/com/gunshi/project/hsz/service/MentenceFarmerRecordService.java @@ -5,14 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.MonthRangeSo; import com.gunshi.project.hsz.entity.so.MentenceFarmerRecordPageSo; +import com.gunshi.project.hsz.entity.vo.MentenceInfoCount12Vo; +import com.gunshi.project.hsz.entity.vo.MentenceInfoCountVo; +import com.gunshi.project.hsz.entity.vo.StatusCountVo; import com.gunshi.project.hsz.mapper.HiddenInfoMapper; import com.gunshi.project.hsz.mapper.MentenceFarmerRecordMapper; -import com.gunshi.project.hsz.mapper.MentencePlanDetailMapper; import com.gunshi.project.hsz.model.HiddenInfo; import com.gunshi.project.hsz.model.MentenceFarmerRecord; -import com.gunshi.project.hsz.model.MentencePlanDetail; -import com.gunshi.project.hsz.model.MentenceTemplate; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.*; @@ -28,7 +30,10 @@ import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.stream.Collector; +import java.util.stream.Collectors; @Service @Slf4j @@ -107,6 +112,12 @@ public class MentenceFarmerRecordService extends ServiceImpl pageInfoCountQuery(MentenceFarmerRecordPageSo pageSo) { + Page voPage = baseMapper.pageInfoCountQuery(pageSo.getPageSo().toPage(),pageSo); + return voPage; + } + public void exportToExcel(List records, HttpServletResponse response) { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("日常养护记录"); @@ -134,6 +145,22 @@ public class MentenceFarmerRecordService extends ServiceImpl count12(MonthRangeSo monthRangeSo) { + List res = hiddenInfoMapper.selectCount12(monthRangeSo); + return res; + } + + public Map countType(MonthRangeSo monthRangeSo) { + return hiddenInfoMapper.selectCountType(monthRangeSo).stream() + .collect(Collectors.toMap(StatusCountVo::getStatus, StatusCountVo::getCount)); + } + + public Map countYear(String year) { + return hiddenInfoMapper.countYear(year).stream() + .collect(Collectors.toMap(StatusCountVo::getStatus, StatusCountVo::getCount)); + } + + private static class StyleGroup { CellStyle headerStyle; CellStyle dataStyle;