|
@@ -4,13 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.diagbot.dto.AverageStatisticsDTO;
|
|
|
import com.diagbot.dto.ResultDetailDTO;
|
|
|
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.diagbot.vo.QcresultFilterVO;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
@@ -18,11 +18,9 @@ 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;
|
|
|
|
|
|
/**
|
|
|
* @Description:
|
|
@@ -46,17 +44,7 @@ public class ConsoleFacade {
|
|
|
* @return
|
|
|
*/
|
|
|
public Map<String, Object> mrStatistics(FilterVO filterVO) {
|
|
|
- Map<String, Object> retMap = new HashMap<>();
|
|
|
- retMap.put("本月病历数", 0);
|
|
|
- retMap.put("本月质控数-人工", 0);
|
|
|
- retMap.put("本月质控数-机器", 0);
|
|
|
- retMap.put("本月甲级病历-人工", 0);
|
|
|
- retMap.put("本月甲级病历-机器", 0);
|
|
|
- retMap.put("本月乙级病历-人工", 0);
|
|
|
- retMap.put("本月乙级病历-机器", 0);
|
|
|
- retMap.put("本月不合格病历-人工", 0);
|
|
|
- retMap.put("本月不合格病历-机器", 0);
|
|
|
-
|
|
|
+ Map<String, Object> retMap = new LinkedHashMap<>();
|
|
|
String hospitalId = SysUserUtils.getCurrentHospitalID();
|
|
|
String startDate = getStartDateStr(filterVO.getType());
|
|
|
filterVO.setStartDate(startDate);
|
|
@@ -66,56 +54,88 @@ public class ConsoleFacade {
|
|
|
behospitalInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
.eq("hospital_id", hospitalId)
|
|
|
.ge("leave_hospital_date", startDate);
|
|
|
- List<BehospitalInfo> behospitalInfoList = behospitalInfoFacade.list(behospitalInfoQueryWrapper);
|
|
|
- if (ListUtil.isNotEmpty(behospitalInfoList)) {
|
|
|
- //本月病历数
|
|
|
- retMap.put("本月病历数", behospitalInfoList.size());
|
|
|
+ int behospitalInfoCount = behospitalInfoFacade.count(behospitalInfoQueryWrapper);
|
|
|
+ //病历数
|
|
|
+ if (filterVO.getType().equals(1)) {
|
|
|
+ retMap.put("本月病历数", behospitalInfoCount);
|
|
|
+ } else if (filterVO.getType().equals(2)) {
|
|
|
+ retMap.put("本年病历数", behospitalInfoCount);
|
|
|
}
|
|
|
|
|
|
- List<QcresultInfo> qcresultInfoList = qcresultInfoFacade.getQcresultSelectively(filterVO);
|
|
|
- if (ListUtil.isNotEmpty(qcresultInfoList)) {
|
|
|
- retMap.put("本月质控数-人工", qcresultInfoList
|
|
|
- .stream()
|
|
|
- .filter(i -> i.getGradeType().equals(2))
|
|
|
- .collect(Collectors.toList())
|
|
|
- .size());
|
|
|
- retMap.put("本月质控数-机器", qcresultInfoList
|
|
|
- .stream()
|
|
|
- .filter(i -> i.getGradeType().equals(1))
|
|
|
- .collect(Collectors.toList())
|
|
|
- .size());
|
|
|
- retMap.put("本月甲级病历-人工", qcresultInfoList
|
|
|
- .stream()
|
|
|
- .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("甲"))
|
|
|
- .collect(Collectors.toList())
|
|
|
- .size());
|
|
|
- retMap.put("本月乙级病历-人工", qcresultInfoList
|
|
|
- .stream()
|
|
|
- .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("乙"))
|
|
|
- .collect(Collectors.toList())
|
|
|
- .size());
|
|
|
- retMap.put("本月不合格病历-人工", qcresultInfoList
|
|
|
- .stream()
|
|
|
- .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("丙"))
|
|
|
- .collect(Collectors.toList())
|
|
|
- .size());
|
|
|
+ QcresultFilterVO qcresultFilterVO = new QcresultFilterVO();
|
|
|
+ BeanUtil.copyProperties(filterVO, qcresultFilterVO);
|
|
|
+ //本月质控数-人工
|
|
|
+ qcresultFilterVO.setGradeType(2);
|
|
|
+ qcresultFilterVO.setLevel("");
|
|
|
+ int qcresultByGradeType2Count = qcresultInfoFacade.getQcresultSelectively(qcresultFilterVO);
|
|
|
+ if (qcresultFilterVO.getType().equals(1)) {
|
|
|
+ retMap.put("本月质控数-人工", qcresultByGradeType2Count);
|
|
|
+ } else if (qcresultFilterVO.getType().equals(2)) {
|
|
|
+ retMap.put("本年质控数-人工", qcresultByGradeType2Count);
|
|
|
+ }
|
|
|
+ //本月质控数-机器
|
|
|
+ qcresultFilterVO.setGradeType(1);
|
|
|
+ qcresultFilterVO.setLevel("");
|
|
|
+ int qcresultByGradeType1Count = qcresultInfoFacade.getQcresultSelectively(qcresultFilterVO);
|
|
|
+ if (qcresultFilterVO.getType().equals(1)) {
|
|
|
+ retMap.put("本月质控数-机器", qcresultByGradeType1Count);
|
|
|
+ } else if (qcresultFilterVO.getType().equals(2)) {
|
|
|
+ retMap.put("本年质控数-机器", qcresultByGradeType1Count);
|
|
|
+ }
|
|
|
+ //本月甲级病历-人工
|
|
|
+ qcresultFilterVO.setGradeType(2);
|
|
|
+ qcresultFilterVO.setLevel("甲");
|
|
|
+ int qcresultByGradeType2AndLevel1Count = qcresultInfoFacade.getQcresultSelectively(qcresultFilterVO);
|
|
|
+ if (qcresultFilterVO.getType().equals(1)) {
|
|
|
+ retMap.put("本月甲级病历-人工", qcresultByGradeType2AndLevel1Count);
|
|
|
+ } else if (qcresultFilterVO.getType().equals(2)) {
|
|
|
+ retMap.put("本年甲级病历-人工", qcresultByGradeType2AndLevel1Count);
|
|
|
+ }
|
|
|
+ //本月甲级病历-机器
|
|
|
+ qcresultFilterVO.setGradeType(1);
|
|
|
+ qcresultFilterVO.setLevel("甲");
|
|
|
+ int qcresultByGradeType1AndLevel1Count = qcresultInfoFacade.getQcresultSelectively(qcresultFilterVO);
|
|
|
+ if (qcresultFilterVO.getType().equals(1)) {
|
|
|
+ retMap.put("本月甲级病历-机器", qcresultByGradeType1AndLevel1Count);
|
|
|
+ } else if (qcresultFilterVO.getType().equals(2)) {
|
|
|
+ retMap.put("本年甲级病历-机器", qcresultByGradeType1AndLevel1Count);
|
|
|
+ }
|
|
|
+ //本月乙级病历-人工
|
|
|
+ qcresultFilterVO.setGradeType(2);
|
|
|
+ qcresultFilterVO.setLevel("乙");
|
|
|
+ int qcresultByGradeType2AndLevel2Count = qcresultInfoFacade.getQcresultSelectively(qcresultFilterVO);
|
|
|
+ if (qcresultFilterVO.getType().equals(1)) {
|
|
|
+ retMap.put("本月乙级病历-人工", qcresultByGradeType2AndLevel2Count);
|
|
|
+ } else if (qcresultFilterVO.getType().equals(2)) {
|
|
|
+ retMap.put("本年乙级病历-人工", qcresultByGradeType2AndLevel2Count);
|
|
|
+ }
|
|
|
+ //本月乙级病历-机器
|
|
|
+ qcresultFilterVO.setGradeType(1);
|
|
|
+ qcresultFilterVO.setLevel("乙");
|
|
|
+ int qcresultByGradeType1AndLevel2Count = qcresultInfoFacade.getQcresultSelectively(qcresultFilterVO);
|
|
|
+ if (qcresultFilterVO.getType().equals(1)) {
|
|
|
+ retMap.put("本月乙级病历-机器", qcresultByGradeType1AndLevel2Count);
|
|
|
+ } else if (qcresultFilterVO.getType().equals(2)) {
|
|
|
+ retMap.put("本年乙级病历-机器", qcresultByGradeType1AndLevel2Count);
|
|
|
+ }
|
|
|
+ //本月乙级病历-人工
|
|
|
+ qcresultFilterVO.setGradeType(2);
|
|
|
+ qcresultFilterVO.setLevel("丙");
|
|
|
+ int qcresultByGradeType2AndLevel3Count = qcresultInfoFacade.getQcresultSelectively(qcresultFilterVO);
|
|
|
+ if (qcresultFilterVO.getType().equals(1)) {
|
|
|
+ retMap.put("本月不合格病历-人工", qcresultByGradeType2AndLevel3Count);
|
|
|
+ } else if (qcresultFilterVO.getType().equals(2)) {
|
|
|
+ retMap.put("本年不合格病历-人工", qcresultByGradeType2AndLevel3Count);
|
|
|
+ }
|
|
|
+ //本月乙级病历-机器
|
|
|
+ qcresultFilterVO.setGradeType(1);
|
|
|
+ qcresultFilterVO.setLevel("丙");
|
|
|
+ int qcresultByGradeType1AndLevel3Count = qcresultInfoFacade.getQcresultSelectively(qcresultFilterVO);
|
|
|
+ if (filterVO.getType().equals(1)) {
|
|
|
+ retMap.put("本月不合格病历-机器", qcresultByGradeType1AndLevel3Count);
|
|
|
+ } else if (filterVO.getType().equals(2)) {
|
|
|
+ retMap.put("本年不合格病历-机器", qcresultByGradeType1AndLevel3Count);
|
|
|
}
|
|
|
-
|
|
|
return retMap;
|
|
|
}
|
|
|
|
|
@@ -139,7 +159,7 @@ public class ConsoleFacade {
|
|
|
List<ResultDetailDTO> results = behospitalInfoFacade.resultStatistics(filterVO);
|
|
|
if (ListUtil.isNotEmpty(results)) {
|
|
|
results.forEach(result -> {
|
|
|
- DecimalFormat df = new DecimalFormat("#.00");
|
|
|
+ DecimalFormat df = new DecimalFormat("#0.00");
|
|
|
String percentStr
|
|
|
= df.format(BigDecimal.valueOf(result.getPercent()).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
result.setPercentStr(percentStr);
|
|
@@ -163,19 +183,16 @@ public class ConsoleFacade {
|
|
|
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());
|
|
|
+ retResult.setPercent(BigDecimal.valueOf(1).subtract(BigDecimal.valueOf(rate)).doubleValue());
|
|
|
retResults.add(retResult);
|
|
|
}
|
|
|
retResults.forEach(result -> {
|
|
|
- DecimalFormat df = new DecimalFormat("#.00");
|
|
|
+ DecimalFormat df = new DecimalFormat("#0.00");
|
|
|
String percentStr
|
|
|
= df.format(BigDecimal.valueOf(result.getPercent()).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
result.setPercentStr(percentStr);
|
|
@@ -259,22 +276,27 @@ public class ConsoleFacade {
|
|
|
retAverageList = BeanUtil.listCopyTo(averageList, AverageStatisticsDTO.class);
|
|
|
} else {
|
|
|
Double averageValue = 0d;
|
|
|
+ Double totleValue = 0d;
|
|
|
Integer num = 0;
|
|
|
for (AverageStatisticsDTO averageStatisticsDTO : averageList) {
|
|
|
if (retAverageList.size() < limitCount - 1) {
|
|
|
retAverageList.add(averageStatisticsDTO);
|
|
|
} else {
|
|
|
- averageValue = BigDecimal
|
|
|
- .valueOf(averageValue)
|
|
|
- .add(BigDecimal.valueOf(averageStatisticsDTO.getAverageValue()))
|
|
|
+ totleValue = BigDecimal
|
|
|
+ .valueOf(totleValue)
|
|
|
+ .add(BigDecimal.valueOf(averageStatisticsDTO.getTotleValue()))
|
|
|
.doubleValue();
|
|
|
- num++;
|
|
|
+ num += averageStatisticsDTO.getNum();
|
|
|
}
|
|
|
}
|
|
|
- averageValue = BigDecimal.valueOf(averageValue).divide(BigDecimal.valueOf(num)).doubleValue();
|
|
|
+ averageValue = BigDecimal.valueOf(totleValue)
|
|
|
+ .divide(BigDecimal.valueOf(num), 2)
|
|
|
+ .doubleValue();
|
|
|
AverageStatisticsDTO retAverageStatistics = new AverageStatisticsDTO();
|
|
|
retAverageStatistics.setDeptName("其他");
|
|
|
+ retAverageStatistics.setNum(num);
|
|
|
retAverageStatistics.setAverageValue(averageValue);
|
|
|
+ retAverageStatistics.setTotleValue(totleValue);
|
|
|
retAverageList.add(retAverageStatistics);
|
|
|
}
|
|
|
return retAverageList;
|