diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/StatisticController.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/StatisticController.java index e0ceb44..05d8d37 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/StatisticController.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/StatisticController.java @@ -4,6 +4,7 @@ import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.web.core.BaseController; import org.dromara.scale.domain.bo.BaseQueryBo; +import org.dromara.scale.domain.vo.StatisticFactorVo; import org.dromara.scale.domain.vo.StatisticNumVo; import org.dromara.scale.domain.vo.StatisticWarnVo; import org.dromara.scale.service.IStatisticService; @@ -63,7 +64,7 @@ public class StatisticController extends BaseController { * 获取预警情况统计-整体 */ @GetMapping("/factor/all") - public R> getFactor(BaseQueryBo query) { + public R> getFactor(BaseQueryBo query) { return R.ok(statisticService.getFactor4All(query)); } @@ -71,7 +72,7 @@ public class StatisticController extends BaseController { * 获取预警情况统计-班级 */ @GetMapping("/factor/class") - public R> getFactor4Class(BaseQueryBo query) { + public R> getFactor4Class(BaseQueryBo query) { return R.ok(statisticService.getFactor4Class(query)); } } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticFactorVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticFactorVo.java new file mode 100644 index 0000000..012194a --- /dev/null +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticFactorVo.java @@ -0,0 +1,31 @@ +package org.dromara.scale.domain.vo; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + *

统计预警

+ * + * @author cjw + * @version V1.0.0 + * @date 2024/4/21 16:31 + */ +@Data +public class StatisticFactorVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private String factorName; + + List numList; + + @JsonIgnore + private String deptName; + @JsonIgnore + private String parentName; +} diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticNumVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticNumVo.java index 0909ff6..52133e7 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticNumVo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticNumVo.java @@ -24,13 +24,10 @@ public class StatisticNumVo implements Serializable { private int value; private int spareValue; - @JsonIgnore - private Long deptId; + @JsonIgnore private String deptName; @JsonIgnore - private Long parentId; - @JsonIgnore private String parentName; } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticWarnVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticWarnVo.java index 3f8fcb1..8d6cf00 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticWarnVo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticWarnVo.java @@ -26,12 +26,8 @@ public class StatisticWarnVo implements Serializable { private Integer highNum; private Integer majorNum; - @JsonIgnore - private Long deptId; @JsonIgnore private String deptName; @JsonIgnore - private Long parentId; - @JsonIgnore private String parentName; } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/StatisticMapper.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/StatisticMapper.java index fd3b8cf..d91c746 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/StatisticMapper.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/StatisticMapper.java @@ -2,6 +2,7 @@ package org.dromara.scale.mapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.dromara.scale.domain.vo.StatisticFactorVo; import org.dromara.scale.domain.vo.StatisticNumVo; import org.dromara.scale.domain.vo.StatisticWarnVo; @@ -21,5 +22,5 @@ public interface StatisticMapper { List selectStatisticWarn(@Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId); - List selectStatisticFactor(@Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId); + List selectStatisticFactor(@Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId); } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IStatisticService.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IStatisticService.java index 7026d13..d4b9936 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IStatisticService.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IStatisticService.java @@ -1,6 +1,7 @@ package org.dromara.scale.service; import org.dromara.scale.domain.bo.BaseQueryBo; +import org.dromara.scale.domain.vo.StatisticFactorVo; import org.dromara.scale.domain.vo.StatisticNumVo; import org.dromara.scale.domain.vo.StatisticWarnVo; @@ -18,7 +19,7 @@ public interface IStatisticService { List getWarn4Class(BaseQueryBo query); - List getFactor4All(BaseQueryBo query); + List getFactor4All(BaseQueryBo query); - List getFactor4Class(BaseQueryBo query); + List getFactor4Class(BaseQueryBo query); } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/StatisticServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/StatisticServiceImpl.java index f148171..1b215d7 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/StatisticServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/StatisticServiceImpl.java @@ -2,6 +2,7 @@ package org.dromara.scale.service.impl; import lombok.RequiredArgsConstructor; import org.dromara.scale.domain.bo.BaseQueryBo; +import org.dromara.scale.domain.vo.StatisticFactorVo; import org.dromara.scale.domain.vo.StatisticNumVo; import org.dromara.scale.domain.vo.StatisticWarnVo; import org.dromara.scale.mapper.StatisticMapper; @@ -50,7 +51,7 @@ public class StatisticServiceImpl implements IStatisticService { private List processCompleteData(Map> collect) { Set keys = collect.keySet(); - List data = new ArrayList<>(); + List data = new ArrayList<>(collect.size()); for (String key : keys) { List list = collect.get(key); int complete = list.stream().mapToInt(StatisticNumVo::getValue).sum(); @@ -86,7 +87,7 @@ public class StatisticServiceImpl implements IStatisticService { private List processWarnData(Map> collect) { Set keys = collect.keySet(); - List data = new ArrayList<>(); + List data = new ArrayList<>(collect.size()); for (String key : keys) { List list = collect.get(key); int noneNum = list.stream().mapToInt(StatisticWarnVo::getNoneNum).sum(); @@ -107,17 +108,55 @@ public class StatisticServiceImpl implements IStatisticService { } @Override - public List getFactor4All(BaseQueryBo query) { - Long batchNo = query.getBatchNo(); - Long scaleId = query.getScaleId(); - - return null; + public List getFactor4All(BaseQueryBo query) { + Map> collect = processFactorData(query); + Set keys = collect.keySet(); + List data = new ArrayList<>(); + for (String key : keys) { + StatisticFactorVo one = new StatisticFactorVo(); + one.setFactorName(key); + List factorList = collect.get(key); + Map> numCollect = factorList.stream().collect(Collectors.groupingBy(StatisticFactorVo::getParentName)); + List numList = new ArrayList<>(numCollect.size()); + Set numKeys = numCollect.keySet(); + for (String numKey : numKeys) { + StatisticNumVo numOne = new StatisticNumVo(); + numOne.setName(numKey); + numOne.setValue(numCollect.get(numKey).size()); + numList.add(numOne); + } + one.setNumList(numList); + data.add(one); + } + return data; } @Override - public List getFactor4Class(BaseQueryBo query) { - Long batchNo = query.getBatchNo(); - Long scaleId = query.getScaleId(); - return null; + public List getFactor4Class(BaseQueryBo query) { + Map> collect = processFactorData(query); + Set keys = collect.keySet(); + List data = new ArrayList<>(); + for (String key : keys) { + StatisticFactorVo one = new StatisticFactorVo(); + one.setFactorName(key); + List factorList = collect.get(key); + Map> numCollect = factorList.stream().collect(Collectors.groupingBy(StatisticFactorVo::getDeptName)); + List numList = new ArrayList<>(numCollect.size()); + Set numKeys = numCollect.keySet(); + for (String numKey : numKeys) { + StatisticNumVo numOne = new StatisticNumVo(); + numOne.setName(numKey); + numOne.setValue(numCollect.get(numKey).size()); + numList.add(numOne); + } + one.setNumList(numList); + data.add(one); + } + return data; + } + + private Map> processFactorData(BaseQueryBo query) { + List data = statisticMapper.selectStatisticFactor(query.getBatchNo(), query.getScaleId()); + return data.stream().collect(Collectors.groupingBy(StatisticFactorVo::getFactorName)); } } diff --git a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/StatisticMapper.xml b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/StatisticMapper.xml index 01c6075..7293449 100644 --- a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/StatisticMapper.xml +++ b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/StatisticMapper.xml @@ -5,9 +5,7 @@ - + select sfr.range_name as `factorName`, + d.dept_name, + parent.dept_name as `parentName` from sys_evaluation_record er - left join sys_dept d on d.dept_id = er.dept_id - left join sys_dept parent on parent.dept_id = d.parent_id - left join sys_evaluation_conclusion ec on ec.record_id = er.record_id - left join sys_scale_factor_range sfr on sfr.range_id = ec.factor_range_id + left join sys_dept d on d.dept_id = er.dept_id + left join sys_dept parent on parent.dept_id = d.parent_id + left join sys_evaluation_conclusion ec on ec.record_id = er.record_id + left join sys_scale_factor_range sfr on sfr.range_id = ec.factor_range_id where er.batch_no = #{batchNo} - and er.scale_id = #{scaleId} - and er.status = 1 - and ec.status = 1 + and er.scale_id = #{scaleId} + and er.status = 1 + and ec.status = 1