|
@@ -1,27 +1,16 @@
|
|
|
package com.diagbot.facade;
|
|
|
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
-import com.diagbot.dto.AverageStatisticsDTO;
|
|
|
-import com.diagbot.entity.BehospitalInfo;
|
|
|
-import com.diagbot.enums.IsDeleteEnum;
|
|
|
import com.diagbot.exception.CommonErrorCode;
|
|
|
import com.diagbot.exception.CommonException;
|
|
|
-import com.diagbot.util.BeanUtil;
|
|
|
-import com.diagbot.util.DateUtil;
|
|
|
import com.diagbot.util.SysUserUtils;
|
|
|
import com.diagbot.vo.FilterVO;
|
|
|
-import com.diagbot.vo.QcresultFilterVO;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.math.RoundingMode;
|
|
|
-import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.LinkedHashMap;
|
|
|
-import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
@@ -31,114 +20,32 @@ import java.util.Map;
|
|
|
*/
|
|
|
@Component
|
|
|
public class ConsoleFacade {
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private QcresultInfoFacade qcresultInfoFacade;
|
|
|
- @Autowired
|
|
|
- private BehospitalInfoFacade behospitalInfoFacade;
|
|
|
@Autowired
|
|
|
- private HomePageFacade homePageFacade;
|
|
|
+ private FilterFacade filterFacade;
|
|
|
@Autowired
|
|
|
private DataBeanAggregateQueryFacade dataBeanAggregateQueryFacade;
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 病历相关统计
|
|
|
*
|
|
|
+ * @param filterVO
|
|
|
* @return
|
|
|
*/
|
|
|
public Map<String, Object> mrStatistics(FilterVO filterVO) {
|
|
|
Map<String, Object> retMap = new LinkedHashMap<>();
|
|
|
String hospitalId = SysUserUtils.getCurrentHospitalID();
|
|
|
- String startDate = getStartDateStr(filterVO.getType());
|
|
|
+ String startDate = filterFacade.getStartDateStr(filterVO.getType(), null);
|
|
|
+ String endDate = filterFacade.getEndDateStr(filterVO.getType(), null);
|
|
|
filterVO.setStartDate(startDate);
|
|
|
+ filterVO.setEndDate(endDate);
|
|
|
filterVO.setHospitalId(hospitalId);
|
|
|
-
|
|
|
- QueryWrapper<BehospitalInfo> behospitalInfoQueryWrapper = new QueryWrapper<>();
|
|
|
- behospitalInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("hospital_id", hospitalId)
|
|
|
- .ge("behospital_date", startDate);
|
|
|
- int behospitalInfoCount = behospitalInfoFacade.count(behospitalInfoQueryWrapper);
|
|
|
- //病历数
|
|
|
- if (filterVO.getType().equals(1)) {
|
|
|
- retMap.put("本月病历数", behospitalInfoCount);
|
|
|
- } else if (filterVO.getType().equals(2)) {
|
|
|
- retMap.put("本年病历数", behospitalInfoCount);
|
|
|
- }
|
|
|
-
|
|
|
- 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);
|
|
|
+ try {
|
|
|
+ Map<String, Object> invokeParams = new HashMap<>();
|
|
|
+ invokeParams.put("filterVO", filterVO);
|
|
|
+ retMap
|
|
|
+ = dataBeanAggregateQueryFacade.get("setAllMr", invokeParams, Map.class);
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
|
|
|
}
|
|
|
return retMap;
|
|
|
}
|
|
@@ -151,59 +58,10 @@ public class ConsoleFacade {
|
|
|
*/
|
|
|
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();
|
|
|
- String startDate = getStartDateStr(filterVO.getType());
|
|
|
+ String startDate = filterFacade.getStartDateStr(filterVO.getType(), null);
|
|
|
filterVO.setStartDate(startDate);
|
|
|
filterVO.setHospitalId(hospitalId);
|
|
|
- /*if (filterVO.getLimitCount() == null || filterVO.getLimitCount().equals(0)) {
|
|
|
- filterVO.setLimitCount(10);
|
|
|
- }*/
|
|
|
- // List<ResultDetailDTO> results = behospitalInfoFacade.resultStatistics(filterVO);
|
|
|
- // if (ListUtil.isNotEmpty(results)) {
|
|
|
- // results.forEach(result -> {
|
|
|
- // DecimalFormat df = new DecimalFormat("#0.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).subtract(BigDecimal.valueOf(rate)).doubleValue());
|
|
|
- // retResults.add(retResult);
|
|
|
- // }
|
|
|
- // retResults.forEach(result -> {
|
|
|
- // DecimalFormat df = new DecimalFormat("#0.00");
|
|
|
- // String percentStr
|
|
|
- // = df.format(BigDecimal.valueOf(result.getPercent()).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
- // result.setPercentStr(percentStr);
|
|
|
- // });
|
|
|
- // retMap.put("各科室缺陷占比", retResults);
|
|
|
- // }
|
|
|
-
|
|
|
try {
|
|
|
Map<String, Object> invokeParams = new HashMap<>();
|
|
|
invokeParams.put("filterVO", filterVO);
|
|
@@ -216,43 +74,17 @@ public class ConsoleFacade {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 医院运营相关统计
|
|
|
+ * 平局值相关统计
|
|
|
*
|
|
|
* @param filterVO
|
|
|
* @return
|
|
|
*/
|
|
|
public Map<String, Object> averageStatistics(FilterVO filterVO) {
|
|
|
Map<String, Object> retMap = new LinkedHashMap<>();
|
|
|
- retMap.put("平均住院日", Lists.newLinkedList());
|
|
|
- retMap.put("平均住院费用", Lists.newLinkedList());
|
|
|
String hospitalId = SysUserUtils.getCurrentHospitalID();
|
|
|
filterVO.setHospitalId(hospitalId);
|
|
|
- String startDate = getStartDateStr(filterVO.getType());
|
|
|
+ String startDate = filterFacade.getStartDateStr(filterVO.getType(), null);
|
|
|
filterVO.setStartDate(startDate);
|
|
|
-
|
|
|
- /*
|
|
|
- List<AverageStatisticsDTO> retAverageDayNumList = Lists.newLinkedList();
|
|
|
- List<AverageStatisticsDTO> retAverageFeeList = Lists.newLinkedList();
|
|
|
- List<AverageStatisticsDTO> averageDayNumList = homePageFacade.getAverageDayNum(filterVO);
|
|
|
- List<AverageStatisticsDTO> averageFeeList = homePageFacade.getAverageFee(filterVO);
|
|
|
-
|
|
|
- if (filterVO.getLimitCount() == null || filterVO.getLimitCount().equals(0)) {
|
|
|
- filterVO.setLimitCount(10);
|
|
|
- }
|
|
|
- Integer limitCount = filterVO.getLimitCount();
|
|
|
-
|
|
|
- //平均住院日
|
|
|
- if (ListUtil.isNotEmpty(averageDayNumList)) {
|
|
|
- retAverageDayNumList = getLimitAverageList(averageDayNumList, limitCount);
|
|
|
- retMap.put("平均住院日", retAverageDayNumList);
|
|
|
- }
|
|
|
-
|
|
|
- //平均住院费用
|
|
|
- if (ListUtil.isNotEmpty(averageFeeList)) {
|
|
|
- retAverageFeeList = getLimitAverageList(averageFeeList, limitCount);
|
|
|
- retMap.put("平均住院费用", retAverageFeeList);
|
|
|
- }*/
|
|
|
-
|
|
|
try {
|
|
|
Map<String, Object> invokeParams = new HashMap<>();
|
|
|
invokeParams.put("filterVO", filterVO);
|
|
@@ -261,67 +93,6 @@ public class ConsoleFacade {
|
|
|
} catch (Exception e) {
|
|
|
throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
|
|
|
}
|
|
|
-
|
|
|
return retMap;
|
|
|
}
|
|
|
-
|
|
|
- /**
|
|
|
- * 筛选起始时间
|
|
|
- *
|
|
|
- * @param type
|
|
|
- * @return
|
|
|
- */
|
|
|
- public String getStartDateStr(Integer type) {
|
|
|
- Date date = new Date();
|
|
|
- String startDate = "";
|
|
|
- String year = DateUtil.getYear(date);
|
|
|
- int month = DateUtil.getMonth(date);
|
|
|
- if (type.equals(1)) {
|
|
|
- //本月统计
|
|
|
- startDate = year + "-" + month + "-1";
|
|
|
- } else if (type.equals(2)) {
|
|
|
- //本年统计
|
|
|
- startDate = year + "-1-1";
|
|
|
- }
|
|
|
- return startDate;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 根据限制数量重组统计结果
|
|
|
- *
|
|
|
- * @param averageList
|
|
|
- * @param limitCount
|
|
|
- * @return
|
|
|
- */
|
|
|
- public List<AverageStatisticsDTO> getLimitAverageList(List<AverageStatisticsDTO> averageList, Integer limitCount) {
|
|
|
- List<AverageStatisticsDTO> retAverageList = Lists.newLinkedList();
|
|
|
- if (averageList.size() < limitCount) {
|
|
|
- retAverageList = BeanUtil.listCopyTo(averageList, AverageStatisticsDTO.class);
|
|
|
- } else {
|
|
|
- if (averageList.size() > limitCount) {
|
|
|
- retAverageList = averageList.subList(0, limitCount - 1);
|
|
|
- List<AverageStatisticsDTO> otherList = averageList.subList(limitCount - 1, averageList.size());
|
|
|
- Double totleValue = otherList
|
|
|
- .stream()
|
|
|
- .map(i -> BigDecimal.valueOf(i.getTotleValue()))
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add).doubleValue();
|
|
|
- Integer num = otherList
|
|
|
- .stream()
|
|
|
- .map(AverageStatisticsDTO::getNum)
|
|
|
- .reduce(0, Integer::sum);
|
|
|
- Double averageValue = BigDecimal.valueOf(totleValue)
|
|
|
- .divide(BigDecimal.valueOf(num), 2, RoundingMode.HALF_UP)
|
|
|
- .doubleValue();
|
|
|
- AverageStatisticsDTO retAverageStatistics = new AverageStatisticsDTO();
|
|
|
- retAverageStatistics.setDeptName("其他");
|
|
|
- retAverageStatistics.setNum(num);
|
|
|
- retAverageStatistics.setAverageValue(averageValue);
|
|
|
- retAverageStatistics.setTotleValue(totleValue);
|
|
|
- retAverageList.add(retAverageStatistics);
|
|
|
- } else {
|
|
|
- retAverageList = averageList;
|
|
|
- }
|
|
|
- }
|
|
|
- return retAverageList;
|
|
|
- }
|
|
|
}
|