From a9ce2a629d0d931e55364c71e872023a2652b1bd Mon Sep 17 00:00:00 2001 From: tangw Date: Fri, 14 Nov 2025 19:22:31 +0800 Subject: [PATCH] reg_stat --- .../controller/RegStatController.java | 105 ++++++++++++++++++ .../czlis/transitPF/mapper/RegStatMapper.java | 16 +++ .../main/resources/mapper/RegStatMapper.xml | 62 +++++++++++ 3 files changed, 183 insertions(+) create mode 100644 transitPF/src/main/java/com/czlis/transitPF/controller/RegStatController.java create mode 100644 transitPF/src/main/java/com/czlis/transitPF/mapper/RegStatMapper.java create mode 100644 transitPF/src/main/resources/mapper/RegStatMapper.xml diff --git a/transitPF/src/main/java/com/czlis/transitPF/controller/RegStatController.java b/transitPF/src/main/java/com/czlis/transitPF/controller/RegStatController.java new file mode 100644 index 0000000..93aa036 --- /dev/null +++ b/transitPF/src/main/java/com/czlis/transitPF/controller/RegStatController.java @@ -0,0 +1,105 @@ +package com.czlis.transitPF.controller; + +import com.czlis.common.annotation.Anonymous; +import com.czlis.common.core.domain.Result; +import com.czlis.common.utils.DateUtils; +import com.czlis.transitPF.mapper.RegStatMapper; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 区域检验中心,统计 + */ +@Api(tags = "区域检验中心-统计") +@RestController +@RequestMapping("/transitstat") +@Slf4j +public class RegStatController { + @Autowired + RegStatMapper regStatMapper; + @Anonymous + @ApiOperation("获取业务数据总数") + @GetMapping("/getallcount") + public Result getallcount() { + Date st= DateUtils.parseDate("2025-10-01"); + Date et= DateUtils.parseDate("2025-11-01"); + Map map = new HashMap<>(); + Map regStatAll=regStatMapper.selectRegStatAll(); + map.put("regStatAll", regStatAll); + List> regStatMonth=regStatMapper.selectRegStatMonth(st,et); + List> regStatMonth0 = regStatMonth.stream() + .sorted(Comparator.comparingInt(o -> (Integer) o.get("daynum"))).collect(Collectors.toList()); + map.put("regStatMonth", regStatMonth0); + List> regStatHospMonth=regStatMapper.selectRegStatHospMonth(st,et); + if(!regStatHospMonth.isEmpty()) { + List> regStatHospMonth0 = regStatHospMonth.stream() + .sorted(Comparator.comparingInt(o -> (Integer) o.get("daynum"))).collect(Collectors.toList()); + List> regStatHospMonth1=setmapgroup(regStatHospMonth0); + List> regStatHospMonth2 = regStatHospMonth1.stream() + .sorted(Comparator.comparingInt((Map o) -> (Integer) o.get("groupsum")).reversed()).collect(Collectors.toList()); + + map.put("regStatHospMonth", regStatHospMonth2); + } + List> regStatStatus=regStatMapper.selectRegStatStatus(st,et); + List> regStatStatus0 = regStatStatus.stream() + .sorted((o1, o2) -> { + int val1 = (Integer) o1.get("sl"); + int val2 = (Integer) o2.get("sl"); + return Integer.compare(val2, val1); + }).collect(Collectors.toList()); + map.put("regStatStatus", regStatStatus0); + List> regStatSample=regStatMapper.selectRegStatSample(st,et); + List> regStatSample0 = regStatSample.stream() + .sorted((o1, o2) -> { + int val1 = (Integer) o1.get("sl"); + int val2 = (Integer) o2.get("sl"); + return Integer.compare(val2, val1); + }).collect(Collectors.toList()); + map.put("regStatSample", regStatSample0); + return new Result("0","成功",map); + } + private List> setmapgroup(List> maps){ + List> mapref=new ArrayList<>(); + if(!maps.isEmpty()) { + int total = maps.stream().mapToInt(map2 -> ((int) map2.get("sl"))).sum(); + if (total == 0) { + return mapref; + } + List> distinctList = new ArrayList<>(maps.stream() + .collect(Collectors.toMap(map0 -> map0.get("SrcHospName"), map0 -> map0, (existing, replacement) -> existing + )).values()); + DecimalFormat df = new DecimalFormat("0.00%"); + df.setRoundingMode(RoundingMode.HALF_UP); + for (Map map1 : distinctList) { + String srcHospName= map1.get("SrcHospName").toString(); + List> result = maps.stream() + .filter(map2 -> Objects.equals(map2.get("SrcHospName"), srcHospName)) + .collect(Collectors.toList()); + if(!result.isEmpty()) { + int total0 = result.stream().mapToInt(map2 -> ((int) map2.get("sl"))).sum(); + double percentage = (double) total0 / (double)total; + Map maptemp = new HashMap<>(); + maptemp.put("groupname", srcHospName); + maptemp.put("groupsum",total0); + maptemp.put("percentage", df.format(percentage)); + maptemp.put("dayline", result); + mapref.add(maptemp); + } + } + + } + return mapref; + } + +} diff --git a/transitPF/src/main/java/com/czlis/transitPF/mapper/RegStatMapper.java b/transitPF/src/main/java/com/czlis/transitPF/mapper/RegStatMapper.java new file mode 100644 index 0000000..c703216 --- /dev/null +++ b/transitPF/src/main/java/com/czlis/transitPF/mapper/RegStatMapper.java @@ -0,0 +1,16 @@ +package com.czlis.transitPF.mapper; + +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +public interface RegStatMapper { + Map selectRegStatAll(); + List> selectRegStatMonth(@Param("st") Date st, @Param("et")Date et); + List> selectRegStatHospMonth(@Param("st") Date st, @Param("et")Date et); + List> selectRegStatStatus(@Param("st") Date st, @Param("et")Date et); + List> selectRegStatSample(@Param("st") Date st, @Param("et")Date et); + +} diff --git a/transitPF/src/main/resources/mapper/RegStatMapper.xml b/transitPF/src/main/resources/mapper/RegStatMapper.xml new file mode 100644 index 0000000..6e18fcd --- /dev/null +++ b/transitPF/src/main/resources/mapper/RegStatMapper.xml @@ -0,0 +1,62 @@ + + + + + + + + + + \ No newline at end of file