|
@@ -1,13 +1,12 @@
|
|
|
package com.diagbot.facade;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.diagbot.dto.*;
|
|
|
-import com.diagbot.util.BeanUtil;
|
|
|
-import com.diagbot.util.EntityUtil;
|
|
|
-import com.diagbot.util.ListUtil;
|
|
|
-import com.diagbot.util.StringUtil;
|
|
|
-import com.diagbot.util.SysUserUtils;
|
|
|
+import com.diagbot.entity.QcCasesEntry;
|
|
|
+import com.diagbot.entity.SysHospitalSet;
|
|
|
+import com.diagbot.util.*;
|
|
|
import com.diagbot.vo.*;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import org.apache.ibatis.annotations.Param;
|
|
@@ -38,6 +37,11 @@ public class ConsoleByDeptFacade {
|
|
|
private FilterFacade filterFacade;
|
|
|
@Autowired
|
|
|
private QcCasesFacade qcCasesFacade;
|
|
|
+ @Autowired
|
|
|
+ private SysHospitalSetFacade sysHospitalSetFacade;
|
|
|
+ @Autowired
|
|
|
+ private QcCasesEntryFacade qcCasesEntryFacade;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 出院人数统计-按科室
|
|
@@ -816,5 +820,235 @@ public class ConsoleByDeptFacade {
|
|
|
return retPage;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 未整改病历统计
|
|
|
+ *
|
|
|
+ * @param filterUnModifyMRVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public UnModifyMRDTO unModifyMRSByDept(FilterUnModifyMRVO filterUnModifyMRVO) {
|
|
|
+ UnModifyMRDTO unModifyMRDTO = new UnModifyMRDTO();
|
|
|
+ List<Object> retList = Lists.newLinkedList();
|
|
|
+ filterFacade.filterUnModifyMRVOSet(filterUnModifyMRVO);
|
|
|
+
|
|
|
+ //colums
|
|
|
+ QueryWrapper<SysHospitalSet> hospitalSetQueryWrapper = new QueryWrapper<>();
|
|
|
+ hospitalSetQueryWrapper.eq("is_deleted", 'N')
|
|
|
+ .eq("hospital_id", filterUnModifyMRVO.getHospitalId())
|
|
|
+ .eq("code", "unmodify_mr_entry_ks");
|
|
|
+ SysHospitalSet hospitalSet = sysHospitalSetFacade.getOne(hospitalSetQueryWrapper);
|
|
|
+ if (hospitalSet == null || StringUtil.isBlank(hospitalSet.getValue())) {
|
|
|
+ return unModifyMRDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ //表头生成
|
|
|
+ List<String> columnSet = Arrays.asList(hospitalSet.getValue().split(","));
|
|
|
+ List<ColumnDTO> columns = Lists.newLinkedList();
|
|
|
+ Integer orderNo = 1;
|
|
|
+ ColumnDTO columnDeptId = new ColumnDTO();
|
|
|
+ columnDeptId.setOrderNo(orderNo);
|
|
|
+ columnDeptId.setFieldName("doctorId");
|
|
|
+ columnDeptId.setColumnName("医生编码");
|
|
|
+ columnDeptId.setIsShow(0);
|
|
|
+ columns.add(columnDeptId);
|
|
|
+ orderNo++;
|
|
|
+ ColumnDTO columnDeptName = new ColumnDTO();
|
|
|
+ columnDeptName.setOrderNo(orderNo);
|
|
|
+ columnDeptName.setFieldName("doctorName");
|
|
|
+ columnDeptName.setColumnName("主管医生");
|
|
|
+ columnDeptName.setIsShow(1);
|
|
|
+ columns.add(columnDeptName);
|
|
|
+ orderNo++;
|
|
|
+ List<Long> casesEntryIds = Lists.newArrayList();
|
|
|
+ for (String valueStr : columnSet) {
|
|
|
+ if (StringUtil.isBlank(valueStr)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String[] keyValue = valueStr.split("--");
|
|
|
+ if (keyValue != null || keyValue.length > 1) {
|
|
|
+ casesEntryIds.add(Long.valueOf(keyValue[0]));
|
|
|
+ ColumnDTO columnId = new ColumnDTO();
|
|
|
+ columnId.setOrderNo(orderNo);
|
|
|
+ columnId.setId(Long.valueOf(keyValue[0]));
|
|
|
+ columnId.setFieldName("entry_" + keyValue[0] + "_id");
|
|
|
+ columnId.setColumnName(keyValue[1] + "id");
|
|
|
+ columnId.setIsShow(0);
|
|
|
+ columns.add(columnId);
|
|
|
+ orderNo++;
|
|
|
+ ColumnDTO columnName = new ColumnDTO();
|
|
|
+ columnName.setOrderNo(orderNo);
|
|
|
+ columnName.setId(Long.valueOf(keyValue[0]));
|
|
|
+ columnName.setFieldName("entry_" + keyValue[0] + "_name");
|
|
|
+ columnName.setColumnName(keyValue[1] + "name");
|
|
|
+ columnName.setIsShow(0);
|
|
|
+ columns.add(columnName);
|
|
|
+ orderNo++;
|
|
|
+ ColumnDTO columnNum = new ColumnDTO();
|
|
|
+ columnNum.setOrderNo(orderNo);
|
|
|
+ columnNum.setId(Long.valueOf(keyValue[0]));
|
|
|
+ columnNum.setFieldName("entry_" + keyValue[0] + "_num");
|
|
|
+ columnNum.setColumnName(keyValue[1]);
|
|
|
+ columnNum.setIsShow(1);
|
|
|
+ columns.add(columnNum);
|
|
|
+ orderNo++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //条目未维护
|
|
|
+ if (ListUtil.isEmpty(casesEntryIds)) {
|
|
|
+ return unModifyMRDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ //casesEntryIds
|
|
|
+ filterUnModifyMRVO.setCasesEntryIds(casesEntryIds);
|
|
|
+ QueryWrapper<QcCasesEntry> qcCasesEntryQueryWrapper = new QueryWrapper<>();
|
|
|
+ qcCasesEntryQueryWrapper.eq("is_deleted", "N")
|
|
|
+ .in("id", casesEntryIds);
|
|
|
+ List<QcCasesEntry> casesEntryList = qcCasesEntryFacade.list(qcCasesEntryQueryWrapper);
|
|
|
+ // 实体类中将实体类转化为map形式,其中条目id对应目标条目名称
|
|
|
+ Map<Long, String> basCasesEntryMap = EntityUtil.makeMapWithKeyValue(casesEntryList, "id", "name");
|
|
|
+
|
|
|
+ List<UnModifyMRDetailDTO> records = behospitalInfoFacade.unModifyMRSByDept(filterUnModifyMRVO);
|
|
|
+ //以科室分组,将符合科室的每条数据以map形式存储
|
|
|
+ Map<String, List<UnModifyMRDetailDTO>> deptMap = EntityUtil.makeEntityListMap(records, "doctorName");
|
|
|
+ //科室对应科室id
|
|
|
+ Map<String, String> deptInfoMap = EntityUtil.makeMapWithKeyValue(records, "doctorName", "doctorId");
|
|
|
+ Map<String, Map<Long, UnModifyMRDetailDTO>> deptEntryMap = new LinkedHashMap<>();
|
|
|
+ for (Map.Entry<String, List<UnModifyMRDetailDTO>> entry : deptMap.entrySet()) {
|
|
|
+ Map<Long, UnModifyMRDetailDTO> entryMap = EntityUtil.makeEntityMap(entry.getValue(), "casesEntryId");
|
|
|
+ deptEntryMap.put(entry.getKey(), entryMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ for (Map.Entry<String, Map<Long, UnModifyMRDetailDTO>> entry : deptEntryMap.entrySet()) {
|
|
|
+ Object obj = new Object();
|
|
|
+ HashMap addMap = new HashMap();
|
|
|
+ HashMap addValMap = new HashMap();
|
|
|
+
|
|
|
+ addMap.put("doctorName", Class.forName("java.lang.String"));
|
|
|
+ addValMap.put("doctorName", entry.getKey());
|
|
|
+ addMap.put("doctorId", Class.forName("java.lang.String"));
|
|
|
+ addValMap.put("doctorId", deptInfoMap.get(entry.getKey()));
|
|
|
+
|
|
|
+ for (ColumnDTO item : columns) {
|
|
|
+ if (item.getFieldName().lastIndexOf("_id") > 0) {
|
|
|
+ addMap.put(item.getFieldName(), Class.forName("java.lang.Long"));
|
|
|
+ if (item.getId() != null) {
|
|
|
+ addValMap.put(item.getFieldName(), item.getId());
|
|
|
+ } else {
|
|
|
+ addValMap.put(item.getFieldName(), null);
|
|
|
+ }
|
|
|
+ } else if (item.getFieldName().lastIndexOf("_name") > 0) {
|
|
|
+ addMap.put(item.getFieldName(), Class.forName("java.lang.String"));
|
|
|
+ if (basCasesEntryMap.containsKey(item.getId())) {
|
|
|
+ addValMap.put(item.getFieldName(), basCasesEntryMap.get(item.getId()));
|
|
|
+ } else {
|
|
|
+ addValMap.put(item.getFieldName(), "");
|
|
|
+ }
|
|
|
+ } else if (item.getFieldName().lastIndexOf("_num") > 0) {
|
|
|
+ addMap.put(item.getFieldName(), Class.forName("java.lang.Integer"));
|
|
|
+ if (entry.getValue().containsKey(item.getId())) {
|
|
|
+ addValMap.put(item.getFieldName(), entry.getValue().get(item.getId()).getCasesEntryNum());
|
|
|
+ } else {
|
|
|
+ addValMap.put(item.getFieldName(), 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ obj = new ClassUtil().dynamicClass(obj, addMap, addValMap);
|
|
|
+ retList.add(obj);
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ //排序
|
|
|
+ Collections.sort(retList, new Comparator<Object>() {
|
|
|
+ @Override
|
|
|
+ public int compare(Object o1, Object o2) {
|
|
|
+
|
|
|
+ if (StringUtil.isNotBlank(filterUnModifyMRVO.getAsc())) {
|
|
|
+ //升序
|
|
|
+ Object o1Val = ObjectUtil.getValueByKey(o1, filterUnModifyMRVO.getAsc());
|
|
|
+ Object o2Val = ObjectUtil.getValueByKey(o2, filterUnModifyMRVO.getAsc());
|
|
|
+ if (filterUnModifyMRVO.getAsc().lastIndexOf("_num") > 1) {
|
|
|
+ return ((Integer) o1Val).compareTo((Integer) o2Val);
|
|
|
+ }
|
|
|
+ if (filterUnModifyMRVO.getAsc().lastIndexOf("_id") > 1) {
|
|
|
+ return ((Long) o1Val).compareTo((Long) o2Val);
|
|
|
+ } else {
|
|
|
+ return ((String) o1Val).compareTo((String) o2Val);
|
|
|
+ }
|
|
|
+ } else if (StringUtil.isNotBlank(filterUnModifyMRVO.getDesc())) {
|
|
|
+ //降序
|
|
|
+ Object o1Val = ObjectUtil.getValueByKey(o1, filterUnModifyMRVO.getDesc());
|
|
|
+ Object o2Val = ObjectUtil.getValueByKey(o2, filterUnModifyMRVO.getDesc());
|
|
|
+ if (filterUnModifyMRVO.getDesc().lastIndexOf("_num") > 1) {
|
|
|
+ return ((Integer) o2Val).compareTo((Integer) o1Val);
|
|
|
+ }
|
|
|
+ if (filterUnModifyMRVO.getDesc().lastIndexOf("_id") > 1) {
|
|
|
+ return ((Long) o2Val).compareTo((Long) o1Val);
|
|
|
+ } else {
|
|
|
+ return ((String) o2Val).compareTo((String) o1Val);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ /* //增加全院数据
|
|
|
+ if (ListUtil.isNotEmpty(retList) &&
|
|
|
+ (StringUtil.isBlank(filterUnModifyMRVO.getDeptName())
|
|
|
+ || filterUnModifyMRVO.getDeptName().equals("全院"))) {
|
|
|
+ try {
|
|
|
+
|
|
|
+ Object globleObj = new Object();
|
|
|
+ HashMap addMap = new HashMap();
|
|
|
+ HashMap addValMap = new HashMap();
|
|
|
+ addMap.put("deptId", Class.forName("java.lang.String"));
|
|
|
+ addValMap.put("deptId", "");
|
|
|
+ addMap.put("deptName", Class.forName("java.lang.String"));
|
|
|
+ addValMap.put("deptName", "全院");
|
|
|
+
|
|
|
+ for (ColumnDTO item : columns) {
|
|
|
+ if (item.getFieldName().lastIndexOf("_id") > 0) {
|
|
|
+ addMap.put(item.getFieldName(), Class.forName("java.lang.Long"));
|
|
|
+ if (item.getId() != null) {
|
|
|
+ addValMap.put(item.getFieldName(), item.getId());
|
|
|
+ } else {
|
|
|
+ addValMap.put(item.getFieldName(), null);
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if (item.getFieldName().lastIndexOf("_name") > 0) {
|
|
|
+ addMap.put(item.getFieldName(), Class.forName("java.lang.String"));
|
|
|
+ if (basCasesEntryMap.containsKey(item.getId())) {
|
|
|
+ addValMap.put(item.getFieldName(), basCasesEntryMap.get(item.getId()));
|
|
|
+ } else {
|
|
|
+ addValMap.put(item.getFieldName(), "");
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if (item.getFieldName().lastIndexOf("_num") > 0) {
|
|
|
+ addMap.put(item.getFieldName(), Class.forName("java.lang.Integer"));
|
|
|
+ Integer entryNum = retList
|
|
|
+ .stream()
|
|
|
+ .map(i -> ObjectUtil.getValueByKey(i, item.getFieldName()))
|
|
|
+ .filter(i -> i != null)
|
|
|
+ .map(i -> (Integer) i)
|
|
|
+ .reduce(0, Integer::sum);
|
|
|
+ addValMap.put(item.getFieldName(), entryNum);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ globleObj = new ClassUtil().dynamicClass(globleObj, addMap, addValMap);
|
|
|
+ retList.add(0, globleObj);
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }*/
|
|
|
+ unModifyMRDTO.setColumns(columns);
|
|
|
+ unModifyMRDTO.setData(retList);
|
|
|
+ return unModifyMRDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
}
|