Browse Source

Merge branch 'develop' into dev/mapping_20210824

gaodm 3 years ago
parent
commit
c68a5baa9b
22 changed files with 774 additions and 40 deletions
  1. 41 0
      doc/018.20210824诊断依据导出/med2021_init.sql
  2. 19 0
      src/main/java/com/diagbot/dto/DiagnoseRecordDTO.java
  3. 5 5
      src/main/java/com/diagbot/dto/ExportDiagnoseDTO.java
  4. 89 0
      src/main/java/com/diagbot/dto/KlDiagnoseRecordDTO.java
  5. 39 0
      src/main/java/com/diagbot/dto/KlDiagnoseRecordDetailDTO.java
  6. 118 0
      src/main/java/com/diagbot/entity/KlDiagnoseRecord.java
  7. 73 0
      src/main/java/com/diagbot/entity/KlDiagnoseRecordDetail.java
  8. 1 1
      src/main/java/com/diagbot/facade/KlConceptScaleFacade.java
  9. 39 7
      src/main/java/com/diagbot/facade/KlDiagnoseDetailFacade.java
  10. 110 20
      src/main/java/com/diagbot/facade/KlDiagnoseImportFacade.java
  11. 16 0
      src/main/java/com/diagbot/mapper/KlDiagnoseRecordDetailMapper.java
  12. 22 0
      src/main/java/com/diagbot/mapper/KlDiagnoseRecordMapper.java
  13. 16 0
      src/main/java/com/diagbot/service/KlDiagnoseRecordDetailService.java
  14. 21 0
      src/main/java/com/diagbot/service/KlDiagnoseRecordService.java
  15. 20 0
      src/main/java/com/diagbot/service/impl/KlDiagnoseRecordDetailServiceImpl.java
  16. 28 0
      src/main/java/com/diagbot/service/impl/KlDiagnoseRecordServiceImpl.java
  17. 3 0
      src/main/java/com/diagbot/vo/ImportDiagnoseResVO.java
  18. 7 5
      src/main/java/com/diagbot/vo/ImportDiagnoseVO.java
  19. 7 1
      src/main/java/com/diagbot/web/KlDiagnoseImportController.java
  20. 19 0
      src/main/resources/mapper/KlDiagnoseRecordDetailMapper.xml
  21. 80 0
      src/main/resources/mapper/KlDiagnoseRecordMapper.xml
  22. 1 1
      src/test/java/com/diagbot/CodeGeneration.java

+ 41 - 0
doc/018.20210824诊断依据导出/med2021_init.sql

@@ -0,0 +1,41 @@
+DROP TABLE IF EXISTS `kl_diagnose_record`;
+CREATE TABLE `kl_diagnose_record` (
+      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+      `is_deleted` char(1) NOT NULL DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
+      `gmt_create` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
+      `gmt_modified` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
+      `creator` varchar(20) NOT NULL DEFAULT '0' COMMENT '创建人,0表示无创建人值',
+      `modifier` varchar(20) NOT NULL DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
+      `diagnose_id` bigint(20) NOT NULL COMMENT '诊断依据主表id',
+      `type` varchar(255) NOT NULL DEFAULT '' COMMENT '类型',
+      `code` varchar(255) NOT NULL DEFAULT '' COMMENT '序号',
+      `rule` varchar(1024) NOT NULL DEFAULT '' COMMENT '规则',
+      `description` varchar(255) NOT NULL DEFAULT '' COMMENT '描述',
+      `eq_value` varchar(255) NOT NULL DEFAULT '' COMMENT '等于',
+      `max_value` varchar(255) NOT NULL DEFAULT '' COMMENT '最大值',
+      `max_operator` varchar(255) NOT NULL DEFAULT '' COMMENT '最大值符号',
+      `min_value` varchar(255) NOT NULL DEFAULT '' COMMENT '最小值',
+      `min_operator` varchar(255) NOT NULL DEFAULT '' COMMENT '最小值符号',
+      `unit` varchar(255) NOT NULL DEFAULT '' COMMENT '单位',
+      `order_no` int(11) NOT NULL DEFAULT '0' COMMENT '排序号',
+      `remark` varchar(300) NOT NULL DEFAULT '' COMMENT '备注',
+      PRIMARY KEY (`id`),
+      KEY `diagnose_id` (`diagnose_id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='诊断依据记录表';
+
+DROP TABLE IF EXISTS `kl_diagnose_record_detail`;
+CREATE TABLE `kl_diagnose_record_detail` (
+     `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+     `is_deleted` char(1) NOT NULL DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
+     `gmt_create` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
+     `gmt_modified` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
+     `creator` varchar(20) NOT NULL DEFAULT '0' COMMENT '创建人,0表示无创建人值',
+     `modifier` varchar(20) NOT NULL DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
+     `diagnose_record_id` bigint(20) NOT NULL COMMENT '诊断依据记录表id',
+     `concept_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '标准词',
+     `order_no` int(11) NOT NULL DEFAULT '0' COMMENT '排序号',
+     `remark` varchar(300) NOT NULL DEFAULT '' COMMENT '备注',
+     PRIMARY KEY (`id`),
+     KEY `diagnose_record_id` (`diagnose_record_id`) USING BTREE,
+     KEY `concept_id` (`concept_id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='诊断依据记录明细表';

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

@@ -0,0 +1,19 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @className: com.diagbot.dto-> DiagnoseRecordDTO
+ * @description: 校验过后,都是标准词的诊断依据记录
+ * @author: kongwz
+ * @createDate: 2021-08-26 14:01
+ * @version: 1.0
+ * @todo:
+ */
+@Data
+public class DiagnoseRecordDTO extends ExportDiagnoseDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private String diseaseName;
+}

+ 5 - 5
src/main/java/com/diagbot/dto/ExportDiagnoseDTO.java

@@ -29,16 +29,16 @@ public class ExportDiagnoseDTO implements Serializable {
     @Excel(name="最大值", width = 10, orderNum = "50")
     private String max;
     @Excel(name="最大值符号", width = 10, orderNum = "60")
-    private String unit;
+    private String maxSymbol;
     @Excel(name="最小值", width = 10, orderNum = "70")
     private String min;
     @Excel(name="最小值符号", width = 10, orderNum = "80")
-    private String maxSymbol;
-    @Excel(name="单位", width = 10, orderNum = "90")
     private String minSymbol;
-    @Excel(name="关联词", width = 30, orderNum = "35")
+    @Excel(name="单位", width = 10, orderNum = "90")
+    private String unit;
+    @Excel(name="关联词", width = 10, orderNum = "35")
     private String relation;
-    @Excel(name="校验", width = 50, orderNum = "33")
+    @Excel(name="校验", width = 10, orderNum = "33")
     private String check;
 
 }

+ 89 - 0
src/main/java/com/diagbot/dto/KlDiagnoseRecordDTO.java

@@ -0,0 +1,89 @@
+package com.diagbot.dto;
+
+import com.google.common.collect.Lists;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ * 诊断依据记录表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-08-24
+ */
+@Data
+public class KlDiagnoseRecordDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 诊断依据主表id
+     */
+    private Long diagnoseId;
+
+    /**
+     * 类型
+     */
+    private String type;
+
+    /**
+     * 序号
+     */
+    private String code;
+
+    /**
+     * 规则
+     */
+    private String rule;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+    /**
+     * 等于
+     */
+    private String eqValue;
+
+    /**
+     * 最大值
+     */
+    private String maxValue;
+
+    /**
+     * 最大值符号
+     */
+    private String maxOperator;
+
+    /**
+     * 最小值
+     */
+    private String minValue;
+
+    /**
+     * 最小值符号
+     */
+    private String minOperator;
+
+    /**
+     * 单位
+     */
+    private String unit;
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    // 导入记录明细
+    private List<KlDiagnoseRecordDetailDTO> recordDetailList = Lists.newArrayList();
+}

+ 39 - 0
src/main/java/com/diagbot/dto/KlDiagnoseRecordDetailDTO.java

@@ -0,0 +1,39 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 诊断依据记录明细表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-08-24
+ */
+@Data
+public class KlDiagnoseRecordDetailDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 诊断依据记录表id
+     */
+    private Long diagnoseRecordId;
+
+    /**
+     * 标准词
+     */
+    private Long conceptId;
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 118 - 0
src/main/java/com/diagbot/entity/KlDiagnoseRecord.java

@@ -0,0 +1,118 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 诊断依据记录表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-08-26
+ */
+@Data
+public class KlDiagnoseRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 诊断依据主表id
+     */
+    private Long diagnoseId;
+
+    /**
+     * 类型
+     */
+    private String type;
+
+    /**
+     * 序号
+     */
+    private String code;
+
+    /**
+     * 规则
+     */
+    private String rule;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+    /**
+     * 等于
+     */
+    private String eqValue;
+
+    /**
+     * 最大值
+     */
+    private String maxValue;
+
+    /**
+     * 最大值符号
+     */
+    private String maxOperator;
+
+    /**
+     * 最小值
+     */
+    private String minValue;
+
+    /**
+     * 最小值符号
+     */
+    private String minOperator;
+
+    /**
+     * 单位
+     */
+    private String unit;
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 73 - 0
src/main/java/com/diagbot/entity/KlDiagnoseRecordDetail.java

@@ -0,0 +1,73 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 诊断依据记录明细表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-08-24
+ */
+@Data
+public class KlDiagnoseRecordDetail implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 诊断依据记录表id
+     */
+    private Long diagnoseRecordId;
+
+    /**
+     * 标准词
+     */
+    private Long conceptId;
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 1 - 1
src/main/java/com/diagbot/facade/KlConceptScaleFacade.java

@@ -28,7 +28,7 @@ public class KlConceptScaleFacade extends KlConceptScaleServiceImpl {
         List<KlConceptScale> list = this.list(new QueryWrapper<KlConceptScale>()
                 .in("concept_id", klScaleDetailMenuVO.getConceptId())
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .orderByAsc("group_num", "order_no"));
+                .orderByAsc("text_type","group_num", "order_no"));
         List<KlScaleDetailWrapper> menuList = new ArrayList<>();
         menuList = BeanUtil.listCopyTo(list, KlScaleDetailWrapper.class);
         Map<Long, List<KlScaleDetailWrapper>> menuMap = EntityUtil.makeEntityListMap(menuList, "parentId");

+ 39 - 7
src/main/java/com/diagbot/facade/KlDiagnoseDetailFacade.java

@@ -1,6 +1,7 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.DiagnoseRecordDTO;
 import com.diagbot.dto.ExportDescDTO;
 import com.diagbot.dto.ExportDiagnoseDTO;
 import com.diagbot.dto.ExportDiagnoseNameDTO;
@@ -10,6 +11,7 @@ import com.diagbot.enums.CommonEnum;
 import com.diagbot.enums.DiagnoseLexiconTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.KlDiagnoseDetailService;
+import com.diagbot.service.KlDiagnoseRecordService;
 import com.diagbot.service.KlLibraryInfoService;
 import com.diagbot.util.*;
 import com.google.common.collect.Lists;
@@ -46,16 +48,34 @@ public class KlDiagnoseDetailFacade {
     @Qualifier("klDiagnoseDetailServiceImpl")
     private KlDiagnoseDetailService klDiagnoseDetailService;
 
+    @Autowired
+    @Qualifier("klDiagnoseRecordServiceImpl")
+    KlDiagnoseRecordService klDiagnoseRecordService;
+
     /**
-     * 导出诊断依据【初版】
+     * 导出诊断依据【旧诊断依据】,从原detail导出
      */
-    public void exportDiagnose(HttpServletResponse response) {
+    public void exportDiagnoseDetail(HttpServletResponse response) {
         // 获取全部数据、分组
-        List<KlDiagnoseDetail> klDiagnoseDetailList = klDiagnoseDetailService.list(new QueryWrapper<KlDiagnoseDetail>()
-//                .eq("dis_name", "急性化脓性扁桃体炎")
-                .eq("is_deleted", IsDeleteEnum.N.getKey()));
-        Map<String, List<KlDiagnoseDetail>> diagnoseDetailMap = EntityUtil.makeEntityListMap(klDiagnoseDetailList, "disName");
-        Map<String, List<ExportDiagnoseDTO>> diagnoseDetails = processDiagnoseDetail(diagnoseDetailMap);
+       List<KlDiagnoseDetail> klDiagnoseDetailList = klDiagnoseDetailService.list(new QueryWrapper<KlDiagnoseDetail>()
+               .eq("is_deleted", IsDeleteEnum.N.getKey()));
+       Map<String, List<KlDiagnoseDetail>> diagnoseDetailMap = EntityUtil.makeEntityListMap(klDiagnoseDetailList, "disName");
+       Map<String, List<ExportDiagnoseDTO>> diagnoseDetails = processDiagnoseDetail(diagnoseDetailMap);
+       exportDiagnoseCommon(response, diagnoseDetails);
+    }
+
+    /**
+     * 导出诊断依据【新诊断依据】,从记录导出
+     */
+    public void exportDiagnoseRecord(HttpServletResponse response) {
+        Map<String, List<ExportDiagnoseDTO>> diagnoseDetails = exportDiagnoseRecord();
+        exportDiagnoseCommon(response, diagnoseDetails);
+    }
+
+    /**
+     * 导出诊断依据【初版】
+     */
+    public void exportDiagnoseCommon(HttpServletResponse response, Map<String, List<ExportDiagnoseDTO>> diagnoseDetails) {
         List<ExportDiagnoseDTO> res = new ArrayList<>();
         for (String disName : diagnoseDetails.keySet()) {
             ExportDiagnoseDTO exportDiagnoseDTO = new ExportDiagnoseDTO();
@@ -101,6 +121,18 @@ public class KlDiagnoseDetailFacade {
         ExcelUtils.exportExcel(exportDto, "diagnose.xlsx", response);
     }
 
+    public Map<String, List<ExportDiagnoseDTO>> exportDiagnoseRecord() {
+        List<DiagnoseRecordDTO> diagnoseRecord = klDiagnoseRecordService.getDiagnoseRecord();
+        Map<String, List<DiagnoseRecordDTO>> diseaseRecordMap = EntityUtil.makeEntityListMap(diagnoseRecord, "diseaseName");
+        Map<String, List<ExportDiagnoseDTO>> diagnoseDetails = new LinkedHashMap<>();
+        diseaseRecordMap.forEach((x,y) -> diagnoseDetails.put(x,y.stream().map(z ->{
+            ExportDiagnoseDTO exportDiagnoseDTO = new ExportDiagnoseDTO();
+            BeanUtil.copyProperties(z,exportDiagnoseDTO);
+            return exportDiagnoseDTO;
+        }).collect(Collectors.toList())));
+        return diagnoseDetails;
+    }
+
 
     public Map<String, List<ExportDiagnoseDTO>> processDiagnoseDetail(Map<String, List<KlDiagnoseDetail>> diagnoseDetailMap) {
         Map<String, List<ExportDiagnoseDTO>> data = new LinkedHashMap<>();

+ 110 - 20
src/main/java/com/diagbot/facade/KlDiagnoseImportFacade.java

@@ -1,14 +1,21 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.KlDiagnoseRecordDTO;
+import com.diagbot.dto.KlDiagnoseRecordDetailDTO;
 import com.diagbot.entity.KlConcept;
 import com.diagbot.entity.KlDiagnose;
+import com.diagbot.entity.KlDiagnoseRecord;
+import com.diagbot.entity.KlDiagnoseRecordDetail;
 import com.diagbot.enums.CommonEnum;
 import com.diagbot.enums.DiagnoseLexiconTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.LexiconEnum;
 import com.diagbot.enums.LexiconExtEnum;
 import com.diagbot.service.KlConceptService;
+import com.diagbot.service.KlDiagnoseRecordDetailService;
+import com.diagbot.service.KlDiagnoseRecordService;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.CoreUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ExcelUtils;
@@ -32,7 +39,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 import org.springframework.web.multipart.MultipartFile;
-
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
@@ -55,6 +61,12 @@ public class KlDiagnoseImportFacade {
     private KlConceptService klConceptService;
     @Autowired
     KlDiagnoseFacade klDiagnoseFacade;
+    @Autowired
+    @Qualifier("klDiagnoseRecordServiceImpl")
+    KlDiagnoseRecordService klDiagnoseRecordService;
+    @Autowired
+    @Qualifier("klDiagnoseRecordDetailServiceImpl")
+    KlDiagnoseRecordDetailService klDiagnoseRecordDetailService;
 
     public Map<String, Object> importDiagnose(MultipartFile file, DiagnoseImportVO diagnoseImportVO) {
         long t1 = System.currentTimeMillis();
@@ -70,12 +82,20 @@ public class KlDiagnoseImportFacade {
         // 保存数据
         if (allFlag) {
             saveData(allData);
-            message.put("导入条数", allData.size() + "条");
-            // 如果有指定诊断,提示导入的诊断;如果全部导入,提示“所有诊断”
+            long sucCount = allData.stream().filter(r -> ListUtil.isNotEmpty(r.getImportDiagnoseVOList())).count();
+            long emptyCount = allData.stream().filter(r -> ListUtil.isEmpty(r.getImportDiagnoseVOList())).count();
+            message.put("总条数", allData.size() + "条");
+            if (sucCount != 0L) {
+                message.put("成功导入条数", sucCount + "条");
+            }
+            if (emptyCount != 0L) {
+                message.put("空诊断依据条数", emptyCount + "条");
+                List<String> disNameList = allData.stream().filter(r -> ListUtil.isEmpty(r.getImportDiagnoseVOList())).map(r -> r.getDiseaseName()).collect(Collectors.toList());
+                message.put("空诊断依据", StringUtils.join(disNameList, CommonEnum.splitSymbol.getName()));
+            }
+            // 如果有指定诊断,提示导入的诊断;
             if (ListUtil.isNotEmpty(diagnoseImportVO.getDiags())) {
                 message.put("导入诊断", allData.stream().map(r -> r.getDiseaseName()).collect(Collectors.joining(CommonEnum.splitSymbol.getName())));
-            } else {
-                message.put("导入诊断", "所有诊断");
             }
         }
         long t2 = System.currentTimeMillis();
@@ -152,6 +172,43 @@ public class KlDiagnoseImportFacade {
                 // 添加到正确数据列表
                 importDiagnoseResVO.setImportDiagnoseVOList(curData);
                 allData.add(importDiagnoseResVO);
+
+                // 存放记录和记录明细
+                List<ImportDiagnoseVO> importDiagnoseVOS = groupData.get(disName);
+                List<KlDiagnoseRecordDTO> klDiagnoseRecordList = Lists.newArrayList();
+                int recordOrder = 1;
+                List<Integer> rowIds = Lists.newArrayList();
+                for (ImportDiagnoseVO importDiagnoseVO : importDiagnoseVOS) {
+                    if (rowIds.contains(importDiagnoseVO.getRowNum())) {
+                        continue;
+                    }
+                    KlDiagnoseRecordDTO klDiagnoseRecordDTO = new KlDiagnoseRecordDTO();
+                    BeanUtil.copyProperties(importDiagnoseVO, klDiagnoseRecordDTO);
+                    klDiagnoseRecordDTO.setCode(importDiagnoseVO.getOrderNo());
+                    if ("确诊".equals(importDiagnoseVO.getType())) {
+                        if (StringUtil.isNotBlank(importDiagnoseVO.getParentRule())) {
+                            klDiagnoseRecordDTO.setRule(importDiagnoseVO.getParentRule());
+                        }
+                    }
+                    klDiagnoseRecordDTO.setOrderNo(recordOrder);
+                    klDiagnoseRecordList.add(klDiagnoseRecordDTO);
+                    if (ListUtil.isNotEmpty(importDiagnoseVO.getConceptId())) {
+                        int detailOrder = 1;
+                        List<KlDiagnoseRecordDetailDTO> klDiagnoseRecordDetailList = Lists.newArrayList();
+                        for (Long id : importDiagnoseVO.getConceptId()) {
+                            KlDiagnoseRecordDetailDTO klDiagnoseRecordDetailDTO = new KlDiagnoseRecordDetailDTO();
+                            klDiagnoseRecordDetailDTO.setConceptId(id);
+                            klDiagnoseRecordDetailDTO.setOrderNo(detailOrder);
+                            BeanUtil.copyProperties(importDiagnoseVO, klDiagnoseRecordDetailDTO);
+                            klDiagnoseRecordDetailList.add(klDiagnoseRecordDetailDTO);
+                            detailOrder++;
+                        }
+                        klDiagnoseRecordDTO.setRecordDetailList(klDiagnoseRecordDetailList);
+                    }
+                    recordOrder++;
+                    rowIds.add(importDiagnoseVO.getRowNum());
+                }
+                importDiagnoseResVO.setRecordList(klDiagnoseRecordList);
             } else {
                 allFlag = false;
                 diagMessage.put(disName, StringUtils.join(currentErrMsg.stream().distinct().collect(Collectors.toList()), ";  "));
@@ -193,7 +250,7 @@ public class KlDiagnoseImportFacade {
                             importDiagnoseVO.setParentRule(next.getRule());
                             importDiagnoseVO.setType(type);
                             importDiagnoseVO.setRowNum(rowNum);
-                            importDiagnoseVO.setOrderNo(rule.replace("拟诊", nizhen));
+                            importDiagnoseVO.setRule(rule.replace("拟诊", nizhen));
                             it.add(importDiagnoseVO);
                         }
                     }
@@ -277,9 +334,9 @@ public class KlDiagnoseImportFacade {
                 String type = imd.getType();
                 String rule = imd.getRule();
                 String orderNo = imd.getOrderNo();
-                String eq = imd.getEq();
-                String maxSymbol = imd.getMaxSymbol();
-                String minSymbol = imd.getMinSymbol();
+                String eq = imd.getEqValue();
+                String maxSymbol = imd.getMaxOperator();
+                String minSymbol = imd.getMinOperator();
                 String parentRule = imd.getParentRule();
                 if (StringUtil.isBlank(type) && StringUtil.isBlank(orderNo)) {
                     continue;
@@ -324,7 +381,7 @@ public class KlDiagnoseImportFacade {
                 }
                 if ((LexiconExtEnum.Vital.getName().equals(type) || LexiconExtEnum.Age.getName().equals(type))
                         && StringUtils.isNotBlank(rule)
-                        && StringUtils.isBlank(imd.getMin()) && StringUtils.isBlank(imd.getMax())) {
+                        && StringUtils.isBlank(imd.getMinValue()) && StringUtils.isBlank(imd.getMaxValue())) {
                     currentErrMsg.add(String.format("第%d行%s【最大值】和【最小值】至少有一个不能为空", rowNum, rule));
                 }
                 if (StringUtils.isBlank(type)) {
@@ -429,6 +486,39 @@ public class KlDiagnoseImportFacade {
                     klDiagnoseSaveVO.setModifier("0");
                 }
                 klDiagnoseFacade.saveDiagnoseAll(klDiagnoseSaveVO);
+
+                //  保存记录表和记录明细表
+                List<KlDiagnoseRecordDTO> recordList = importDiagnoseResVO.getRecordList();
+                List<KlDiagnoseRecord> klDiagnoseRecordList = klDiagnoseRecordService.list(new QueryWrapper<KlDiagnoseRecord>()
+                        .eq("diagnose_id", klDiagnoseSaveVO.getId()));
+                if (ListUtil.isNotEmpty(klDiagnoseRecordList)) {
+                    List<Long> recordIdList = klDiagnoseRecordList.stream().map(r -> r.getId()).collect(Collectors.toList());
+                    // 先删除记录明细表
+                    klDiagnoseRecordDetailService.remove(new QueryWrapper<KlDiagnoseRecordDetail>()
+                            .in("diagnose_record_id", recordIdList));
+                    // 再删除记录表
+                    klDiagnoseRecordService.remove(new QueryWrapper<KlDiagnoseRecord>().in("id", recordIdList));
+                }
+                for (KlDiagnoseRecordDTO klDiagnoseRecordDTO : recordList) {
+                    // 保存记录表
+                    KlDiagnoseRecord klDiagnoseRecord = new KlDiagnoseRecord();
+                    BeanUtil.copyProperties(klDiagnoseRecordDTO, klDiagnoseRecord);
+                    klDiagnoseRecord.setDiagnoseId(klDiagnoseSaveVO.getId());
+                    klDiagnoseRecordService.save(klDiagnoseRecord);
+
+                    // 保存记录明细表
+                    List<KlDiagnoseRecordDetailDTO> recordDetailList = klDiagnoseRecordDTO.getRecordDetailList();
+                    if (ListUtil.isNotEmpty(recordDetailList)) {
+                        List<KlDiagnoseRecordDetail> recorlDetailList = Lists.newArrayList();
+                        for (KlDiagnoseRecordDetailDTO detailDTO : recordDetailList) {
+                            KlDiagnoseRecordDetail klDiagnoseRecordDetail = new KlDiagnoseRecordDetail();
+                            BeanUtil.copyProperties(detailDTO, klDiagnoseRecordDetail);
+                            klDiagnoseRecordDetail.setDiagnoseRecordId(klDiagnoseRecord.getId());
+                            recorlDetailList.add(klDiagnoseRecordDetail);
+                        }
+                        klDiagnoseRecordDetailService.saveBatch(recorlDetailList);
+                    }
+                }
             }
         }
     }
@@ -530,29 +620,29 @@ public class KlDiagnoseImportFacade {
                     case Vital: // 体格检查项目
                     case Age: // 年龄
                         klDiagnoseDetailVO.setBasConceptId(current.getConceptId());
-                        if (StringUtil.isNotBlank(current.getMin())) {
-                            klDiagnoseDetailVO.setMinVal(current.getMin());
+                        if (StringUtil.isNotBlank(current.getMinValue())) {
+                            klDiagnoseDetailVO.setMinVal(current.getMinValue());
                         }
-                        if (StringUtil.isNotBlank(current.getMinSymbol())) {
-                            klDiagnoseDetailVO.setMinOperator(current.getMinSymbol());
+                        if (StringUtil.isNotBlank(current.getMinOperator())) {
+                            klDiagnoseDetailVO.setMinOperator(current.getMinOperator());
                         }
                         if (StringUtil.isNotBlank(current.getUnit())) {
                             klDiagnoseDetailVO.setMinUnit(current.getUnit());
                             klDiagnoseDetailVO.setMaxUnit(current.getUnit());
                         }
-                        if (StringUtil.isNotBlank(current.getMax())) {
-                            klDiagnoseDetailVO.setMaxVal(current.getMax());
+                        if (StringUtil.isNotBlank(current.getMaxValue())) {
+                            klDiagnoseDetailVO.setMaxVal(current.getMaxValue());
                         }
-                        if (StringUtil.isNotBlank(current.getMaxSymbol())) {
-                            klDiagnoseDetailVO.setMaxOperator(String.valueOf(current.getMaxSymbol()));
+                        if (StringUtil.isNotBlank(current.getMaxOperator())) {
+                            klDiagnoseDetailVO.setMaxOperator(String.valueOf(current.getMaxOperator()));
                         }
                         klDiagnoseDetailVO.setBasDescription(current.getRule());
                         klDiagnoseDetailVO.setBasType(2);
                         break;
                     case LisSubName: // 实验室检查子项目
                         klDiagnoseDetailVO.setBasConceptId(current.getConceptId());
-                        klDiagnoseDetailVO.setEqValue(current.getEq());
-                        klDiagnoseDetailVO.setBasDescription(current.getRule() + current.getEq());
+                        klDiagnoseDetailVO.setEqValue(current.getEqValue());
+                        klDiagnoseDetailVO.setBasDescription(current.getRule() + current.getEqValue());
                         klDiagnoseDetailVO.setBasType(2);
                         break;
                 }

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

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.KlDiagnoseRecordDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 诊断依据记录明细表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-08-24
+ */
+public interface KlDiagnoseRecordDetailMapper extends BaseMapper<KlDiagnoseRecordDetail> {
+
+}

+ 22 - 0
src/main/java/com/diagbot/mapper/KlDiagnoseRecordMapper.java

@@ -0,0 +1,22 @@
+package com.diagbot.mapper;
+
+import com.diagbot.dto.DiagnoseRecordDTO;
+import com.diagbot.dto.ExportDiagnoseDTO;
+import com.diagbot.entity.KlDiagnoseRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 诊断依据记录表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-08-24
+ */
+public interface KlDiagnoseRecordMapper extends BaseMapper<KlDiagnoseRecord> {
+
+    List<DiagnoseRecordDTO> getDiagnoseRecord();
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.KlDiagnoseRecordDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 诊断依据记录明细表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-08-24
+ */
+public interface KlDiagnoseRecordDetailService extends IService<KlDiagnoseRecordDetail> {
+
+}

+ 21 - 0
src/main/java/com/diagbot/service/KlDiagnoseRecordService.java

@@ -0,0 +1,21 @@
+package com.diagbot.service;
+
+import com.diagbot.dto.DiagnoseRecordDTO;
+import com.diagbot.dto.ExportDiagnoseDTO;
+import com.diagbot.entity.KlDiagnoseRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 诊断依据记录表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-08-24
+ */
+public interface KlDiagnoseRecordService extends IService<KlDiagnoseRecord> {
+
+    List<DiagnoseRecordDTO> getDiagnoseRecord();
+}

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

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.KlDiagnoseRecordDetail;
+import com.diagbot.mapper.KlDiagnoseRecordDetailMapper;
+import com.diagbot.service.KlDiagnoseRecordDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 诊断依据记录明细表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-08-24
+ */
+@Service
+public class KlDiagnoseRecordDetailServiceImpl extends ServiceImpl<KlDiagnoseRecordDetailMapper, KlDiagnoseRecordDetail> implements KlDiagnoseRecordDetailService {
+
+}

+ 28 - 0
src/main/java/com/diagbot/service/impl/KlDiagnoseRecordServiceImpl.java

@@ -0,0 +1,28 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.dto.DiagnoseRecordDTO;
+import com.diagbot.dto.ExportDiagnoseDTO;
+import com.diagbot.entity.KlDiagnoseRecord;
+import com.diagbot.mapper.KlDiagnoseRecordMapper;
+import com.diagbot.service.KlDiagnoseRecordService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 诊断依据记录表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-08-24
+ */
+@Service
+public class KlDiagnoseRecordServiceImpl extends ServiceImpl<KlDiagnoseRecordMapper, KlDiagnoseRecord> implements KlDiagnoseRecordService {
+
+    @Override
+    public List<DiagnoseRecordDTO> getDiagnoseRecord() {
+        return baseMapper.getDiagnoseRecord();
+    }
+}

+ 3 - 0
src/main/java/com/diagbot/vo/ImportDiagnoseResVO.java

@@ -1,5 +1,6 @@
 package com.diagbot.vo;
 
+import com.diagbot.dto.KlDiagnoseRecordDTO;
 import com.google.common.collect.Lists;
 import lombok.Data;
 
@@ -23,4 +24,6 @@ public class ImportDiagnoseResVO implements Serializable {
     private String diseaseName;
     // 导入数据
     private List<ImportDiagnoseVO> importDiagnoseVOList = Lists.newArrayList();
+    // 导入记录
+    private List<KlDiagnoseRecordDTO> recordList = Lists.newArrayList();
 }

+ 7 - 5
src/main/java/com/diagbot/vo/ImportDiagnoseVO.java

@@ -27,19 +27,21 @@ public class ImportDiagnoseVO implements Serializable, IExcelDataModel {
     @Excel(name = "规则")
     private String rule = "";
     @Excel(name = "等于")
-    private String eq;
+    private String eqValue;
     @Excel(name = "最大值")
-    private String max;
+    private String maxValue;
     @Excel(name = "最大值符号")
-    private String maxSymbol;
+    private String maxOperator;
     @Excel(name = "单位")
     private String unit;
     @Excel(name = "最小值")
-    private String min;
+    private String minValue;
     @Excel(name = "最小值符号")
-    private String minSymbol;
+    private String minOperator;
     // @Excel(name="单位")
     // private String minUnit;
+    @Excel(name = "关联词")
+    private String description;;
 
     // 规则标准词id
     private List<Long> conceptId;

+ 7 - 1
src/main/java/com/diagbot/web/KlDiagnoseImportController.java

@@ -44,7 +44,13 @@ public class KlDiagnoseImportController {
     @ApiOperation(value = "诊断依据导出API[zhoutg]")
     @PostMapping("/exportDiagnose")
     public void exportDiagnose(HttpServletResponse response) {
-        klDiagnoseDetailFacade.exportDiagnose(response);
+        klDiagnoseDetailFacade.exportDiagnoseDetail(response);
+    }
+
+    @ApiOperation(value = "【记录导出】诊断依据导出API[zhoutg]")
+    @PostMapping("/exportDiagnoseRecord")
+    public void exportDiagnoseRecord(HttpServletResponse response) {
+        klDiagnoseDetailFacade.exportDiagnoseRecord(response);
     }
 
 }

+ 19 - 0
src/main/resources/mapper/KlDiagnoseRecordDetailMapper.xml

@@ -0,0 +1,19 @@
+<?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.KlDiagnoseRecordDetailMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.KlDiagnoseRecordDetail">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="diagnose_record_id" property="diagnoseRecordId" />
+        <result column="concept_id" property="conceptId" />
+        <result column="order_no" property="orderNo" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+</mapper>

+ 80 - 0
src/main/resources/mapper/KlDiagnoseRecordMapper.xml

@@ -0,0 +1,80 @@
+<?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.KlDiagnoseRecordMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.KlDiagnoseRecord">
+        <id column="id" property="id"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="gmt_create" property="gmtCreate"/>
+        <result column="gmt_modified" property="gmtModified"/>
+        <result column="creator" property="creator"/>
+        <result column="modifier" property="modifier"/>
+        <result column="diagnose_id" property="diagnoseId"/>
+        <result column="type" property="type"/>
+        <result column="code" property="code"/>
+        <result column="rule" property="rule"/>
+        <result column="desc" property="description"/>
+        <result column="eq_operator" property="eqValue"/>
+        <result column="max_value" property="maxValue"/>
+        <result column="max_operator" property="maxOperator"/>
+        <result column="min_value" property="minValue"/>
+        <result column="min_operator" property="minOperator"/>
+        <result column="unit" property="unit"/>
+        <result column="order_no" property="orderNo"/>
+        <result column="remark" property="remark"/>
+    </resultMap>
+
+    <select id="getDiagnoseRecord" resultType="com.diagbot.dto.DiagnoseRecordDTO">
+		SELECT
+			k3.lib_name AS diseaseName,
+			kdr.type AS type,
+			kdr.`code` AS orderNo,
+			IFNULL(k2.rule, kdr.rule) AS rule,
+			kdr.description AS relation,
+			kdr.eq_value AS eq,
+			kdr.max_value AS max,
+			kdr.max_operator AS maxSymbol,
+			kdr.min_value AS min,
+			kdr.min_operator AS minSymbol,
+			kdr.unit AS unit
+		FROM
+			kl_diagnose_record kdr
+			LEFT JOIN (
+			SELECT
+			k1.diagnose_record_id,
+			GROUP_CONCAT(
+			k1.lib_name
+			ORDER BY
+			order_no SEPARATOR '#'
+			) rule
+			FROM
+			(
+			SELECT
+			kdrd.diagnose_record_id,
+			kdrd.concept_id,
+			kc.lib_name,
+			kdrd.order_no
+			FROM
+			`kl_diagnose_record_detail` kdrd
+			LEFT JOIN kl_concept kc ON kdrd.concept_id = kc.id
+			WHERE
+			kc.is_deleted = 'N'
+			AND kc.`status` = 1
+			) k1
+			GROUP BY
+			k1.diagnose_record_id
+			) k2 ON kdr.id = k2.diagnose_record_id
+			LEFT JOIN kl_diagnose kd ON kdr.diagnose_id = kd.id
+			LEFT JOIN kl_concept k3 ON kd.concept_id = k3.id
+		WHERE
+			k3.is_deleted = 'N'
+		  AND k3.`status` = 1
+		  AND kd. STATUS = 1
+		ORDER BY
+			kd.gmt_modified,
+			kd.id,
+			kdr.order_no
+    </select>
+
+</mapper>

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

@@ -56,7 +56,7 @@ public class CodeGeneration {
         StrategyConfig strategy = new StrategyConfig();
         // strategy.setTablePrefix(new String[] { "demo_" });// 此处可以修改为您的表前缀
         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude("kl_rule_condition"); // 需要生成的表
+        strategy.setInclude("kl_diagnose_record", "kl_diagnose_record_detail"); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);