Browse Source

映射关系维护

zhaops 4 years ago
parent
commit
25fdfa6b52
20 changed files with 1086 additions and 191 deletions
  1. 10 0
      cdssman-service/src/main/java/com/diagbot/client/CdssCoreClient.java
  2. 13 0
      cdssman-service/src/main/java/com/diagbot/client/hystrix/CdssCoreHystrix.java
  3. 32 24
      cdssman-service/src/main/java/com/diagbot/entity/DeptConfig.java
  4. 30 23
      cdssman-service/src/main/java/com/diagbot/entity/DiseaseConfig.java
  5. 8 10
      cdssman-service/src/main/java/com/diagbot/entity/DrugConfig.java
  6. 34 26
      cdssman-service/src/main/java/com/diagbot/entity/LisConfig.java
  7. 30 23
      cdssman-service/src/main/java/com/diagbot/entity/OperationConfig.java
  8. 28 21
      cdssman-service/src/main/java/com/diagbot/entity/PacsConfig.java
  9. 9 11
      cdssman-service/src/main/java/com/diagbot/entity/TransfusionConfig.java
  10. 10 9
      cdssman-service/src/main/java/com/diagbot/enums/ConceptTypeEnum.java
  11. 68 0
      cdssman-service/src/main/java/com/diagbot/enums/StaticTypeEnum.java
  12. 6 6
      cdssman-service/src/main/java/com/diagbot/facade/ConceptInfoFacade.java
  13. 109 5
      cdssman-service/src/main/java/com/diagbot/facade/DeptConfigFacade.java
  14. 108 5
      cdssman-service/src/main/java/com/diagbot/facade/DiseaseConfigFacade.java
  15. 115 5
      cdssman-service/src/main/java/com/diagbot/facade/DrugConfigFacade.java
  16. 129 5
      cdssman-service/src/main/java/com/diagbot/facade/LisConfigFacade.java
  17. 108 5
      cdssman-service/src/main/java/com/diagbot/facade/OperationConfigFacade.java
  18. 108 5
      cdssman-service/src/main/java/com/diagbot/facade/PacsConfigFacade.java
  19. 111 8
      cdssman-service/src/main/java/com/diagbot/facade/TransfusionConfigFacade.java
  20. 20 0
      cdssman-service/src/main/java/com/diagbot/vo/ConceptVO.java

+ 10 - 0
cdssman-service/src/main/java/com/diagbot/client/CdssCoreClient.java

@@ -3,6 +3,7 @@ package com.diagbot.client;
 import com.diagbot.client.hystrix.CdssCoreHystrix;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.StaticKnowledgeIndexDTO;
+import com.diagbot.vo.ConceptVO;
 import com.diagbot.vo.HasStaticKnowledgeVO;
 import com.diagbot.vo.StaticKnowledgeIndexVO;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -36,4 +37,13 @@ public interface CdssCoreClient {
      */
     @PostMapping("/staticKnowledge/updateHasInfoStatus")
     RespDTO<Boolean> updateHasInfoStatus(@Valid @RequestBody HasStaticKnowledgeVO hasStaticKnowledgeVO);
+
+    /**
+     * 术语批量校验
+     *
+     * @param conceptVO
+     * @return
+     */
+    @PostMapping("/retrieval/getConceptNames")
+    RespDTO<List<String>> getConceptNames(@Valid @RequestBody ConceptVO conceptVO);
 }

+ 13 - 0
cdssman-service/src/main/java/com/diagbot/client/hystrix/CdssCoreHystrix.java

@@ -3,6 +3,7 @@ package com.diagbot.client.hystrix;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.StaticKnowledgeIndexDTO;
+import com.diagbot.vo.ConceptVO;
 import com.diagbot.vo.HasStaticKnowledgeVO;
 import com.diagbot.vo.StaticKnowledgeIndexVO;
 import lombok.extern.slf4j.Slf4j;
@@ -43,4 +44,16 @@ public class CdssCoreHystrix implements CdssCoreClient {
         log.error("【hystrix】调用{}异常", "updateHasInfoStatus");
         return null;
     }
+
+    /**
+     * 术语批量校验
+     *
+     * @param conceptVO
+     * @return
+     */
+    @Override
+    public RespDTO<List<String>> getConceptNames(@Valid @RequestBody ConceptVO conceptVO) {
+        log.error("【hystrix】调用{}异常", "getConceptNames");
+        return null;
+    }
 }

+ 32 - 24
cdssman-service/src/main/java/com/diagbot/entity/DeptConfig.java

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -57,33 +56,32 @@ public class DeptConfig implements Serializable {
     /**
      * 医院id
      */
-    @NotNull(message = "请输入医院id")
     private Long hospitalId;
 
     /**
-     * 医院项目名称
+     * 医院科室名称
      */
-    @Excel(name="HIS名称", width = 40)
-    @NotBlank(message = "请输入医院端项目名称")
+    @Excel(name = "医院科室名称", width = 40, orderNum = "1")
+    @NotBlank(message = "请输入医院科室名称")
     private String hisName;
 
     /**
-     * 医院项目编码
+     * 医院科室编码
      */
-    @Excel(name = "HIS编码", width = 40)
+    @Excel(name = "医院科室编码", width = 40, orderNum = "2")
     private String hisCode;
 
     /**
-     * 标准名称
+     * 标准科室名称
      */
-    @Excel(name = "标准名称", width = 40)
-    @NotBlank(message = "请输入标准术语名称")
+    @Excel(name = "标准科室名称", width = 40, orderNum = "4")
+    @NotBlank(message = "请输入标准科室名称")
     private String uniqueName;
 
     /**
-     * 标准编码
+     * 对应项编码
      */
-    @Excel(name="标准编码", width = 40)
+    @Excel(name = "对应项编码", width = 40, orderNum = "3")
     private String uniqueCode;
 
     public Long getId() {
@@ -93,6 +91,7 @@ public class DeptConfig implements Serializable {
     public void setId(Long id) {
         this.id = id;
     }
+
     public String getIsDeleted() {
         return isDeleted;
     }
@@ -100,6 +99,7 @@ public class DeptConfig implements Serializable {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
     }
+
     public Date getGmtCreate() {
         return gmtCreate;
     }
@@ -107,6 +107,7 @@ public class DeptConfig implements Serializable {
     public void setGmtCreate(Date gmtCreate) {
         this.gmtCreate = gmtCreate;
     }
+
     public Date getGmtModified() {
         return gmtModified;
     }
@@ -114,6 +115,7 @@ public class DeptConfig implements Serializable {
     public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
     }
+
     public String getCreator() {
         return creator;
     }
@@ -121,6 +123,7 @@ public class DeptConfig implements Serializable {
     public void setCreator(String creator) {
         this.creator = creator;
     }
+
     public String getModifier() {
         return modifier;
     }
@@ -128,6 +131,7 @@ public class DeptConfig implements Serializable {
     public void setModifier(String modifier) {
         this.modifier = modifier;
     }
+
     public Long getHospitalId() {
         return hospitalId;
     }
@@ -135,6 +139,7 @@ public class DeptConfig implements Serializable {
     public void setHospitalId(Long hospitalId) {
         this.hospitalId = hospitalId;
     }
+
     public String getHisName() {
         return hisName;
     }
@@ -142,6 +147,7 @@ public class DeptConfig implements Serializable {
     public void setHisName(String hisName) {
         this.hisName = hisName;
     }
+
     public String getHisCode() {
         return hisCode;
     }
@@ -149,6 +155,7 @@ public class DeptConfig implements Serializable {
     public void setHisCode(String hisCode) {
         this.hisCode = hisCode;
     }
+
     public String getUniqueName() {
         return uniqueName;
     }
@@ -156,6 +163,7 @@ public class DeptConfig implements Serializable {
     public void setUniqueName(String uniqueName) {
         this.uniqueName = uniqueName;
     }
+
     public String getUniqueCode() {
         return uniqueCode;
     }
@@ -167,17 +175,17 @@ public class DeptConfig implements Serializable {
     @Override
     public String toString() {
         return "DeptConfig{" +
-            "id=" + id +
-            ", isDeleted=" + isDeleted +
-            ", gmtCreate=" + gmtCreate +
-            ", gmtModified=" + gmtModified +
-            ", creator=" + creator +
-            ", modifier=" + modifier +
-            ", hospitalId=" + hospitalId +
-            ", hisName=" + hisName +
-            ", hisCode=" + hisCode +
-            ", uniqueName=" + uniqueName +
-            ", uniqueCode=" + uniqueCode +
-        "}";
+                "id=" + id +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                ", hospitalId=" + hospitalId +
+                ", hisName=" + hisName +
+                ", hisCode=" + hisCode +
+                ", uniqueName=" + uniqueName +
+                ", uniqueCode=" + uniqueCode +
+                "}";
     }
 }

+ 30 - 23
cdssman-service/src/main/java/com/diagbot/entity/DiseaseConfig.java

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -57,27 +56,26 @@ public class DiseaseConfig implements Serializable {
     /**
      * 医院id
      */
-    @NotNull(message = "请输入医院id")
     private Long hospitalId;
 
     /**
-     * his名称
+     * 医院诊断名称
      */
-    @Excel(name="HIS名称", width = 40)
-    @NotBlank(message = "请输入医院端项目名称")
+    @Excel(name = "医院诊断名称", width = 40, orderNum = "1")
+    @NotBlank(message = "请输入医院诊断名称")
     private String hisName;
 
     /**
-     * 标准名
+     * 标准诊断
      */
-    @Excel(name = "标准名称", width = 40)
-    @NotBlank(message = "请输入标准术语名称")
+    @Excel(name = "标准诊断名称", width = 40, orderNum = "3")
+    @NotBlank(message = "请输入标准诊断名称")
     private String uniqueName;
 
     /**
-     * ICD编码
+     * ICD-10编码
      */
-    @Excel(name="ICD编码", width = 40)
+    @Excel(name = "ICD-10编码", width = 40, orderNum = "2")
     private String icdCode;
 
     public Long getId() {
@@ -87,6 +85,7 @@ public class DiseaseConfig implements Serializable {
     public void setId(Long id) {
         this.id = id;
     }
+
     public String getIsDeleted() {
         return isDeleted;
     }
@@ -94,6 +93,7 @@ public class DiseaseConfig implements Serializable {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
     }
+
     public Date getGmtCreate() {
         return gmtCreate;
     }
@@ -101,6 +101,7 @@ public class DiseaseConfig implements Serializable {
     public void setGmtCreate(Date gmtCreate) {
         this.gmtCreate = gmtCreate;
     }
+
     public Date getGmtModified() {
         return gmtModified;
     }
@@ -108,6 +109,7 @@ public class DiseaseConfig implements Serializable {
     public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
     }
+
     public String getCreator() {
         return creator;
     }
@@ -115,6 +117,7 @@ public class DiseaseConfig implements Serializable {
     public void setCreator(String creator) {
         this.creator = creator;
     }
+
     public String getModifier() {
         return modifier;
     }
@@ -122,6 +125,7 @@ public class DiseaseConfig implements Serializable {
     public void setModifier(String modifier) {
         this.modifier = modifier;
     }
+
     public Long getHospitalId() {
         return hospitalId;
     }
@@ -129,6 +133,7 @@ public class DiseaseConfig implements Serializable {
     public void setHospitalId(Long hospitalId) {
         this.hospitalId = hospitalId;
     }
+
     public String getHisName() {
         return hisName;
     }
@@ -136,6 +141,7 @@ public class DiseaseConfig implements Serializable {
     public void setHisName(String hisName) {
         this.hisName = hisName;
     }
+
     public String getUniqueName() {
         return uniqueName;
     }
@@ -143,6 +149,7 @@ public class DiseaseConfig implements Serializable {
     public void setUniqueName(String uniqueName) {
         this.uniqueName = uniqueName;
     }
+
     public String getIcdCode() {
         return icdCode;
     }
@@ -154,16 +161,16 @@ public class DiseaseConfig implements Serializable {
     @Override
     public String toString() {
         return "DiseaseConfig{" +
-            "id=" + id +
-            ", isDeleted=" + isDeleted +
-            ", gmtCreate=" + gmtCreate +
-            ", gmtModified=" + gmtModified +
-            ", creator=" + creator +
-            ", modifier=" + modifier +
-            ", hospitalId=" + hospitalId +
-            ", hisName=" + hisName +
-            ", uniqueName=" + uniqueName +
-            ", icdCode=" + icdCode +
-        "}";
-    }
-}
+                "id=" + id +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                ", hospitalId=" + hospitalId +
+                ", hisName=" + hisName +
+                ", uniqueName=" + uniqueName +
+                ", icdCode=" + icdCode +
+                "}";
+    }
+}

+ 8 - 10
cdssman-service/src/main/java/com/diagbot/entity/DrugConfig.java

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -57,33 +56,32 @@ public class DrugConfig implements Serializable {
     /**
      * 医院id
      */
-    @NotNull(message = "请输入医院id")
     private Long hospitalId;
 
     /**
-     * his名称
+     * 医院药品名称
      */
-    @Excel(name = "HIS名称", width = 40)
-    @NotBlank(message = "请输入医院端项目名称")
+    @Excel(name = "医院药品名称", width = 40, orderNum = "1")
+    @NotBlank(message = "请输入医院药品名称")
     private String hisName;
 
     /**
-     * 标准名
+     * 标准药品
      */
-    @Excel(name = "标准名称", width = 40)
-    @NotBlank(message = "请输入标准术语名称")
+    @Excel(name = "标准药品名称", width = 40, orderNum = "4")
+    @NotBlank(message = "请输入标准药品名称")
     private String uniqueName;
 
     /**
      * 标准编码
      */
-    @Excel(name = "标准编码", width = 40)
+    @Excel(name = "对应项编码", width = 40, orderNum = "3")
     private String uniqueCode;
 
     /**
      * 剂型
      */
-    @Excel(name = "剂型", width = 20)
+    @Excel(name = "剂型", width = 20, orderNum = "2")
     private String form;
 
     public Long getId() {

+ 34 - 26
cdssman-service/src/main/java/com/diagbot/entity/LisConfig.java

@@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -59,33 +58,32 @@ public class LisConfig implements Serializable {
     /**
      * 医院id
      */
-    @NotNull(message = "请输入医院id")
     private Long hospitalId;
 
     /**
-     * his大项名称
+     * 检验套餐
      */
-    @Excel(name = "his大项名称", width = 40)
-    @NotBlank(message = "请输入大项名称")
+    @Excel(name = "检验套餐", width = 40, orderNum = "1")
+    @NotBlank(message = "请输入检验套餐")
     private String hisName;
 
     /**
-     * his小项名称
+     * 检验细项
      */
-    @Excel(name = "his小项名称", width = 40)
+    @Excel(name = "检验细项", width = 40, orderNum = "2")
     private String hisDetailName;
 
     /**
-     * 标准
+     * 标准检验项目
      */
-    @Excel(name = "标准名", width = 40)
-    @NotBlank(message = "请输入公表名称")
+    @Excel(name = "标准检验项目", width = 40, orderNum = "4")
+    @NotBlank(message = "请输入标准检验项目")
     private String uniqueName;
 
     /**
-     * 标准编码
+     * 对应项目编码
      */
-    @Excel(name = "标准编码", width = 40)
+    @Excel(name = "对应项目编码", width = 40, orderNum = "3")
     private String uniqueCode;
 
     public Long getId() {
@@ -95,6 +93,7 @@ public class LisConfig implements Serializable {
     public void setId(Long id) {
         this.id = id;
     }
+
     public String getIsDeleted() {
         return isDeleted;
     }
@@ -102,6 +101,7 @@ public class LisConfig implements Serializable {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
     }
+
     public Date getGmtCreate() {
         return gmtCreate;
     }
@@ -109,6 +109,7 @@ public class LisConfig implements Serializable {
     public void setGmtCreate(Date gmtCreate) {
         this.gmtCreate = gmtCreate;
     }
+
     public Date getGmtModified() {
         return gmtModified;
     }
@@ -116,6 +117,7 @@ public class LisConfig implements Serializable {
     public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
     }
+
     public String getCreator() {
         return creator;
     }
@@ -123,6 +125,7 @@ public class LisConfig implements Serializable {
     public void setCreator(String creator) {
         this.creator = creator;
     }
+
     public String getModifier() {
         return modifier;
     }
@@ -130,6 +133,7 @@ public class LisConfig implements Serializable {
     public void setModifier(String modifier) {
         this.modifier = modifier;
     }
+
     public Long getHospitalId() {
         return hospitalId;
     }
@@ -137,6 +141,7 @@ public class LisConfig implements Serializable {
     public void setHospitalId(Long hospitalId) {
         this.hospitalId = hospitalId;
     }
+
     public String getHisName() {
         return hisName;
     }
@@ -144,6 +149,7 @@ public class LisConfig implements Serializable {
     public void setHisName(String hisName) {
         this.hisName = hisName;
     }
+
     public String getHisDetailName() {
         return hisDetailName;
     }
@@ -151,6 +157,7 @@ public class LisConfig implements Serializable {
     public void setHisDetailName(String hisDetailName) {
         this.hisDetailName = hisDetailName;
     }
+
     public String getUniqueName() {
         return uniqueName;
     }
@@ -158,6 +165,7 @@ public class LisConfig implements Serializable {
     public void setUniqueName(String uniqueName) {
         this.uniqueName = uniqueName;
     }
+
     public String getUniqueCode() {
         return uniqueCode;
     }
@@ -169,17 +177,17 @@ public class LisConfig implements Serializable {
     @Override
     public String toString() {
         return "LisConfig{" +
-            "id=" + id +
-            ", isDeleted=" + isDeleted +
-            ", gmtCreate=" + gmtCreate +
-            ", gmtModified=" + gmtModified +
-            ", creator=" + creator +
-            ", modifier=" + modifier +
-            ", hospitalId=" + hospitalId +
-            ", hisName=" + hisName +
-            ", hisDetailName=" + hisDetailName +
-            ", uniqueName=" + uniqueName +
-            ", uniqueCode=" + uniqueCode +
-        "}";
-    }
-}
+                "id=" + id +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                ", hospitalId=" + hospitalId +
+                ", hisName=" + hisName +
+                ", hisDetailName=" + hisDetailName +
+                ", uniqueName=" + uniqueName +
+                ", uniqueCode=" + uniqueCode +
+                "}";
+    }
+}

+ 30 - 23
cdssman-service/src/main/java/com/diagbot/entity/OperationConfig.java

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -57,27 +56,26 @@ public class OperationConfig implements Serializable {
     /**
      * 医院id
      */
-    @NotNull(message = "请输入医院id")
     private Long hospitalId;
 
     /**
-     * his名称
+     * 医院手术/操作名称
      */
-    @Excel(name="HIS名称", width = 40)
-    @NotBlank(message = "请输入医院端项目名称")
+    @Excel(name = "医院手术/操作名称", width = 40, orderNum = "1")
+    @NotBlank(message = "请输入医院手术/操作名称")
     private String hisName;
 
     /**
-     * 标准名
+     * 标准手术/操作
      */
-    @Excel(name = "标准名称", width = 40)
-    @NotBlank(message = "请输入标准术语名称")
+    @Excel(name = "标准手术/操作名称", width = 40, orderNum = "3")
+    @NotBlank(message = "请输入标准手术/操作名称")
     private String uniqueName;
 
     /**
-     * 标准编码
+     * 对应项编码
      */
-    @Excel(name="标准编码", width = 40)
+    @Excel(name = "对应项编码", width = 40, orderNum = "2")
     private String uniqueCode;
 
     public Long getId() {
@@ -87,6 +85,7 @@ public class OperationConfig implements Serializable {
     public void setId(Long id) {
         this.id = id;
     }
+
     public String getIsDeleted() {
         return isDeleted;
     }
@@ -94,6 +93,7 @@ public class OperationConfig implements Serializable {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
     }
+
     public Date getGmtCreate() {
         return gmtCreate;
     }
@@ -101,6 +101,7 @@ public class OperationConfig implements Serializable {
     public void setGmtCreate(Date gmtCreate) {
         this.gmtCreate = gmtCreate;
     }
+
     public Date getGmtModified() {
         return gmtModified;
     }
@@ -108,6 +109,7 @@ public class OperationConfig implements Serializable {
     public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
     }
+
     public String getCreator() {
         return creator;
     }
@@ -115,6 +117,7 @@ public class OperationConfig implements Serializable {
     public void setCreator(String creator) {
         this.creator = creator;
     }
+
     public String getModifier() {
         return modifier;
     }
@@ -122,6 +125,7 @@ public class OperationConfig implements Serializable {
     public void setModifier(String modifier) {
         this.modifier = modifier;
     }
+
     public Long getHospitalId() {
         return hospitalId;
     }
@@ -129,6 +133,7 @@ public class OperationConfig implements Serializable {
     public void setHospitalId(Long hospitalId) {
         this.hospitalId = hospitalId;
     }
+
     public String getHisName() {
         return hisName;
     }
@@ -136,6 +141,7 @@ public class OperationConfig implements Serializable {
     public void setHisName(String hisName) {
         this.hisName = hisName;
     }
+
     public String getUniqueName() {
         return uniqueName;
     }
@@ -143,6 +149,7 @@ public class OperationConfig implements Serializable {
     public void setUniqueName(String uniqueName) {
         this.uniqueName = uniqueName;
     }
+
     public String getUniqueCode() {
         return uniqueCode;
     }
@@ -154,16 +161,16 @@ public class OperationConfig implements Serializable {
     @Override
     public String toString() {
         return "OperationConfig{" +
-            "id=" + id +
-            ", isDeleted=" + isDeleted +
-            ", gmtCreate=" + gmtCreate +
-            ", gmtModified=" + gmtModified +
-            ", creator=" + creator +
-            ", modifier=" + modifier +
-            ", hospitalId=" + hospitalId +
-            ", hisName=" + hisName +
-            ", uniqueName=" + uniqueName +
-            ", uniqueCode=" + uniqueCode +
-        "}";
-    }
-}
+                "id=" + id +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                ", hospitalId=" + hospitalId +
+                ", hisName=" + hisName +
+                ", uniqueName=" + uniqueName +
+                ", uniqueCode=" + uniqueCode +
+                "}";
+    }
+}

+ 28 - 21
cdssman-service/src/main/java/com/diagbot/entity/PacsConfig.java

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -57,27 +56,26 @@ public class PacsConfig implements Serializable {
     /**
      * 医院id
      */
-    @NotNull(message = "请输入医院id")
     private Long hospitalId;
 
     /**
-     * his名称
+     * 医院检查项目
      */
-    @Excel(name="HIS名称", width = 40)
-    @NotBlank(message = "请输入医院端项目名称")
+    @Excel(name = "医院检查项目", width = 40, orderNum = "1")
+    @NotBlank(message = "请输入医院检查项目")
     private String hisName;
 
     /**
-     * 标准
+     * 标准检查项目
      */
-    @Excel(name = "标准名称", width = 40)
-    @NotBlank(message = "请输入标准术语名称")
+    @Excel(name = "标准检查项目", width = 40, orderNum = "3")
+    @NotBlank(message = "请输入标准检查项目")
     private String uniqueName;
 
     /**
-     * 标准编码
+     * 对应项编码
      */
-    @Excel(name="标准编码", width = 40)
+    @Excel(name = "对应项编码", width = 40, orderNum = "2")
     private String uniqueCode;
 
     public Long getId() {
@@ -87,6 +85,7 @@ public class PacsConfig implements Serializable {
     public void setId(Long id) {
         this.id = id;
     }
+
     public String getIsDeleted() {
         return isDeleted;
     }
@@ -94,6 +93,7 @@ public class PacsConfig implements Serializable {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
     }
+
     public Date getGmtCreate() {
         return gmtCreate;
     }
@@ -101,6 +101,7 @@ public class PacsConfig implements Serializable {
     public void setGmtCreate(Date gmtCreate) {
         this.gmtCreate = gmtCreate;
     }
+
     public Date getGmtModified() {
         return gmtModified;
     }
@@ -108,6 +109,7 @@ public class PacsConfig implements Serializable {
     public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
     }
+
     public String getCreator() {
         return creator;
     }
@@ -115,6 +117,7 @@ public class PacsConfig implements Serializable {
     public void setCreator(String creator) {
         this.creator = creator;
     }
+
     public String getModifier() {
         return modifier;
     }
@@ -122,6 +125,7 @@ public class PacsConfig implements Serializable {
     public void setModifier(String modifier) {
         this.modifier = modifier;
     }
+
     public Long getHospitalId() {
         return hospitalId;
     }
@@ -129,6 +133,7 @@ public class PacsConfig implements Serializable {
     public void setHospitalId(Long hospitalId) {
         this.hospitalId = hospitalId;
     }
+
     public String getHisName() {
         return hisName;
     }
@@ -136,6 +141,7 @@ public class PacsConfig implements Serializable {
     public void setHisName(String hisName) {
         this.hisName = hisName;
     }
+
     public String getUniqueName() {
         return uniqueName;
     }
@@ -143,6 +149,7 @@ public class PacsConfig implements Serializable {
     public void setUniqueName(String uniqueName) {
         this.uniqueName = uniqueName;
     }
+
     public String getUniqueCode() {
         return uniqueCode;
     }
@@ -154,16 +161,16 @@ public class PacsConfig implements Serializable {
     @Override
     public String toString() {
         return "PacsConfig{" +
-            "id=" + id +
-            ", isDeleted=" + isDeleted +
-            ", gmtCreate=" + gmtCreate +
-            ", gmtModified=" + gmtModified +
-            ", creator=" + creator +
-            ", modifier=" + modifier +
-            ", hospitalId=" + hospitalId +
-            ", hisName=" + hisName +
-            ", uniqueName=" + uniqueName +
-            ", uniqueCode=" + uniqueCode +
-        "}";
+                "id=" + id +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                ", hospitalId=" + hospitalId +
+                ", hisName=" + hisName +
+                ", uniqueName=" + uniqueName +
+                ", uniqueCode=" + uniqueCode +
+                "}";
     }
 }

+ 9 - 11
cdssman-service/src/main/java/com/diagbot/entity/TransfusionConfig.java

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -57,27 +56,26 @@ public class TransfusionConfig implements Serializable {
     /**
      * 医院id
      */
-    @NotNull(message = "请输入医院id")
     private Long hospitalId;
 
     /**
-     * 医院项目名称
+     * 医院用血类型
      */
-    @Excel(name = "HIS名称", width = 40)
-    @NotBlank(message = "请输入医院端项目名称")
+    @Excel(name = "医院用血类型", width = 40, orderNum = "1")
+    @NotBlank(message = "请输入医院用血类型")
     private String hisName;
 
     /**
-     * 标准名称
+     * 标准用血术语
      */
-    @Excel(name = "标准名称", width = 40)
-    @NotBlank(message = "请输入标准术语名称")
+    @Excel(name = "标准用血术语", width = 40, orderNum = "3")
+    @NotBlank(message = "请输入标准用血术语")
     private String uniqueName;
 
     /**
-     * 标准编码
+     * 对应项编码
      */
-    @Excel(name = "标准编码", width = 40)
+    @Excel(name = "对应项编码", width = 40, orderNum = "2")
     private String uniqueCode;
 
     public Long getId() {
@@ -175,4 +173,4 @@ public class TransfusionConfig implements Serializable {
                 ", uniqueCode=" + uniqueCode +
                 "}";
     }
-}
+}

+ 10 - 9
cdssman-service/src/main/java/com/diagbot/enums/ConceptTypeEnum.java

@@ -6,16 +6,17 @@ import lombok.Setter;
 /**
  * @Description:
  * @Author:zhaops
- * @time: 2020/8/18 16:30
+ * @time: 2020/9/10 15:51
  */
 public enum ConceptTypeEnum implements KeyedNamed {
-    All(0, "全部"),
-    Disease(1, "诊断"),
-    Drug(2, "药品"),
-    LisPack(3, "检验套餐"),
-    Lis(4, "检验明细"),
-    Pacs(5, "检查"),
-    Opeartion(6, "手术和操作");
+    LisPack(1, "检验套餐"),
+    Lis(2, "检验细项"),
+    Pacs(3, "检查"),
+    Disease(4, "诊断"),
+    Drug(5, "药品"),
+    Opeartion(6, "手术和操作"),
+    Dept(7, "科室"),
+    Transfusion(8, "输血");
 
     @Setter
     private int key;
@@ -51,7 +52,7 @@ public enum ConceptTypeEnum implements KeyedNamed {
         return item != null ? item.name : null;
     }
 
-    public static int getKey(String name) {
+    public static Integer getKey(String name) {
         ConceptTypeEnum item = getEnum(name);
         return item != null ? item.key : null;
     }

+ 68 - 0
cdssman-service/src/main/java/com/diagbot/enums/StaticTypeEnum.java

@@ -0,0 +1,68 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/18 16:30
+ */
+public enum StaticTypeEnum implements KeyedNamed {
+    All(0, "全部"),
+    Disease(1, "诊断"),
+    Drug(2, "药品"),
+    LisPack(3, "检验套餐"),
+    Lis(4, "检验细项"),
+    Pacs(5, "检查"),
+    Opeartion(6, "手术和操作");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    StaticTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static StaticTypeEnum getEnum(int key) {
+        for (StaticTypeEnum item : StaticTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static StaticTypeEnum getEnum(String name) {
+        for (StaticTypeEnum item : StaticTypeEnum.values()) {
+            if (item.name.equals(name)) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        StaticTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    public static Integer getKey(String name) {
+        StaticTypeEnum item = getEnum(name);
+        return item != null ? item.key : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 6 - 6
cdssman-service/src/main/java/com/diagbot/facade/ConceptInfoFacade.java

@@ -11,8 +11,8 @@ import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.StaticKnowledgeIndexDTO;
 import com.diagbot.entity.ConceptDetail;
 import com.diagbot.entity.ConceptInfo;
-import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.StaticTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.ConceptDetailService;
@@ -214,7 +214,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
         List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
         if (StringUtil.isNotBlank(conceptInfoPageVO.getType())) {
             String typeName
-                    = convertTypeName(ConceptTypeEnum.getName(Integer.valueOf(conceptInfoPageVO.getType())), 1, dicList);
+                    = convertTypeName(StaticTypeEnum.getName(Integer.valueOf(conceptInfoPageVO.getType())), 1, dicList);
             conceptInfoPageVO.setTypeName(typeName);
         }
         IPage<ConceptInfoDTO> page = super.getPage(conceptInfoPageVO);
@@ -223,7 +223,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
             records.forEach(record -> {
                 String typeName = convertTypeName(record.getType(), 2, dicList);
                 record.setTypeName(typeName);
-                record.setType(String.valueOf(ConceptTypeEnum.getKey(typeName)));
+                record.setType(String.valueOf(StaticTypeEnum.getKey(typeName)));
             });
         }
         page.setRecords(records);
@@ -241,7 +241,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
         Date now = DateUtil.now();
         List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
         //术语类型转换
-        String typeName = convertTypeName(ConceptTypeEnum.getName(Integer.valueOf(conceptInfoVO.getType())), 1, dicList);
+        String typeName = convertTypeName(StaticTypeEnum.getName(Integer.valueOf(conceptInfoVO.getType())), 1, dicList);
         conceptInfoVO.setTypeName(typeName);
         ConceptInfo conceptInfo = new ConceptInfo();
 
@@ -349,7 +349,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
     public Boolean isExist(ConceptInfoVO conceptInfoVO) {
         List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
         //术语类型转换
-        String typeName = convertTypeName(ConceptTypeEnum.getName(Integer.valueOf(conceptInfoVO.getType())), 1, dicList);
+        String typeName = convertTypeName(StaticTypeEnum.getName(Integer.valueOf(conceptInfoVO.getType())), 1, dicList);
         conceptInfoVO.setTypeName(typeName);
         QueryWrapper<ConceptInfo> conceptInfoQueryWrapper = new QueryWrapper<>();
         conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
@@ -393,7 +393,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
             //启用状态、修改人、修改时间为明细的内容
             String typeName = convertTypeName(conceptInfoDTO.getType(), 2, dicList);
             conceptInfoDTO.setTypeName(typeName);
-            conceptInfoDTO.setType(String.valueOf(ConceptTypeEnum.getKey(typeName)));
+            conceptInfoDTO.setType(String.valueOf(StaticTypeEnum.getKey(typeName)));
             conceptInfoDTO.setModifier(conceptDetailList.get(0).getModifier());
             conceptInfoDTO.setGmtModified(conceptDetailList.get(0).getGmtModified());
             conceptInfoDTO.setIsDeleted(conceptDetailList.get(0).getIsDeleted());

+ 109 - 5
cdssman-service/src/main/java/com/diagbot/facade/DeptConfigFacade.java

@@ -3,16 +3,23 @@ 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.HosRelationNumDTO;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.DeptConfig;
+import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
 import com.diagbot.service.DeptConfigService;
 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.UserUtils;
+import com.diagbot.vo.ConceptVO;
 import com.diagbot.vo.DeptConfigListVO;
 import com.diagbot.vo.DeptConfigPageVO;
 import com.diagbot.vo.HosRelationNumPageVO;
@@ -40,6 +47,8 @@ import java.util.stream.Collectors;
 public class DeptConfigFacade {
     @Autowired
     private DeptConfigService deptConfigService;
+    @Autowired
+    private CdssCoreClient cdssCoreClient;
 
     /**
      * 判断是否已存在
@@ -54,8 +63,14 @@ public class DeptConfigFacade {
                 .eq("his_name", deptConfig.getHisName())
                 .eq("unique_name", deptConfig.getUniqueName());
         DeptConfig oldRecord = deptConfigService.getOne(queryWrapper, false);
-        if (oldRecord != null) {
-            return true;
+        if (deptConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        if (deptConfig.getId() != null
+                && oldRecord != null
+                && !deptConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
         }
         return false;
     }
@@ -77,8 +92,14 @@ public class DeptConfigFacade {
                 .eq("his_name", deptConfig.getHisName())
                 .eq("unique_name", deptConfig.getUniqueName());
         DeptConfig oldRecord = deptConfigService.getOne(queryWrapper, false);
-        if (oldRecord != null) {
-            deptConfig.setId(oldRecord.getId());
+        if (deptConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        if (deptConfig.getId() != null
+                && oldRecord != null
+                && !deptConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
         }
         //新增数据
         if (deptConfig.getId() == null) {
@@ -212,10 +233,93 @@ public class DeptConfigFacade {
             deptConfigList.forEach(deptConfig -> {
                 deptConfig.setHospitalId(hospitalIdVO.getHospitalId());
             });
-            saveOrUpdateRecords(deptConfigList);
+            importExcelRecords(deptConfigList, hospitalIdVO);
+        } else {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "校验失败,导入数据不能为空");
+        }
+    }
+
+    /**
+     * 数据导入
+     *
+     * @param deptConfigList
+     * @return
+     */
+    public Boolean importExcelRecords(List<DeptConfig> deptConfigList, HospitalIdVO hospitalIdVO) {
+        Long hospitalId = hospitalIdVO.getHospitalId();
+        String userId = UserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+
+        //1、数据完整性校验
+        //2、去除前后空格
+        for (int i = 0; i < deptConfigList.size(); i++) {
+            if (StringUtil.isBlank(deptConfigList.get(i).getHisName())
+                    || StringUtil.isBlank(deptConfigList.get(i).getUniqueName())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "第" + (i + 2) + "行存在不完整数据,导入失败,请修改后再试");
+            }
+            deptConfigList.get(i).setHisName(deptConfigList.get(i).getHisName().trim());
+            deptConfigList.get(i).setUniqueName(deptConfigList.get(i).getUniqueName().trim());
+            if (StringUtil.isNotBlank(deptConfigList.get(i).getUniqueCode())) {
+                deptConfigList.get(i).setUniqueCode(deptConfigList.get(i).getUniqueCode().trim());
+            } else {
+                deptConfigList.get(i).setUniqueCode(null);
+            }
+        }
+
+        // 验证数据是否已存在,已存在的先删除
+        // 没id的删除重新插入,有id的更新
+        List<Long> deleteIds = Lists.newLinkedList();
+        Map<String, Map<String, Long>> configMap
+                = getConfigMap(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())) {
+                    deleteIds.add(configMap.get(deptConfig.getHisName()).get(deptConfig.getUniqueName()));
+                }
+                deptConfig.setCreator(userId);
+                deptConfig.setGmtCreate(now);
+            }
+            if (deptConfig.getIsDeleted() == null) {
+                deptConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+            }
+        });
+
+        //标准术语校验
+        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())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "【" + deptConfigList.get(i).getUniqueName() + "】不是标准术语,导入失败,请修改后再试");
+            }
         }
+
+        //重复数据过滤
+        deptConfigList = deptConfigList
+                .stream()
+                .distinct()
+                .collect(Collectors.toList());
+
+        //删除已存在映射关系
+        IdListVO idListVO = new IdListVO();
+        idListVO.setIds(deleteIds);
+        deleteRecords(idListVO);
+        deptConfigService.saveOrUpdateBatch(deptConfigList);
+        return true;
     }
 
+
     /**
      * 获取映射关系-公表名
      *

+ 108 - 5
cdssman-service/src/main/java/com/diagbot/facade/DiseaseConfigFacade.java

@@ -2,16 +2,23 @@ package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.HosRelationNumDTO;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.DiseaseConfig;
+import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
 import com.diagbot.service.DiseaseConfigService;
 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.UserUtils;
+import com.diagbot.vo.ConceptVO;
 import com.diagbot.vo.DiseaseConfigListVO;
 import com.diagbot.vo.DiseaseConfigPageVO;
 import com.diagbot.vo.HosRelationNumPageVO;
@@ -39,6 +46,8 @@ import java.util.stream.Collectors;
 public class DiseaseConfigFacade {
     @Autowired
     private DiseaseConfigService diseaseConfigService;
+    @Autowired
+    private CdssCoreClient cdssCoreClient;
 
     /**
      * 判断是否已存在
@@ -53,8 +62,14 @@ public class DiseaseConfigFacade {
                 .eq("his_name", diseaseConfig.getHisName())
                 .eq("unique_name", diseaseConfig.getUniqueName());
         DiseaseConfig oldRecord = diseaseConfigService.getOne(queryWrapper, false);
-        if (oldRecord != null) {
-            return true;
+        if (diseaseConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        if (diseaseConfig.getId() != null
+                && oldRecord != null
+                && !diseaseConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
         }
         return false;
     }
@@ -76,8 +91,14 @@ public class DiseaseConfigFacade {
                 .eq("his_name", diseaseConfig.getHisName())
                 .eq("unique_name", diseaseConfig.getUniqueName());
         DiseaseConfig oldRecord = diseaseConfigService.getOne(queryWrapper, false);
-        if (oldRecord != null) {
-            diseaseConfig.setId(oldRecord.getId());
+        if (diseaseConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        if (diseaseConfig.getId() != null
+                && oldRecord != null
+                && !diseaseConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
         }
         //新增数据
         if (diseaseConfig.getId() == null) {
@@ -204,8 +225,90 @@ public class DiseaseConfigFacade {
             diseaseConfigList.forEach(diseaseConfig -> {
                 diseaseConfig.setHospitalId(hospitalIdVO.getHospitalId());
             });
-            saveOrUpdateRecords(diseaseConfigList);
+            importExcelRecords(diseaseConfigList, hospitalIdVO);
+        } else {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "校验失败,导入数据不能为空");
+        }
+    }
+
+    /**
+     * 数据导入
+     *
+     * @param diseaseConfigList
+     * @return
+     */
+    public Boolean importExcelRecords(List<DiseaseConfig> diseaseConfigList, HospitalIdVO hospitalIdVO) {
+        Long hospitalId = hospitalIdVO.getHospitalId();
+        String userId = UserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+
+        //1、数据完整性校验
+        //2、去除前后空格
+        for (int i = 0; i < diseaseConfigList.size(); i++) {
+            if (StringUtil.isBlank(diseaseConfigList.get(i).getHisName())
+                    || StringUtil.isBlank(diseaseConfigList.get(i).getUniqueName())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "第" + (i + 2) + "行存在不完整数据,导入失败,请修改后再试");
+            }
+            diseaseConfigList.get(i).setHisName(diseaseConfigList.get(i).getHisName().trim());
+            diseaseConfigList.get(i).setUniqueName(diseaseConfigList.get(i).getUniqueName().trim());
+            if (StringUtil.isNotBlank(diseaseConfigList.get(i).getIcdCode())) {
+                diseaseConfigList.get(i).setIcdCode(diseaseConfigList.get(i).getIcdCode().trim());
+            } else {
+                diseaseConfigList.get(i).setIcdCode(null);
+            }
         }
+
+        // 验证数据是否已存在,已存在的先删除
+        // 没id的删除重新插入,有id的更新
+        List<Long> deleteIds = Lists.newLinkedList();
+        Map<String, Map<String, Long>> configMap
+                = getConfigMap(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())) {
+                    deleteIds.add(configMap.get(diseaseConfig.getHisName()).get(diseaseConfig.getUniqueName()));
+                }
+                diseaseConfig.setCreator(userId);
+                diseaseConfig.setGmtCreate(now);
+            }
+            if (diseaseConfig.getIsDeleted() == null) {
+                diseaseConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+            }
+        });
+
+        //标准术语校验
+        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())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "【" + diseaseConfigList.get(i).getUniqueName() + "】不是标准术语,导入失败,请修改后再试");
+            }
+        }
+
+        //重复数据过滤
+        diseaseConfigList = diseaseConfigList
+                .stream()
+                .distinct()
+                .collect(Collectors.toList());
+
+        //删除已存在映射关系
+        IdListVO idListVO = new IdListVO();
+        idListVO.setIds(deleteIds);
+        deleteRecords(idListVO);
+        diseaseConfigService.saveOrUpdateBatch(diseaseConfigList);
+        return true;
     }
 
     /**

+ 115 - 5
cdssman-service/src/main/java/com/diagbot/facade/DrugConfigFacade.java

@@ -3,16 +3,23 @@ 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.HosRelationNumDTO;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.DrugConfig;
+import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
 import com.diagbot.service.DrugConfigService;
 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.UserUtils;
+import com.diagbot.vo.ConceptVO;
 import com.diagbot.vo.DrugConfigListVO;
 import com.diagbot.vo.DrugConfigPageVO;
 import com.diagbot.vo.HosRelationNumPageVO;
@@ -40,6 +47,8 @@ import java.util.stream.Collectors;
 public class DrugConfigFacade {
     @Autowired
     private DrugConfigService drugConfigService;
+    @Autowired
+    private CdssCoreClient cdssCoreClient;
 
     /**
      * 判断是否已存在
@@ -61,8 +70,14 @@ public class DrugConfigFacade {
             queryWrapper.eq("form", drugConfig.getForm());
         }
         DrugConfig oldRecord = drugConfigService.getOne(queryWrapper, false);
-        if (oldRecord != null) {
-            return true;
+        if (drugConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        if (drugConfig.getId() != null
+                && oldRecord != null
+                && !drugConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
         }
         return false;
     }
@@ -91,8 +106,14 @@ public class DrugConfigFacade {
             queryWrapper.eq("form", drugConfig.getForm());
         }
         DrugConfig oldRecord = drugConfigService.getOne(queryWrapper, false);
-        if (oldRecord != null) {
-            drugConfig.setId(oldRecord.getId());
+        if (drugConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        if (drugConfig.getId() != null
+                && oldRecord != null
+                && !drugConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
         }
         //新增数据
         if (drugConfig.getId() == null) {
@@ -241,10 +262,99 @@ public class DrugConfigFacade {
             drugConfigList.forEach(drugConfig -> {
                 drugConfig.setHospitalId(hospitalIdVO.getHospitalId());
             });
-            saveOrUpdateRecords(drugConfigList);
+            importExcelRecords(drugConfigList, hospitalIdVO);
+        } else {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "校验失败,导入数据不能为空");
         }
     }
 
+    /**
+     * 数据导入
+     *
+     * @param drugConfigList
+     * @return
+     */
+    public Boolean importExcelRecords(List<DrugConfig> drugConfigList,HospitalIdVO hospitalIdVO) {
+        Long hospitalId = hospitalIdVO.getHospitalId();
+        String userId = UserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+
+        //1、数据完整性校验
+        //2、去除前后空格
+        for (int i = 0; i < drugConfigList.size(); i++) {
+            if (StringUtil.isBlank(drugConfigList.get(i).getHisName())
+                    || StringUtil.isBlank(drugConfigList.get(i).getUniqueName())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "第" + (i + 2) + "行存在不完整数据,导入失败,请修改后再试");
+            }
+            drugConfigList.get(i).setHisName(drugConfigList.get(i).getHisName().trim());
+            drugConfigList.get(i).setUniqueName(drugConfigList.get(i).getUniqueName().trim());
+            if (StringUtil.isNotBlank(drugConfigList.get(i).getUniqueCode())) {
+                drugConfigList.get(i).setUniqueCode(drugConfigList.get(i).getUniqueCode().trim());
+            } else {
+                drugConfigList.get(i).setUniqueCode(null);
+            }
+        }
+
+        List<String> hisNames = drugConfigList
+                .stream()
+                .map(i -> i.getHisName())
+                .collect(Collectors.toList());
+        List<String> uniqueNames = drugConfigList
+                .stream()
+                .map(i -> i.getUniqueName())
+                .collect(Collectors.toList());
+
+        // 验证数据是否已存在,已存在的先删除
+        // 没id的删除重新插入,有id的更新
+        List<Long> deleteIds = Lists.newLinkedList();
+        Map<String, Map<String, Map<String, Long>>> configMap
+                = getConfigMap(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.add(configMap.get(drugConfig.getHisName()).get(form).get(drugConfig.getUniqueName()));
+                }
+                drugConfig.setCreator(userId);
+                drugConfig.setGmtCreate(now);
+            }
+            if (drugConfig.getIsDeleted() == null) {
+                drugConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+            }
+        });
+
+        //标准术语校验
+        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())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "【" + drugConfigList.get(i).getUniqueName() + "】不是标准术语,导入失败,请修改后再试");
+            }
+        }
+
+        //重复数据过滤
+        drugConfigList = drugConfigList
+                .stream()
+                .distinct()
+                .collect(Collectors.toList());
+
+        //删除已存在映射关系
+        IdListVO idListVO = new IdListVO();
+        idListVO.setIds(deleteIds);
+        deleteRecords(idListVO);
+        drugConfigService.saveOrUpdateBatch(drugConfigList);
+        return true;
+    }
 
     /**
      * 获取映射关系-公表名

+ 129 - 5
cdssman-service/src/main/java/com/diagbot/facade/LisConfigFacade.java

@@ -3,16 +3,23 @@ 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.HosRelationNumDTO;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.LisConfig;
+import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
 import com.diagbot.service.LisConfigService;
 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.UserUtils;
+import com.diagbot.vo.ConceptVO;
 import com.diagbot.vo.HosRelationNumPageVO;
 import com.diagbot.vo.HospitalIdVO;
 import com.diagbot.vo.IdListVO;
@@ -40,6 +47,8 @@ import java.util.stream.Collectors;
 public class LisConfigFacade{
     @Autowired
     private LisConfigService lisConfigService;
+    @Autowired
+    private CdssCoreClient cdssCoreClient;
 
     /**
      * 判断是否已存在
@@ -62,8 +71,14 @@ public class LisConfigFacade{
                     .eq("his_detail_name", lisConfig.getHisDetailName());
         }
         LisConfig oldRecord = lisConfigService.getOne(queryWrapper, false);
-        if (oldRecord != null) {
-            return true;
+        if (lisConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        if (lisConfig.getId() != null
+                && oldRecord != null
+                && !lisConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
         }
         return false;
     }
@@ -93,8 +108,14 @@ public class LisConfigFacade{
                     .eq("his_detail_name", lisConfig.getHisDetailName());
         }
         LisConfig oldRecord = lisConfigService.getOne(queryWrapper, false);
-        if (oldRecord != null) {
-            lisConfig.setId(oldRecord.getId());
+        if (lisConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        if (lisConfig.getId() != null
+                && oldRecord != null
+                && !lisConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
         }
         //新增数据
         if (lisConfig.getId() == null) {
@@ -241,10 +262,113 @@ public class LisConfigFacade{
             lisConfigList.forEach(lisConfig -> {
                 lisConfig.setHospitalId(hospitalIdVO.getHospitalId());
             });
-            saveOrUpdateRecords(lisConfigList);
+            importExcelRecords(lisConfigList, hospitalIdVO);
+        } else {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "校验失败,导入数据不能为空");
         }
     }
 
+    /**
+     * 数据导入
+     *
+     * @param lisConfigList
+     * @return
+     */
+    public Boolean importExcelRecords(List<LisConfig> lisConfigList,HospitalIdVO hospitalIdVO) {
+        Long hospitalId = hospitalIdVO.getHospitalId();
+        String userId = UserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+
+        //1、数据完整性校验
+        //2、去除前后空格
+        for (int i = 0; i < lisConfigList.size(); i++) {
+            if (StringUtil.isBlank(lisConfigList.get(i).getHisName())
+                    || StringUtil.isBlank(lisConfigList.get(i).getUniqueName())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "第" + (i + 2) + "行存在不完整数据,导入失败,请修改后再试");
+            }
+            lisConfigList.get(i).setHisName(lisConfigList.get(i).getHisName().trim());
+            lisConfigList.get(i).setUniqueName(lisConfigList.get(i).getUniqueName().trim());
+            if (StringUtil.isNotBlank(lisConfigList.get(i).getUniqueCode())) {
+                lisConfigList.get(i).setUniqueCode(lisConfigList.get(i).getUniqueCode().trim());
+            } else {
+                lisConfigList.get(i).setUniqueCode(null);
+            }
+        }
+
+        List<String> hisNames = lisConfigList
+                .stream()
+                .map(i -> i.getHisName())
+                .collect(Collectors.toList());
+        List<String> uniqueNames = lisConfigList
+                .stream()
+                .map(i -> i.getUniqueName())
+                .collect(Collectors.toList());
+
+        // 验证数据是否已存在,已存在的先删除
+        // 没id的删除重新插入,有id的更新
+        List<Long> deleteIds = Lists.newLinkedList();
+        Map<String, Map<String, Map<String, Long>>> configMap
+                = getConfigMap(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 (configMap.get(lisConfig.getHisName()).get("").containsKey(lisConfig.getUniqueName())) {
+                            deleteIds.add(configMap.get(lisConfig.getHisName()).get("").get(lisConfig.getUniqueName()));
+                        }
+                    } else if (configMap.get(lisConfig.getHisName()).containsKey(lisConfig.getHisDetailName())) {
+                        if (configMap.get(lisConfig.getHisName()).get(lisConfig.getHisDetailName()).containsKey(lisConfig.getUniqueName())) {
+                            deleteIds.add(configMap
+                                    .get(lisConfig.getHisName())
+                                    .get(lisConfig.getHisDetailName())
+                                    .get(lisConfig.getUniqueName()));
+                        }
+                    }
+                }
+                lisConfig.setCreator(userId);
+                lisConfig.setGmtCreate(now);
+            }
+            if (lisConfig.getIsDeleted() == null) {
+                lisConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+            }
+        });
+
+        //标准术语校验
+        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 (!lisPackNames.contains(lisConfigList.get(i).getUniqueName())
+                    && !lisNames.contains(lisConfigList.get(i).getUniqueName())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "【" + lisConfigList.get(i).getUniqueName() + "】不是标准术语,导入失败,请修改后再试");
+            }
+        }
+
+        //重复数据过滤
+        lisConfigList = lisConfigList
+                .stream()
+                .distinct()
+                .collect(Collectors.toList());
+
+        //删除已存在映射关系
+        IdListVO idListVO = new IdListVO();
+        idListVO.setIds(deleteIds);
+        deleteRecords(idListVO);
+        lisConfigService.saveOrUpdateBatch(lisConfigList);
+        return true;
+    }
 
     /**
      * 获取映射关系-id

+ 108 - 5
cdssman-service/src/main/java/com/diagbot/facade/OperationConfigFacade.java

@@ -3,16 +3,23 @@ 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.HosRelationNumDTO;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.OperationConfig;
+import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
 import com.diagbot.service.OperationConfigService;
 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.UserUtils;
+import com.diagbot.vo.ConceptVO;
 import com.diagbot.vo.HosRelationNumPageVO;
 import com.diagbot.vo.HospitalIdVO;
 import com.diagbot.vo.IdListVO;
@@ -40,6 +47,8 @@ import java.util.stream.Collectors;
 public class OperationConfigFacade {
     @Autowired
     private OperationConfigService operationConfigService;
+    @Autowired
+    private CdssCoreClient cdssCoreClient;
 
     /**
      * 判断是否已存在
@@ -54,8 +63,14 @@ public class OperationConfigFacade {
                 .eq("his_name", operationConfig.getHisName())
                 .eq("unique_name", operationConfig.getUniqueName());
         OperationConfig oldRecord = operationConfigService.getOne(queryWrapper, false);
-        if (oldRecord != null) {
-            return true;
+        if (operationConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        if (operationConfig.getId() != null
+                && oldRecord != null
+                && !operationConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
         }
         return false;
     }
@@ -77,8 +92,14 @@ public class OperationConfigFacade {
                 .eq("his_name", operationConfig.getHisName())
                 .eq("unique_name", operationConfig.getUniqueName());
         OperationConfig oldRecord = operationConfigService.getOne(queryWrapper, false);
-        if (oldRecord != null) {
-            operationConfig.setId(oldRecord.getId());
+        if (operationConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        if (operationConfig.getId() != null
+                && oldRecord != null
+                && !operationConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
         }
         //新增数据
         if (operationConfig.getId() == null) {
@@ -214,8 +235,90 @@ public class OperationConfigFacade {
             operationConfigList.forEach(operationConfig -> {
                 operationConfig.setHospitalId(hospitalIdVO.getHospitalId());
             });
-            saveOrUpdateRecords(operationConfigList);
+            importExcelRecords(operationConfigList, hospitalIdVO);
+        } else {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "校验失败,导入数据不能为空");
+        }
+    }
+
+    /**
+     * 数据导入
+     *
+     * @param operationConfigList
+     * @return
+     */
+    public Boolean importExcelRecords(List<OperationConfig> operationConfigList,HospitalIdVO hospitalIdVO) {
+        Long hospitalId = hospitalIdVO.getHospitalId();
+        String userId = UserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+
+        //1、数据完整性校验
+        //2、去除前后空格
+        for (int i = 0; i < operationConfigList.size(); i++) {
+            if (StringUtil.isBlank(operationConfigList.get(i).getHisName())
+                    || StringUtil.isBlank(operationConfigList.get(i).getUniqueName())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "第" + (i + 2) + "行存在不完整数据,导入失败,请修改后再试");
+            }
+            operationConfigList.get(i).setHisName(operationConfigList.get(i).getHisName().trim());
+            operationConfigList.get(i).setUniqueName(operationConfigList.get(i).getUniqueName().trim());
+            if (StringUtil.isNotBlank(operationConfigList.get(i).getUniqueCode())) {
+                operationConfigList.get(i).setUniqueCode(operationConfigList.get(i).getUniqueCode().trim());
+            } else {
+                operationConfigList.get(i).setUniqueCode(null);
+            }
         }
+
+        // 验证数据是否已存在,已存在的先删除
+        // 没id的删除重新插入,有id的更新
+        List<Long> deleteIds = Lists.newLinkedList();
+        Map<String, Map<String, Long>> configMap
+                = getConfigMap(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())) {
+                    deleteIds.add(configMap.get(operationConfig.getHisName()).get(operationConfig.getUniqueName()));
+                }
+                operationConfig.setCreator(userId);
+                operationConfig.setGmtCreate(now);
+            }
+            if (operationConfig.getIsDeleted() == null) {
+                operationConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+            }
+        });
+
+        //标准术语校验
+        List<String> uniqueNames = operationConfigList.stream()
+                .map(i -> i.getUniqueName())
+                .distinct()
+                .collect(Collectors.toList());
+        ConceptVO conceptVO = new ConceptVO();
+        conceptVO.setNames(uniqueNames);
+        conceptVO.setType(ConceptTypeEnum.Opeartion.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())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "【" + operationConfigList.get(i).getUniqueName() + "】不是标准术语,导入失败,请修改后再试");
+            }
+        }
+
+        //重复数据过滤
+        operationConfigList = operationConfigList
+                .stream()
+                .distinct()
+                .collect(Collectors.toList());
+
+        //删除已存在映射关系
+        IdListVO idListVO = new IdListVO();
+        idListVO.setIds(deleteIds);
+        deleteRecords(idListVO);
+        operationConfigService.saveOrUpdateBatch(operationConfigList);
+        return true;
     }
 
     /**

+ 108 - 5
cdssman-service/src/main/java/com/diagbot/facade/PacsConfigFacade.java

@@ -3,16 +3,23 @@ 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.HosRelationNumDTO;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.PacsConfig;
+import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
 import com.diagbot.service.PacsConfigService;
 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.UserUtils;
+import com.diagbot.vo.ConceptVO;
 import com.diagbot.vo.HosRelationNumPageVO;
 import com.diagbot.vo.HospitalIdVO;
 import com.diagbot.vo.IdListVO;
@@ -40,6 +47,8 @@ import java.util.stream.Collectors;
 public class PacsConfigFacade {
     @Autowired
     private PacsConfigService pacsConfigService;
+    @Autowired
+    private CdssCoreClient cdssCoreClient;
 
     /**
      * 判断是否已存在
@@ -54,8 +63,14 @@ public class PacsConfigFacade {
                 .eq("his_name", pacsConfig.getHisName())
                 .eq("unique_name", pacsConfig.getUniqueName());
         PacsConfig oldRecord = pacsConfigService.getOne(queryWrapper, false);
-        if (oldRecord != null) {
-            return true;
+        if (pacsConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        if (pacsConfig.getId() != null
+                && oldRecord != null
+                && !pacsConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
         }
         return false;
     }
@@ -77,8 +92,14 @@ public class PacsConfigFacade {
                 .eq("his_name", pacsConfig.getHisName())
                 .eq("unique_name", pacsConfig.getUniqueName());
         PacsConfig oldRecord = pacsConfigService.getOne(queryWrapper, false);
-        if (oldRecord != null) {
-            pacsConfig.setId(oldRecord.getId());
+        if (pacsConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        if (pacsConfig.getId() != null
+                && oldRecord != null
+                && !pacsConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
         }
         //新增数据
         if (pacsConfig.getId() == null) {
@@ -212,8 +233,90 @@ public class PacsConfigFacade {
             pacsConfigList.forEach(pacsConfig -> {
                 pacsConfig.setHospitalId(hospitalIdVO.getHospitalId());
             });
-            saveOrUpdateRecords(pacsConfigList);
+            importExcelRecords(pacsConfigList,hospitalIdVO);
+        }else {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "校验失败,导入数据不能为空");
+        }
+    }
+
+    /**
+     * 数据导入
+     *
+     * @param pacsConfigList
+     * @return
+     */
+    public Boolean importExcelRecords(List<PacsConfig> pacsConfigList,HospitalIdVO hospitalIdVO) {
+        Long hospitalId = hospitalIdVO.getHospitalId();
+        String userId = UserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+
+        //1、数据完整性校验
+        //2、去除前后空格
+        for (int i = 0; i < pacsConfigList.size(); i++) {
+            if (StringUtil.isBlank(pacsConfigList.get(i).getHisName())
+                    || StringUtil.isBlank(pacsConfigList.get(i).getUniqueName())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "第" + (i + 2) + "行存在不完整数据,导入失败,请修改后再试");
+            }
+            pacsConfigList.get(i).setHisName(pacsConfigList.get(i).getHisName().trim());
+            pacsConfigList.get(i).setUniqueName(pacsConfigList.get(i).getUniqueName().trim());
+            if (StringUtil.isNotBlank(pacsConfigList.get(i).getUniqueCode())) {
+                pacsConfigList.get(i).setUniqueCode(pacsConfigList.get(i).getUniqueCode().trim());
+            } else {
+                pacsConfigList.get(i).setUniqueCode(null);
+            }
         }
+
+        // 验证数据是否已存在,已存在的先删除
+        // 没id的删除重新插入,有id的更新
+        List<Long> deleteIds = Lists.newLinkedList();
+        Map<String, Map<String, Long>> configMap
+                = getConfigMap(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())) {
+                    deleteIds.add(configMap.get(pacsConfig.getHisName()).get(pacsConfig.getUniqueName()));
+                }
+                pacsConfig.setCreator(userId);
+                pacsConfig.setGmtCreate(now);
+            }
+            if (pacsConfig.getIsDeleted() == null) {
+                pacsConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+            }
+        });
+
+        //标准术语校验
+        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())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "【" + pacsConfigList.get(i).getUniqueName() + "】不是标准术语,导入失败,请修改后再试");
+            }
+        }
+
+        //重复数据过滤
+        pacsConfigList = pacsConfigList
+                .stream()
+                .distinct()
+                .collect(Collectors.toList());
+
+        //删除已存在映射关系
+        IdListVO idListVO = new IdListVO();
+        idListVO.setIds(deleteIds);
+        deleteRecords(idListVO);
+        pacsConfigService.saveOrUpdateBatch(pacsConfigList);
+        return true;
     }
 
     /**

+ 111 - 8
cdssman-service/src/main/java/com/diagbot/facade/TransfusionConfigFacade.java

@@ -3,22 +3,29 @@ 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.HosRelationNumDTO;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.TransfusionConfig;
+import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
 import com.diagbot.service.TransfusionConfigService;
 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.UserUtils;
-import com.diagbot.vo.TransfusionConfigListVO;
-import com.diagbot.vo.TransfusionConfigPageVO;
+import com.diagbot.vo.ConceptVO;
 import com.diagbot.vo.HosRelationNumPageVO;
 import com.diagbot.vo.HospitalIdVO;
 import com.diagbot.vo.IdListVO;
 import com.diagbot.vo.IdVO;
+import com.diagbot.vo.TransfusionConfigListVO;
+import com.diagbot.vo.TransfusionConfigPageVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -40,6 +47,8 @@ import java.util.stream.Collectors;
 public class TransfusionConfigFacade {
     @Autowired
     private TransfusionConfigService transfusionConfigService;
+    @Autowired
+    private CdssCoreClient cdssCoreClient;
 
     /**
      * 判断是否已存在
@@ -54,8 +63,14 @@ public class TransfusionConfigFacade {
                 .eq("his_name", transfusionConfig.getHisName())
                 .eq("unique_name", transfusionConfig.getUniqueName());
         TransfusionConfig oldRecord = transfusionConfigService.getOne(queryWrapper, false);
-        if (oldRecord != null) {
-            return true;
+        if (transfusionConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        if (transfusionConfig.getId() != null
+                && oldRecord != null
+                && !transfusionConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
         }
         return false;
     }
@@ -77,8 +92,14 @@ public class TransfusionConfigFacade {
                 .eq("his_name", transfusionConfig.getHisName())
                 .eq("unique_name", transfusionConfig.getUniqueName());
         TransfusionConfig oldRecord = transfusionConfigService.getOne(queryWrapper, false);
-        if (oldRecord != null) {
-            transfusionConfig.setId(oldRecord.getId());
+        if (transfusionConfig.getId() == null
+                && oldRecord != null) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
+        }
+        if (transfusionConfig.getId() != null
+                && oldRecord != null
+                && !transfusionConfig.getId().equals(oldRecord.getId())) {
+            throw new CommonException(CommonErrorCode.IS_EXISTS, "该条关联已存在,无法保存");
         }
         //新增数据
         if (transfusionConfig.getId() == null) {
@@ -212,8 +233,90 @@ public class TransfusionConfigFacade {
             transfusionConfigList.forEach(transfusionConfig -> {
                 transfusionConfig.setHospitalId(hospitalIdVO.getHospitalId());
             });
-            saveOrUpdateRecords(transfusionConfigList);
+            importExcelRecords(transfusionConfigList, hospitalIdVO);
+        } else {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "校验失败,导入数据不能为空");
+        }
+    }
+
+    /**
+     * 数据导入
+     *
+     * @param transfusionConfigList
+     * @return
+     */
+    public Boolean importExcelRecords(List<TransfusionConfig> transfusionConfigList, HospitalIdVO hospitalIdVO) {
+        Long hospitalId = hospitalIdVO.getHospitalId();
+        String userId = UserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+
+        //1、数据完整性校验
+        //2、去除前后空格
+        for (int i = 0; i < transfusionConfigList.size(); i++) {
+            if (StringUtil.isBlank(transfusionConfigList.get(i).getHisName())
+                    || StringUtil.isBlank(transfusionConfigList.get(i).getUniqueName())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "第" + (i + 2) + "行存在不完整数据,导入失败,请修改后再试");
+            }
+            transfusionConfigList.get(i).setHisName(transfusionConfigList.get(i).getHisName().trim());
+            transfusionConfigList.get(i).setUniqueName(transfusionConfigList.get(i).getUniqueName().trim());
+            if (StringUtil.isNotBlank(transfusionConfigList.get(i).getUniqueCode())) {
+                transfusionConfigList.get(i).setUniqueCode(transfusionConfigList.get(i).getUniqueCode().trim());
+            } else {
+                transfusionConfigList.get(i).setUniqueCode(null);
+            }
         }
+
+        // 验证数据是否已存在,已存在的先删除
+        // 没id的删除重新插入,有id的更新
+        List<Long> deleteIds = Lists.newLinkedList();
+        Map<String, Map<String, Long>> configMap
+                = getConfigMap(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())) {
+                    deleteIds.add(configMap.get(transfusionConfig.getHisName()).get(transfusionConfig.getUniqueName()));
+                }
+                transfusionConfig.setCreator(userId);
+                transfusionConfig.setGmtCreate(now);
+            }
+            if (transfusionConfig.getIsDeleted() == null) {
+                transfusionConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+            }
+        });
+
+        //标准术语校验
+        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())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                        "【" + transfusionConfigList.get(i).getUniqueName() + "】不是标准术语,导入失败,请修改后再试");
+            }
+        }
+
+        //重复数据过滤
+        transfusionConfigList = transfusionConfigList
+                .stream()
+                .distinct()
+                .collect(Collectors.toList());
+
+        //删除已存在映射关系
+        IdListVO idListVO = new IdListVO();
+        idListVO.setIds(deleteIds);
+        deleteRecords(idListVO);
+        transfusionConfigService.saveOrUpdateBatch(transfusionConfigList);
+        return true;
     }
 
     /**
@@ -272,4 +375,4 @@ public class TransfusionConfigFacade {
     public IPage<HosRelationNumDTO> getRelationNumPage(HosRelationNumPageVO hosRelationNumPageVO) {
         return transfusionConfigService.getRelationNumPage(hosRelationNumPageVO);
     }
-}
+}

+ 20 - 0
cdssman-service/src/main/java/com/diagbot/vo/ConceptVO.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/9/10 14:48
+ */
+@Getter
+@Setter
+public class ConceptVO {
+    List<String> names;
+    @NotNull(message = "请输入术语类型")
+    Integer type;
+}