Forráskód Böngészése

Merge remote-tracking branch 'origin/debug' into debug

gaodm 5 éve
szülő
commit
9568a8bb9f

+ 1 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -105,6 +105,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/console/resultStatisticsByDeptPage").permitAll()
                 .antMatchers("/console/homePageMRCount").permitAll()
                 .antMatchers("/console/qcCheckStatistics").permitAll()
+                .antMatchers("/console/unModifyMRStatistics").permitAll()
                 .antMatchers("/consoleByDept/entryCountGroupByCaseAndDept").permitAll()
                 .antMatchers("/consoleByDept/entryCountGroupByCaseAndDeptPage").permitAll()
                 .antMatchers("/consoleByDept/entryCountGroupByEntryAndDept").permitAll()

+ 1 - 0
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -149,6 +149,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/console/resultStatisticsByDeptPage", request)
                 || matchers("/console/homePageMRCount", request)
                 || matchers("/console/qcCheckStatistics", request)
+                || matchers("/console/unModifyMRStatistics", request)
                 || matchers("/consoleByDept/entryCountGroupByCaseAndDept", request)
                 || matchers("/consoleByDept/entryCountGroupByCaseAndDeptPage", request)
                 || matchers("/consoleByDept/entryCountGroupByEntryAndDept", request)

+ 20 - 0
src/main/java/com/diagbot/dto/ColumnDTO.java

@@ -0,0 +1,20 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/7/13 17:37
+ */
+@Getter
+@Setter
+public class ColumnDTO {
+    private Long id;
+    private String columnName;
+    private String fieldName;
+    private Integer orderNo;
+    private String fieldType;
+    private Integer isShow;
+}

+ 18 - 0
src/main/java/com/diagbot/dto/UnModifyMRDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/7/14 10:19
+ */
+@Getter
+@Setter
+public class UnModifyMRDTO {
+    private List<ColumnDTO> columns;
+    private List<Object> data;
+}

+ 19 - 0
src/main/java/com/diagbot/dto/UnModifyMRDetailDTO.java

@@ -0,0 +1,19 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/7/13 16:57
+ */
+@Getter
+@Setter
+public class UnModifyMRDetailDTO {
+    private String deptId;
+    private String deptName;
+    private Long casesEntryId;
+    private String casesEntryName;
+    private Integer casesEntryNum;
+}

+ 138 - 0
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -1,11 +1,13 @@
 package com.diagbot.facade;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.aggregate.AverageStatisticsAggregate;
 import com.diagbot.aggregate.MrStatisticsAggregate;
 import com.diagbot.aggregate.ResultStatisticsAggregate;
 import com.diagbot.dto.AverageStatisticsDTO;
 import com.diagbot.dto.AverageStatisticsFeeDTO;
+import com.diagbot.dto.ColumnDTO;
 import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.EntryNumDTO;
 import com.diagbot.dto.EntryNumGroupDTO;
@@ -17,14 +19,20 @@ import com.diagbot.dto.LevelStatisticsTZDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultPercentDTO;
 import com.diagbot.dto.QcResultShortDTO;
+import com.diagbot.dto.UnModifyMRDTO;
+import com.diagbot.dto.UnModifyMRDetailDTO;
+import com.diagbot.entity.SysHospitalSet;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.util.ClassUtil;
+import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.EntryStatisticsVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterUnModifyMRVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.google.common.collect.Lists;
@@ -35,6 +43,7 @@ import org.springframework.stereotype.Component;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -65,6 +74,8 @@ public class ConsoleFacade {
     private HomePageFacade homePageFacade;
     @Autowired
     private BehospitalInfoFacade behospitalInfoFacade;
+    @Autowired
+    private SysHospitalSetFacade sysHospitalSetFacade;
 
     //region-----------------------聚合接口开始-------------------------------
 
@@ -961,4 +972,131 @@ public class ConsoleFacade {
         item.setImproveToFullPercentStr(improveToFullPercentStr);
         return item;
     }
+
+    /**
+     * 未整改病历统计
+     *
+     * @param filterUnModifyMRVO
+     * @return
+     */
+    public UnModifyMRDTO unModifyMRStatistics(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_cx");
+        SysHospitalSet hospitalSet = sysHospitalSetFacade.getOne(hospitalSetQueryWrapper);
+        if (hospitalSet == null || StringUtil.isBlank(hospitalSet.getValue())) {
+            return null;
+        }
+
+        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("deptId");
+        columnDeptId.setColumnName("科室编码");
+        columnDeptId.setIsShow(1);
+        columns.add(columnDeptId);
+        orderNo++;
+        ColumnDTO columnDeptName = new ColumnDTO();
+        columnDeptName.setOrderNo(orderNo);
+        columnDeptName.setFieldName("deptName");
+        columnDeptName.setColumnName("科室名称");
+        columnDeptName.setIsShow(1);
+        columns.add(columnDeptName);
+        orderNo++;
+        List<Long> casesEntryIds = Lists.newArrayList();
+        for (String valueStr : columnSet) {
+            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++;
+            }
+        }
+
+        filterUnModifyMRVO.setCasesEntryIds(casesEntryIds);
+        List<UnModifyMRDetailDTO> records = behospitalInfoFacade.unModifyMRStatistics(filterUnModifyMRVO);
+        Map<String, List<UnModifyMRDetailDTO>> deptMap = EntityUtil.makeEntityListMap(records, "deptId");
+        Map<String, String> deptInfoMap = EntityUtil.makeMapWithKeyValue(records, "deptId", "deptName");
+        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("deptId", Class.forName("java.lang.String"));
+                addValMap.put("deptId", entry.getKey());
+                addMap.put("deptName", Class.forName("java.lang.String"));
+                addValMap.put("deptName", deptInfoMap.get(entry.getKey()));
+
+                for (ColumnDTO item : columns) {
+                    if (item.getFieldName().lastIndexOf("_id") > 0) {
+                        addMap.put(item.getFieldName(), Class.forName("java.lang.Long"));
+                        if (entry.getValue().containsKey(item.getId())) {
+                            addValMap.put(item.getFieldName(), entry.getValue().get(item.getId()).getCasesEntryId());
+                        } else {
+                            addValMap.put(item.getFieldName(), 0L);
+                        }
+                    } else if (item.getFieldName().lastIndexOf("_name") > 0) {
+                        addMap.put(item.getFieldName(), Class.forName("java.lang.String"));
+                        if (entry.getValue().containsKey(item.getId())) {
+                            addValMap.put(item.getFieldName(), entry.getValue().get(item.getId()).getCasesEntryName());
+                        } 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();
+        }
+
+        unModifyMRDTO.setColumns(columns);
+        unModifyMRDTO.setData(retList);
+        return unModifyMRDTO;
+    }
 }

+ 13 - 0
src/main/java/com/diagbot/facade/FilterFacade.java

@@ -10,6 +10,7 @@ import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterUnModifyMRVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import org.springframework.stereotype.Component;
@@ -265,4 +266,16 @@ public class FilterFacade {
         /*long interval = entryStatisticsVO.getEndDate().getTime() + 1000;
         entryStatisticsVO.setEndDate(new Date(Long.valueOf(interval)));*/
     }
+
+    /**
+     * 未整改病历统计入参拼接
+     *
+     * @param filterUnModifyMRVO
+     */
+    public void filterUnModifyMRVOSet(FilterUnModifyMRVO filterUnModifyMRVO) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        filterUnModifyMRVO.setHospitalId(hospitalId);
+        filterUnModifyMRVO.setUserId(Long.valueOf(userId));
+    }
 }

+ 10 - 0
src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java

@@ -13,6 +13,7 @@ import com.diagbot.dto.LevelStatisticsTZDTO;
 import com.diagbot.dto.MsgDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultShortDTO;
+import com.diagbot.dto.UnModifyMRDetailDTO;
 import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.vo.AnalyzeCodeVO;
 import com.diagbot.vo.AnalyzeVO;
@@ -23,6 +24,7 @@ import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterUnModifyMRVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.diagbot.vo.TaskVO;
@@ -327,4 +329,12 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @return
      */
     public List<ExportExcelDTO> qcResultShortPageExport(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+
+    /**
+     * 未整改病历统计
+     *
+     * @param filterUnModifyMRVO
+     * @return
+     */
+    public List<UnModifyMRDetailDTO> unModifyMRStatistics(FilterUnModifyMRVO filterUnModifyMRVO);
 }

+ 10 - 0
src/main/java/com/diagbot/service/BehospitalInfoService.java

@@ -13,6 +13,7 @@ import com.diagbot.dto.LevelStatisticsTZDTO;
 import com.diagbot.dto.MsgDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultShortDTO;
+import com.diagbot.dto.UnModifyMRDetailDTO;
 import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.vo.AnalyzeCodeVO;
 import com.diagbot.vo.AnalyzeVO;
@@ -23,6 +24,7 @@ import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterUnModifyMRVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.diagbot.vo.TaskVO;
@@ -320,4 +322,12 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @return
      */
     public List<ExportExcelDTO> qcResultShortPageExport(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+
+    /**
+     * 未整改病历统计
+     *
+     * @param filterUnModifyMRVO
+     * @return
+     */
+    public List<UnModifyMRDetailDTO> unModifyMRStatistics(FilterUnModifyMRVO filterUnModifyMRVO);
 }

+ 12 - 0
src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java

@@ -13,6 +13,7 @@ import com.diagbot.dto.LevelStatisticsTZDTO;
 import com.diagbot.dto.MsgDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultShortDTO;
+import com.diagbot.dto.UnModifyMRDetailDTO;
 import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.mapper.BehospitalInfoMapper;
 import com.diagbot.service.BehospitalInfoService;
@@ -25,6 +26,7 @@ import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterUnModifyMRVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.diagbot.vo.TaskVO;
@@ -436,4 +438,14 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     public List<ExportExcelDTO> qcResultShortPageExport(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
         return baseMapper.qcResultShortPageExport(qcResultShortPageVO);
     }
+
+    /**
+     * 未整改病历统计
+     *
+     * @param filterUnModifyMRVO
+     * @return
+     */
+    public List<UnModifyMRDetailDTO> unModifyMRStatistics(FilterUnModifyMRVO filterUnModifyMRVO){
+        return baseMapper.unModifyMRStatistics(filterUnModifyMRVO);
+    }
 }

+ 57 - 0
src/main/java/com/diagbot/util/ClassUtil.java

@@ -0,0 +1,57 @@
+package com.diagbot.util;
+
+import java.beans.BeanInfo;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/7/13 16:56
+ */
+public class ClassUtil {
+    /**
+     * @param object    旧的对象带值
+     * @param addMap    动态需要添加的属性和属性类型
+     * @param addValMap 动态需要添加的属性和属性值
+     * @return 新的对象
+     * @throws Exception
+     */
+    public Object dynamicClass(Object object, HashMap addMap, HashMap addValMap) throws Exception {
+        HashMap returnMap = new HashMap();
+        HashMap typeMap = new HashMap();
+
+
+        Class<?> type = object.getClass();
+        BeanInfo beanInfo = Introspector.getBeanInfo(type);
+        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
+        for (int i = 0; i < propertyDescriptors.length; i++) {
+            PropertyDescriptor descriptor = propertyDescriptors[i];
+            String propertyName = descriptor.getName();
+            if (!propertyName.equals("class")) {
+                Method readMethod = descriptor.getReadMethod();
+                Object result = readMethod.invoke(object);
+                //可以判断为 NULL不赋值
+                returnMap.put(propertyName, result);
+                typeMap.put(propertyName, descriptor.getPropertyType());
+            }
+        }
+
+        returnMap.putAll(addValMap);
+        typeMap.putAll(addMap);
+        //map转换成实体对象
+        DynamicBean bean = new DynamicBean(typeMap);
+        //赋值
+        Set keys = typeMap.keySet();
+        for (Iterator it = keys.iterator(); it.hasNext(); ) {
+            String key = (String) it.next();
+            bean.setValue(key, returnMap.get(key));
+        }
+        Object obj = bean.getObject();
+        return obj;
+    }
+}

+ 70 - 0
src/main/java/com/diagbot/util/DynamicBean.java

@@ -0,0 +1,70 @@
+package com.diagbot.util;
+
+import org.springframework.cglib.beans.BeanMap;
+import org.springframework.cglib.beans.BeanGenerator;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/7/13 16:55
+ */
+public class DynamicBean {
+    private Object object = null; //动态生成的类
+    private BeanMap beanMap = null; //存放属性名称以及属性的类型
+
+    public DynamicBean() {
+        super();
+    }
+
+    public DynamicBean(Map propertyMap) {
+        this.object = generateBean(propertyMap);
+        this.beanMap = BeanMap.create(this.object);
+    }
+
+    /**
+     * @param propertyMap
+     * @return
+     */
+    private Object generateBean(Map propertyMap) {
+        BeanGenerator generator = new BeanGenerator();
+        Set keySet = propertyMap.keySet();
+        for (Iterator i = keySet.iterator(); i.hasNext(); ) {
+            String key = (String) i.next();
+            generator.addProperty(key, (Class) propertyMap.get(key));
+        }
+        return generator.create();
+    }
+
+    /**
+     * 给bean属性赋值
+     *
+     * @param property 属性名
+     * @param value    值
+     */
+    public void setValue(Object property, Object value) {
+        beanMap.put(property, value);
+    }
+
+    /**
+     * 通过属性名得到属性值
+     *
+     * @param property 属性名
+     * @return 值
+     */
+    public Object getValue(String property) {
+        return beanMap.get(property);
+    }
+
+    /**
+     * 得到该实体bean对象
+     *
+     * @return
+     */
+    public Object getObject() {
+        return this.object;
+    }
+}

+ 59 - 0
src/main/java/com/diagbot/vo/FilterUnModifyMRVO.java

@@ -0,0 +1,59 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/7/13 17:06
+ */
+@Getter
+@Setter
+public class FilterUnModifyMRVO {
+    /**
+     * 起始时间
+     */
+    @NotNull(message = "请输入起始时间")
+    private Date startDate;
+    /**
+     * 结束时间
+     */
+    @NotNull(message = "请输入结束时间")
+    private Date endDate;
+    /**
+     * 医院id
+     */
+    @ApiModelProperty(hidden = true)
+    private String hospitalId;
+    /**
+     * 医生id
+     */
+    @ApiModelProperty(hidden = true)
+    private Long userId;
+    /**
+     * 关键条目id
+     */
+    @ApiModelProperty(hidden = true)
+    private List<Long> casesEntryIds;
+
+    /**
+     * 科室名称
+     */
+    private String name;
+
+    /**
+     * 排序(升序)
+     */
+    private String asc;
+
+    /**
+     * 排序(降序)
+     */
+    private String desc;
+}

+ 20 - 0
src/main/java/com/diagbot/web/ConsoleController.java

@@ -15,11 +15,13 @@ import com.diagbot.dto.LevelStatisticsTZDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultShortDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.UnModifyMRDTO;
 import com.diagbot.facade.ConsoleFacade;
 import com.diagbot.vo.EntryStatisticsVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterUnModifyMRVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import io.swagger.annotations.Api;
@@ -548,4 +550,22 @@ public class ConsoleController {
     public RespDTO<List<HomePageImproveDTO>> qcCheckStatistics(@RequestBody @Valid FilterOrderVO filterOrderVO) {
         return RespDTO.onSuc(consoleFacade.qcCheckStatistics(filterOrderVO));
     }
+
+    /**
+     * 未整改病历统计
+     *
+     * @param filterUnModifyMRVO
+     * @return
+     */
+    @ApiOperation(value = "未整改病历统计[by:zhaops]",
+            notes = "name: 科室名称 <br>" +
+                    "asc: 排序(升序) <br>" +
+                    "desc:排序(降序) <br>" +
+                    "startDate: 起始时间 <br>" +
+                    "endDate: 截止时间 <br>")
+    @PostMapping("/unModifyMRStatistics")
+    @SysLogger("unModifyMRStatistics")
+    public RespDTO<UnModifyMRDTO> unModifyMRStatistics(@RequestBody @Valid FilterUnModifyMRVO filterUnModifyMRVO) {
+        return RespDTO.onSuc(consoleFacade.unModifyMRStatistics(filterUnModifyMRVO));
+    }
 }

+ 50 - 0
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -5088,4 +5088,54 @@
         f1.behDeptId = f2.behDeptId
         AND f1.behDeptName = f2.behDeptName
     </select>
+
+    <!-- 未整改病历统计-->
+    <select id="unModifyMRStatistics" resultType="com.diagbot.dto.UnModifyMRDetailDTO" parameterType="com.diagbot.vo.FilterUnModifyMRVO">
+        SELECT
+        a.beh_dept_id AS deptId,
+        a.beh_dept_name AS deptName,
+        d.id AS casesEntryId,
+        d.NAME AS casesEntryName,
+        count(*) AS casesEntryNum
+        FROM
+        med_behospital_info a,
+        med_qcresult_info b,
+        med_qcresult_detail c,
+        qc_cases_entry d
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND d.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.hospital_id = c.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND a.behospital_code = c.behospital_code
+        AND c.cases_entry_id = d.id
+        AND a.qc_type_id != 0
+        AND a.is_placefile = '1'
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null">
+            <![CDATA[ AND a.leave_hospital_date >= #{startDate}]]>
+        </if>
+        <if test="endDate != null">
+            <![CDATA[ AND a.leave_hospital_date <= #{endDate}]]>
+        </if>
+        <if test="name != null and name != ''">
+            AND a.beh_dept_name like CONCAT('%', #{name}, '%')
+        </if>
+        <if test="casesEntryIds != null and casesEntryIds.size()>0">
+            AND c.cases_entry_id IN
+            <foreach collection="casesEntryIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name,
+        c.cases_entry_id,
+        d.NAME
+    </select>
 </mapper>