|
@@ -1,17 +1,26 @@
|
|
|
package com.diagbot.facade;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.diagbot.dto.ResultDetailDTO;
|
|
|
+import com.diagbot.dto.ResultStatisticsDTO;
|
|
|
import com.diagbot.entity.BehospitalInfo;
|
|
|
import com.diagbot.entity.QcresultInfo;
|
|
|
import com.diagbot.enums.IsDeleteEnum;
|
|
|
+import com.diagbot.util.BeanUtil;
|
|
|
import com.diagbot.util.DateUtil;
|
|
|
import com.diagbot.util.ListUtil;
|
|
|
import com.diagbot.util.SysUserUtils;
|
|
|
+import com.diagbot.vo.FilterVO;
|
|
|
+import com.fasterxml.jackson.datatype.jsr310.DecimalUtils;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.text.DecimalFormat;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.LinkedHashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -81,32 +90,32 @@ public class ConsoleFacade {
|
|
|
.size());
|
|
|
retMap.put("本月甲级病历-人工", qcresultInfoList
|
|
|
.stream()
|
|
|
- .filter(i -> i.getGradeType().equals(2) && i.getLevel().equals("甲级"))
|
|
|
+ .filter(i -> i.getGradeType().equals(2) && i.getLevel().equals("甲"))
|
|
|
.collect(Collectors.toList())
|
|
|
.size());
|
|
|
retMap.put("本月甲级病历-机器", qcresultInfoList
|
|
|
.stream()
|
|
|
- .filter(i -> i.getGradeType().equals(1) && i.getLevel().equals("甲级"))
|
|
|
+ .filter(i -> i.getGradeType().equals(1) && i.getLevel().equals("甲"))
|
|
|
.collect(Collectors.toList())
|
|
|
.size());
|
|
|
retMap.put("本月乙级病历-人工", qcresultInfoList
|
|
|
.stream()
|
|
|
- .filter(i -> i.getGradeType().equals(2) && i.getLevel().equals("乙级"))
|
|
|
+ .filter(i -> i.getGradeType().equals(2) && i.getLevel().equals("乙"))
|
|
|
.collect(Collectors.toList())
|
|
|
.size());
|
|
|
retMap.put("本月乙级病历-机器", qcresultInfoList
|
|
|
.stream()
|
|
|
- .filter(i -> i.getGradeType().equals(1) && i.getLevel().equals("乙级"))
|
|
|
+ .filter(i -> i.getGradeType().equals(1) && i.getLevel().equals("乙"))
|
|
|
.collect(Collectors.toList())
|
|
|
.size());
|
|
|
retMap.put("本月不合格病历-人工", qcresultInfoList
|
|
|
.stream()
|
|
|
- .filter(i -> i.getGradeType().equals(2) && i.getLevel().equals("丙级"))
|
|
|
+ .filter(i -> i.getGradeType().equals(2) && i.getLevel().equals("丙"))
|
|
|
.collect(Collectors.toList())
|
|
|
.size());
|
|
|
retMap.put("本月不合格病历-机器", qcresultInfoList
|
|
|
.stream()
|
|
|
- .filter(i -> i.getGradeType().equals(1) && i.getLevel().equals("丙级"))
|
|
|
+ .filter(i -> i.getGradeType().equals(1) && i.getLevel().equals("丙"))
|
|
|
.collect(Collectors.toList())
|
|
|
.size());
|
|
|
}
|
|
@@ -115,4 +124,77 @@ public class ConsoleFacade {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 缺陷相关统计
|
|
|
+ *
|
|
|
+ * @param filterVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Map<String, Object> resultStatistics(FilterVO filterVO) {
|
|
|
+ Map<String, Object> retMap = new LinkedHashMap<>();
|
|
|
+ retMap.put("缺陷排行列表", Lists.newLinkedList());
|
|
|
+ retMap.put("各科室缺陷占比", Lists.newLinkedList());
|
|
|
+ String hospitalId = SysUserUtils.getCurrentHospitalID();
|
|
|
+ Date date = new Date();
|
|
|
+ String startDate = "";
|
|
|
+ String year = DateUtil.getYear(date);
|
|
|
+ int month = DateUtil.getMonth(date);
|
|
|
+ if (filterVO.getType().equals(1)) {
|
|
|
+ //本月统计
|
|
|
+ startDate = year + "-" + month + "-1";
|
|
|
+ } else if (filterVO.getType().equals(2)) {
|
|
|
+ //本年统计
|
|
|
+ startDate = year + "-1-1";
|
|
|
+ }
|
|
|
+ filterVO.setStartDate(startDate);
|
|
|
+ filterVO.setHospitalId(hospitalId);
|
|
|
+ filterVO.setLimitCount(10);
|
|
|
+ List<ResultDetailDTO> results = behospitalInfoFacade.resultStatistics(filterVO);
|
|
|
+ if (ListUtil.isNotEmpty(results)) {
|
|
|
+ results.forEach(result -> {
|
|
|
+ DecimalFormat df = new DecimalFormat("#.00");
|
|
|
+ String percentStr
|
|
|
+ = df.format(BigDecimal.valueOf(result.getPercent()).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
+ result.setPercentStr(percentStr);
|
|
|
+ });
|
|
|
+ retMap.put("缺陷排行列表", results);
|
|
|
+ }
|
|
|
+ List<ResultDetailDTO> results2 = behospitalInfoFacade.resultStatisticsByDept(filterVO);
|
|
|
+ if (ListUtil.isNotEmpty(results2)) {
|
|
|
+ List<ResultDetailDTO> retResults = Lists.newLinkedList();
|
|
|
+ if (results2.size() <= 6) {
|
|
|
+ retResults = BeanUtil.listCopyTo(results2, ResultDetailDTO.class);
|
|
|
+ } else {
|
|
|
+
|
|
|
+ Double rate = 0d;
|
|
|
+ Integer num = 0;
|
|
|
+ for (ResultDetailDTO result : results2) {
|
|
|
+ if (retResults.size() < 5) {
|
|
|
+ rate = BigDecimal.valueOf(rate)
|
|
|
+ .add(BigDecimal.valueOf(Double.valueOf(result.getPercent())))
|
|
|
+ .doubleValue();
|
|
|
+ retResults.add(result);
|
|
|
+ } else {
|
|
|
+ num += result.getNum();
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ResultDetailDTO retResult = new ResultDetailDTO();
|
|
|
+ retResult.setName("其他");
|
|
|
+ retResult.setNum(num);
|
|
|
+ retResult.setPercent(BigDecimal.valueOf(1)
|
|
|
+ .min(BigDecimal.valueOf(rate))
|
|
|
+ .doubleValue());
|
|
|
+ retResults.add(retResult);
|
|
|
+ }
|
|
|
+ retResults.forEach(result -> {
|
|
|
+ DecimalFormat df = new DecimalFormat("#.00");
|
|
|
+ String percentStr
|
|
|
+ = df.format(BigDecimal.valueOf(result.getPercent()).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
+ result.setPercentStr(percentStr);
|
|
|
+ });
|
|
|
+ retMap.put("各科室缺陷占比", retResults);
|
|
|
+ }
|
|
|
+ return retMap;
|
|
|
+ }
|
|
|
}
|