瀏覽代碼

Merge remote-tracking branch 'origin/dev/20200513end_1.2.0' into dev/20200513end_1.2.0

zhaops 5 年之前
父節點
當前提交
e6ab146f56
共有 34 個文件被更改,包括 579 次插入47 次删除
  1. 7 1
      doc/003.20200515第3期/qc_init.sql
  2. 1 0
      src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  3. 1 0
      src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  4. 23 0
      src/main/java/com/diagbot/dto/AnalyzeRunDTO.java
  5. 2 0
      src/main/java/com/diagbot/dto/MsgDTO.java
  6. 4 0
      src/main/java/com/diagbot/entity/BasDeptInfo.java
  7. 3 0
      src/main/java/com/diagbot/entity/BehospitalInfo.java
  8. 27 24
      src/main/java/com/diagbot/entity/DoctorAdvice.java
  9. 3 0
      src/main/java/com/diagbot/entity/HomeDiagnoseInfo.java
  10. 3 0
      src/main/java/com/diagbot/entity/HomeOperationInfo.java
  11. 3 0
      src/main/java/com/diagbot/entity/HomePage.java
  12. 4 0
      src/main/java/com/diagbot/entity/MedRecordType.java
  13. 3 0
      src/main/java/com/diagbot/entity/MedicalRecord.java
  14. 3 0
      src/main/java/com/diagbot/entity/MedicalRecordContent.java
  15. 28 0
      src/main/java/com/diagbot/entity/QcModelHospital.java
  16. 160 14
      src/main/java/com/diagbot/facade/BehospitalInfoFacade.java
  17. 39 0
      src/main/java/com/diagbot/facade/QcModelHospitalFacade.java
  18. 5 2
      src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java
  19. 1 0
      src/main/java/com/diagbot/mapper/QcCasesEntryMapper.java
  20. 16 0
      src/main/java/com/diagbot/mapper/QcModelHospitalMapper.java
  21. 5 1
      src/main/java/com/diagbot/service/BehospitalInfoService.java
  22. 16 0
      src/main/java/com/diagbot/service/QcModelHospitalService.java
  23. 9 2
      src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java
  24. 20 0
      src/main/java/com/diagbot/service/impl/QcModelHospitalServiceImpl.java
  25. 72 0
      src/main/java/com/diagbot/task/TASK_CX.java
  26. 20 0
      src/main/java/com/diagbot/vo/AnalyzeCodeVO.java
  27. 24 0
      src/main/java/com/diagbot/vo/AnalyzeRunVO.java
  28. 2 0
      src/main/java/com/diagbot/vo/AnalyzeVO.java
  29. 17 0
      src/main/java/com/diagbot/vo/TaskVO.java
  30. 17 1
      src/main/java/com/diagbot/web/BehospitalInfoController.java
  31. 22 0
      src/main/resources/mapper/BehospitalInfoMapper.xml
  32. 3 0
      src/main/resources/mapper/QcCasesEntryMapper.xml
  33. 14 0
      src/main/resources/mapper/QcModelHospitalMapper.xml
  34. 2 2
      src/test/java/com/diagbot/CodeGeneration.java

File diff suppressed because it is too large
+ 7 - 1
doc/003.20200515第3期/qc_init.sql


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

@@ -47,6 +47,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/qc/behospitalInfo/execule").permitAll()
                 .antMatchers("/qc/behospitalInfo/analyze_rpc").permitAll()
                 .antMatchers("/qc/behospitalInfo/analyze_api").permitAll()
+                .antMatchers("/qc/behospitalInfo/analyze_run").permitAll()
                 .antMatchers("/qc/module/getById").permitAll()
                 .antMatchers("/qc/module/getModuleMap").permitAll()
                 .antMatchers("/qc/cases/getQcCases").permitAll()

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

@@ -90,6 +90,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/qc/behospitalInfo/execule", request)
                 || matchers("/qc/behospitalInfo/analyze_rpc", request)
                 || matchers("/qc/behospitalInfo/analyze_api", request)
+                || matchers("/qc/behospitalInfo/analyze_run", request)
                 || matchers("/qc/module/getById", request)
                 || matchers("/qc/module/getModuleMap", request)
                 || matchers("/qc/cases/getQcCases", request)

+ 23 - 0
src/main/java/com/diagbot/dto/AnalyzeRunDTO.java

@@ -0,0 +1,23 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/4/15 12:24
+ */
+@Getter
+@Setter
+public class AnalyzeRunDTO {
+    // //得分
+    // private BigDecimal scoreRes;
+    // //等级
+    // private String level;
+    // 缺陷条目
+    private List<MsgDTO> msgDTOList = new ArrayList<>();
+}

+ 2 - 0
src/main/java/com/diagbot/dto/MsgDTO.java

@@ -22,6 +22,8 @@ public class MsgDTO {
     //提示信息
     private String msg;
     //提示信息
+    private String code;
+    //提示信息
     private String info;
     //标准提示信息
     private String standardMsg;

+ 4 - 0
src/main/java/com/diagbot/entity/BasDeptInfo.java

@@ -1,5 +1,8 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
 import java.time.LocalDateTime;
 import java.io.Serializable;
 
@@ -18,6 +21,7 @@ public class BasDeptInfo implements Serializable {
     /**
      * 科室编码(HIS导入)
      */
+    @TableId(value = "dept_id",type = IdType.INPUT)
     private String deptId;
 
     /**

+ 3 - 0
src/main/java/com/diagbot/entity/BehospitalInfo.java

@@ -1,5 +1,7 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -23,6 +25,7 @@ public class BehospitalInfo implements Serializable {
     /**
      * 病人住院ID
      */
+    @TableId(value = "behospital_code",type = IdType.INPUT)
     private String behospitalCode;
 
     /**

+ 27 - 24
src/main/java/com/diagbot/entity/DoctorAdvice.java

@@ -1,5 +1,7 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -23,6 +25,7 @@ public class DoctorAdvice implements Serializable {
     /**
      * 病人医嘱ID
      */
+    @TableId(value = "doctor_advice_id",type = IdType.INPUT)
     private String doctorAdviceId;
 
     /**
@@ -140,28 +143,28 @@ public class DoctorAdvice implements Serializable {
      */
     private String doctorName;
 
-//    /**
-//     * 是否删除,N:未删除,Y:删除
-//     */
-//    private String isDeleted;
-//
-//    /**
-//     * 记录创建时间
-//     */
-//    private Date gmtCreate;
-//
-//    /**
-//     * 记录修改时间,如果时间是1970年则表示纪录未修改
-//     */
-//    private Date gmtModified;
-//
-//    /**
-//     * 创建人,0表示无创建人值
-//     */
-//    private String creator;
-//
-//    /**
-//     * 修改人,如果为0则表示纪录未修改
-//     */
-//    private String modifier;
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
 }

+ 3 - 0
src/main/java/com/diagbot/entity/HomeDiagnoseInfo.java

@@ -1,5 +1,7 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -23,6 +25,7 @@ public class HomeDiagnoseInfo implements Serializable {
     /**
      * 病案首页ID
      */
+    @TableId(value = "home_page_id",type = IdType.INPUT)
     private String homePageId;
 
     /**

+ 3 - 0
src/main/java/com/diagbot/entity/HomeOperationInfo.java

@@ -1,5 +1,7 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -23,6 +25,7 @@ public class HomeOperationInfo implements Serializable {
     /**
      * 病案首页ID
      */
+    @TableId(value = "home_page_id",type = IdType.INPUT)
     private String homePageId;
 
     /**

+ 3 - 0
src/main/java/com/diagbot/entity/HomePage.java

@@ -1,5 +1,7 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -23,6 +25,7 @@ public class HomePage implements Serializable {
     /**
      * 病案首页编号
      */
+    @TableId(value = "home_page_id",type = IdType.INPUT)
     private String homePageId;
 
     /**

+ 4 - 0
src/main/java/com/diagbot/entity/MedRecordType.java

@@ -1,5 +1,8 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
 import java.io.Serializable;
 
 /**
@@ -17,6 +20,7 @@ public class MedRecordType implements Serializable {
     /**
      * 类别ID
      */
+    @TableId(value = "type_id",type = IdType.INPUT)
     private String typeId;
 
     /**

+ 3 - 0
src/main/java/com/diagbot/entity/MedicalRecord.java

@@ -1,5 +1,7 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -20,6 +22,7 @@ public class MedicalRecord implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    @TableId(value = "rec_id",type = IdType.INPUT)
     private String recId;
 
     /**

+ 3 - 0
src/main/java/com/diagbot/entity/MedicalRecordContent.java

@@ -1,5 +1,7 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -24,6 +26,7 @@ public class MedicalRecordContent implements Serializable {
     /**
      * 病历ID
      */
+    @TableId(value = "rec_id",type = IdType.INPUT)
     private String recId;
 
     /**

+ 28 - 0
src/main/java/com/diagbot/entity/QcModelHospital.java

@@ -0,0 +1,28 @@
+package com.diagbot.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-13
+ */
+@Data
+public class QcModelHospital implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long hospitalId;
+
+    private String hospitalModelName;
+
+    private Long standModelId;
+
+    private String standModelName;
+
+}

+ 160 - 14
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -7,6 +7,7 @@ import com.diagbot.client.AuthServiceClient;
 import com.diagbot.client.QcServiceClient;
 import com.diagbot.dto.AlgorithmDTO;
 import com.diagbot.dto.AnalyzeDTO;
+import com.diagbot.dto.AnalyzeRunDTO;
 import com.diagbot.dto.BehosDTO;
 import com.diagbot.dto.BehospitalInfoDTO;
 import com.diagbot.dto.MsgApiDTO;
@@ -38,6 +39,8 @@ import com.diagbot.util.StringUtil;
 import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.AlgorithmVO;
 import com.diagbot.vo.AnalyzeApiVO;
+import com.diagbot.vo.AnalyzeCodeVO;
+import com.diagbot.vo.AnalyzeRunVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.GetDetailVO;
@@ -46,6 +49,7 @@ import com.diagbot.vo.QcResultAlgQueryVO;
 import com.diagbot.vo.QcResultAlgVO;
 import com.diagbot.vo.QueryVo;
 import com.diagbot.vo.RecordContentVO;
+import com.diagbot.vo.TaskVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
@@ -100,7 +104,15 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
     Boolean encryptFlag;
     @Autowired
     QcQuestionFacade qcQuestionFacade;
+    @Autowired
+    QcModelHospitalFacade qcModelHospitalFacade;
 
+    /**
+     * 分页
+     *
+     * @param behospitalPageVO
+     * @return
+     */
     public IPage<BehospitalInfoDTO> pageFac(BehospitalPageVO behospitalPageVO) {
         //入参验证
         //入院时间
@@ -132,6 +144,12 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         return res;
     }
 
+    /**
+     * 获取明细
+     *
+     * @param getDetailVO
+     * @return
+     */
     public Map<String, Object> getByBehospitalCode(GetDetailVO getDetailVO) {
         Map<String, Object> res = new HashMap<>(); // 返回结果
         Long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
@@ -192,18 +210,18 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         return res;
     }
 
-
-    public AnalyzeDTO analyze(AnalyzeVO analyzeVO) {
-        Long hospitalId = analyzeVO.getHospitalId();
-        if (!analyzeVO.getIsTask()) {
-            hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
-        }
-//        Long hospitalId = 1L; // 写死
-        analyzeVO.setHospitalId(hospitalId);
+    /**
+     * 处理数据(公共方法)
+     *
+     * @param hospitalId
+     * @param analyzeVO
+     * @return
+     */
+    public QueryVo dealCommonData(Long hospitalId, AnalyzeVO analyzeVO) {
         // 获取质控条目
         List<QcCasesEntryDTO> qcCasesEntryDTOList = qcCasesEntryFacade.getQcCasesEntry(analyzeVO);
         if(ListUtil.isEmpty(qcCasesEntryDTOList)){
-            throw new CommonException(CommonErrorCode.NOT_EXISTS, "该病历找不到质控条目!");
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "该病历无关联的质控条目!");
         }
 
         // 获取病历所有数据
@@ -254,7 +272,7 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
             );
 
             // 获取首页手术信息
-             homeOperationInfoList = homeOperationInfoFacade.list(new QueryWrapper<HomeOperationInfo>()
+            homeOperationInfoList = homeOperationInfoFacade.list(new QueryWrapper<HomeOperationInfo>()
                     .eq("is_deleted", IsDeleteEnum.N.getKey())
                     .eq("hospital_id", hospitalId)
                     .eq("home_page_id", homePage.getHomePageId())
@@ -297,6 +315,10 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
                 Arrays.asList("术后首次病程及谈话记录", "手术记录",
                         "术前讨论、术前小结", "手术知情同意书", "手术安全核查表"));
 
+        // 转科
+        addDataWithKey("转科", recMap, medrecVoList,
+                Arrays.asList("转入记录", "转出记录"));
+
         // 医嘱
         if (ListUtil.isNotEmpty(doctorAdviceList)) {
             addDataWithKeyConvert("医嘱信息", doctorAdviceList, medrecVoList,
@@ -310,7 +332,25 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         }
 
         queryVo.setMedrec(medrecVoList);
+        return queryVo;
+    }
 
+    /**
+     * 评分-终末质控
+     *
+     * @param analyzeVO
+     * @return
+     */
+    public AnalyzeDTO analyze(AnalyzeVO analyzeVO) {
+        Long hospitalId = analyzeVO.getHospitalId();
+        if (!analyzeVO.getIsTask()) {
+            hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
+        }
+//        Long hospitalId = 1L; // 写死
+        analyzeVO.setHospitalId(hospitalId);
+
+        // 处理公共数据
+        QueryVo queryVo = dealCommonData(hospitalId, analyzeVO);
         //  调用质控接口
         Response<OutputInfo> response = qcServiceClient.extract(queryVo);
         if (response == null || response.getData() == null) {
@@ -330,9 +370,13 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
                 codeToInfoMap.put(key, mapInfo.get("info"));
             }
         }
-        qcResultAlgQueryVO.setCodeList(codeList);
-        qcResultAlgQueryVO.setHospitalId(hospitalId);
-        List<QcResultAlgVO> qcResultAlgVOList = qcCasesEntryFacade.getQcResultAlgVO(qcResultAlgQueryVO);
+        // 判断code是否为空
+        List<QcResultAlgVO> qcResultAlgVOList = new ArrayList<>();
+        if (ListUtil.isNotEmpty(codeList)) {
+            qcResultAlgQueryVO.setCodeList(codeList);
+            qcResultAlgQueryVO.setHospitalId(hospitalId);
+            qcResultAlgVOList = qcCasesEntryFacade.getQcResultAlgVO(qcResultAlgQueryVO);
+        }
 
         // 对info赋值
         for(QcResultAlgVO bean : qcResultAlgVOList) {
@@ -614,7 +658,8 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
      * 执行未评分的病历
      */
     public void execute() {
-        List<BehospitalInfo> behospitalInfoList = getNoGrade();
+        TaskVO taskVO = new TaskVO();
+        List<BehospitalInfo> behospitalInfoList = getNoGrade(taskVO);
         for (BehospitalInfo bean : behospitalInfoList) {
             AnalyzeVO analyzeVO = new AnalyzeVO();
             analyzeVO.setIsTask(true);
@@ -641,6 +686,23 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
     }
 
 
+    /**
+     * 对出院日期之前3天的未评分的病历进行评分
+     */
+    public void execute2() {
+        TaskVO taskVO = new TaskVO();
+        Date date = DateUtil.addDay(DateUtil.now(), -3);
+        taskVO.setLeaveDate(date);
+        List<BehospitalInfo> behospitalInfoList = getNoGrade(taskVO);
+        for (BehospitalInfo bean : behospitalInfoList) {
+            AnalyzeVO analyzeVO = new AnalyzeVO();
+            analyzeVO.setIsTask(true);
+            analyzeVO.setHospitalId(bean.getHospitalId());
+            analyzeVO.setBehospitalCode(bean.getBehospitalCode());
+            authServiceClient.analyze_rpc(analyzeVO);
+        }
+    }
+
     /**
      * 评分api
      *
@@ -775,4 +837,88 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         return res;
     }
 
+    /**
+     * 评分-运行质控
+     *
+     * @param analyzeRunVO
+     * @return
+     */
+    public AnalyzeRunDTO analyzeRun(AnalyzeRunVO analyzeRunVO) {
+        AnalyzeVO analyzeVO = new AnalyzeVO();
+        BeanUtil.copyProperties(analyzeRunVO, analyzeVO);
+        Long hospitalId = analyzeVO.getHospitalId();
+
+        // 处理公共数据
+        QueryVo queryVo = dealCommonData(hospitalId, analyzeVO);
+        //  调用质控接口
+        Response<OutputInfo> response = qcServiceClient.extract(queryVo);
+        if (response == null || response.getData() == null) {
+            throw new CommonException(CommonErrorCode.RPC_ERROR, "远程质控接口没有返回数据!");
+        }
+        OutputInfo outputInfo = response.getData();
+        //根据质控结果获取质控条目
+        // QcResultAlgQueryVO qcResultAlgQueryVO = new QcResultAlgQueryVO();
+        List<String> codeList = new ArrayList<>();
+        // code和info的映射map
+        Map<String, String> codeToInfoMap = new LinkedHashMap<>();
+        Map<String, Map<String, String>> codeMap = outputInfo.getResult();
+        for (String key : codeMap.keySet()) {
+            codeList.add(key);
+            Map<String, String> mapInfo = codeMap.get(key);
+            if (mapInfo != null && StringUtil.isNotBlank(mapInfo.get("info"))) {
+                codeToInfoMap.put(key, mapInfo.get("info"));
+            }
+        }
+        // List<QcResultAlgVO> qcResultAlgVOList = new ArrayList<>();
+        // if (ListUtil.isNotEmpty(codeList)) {
+        //     qcResultAlgQueryVO.setCodeList(codeList);
+        //     qcResultAlgQueryVO.setHospitalId(hospitalId);
+        //     qcResultAlgVOList = qcCasesEntryFacade.getQcResultAlgVO(qcResultAlgQueryVO);
+        // }
+        //
+        // // 评分
+        // AlgorithmVO algorithmVO = new AlgorithmVO();
+        // algorithmVO.setType(0);
+        // algorithmVO.setQcResultAlgVOList(qcResultAlgVOList);
+        // AlgorithmDTO algorithmDTO = algorithmFacade.getAlgorithmRes(algorithmVO);
+
+        //保存
+        // Map<String, Object> pageMap = outputInfo.getPageData();
+        // String pageData = JSON.toJSONString(pageMap);
+        // 获取菜单信息
+        // List<QcModeDTO> qcModeDTOList = qcModeFacade.getMenu(pageMap);
+        // String menuData = JSON.toJSONString(qcModeDTOList);
+
+        // 运行质控不保存评分结果信息
+        // Date date = qcresultInfoFacade.saveQcResult(algorithmDTO, algorithmVO, analyzeVO, pageData, menuData, analyzeVO.getIsTask());
+
+        // 返回缺陷提示信息
+        List<MsgDTO> msgDTOList = new ArrayList<>();
+        if (ListUtil.isNotEmpty(codeList)) {
+            AnalyzeCodeVO analyzeCodeVO = new AnalyzeCodeVO();
+            analyzeCodeVO.setCodeList(codeList);
+            analyzeCodeVO.setHospitalId(hospitalId);
+            analyzeCodeVO.setModeId(analyzeRunVO.getModeId());
+
+            // 获取缺陷条目信息
+            msgDTOList = getMsgByEntryCode(analyzeCodeVO);
+            // 设置info信息
+            if (codeToInfoMap != null && !codeToInfoMap.isEmpty()) {
+                for (MsgDTO msgDTO : msgDTOList) {
+                    String info = codeToInfoMap.get(msgDTO.getCode());
+                    if (StringUtil.isNotBlank(info)) {
+                        msgDTO.setInfo(info);
+                    }
+                }
+            }
+        }
+
+        //返回参数组装
+        AnalyzeRunDTO analyzeRunDTO = new AnalyzeRunDTO();
+        // analyzeRunDTO.setScoreRes(algorithmDTO.getScore());
+        // analyzeRunDTO.setLevel(algorithmDTO.getLevel());
+        analyzeRunDTO.setMsgDTOList(msgDTOList);
+        return analyzeRunDTO;
+    }
+
 }

+ 39 - 0
src/main/java/com/diagbot/facade/QcModelHospitalFacade.java

@@ -0,0 +1,39 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.QcModelHospital;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.QcModelHospitalServiceImpl;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/4/12 11:39
+ */
+@Component
+public class QcModelHospitalFacade extends QcModelHospitalServiceImpl {
+
+    /**
+     * 获取医院对应的模块信息
+     */
+    @Cacheable(value = "cache", key = "'qcHosModel'")
+    public Map<String, QcModelHospital> getHospitalModel() {
+        Map<String, QcModelHospital> hospitalModelMap = new LinkedHashMap<>();
+        List<QcModelHospital> basHospitalInfoList = this.list(new QueryWrapper<QcModelHospital>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .isNotNull("stand_model_id")
+                .isNotNull("stand_model_name")
+        );
+        hospitalModelMap = basHospitalInfoList.stream()
+                .collect(Collectors.toMap(r -> r.getHospitalId() + "##" + r.getHospitalModelName(), r -> r));
+        return hospitalModelMap;
+    }
+
+}

+ 5 - 2
src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java

@@ -8,6 +8,7 @@ import com.diagbot.dto.LevelStatisticsDTO;
 import com.diagbot.dto.MsgDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.entity.BehospitalInfo;
+import com.diagbot.vo.AnalyzeCodeVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.FilterOrderByDeptVO;
@@ -17,6 +18,7 @@ import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.HomePageFilterVO;
 import org.apache.ibatis.annotations.Param;
+import com.diagbot.vo.TaskVO;
 
 import java.util.List;
 
@@ -34,6 +36,8 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
 
     public List<MsgDTO> getMsg(AnalyzeVO analyzeVO);
 
+    public List<MsgDTO> getMsgByEntryCode(AnalyzeCodeVO analyzeCodeVO);
+
     /**
      * 缺陷排行列表统计
      *
@@ -74,8 +78,7 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      */
     public int getTotleResultNum(FilterVO filterVO);
 
-
-    public List<BehospitalInfo> getNoGrade();
+    public List<BehospitalInfo> getNoGrade(TaskVO taskVO);
 
     IPage<BehospitalInfoDTO> getPageByDept(BehospitalPageVO behospitalPageVO);
 

+ 1 - 0
src/main/java/com/diagbot/mapper/QcCasesEntryMapper.java

@@ -18,6 +18,7 @@ import java.util.List;
  * @since 2020-04-13
  */
 public interface QcCasesEntryMapper extends BaseMapper<QcCasesEntry> {
+
     List<QcCasesEntryDTO> getQcCasesEntry(AnalyzeVO analyzeVO);
 
     List<QcResultAlgVO> getQcResultAlgVO(QcResultAlgQueryVO qcResultAlgQueryVO);

+ 16 - 0
src/main/java/com/diagbot/mapper/QcModelHospitalMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.QcModelHospital;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-13
+ */
+public interface QcModelHospitalMapper extends BaseMapper<QcModelHospital> {
+
+}

+ 5 - 1
src/main/java/com/diagbot/service/BehospitalInfoService.java

@@ -8,6 +8,7 @@ import com.diagbot.dto.LevelStatisticsDTO;
 import com.diagbot.dto.MsgDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.entity.BehospitalInfo;
+import com.diagbot.vo.AnalyzeCodeVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.FilterOrderByDeptVO;
@@ -17,6 +18,7 @@ import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.HomePageFilterVO;
 import org.apache.ibatis.annotations.Param;
+import com.diagbot.vo.TaskVO;
 
 import java.util.List;
 
@@ -34,6 +36,8 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
 
     public List<MsgDTO> getMsg(AnalyzeVO analyzeVO);
 
+    public List<MsgDTO> getMsgByEntryCode(AnalyzeCodeVO analyzeCodeVO);
+
     /**
      * 缺陷排行列表统计
      *
@@ -75,7 +79,7 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
     public int getTotleResultNum(FilterVO filterVO);
 
 
-    public List<BehospitalInfo> getNoGrade();
+    public List<BehospitalInfo> getNoGrade(TaskVO taskVO);
 
     IPage<BehospitalInfoDTO> getPageByDept(BehospitalPageVO behospitalPageVO);
 

+ 16 - 0
src/main/java/com/diagbot/service/QcModelHospitalService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.QcModelHospital;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-13
+ */
+public interface QcModelHospitalService extends IService<QcModelHospital> {
+
+}

+ 9 - 2
src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java

@@ -10,6 +10,7 @@ import com.diagbot.dto.NumDTO;
 import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.mapper.BehospitalInfoMapper;
 import com.diagbot.service.BehospitalInfoService;
+import com.diagbot.vo.AnalyzeCodeVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.FilterOrderByDeptVO;
@@ -19,6 +20,7 @@ import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.HomePageFilterVO;
 import org.apache.ibatis.annotations.Param;
+import com.diagbot.vo.TaskVO;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -44,6 +46,11 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
         return baseMapper.getMsg(analyzeVO);
     }
 
+    @Override
+    public List<MsgDTO> getMsgByEntryCode(AnalyzeCodeVO analyzeCodeVO) {
+        return baseMapper.getMsgByEntryCode(analyzeCodeVO);
+    }
+
     /**
      * 缺陷排行列表统计
      *
@@ -100,8 +107,8 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     }
 
     @Override
-    public List<BehospitalInfo> getNoGrade() {
-        return baseMapper.getNoGrade();
+    public List<BehospitalInfo> getNoGrade(TaskVO taskVO) {
+        return baseMapper.getNoGrade(taskVO);
     }
 
     @Override

+ 20 - 0
src/main/java/com/diagbot/service/impl/QcModelHospitalServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.QcModelHospital;
+import com.diagbot.mapper.QcModelHospitalMapper;
+import com.diagbot.service.QcModelHospitalService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-13
+ */
+@Service
+public class QcModelHospitalServiceImpl extends ServiceImpl<QcModelHospitalMapper, QcModelHospital> implements QcModelHospitalService {
+
+}

+ 72 - 0
src/main/java/com/diagbot/task/TASK_CX.java

@@ -0,0 +1,72 @@
+package com.diagbot.task;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.SysTaskCron;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.facade.BehospitalInfoFacade;
+import com.diagbot.facade.SysTaskCronFacade;
+import com.diagbot.util.StringUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.Trigger;
+import org.springframework.scheduling.TriggerContext;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.SchedulingConfigurer;
+import org.springframework.scheduling.config.ScheduledTaskRegistrar;
+import org.springframework.scheduling.support.CronTrigger;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/4/15 17:45
+ */
+@Configuration      //1.主要用于标记配置类,兼备Component的效果。
+@EnableScheduling   // 2.开启定时任务
+@Slf4j
+public class TASK_CX implements SchedulingConfigurer {
+    @Autowired
+    private SysTaskCronFacade sysTaskCronFacade;
+
+    private SysTaskCron task = new SysTaskCron();
+
+    @Autowired
+    private BehospitalInfoFacade behospitalInfoFacade;
+
+    /**
+     * 执行定时任务.
+     */
+    @Override
+    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
+        taskRegistrar.addTriggerTask(new Runnable() {
+            @Override
+            public void run() {
+                //1.添加任务内容(Runnable)
+                if (null != task
+                        && task.getIsDeleted().equals(IsDeleteEnum.N.getKey())
+                        && task.getIsUsed().equals(1)) {
+                    log.info("执行动态定时任务: " + LocalDateTime.now().toLocalTime());
+                    behospitalInfoFacade.execute2();
+                }
+            }
+        }, new Trigger() {
+            @Override
+            public Date nextExecutionTime(TriggerContext triggerContext) {
+                //2.1 从数据库获取执行周期
+                task = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
+                        .eq("cron_code", "TASK_CX")
+                );
+                String cron = "0/5 * * * * ?";
+                //2.2 合法性校验.
+                if (null != task && StringUtil.isNotBlank(task.getCron())) {
+                    cron = task.getCron();
+                }
+                CronTrigger trigger = new CronTrigger(cron);
+                return trigger.nextExecutionTime(triggerContext);
+            }
+        });
+    }
+}

+ 20 - 0
src/main/java/com/diagbot/vo/AnalyzeCodeVO.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @description:
+ * @author: zhoutg
+ * @time: 2020/4/13 18:31
+ */
+@Data
+public class AnalyzeCodeVO {
+    // 条目编码
+    private List<String> codeList;
+    // 医院ID
+    private Long hospitalId;
+    // modeId
+    private Long modeId;
+}

+ 24 - 0
src/main/java/com/diagbot/vo/AnalyzeRunVO.java

@@ -0,0 +1,24 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @description:
+ * @author: zhoutg
+ * @time: 2020/4/13 18:31
+ */
+@Data
+public class AnalyzeRunVO {
+    // 病历id
+    @NotBlank(message = "behospitalCode不能为空")
+    private String behospitalCode;
+    // 医院ID
+    @NotNull(message = "hospitalId不能为空")
+    private Long hospitalId;
+    // 模块id
+    @NotNull(message = "modeId不能为空")
+    private Long modeId;
+}

+ 2 - 0
src/main/java/com/diagbot/vo/AnalyzeVO.java

@@ -16,4 +16,6 @@ public class AnalyzeVO {
     private Long hospitalId; //医院ID
     @ApiModelProperty(hidden = true)
     private Boolean isTask = false;
+    @ApiModelProperty(hidden = true)
+    private Long modeId;
 }

+ 17 - 0
src/main/java/com/diagbot/vo/TaskVO.java

@@ -0,0 +1,17 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/4/14 9:53
+ */
+@Data
+public class TaskVO {
+
+    // 出院时间过滤
+    private Date leaveDate;
+}

+ 17 - 1
src/main/java/com/diagbot/web/BehospitalInfoController.java

@@ -3,11 +3,13 @@ package com.diagbot.web;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.AnalyzeDTO;
+import com.diagbot.dto.AnalyzeRunDTO;
 import com.diagbot.dto.BehospitalInfoDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.BehospitalInfoFacade;
 import com.diagbot.facade.QcresultInfoFacade;
 import com.diagbot.vo.AnalyzeApiVO;
+import com.diagbot.vo.AnalyzeRunVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.GetDetailVO;
@@ -22,6 +24,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import javax.validation.Valid;
 import java.util.Map;
 
 /**
@@ -65,7 +68,6 @@ public class BehospitalInfoController {
         return RespDTO.onSuc(data);
     }
 
-
     @ApiOperation(value = "评分[by:zhoutg]",
             notes = "")
     @PostMapping("/analyze")
@@ -75,6 +77,20 @@ public class BehospitalInfoController {
         return RespDTO.onSuc(behospitalInfoFacade.analyze(analyzeVO));
     }
 
+    @ApiOperation(value = "评分-运行质控[by:zhoutg]",
+            notes = "    // 病历id\n" +
+                    "     String behospitalCode;\n" +
+                    "    // 医院ID\n" +
+                    "     Long hospitalId;\n" +
+                    "    // 模块id\n" +
+                    "     Long modeId;")
+    @PostMapping("/analyze_run")
+    @SysLogger("analyze_run")
+    @Transactional
+    public RespDTO<AnalyzeRunDTO> analyzeRun(@Valid @RequestBody AnalyzeRunVO analyzeRunVO) {
+        return RespDTO.onSuc(behospitalInfoFacade.analyzeRun(analyzeRunVO));
+    }
+
     @ApiOperation(value = "定时任务评分[by:zhoutg]",
             notes = "")
     @PostMapping("/analyze_rpc")

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

@@ -100,6 +100,25 @@
         order by b.order_no, a.order_no
     </select>
 
+    <select id="getMsgByEntryCode" resultType="com.diagbot.dto.MsgDTO">
+        SELECT  b.id model_id,b.`name` model_name,
+                d.score,d.msg,d.cases_entry_id,d.is_reject,
+                a.cases_id cases_id, a.name standard_msg,a.code
+        FROM `qc_cases_entry` a, qc_mode b, qc_cases_entry_hospital d
+        where a.is_deleted = 'N' and b.is_deleted = 'N' and d.is_deleted = 'N'
+        and a.mode_id = b.id
+        and a.id = d.cases_entry_id
+        and d.is_used = 1
+        and d.hospital_id = #{hospitalId}
+        and a.code in
+        <foreach collection="codeList" item="item" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+        <if test="modeId != null">
+            and a.mode_id = #{modeId}
+        </if>
+        order by b.order_no, a.order_no;
+    </select>
 
     <!-- 缺陷排行列表 -->
     <select id="resultStatistics"  parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.NumDTO">
@@ -386,6 +405,9 @@
             AND a.behospital_code = b.behospital_code
             )
          and a.qc_type_id != 0
+         <if test="leaveDate != null">
+             <![CDATA[ and a.leave_hospital_date < #{leaveDate}]]>
+         </if>
     </select>
 
     <!--质控评分(科室)分页-->

+ 3 - 0
src/main/resources/mapper/QcCasesEntryMapper.xml

@@ -46,6 +46,9 @@
         <if test="behospitalCode != null and behospitalCode != ''">
             AND t1.behospital_code =  #{behospitalCode}
         </if>
+        <if test="modeId != null">
+            AND t4.mode_id = #{modeId}
+        </if>
 	</select>
 
     <select id="getQcResultAlgVO" parameterType="com.diagbot.vo.QcResultAlgQueryVO" resultType="com.diagbot.vo.QcResultAlgVO">

+ 14 - 0
src/main/resources/mapper/QcModelHospitalMapper.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.QcModelHospitalMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.QcModelHospital">
+        <id column="id" property="id" />
+        <result column="hospital_id" property="hospitalId" />
+        <result column="hospital_model_name" property="hospitalModelName" />
+        <result column="stand_model_id" property="standModelId" />
+        <result column="stand_model_name" property="standModelName" />
+    </resultMap>
+
+</mapper>

+ 2 - 2
src/test/java/com/diagbot/CodeGeneration.java

@@ -33,7 +33,7 @@ public class CodeGeneration {
         gc.setEnableCache(false);// XML 二级缓存
         gc.setBaseResultMap(true);// XML ResultMap
         gc.setBaseColumnList(false);// XML columList
-        gc.setAuthor("gaodm");// 作者
+        gc.setAuthor("zhoutg");// 作者
 
         // 自定义文件命名,注意 %s 会自动填充表实体属性!
         gc.setControllerName("%sController");
@@ -56,7 +56,7 @@ public class CodeGeneration {
         StrategyConfig strategy = new StrategyConfig();
 //        strategy.setTablePrefix(new String[] { "med_" });// 此处可以修改为您的表前缀
         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude(new String[] { "med_qcresult_cases"}); // 需要生成的表
+        strategy.setInclude(new String[] { "qc_model_hospital"}); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);