Parcourir la source

1、中医疾病关联维护
2、中医证候关联维护
3、中医疾病、中医证候术语检索
4、映射关系导入增加同步锁

zhaops il y a 4 ans
Parent
commit
c5a7b78c4a
36 fichiers modifiés avec 2838 ajouts et 468 suppressions
  1. 19 1
      src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  2. 18 0
      src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  3. 8 0
      src/main/java/com/diagbot/dto/RetrievalDTO.java
  4. 23 0
      src/main/java/com/diagbot/dto/TcmdiseaseInfoDTO.java
  5. 23 0
      src/main/java/com/diagbot/dto/TcmsyndromeInfoDTO.java
  6. 4 2
      src/main/java/com/diagbot/entity/DiseaseConfig.java
  7. 199 0
      src/main/java/com/diagbot/entity/TcmdiseaseConfig.java
  8. 199 0
      src/main/java/com/diagbot/entity/TcmsyndromeConfig.java
  9. 3 1
      src/main/java/com/diagbot/enums/ConceptTypeEnum.java
  10. 52 50
      src/main/java/com/diagbot/facade/DeptConfigFacade.java
  11. 52 50
      src/main/java/com/diagbot/facade/DiseaseConfigFacade.java
  12. 50 48
      src/main/java/com/diagbot/facade/DrugConfigFacade.java
  13. 67 65
      src/main/java/com/diagbot/facade/LisConfigFacade.java
  14. 52 50
      src/main/java/com/diagbot/facade/NurseConfigFacade.java
  15. 52 50
      src/main/java/com/diagbot/facade/OperationConfigFacade.java
  16. 52 50
      src/main/java/com/diagbot/facade/PacsConfigFacade.java
  17. 10 0
      src/main/java/com/diagbot/facade/RetrievalFacade.java
  18. 52 50
      src/main/java/com/diagbot/facade/ScaleConfigFacade.java
  19. 496 0
      src/main/java/com/diagbot/facade/TcmdiseaseConfigFacade.java
  20. 496 0
      src/main/java/com/diagbot/facade/TcmsyndromeConfigFacade.java
  21. 52 50
      src/main/java/com/diagbot/facade/TransfusionConfigFacade.java
  22. 38 0
      src/main/java/com/diagbot/mapper/TcmdiseaseConfigMapper.java
  23. 37 0
      src/main/java/com/diagbot/mapper/TcmsyndromeConfigMapper.java
  24. 38 0
      src/main/java/com/diagbot/service/TcmdiseaseConfigService.java
  25. 36 0
      src/main/java/com/diagbot/service/TcmsyndromeConfigService.java
  26. 47 0
      src/main/java/com/diagbot/service/impl/TcmdiseaseConfigServiceImpl.java
  27. 47 0
      src/main/java/com/diagbot/service/impl/TcmsyndromeConfigServiceImpl.java
  28. 18 0
      src/main/java/com/diagbot/vo/TcmdiseaseConfigListVO.java
  29. 36 0
      src/main/java/com/diagbot/vo/TcmdiseaseConfigPageVO.java
  30. 18 0
      src/main/java/com/diagbot/vo/TcmsyndromeConfigListVO.java
  31. 36 0
      src/main/java/com/diagbot/vo/TcmsyndromeConfigPageVO.java
  32. 1 1
      src/main/java/com/diagbot/web/RetrievalController.java
  33. 170 0
      src/main/java/com/diagbot/web/TcmdiseaseConfigController.java
  34. 170 0
      src/main/java/com/diagbot/web/TcmsyndromeConfigController.java
  35. 84 0
      src/main/resources/mapper/TcmdiseaseConfigMapper.xml
  36. 83 0
      src/main/resources/mapper/TcmsyndromeConfigMapper.xml

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

@@ -124,6 +124,24 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 //.antMatchers("/tran/nurseConfig/importExcel").permitAll()
                 //.antMatchers("/tran/nurseConfig/exportExcel").permitAll()
                 .antMatchers("/tran/nurseConfig/exportExcelModule").permitAll()
+                //.antMatchers("/tran/tcmdiseaseConfig/isExistRecord").permitAll()
+                //.antMatchers("/tran/tcmdiseaseConfig/saveOrUpdateRecord").permitAll()
+                //.antMatchers("/tran/tcmdiseaseConfig/saveOrUpdateRecords").permitAll()
+                //.antMatchers("/tran/tcmdiseaseConfig/deleteRecord").permitAll()
+                //.antMatchers("/tran/tcmdiseaseConfig/deleteRecords").permitAll()
+                .antMatchers("/tran/tcmdiseaseConfig/getPage").permitAll()
+                //.antMatchers("/tran/tcmdiseaseConfig/importExcel").permitAll()
+                //.antMatchers("/tran/tcmdiseaseConfig/exportExcel").permitAll()
+                .antMatchers("/tran/tcmdiseaseConfig/exportExcelModule").permitAll()
+                //.antMatchers("/tran/tcmsyndromeConfig/isExistRecord").permitAll()
+                //.antMatchers("/tran/tcmsyndromeConfig/saveOrUpdateRecord").permitAll()
+                //.antMatchers("/tran/tcmsyndromeConfig/saveOrUpdateRecords").permitAll()
+                //.antMatchers("/tran/tcmsyndromeConfig/deleteRecord").permitAll()
+                //.antMatchers("/tran/tcmsyndromeConfig/deleteRecords").permitAll()
+                .antMatchers("/tran/tcmsyndromeConfig/getPage").permitAll()
+                //.antMatchers("/tran/tcmsyndromeConfig/importExcel").permitAll()
+                //.antMatchers("/tran/tcmsyndromeConfig/exportExcel").permitAll()
+                .antMatchers("/tran/tcmsyndromeConfig/exportExcelModule").permitAll()
                 //.antMatchers("/tran/hospitalInfo/saveRecord").permitAll()
                 .antMatchers("/tran/hospitalInfo/getHospitalInfo").permitAll()
                 .antMatchers("/tran/hospitalInfo/getAllHospitalInfo").permitAll()
@@ -223,4 +241,4 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
         log.info("Created jwtTokenEnhancerClient success");
         return converter;
     }
-}
+}

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

@@ -167,6 +167,24 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 // || matchers("/tran/nurseConfig/importExcel", request)
                 // || matchers("/tran/nurseConfig/exportExcel", request)
                 || matchers("/tran/nurseConfig/exportExcelModule", request)
+                //|| matchers("/tran/tcmdiseaseConfig/isExistRecord", request)
+                //|| matchers("/tran/tcmdiseaseConfig/saveOrUpdateRecord", request)
+                //|| matchers("/tran/tcmdiseaseConfig/saveOrUpdateRecords", request)
+                // || matchers("/tran/tcmdiseaseConfig/deleteRecord", request)
+                //|| matchers("/tran/tcmdiseaseConfig/deleteRecords", request)
+                || matchers("/tran/tcmdiseaseConfig/getPage", request)
+                // || matchers("/tran/tcmdiseaseConfig/importExcel", request)
+                // || matchers("/tran/tcmdiseaseConfig/exportExcel", request)
+                || matchers("/tran/tcmdiseaseConfig/exportExcelModule", request)
+                //|| matchers("/tran/tcmsyndromeConfig/isExistRecord", request)
+                //|| matchers("/tran/tcmsyndromeConfig/saveOrUpdateRecord", request)
+                //|| matchers("/tran/tcmsyndromeConfig/saveOrUpdateRecords", request)
+                // || matchers("/tran/tcmsyndromeConfig/deleteRecord", request)
+                //|| matchers("/tran/tcmsyndromeConfig/deleteRecords", request)
+                || matchers("/tran/tcmsyndromeConfig/getPage", request)
+                // || matchers("/tran/tcmsyndromeConfig/importExcel", request)
+                // || matchers("/tran/tcmsyndromeConfig/exportExcel", request)
+                || matchers("/tran/tcmsyndromeConfig/exportExcelModule", request)
                 //|| matchers("/tran/hospitalInfo/saveRecord", request)
                 || matchers("/tran/hospitalInfo/getHospitalInfo", request)
                 || matchers("/tran/hospitalInfo/getAllHospitalInfo", request)

+ 8 - 0
src/main/java/com/diagbot/dto/RetrievalDTO.java

@@ -53,4 +53,12 @@ public class RetrievalDTO {
      * 护理
      */
     private List<NurseInfoDTO> nursenames;
+    /**
+     * 中医诊断
+     */
+    private List<TcmdiseaseInfoDTO> tcmdiseaseNames;
+    /**
+     * 中医证候
+     */
+    private List<TcmsyndromeInfoDTO> tcmsyndromeNames;
 }

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

@@ -0,0 +1,23 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/5/13 15:37
+ */
+@Getter
+@Setter
+public class TcmdiseaseInfoDTO {
+    /**
+     * 疾病名称
+     */
+    private String name;
+
+    /**
+     * 编码
+     */
+    private String code;
+}

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

@@ -0,0 +1,23 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/5/13 15:43
+ */
+@Getter
+@Setter
+public class TcmsyndromeInfoDTO {
+    /**
+     * 疾病名称
+     */
+    private String name;
+
+    /**
+     * 编码
+     */
+    private String code;
+}

+ 4 - 2
src/main/java/com/diagbot/entity/DiseaseConfig.java

@@ -177,10 +177,12 @@ public class DiseaseConfig implements Serializable {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o)
+        if (this == o) {
             return true;
-        if (o == null || getClass() != o.getClass())
+        }
+        if (o == null || getClass() != o.getClass()) {
             return false;
+        }
         DiseaseConfig diseaseConfig = (DiseaseConfig) o;
         return Objects.equals(id, diseaseConfig.id)
                 && Objects.equals(isDeleted, diseaseConfig.isDeleted)

+ 199 - 0
src/main/java/com/diagbot/entity/TcmdiseaseConfig.java

@@ -0,0 +1,199 @@
+package com.diagbot.entity;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 中医疾病映射表
+ * </p>
+ *
+ * @author zhaops
+ * @since 2021-05-13
+ */
+@TableName("tran_tcmdisease_config")
+public class TcmdiseaseConfig 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 hospitalId;
+
+    /**
+     * 医院项目名称
+     */
+    @Excel(name = "中医疾病名称", width = 40, orderNum = "1", isImportField = "true")
+    @NotBlank(message = "请输入医院中医疾病名称")
+    private String hisName;
+
+    /**
+     * 标准名称
+     */
+    @Excel(name = "标准中医疾病名称", width = 40, orderNum = "3", isImportField = "true")
+    @NotBlank(message = "请输入标准中医疾病名称")
+    private String uniqueName;
+
+    /**
+     * 标准编码
+     */
+    @Excel(name = "中医疾病代码", width = 40, orderNum = "2", isImportField = "true")
+    private String uniqueCode;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+
+    public Date getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(Date gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+
+    public Long getHospitalId() {
+        return hospitalId;
+    }
+
+    public void setHospitalId(Long hospitalId) {
+        this.hospitalId = hospitalId;
+    }
+
+    public String getHisName() {
+        return hisName;
+    }
+
+    public void setHisName(String hisName) {
+        this.hisName = hisName;
+    }
+
+    public String getUniqueName() {
+        return uniqueName;
+    }
+
+    public void setUniqueName(String uniqueName) {
+        this.uniqueName = uniqueName;
+    }
+
+    public String getUniqueCode() {
+        return uniqueCode;
+    }
+
+    public void setUniqueCode(String uniqueCode) {
+        this.uniqueCode = uniqueCode;
+    }
+
+    @Override
+    public String toString() {
+        return "TcmdiseaseConfig{" +
+                "id=" + id +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                ", hospitalId=" + hospitalId +
+                ", hisName=" + hisName +
+                ", uniqueName=" + uniqueName +
+                ", uniqueCode=" + uniqueCode +
+                "}";
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        TcmdiseaseConfig tcmdiseaseConfig = (TcmdiseaseConfig) o;
+        return Objects.equals(id, tcmdiseaseConfig.id)
+                && Objects.equals(isDeleted, tcmdiseaseConfig.isDeleted)
+                && Objects.equals(hospitalId, tcmdiseaseConfig.hospitalId)
+                && Objects.equals(hisName, tcmdiseaseConfig.hisName)
+                && Objects.equals(uniqueName, tcmdiseaseConfig.uniqueName)
+                && Objects.equals(uniqueCode, tcmdiseaseConfig.uniqueCode);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(id, isDeleted, hospitalId, hisName, uniqueName, uniqueCode);
+    }
+}

+ 199 - 0
src/main/java/com/diagbot/entity/TcmsyndromeConfig.java

@@ -0,0 +1,199 @@
+package com.diagbot.entity;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 中医证候映射表
+ * </p>
+ *
+ * @author zhaops
+ * @since 2021-05-13
+ */
+@TableName("tran_tcmsyndrome_config")
+public class TcmsyndromeConfig 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 hospitalId;
+
+    /**
+     * 医院项目名称
+     */
+    @Excel(name = "医院中医证候名称", width = 40, orderNum = "1", isImportField = "true")
+    @NotBlank(message = "请输入医院中医证候名称")
+    private String hisName;
+
+    /**
+     * 标准名称
+     */
+    @Excel(name = "标准中医证候名称", width = 40, orderNum = "3", isImportField = "true")
+    @NotBlank(message = "请输入标准中医证候名称")
+    private String uniqueName;
+
+    /**
+     * 标准编码
+     */
+    @Excel(name = "中医证候代码", width = 40, orderNum = "2", isImportField = "true")
+    private String uniqueCode;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+
+    public Date getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(Date gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+
+    public Long getHospitalId() {
+        return hospitalId;
+    }
+
+    public void setHospitalId(Long hospitalId) {
+        this.hospitalId = hospitalId;
+    }
+
+    public String getHisName() {
+        return hisName;
+    }
+
+    public void setHisName(String hisName) {
+        this.hisName = hisName;
+    }
+
+    public String getUniqueName() {
+        return uniqueName;
+    }
+
+    public void setUniqueName(String uniqueName) {
+        this.uniqueName = uniqueName;
+    }
+
+    public String getUniqueCode() {
+        return uniqueCode;
+    }
+
+    public void setUniqueCode(String uniqueCode) {
+        this.uniqueCode = uniqueCode;
+    }
+
+    @Override
+    public String toString() {
+        return "TcmsyndromeConfig{" +
+                "id=" + id +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                ", hospitalId=" + hospitalId +
+                ", hisName=" + hisName +
+                ", uniqueName=" + uniqueName +
+                ", uniqueCode=" + uniqueCode +
+                "}";
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        TcmsyndromeConfig tcmsyndromeConfig = (TcmsyndromeConfig) o;
+        return Objects.equals(id, tcmsyndromeConfig.id)
+                && Objects.equals(isDeleted, tcmsyndromeConfig.isDeleted)
+                && Objects.equals(hospitalId, tcmsyndromeConfig.hospitalId)
+                && Objects.equals(hisName, tcmsyndromeConfig.hisName)
+                && Objects.equals(uniqueName, tcmsyndromeConfig.uniqueName)
+                && Objects.equals(uniqueCode, tcmsyndromeConfig.uniqueCode);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(id, isDeleted, hospitalId, hisName, uniqueName, uniqueCode);
+    }
+}

+ 3 - 1
src/main/java/com/diagbot/enums/ConceptTypeEnum.java

@@ -22,7 +22,9 @@ public enum ConceptTypeEnum implements KeyedNamed {
     Transfusion(8, "输血"),
     PacsSubName(9, "检查子项"),
     Scale(10, "量表"),
-    Nurse(11, "护理");
+    Nurse(11, "护理"),
+    Tcmdisease(12,"中医疾病"),
+    Tcmsyndrome(13,"中医证候");
 
     @Setter
     private int key;

+ 52 - 50
src/main/java/com/diagbot/facade/DeptConfigFacade.java

@@ -290,61 +290,63 @@ public class DeptConfigFacade {
 
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
-        List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, List<Long>>> configMap
-                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
-        deptConfigList.forEach(deptConfig -> {
-            deptConfig.setHospitalId(Long.valueOf(hospitalId));
-            deptConfig.setModifier(userId);
-            deptConfig.setGmtModified(now);
-            if (deptConfig.getId() == null) {
-                if (configMap.containsKey(deptConfig.getHisName())
-                        && ListUtil.isNotEmpty(configMap.get(deptConfig.getHisName()).get(deptConfig.getUniqueName()))) {
-                    deleteIds.addAll(configMap.get(deptConfig.getHisName()).get(deptConfig.getUniqueName()));
+        synchronized (this) {
+            List<Long> deleteIds = Lists.newLinkedList();
+            Map<String, Map<String, List<Long>>> configMap
+                    = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
+            deptConfigList.forEach(deptConfig -> {
+                deptConfig.setHospitalId(Long.valueOf(hospitalId));
+                deptConfig.setModifier(userId);
+                deptConfig.setGmtModified(now);
+                if (deptConfig.getId() == null) {
+                    if (configMap.containsKey(deptConfig.getHisName())
+                            && ListUtil.isNotEmpty(configMap.get(deptConfig.getHisName()).get(deptConfig.getUniqueName()))) {
+                        deleteIds.addAll(configMap.get(deptConfig.getHisName()).get(deptConfig.getUniqueName()));
+                    }
+                    deptConfig.setCreator(userId);
+                    deptConfig.setGmtCreate(now);
                 }
-                deptConfig.setCreator(userId);
-                deptConfig.setGmtCreate(now);
-            }
-            if (deptConfig.getIsDeleted() == null) {
-                deptConfig.setIsDeleted(IsDeleteEnum.N.getKey());
-            }
-        });
+                if (deptConfig.getIsDeleted() == null) {
+                    deptConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+                }
+            });
 
-        //标准术语校验
-        List<String> errorNumList = Lists.newLinkedList();
-        List<String> uniqueNames = deptConfigList.stream()
-                .map(i -> i.getUniqueName())
-                .distinct()
-                .collect(Collectors.toList());
-        ConceptVO conceptVO = new ConceptVO();
-        conceptVO.setNames(uniqueNames);
-        conceptVO.setType(ConceptTypeEnum.Dept.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
-        RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> names = respDTO.data;
-        for (int i = 0; i < deptConfigList.size(); i++) {
-            if (!names.contains(deptConfigList.get(i).getUniqueName())) {
-                errorNumList.add(String.valueOf(i + 2));
+            //标准术语校验
+            List<String> errorNumList = Lists.newLinkedList();
+            List<String> uniqueNames = deptConfigList.stream()
+                    .map(i -> i.getUniqueName())
+                    .distinct()
+                    .collect(Collectors.toList());
+            ConceptVO conceptVO = new ConceptVO();
+            conceptVO.setNames(uniqueNames);
+            conceptVO.setType(ConceptTypeEnum.Dept.getKey());
+            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
+            List<String> names = respDTO.data;
+            for (int i = 0; i < deptConfigList.size(); i++) {
+                if (!names.contains(deptConfigList.get(i).getUniqueName())) {
+                    errorNumList.add(String.valueOf(i + 2));
+                }
+            }
+            if (ListUtil.isNotEmpty(errorNumList)) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "以下行数(不计空行)标准术语在数据库中不存在:"
+                                + errorNumList.stream().collect(Collectors.joining("、"))
+                                + "。导入取消,请修改后再试。");
             }
-        }
-        if (ListUtil.isNotEmpty(errorNumList)) {
-            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计空行)标准术语在数据库中不存在:"
-                            + errorNumList.stream().collect(Collectors.joining("、"))
-                            + "。导入取消,请修改后再试。");
-        }
 
-        //重复数据过滤
-        deptConfigList = deptConfigList
-                .stream()
-                .distinct()
-                .collect(Collectors.toList());
+            //重复数据过滤
+            deptConfigList = deptConfigList
+                    .stream()
+                    .distinct()
+                    .collect(Collectors.toList());
 
-        //删除已存在映射关系
-        IdListVO idListVO = new IdListVO();
-        idListVO.setIds(deleteIds);
-        deleteRecords(idListVO);
-        deptConfigService.saveOrUpdateBatch(deptConfigList);
+            //删除已存在映射关系
+            IdListVO idListVO = new IdListVO();
+            idListVO.setIds(deleteIds);
+            deleteRecords(idListVO);
+            deptConfigService.saveOrUpdateBatch(deptConfigList);
+        }
         return true;
     }
 

+ 52 - 50
src/main/java/com/diagbot/facade/DiseaseConfigFacade.java

@@ -288,61 +288,63 @@ public class DiseaseConfigFacade {
 
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
-        List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, List<Long>>> configMap
-                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
-        diseaseConfigList.forEach(diseaseConfig -> {
-            diseaseConfig.setHospitalId(Long.valueOf(hospitalId));
-            diseaseConfig.setModifier(userId);
-            diseaseConfig.setGmtModified(now);
-            if (diseaseConfig.getId() == null) {
-                if (configMap.containsKey(diseaseConfig.getHisName())
-                        && ListUtil.isNotEmpty(configMap.get(diseaseConfig.getHisName()).get(diseaseConfig.getUniqueName()))) {
-                    deleteIds.addAll(configMap.get(diseaseConfig.getHisName()).get(diseaseConfig.getUniqueName()));
+        synchronized (this) {
+            List<Long> deleteIds = Lists.newLinkedList();
+            Map<String, Map<String, List<Long>>> configMap
+                    = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
+            diseaseConfigList.forEach(diseaseConfig -> {
+                diseaseConfig.setHospitalId(Long.valueOf(hospitalId));
+                diseaseConfig.setModifier(userId);
+                diseaseConfig.setGmtModified(now);
+                if (diseaseConfig.getId() == null) {
+                    if (configMap.containsKey(diseaseConfig.getHisName())
+                            && ListUtil.isNotEmpty(configMap.get(diseaseConfig.getHisName()).get(diseaseConfig.getUniqueName()))) {
+                        deleteIds.addAll(configMap.get(diseaseConfig.getHisName()).get(diseaseConfig.getUniqueName()));
+                    }
+                    diseaseConfig.setCreator(userId);
+                    diseaseConfig.setGmtCreate(now);
                 }
-                diseaseConfig.setCreator(userId);
-                diseaseConfig.setGmtCreate(now);
-            }
-            if (diseaseConfig.getIsDeleted() == null) {
-                diseaseConfig.setIsDeleted(IsDeleteEnum.N.getKey());
-            }
-        });
+                if (diseaseConfig.getIsDeleted() == null) {
+                    diseaseConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+                }
+            });
 
-        //标准术语校验
-        List<String> errorNumList = Lists.newLinkedList();
-        List<String> uniqueNames = diseaseConfigList.stream()
-                .map(i -> i.getUniqueName())
-                .distinct()
-                .collect(Collectors.toList());
-        ConceptVO conceptVO = new ConceptVO();
-        conceptVO.setNames(uniqueNames);
-        conceptVO.setType(ConceptTypeEnum.Disease.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
-        RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> names = respDTO.data;
-        for (int i = 0; i < diseaseConfigList.size(); i++) {
-            if (!names.contains(diseaseConfigList.get(i).getUniqueName())) {
-                errorNumList.add(String.valueOf(i + 2));
+            //标准术语校验
+            List<String> errorNumList = Lists.newLinkedList();
+            List<String> uniqueNames = diseaseConfigList.stream()
+                    .map(i -> i.getUniqueName())
+                    .distinct()
+                    .collect(Collectors.toList());
+            ConceptVO conceptVO = new ConceptVO();
+            conceptVO.setNames(uniqueNames);
+            conceptVO.setType(ConceptTypeEnum.Disease.getKey());
+            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
+            List<String> names = respDTO.data;
+            for (int i = 0; i < diseaseConfigList.size(); i++) {
+                if (!names.contains(diseaseConfigList.get(i).getUniqueName())) {
+                    errorNumList.add(String.valueOf(i + 2));
+                }
+            }
+            if (ListUtil.isNotEmpty(errorNumList)) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "以下行数(不计空行)标准术语在数据库中不存在:"
+                                + errorNumList.stream().collect(Collectors.joining("、"))
+                                + "。导入取消,请修改后再试。");
             }
-        }
-        if (ListUtil.isNotEmpty(errorNumList)) {
-            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计空行)标准术语在数据库中不存在:"
-                            + errorNumList.stream().collect(Collectors.joining("、"))
-                            + "。导入取消,请修改后再试。");
-        }
 
-        //重复数据过滤
-        diseaseConfigList = diseaseConfigList
-                .stream()
-                .distinct()
-                .collect(Collectors.toList());
+            //重复数据过滤
+            diseaseConfigList = diseaseConfigList
+                    .stream()
+                    .distinct()
+                    .collect(Collectors.toList());
 
-        //删除已存在映射关系
-        IdListVO idListVO = new IdListVO();
-        idListVO.setIds(deleteIds);
-        deleteRecords(idListVO);
-        diseaseConfigService.saveOrUpdateBatch(diseaseConfigList);
+            //删除已存在映射关系
+            IdListVO idListVO = new IdListVO();
+            idListVO.setIds(deleteIds);
+            deleteRecords(idListVO);
+            diseaseConfigService.saveOrUpdateBatch(diseaseConfigList);
+        }
         return true;
     }
 

+ 50 - 48
src/main/java/com/diagbot/facade/DrugConfigFacade.java

@@ -344,59 +344,61 @@ public class DrugConfigFacade {
 
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
-        List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Map<String, List<Long>>>> configMap
-                = getConfigMapWithIds(Long.valueOf(hospitalId), hisNames, uniqueNames);
-        drugConfigList.forEach(drugConfig -> {
-            drugConfig.setHospitalId(Long.valueOf(hospitalId));
-            drugConfig.setModifier(userId);
-            drugConfig.setGmtModified(now);
-            String form = StringUtil.isBlank(drugConfig.getForm()) ? "" : drugConfig.getForm();
-            if (drugConfig.getId() == null) {
-                if (configMap.get(drugConfig.getHisName()) != null
-                        && configMap.get(drugConfig.getHisName()).get(form) != null
-                        && configMap.get(drugConfig.getHisName()).get(form).get(drugConfig.getUniqueName()) != null) {
-                    deleteIds.addAll(configMap.get(drugConfig.getHisName()).get(form).get(drugConfig.getUniqueName()));
+        synchronized (this) {
+            List<Long> deleteIds = Lists.newLinkedList();
+            Map<String, Map<String, Map<String, List<Long>>>> configMap
+                    = getConfigMapWithIds(Long.valueOf(hospitalId), hisNames, uniqueNames);
+            drugConfigList.forEach(drugConfig -> {
+                drugConfig.setHospitalId(Long.valueOf(hospitalId));
+                drugConfig.setModifier(userId);
+                drugConfig.setGmtModified(now);
+                String form = StringUtil.isBlank(drugConfig.getForm()) ? "" : drugConfig.getForm();
+                if (drugConfig.getId() == null) {
+                    if (configMap.get(drugConfig.getHisName()) != null
+                            && configMap.get(drugConfig.getHisName()).get(form) != null
+                            && configMap.get(drugConfig.getHisName()).get(form).get(drugConfig.getUniqueName()) != null) {
+                        deleteIds.addAll(configMap.get(drugConfig.getHisName()).get(form).get(drugConfig.getUniqueName()));
+                    }
+                    drugConfig.setCreator(userId);
+                    drugConfig.setGmtCreate(now);
                 }
-                drugConfig.setCreator(userId);
-                drugConfig.setGmtCreate(now);
-            }
-            if (drugConfig.getIsDeleted() == null) {
-                drugConfig.setIsDeleted(IsDeleteEnum.N.getKey());
-            }
-        });
+                if (drugConfig.getIsDeleted() == null) {
+                    drugConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+                }
+            });
 
-        //标准术语校验
-        List<String> errorNumList = Lists.newLinkedList();
-        ConceptVO conceptVO = new ConceptVO();
-        conceptVO.setNames(uniqueNames);
-        conceptVO.setType(ConceptTypeEnum.Drug.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
-        RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> names = respDTO.data;
-        for (int i = 0; i < drugConfigList.size(); i++) {
-            if (!names.contains(drugConfigList.get(i).getUniqueName())) {
-                errorNumList.add(String.valueOf(i + 3));
+            //标准术语校验
+            List<String> errorNumList = Lists.newLinkedList();
+            ConceptVO conceptVO = new ConceptVO();
+            conceptVO.setNames(uniqueNames);
+            conceptVO.setType(ConceptTypeEnum.Drug.getKey());
+            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
+            List<String> names = respDTO.data;
+            for (int i = 0; i < drugConfigList.size(); i++) {
+                if (!names.contains(drugConfigList.get(i).getUniqueName())) {
+                    errorNumList.add(String.valueOf(i + 3));
+                }
+            }
+            if (ListUtil.isNotEmpty(errorNumList)) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "以下行数(不计空行)标准术语在数据库中不存在:"
+                                + errorNumList.stream().collect(Collectors.joining("、"))
+                                + "。导入取消,请修改后再试。");
             }
-        }
-        if (ListUtil.isNotEmpty(errorNumList)) {
-            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计空行)标准术语在数据库中不存在:"
-                            + errorNumList.stream().collect(Collectors.joining("、"))
-                            + "。导入取消,请修改后再试。");
-        }
 
-        //重复数据过滤
-        drugConfigList = drugConfigList
-                .stream()
-                .distinct()
-                .collect(Collectors.toList());
+            //重复数据过滤
+            drugConfigList = drugConfigList
+                    .stream()
+                    .distinct()
+                    .collect(Collectors.toList());
 
-        //删除已存在映射关系
-        IdListVO idListVO = new IdListVO();
-        idListVO.setIds(deleteIds);
-        deleteRecords(idListVO);
-        drugConfigService.saveOrUpdateBatch(drugConfigList);
+            //删除已存在映射关系
+            IdListVO idListVO = new IdListVO();
+            idListVO.setIds(deleteIds);
+            deleteRecords(idListVO);
+            drugConfigService.saveOrUpdateBatch(drugConfigList);
+        }
         return true;
     }
 

+ 67 - 65
src/main/java/com/diagbot/facade/LisConfigFacade.java

@@ -330,78 +330,80 @@ public class LisConfigFacade {
 
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
-        List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Map<String, List<Long>>>> configMap
-                = getConfigMapWithIds(Long.valueOf(hospitalId), hisNames, uniqueNames);
-        lisConfigList.forEach(lisConfig -> {
-            lisConfig.setHospitalId(Long.valueOf(hospitalId));
-            lisConfig.setModifier(userId);
-            lisConfig.setGmtModified(now);
-            if (lisConfig.getId() == null) {
-                if (configMap.containsKey(lisConfig.getHisName())) {
-                    if (lisConfig.getHisDetailName() == null
-                            && configMap.get(lisConfig.getHisName()).containsKey("")) {
-                        if (ListUtil.isNotEmpty(configMap.get(lisConfig.getHisName()).get("").get(lisConfig.getUniqueName()))) {
-                            deleteIds.addAll(configMap.get(lisConfig.getHisName()).get("").get(lisConfig.getUniqueName()));
-                        }
-                    } else if (configMap.get(lisConfig.getHisName()).containsKey(lisConfig.getHisDetailName())) {
-                        if (ListUtil.isNotEmpty(configMap.get(lisConfig.getHisName()).get(lisConfig.getHisDetailName()).get(lisConfig.getUniqueName()))) {
-                            deleteIds.addAll(configMap
-                                    .get(lisConfig.getHisName())
-                                    .get(lisConfig.getHisDetailName())
-                                    .get(lisConfig.getUniqueName()));
+        synchronized (this) {
+            List<Long> deleteIds = Lists.newLinkedList();
+            Map<String, Map<String, Map<String, List<Long>>>> configMap
+                    = getConfigMapWithIds(Long.valueOf(hospitalId), hisNames, uniqueNames);
+            lisConfigList.forEach(lisConfig -> {
+                lisConfig.setHospitalId(Long.valueOf(hospitalId));
+                lisConfig.setModifier(userId);
+                lisConfig.setGmtModified(now);
+                if (lisConfig.getId() == null) {
+                    if (configMap.containsKey(lisConfig.getHisName())) {
+                        if (lisConfig.getHisDetailName() == null
+                                && configMap.get(lisConfig.getHisName()).containsKey("")) {
+                            if (ListUtil.isNotEmpty(configMap.get(lisConfig.getHisName()).get("").get(lisConfig.getUniqueName()))) {
+                                deleteIds.addAll(configMap.get(lisConfig.getHisName()).get("").get(lisConfig.getUniqueName()));
+                            }
+                        } else if (configMap.get(lisConfig.getHisName()).containsKey(lisConfig.getHisDetailName())) {
+                            if (ListUtil.isNotEmpty(configMap.get(lisConfig.getHisName()).get(lisConfig.getHisDetailName()).get(lisConfig.getUniqueName()))) {
+                                deleteIds.addAll(configMap
+                                        .get(lisConfig.getHisName())
+                                        .get(lisConfig.getHisDetailName())
+                                        .get(lisConfig.getUniqueName()));
+                            }
                         }
                     }
+                    lisConfig.setCreator(userId);
+                    lisConfig.setGmtCreate(now);
                 }
-                lisConfig.setCreator(userId);
-                lisConfig.setGmtCreate(now);
-            }
-            if (lisConfig.getIsDeleted() == null) {
-                lisConfig.setIsDeleted(IsDeleteEnum.N.getKey());
-            }
-        });
-
-        //标准术语校验
-        List<String> errorNumList = Lists.newLinkedList();
-        ConceptVO conceptVO = new ConceptVO();
-        conceptVO.setNames(uniqueNames);
-        conceptVO.setType(ConceptTypeEnum.LisPack.getKey());
-        RespDTO<List<String>> respLisPackDTO = cdssCoreClient.getConceptNames(conceptVO);
-        RespDTOUtil.respNGDealCover(respLisPackDTO, "标准术语校验失败");
-        List<String> lisPackNames = respLisPackDTO.data;
-        conceptVO.setType(ConceptTypeEnum.Lis.getKey());
-        RespDTO<List<String>> respLisDTO = cdssCoreClient.getConceptNames(conceptVO);
-        RespDTOUtil.respNGDealCover(respLisDTO, "标准术语校验失败");
-        List<String> lisNames = respLisDTO.data;
-        for (int i = 0; i < lisConfigList.size(); i++) {
-            if (StringUtil.isBlank(lisConfigList.get(i).getHisDetailName())) {
-                if (!lisPackNames.contains(lisConfigList.get(i).getUniqueName())) {
-                    errorNumList.add(String.valueOf(i + 2));
+                if (lisConfig.getIsDeleted() == null) {
+                    lisConfig.setIsDeleted(IsDeleteEnum.N.getKey());
                 }
-            } else {
-                if (!lisNames.contains(lisConfigList.get(i).getUniqueName())) {
-                    errorNumList.add(String.valueOf(i + 2));
+            });
+
+            //标准术语校验
+            List<String> errorNumList = Lists.newLinkedList();
+            ConceptVO conceptVO = new ConceptVO();
+            conceptVO.setNames(uniqueNames);
+            conceptVO.setType(ConceptTypeEnum.LisPack.getKey());
+            RespDTO<List<String>> respLisPackDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTOUtil.respNGDealCover(respLisPackDTO, "标准术语校验失败");
+            List<String> lisPackNames = respLisPackDTO.data;
+            conceptVO.setType(ConceptTypeEnum.Lis.getKey());
+            RespDTO<List<String>> respLisDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTOUtil.respNGDealCover(respLisDTO, "标准术语校验失败");
+            List<String> lisNames = respLisDTO.data;
+            for (int i = 0; i < lisConfigList.size(); i++) {
+                if (StringUtil.isBlank(lisConfigList.get(i).getHisDetailName())) {
+                    if (!lisPackNames.contains(lisConfigList.get(i).getUniqueName())) {
+                        errorNumList.add(String.valueOf(i + 2));
+                    }
+                } else {
+                    if (!lisNames.contains(lisConfigList.get(i).getUniqueName())) {
+                        errorNumList.add(String.valueOf(i + 2));
+                    }
                 }
             }
-        }
-        if (ListUtil.isNotEmpty(errorNumList)) {
-            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计空行)标准术语在数据库中不存在:"
-                            + errorNumList.stream().collect(Collectors.joining("、"))
-                            + "。导入取消,请修改后再试。");
-        }
-
-        //重复数据过滤
-        lisConfigList = lisConfigList
-                .stream()
-                .distinct()
-                .collect(Collectors.toList());
+            if (ListUtil.isNotEmpty(errorNumList)) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "以下行数(不计空行)标准术语在数据库中不存在:"
+                                + errorNumList.stream().collect(Collectors.joining("、"))
+                                + "。导入取消,请修改后再试。");
+            }
 
-        //删除已存在映射关系
-        IdListVO idListVO = new IdListVO();
-        idListVO.setIds(deleteIds);
-        deleteRecords(idListVO);
-        lisConfigService.saveOrUpdateBatch(lisConfigList);
+            //重复数据过滤
+            lisConfigList = lisConfigList
+                    .stream()
+                    .distinct()
+                    .collect(Collectors.toList());
+
+            //删除已存在映射关系
+            IdListVO idListVO = new IdListVO();
+            idListVO.setIds(deleteIds);
+            deleteRecords(idListVO);
+            lisConfigService.saveOrUpdateBatch(lisConfigList);
+        }
         return true;
     }
 

+ 52 - 50
src/main/java/com/diagbot/facade/NurseConfigFacade.java

@@ -286,61 +286,63 @@ public class NurseConfigFacade {
 
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
-        List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, List<Long>>> configMap
-                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
-        nurseConfigList.forEach(nurseConfig -> {
-            nurseConfig.setHospitalId(Long.valueOf(hospitalId));
-            nurseConfig.setModifier(userId);
-            nurseConfig.setGmtModified(now);
-            if (nurseConfig.getId() == null) {
-                if (configMap.containsKey(nurseConfig.getHisName())
-                        && ListUtil.isNotEmpty(configMap.get(nurseConfig.getHisName()).get(nurseConfig.getUniqueName()))) {
-                    deleteIds.addAll(configMap.get(nurseConfig.getHisName()).get(nurseConfig.getUniqueName()));
+        synchronized (this) {
+            List<Long> deleteIds = Lists.newLinkedList();
+            Map<String, Map<String, List<Long>>> configMap
+                    = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
+            nurseConfigList.forEach(nurseConfig -> {
+                nurseConfig.setHospitalId(Long.valueOf(hospitalId));
+                nurseConfig.setModifier(userId);
+                nurseConfig.setGmtModified(now);
+                if (nurseConfig.getId() == null) {
+                    if (configMap.containsKey(nurseConfig.getHisName())
+                            && ListUtil.isNotEmpty(configMap.get(nurseConfig.getHisName()).get(nurseConfig.getUniqueName()))) {
+                        deleteIds.addAll(configMap.get(nurseConfig.getHisName()).get(nurseConfig.getUniqueName()));
+                    }
+                    nurseConfig.setCreator(userId);
+                    nurseConfig.setGmtCreate(now);
                 }
-                nurseConfig.setCreator(userId);
-                nurseConfig.setGmtCreate(now);
-            }
-            if (nurseConfig.getIsDeleted() == null) {
-                nurseConfig.setIsDeleted(IsDeleteEnum.N.getKey());
-            }
-        });
+                if (nurseConfig.getIsDeleted() == null) {
+                    nurseConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+                }
+            });
 
-        //标准术语校验
-        List<String> errorNumList = Lists.newLinkedList();
-        List<String> uniqueNames = nurseConfigList.stream()
-                .map(i -> i.getUniqueName())
-                .distinct()
-                .collect(Collectors.toList());
-        ConceptVO conceptVO = new ConceptVO();
-        conceptVO.setNames(uniqueNames);
-        conceptVO.setType(ConceptTypeEnum.Nurse.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
-        RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> names = respDTO.data;
-        for (int i = 0; i < nurseConfigList.size(); i++) {
-            if (!names.contains(nurseConfigList.get(i).getUniqueName())) {
-                errorNumList.add(String.valueOf(i + 2));
+            //标准术语校验
+            List<String> errorNumList = Lists.newLinkedList();
+            List<String> uniqueNames = nurseConfigList.stream()
+                    .map(i -> i.getUniqueName())
+                    .distinct()
+                    .collect(Collectors.toList());
+            ConceptVO conceptVO = new ConceptVO();
+            conceptVO.setNames(uniqueNames);
+            conceptVO.setType(ConceptTypeEnum.Nurse.getKey());
+            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
+            List<String> names = respDTO.data;
+            for (int i = 0; i < nurseConfigList.size(); i++) {
+                if (!names.contains(nurseConfigList.get(i).getUniqueName())) {
+                    errorNumList.add(String.valueOf(i + 2));
+                }
+            }
+            if (ListUtil.isNotEmpty(errorNumList)) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "以下行数(不计空行)标准术语在数据库中不存在:"
+                                + errorNumList.stream().collect(Collectors.joining("、"))
+                                + "。导入取消,请修改后再试。");
             }
-        }
-        if (ListUtil.isNotEmpty(errorNumList)) {
-            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计空行)标准术语在数据库中不存在:"
-                            + errorNumList.stream().collect(Collectors.joining("、"))
-                            + "。导入取消,请修改后再试。");
-        }
 
-        //重复数据过滤
-        nurseConfigList = nurseConfigList
-                .stream()
-                .distinct()
-                .collect(Collectors.toList());
+            //重复数据过滤
+            nurseConfigList = nurseConfigList
+                    .stream()
+                    .distinct()
+                    .collect(Collectors.toList());
 
-        //删除已存在映射关系
-        IdListVO idListVO = new IdListVO();
-        idListVO.setIds(deleteIds);
-        deleteRecords(idListVO);
-        nurseConfigService.saveOrUpdateBatch(nurseConfigList);
+            //删除已存在映射关系
+            IdListVO idListVO = new IdListVO();
+            idListVO.setIds(deleteIds);
+            deleteRecords(idListVO);
+            nurseConfigService.saveOrUpdateBatch(nurseConfigList);
+        }
         return true;
     }
 

+ 52 - 50
src/main/java/com/diagbot/facade/OperationConfigFacade.java

@@ -286,61 +286,63 @@ public class OperationConfigFacade {
 
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
-        List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, List<Long>>> configMap
-                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
-        operationConfigList.forEach(operationConfig -> {
-            operationConfig.setHospitalId(Long.valueOf(hospitalId));
-            operationConfig.setModifier(userId);
-            operationConfig.setGmtModified(now);
-            if (operationConfig.getId() == null) {
-                if (configMap.containsKey(operationConfig.getHisName())
-                        && ListUtil.isNotEmpty(configMap.get(operationConfig.getHisName()).get(operationConfig.getUniqueName()))) {
-                    deleteIds.addAll(configMap.get(operationConfig.getHisName()).get(operationConfig.getUniqueName()));
+        synchronized (this) {
+            List<Long> deleteIds = Lists.newLinkedList();
+            Map<String, Map<String, List<Long>>> configMap
+                    = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
+            operationConfigList.forEach(operationConfig -> {
+                operationConfig.setHospitalId(Long.valueOf(hospitalId));
+                operationConfig.setModifier(userId);
+                operationConfig.setGmtModified(now);
+                if (operationConfig.getId() == null) {
+                    if (configMap.containsKey(operationConfig.getHisName())
+                            && ListUtil.isNotEmpty(configMap.get(operationConfig.getHisName()).get(operationConfig.getUniqueName()))) {
+                        deleteIds.addAll(configMap.get(operationConfig.getHisName()).get(operationConfig.getUniqueName()));
+                    }
+                    operationConfig.setCreator(userId);
+                    operationConfig.setGmtCreate(now);
                 }
-                operationConfig.setCreator(userId);
-                operationConfig.setGmtCreate(now);
-            }
-            if (operationConfig.getIsDeleted() == null) {
-                operationConfig.setIsDeleted(IsDeleteEnum.N.getKey());
-            }
-        });
+                if (operationConfig.getIsDeleted() == null) {
+                    operationConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+                }
+            });
 
-        //标准术语校验
-        List<String> errorNumList = Lists.newLinkedList();
-        List<String> uniqueNames = operationConfigList.stream()
-                .map(i -> i.getUniqueName())
-                .distinct()
-                .collect(Collectors.toList());
-        ConceptVO conceptVO = new ConceptVO();
-        conceptVO.setNames(uniqueNames);
-        conceptVO.setType(ConceptTypeEnum.Operation.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
-        RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> names = respDTO.data;
-        for (int i = 0; i < operationConfigList.size(); i++) {
-            if (!names.contains(operationConfigList.get(i).getUniqueName())) {
-                errorNumList.add(String.valueOf(i + 2));
+            //标准术语校验
+            List<String> errorNumList = Lists.newLinkedList();
+            List<String> uniqueNames = operationConfigList.stream()
+                    .map(i -> i.getUniqueName())
+                    .distinct()
+                    .collect(Collectors.toList());
+            ConceptVO conceptVO = new ConceptVO();
+            conceptVO.setNames(uniqueNames);
+            conceptVO.setType(ConceptTypeEnum.Operation.getKey());
+            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
+            List<String> names = respDTO.data;
+            for (int i = 0; i < operationConfigList.size(); i++) {
+                if (!names.contains(operationConfigList.get(i).getUniqueName())) {
+                    errorNumList.add(String.valueOf(i + 2));
+                }
+            }
+            if (ListUtil.isNotEmpty(errorNumList)) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "以下行数(不计空行)标准术语在数据库中不存在:"
+                                + errorNumList.stream().collect(Collectors.joining("、"))
+                                + "。导入取消,请修改后再试。");
             }
-        }
-        if (ListUtil.isNotEmpty(errorNumList)) {
-            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计空行)标准术语在数据库中不存在:"
-                            + errorNumList.stream().collect(Collectors.joining("、"))
-                            + "。导入取消,请修改后再试。");
-        }
 
-        //重复数据过滤
-        operationConfigList = operationConfigList
-                .stream()
-                .distinct()
-                .collect(Collectors.toList());
+            //重复数据过滤
+            operationConfigList = operationConfigList
+                    .stream()
+                    .distinct()
+                    .collect(Collectors.toList());
 
-        //删除已存在映射关系
-        IdListVO idListVO = new IdListVO();
-        idListVO.setIds(deleteIds);
-        deleteRecords(idListVO);
-        operationConfigService.saveOrUpdateBatch(operationConfigList);
+            //删除已存在映射关系
+            IdListVO idListVO = new IdListVO();
+            idListVO.setIds(deleteIds);
+            deleteRecords(idListVO);
+            operationConfigService.saveOrUpdateBatch(operationConfigList);
+        }
         return true;
     }
 

+ 52 - 50
src/main/java/com/diagbot/facade/PacsConfigFacade.java

@@ -285,61 +285,63 @@ public class PacsConfigFacade {
 
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
-        List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, List<Long>>> configMap
-                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
-        pacsConfigList.forEach(pacsConfig -> {
-            pacsConfig.setHospitalId(Long.valueOf(hospitalId));
-            pacsConfig.setModifier(userId);
-            pacsConfig.setGmtModified(now);
-            if (pacsConfig.getId() == null) {
-                if (configMap.containsKey(pacsConfig.getHisName())
-                        && ListUtil.isNotEmpty(configMap.get(pacsConfig.getHisName()).get(pacsConfig.getUniqueName()))) {
-                    deleteIds.addAll(configMap.get(pacsConfig.getHisName()).get(pacsConfig.getUniqueName()));
+        synchronized (this) {
+            List<Long> deleteIds = Lists.newLinkedList();
+            Map<String, Map<String, List<Long>>> configMap
+                    = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
+            pacsConfigList.forEach(pacsConfig -> {
+                pacsConfig.setHospitalId(Long.valueOf(hospitalId));
+                pacsConfig.setModifier(userId);
+                pacsConfig.setGmtModified(now);
+                if (pacsConfig.getId() == null) {
+                    if (configMap.containsKey(pacsConfig.getHisName())
+                            && ListUtil.isNotEmpty(configMap.get(pacsConfig.getHisName()).get(pacsConfig.getUniqueName()))) {
+                        deleteIds.addAll(configMap.get(pacsConfig.getHisName()).get(pacsConfig.getUniqueName()));
+                    }
+                    pacsConfig.setCreator(userId);
+                    pacsConfig.setGmtCreate(now);
                 }
-                pacsConfig.setCreator(userId);
-                pacsConfig.setGmtCreate(now);
-            }
-            if (pacsConfig.getIsDeleted() == null) {
-                pacsConfig.setIsDeleted(IsDeleteEnum.N.getKey());
-            }
-        });
+                if (pacsConfig.getIsDeleted() == null) {
+                    pacsConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+                }
+            });
 
-        //标准术语校验
-        List<String> errorNumList = Lists.newLinkedList();
-        List<String> uniqueNames = pacsConfigList.stream()
-                .map(i -> i.getUniqueName())
-                .distinct()
-                .collect(Collectors.toList());
-        ConceptVO conceptVO = new ConceptVO();
-        conceptVO.setNames(uniqueNames);
-        conceptVO.setType(ConceptTypeEnum.Pacs.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
-        RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> names = respDTO.data;
-        for (int i = 0; i < pacsConfigList.size(); i++) {
-            if (!names.contains(pacsConfigList.get(i).getUniqueName())) {
-                errorNumList.add(String.valueOf(i + 2));
+            //标准术语校验
+            List<String> errorNumList = Lists.newLinkedList();
+            List<String> uniqueNames = pacsConfigList.stream()
+                    .map(i -> i.getUniqueName())
+                    .distinct()
+                    .collect(Collectors.toList());
+            ConceptVO conceptVO = new ConceptVO();
+            conceptVO.setNames(uniqueNames);
+            conceptVO.setType(ConceptTypeEnum.Pacs.getKey());
+            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
+            List<String> names = respDTO.data;
+            for (int i = 0; i < pacsConfigList.size(); i++) {
+                if (!names.contains(pacsConfigList.get(i).getUniqueName())) {
+                    errorNumList.add(String.valueOf(i + 2));
+                }
+            }
+            if (ListUtil.isNotEmpty(errorNumList)) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "以下行数(不计空行)标准术语在数据库中不存在:"
+                                + errorNumList.stream().collect(Collectors.joining("、"))
+                                + "。导入取消,请修改后再试。");
             }
-        }
-        if (ListUtil.isNotEmpty(errorNumList)) {
-            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计空行)标准术语在数据库中不存在:"
-                            + errorNumList.stream().collect(Collectors.joining("、"))
-                            + "。导入取消,请修改后再试。");
-        }
 
-        //重复数据过滤
-        pacsConfigList = pacsConfigList
-                .stream()
-                .distinct()
-                .collect(Collectors.toList());
+            //重复数据过滤
+            pacsConfigList = pacsConfigList
+                    .stream()
+                    .distinct()
+                    .collect(Collectors.toList());
 
-        //删除已存在映射关系
-        IdListVO idListVO = new IdListVO();
-        idListVO.setIds(deleteIds);
-        deleteRecords(idListVO);
-        pacsConfigService.saveOrUpdateBatch(pacsConfigList);
+            //删除已存在映射关系
+            IdListVO idListVO = new IdListVO();
+            idListVO.setIds(deleteIds);
+            deleteRecords(idListVO);
+            pacsConfigService.saveOrUpdateBatch(pacsConfigList);
+        }
         return true;
     }
 

+ 10 - 0
src/main/java/com/diagbot/facade/RetrievalFacade.java

@@ -41,6 +41,10 @@ public class RetrievalFacade {
     private ScaleConfigFacade scaleConfigFacade;
     @Autowired
     private NurseConfigFacade nurseConfigFacade;
+    @Autowired
+    private TcmdiseaseConfigFacade tcmdiseaseConfigFacade;
+    @Autowired
+    private TcmsyndromeConfigFacade tcmsyndromeConfigFacade;
 
     /**
      * 检索
@@ -98,6 +102,12 @@ public class RetrievalFacade {
                     case 11:
                         retrievalDTO.setNursenames(nurseConfigFacade.getNurses(retrievalVO));
                         break;
+                    case 12:
+                        retrievalDTO.setTcmdiseaseNames(tcmdiseaseConfigFacade.getTcmdiseases(retrievalVO));
+                        break;
+                    case 13:
+                        retrievalDTO.setTcmsyndromeNames(tcmsyndromeConfigFacade.getTcmsyndromes(retrievalVO));
+                        break;
                 }
             }
         }

+ 52 - 50
src/main/java/com/diagbot/facade/ScaleConfigFacade.java

@@ -286,61 +286,63 @@ public class ScaleConfigFacade {
 
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
-        List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, List<Long>>> configMap
-                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
-        scaleConfigList.forEach(scaleConfig -> {
-            scaleConfig.setHospitalId(Long.valueOf(hospitalId));
-            scaleConfig.setModifier(userId);
-            scaleConfig.setGmtModified(now);
-            if (scaleConfig.getId() == null) {
-                if (configMap.containsKey(scaleConfig.getHisName())
-                        && ListUtil.isNotEmpty(configMap.get(scaleConfig.getHisName()).get(scaleConfig.getUniqueName()))) {
-                    deleteIds.addAll(configMap.get(scaleConfig.getHisName()).get(scaleConfig.getUniqueName()));
+        synchronized (this) {
+            List<Long> deleteIds = Lists.newLinkedList();
+            Map<String, Map<String, List<Long>>> configMap
+                    = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
+            scaleConfigList.forEach(scaleConfig -> {
+                scaleConfig.setHospitalId(Long.valueOf(hospitalId));
+                scaleConfig.setModifier(userId);
+                scaleConfig.setGmtModified(now);
+                if (scaleConfig.getId() == null) {
+                    if (configMap.containsKey(scaleConfig.getHisName())
+                            && ListUtil.isNotEmpty(configMap.get(scaleConfig.getHisName()).get(scaleConfig.getUniqueName()))) {
+                        deleteIds.addAll(configMap.get(scaleConfig.getHisName()).get(scaleConfig.getUniqueName()));
+                    }
+                    scaleConfig.setCreator(userId);
+                    scaleConfig.setGmtCreate(now);
                 }
-                scaleConfig.setCreator(userId);
-                scaleConfig.setGmtCreate(now);
-            }
-            if (scaleConfig.getIsDeleted() == null) {
-                scaleConfig.setIsDeleted(IsDeleteEnum.N.getKey());
-            }
-        });
+                if (scaleConfig.getIsDeleted() == null) {
+                    scaleConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+                }
+            });
 
-        //标准术语校验
-        List<String> errorNumList = Lists.newLinkedList();
-        List<String> uniqueNames = scaleConfigList.stream()
-                .map(i -> i.getUniqueName())
-                .distinct()
-                .collect(Collectors.toList());
-        ConceptVO conceptVO = new ConceptVO();
-        conceptVO.setNames(uniqueNames);
-        conceptVO.setType(ConceptTypeEnum.Scale.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
-        RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> names = respDTO.data;
-        for (int i = 0; i < scaleConfigList.size(); i++) {
-            if (!names.contains(scaleConfigList.get(i).getUniqueName())) {
-                errorNumList.add(String.valueOf(i + 2));
+            //标准术语校验
+            List<String> errorNumList = Lists.newLinkedList();
+            List<String> uniqueNames = scaleConfigList.stream()
+                    .map(i -> i.getUniqueName())
+                    .distinct()
+                    .collect(Collectors.toList());
+            ConceptVO conceptVO = new ConceptVO();
+            conceptVO.setNames(uniqueNames);
+            conceptVO.setType(ConceptTypeEnum.Scale.getKey());
+            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
+            List<String> names = respDTO.data;
+            for (int i = 0; i < scaleConfigList.size(); i++) {
+                if (!names.contains(scaleConfigList.get(i).getUniqueName())) {
+                    errorNumList.add(String.valueOf(i + 2));
+                }
+            }
+            if (ListUtil.isNotEmpty(errorNumList)) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "以下行数(不计空行)标准术语在数据库中不存在:"
+                                + errorNumList.stream().collect(Collectors.joining("、"))
+                                + "。导入取消,请修改后再试。");
             }
-        }
-        if (ListUtil.isNotEmpty(errorNumList)) {
-            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计空行)标准术语在数据库中不存在:"
-                            + errorNumList.stream().collect(Collectors.joining("、"))
-                            + "。导入取消,请修改后再试。");
-        }
 
-        //重复数据过滤
-        scaleConfigList = scaleConfigList
-                .stream()
-                .distinct()
-                .collect(Collectors.toList());
+            //重复数据过滤
+            scaleConfigList = scaleConfigList
+                    .stream()
+                    .distinct()
+                    .collect(Collectors.toList());
 
-        //删除已存在映射关系
-        IdListVO idListVO = new IdListVO();
-        idListVO.setIds(deleteIds);
-        deleteRecords(idListVO);
-        scaleConfigService.saveOrUpdateBatch(scaleConfigList);
+            //删除已存在映射关系
+            IdListVO idListVO = new IdListVO();
+            idListVO.setIds(deleteIds);
+            deleteRecords(idListVO);
+            scaleConfigService.saveOrUpdateBatch(scaleConfigList);
+        }
         return true;
     }
 

+ 496 - 0
src/main/java/com/diagbot/facade/TcmdiseaseConfigFacade.java

@@ -0,0 +1,496 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.client.CdssCoreClient;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.TcmdiseaseInfoDTO;
+import com.diagbot.entity.TcmdiseaseConfig;
+import com.diagbot.enums.ConceptTypeEnum;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.TcmdiseaseConfigService;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ExcelUtils;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.util.SysUserUtils;
+import com.diagbot.vo.ConceptVO;
+import com.diagbot.vo.IdListVO;
+import com.diagbot.vo.IdVO;
+import com.diagbot.vo.RetrievalVO;
+import com.diagbot.vo.TcmdiseaseConfigListVO;
+import com.diagbot.vo.TcmdiseaseConfigPageVO;
+import com.google.common.collect.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/5/13 15:07
+ */
+@Component
+public class TcmdiseaseConfigFacade {
+    @Autowired
+    private TcmdiseaseConfigService tcmdiseaseConfigService;
+    @Autowired
+    private CdssCoreClient cdssCoreClient;
+
+    /**
+     * 判断是否已存在
+     *
+     * @param tcmdiseaseConfig
+     * @return
+     */
+    public Boolean isExistRecord(TcmdiseaseConfig tcmdiseaseConfig) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        QueryWrapper<TcmdiseaseConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", Long.valueOf(hospitalId))
+                .eq("his_name", tcmdiseaseConfig.getHisName())
+                .eq("unique_name", tcmdiseaseConfig.getUniqueName());
+        TcmdiseaseConfig oldRecord = tcmdiseaseConfigService.getOne(queryWrapper, false);
+        if (tcmdiseaseConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法添加");
+        }
+        if (tcmdiseaseConfig.getId() != null
+                && oldRecord != null
+                && !tcmdiseaseConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        return false;
+    }
+
+    /**
+     * 保存记录-单条
+     *
+     * @param tcmdiseaseConfig
+     * @return
+     */
+    public Boolean saveOrUpdateRecord(TcmdiseaseConfig tcmdiseaseConfig) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+        tcmdiseaseConfig.setHospitalId(Long.valueOf(hospitalId));
+        tcmdiseaseConfig.setModifier(userId);
+        tcmdiseaseConfig.setGmtModified(now);
+        QueryWrapper<TcmdiseaseConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", Long.valueOf(hospitalId))
+                .eq("his_name", tcmdiseaseConfig.getHisName())
+                .eq("unique_name", tcmdiseaseConfig.getUniqueName());
+        TcmdiseaseConfig oldRecord = tcmdiseaseConfigService.getOne(queryWrapper, false);
+        if (tcmdiseaseConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法添加");
+        }
+        if (tcmdiseaseConfig.getId() != null
+                && oldRecord != null
+                && !tcmdiseaseConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        //新增数据
+        if (tcmdiseaseConfig.getId() == null) {
+            tcmdiseaseConfig.setCreator(userId);
+            tcmdiseaseConfig.setGmtCreate(now);
+        }
+        if (tcmdiseaseConfig.getIsDeleted() == null) {
+            tcmdiseaseConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+        }
+        tcmdiseaseConfigService.saveOrUpdate(tcmdiseaseConfig);
+        return true;
+    }
+
+    /**
+     * 保存记录-批量
+     *
+     * @param tcmdiseaseConfigListVO
+     * @return
+     */
+    public Boolean saveOrUpdateRecords(TcmdiseaseConfigListVO tcmdiseaseConfigListVO) {
+        if (ListUtil.isEmpty(tcmdiseaseConfigListVO.getTcmdiseaseConfigList())) {
+            return false;
+        }
+        return saveOrUpdateRecords(tcmdiseaseConfigListVO.getTcmdiseaseConfigList());
+    }
+
+    /**
+     * 批量保存
+     *
+     * @param tcmdiseaseConfigList
+     * @return
+     */
+    public Boolean saveOrUpdateRecords(List<TcmdiseaseConfig> tcmdiseaseConfigList) {
+        if (ListUtil.isEmpty(tcmdiseaseConfigList)) {
+            return false;
+        }
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+
+        //数据不完整的不保存
+        //过滤外部名称或公表名为空的数据
+        tcmdiseaseConfigList = tcmdiseaseConfigList
+                .stream()
+                .filter(i -> StringUtil.isNotBlank(i.getHisName()))
+                .filter(i -> StringUtil.isNotBlank(i.getUniqueName()))
+                .collect(Collectors.toList());
+
+        // 验证数据是否已存在,已存在的先删除
+        // 没id的删除重新插入,有id的更新
+        List<Long> deleteIds = Lists.newLinkedList();
+        Map<String, Map<String, List<Long>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
+        tcmdiseaseConfigList.forEach(tcmdiseaseConfig -> {
+            tcmdiseaseConfig.setHospitalId(Long.valueOf(hospitalId));
+            tcmdiseaseConfig.setModifier(userId);
+            tcmdiseaseConfig.setGmtModified(now);
+            if (tcmdiseaseConfig.getId() == null) {
+                if (configMap.containsKey(tcmdiseaseConfig.getHisName())
+                        && ListUtil.isNotEmpty(configMap.get(tcmdiseaseConfig.getHisName()).get(tcmdiseaseConfig.getUniqueName()))) {
+                    deleteIds.addAll(configMap.get(tcmdiseaseConfig.getHisName()).get(tcmdiseaseConfig.getUniqueName()));
+                }
+                tcmdiseaseConfig.setCreator(userId);
+                tcmdiseaseConfig.setGmtCreate(now);
+            }
+            if (tcmdiseaseConfig.getIsDeleted() == null) {
+                tcmdiseaseConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+            }
+        });
+        //删除已存在映射关系
+        IdListVO idListVO = new IdListVO();
+        idListVO.setIds(deleteIds);
+        deleteRecords(idListVO);
+        tcmdiseaseConfigService.saveOrUpdateBatch(tcmdiseaseConfigList);
+        return true;
+    }
+
+    /**
+     * 删除记录-单条
+     *
+     * @param idVO
+     * @return
+     */
+    public Boolean deleteRecord(IdVO idVO) {
+        UpdateWrapper<TcmdiseaseConfig> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("id", idVO.getId())
+                .set("is_deleted", IsDeleteEnum.Y.getKey());
+        tcmdiseaseConfigService.removeById(idVO.getId());
+        return true;
+    }
+
+    /**
+     * 删除记录-批量
+     *
+     * @param idListVO
+     * @return
+     */
+    public Boolean deleteRecords(IdListVO idListVO) {
+        if (ListUtil.isEmpty(idListVO.getIds())) {
+            return false;
+        }
+        UpdateWrapper<TcmdiseaseConfig> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.in("id", idListVO.getIds())
+                .set("is_deleted", IsDeleteEnum.Y.getKey());
+        tcmdiseaseConfigService.removeByIds(idListVO.getIds());
+        return true;
+    }
+
+    /**
+     * 分页查询
+     *
+     * @param tcmdiseaseConfigPageVO
+     * @return
+     */
+    public IPage<TcmdiseaseConfig> getPage(TcmdiseaseConfigPageVO tcmdiseaseConfigPageVO) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        tcmdiseaseConfigPageVO.setHospitalId(Long.valueOf(hospitalId));
+        return tcmdiseaseConfigService.getPage(tcmdiseaseConfigPageVO);
+    }
+
+    /**
+     * 数据导入
+     *
+     * @param file
+     */
+    public void importExcel(MultipartFile file) {
+        List<TcmdiseaseConfig> tcmdiseaseConfigList = ExcelUtils.importExcel(file, 0, 1, TcmdiseaseConfig.class);
+        if (ListUtil.isNotEmpty(tcmdiseaseConfigList)) {
+            importExcelRecords(tcmdiseaseConfigList);
+        } else {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "校验失败,导入数据不能为空");
+        }
+    }
+
+    /**
+     * 数据导入
+     *
+     * @param tcmdiseaseConfigList
+     * @return
+     */
+    public Boolean importExcelRecords(List<TcmdiseaseConfig> tcmdiseaseConfigList) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+
+
+        //1、数据完整性校验
+        //2、去除前后空格
+        //过滤空数据,保留重复数据,方便计行
+        tcmdiseaseConfigList = tcmdiseaseConfigList.stream()
+                .filter(i -> StringUtil.isNotBlank(i.getHisName())
+                        || StringUtil.isNotBlank(i.getUniqueCode())
+                        || StringUtil.isNotBlank(i.getUniqueName()))
+                .collect(Collectors.toList());
+        if (ListUtil.isEmpty(tcmdiseaseConfigList)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "校验失败,导入数据不能为空");
+        }
+        List<String> emptyNumList = Lists.newLinkedList();
+        for (int i = 0; i < tcmdiseaseConfigList.size(); i++) {
+            if (StringUtil.isBlank(tcmdiseaseConfigList.get(i).getHisName())
+                    || StringUtil.isBlank(tcmdiseaseConfigList.get(i).getUniqueName())) {
+                emptyNumList.add(String.valueOf(i + 2));
+            }
+            if (StringUtil.isNotBlank(tcmdiseaseConfigList.get(i).getHisName())) {
+                tcmdiseaseConfigList.get(i).setHisName(tcmdiseaseConfigList.get(i).getHisName().trim());
+            }
+            if (StringUtil.isNotBlank(tcmdiseaseConfigList.get(i).getUniqueName())) {
+                tcmdiseaseConfigList.get(i).setUniqueName(tcmdiseaseConfigList.get(i).getUniqueName().trim());
+            }
+            if (StringUtil.isNotBlank(tcmdiseaseConfigList.get(i).getUniqueCode())) {
+                tcmdiseaseConfigList.get(i).setUniqueCode(tcmdiseaseConfigList.get(i).getUniqueCode().trim());
+            } else {
+                tcmdiseaseConfigList.get(i).setUniqueCode(null);
+            }
+        }
+
+        if (ListUtil.isNotEmpty(emptyNumList)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "以下行数(不计入空行)存在不完整数据:"
+                    + emptyNumList.stream().collect(Collectors.joining("、"))
+                    + "。导入取消,请修改后再试。\n");
+        }
+
+
+        // 验证数据是否已存在,已存在的先删除
+        // 没id的删除重新插入,有id的更新
+        synchronized (this) {
+            List<Long> deleteIds = Lists.newLinkedList();
+            Map<String, Map<String, List<Long>>> configMap
+                    = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
+            tcmdiseaseConfigList.forEach(tcmdiseaseConfig -> {
+                tcmdiseaseConfig.setHospitalId(Long.valueOf(hospitalId));
+                tcmdiseaseConfig.setModifier(userId);
+                tcmdiseaseConfig.setGmtModified(now);
+                if (tcmdiseaseConfig.getId() == null) {
+                    if (configMap.containsKey(tcmdiseaseConfig.getHisName())
+                            && ListUtil.isNotEmpty(configMap.get(tcmdiseaseConfig.getHisName()).get(tcmdiseaseConfig.getUniqueName()))) {
+                        deleteIds.addAll(configMap.get(tcmdiseaseConfig.getHisName()).get(tcmdiseaseConfig.getUniqueName()));
+                    }
+                    tcmdiseaseConfig.setCreator(userId);
+                    tcmdiseaseConfig.setGmtCreate(now);
+                }
+                if (tcmdiseaseConfig.getIsDeleted() == null) {
+                    tcmdiseaseConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+                }
+            });
+
+            //标准术语校验
+            List<String> errorNumList = Lists.newLinkedList();
+            List<String> uniqueNames = tcmdiseaseConfigList.stream()
+                    .map(i -> i.getUniqueName())
+                    .distinct()
+                    .collect(Collectors.toList());
+            ConceptVO conceptVO = new ConceptVO();
+            conceptVO.setNames(uniqueNames);
+            conceptVO.setType(ConceptTypeEnum.Tcmdisease.getKey());
+            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
+            List<String> names = respDTO.data;
+            for (int i = 0; i < tcmdiseaseConfigList.size(); i++) {
+                if (!names.contains(tcmdiseaseConfigList.get(i).getUniqueName())) {
+                    errorNumList.add(String.valueOf(i + 2));
+                }
+            }
+            if (ListUtil.isNotEmpty(errorNumList)) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "以下行数(不计空行)标准术语在数据库中不存在:"
+                                + errorNumList.stream().collect(Collectors.joining("、"))
+                                + "。导入取消,请修改后再试。");
+            }
+
+            //重复数据过滤
+            tcmdiseaseConfigList = tcmdiseaseConfigList
+                    .stream()
+                    .distinct()
+                    .collect(Collectors.toList());
+
+            //删除已存在映射关系
+            IdListVO idListVO = new IdListVO();
+            idListVO.setIds(deleteIds);
+            deleteRecords(idListVO);
+            tcmdiseaseConfigService.saveOrUpdateBatch(tcmdiseaseConfigList);
+        }
+        return true;
+    }
+
+    /**
+     * 获取映射关系-公表名
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return
+     */
+    public Map<String, Map<String, Long>> getConfigMap(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, Long>> retMap = new HashMap<>();
+        QueryWrapper<TcmdiseaseConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId);
+        if (ListUtil.isNotEmpty(hisNames)) {
+            queryWrapper.in("his_name", hisNames);
+        }
+        if (ListUtil.isNotEmpty(uniqueNames)) {
+            queryWrapper.in("unique_name", uniqueNames);
+        }
+        List<TcmdiseaseConfig> records = tcmdiseaseConfigService.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+        Map<String, List<TcmdiseaseConfig>> configMap = EntityUtil.makeEntityListMap(records, "hisName");
+        for (Map.Entry<String, List<TcmdiseaseConfig>> entry : configMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                retMap.put(entry.getKey(), EntityUtil.makeMapWithKeyValue(entry.getValue(), "uniqueName", "id"));
+            }
+        }
+        return retMap;
+    }
+
+    /**
+     * 获取映射关系-公表名
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return
+     */
+    public Map<String, Map<String, List<Long>>> getConfigMapWithIds(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, List<Long>>> retMap = new HashMap<>();
+        QueryWrapper<TcmdiseaseConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId);
+        if (ListUtil.isNotEmpty(hisNames)) {
+            queryWrapper.in("his_name", hisNames);
+        }
+        if (ListUtil.isNotEmpty(uniqueNames)) {
+            queryWrapper.in("unique_name", uniqueNames);
+        }
+        List<TcmdiseaseConfig> records = tcmdiseaseConfigService.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+        Map<String, List<TcmdiseaseConfig>> configMap = EntityUtil.makeEntityListMap(records, "hisName");
+        for (Map.Entry<String, List<TcmdiseaseConfig>> entry : configMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                Map<String, List<TcmdiseaseConfig>> subMap = EntityUtil.makeEntityListMap(entry.getValue(), "uniqueName");
+                Map<String, List<Long>> subIdMap = new HashMap<>();
+                for (Map.Entry<String, List<TcmdiseaseConfig>> subEntry : subMap.entrySet()) {
+                    subIdMap.put(subEntry.getKey(), subEntry.getValue().stream().map(i -> i.getId()).distinct().collect(Collectors.toList()));
+                }
+                retMap.put(entry.getKey(), subIdMap);
+            }
+        }
+        return retMap;
+    }
+
+    /**
+     * 获取映射关系
+     * Map<uniqueName,Map<hisName,id>>
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return
+     */
+    public Map<String, Map<String, Long>> getUniqueNameConfigMap(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, Long>> retMap = new HashMap<>();
+        QueryWrapper<TcmdiseaseConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId);
+        if (ListUtil.isNotEmpty(hisNames)) {
+            queryWrapper.in("his_name", hisNames);
+        }
+        if (ListUtil.isNotEmpty(uniqueNames)) {
+            queryWrapper.in("unique_name", uniqueNames);
+        }
+        List<TcmdiseaseConfig> records = tcmdiseaseConfigService.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+
+        Map<String, List<TcmdiseaseConfig>> uniqueNameMap = EntityUtil.makeEntityListMap(records, "uniqueName");
+        for (Map.Entry<String, List<TcmdiseaseConfig>> entry : uniqueNameMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                retMap.put(entry.getKey(), EntityUtil.makeMapWithKeyValue(entry.getValue(), "hisName", "id"));
+            }
+        }
+        return retMap;
+    }
+
+    /**
+     * 数据导出
+     *
+     * @param response
+     */
+    public void exportExcel(HttpServletResponse response) {
+        QueryWrapper<TcmdiseaseConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", SysUserUtils.getCurrentHospitalID())
+                .orderByDesc("gmt_modified");
+        List<TcmdiseaseConfig> records = tcmdiseaseConfigService.list(queryWrapper);
+        String fileName = "中医疾病映射.xls";
+        ExcelUtils.exportExcel(records, null, "sheet1", TcmdiseaseConfig.class, fileName, response, 12.8f);
+    }
+
+    /**
+     * 数据导入模板导出
+     *
+     * @param response
+     */
+    public void exportExcelModule(HttpServletResponse response) {
+        String fileName = "中医疾病映射模板.xls";
+        ExcelUtils.exportExcel(new ArrayList<>(), null, "sheet1", TcmdiseaseConfig.class, fileName, response, 12.8f);
+    }
+
+    /**
+     * 中医疾病搜索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    public List<TcmdiseaseInfoDTO> getTcmdiseases(RetrievalVO retrievalVO) {
+        List<TcmdiseaseInfoDTO> tcmdiseaseNames = new ArrayList<>();
+        List<TcmdiseaseConfig> tcmdiseaseConfigList = tcmdiseaseConfigService.getTcmdiseasesIndex(retrievalVO);
+        for (TcmdiseaseConfig tcmdiseaseConfig : tcmdiseaseConfigList) {
+            TcmdiseaseInfoDTO tcmdiseaseInfoDTO = new TcmdiseaseInfoDTO();
+            tcmdiseaseInfoDTO.setCode(tcmdiseaseConfig.getUniqueCode());
+            tcmdiseaseInfoDTO.setName(tcmdiseaseConfig.getHisName());
+            tcmdiseaseNames.add(tcmdiseaseInfoDTO);
+        }
+        return tcmdiseaseNames;
+    }
+}

+ 496 - 0
src/main/java/com/diagbot/facade/TcmsyndromeConfigFacade.java

@@ -0,0 +1,496 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.client.CdssCoreClient;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.TcmsyndromeInfoDTO;
+import com.diagbot.entity.TcmsyndromeConfig;
+import com.diagbot.enums.ConceptTypeEnum;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.TcmsyndromeConfigService;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ExcelUtils;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.util.SysUserUtils;
+import com.diagbot.vo.ConceptVO;
+import com.diagbot.vo.IdListVO;
+import com.diagbot.vo.IdVO;
+import com.diagbot.vo.RetrievalVO;
+import com.diagbot.vo.TcmsyndromeConfigListVO;
+import com.diagbot.vo.TcmsyndromeConfigPageVO;
+import com.google.common.collect.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/5/13 15:07
+ */
+@Component
+public class TcmsyndromeConfigFacade {
+    @Autowired
+    private TcmsyndromeConfigService tcmsyndromeConfigService;
+    @Autowired
+    private CdssCoreClient cdssCoreClient;
+
+    /**
+     * 判断是否已存在
+     *
+     * @param tcmsyndromeConfig
+     * @return
+     */
+    public Boolean isExistRecord(TcmsyndromeConfig tcmsyndromeConfig) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        QueryWrapper<TcmsyndromeConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", Long.valueOf(hospitalId))
+                .eq("his_name", tcmsyndromeConfig.getHisName())
+                .eq("unique_name", tcmsyndromeConfig.getUniqueName());
+        TcmsyndromeConfig oldRecord = tcmsyndromeConfigService.getOne(queryWrapper, false);
+        if (tcmsyndromeConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法添加");
+        }
+        if (tcmsyndromeConfig.getId() != null
+                && oldRecord != null
+                && !tcmsyndromeConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        return false;
+    }
+
+    /**
+     * 保存记录-单条
+     *
+     * @param tcmsyndromeConfig
+     * @return
+     */
+    public Boolean saveOrUpdateRecord(TcmsyndromeConfig tcmsyndromeConfig) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+        tcmsyndromeConfig.setHospitalId(Long.valueOf(hospitalId));
+        tcmsyndromeConfig.setModifier(userId);
+        tcmsyndromeConfig.setGmtModified(now);
+        QueryWrapper<TcmsyndromeConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", Long.valueOf(hospitalId))
+                .eq("his_name", tcmsyndromeConfig.getHisName())
+                .eq("unique_name", tcmsyndromeConfig.getUniqueName());
+        TcmsyndromeConfig oldRecord = tcmsyndromeConfigService.getOne(queryWrapper, false);
+        if (tcmsyndromeConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法添加");
+        }
+        if (tcmsyndromeConfig.getId() != null
+                && oldRecord != null
+                && !tcmsyndromeConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        //新增数据
+        if (tcmsyndromeConfig.getId() == null) {
+            tcmsyndromeConfig.setCreator(userId);
+            tcmsyndromeConfig.setGmtCreate(now);
+        }
+        if (tcmsyndromeConfig.getIsDeleted() == null) {
+            tcmsyndromeConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+        }
+        tcmsyndromeConfigService.saveOrUpdate(tcmsyndromeConfig);
+        return true;
+    }
+
+    /**
+     * 保存记录-批量
+     *
+     * @param tcmsyndromeConfigListVO
+     * @return
+     */
+    public Boolean saveOrUpdateRecords(TcmsyndromeConfigListVO tcmsyndromeConfigListVO) {
+        if (ListUtil.isEmpty(tcmsyndromeConfigListVO.getTcmsyndromeConfigList())) {
+            return false;
+        }
+        return saveOrUpdateRecords(tcmsyndromeConfigListVO.getTcmsyndromeConfigList());
+    }
+
+    /**
+     * 批量保存
+     *
+     * @param tcmsyndromeConfigList
+     * @return
+     */
+    public Boolean saveOrUpdateRecords(List<TcmsyndromeConfig> tcmsyndromeConfigList) {
+        if (ListUtil.isEmpty(tcmsyndromeConfigList)) {
+            return false;
+        }
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+
+        //数据不完整的不保存
+        //过滤外部名称或公表名为空的数据
+        tcmsyndromeConfigList = tcmsyndromeConfigList
+                .stream()
+                .filter(i -> StringUtil.isNotBlank(i.getHisName()))
+                .filter(i -> StringUtil.isNotBlank(i.getUniqueName()))
+                .collect(Collectors.toList());
+
+        // 验证数据是否已存在,已存在的先删除
+        // 没id的删除重新插入,有id的更新
+        List<Long> deleteIds = Lists.newLinkedList();
+        Map<String, Map<String, List<Long>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
+        tcmsyndromeConfigList.forEach(tcmsyndromeConfig -> {
+            tcmsyndromeConfig.setHospitalId(Long.valueOf(hospitalId));
+            tcmsyndromeConfig.setModifier(userId);
+            tcmsyndromeConfig.setGmtModified(now);
+            if (tcmsyndromeConfig.getId() == null) {
+                if (configMap.containsKey(tcmsyndromeConfig.getHisName())
+                        && ListUtil.isNotEmpty(configMap.get(tcmsyndromeConfig.getHisName()).get(tcmsyndromeConfig.getUniqueName()))) {
+                    deleteIds.addAll(configMap.get(tcmsyndromeConfig.getHisName()).get(tcmsyndromeConfig.getUniqueName()));
+                }
+                tcmsyndromeConfig.setCreator(userId);
+                tcmsyndromeConfig.setGmtCreate(now);
+            }
+            if (tcmsyndromeConfig.getIsDeleted() == null) {
+                tcmsyndromeConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+            }
+        });
+        //删除已存在映射关系
+        IdListVO idListVO = new IdListVO();
+        idListVO.setIds(deleteIds);
+        deleteRecords(idListVO);
+        tcmsyndromeConfigService.saveOrUpdateBatch(tcmsyndromeConfigList);
+        return true;
+    }
+
+    /**
+     * 删除记录-单条
+     *
+     * @param idVO
+     * @return
+     */
+    public Boolean deleteRecord(IdVO idVO) {
+        UpdateWrapper<TcmsyndromeConfig> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("id", idVO.getId())
+                .set("is_deleted", IsDeleteEnum.Y.getKey());
+        tcmsyndromeConfigService.removeById(idVO.getId());
+        return true;
+    }
+
+    /**
+     * 删除记录-批量
+     *
+     * @param idListVO
+     * @return
+     */
+    public Boolean deleteRecords(IdListVO idListVO) {
+        if (ListUtil.isEmpty(idListVO.getIds())) {
+            return false;
+        }
+        UpdateWrapper<TcmsyndromeConfig> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.in("id", idListVO.getIds())
+                .set("is_deleted", IsDeleteEnum.Y.getKey());
+        tcmsyndromeConfigService.removeByIds(idListVO.getIds());
+        return true;
+    }
+
+    /**
+     * 分页查询
+     *
+     * @param tcmsyndromeConfigPageVO
+     * @return
+     */
+    public IPage<TcmsyndromeConfig> getPage(TcmsyndromeConfigPageVO tcmsyndromeConfigPageVO) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        tcmsyndromeConfigPageVO.setHospitalId(Long.valueOf(hospitalId));
+        return tcmsyndromeConfigService.getPage(tcmsyndromeConfigPageVO);
+    }
+
+    /**
+     * 数据导入
+     *
+     * @param file
+     */
+    public void importExcel(MultipartFile file) {
+        List<TcmsyndromeConfig> tcmsyndromeConfigList = ExcelUtils.importExcel(file, 0, 1, TcmsyndromeConfig.class);
+        if (ListUtil.isNotEmpty(tcmsyndromeConfigList)) {
+            importExcelRecords(tcmsyndromeConfigList);
+        } else {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "校验失败,导入数据不能为空");
+        }
+    }
+
+    /**
+     * 数据导入
+     *
+     * @param tcmsyndromeConfigList
+     * @return
+     */
+    public Boolean importExcelRecords(List<TcmsyndromeConfig> tcmsyndromeConfigList) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+
+
+        //1、数据完整性校验
+        //2、去除前后空格
+        //过滤空数据,保留重复数据,方便计行
+        tcmsyndromeConfigList = tcmsyndromeConfigList.stream()
+                .filter(i -> StringUtil.isNotBlank(i.getHisName())
+                        || StringUtil.isNotBlank(i.getUniqueCode())
+                        || StringUtil.isNotBlank(i.getUniqueName()))
+                .collect(Collectors.toList());
+        if (ListUtil.isEmpty(tcmsyndromeConfigList)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "校验失败,导入数据不能为空");
+        }
+        List<String> emptyNumList = Lists.newLinkedList();
+        for (int i = 0; i < tcmsyndromeConfigList.size(); i++) {
+            if (StringUtil.isBlank(tcmsyndromeConfigList.get(i).getHisName())
+                    || StringUtil.isBlank(tcmsyndromeConfigList.get(i).getUniqueName())) {
+                emptyNumList.add(String.valueOf(i + 2));
+            }
+            if (StringUtil.isNotBlank(tcmsyndromeConfigList.get(i).getHisName())) {
+                tcmsyndromeConfigList.get(i).setHisName(tcmsyndromeConfigList.get(i).getHisName().trim());
+            }
+            if (StringUtil.isNotBlank(tcmsyndromeConfigList.get(i).getUniqueName())) {
+                tcmsyndromeConfigList.get(i).setUniqueName(tcmsyndromeConfigList.get(i).getUniqueName().trim());
+            }
+            if (StringUtil.isNotBlank(tcmsyndromeConfigList.get(i).getUniqueCode())) {
+                tcmsyndromeConfigList.get(i).setUniqueCode(tcmsyndromeConfigList.get(i).getUniqueCode().trim());
+            } else {
+                tcmsyndromeConfigList.get(i).setUniqueCode(null);
+            }
+        }
+
+        if (ListUtil.isNotEmpty(emptyNumList)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "以下行数(不计入空行)存在不完整数据:"
+                    + emptyNumList.stream().collect(Collectors.joining("、"))
+                    + "。导入取消,请修改后再试。\n");
+        }
+
+
+        // 验证数据是否已存在,已存在的先删除
+        // 没id的删除重新插入,有id的更新
+        synchronized (this) {
+            List<Long> deleteIds = Lists.newLinkedList();
+            Map<String, Map<String, List<Long>>> configMap
+                    = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
+            tcmsyndromeConfigList.forEach(tcmsyndromeConfig -> {
+                tcmsyndromeConfig.setHospitalId(Long.valueOf(hospitalId));
+                tcmsyndromeConfig.setModifier(userId);
+                tcmsyndromeConfig.setGmtModified(now);
+                if (tcmsyndromeConfig.getId() == null) {
+                    if (configMap.containsKey(tcmsyndromeConfig.getHisName())
+                            && ListUtil.isNotEmpty(configMap.get(tcmsyndromeConfig.getHisName()).get(tcmsyndromeConfig.getUniqueName()))) {
+                        deleteIds.addAll(configMap.get(tcmsyndromeConfig.getHisName()).get(tcmsyndromeConfig.getUniqueName()));
+                    }
+                    tcmsyndromeConfig.setCreator(userId);
+                    tcmsyndromeConfig.setGmtCreate(now);
+                }
+                if (tcmsyndromeConfig.getIsDeleted() == null) {
+                    tcmsyndromeConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+                }
+            });
+
+            //标准术语校验
+            List<String> errorNumList = Lists.newLinkedList();
+            List<String> uniqueNames = tcmsyndromeConfigList.stream()
+                    .map(i -> i.getUniqueName())
+                    .distinct()
+                    .collect(Collectors.toList());
+            ConceptVO conceptVO = new ConceptVO();
+            conceptVO.setNames(uniqueNames);
+            conceptVO.setType(ConceptTypeEnum.Tcmsyndrome.getKey());
+            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
+            List<String> names = respDTO.data;
+            for (int i = 0; i < tcmsyndromeConfigList.size(); i++) {
+                if (!names.contains(tcmsyndromeConfigList.get(i).getUniqueName())) {
+                    errorNumList.add(String.valueOf(i + 2));
+                }
+            }
+            if (ListUtil.isNotEmpty(errorNumList)) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "以下行数(不计空行)标准术语在数据库中不存在:"
+                                + errorNumList.stream().collect(Collectors.joining("、"))
+                                + "。导入取消,请修改后再试。");
+            }
+
+            //重复数据过滤
+            tcmsyndromeConfigList = tcmsyndromeConfigList
+                    .stream()
+                    .distinct()
+                    .collect(Collectors.toList());
+
+            //删除已存在映射关系
+            IdListVO idListVO = new IdListVO();
+            idListVO.setIds(deleteIds);
+            deleteRecords(idListVO);
+            tcmsyndromeConfigService.saveOrUpdateBatch(tcmsyndromeConfigList);
+        }
+        return true;
+    }
+
+    /**
+     * 获取映射关系-公表名
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return
+     */
+    public Map<String, Map<String, Long>> getConfigMap(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, Long>> retMap = new HashMap<>();
+        QueryWrapper<TcmsyndromeConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId);
+        if (ListUtil.isNotEmpty(hisNames)) {
+            queryWrapper.in("his_name", hisNames);
+        }
+        if (ListUtil.isNotEmpty(uniqueNames)) {
+            queryWrapper.in("unique_name", uniqueNames);
+        }
+        List<TcmsyndromeConfig> records = tcmsyndromeConfigService.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+        Map<String, List<TcmsyndromeConfig>> configMap = EntityUtil.makeEntityListMap(records, "hisName");
+        for (Map.Entry<String, List<TcmsyndromeConfig>> entry : configMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                retMap.put(entry.getKey(), EntityUtil.makeMapWithKeyValue(entry.getValue(), "uniqueName", "id"));
+            }
+        }
+        return retMap;
+    }
+
+    /**
+     * 获取映射关系-公表名
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return
+     */
+    public Map<String, Map<String, List<Long>>> getConfigMapWithIds(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, List<Long>>> retMap = new HashMap<>();
+        QueryWrapper<TcmsyndromeConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId);
+        if (ListUtil.isNotEmpty(hisNames)) {
+            queryWrapper.in("his_name", hisNames);
+        }
+        if (ListUtil.isNotEmpty(uniqueNames)) {
+            queryWrapper.in("unique_name", uniqueNames);
+        }
+        List<TcmsyndromeConfig> records = tcmsyndromeConfigService.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+        Map<String, List<TcmsyndromeConfig>> configMap = EntityUtil.makeEntityListMap(records, "hisName");
+        for (Map.Entry<String, List<TcmsyndromeConfig>> entry : configMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                Map<String, List<TcmsyndromeConfig>> subMap = EntityUtil.makeEntityListMap(entry.getValue(), "uniqueName");
+                Map<String, List<Long>> subIdMap = new HashMap<>();
+                for (Map.Entry<String, List<TcmsyndromeConfig>> subEntry : subMap.entrySet()) {
+                    subIdMap.put(subEntry.getKey(), subEntry.getValue().stream().map(i -> i.getId()).distinct().collect(Collectors.toList()));
+                }
+                retMap.put(entry.getKey(), subIdMap);
+            }
+        }
+        return retMap;
+    }
+
+    /**
+     * 获取映射关系
+     * Map<uniqueName,Map<hisName,id>>
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return
+     */
+    public Map<String, Map<String, Long>> getUniqueNameConfigMap(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, Long>> retMap = new HashMap<>();
+        QueryWrapper<TcmsyndromeConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId);
+        if (ListUtil.isNotEmpty(hisNames)) {
+            queryWrapper.in("his_name", hisNames);
+        }
+        if (ListUtil.isNotEmpty(uniqueNames)) {
+            queryWrapper.in("unique_name", uniqueNames);
+        }
+        List<TcmsyndromeConfig> records = tcmsyndromeConfigService.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+
+        Map<String, List<TcmsyndromeConfig>> uniqueNameMap = EntityUtil.makeEntityListMap(records, "uniqueName");
+        for (Map.Entry<String, List<TcmsyndromeConfig>> entry : uniqueNameMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                retMap.put(entry.getKey(), EntityUtil.makeMapWithKeyValue(entry.getValue(), "hisName", "id"));
+            }
+        }
+        return retMap;
+    }
+
+    /**
+     * 数据导出
+     *
+     * @param response
+     */
+    public void exportExcel(HttpServletResponse response) {
+        QueryWrapper<TcmsyndromeConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", SysUserUtils.getCurrentHospitalID())
+                .orderByDesc("gmt_modified");
+        List<TcmsyndromeConfig> records = tcmsyndromeConfigService.list(queryWrapper);
+        String fileName = "中医证候映射.xls";
+        ExcelUtils.exportExcel(records, null, "sheet1", TcmsyndromeConfig.class, fileName, response, 12.8f);
+    }
+
+    /**
+     * 数据导入模板导出
+     *
+     * @param response
+     */
+    public void exportExcelModule(HttpServletResponse response) {
+        String fileName = "中医证候映射模板.xls";
+        ExcelUtils.exportExcel(new ArrayList<>(), null, "sheet1", TcmsyndromeConfig.class, fileName, response, 12.8f);
+    }
+
+    /**
+     * 中医证候搜索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    public List<TcmsyndromeInfoDTO> getTcmsyndromes(RetrievalVO retrievalVO) {
+        List<TcmsyndromeInfoDTO> tcmsyndromeNames = new ArrayList<>();
+        List<TcmsyndromeConfig> tcmsyndromeConfigList = tcmsyndromeConfigService.getTcmsyndromesIndex(retrievalVO);
+        for (TcmsyndromeConfig tcmsyndromeConfig : tcmsyndromeConfigList) {
+            TcmsyndromeInfoDTO tcmsyndromeInfoDTO = new TcmsyndromeInfoDTO();
+            tcmsyndromeInfoDTO.setCode(tcmsyndromeConfig.getUniqueCode());
+            tcmsyndromeInfoDTO.setName(tcmsyndromeConfig.getHisName());
+            tcmsyndromeNames.add(tcmsyndromeInfoDTO);
+        }
+        return tcmsyndromeNames;
+    }
+}

+ 52 - 50
src/main/java/com/diagbot/facade/TransfusionConfigFacade.java

@@ -285,61 +285,63 @@ public class TransfusionConfigFacade {
 
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
-        List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, List<Long>>> configMap
-                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
-        transfusionConfigList.forEach(transfusionConfig -> {
-            transfusionConfig.setHospitalId(Long.valueOf(hospitalId));
-            transfusionConfig.setModifier(userId);
-            transfusionConfig.setGmtModified(now);
-            if (transfusionConfig.getId() == null) {
-                if (configMap.containsKey(transfusionConfig.getHisName())
-                        && ListUtil.isNotEmpty(configMap.get(transfusionConfig.getHisName()).get(transfusionConfig.getUniqueName()))) {
-                    deleteIds.addAll(configMap.get(transfusionConfig.getHisName()).get(transfusionConfig.getUniqueName()));
+        synchronized (this) {
+            List<Long> deleteIds = Lists.newLinkedList();
+            Map<String, Map<String, List<Long>>> configMap
+                    = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
+            transfusionConfigList.forEach(transfusionConfig -> {
+                transfusionConfig.setHospitalId(Long.valueOf(hospitalId));
+                transfusionConfig.setModifier(userId);
+                transfusionConfig.setGmtModified(now);
+                if (transfusionConfig.getId() == null) {
+                    if (configMap.containsKey(transfusionConfig.getHisName())
+                            && ListUtil.isNotEmpty(configMap.get(transfusionConfig.getHisName()).get(transfusionConfig.getUniqueName()))) {
+                        deleteIds.addAll(configMap.get(transfusionConfig.getHisName()).get(transfusionConfig.getUniqueName()));
+                    }
+                    transfusionConfig.setCreator(userId);
+                    transfusionConfig.setGmtCreate(now);
                 }
-                transfusionConfig.setCreator(userId);
-                transfusionConfig.setGmtCreate(now);
-            }
-            if (transfusionConfig.getIsDeleted() == null) {
-                transfusionConfig.setIsDeleted(IsDeleteEnum.N.getKey());
-            }
-        });
+                if (transfusionConfig.getIsDeleted() == null) {
+                    transfusionConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+                }
+            });
 
-        //标准术语校验
-        List<String> errorNumList = Lists.newLinkedList();
-        List<String> uniqueNames = transfusionConfigList.stream()
-                .map(i -> i.getUniqueName())
-                .distinct()
-                .collect(Collectors.toList());
-        ConceptVO conceptVO = new ConceptVO();
-        conceptVO.setNames(uniqueNames);
-        conceptVO.setType(ConceptTypeEnum.Transfusion.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
-        RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> names = respDTO.data;
-        for (int i = 0; i < transfusionConfigList.size(); i++) {
-            if (!names.contains(transfusionConfigList.get(i).getUniqueName())) {
-                errorNumList.add(String.valueOf(i + 2));
+            //标准术语校验
+            List<String> errorNumList = Lists.newLinkedList();
+            List<String> uniqueNames = transfusionConfigList.stream()
+                    .map(i -> i.getUniqueName())
+                    .distinct()
+                    .collect(Collectors.toList());
+            ConceptVO conceptVO = new ConceptVO();
+            conceptVO.setNames(uniqueNames);
+            conceptVO.setType(ConceptTypeEnum.Transfusion.getKey());
+            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
+            List<String> names = respDTO.data;
+            for (int i = 0; i < transfusionConfigList.size(); i++) {
+                if (!names.contains(transfusionConfigList.get(i).getUniqueName())) {
+                    errorNumList.add(String.valueOf(i + 2));
+                }
+            }
+            if (ListUtil.isNotEmpty(errorNumList)) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "以下行数(不计空行)标准术语在数据库中不存在:"
+                                + errorNumList.stream().collect(Collectors.joining("、"))
+                                + "。导入取消,请修改后再试。");
             }
-        }
-        if (ListUtil.isNotEmpty(errorNumList)) {
-            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计空行)标准术语在数据库中不存在:"
-                            + errorNumList.stream().collect(Collectors.joining("、"))
-                            + "。导入取消,请修改后再试。");
-        }
 
-        //重复数据过滤
-        transfusionConfigList = transfusionConfigList
-                .stream()
-                .distinct()
-                .collect(Collectors.toList());
+            //重复数据过滤
+            transfusionConfigList = transfusionConfigList
+                    .stream()
+                    .distinct()
+                    .collect(Collectors.toList());
 
-        //删除已存在映射关系
-        IdListVO idListVO = new IdListVO();
-        idListVO.setIds(deleteIds);
-        deleteRecords(idListVO);
-        transfusionConfigService.saveOrUpdateBatch(transfusionConfigList);
+            //删除已存在映射关系
+            IdListVO idListVO = new IdListVO();
+            idListVO.setIds(deleteIds);
+            deleteRecords(idListVO);
+            transfusionConfigService.saveOrUpdateBatch(transfusionConfigList);
+        }
         return true;
     }
 

+ 38 - 0
src/main/java/com/diagbot/mapper/TcmdiseaseConfigMapper.java

@@ -0,0 +1,38 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.entity.TcmdiseaseConfig;
+import com.diagbot.vo.RetrievalVO;
+import com.diagbot.vo.TcmdiseaseConfigPageVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 中医疾病映射表 Mapper 接口
+ * </p>
+ *
+ * @author zhaops
+ * @since 2021-05-13
+ */
+public interface TcmdiseaseConfigMapper extends BaseMapper<TcmdiseaseConfig> {
+
+    /**
+     * 分页查询
+     *
+     * @param tcmdiseaseConfigPageVO
+     * @return
+     */
+    IPage<TcmdiseaseConfig> getPage(@Param("tcmdiseaseConfigPageVO") TcmdiseaseConfigPageVO tcmdiseaseConfigPageVO);
+
+    /**
+     * 中医疾病搜索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    List<TcmdiseaseConfig> getTcmdiseasesIndex(RetrievalVO retrievalVO);
+
+}

+ 37 - 0
src/main/java/com/diagbot/mapper/TcmsyndromeConfigMapper.java

@@ -0,0 +1,37 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.entity.TcmsyndromeConfig;
+import com.diagbot.entity.TcmsyndromeConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.RetrievalVO;
+import com.diagbot.vo.TcmsyndromeConfigPageVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 中医证候映射表 Mapper 接口
+ * </p>
+ *
+ * @author zhaops
+ * @since 2021-05-13
+ */
+public interface TcmsyndromeConfigMapper extends BaseMapper<TcmsyndromeConfig> {
+    /**
+     * 分页查询
+     *
+     * @param tcmsyndromeConfigPageVO
+     * @return
+     */
+    IPage<TcmsyndromeConfig> getPage(@Param("tcmsyndromeConfigPageVO") TcmsyndromeConfigPageVO tcmsyndromeConfigPageVO);
+
+    /**
+     * 中医证候搜索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    List<TcmsyndromeConfig> getTcmsyndromesIndex(RetrievalVO retrievalVO);
+}

+ 38 - 0
src/main/java/com/diagbot/service/TcmdiseaseConfigService.java

@@ -0,0 +1,38 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.dto.TcmdiseaseInfoDTO;
+import com.diagbot.entity.TcmdiseaseConfig;
+import com.diagbot.vo.RetrievalVO;
+import com.diagbot.vo.TcmdiseaseConfigPageVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 中医疾病映射表 服务类
+ * </p>
+ *
+ * @author zhaops
+ * @since 2021-05-13
+ */
+public interface TcmdiseaseConfigService extends IService<TcmdiseaseConfig> {
+
+    /**
+     * 分页查询
+     *
+     * @param tcmdiseaseConfigPageVO
+     * @return
+     */
+    IPage<TcmdiseaseConfig> getPage(@Param("tcmdiseaseConfigPageVO") TcmdiseaseConfigPageVO tcmdiseaseConfigPageVO);
+
+    /**
+     * 中医疾病搜索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    List<TcmdiseaseConfig> getTcmdiseasesIndex(RetrievalVO retrievalVO);
+}

+ 36 - 0
src/main/java/com/diagbot/service/TcmsyndromeConfigService.java

@@ -0,0 +1,36 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.entity.TcmsyndromeConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.vo.RetrievalVO;
+import com.diagbot.vo.TcmsyndromeConfigPageVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 中医证候映射表 服务类
+ * </p>
+ *
+ * @author zhaops
+ * @since 2021-05-13
+ */
+public interface TcmsyndromeConfigService extends IService<TcmsyndromeConfig> {
+    /**
+     * 分页查询
+     *
+     * @param tcmsyndromeConfigPageVO
+     * @return
+     */
+    IPage<TcmsyndromeConfig> getPage(@Param("tcmsyndromeConfigPageVO") TcmsyndromeConfigPageVO tcmsyndromeConfigPageVO);
+
+    /**
+     * 中医证候搜索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    List<TcmsyndromeConfig> getTcmsyndromesIndex(RetrievalVO retrievalVO);
+}

+ 47 - 0
src/main/java/com/diagbot/service/impl/TcmdiseaseConfigServiceImpl.java

@@ -0,0 +1,47 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.dto.TcmdiseaseInfoDTO;
+import com.diagbot.entity.TcmdiseaseConfig;
+import com.diagbot.mapper.TcmdiseaseConfigMapper;
+import com.diagbot.service.TcmdiseaseConfigService;
+import com.diagbot.vo.RetrievalVO;
+import com.diagbot.vo.TcmdiseaseConfigPageVO;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 中医疾病映射表 服务实现类
+ * </p>
+ *
+ * @author zhaops
+ * @since 2021-05-13
+ */
+@Service
+public class TcmdiseaseConfigServiceImpl extends ServiceImpl<TcmdiseaseConfigMapper, TcmdiseaseConfig> implements TcmdiseaseConfigService {
+    /**
+     * 分页查询
+     *
+     * @param tcmdiseaseConfigPageVO
+     * @return
+     */
+    @Override
+    public IPage<TcmdiseaseConfig> getPage(@Param("tcmdiseaseConfigPageVO") TcmdiseaseConfigPageVO tcmdiseaseConfigPageVO) {
+        return baseMapper.getPage(tcmdiseaseConfigPageVO);
+    }
+
+    /**
+     * 中医疾病搜索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    @Override
+    public List<TcmdiseaseConfig> getTcmdiseasesIndex(RetrievalVO retrievalVO) {
+        return baseMapper.getTcmdiseasesIndex(retrievalVO);
+    }
+}

+ 47 - 0
src/main/java/com/diagbot/service/impl/TcmsyndromeConfigServiceImpl.java

@@ -0,0 +1,47 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.entity.TcmsyndromeConfig;
+import com.diagbot.mapper.TcmsyndromeConfigMapper;
+import com.diagbot.service.TcmsyndromeConfigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.RetrievalVO;
+import com.diagbot.vo.TcmsyndromeConfigPageVO;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 中医证候映射表 服务实现类
+ * </p>
+ *
+ * @author zhaops
+ * @since 2021-05-13
+ */
+@Service
+public class TcmsyndromeConfigServiceImpl extends ServiceImpl<TcmsyndromeConfigMapper, TcmsyndromeConfig> implements TcmsyndromeConfigService {
+    /**
+     * 分页查询
+     *
+     * @param tcmsyndromeConfigPageVO
+     * @return
+     */
+    @Override
+    public IPage<TcmsyndromeConfig> getPage(@Param("tcmsyndromeConfigPageVO") TcmsyndromeConfigPageVO tcmsyndromeConfigPageVO) {
+        return baseMapper.getPage(tcmsyndromeConfigPageVO);
+    }
+
+
+    /**
+     * 中医证候搜索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    @Override
+    public List<TcmsyndromeConfig> getTcmsyndromesIndex(RetrievalVO retrievalVO) {
+        return baseMapper.getTcmsyndromesIndex(retrievalVO);
+    }
+}

+ 18 - 0
src/main/java/com/diagbot/vo/TcmdiseaseConfigListVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import com.diagbot.entity.TcmdiseaseConfig;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/5/13 15:20
+ */
+@Getter
+@Setter
+public class TcmdiseaseConfigListVO {
+    private List<TcmdiseaseConfig> tcmdiseaseConfigList;
+}

+ 36 - 0
src/main/java/com/diagbot/vo/TcmdiseaseConfigPageVO.java

@@ -0,0 +1,36 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/5/13 15:21
+ */
+@Getter
+@Setter
+public class TcmdiseaseConfigPageVO extends Page {
+    /**
+     * 医院id
+     */
+    @ApiModelProperty(hidden = true)
+    private Long hospitalId;
+
+    /**
+     * his大项名称
+     */
+    private String hisName;
+
+    /**
+     * 标准名
+     */
+    private String uniqueName;
+
+    /**
+     * 标准编码
+     */
+    private String uniqueCode;
+}

+ 18 - 0
src/main/java/com/diagbot/vo/TcmsyndromeConfigListVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import com.diagbot.entity.TcmsyndromeConfig;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/5/14 9:28
+ */
+@Getter
+@Setter
+public class TcmsyndromeConfigListVO {
+    private List<TcmsyndromeConfig> tcmsyndromeConfigList;
+}

+ 36 - 0
src/main/java/com/diagbot/vo/TcmsyndromeConfigPageVO.java

@@ -0,0 +1,36 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/5/14 9:28
+ */
+@Getter
+@Setter
+public class TcmsyndromeConfigPageVO extends Page {
+    /**
+     * 医院id
+     */
+    @ApiModelProperty(hidden = true)
+    private Long hospitalId;
+
+    /**
+     * his大项名称
+     */
+    private String hisName;
+
+    /**
+     * 标准名
+     */
+    private String uniqueName;
+
+    /**
+     * 标准编码
+     */
+    private String uniqueCode;
+}

+ 1 - 1
src/main/java/com/diagbot/web/RetrievalController.java

@@ -28,7 +28,7 @@ public class RetrievalController {
     private RetrievalFacade retrievalFacade;
 
     @ApiOperation(value = "术语检索[zhaops]",
-            notes = "type: 类型:1-化验大项、2-化验小项、3-辅检、4-诊断、5-药品、6-手术和操作、7-科室、8-输血、9-症状、10-量表、11-护理 <br>" +
+            notes = "type: 类型:1-化验大项、2-化验小项、3-辅检、4-诊断、5-药品、6-手术和操作、7-科室、8-输血、9-症状、10-量表、11-护理、12-中医疾病、13-中医证候 <br>" +
                     "inputStr: 检索内容<br>" +
                     "sex: 性别:1-男、2-女、3-通用 <br>" +
                     "age: 年龄<br>")

+ 170 - 0
src/main/java/com/diagbot/web/TcmdiseaseConfigController.java

@@ -0,0 +1,170 @@
+package com.diagbot.web;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.TcmdiseaseConfig;
+import com.diagbot.facade.TcmdiseaseConfigFacade;
+import com.diagbot.vo.IdListVO;
+import com.diagbot.vo.IdVO;
+import com.diagbot.vo.TcmdiseaseConfigListVO;
+import com.diagbot.vo.TcmdiseaseConfigPageVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+/**
+ * <p>
+ * 中医疾病映射表 前端控制器
+ * </p>
+ *
+ * @author zhaops
+ * @since 2021-05-13
+ */
+@RestController
+@RequestMapping("/tran/tcmdiseaseConfig")
+@Api(value = "中医疾病公表映射API", tags = { "中医疾病公表映射API" })
+public class TcmdiseaseConfigController {
+    @Autowired
+    private TcmdiseaseConfigFacade tcmdiseaseConfigFacade;
+
+    /**
+     * 映射关系是否已存在
+     *
+     * @param tcmdiseaseConfig
+     * @return
+     */
+    @ApiOperation(value = "映射关系是否已存在[by:zhaops]", notes = "")
+    @PostMapping("/isExistRecord")
+    @SysLogger("isExistRecord")
+    public RespDTO<Boolean> isExistRecord(@RequestBody @Valid TcmdiseaseConfig tcmdiseaseConfig) {
+        Boolean data = tcmdiseaseConfigFacade.isExistRecord(tcmdiseaseConfig);
+        return RespDTO.onSuc(data);
+    }
+
+    /**
+     * 保存或修改映射关系
+     *
+     * @param tcmdiseaseConfig
+     * @return
+     */
+    @ApiOperation(value = "保存或修改映射关系[by:zhaops]", notes = "")
+    @PostMapping("/saveOrUpdateRecord")
+    @SysLogger("saveOrUpdateRecord")
+    @Transactional
+    public RespDTO<Boolean> saveOrUpdateRecord(@RequestBody @Valid TcmdiseaseConfig tcmdiseaseConfig) {
+        Boolean data = tcmdiseaseConfigFacade.saveOrUpdateRecord(tcmdiseaseConfig);
+        return RespDTO.onSuc(data);
+    }
+
+    /**
+     * 批量保存或修改映射关系
+     *
+     * @param tcmdiseaseConfigListVO
+     * @return
+     */
+    @ApiOperation(value = "批量保存或修改映射关系[by:zhaops]", notes = "")
+    @PostMapping("/saveOrUpdateRecords")
+    @SysLogger("saveOrUpdateRecords")
+    @Transactional
+    public RespDTO<Boolean> saveOrUpdateRecords(@RequestBody @Valid TcmdiseaseConfigListVO tcmdiseaseConfigListVO) {
+        Boolean data = tcmdiseaseConfigFacade.saveOrUpdateRecords(tcmdiseaseConfigListVO);
+        return RespDTO.onSuc(data);
+    }
+
+    /**
+     * 删除映射关系
+     *
+     * @param idVO
+     * @return
+     */
+    @ApiOperation(value = "删除映射关系[by:zhaops]", notes = "")
+    @PostMapping("/deleteRecord")
+    @SysLogger("deleteRecord")
+    @Transactional
+    public RespDTO<Boolean> deleteRecord(@RequestBody @Valid IdVO idVO) {
+        Boolean data = tcmdiseaseConfigFacade.deleteRecord(idVO);
+        return RespDTO.onSuc(data);
+    }
+
+    /**
+     * 批量删除映射关系
+     *
+     * @param idListVO
+     * @return
+     */
+    @ApiOperation(value = "批量删除映射关系[by:zhaops]", notes = "")
+    @PostMapping("/deleteRecords")
+    @SysLogger("deleteRecords")
+    @Transactional
+    public RespDTO<Boolean> deleteRecords(@RequestBody @Valid IdListVO idListVO) {
+        Boolean data = tcmdiseaseConfigFacade.deleteRecords(idListVO);
+        return RespDTO.onSuc(data);
+    }
+
+    /**
+     * 分页查询
+     *
+     * @param tcmdiseaseConfigPageVO
+     * @return
+     */
+    @ApiOperation(value = "分页查询[by:zhaops]", notes = "")
+    @PostMapping("/getPage")
+    @SysLogger("getPage")
+    public RespDTO<TcmdiseaseConfig> getPage(@RequestBody @Valid TcmdiseaseConfigPageVO tcmdiseaseConfigPageVO) {
+        IPage<TcmdiseaseConfig> data = tcmdiseaseConfigFacade.getPage(tcmdiseaseConfigPageVO);
+        return RespDTO.onSuc(data);
+    }
+
+    /**
+     * 公表数据导入
+     *
+     * @param file
+     * @return
+     */
+    @ApiOperation(value = "公表数据导入[by:zhaops]",
+            notes = "")
+    @PostMapping("/importExcel")
+    @SysLogger("importExcel")
+    @Transactional
+    public void importExcel(@RequestParam("file") MultipartFile file) {
+        tcmdiseaseConfigFacade.importExcel(file);
+    }
+
+    /**
+     * 数据导出
+     *
+     * @return
+     */
+    @ApiOperation(value = "数据导出[by:gaodm]",
+            notes = "")
+    @PostMapping("/exportExcel")
+    @SysLogger("exportExcel")
+    public void exportExcel(HttpServletResponse response) {
+        tcmdiseaseConfigFacade.exportExcel(response);
+    }
+
+    /**
+     * 数据导入模板导出
+     *
+     * @return
+     */
+    @ApiOperation(value = "数据导入模板导出[by:zhaops]",
+            notes = "")
+    @PostMapping("/exportExcelModule")
+    @SysLogger("exportExcelModule")
+    public void exportExcelModule(HttpServletResponse response) {
+        tcmdiseaseConfigFacade.exportExcelModule(response);
+    }
+}

+ 170 - 0
src/main/java/com/diagbot/web/TcmsyndromeConfigController.java

@@ -0,0 +1,170 @@
+package com.diagbot.web;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.TcmsyndromeConfig;
+import com.diagbot.facade.TcmsyndromeConfigFacade;
+import com.diagbot.vo.IdListVO;
+import com.diagbot.vo.IdVO;
+import com.diagbot.vo.TcmsyndromeConfigListVO;
+import com.diagbot.vo.TcmsyndromeConfigPageVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+/**
+ * <p>
+ * 中医证候映射表 前端控制器
+ * </p>
+ *
+ * @author zhaops
+ * @since 2021-05-13
+ */
+@RestController
+@RequestMapping("/tran/tcmsyndromeConfig")
+@Api(value = "中医证候公表映射API", tags = { "中医证候公表映射API" })
+public class TcmsyndromeConfigController {
+    @Autowired
+    private TcmsyndromeConfigFacade tcmsyndromeConfigFacade;
+
+    /**
+     * 映射关系是否已存在
+     *
+     * @param tcmsyndromeConfig
+     * @return
+     */
+    @ApiOperation(value = "映射关系是否已存在[by:zhaops]", notes = "")
+    @PostMapping("/isExistRecord")
+    @SysLogger("isExistRecord")
+    public RespDTO<Boolean> isExistRecord(@RequestBody @Valid TcmsyndromeConfig tcmsyndromeConfig) {
+        Boolean data = tcmsyndromeConfigFacade.isExistRecord(tcmsyndromeConfig);
+        return RespDTO.onSuc(data);
+    }
+
+    /**
+     * 保存或修改映射关系
+     *
+     * @param tcmsyndromeConfig
+     * @return
+     */
+    @ApiOperation(value = "保存或修改映射关系[by:zhaops]", notes = "")
+    @PostMapping("/saveOrUpdateRecord")
+    @SysLogger("saveOrUpdateRecord")
+    @Transactional
+    public RespDTO<Boolean> saveOrUpdateRecord(@RequestBody @Valid TcmsyndromeConfig tcmsyndromeConfig) {
+        Boolean data = tcmsyndromeConfigFacade.saveOrUpdateRecord(tcmsyndromeConfig);
+        return RespDTO.onSuc(data);
+    }
+
+    /**
+     * 批量保存或修改映射关系
+     *
+     * @param tcmsyndromeConfigListVO
+     * @return
+     */
+    @ApiOperation(value = "批量保存或修改映射关系[by:zhaops]", notes = "")
+    @PostMapping("/saveOrUpdateRecords")
+    @SysLogger("saveOrUpdateRecords")
+    @Transactional
+    public RespDTO<Boolean> saveOrUpdateRecords(@RequestBody @Valid TcmsyndromeConfigListVO tcmsyndromeConfigListVO) {
+        Boolean data = tcmsyndromeConfigFacade.saveOrUpdateRecords(tcmsyndromeConfigListVO);
+        return RespDTO.onSuc(data);
+    }
+
+    /**
+     * 删除映射关系
+     *
+     * @param idVO
+     * @return
+     */
+    @ApiOperation(value = "删除映射关系[by:zhaops]", notes = "")
+    @PostMapping("/deleteRecord")
+    @SysLogger("deleteRecord")
+    @Transactional
+    public RespDTO<Boolean> deleteRecord(@RequestBody @Valid IdVO idVO) {
+        Boolean data = tcmsyndromeConfigFacade.deleteRecord(idVO);
+        return RespDTO.onSuc(data);
+    }
+
+    /**
+     * 批量删除映射关系
+     *
+     * @param idListVO
+     * @return
+     */
+    @ApiOperation(value = "批量删除映射关系[by:zhaops]", notes = "")
+    @PostMapping("/deleteRecords")
+    @SysLogger("deleteRecords")
+    @Transactional
+    public RespDTO<Boolean> deleteRecords(@RequestBody @Valid IdListVO idListVO) {
+        Boolean data = tcmsyndromeConfigFacade.deleteRecords(idListVO);
+        return RespDTO.onSuc(data);
+    }
+
+    /**
+     * 分页查询
+     *
+     * @param tcmsyndromeConfigPageVO
+     * @return
+     */
+    @ApiOperation(value = "分页查询[by:zhaops]", notes = "")
+    @PostMapping("/getPage")
+    @SysLogger("getPage")
+    public RespDTO<TcmsyndromeConfig> getPage(@RequestBody @Valid TcmsyndromeConfigPageVO tcmsyndromeConfigPageVO) {
+        IPage<TcmsyndromeConfig> data = tcmsyndromeConfigFacade.getPage(tcmsyndromeConfigPageVO);
+        return RespDTO.onSuc(data);
+    }
+
+    /**
+     * 公表数据导入
+     *
+     * @param file
+     * @return
+     */
+    @ApiOperation(value = "公表数据导入[by:zhaops]",
+            notes = "")
+    @PostMapping("/importExcel")
+    @SysLogger("importExcel")
+    @Transactional
+    public void importExcel(@RequestParam("file") MultipartFile file) {
+        tcmsyndromeConfigFacade.importExcel(file);
+    }
+
+    /**
+     * 数据导出
+     *
+     * @return
+     */
+    @ApiOperation(value = "数据导出[by:gaodm]",
+            notes = "")
+    @PostMapping("/exportExcel")
+    @SysLogger("exportExcel")
+    public void exportExcel(HttpServletResponse response) {
+        tcmsyndromeConfigFacade.exportExcel(response);
+    }
+
+    /**
+     * 数据导入模板导出
+     *
+     * @return
+     */
+    @ApiOperation(value = "数据导入模板导出[by:zhaops]",
+            notes = "")
+    @PostMapping("/exportExcelModule")
+    @SysLogger("exportExcelModule")
+    public void exportExcelModule(HttpServletResponse response) {
+        tcmsyndromeConfigFacade.exportExcelModule(response);
+    }
+}

+ 84 - 0
src/main/resources/mapper/TcmdiseaseConfigMapper.xml

@@ -0,0 +1,84 @@
+<?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.TcmdiseaseConfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.TcmdiseaseConfig">
+        <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="hospital_id" property="hospitalId" />
+        <result column="his_name" property="hisName" />
+        <result column="unique_name" property="uniqueName" />
+        <result column="unique_code" property="uniqueCode" />
+    </resultMap>
+
+    <!-- 分页查询 -->
+    <select id="getPage" resultType="com.diagbot.entity.TcmdiseaseConfig">
+        select a.*
+        from tran_tcmdisease_config a
+        where a.is_deleted='N'
+        <if test="tcmdiseaseConfigPageVO.hospitalId!=null">
+            and a.hospital_id=#{tcmdiseaseConfigPageVO.hospitalId}
+        </if>
+        <if test="tcmdiseaseConfigPageVO.hisName!=null and tcmdiseaseConfigPageVO.hisName!=''">
+            and a.his_name like concat("%",#{tcmdiseaseConfigPageVO.hisName},"%")
+        </if>
+        <if test="tcmdiseaseConfigPageVO.uniqueName!=null and tcmdiseaseConfigPageVO.uniqueName!=''">
+            and a.unique_name like concat("%",#{tcmdiseaseConfigPageVO.uniqueName},"%")
+        </if>
+        <if test="tcmdiseaseConfigPageVO.uniqueCode!=null and tcmdiseaseConfigPageVO.uniqueCode!=''">
+            and a.unique_code like concat("%",#{tcmdiseaseConfigPageVO.icdCode},"%")
+        </if>
+        order by a.gmt_modified desc
+    </select>
+
+    <select id="getTcmdiseasesIndex" resultType="com.diagbot.entity.TcmdiseaseConfig"
+            parameterType="com.diagbot.vo.RetrievalVO">
+        SELECT DISTINCT u.his_name
+        FROM(
+        SELECT
+        DISTINCT his_name
+        FROM
+        tran_tcmdisease_config
+        WHERE
+        is_deleted = "N"
+        <if test="hospitalId!=null">
+            and hospital_id=#{hospitalId}
+        </if>
+        <if test="inputStr!=null and inputStr!=''">
+            and his_name = #{inputStr}
+        </if>
+        UNION
+        SELECT
+        DISTINCT his_name
+        FROM
+        tran_tcmdisease_config
+        WHERE
+        is_deleted = "N"
+        <if test="hospitalId!=null">
+            and hospital_id=#{hospitalId}
+        </if>
+        <if test="inputStr!=null and inputStr!=''">
+            and his_name like concat(#{inputStr},"%")
+        </if>
+        UNION
+        SELECT
+        DISTINCT his_name
+        FROM
+        tran_tcmdisease_config
+        WHERE
+        is_deleted = "N"
+        <if test="hospitalId!=null">
+            and hospital_id=#{hospitalId}
+        </if>
+        <if test="inputStr!=null and inputStr!=''">
+            and his_name like concat("%",#{inputStr},"%")
+        </if>
+        ) u LIMIT 100
+    </select>
+
+</mapper>

+ 83 - 0
src/main/resources/mapper/TcmsyndromeConfigMapper.xml

@@ -0,0 +1,83 @@
+<?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.TcmsyndromeConfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.TcmsyndromeConfig">
+        <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="hospital_id" property="hospitalId" />
+        <result column="his_name" property="hisName" />
+        <result column="unique_name" property="uniqueName" />
+        <result column="unique_code" property="uniqueCode" />
+    </resultMap>
+
+    <!-- 分页查询 -->
+    <select id="getPage" resultType="com.diagbot.entity.TcmsyndromeConfig">
+        select a.*
+        from tran_tcmsyndrome_config a
+        where a.is_deleted='N'
+        <if test="tcmsyndromeConfigPageVO.hospitalId!=null">
+            and a.hospital_id=#{tcmsyndromeConfigPageVO.hospitalId}
+        </if>
+        <if test="tcmsyndromeConfigPageVO.hisName!=null and tcmsyndromeConfigPageVO.hisName!=''">
+            and a.his_name like concat("%",#{tcmsyndromeConfigPageVO.hisName},"%")
+        </if>
+        <if test="tcmsyndromeConfigPageVO.uniqueName!=null and tcmsyndromeConfigPageVO.uniqueName!=''">
+            and a.unique_name like concat("%",#{tcmsyndromeConfigPageVO.uniqueName},"%")
+        </if>
+        <if test="tcmsyndromeConfigPageVO.uniqueCode!=null and tcmsyndromeConfigPageVO.uniqueCode!=''">
+            and a.unique_code like concat("%",#{tcmsyndromeConfigPageVO.icdCode},"%")
+        </if>
+        order by a.gmt_modified desc
+    </select>
+
+    <select id="getTcmsyndromesIndex" resultType="com.diagbot.entity.TcmsyndromeConfig"
+            parameterType="com.diagbot.vo.RetrievalVO">
+        SELECT DISTINCT u.his_name
+        FROM(
+        SELECT
+        DISTINCT his_name
+        FROM
+        tran_tcmsyndrome_config
+        WHERE
+        is_deleted = "N"
+        <if test="hospitalId!=null">
+            and hospital_id=#{hospitalId}
+        </if>
+        <if test="inputStr!=null and inputStr!=''">
+            and his_name = #{inputStr}
+        </if>
+        UNION
+        SELECT
+        DISTINCT his_name
+        FROM
+        tran_tcmsyndrome_config
+        WHERE
+        is_deleted = "N"
+        <if test="hospitalId!=null">
+            and hospital_id=#{hospitalId}
+        </if>
+        <if test="inputStr!=null and inputStr!=''">
+            and his_name like concat(#{inputStr},"%")
+        </if>
+        UNION
+        SELECT
+        DISTINCT his_name
+        FROM
+        tran_tcmsyndrome_config
+        WHERE
+        is_deleted = "N"
+        <if test="hospitalId!=null">
+            and hospital_id=#{hospitalId}
+        </if>
+        <if test="inputStr!=null and inputStr!=''">
+            and his_name like concat("%",#{inputStr},"%")
+        </if>
+        ) u LIMIT 100
+    </select>
+</mapper>