Bladeren bron

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

songxinlu 3 jaren geleden
bovenliggende
commit
92bbad3a6b
100 gewijzigde bestanden met toevoegingen van 4801 en 1111 verwijderingen
  1. 1 1
      bus-interceptor/src/main/resources/application.properties
  2. 36 0
      common/src/main/java/com/lantone/common/config/BaseJasyptConfig.java
  3. 26 0
      common/src/main/java/com/lantone/common/config/BaseSundriesConfig.java
  4. 40 0
      common/src/main/java/com/lantone/common/service/DictSetsService.java
  5. 12 0
      common/src/main/java/com/lantone/common/service/SpringContextService.java
  6. 58 0
      common/src/main/java/com/lantone/common/service/impl/DictSetsServiceImpl.java
  7. 43 0
      common/src/main/java/com/lantone/common/service/impl/SpringContextServiceImpl.java
  8. 69 0
      common/src/main/java/com/lantone/common/util/JasyptUtil.java
  9. 6 0
      common/src/main/java/com/lantone/common/vo/DataCompareVO.java
  10. 32 0
      common/src/main/java/com/lantone/common/vo/DataRepariVO.java
  11. 5 2
      config-center/src/main/resources/shared/daqe-center-debug.yml
  12. 9 6
      config-center/src/main/resources/shared/daqe-center-inner.yml
  13. 5 2
      config-center/src/main/resources/shared/daqe-center-local.yml
  14. 9 6
      config-center/src/main/resources/shared/daqe-center-outer.yml
  15. 8 5
      config-center/src/main/resources/shared/daqe-center-test.yml
  16. 13 0
      config-center/src/main/resources/shared/external-service-debug.yml
  17. 13 0
      config-center/src/main/resources/shared/external-service-inner.yml
  18. 13 0
      config-center/src/main/resources/shared/external-service-local.yml
  19. 13 0
      config-center/src/main/resources/shared/external-service-outer.yml
  20. 13 0
      config-center/src/main/resources/shared/external-service-test.yml
  21. 2 2
      config-center/src/main/resources/shared/gateway-service-debug.yml
  22. 3 3
      config-center/src/main/resources/shared/gateway-service-inner.yml
  23. 2 2
      config-center/src/main/resources/shared/gateway-service-local.yml
  24. 3 3
      config-center/src/main/resources/shared/gateway-service-outer.yml
  25. 3 3
      config-center/src/main/resources/shared/gateway-service-test.yml
  26. 23 0
      config-center/src/main/resources/shared/mdsp-service-debug.yml
  27. 23 0
      config-center/src/main/resources/shared/mdsp-service-inner.yml
  28. 23 0
      config-center/src/main/resources/shared/mdsp-service-local.yml
  29. 23 0
      config-center/src/main/resources/shared/mdsp-service-outer.yml
  30. 23 0
      config-center/src/main/resources/shared/mdsp-service-test.yml
  31. 2 2
      config-center/src/main/resources/shared/message-service-debug.yml
  32. 8 8
      config-center/src/main/resources/shared/message-service-inner.yml
  33. 2 2
      config-center/src/main/resources/shared/message-service-local.yml
  34. 8 8
      config-center/src/main/resources/shared/message-service-outer.yml
  35. 8 8
      config-center/src/main/resources/shared/message-service-test.yml
  36. 5 2
      config-center/src/main/resources/shared/report-service-debug.yml
  37. 8 5
      config-center/src/main/resources/shared/report-service-inner.yml
  38. 5 2
      config-center/src/main/resources/shared/report-service-local.yml
  39. 8 5
      config-center/src/main/resources/shared/report-service-outer.yml
  40. 6 3
      config-center/src/main/resources/shared/report-service-test.yml
  41. 5 2
      config-center/src/main/resources/shared/security-center-debug.yml
  42. 9 6
      config-center/src/main/resources/shared/security-center-inner.yml
  43. 5 2
      config-center/src/main/resources/shared/security-center-local.yml
  44. 9 6
      config-center/src/main/resources/shared/security-center-outer.yml
  45. 8 5
      config-center/src/main/resources/shared/security-center-test.yml
  46. 2 2
      config-center/src/main/resources/shared/structure-center-debug.yml
  47. 3 3
      config-center/src/main/resources/shared/structure-center-inner.yml
  48. 2 2
      config-center/src/main/resources/shared/structure-center-local.yml
  49. 3 3
      config-center/src/main/resources/shared/structure-center-outer.yml
  50. 3 3
      config-center/src/main/resources/shared/structure-center-test.yml
  51. 13 0
      config-center/src/main/resources/shared/tran-service-debug.yml
  52. 13 0
      config-center/src/main/resources/shared/tran-service-inner.yml
  53. 13 0
      config-center/src/main/resources/shared/tran-service-local.yml
  54. 13 0
      config-center/src/main/resources/shared/tran-service-outer.yml
  55. 13 0
      config-center/src/main/resources/shared/tran-service-test.yml
  56. 4 12
      daqe-center/pom.xml
  57. 29 0
      daqe-center/src/main/java/com/lantone/daqe/client/HisDataService.java
  58. 34 0
      daqe-center/src/main/java/com/lantone/daqe/client/hystrix/HisDataServiceHystrix.java
  59. 34 0
      daqe-center/src/main/java/com/lantone/daqe/client/hystrix/OperationLogServiceHystrix.java
  60. 14 0
      daqe-center/src/main/java/com/lantone/daqe/config/JasyptConfig.java
  61. 14 0
      daqe-center/src/main/java/com/lantone/daqe/config/SundriesConfig.java
  62. 12 12
      daqe-center/src/main/java/com/lantone/daqe/dto/BlockLossTypeGatherDTO.java
  63. 1 1
      daqe-center/src/main/java/com/lantone/daqe/dto/GetBlockLossPageDTO.java
  64. 1 1
      daqe-center/src/main/java/com/lantone/daqe/dto/GetByIdColumnVerifyDTO.java
  65. 27 0
      daqe-center/src/main/java/com/lantone/daqe/dto/GetColumnDTO.java
  66. 9 0
      daqe-center/src/main/java/com/lantone/daqe/dto/GetColumnResultPageDTO.java
  67. 50 0
      daqe-center/src/main/java/com/lantone/daqe/dto/GetColumnVerifyDTO.java
  68. 4 0
      daqe-center/src/main/java/com/lantone/daqe/dto/GetColumnVerifyPageDTO.java
  69. 40 0
      daqe-center/src/main/java/com/lantone/daqe/dto/GetConceptLibraryPageDTO.java
  70. 2 2
      daqe-center/src/main/java/com/lantone/daqe/dto/GetRecordTemplateManageDTO.java
  71. 4 0
      daqe-center/src/main/java/com/lantone/daqe/dto/GetRegular.java
  72. 4 0
      daqe-center/src/main/java/com/lantone/daqe/dto/GetStandardvalueInfoDTO.java
  73. 10 0
      daqe-center/src/main/java/com/lantone/daqe/dto/GetTableColumnInfoDTO.java
  74. 4 0
      daqe-center/src/main/java/com/lantone/daqe/dto/HisMedicalRecordDTO.java
  75. 3 1
      daqe-center/src/main/java/com/lantone/daqe/dto/UpBlockLossByIdVO.java
  76. 8 1
      daqe-center/src/main/java/com/lantone/daqe/entity/BehospitalInfo.java
  77. 6 0
      daqe-center/src/main/java/com/lantone/daqe/entity/BlocklossResult.java
  78. 6 0
      daqe-center/src/main/java/com/lantone/daqe/entity/ColumnResult.java
  79. 83 0
      daqe-center/src/main/java/com/lantone/daqe/entity/ConceptLibrary.java
  80. 218 0
      daqe-center/src/main/java/com/lantone/daqe/entity/HisBehospitalInfo.java
  81. 938 0
      daqe-center/src/main/java/com/lantone/daqe/entity/HisHomePage.java
  82. 101 0
      daqe-center/src/main/java/com/lantone/daqe/entity/HisMedicalRecord.java
  83. 87 0
      daqe-center/src/main/java/com/lantone/daqe/entity/HisMedicalRecordContent.java
  84. 8 1
      daqe-center/src/main/java/com/lantone/daqe/entity/HomePage.java
  85. 8 1
      daqe-center/src/main/java/com/lantone/daqe/entity/MedicalRecord.java
  86. 8 1
      daqe-center/src/main/java/com/lantone/daqe/entity/MedicalRecordContent.java
  87. 6 0
      daqe-center/src/main/java/com/lantone/daqe/entity/NonnullResult.java
  88. 6 0
      daqe-center/src/main/java/com/lantone/daqe/entity/RegularResult.java
  89. 6 0
      daqe-center/src/main/java/com/lantone/daqe/entity/StandardvalueResult.java
  90. 42 0
      daqe-center/src/main/java/com/lantone/daqe/enums/ConceptLibraryTypeEnum.java
  91. 42 0
      daqe-center/src/main/java/com/lantone/daqe/enums/DataSaveUrlEnum.java
  92. 4 1
      daqe-center/src/main/java/com/lantone/daqe/enums/ModeEnum.java
  93. 425 162
      daqe-center/src/main/java/com/lantone/daqe/facade/BlockLossManagementFacade.java
  94. 1165 739
      daqe-center/src/main/java/com/lantone/daqe/facade/ColumnResultManagementFacade.java
  95. 311 62
      daqe-center/src/main/java/com/lantone/daqe/facade/ColumnVerifyManagementFacade.java
  96. 50 0
      daqe-center/src/main/java/com/lantone/daqe/facade/CurrencyManagementFacade.java
  97. 2 0
      daqe-center/src/main/java/com/lantone/daqe/facade/DiseaseManagementFacade.java
  98. 2 0
      daqe-center/src/main/java/com/lantone/daqe/facade/DrugManagementFacade.java
  99. 243 0
      daqe-center/src/main/java/com/lantone/daqe/facade/HisDataManagementFacade.java
  100. 0 0
      daqe-center/src/main/java/com/lantone/daqe/facade/OfficialCapacityManagementFacade.java

+ 1 - 1
bus-interceptor/src/main/resources/application.properties

@@ -1 +1 @@
-url =/userManage/loadByUsername,/redisRefresh,/loginLogHandle,/logManage/**
+url =/userManage/loadByUsername,/redisRefresh,/loginLogHandle,/logManage/**,/error

+ 36 - 0
common/src/main/java/com/lantone/common/config/BaseJasyptConfig.java

@@ -0,0 +1,36 @@
+package com.lantone.common.config;
+
+import com.lantone.common.util.StringUtil;
+import org.jasypt.encryption.StringEncryptor;
+import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
+import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+
+/**
+ * @Description: Jasypt基础配置
+ * @author: rengb
+ * @time: 2021/1/5 18:27
+ */
+public class BaseJasyptConfig {
+
+    @Value("${jasypt.encryptor.password:#{null}}")
+    private String password;
+
+    @Bean("jasyptStringEncryptor")
+    public StringEncryptor stringEncryptor() {
+        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
+        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
+        config.setPassword(StringUtil.isBlank(password) ? "jasypt" : password);
+        config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
+        config.setKeyObtentionIterations("1000");
+        config.setPoolSize("1");
+        config.setProviderName("SunJCE");
+        config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
+        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
+        config.setStringOutputType("base64");
+        encryptor.setConfig(config);
+        return encryptor;
+    }
+
+}

+ 26 - 0
common/src/main/java/com/lantone/common/config/BaseSundriesConfig.java

@@ -0,0 +1,26 @@
+package com.lantone.common.config;
+
+import com.lantone.common.service.DictSetsService;
+import com.lantone.common.service.SpringContextService;
+import com.lantone.common.service.impl.DictSetsServiceImpl;
+import com.lantone.common.service.impl.SpringContextServiceImpl;
+import org.springframework.context.annotation.Bean;
+
+/**
+ * @Description: 其他配置
+ * @author: rengb
+ * @time: 2022/4/12 18:34
+ */
+public class BaseSundriesConfig {
+
+    @Bean
+    public SpringContextService springContextService() {
+        return new SpringContextServiceImpl();
+    }
+
+    @Bean
+    public DictSetsService dictSetsService() {
+        return new DictSetsServiceImpl();
+    }
+
+}

+ 40 - 0
common/src/main/java/com/lantone/common/service/DictSetsService.java

@@ -0,0 +1,40 @@
+package com.lantone.common.service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 字典及医院个性化配置信息获取工具类
+ * @author: rengb
+ * @time: 2022/4/11 11:47
+ */
+public interface DictSetsService {
+
+    /**
+     * 根据返回类型及多个分组获取多组字典集
+     *
+     * @param returnType 返回类型
+     * @param groupTypes 分组集合
+     * @return
+     */
+    Map<String, Map<String, String>> getDicMap(String returnType, List<String> groupTypes);
+
+    /**
+     * 根据返回类型及单个分组获取一组字典集
+     *
+     * @param returnType 返回类型
+     * @param groupType  分组集合
+     * @return
+     */
+    Map<String, String> getOneDicMap(String returnType, String groupType);
+
+    /**
+     * 获取某医院code的内容
+     *
+     * @param hospitalId 医院id
+     * @param code       分组集合
+     * @return
+     */
+    Map<String, String> getHospitalCodeMap(String hospitalId, String code);
+
+}

+ 12 - 0
common/src/main/java/com/lantone/common/service/SpringContextService.java

@@ -0,0 +1,12 @@
+package com.lantone.common.service;
+
+import org.springframework.context.ApplicationContextAware;
+
+/**
+ * @Description: 获取Spring容器中的Bean
+ * @author: rengb
+ * @time: 2022/4/12 18:20
+ */
+public interface SpringContextService extends ApplicationContextAware {
+    
+}

+ 58 - 0
common/src/main/java/com/lantone/common/service/impl/DictSetsServiceImpl.java

@@ -0,0 +1,58 @@
+package com.lantone.common.service.impl;
+
+import com.lantone.common.constant.AuthConstant;
+import com.lantone.common.service.DictSetsService;
+import com.lantone.common.service.RedisService;
+import com.lantone.common.util.ListUtil;
+import com.lantone.common.util.StringUtil;
+import org.apache.commons.collections.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 字典及医院个性化配置信息获取工具类
+ * @author: rengb
+ * @time: 2022/4/11 13:36
+ */
+public class DictSetsServiceImpl implements DictSetsService {
+
+    @Autowired
+    private RedisService redisService;
+
+    @Override
+    public Map<String, Map<String, String>> getDicMap(String returnType, List<String> groupTypes) {
+        Map<String, Map<String, String>> outDicMap = new HashMap<>();
+        Map<String, Map<String, Map<String, String>>> dicMap = redisService.get(AuthConstant.DIC_MAP_KEY);
+        Map<String, Map<String, String>> returnDicMap = dicMap.get(returnType);
+        if (MapUtils.isNotEmpty(returnDicMap) && ListUtil.isNotEmpty(groupTypes)) {
+            groupTypes.stream().forEach(groupType -> {
+                outDicMap.put(groupType, returnDicMap.get(groupType));
+            });
+        }
+        return outDicMap;
+    }
+
+    @Override
+    public Map<String, String> getOneDicMap(String returnType, String groupType) {
+        Map<String, Map<String, Map<String, String>>> dicMap = redisService.get(AuthConstant.DIC_MAP_KEY);
+        Map<String, Map<String, String>> returnDicMap = dicMap.get(returnType);
+        if (MapUtils.isNotEmpty(returnDicMap) && StringUtil.isNotBlank(groupType)) {
+            return returnDicMap.get(groupType);
+        }
+        return null;
+    }
+
+    @Override
+    public Map<String, String> getHospitalCodeMap(String hospitalId, String code) {
+        Map<String, Map<String, Map<String, String>>> hospitalSetMap = redisService.get(AuthConstant.HOSPITAL_SET_MAP_KEY);
+        Map<String, Map<String, String>> codeMap = hospitalSetMap.get(hospitalId);
+        if (org.apache.commons.collections4.MapUtils.isNotEmpty(codeMap) && StringUtil.isNotBlank(code)) {
+            return codeMap.get(code);
+        }
+        return null;
+    }
+
+}

+ 43 - 0
common/src/main/java/com/lantone/common/service/impl/SpringContextServiceImpl.java

@@ -0,0 +1,43 @@
+package com.lantone.common.service.impl;
+
+import com.lantone.common.service.SpringContextService;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+
+/**
+ * @Description: 获取Spring容器中的Bean
+ * @author: rengb
+ * @time: 2022/4/12 18:24
+ */
+public class SpringContextServiceImpl implements SpringContextService {
+
+    private static ApplicationContext applicationContext = null;
+
+    //获取applicationContext
+    public static ApplicationContext getApplicationContext() {
+        return applicationContext;
+    }
+
+    //通过name获取 Bean
+    public static <T> T getBean(String name) {
+        return (T) applicationContext.getBean(name);
+    }
+
+    //通过class获取Bean
+    public static <T> T getBean(Class<T> clazz) {
+        return applicationContext.getBean(clazz);
+    }
+
+    //通过name,以及Clazz返回指定的Bean
+    public static <T> T getBean(String name, Class<T> clazz) {
+        return applicationContext.getBean(name, clazz);
+    }
+
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        if (this.applicationContext == null) {
+            this.applicationContext = applicationContext;
+        }
+    }
+
+}

+ 69 - 0
common/src/main/java/com/lantone/common/util/JasyptUtil.java

@@ -0,0 +1,69 @@
+package com.lantone.common.util;
+
+import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
+import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
+
+/**
+ * @Description: Jasypt安全框架加解密工具
+ * @author: rengb
+ * @time: 2022/3/21 15:26
+ */
+public class JasyptUtil {
+
+    /**
+     * 解密
+     *
+     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
+     * @param value    待解密密文
+     * @return
+     */
+    public static String decyptPwd(String password, String value) {
+        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
+        encryptor.setConfig(cryptor(password));
+        String result = encryptor.decrypt(value);
+        return result;
+    }
+
+    /**
+     * 加密
+     *
+     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
+     * @param value    待加密值
+     * @return
+     */
+    public static String encyptPwd(String password, String value) {
+        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
+        encryptor.setConfig(cryptor(password));
+        String result = encryptor.encrypt(value);
+        return result;
+    }
+
+    /**
+     * 生成通用配置
+     *
+     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
+     * @return
+     */
+    public static SimpleStringPBEConfig cryptor(String password) {
+        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
+        config.setPassword(password);
+        config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
+        config.setKeyObtentionIterations("1000");
+        config.setPoolSize("1");
+        config.setProviderName("SunJCE");
+        config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
+        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
+        config.setStringOutputType("base64");
+        return config;
+    }
+
+    public static void main(String[] args) {
+        // 加密
+        String encPwd = encyptPwd("jasypt", "lantone");
+        // 解密
+        String decPwd = decyptPwd("jasypt", encPwd);
+        System.out.println(encPwd);
+        System.out.println(decPwd);
+    }
+
+}

+ 6 - 0
common/src/main/java/com/lantone/common/vo/DataCompareVO.java

@@ -7,6 +7,7 @@ import lombok.Setter;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Description: 数据对比-接口入参
@@ -19,6 +20,8 @@ import java.util.Date;
 public class DataCompareVO implements Serializable {
 
     private static final long serialVersionUID = 4949654901048650724L;
+    @ApiModelProperty(value = "医院id", hidden = true)
+    private Long hospitalId;
 
     @ApiModelProperty(value = "开始日期")
     private Date startDate;
@@ -32,4 +35,7 @@ public class DataCompareVO implements Serializable {
     @ApiModelProperty(value = "操作url", hidden = true)
     private String operationUrl;
 
+    @ApiModelProperty(value = "病历号集合", hidden = true)
+    private List<String> behospitalCodes;
+
 }

+ 32 - 0
common/src/main/java/com/lantone/common/vo/DataRepariVO.java

@@ -0,0 +1,32 @@
+package com.lantone.common.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 数据补录-接口入参
+ * @author: songxl
+ * @time: 2022/2/28 11:15
+ */
+@ApiModel(value = "数据补录-接口入参")
+@Getter
+@Setter
+public class DataRepariVO implements Serializable {
+
+    private static final long serialVersionUID = 8436111449081669803L;
+
+    @ApiModelProperty(value = "开始日期")
+    private Date startDate;
+
+    @ApiModelProperty(value = "截止日期")
+    private Date endDate;
+
+    @ApiModelProperty(value = "住院序号")
+    private String behospitalCode;
+
+}

+ 5 - 2
config-center/src/main/resources/shared/daqe-center-debug.yml

@@ -2,12 +2,15 @@ spring:
   redis:
     database: 12
     host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    port: 6351 # Redis服务器连接端口
+    password: lemRatO6351 # Redis服务器连接密码(默认为空)
   datasource:
     druid:
       url: jdbc:mysql://192.168.2.237:3306/daqe?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
       password: lantone
+  flyway:
+    # 启用Flyway功能
+    enabled: false
 
 swagger.show: true

+ 9 - 6
config-center/src/main/resources/shared/daqe-center-inner.yml

@@ -1,13 +1,16 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.125 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: ENC(EOofvJuXt/500cwSLlbFucB1PjSIG4wOvchduGRpZ6JSjHoQVInGrlyECXhqDjRo) # Redis服务器连接密码(默认为空)
   datasource:
     druid:
-      url: jdbc:mysql://192.168.2.237:3306/daqe?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
-      username: root
-      password: lantone
+      url: jdbc:mysql://192.168.2.125:3306/daqe?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: ENC(Az6Fp+AgkR0iiHP2l5HjH8UKmud+5w3bxv096AGiHVWgJxn4KnrgjgK4esoPwmxd)
+      password: ENC(iLkrdRLPM/5Y+1gAWdniZx/rDVbJILF7x3M8VuQ20219/p3Mck7hwfe7M8OntVTkDxqwpa4hLm8Q4n0qD5Lsog==)
+  flyway:
+    # 启用Flyway功能
+    enabled: true
 
 swagger.show: false

+ 5 - 2
config-center/src/main/resources/shared/daqe-center-local.yml

@@ -2,12 +2,15 @@ spring:
   redis:
     database: 12
     host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    port: 6351 # Redis服务器连接端口
+    password: lemRatO6351 # Redis服务器连接密码(默认为空)
   datasource:
     druid:
       url: jdbc:mysql://192.168.2.237:3306/daqe?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
       password: lantone
+  flyway:
+    # 启用Flyway功能
+    enabled: false
 
 swagger.show: true

+ 9 - 6
config-center/src/main/resources/shared/daqe-center-outer.yml

@@ -1,13 +1,16 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.129 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: ENC(4bAJxtxr2aFwEeYbouOhYk0b+NtDIrP35XWAhUxXZlllv82/1MiyhOEM56hhmhdV) # Redis服务器连接密码(默认为空)
   datasource:
     druid:
-      url: jdbc:mysql://192.168.2.237:3306/daqe?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
-      username: root
-      password: lantone
+      url: jdbc:mysql://192.168.2.129:3306/daqe?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: ENC(W8OCGadBpumA0shuwzaPU6kcjdXhajivb0+wKjZowCid7YVvsxi7s436hcThGn9q)
+      password: ENC(K3iC2nMnARmKclU/50vfBLs2oJC/MlfqRgo/qXO+6eOxQnDKdm1hDCHwveo3ZRUGXlA5v219748Dw7EZKn/siA==)
+  flyway:
+    # 启用Flyway功能
+    enabled: true
 
 swagger.show: false

+ 8 - 5
config-center/src/main/resources/shared/daqe-center-test.yml

@@ -1,13 +1,16 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.126 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: Lan@T0Ne@6351 # Redis服务器连接密码(默认为空)
   datasource:
     druid:
-      url: jdbc:mysql://192.168.2.237:3306/daqe?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      url: jdbc:mysql://192.168.2.126:3306/daqe?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
-      password: lantone
+      password: Lat0ne@tesT
+  flyway:
+    # 启用Flyway功能
+    enabled: false
 
 swagger.show: true

+ 13 - 0
config-center/src/main/resources/shared/external-service-debug.yml

@@ -0,0 +1,13 @@
+spring:
+  redis:
+    database: 12
+    host: 192.168.2.237 # Redis服务器地址
+    port: 63791 # Redis服务器连接端口
+    password: emrais # Redis服务器连接密码(默认为空)
+  datasource:
+    druid:
+      url: jdbc:mysql://192.168.2.237:3306/external?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: root
+      password: lantone
+
+swagger.show: true

+ 13 - 0
config-center/src/main/resources/shared/external-service-inner.yml

@@ -0,0 +1,13 @@
+spring:
+  redis:
+    database: 12
+    host: 192.168.2.237 # Redis服务器地址
+    port: 63791 # Redis服务器连接端口
+    password: emrais # Redis服务器连接密码(默认为空)
+  datasource:
+    druid:
+      url: jdbc:mysql://192.168.2.237:3306/external?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: root
+      password: lantone
+
+swagger.show: false

+ 13 - 0
config-center/src/main/resources/shared/external-service-local.yml

@@ -0,0 +1,13 @@
+spring:
+  redis:
+    database: 12
+    host: 192.168.2.237 # Redis服务器地址
+    port: 63791 # Redis服务器连接端口
+    password: emrais # Redis服务器连接密码(默认为空)
+  datasource:
+    druid:
+      url: jdbc:mysql://192.168.2.237:3306/external?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: root
+      password: lantone
+
+swagger.show: true

+ 13 - 0
config-center/src/main/resources/shared/external-service-outer.yml

@@ -0,0 +1,13 @@
+spring:
+  redis:
+    database: 12
+    host: 192.168.2.237 # Redis服务器地址
+    port: 63791 # Redis服务器连接端口
+    password: emrais # Redis服务器连接密码(默认为空)
+  datasource:
+    druid:
+      url: jdbc:mysql://192.168.2.237:3306/external?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: root
+      password: lantone
+
+swagger.show: false

+ 13 - 0
config-center/src/main/resources/shared/external-service-test.yml

@@ -0,0 +1,13 @@
+spring:
+  redis:
+    database: 12
+    host: 192.168.2.237 # Redis服务器地址
+    port: 63791 # Redis服务器连接端口
+    password: emrais # Redis服务器连接密码(默认为空)
+  datasource:
+    druid:
+      url: jdbc:mysql://192.168.2.237:3306/external?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: root
+      password: lantone
+
+swagger.show: true

+ 2 - 2
config-center/src/main/resources/shared/gateway-service-debug.yml

@@ -2,7 +2,7 @@ spring:
   redis:
     database: 12
     host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    port: 6351 # Redis服务器连接端口
+    password: lemRatO6351 # Redis服务器连接密码(默认为空)
 
 swagger.show: true

+ 3 - 3
config-center/src/main/resources/shared/gateway-service-inner.yml

@@ -1,8 +1,8 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.125 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: ENC(AZv6G8i84pAmUPbUP5CDDlO5vvX/1WbqZTERx/ecIW3CXFP0cCSRPv4MDOJxEvln) # Redis服务器连接密码(默认为空)
 
 swagger.show: false

+ 2 - 2
config-center/src/main/resources/shared/gateway-service-local.yml

@@ -2,7 +2,7 @@ spring:
   redis:
     database: 12
     host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    port: 6351 # Redis服务器连接端口
+    password: lemRatO6351 # Redis服务器连接密码(默认为空)
 
 swagger.show: true

+ 3 - 3
config-center/src/main/resources/shared/gateway-service-outer.yml

@@ -1,8 +1,8 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.129 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: ENC(JgDWqutkg2e8RZ77yIH5fUiQJ7sA5bROP8kOwutqt4+tHFRYrI5DH7899cyuZIIM) # Redis服务器连接密码(默认为空)
 
 swagger.show: false

+ 3 - 3
config-center/src/main/resources/shared/gateway-service-test.yml

@@ -1,8 +1,8 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.126 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: Lan@T0Ne@6351 # Redis服务器连接密码(默认为空)
 
 swagger.show: true

+ 23 - 0
config-center/src/main/resources/shared/mdsp-service-debug.yml

@@ -0,0 +1,23 @@
+spring:
+  redis:
+    database: 12
+    host: 192.168.2.237 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: lemRatO6351 # Redis服务器连接密码(默认为空)
+  datasource:
+    dynamic:
+      datasource:
+        med:
+          url: jdbc:mysql://192.168.2.236:3306/med_2021?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+          username: root
+          password: lantone
+        cdss:
+          url: jdbc:mysql://192.168.2.236:3306/cdss?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+          username: root
+          password: lantone
+
+StandConvert:
+  url: http://192.168.2.234:23232
+  rate: 0.9
+
+swagger.show: true

+ 23 - 0
config-center/src/main/resources/shared/mdsp-service-inner.yml

@@ -0,0 +1,23 @@
+spring:
+  redis:
+    database: 12
+    host: 192.168.2.125 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: ENC(YBV01kMHu6ufwSegbHcfaoQ20bbW1ho67SHAnKMsJX6K9O0ZXaF+/wHYlLOQjxqN) # Redis服务器连接密码(默认为空)
+  datasource:
+    dynamic:
+      datasource:
+        med:
+          url: jdbc:mysql://192.168.2.121:3306/med_2021?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+          username: teamback
+          password: goTulmLeon
+        cdss:
+          url: jdbc:mysql://192.168.2.121:3306/cdss?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+          username: teamback
+          password: goTulmLeon
+
+StandConvert:
+  url: http://192.168.2.234:23232
+  rate: 0.9
+
+swagger.show: true

+ 23 - 0
config-center/src/main/resources/shared/mdsp-service-local.yml

@@ -0,0 +1,23 @@
+spring:
+  redis:
+    database: 12
+    host: 192.168.2.237 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: lemRatO6351 # Redis服务器连接密码(默认为空)
+  datasource:
+    dynamic:
+      datasource:
+        med:
+          url: jdbc:mysql://192.168.2.236:3306/med_2021?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+          username: root
+          password: lantone
+        cdss:
+          url: jdbc:mysql://192.168.2.236:3306/cdss?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+          username: root
+          password: lantone
+
+StandConvert:
+  url: http://192.168.2.234:23232
+  rate: 0.9
+
+swagger.show: true

+ 23 - 0
config-center/src/main/resources/shared/mdsp-service-outer.yml

@@ -0,0 +1,23 @@
+spring:
+  redis:
+    database: 12
+    host: 192.168.2.129 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: ENC(mesC4twLS8qQ9BiZBnXO8+IniAF+ljJQBJHCI63Tb8ZJgrwJxZc4VTm6x4ed91hh) # Redis服务器连接密码(默认为空)
+  datasource:
+    dynamic:
+      datasource:
+        med:
+          url: jdbc:mysql://192.168.2.122:3306/med_2021?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+          username: root
+          password: lantone
+        cdss:
+          url: jdbc:mysql://192.168.2.122:3306/cdss?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+          username: root
+          password: lantone
+
+StandConvert:
+  url: http://192.168.2.234:23232
+  rate: 0.9
+
+swagger.show: false

+ 23 - 0
config-center/src/main/resources/shared/mdsp-service-test.yml

@@ -0,0 +1,23 @@
+spring:
+  redis:
+    database: 12
+    host: 192.168.2.126 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: Lan@T0Ne@6351 # Redis服务器连接密码(默认为空)
+  datasource:
+    dynamic:
+      datasource:
+        med:
+          url: jdbc:mysql://192.168.2.241:3306/med_2021?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+          username: root
+          password: lantone
+        cdss:
+          url: jdbc:mysql://192.168.2.241:3306/cdss?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+          username: root
+          password: lantone
+
+StandConvert:
+  url: http://192.168.2.234:23232
+  rate: 0.9
+
+swagger.show: true

+ 2 - 2
config-center/src/main/resources/shared/message-service-debug.yml

@@ -2,8 +2,8 @@ spring:
   redis:
     database: 12
     host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    port: 6351 # Redis服务器连接端口
+    password: lemRatO6351 # Redis服务器连接密码(默认为空)
   rabbitmq:
     host: 192.168.2.237
     port: 5672

+ 8 - 8
config-center/src/main/resources/shared/message-service-inner.yml

@@ -1,20 +1,20 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.125 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: ENC(ZCCHM3HGeXELR9l6wD+Jb/WIypXUxULUZU9wausUahQsMLt/RcdLua1UXa7n+e5f) # Redis服务器连接密码(默认为空)
   rabbitmq:
-    host: 192.168.2.237
+    host: 192.168.2.125
     port: 5672
-    username: emrais
-    password: emrais
+    username: ENC(79XvRlB4BgWhhrbB0FPblnn+Rl7xOwJiX6YZkFeizY07L9BmR03dhd890MaO2BT/)
+    password: ENC(mBaNx+5I9mQf8tmAtKDIpiJ2lAc4hp6QHKDj+uNgeOH3YXhyCbqAqHCAvsqoBpo1)
     virtual-host: /emrais # 虚拟host
 
 rabbitmq:
   mqtt:
-    url: tcp://192.168.2.237:1883
-    front-url: ws://192.168.2.237:15675/ws
+    url: tcp://192.168.2.125:1883
+    front-url: ws://192.168.2.125:15675/ws
     defaultTopic: defaultSampleTopic
 
 swagger.show: false

+ 2 - 2
config-center/src/main/resources/shared/message-service-local.yml

@@ -2,8 +2,8 @@ spring:
   redis:
     database: 12
     host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    port: 6351 # Redis服务器连接端口
+    password: lemRatO6351 # Redis服务器连接密码(默认为空)
   rabbitmq:
     host: 192.168.2.237
     port: 5672

+ 8 - 8
config-center/src/main/resources/shared/message-service-outer.yml

@@ -1,20 +1,20 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.129 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: ENC(VhzXO4Ad7v5tUT5ZFLvbx3Eh+Qk9/p92oKIEgzWHw+AxM4ES2gS5NIojEo3dmZLB) # Redis服务器连接密码(默认为空)
   rabbitmq:
-    host: 192.168.2.237
+    host: 192.168.2.129
     port: 5672
-    username: emrais
-    password: emrais
+    username: ENC(nzwGIstiOQaf1mhjlsVnoRmLH95DUOhzHBOyHS3Rz/4hxJ6ewFyBzqa4M2koAy71)
+    password: ENC(LWxtG8CPNjjW5R1HooBHjbZZVpT2HoPhnS3s1C6UHn5vRZ0cKtxniWmkX7TIcgdxJanQJ6XQKVunPMMbT8W+2Q==)
     virtual-host: /emrais # 虚拟host
 
 rabbitmq:
   mqtt:
-    url: tcp://192.168.2.237:1883
-    front-url: ws://192.168.2.237:15675/ws
+    url: tcp://192.168.2.129:1883
+    front-url: ws://192.168.2.129:15675/ws
     defaultTopic: defaultSampleTopic
 
 swagger.show: false

+ 8 - 8
config-center/src/main/resources/shared/message-service-test.yml

@@ -1,20 +1,20 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.126 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: Lan@T0Ne@6351 # Redis服务器连接密码(默认为空)
   rabbitmq:
-    host: 192.168.2.237
+    host: 192.168.2.126
     port: 5672
-    username: emrais
-    password: emrais
+    username: admin
+    password: La11t230ne@te0sT
     virtual-host: /emrais # 虚拟host
 
 rabbitmq:
   mqtt:
-    url: tcp://192.168.2.237:1883
-    front-url: ws://192.168.2.237:15675/ws
+    url: tcp://192.168.2.126:1883
+    front-url: ws://192.168.2.126:15675/ws
     defaultTopic: defaultSampleTopic
 
 swagger.show: true

+ 5 - 2
config-center/src/main/resources/shared/report-service-debug.yml

@@ -2,12 +2,15 @@ spring:
   redis:
     database: 12
     host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    port: 6351 # Redis服务器连接端口
+    password: lemRatO6351 # Redis服务器连接密码(默认为空)
   datasource:
     druid:
       url: jdbc:mysql://192.168.2.237:3307/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
       password: lantone
+  flyway:
+    # 启用Flyway功能
+    enabled: false
 
 swagger.show: true

+ 8 - 5
config-center/src/main/resources/shared/report-service-inner.yml

@@ -1,13 +1,16 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.125 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: ENC(YBV01kMHu6ufwSegbHcfaoQ20bbW1ho67SHAnKMsJX6K9O0ZXaF+/wHYlLOQjxqN) # Redis服务器连接密码(默认为空)
   datasource:
     druid:
       url: jdbc:mysql://192.168.2.125:3307/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
-      username: root
-      password: LangT0ng@lt
+      username: ENC(YJB0kpEK7yuHA9BxwPYNQVcmlRcRjMqXfyHsr64UplJ0zpGooSdbBsQNd0L/c3lk)
+      password: ENC(Lse35eqXdyY9JtY6o+FTzlOdQcQE5gyt4YioxE3i75yamWM5sdF+NTpnGlxIoVtT)
+  flyway:
+    # 启用Flyway功能
+    enabled: true
 
 swagger.show: false

+ 5 - 2
config-center/src/main/resources/shared/report-service-local.yml

@@ -2,12 +2,15 @@ spring:
   redis:
     database: 12
     host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    port: 6351 # Redis服务器连接端口
+    password: lemRatO6351 # Redis服务器连接密码(默认为空)
   datasource:
     druid:
       url: jdbc:mysql://192.168.2.237:3307/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
       password: lantone
+  flyway:
+    # 启用Flyway功能
+    enabled: false
 
 swagger.show: true

+ 8 - 5
config-center/src/main/resources/shared/report-service-outer.yml

@@ -1,13 +1,16 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.129 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: ENC(mesC4twLS8qQ9BiZBnXO8+IniAF+ljJQBJHCI63Tb8ZJgrwJxZc4VTm6x4ed91hh) # Redis服务器连接密码(默认为空)
   datasource:
     druid:
       url: jdbc:mysql://192.168.2.129:3307/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
-      username: root
-      password: LangT0ng@122lt
+      username: ENC(rMQ76oaGbiSXvkV11yOmhTGLsZpg7eQAg0DDEBlMlP77A88W2OmAWRM99EDJOKEM)
+      password: ENC(tZuUlohI/e4NkaWnB08PaUSmovn+IRfhC70A4oMuJDFJm1FJyzXycl0mBVtNEEpr)
+  flyway:
+    # 启用Flyway功能
+    enabled: true
 
 swagger.show: false

+ 6 - 3
config-center/src/main/resources/shared/report-service-test.yml

@@ -1,13 +1,16 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.126 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: Lan@T0Ne@6351 # Redis服务器连接密码(默认为空)
   datasource:
     druid:
       url: jdbc:mysql://192.168.2.126:3307/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
       password: Lat0ne@tesT
+  flyway:
+    # 启用Flyway功能
+    enabled: false
 
 swagger.show: true

+ 5 - 2
config-center/src/main/resources/shared/security-center-debug.yml

@@ -2,12 +2,15 @@ spring:
   redis:
     database: 12
     host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    port: 6351 # Redis服务器连接端口
+    password: lemRatO6351 # Redis服务器连接密码(默认为空)
   datasource:
     druid:
       url: jdbc:mysql://192.168.2.237:3306/emrais?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
       password: lantone
+  flyway:
+    # 启用Flyway功能
+    enabled: false
 
 swagger.show: true

+ 9 - 6
config-center/src/main/resources/shared/security-center-inner.yml

@@ -1,13 +1,16 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.125 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: ENC(FiJszzg2JxkBA1oS2QqF83D4rmBPHVbogAsrY8Hd4rRrijVPmjvdnvT/yG9ioq93) # Redis服务器连接密码(默认为空)
   datasource:
     druid:
-      url: jdbc:mysql://192.168.2.237:3306/emrais?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
-      username: root
-      password: lantone
+      url: jdbc:mysql://192.168.2.125:3306/emrais?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: ENC(mOhdbcO/tq5rpmVioHRTrLYtSBKhNE1vxlHaTMF+ffWkxvoC0aHww91Dwe8oSeKh)
+      password: ENC(j48SjDCv+7iYIsByq6hz5cNMWDWK4DR5nhbXUO5p8egqNe+5lXJb8XQ9AFbaOOcEjM6HR4ae/ko+YsAJz6EMfw==)
+  flyway:
+    # 启用Flyway功能
+    enabled: true
 
 swagger.show: false

+ 5 - 2
config-center/src/main/resources/shared/security-center-local.yml

@@ -2,12 +2,15 @@ spring:
   redis:
     database: 12
     host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    port: 6351 # Redis服务器连接端口
+    password: lemRatO6351 # Redis服务器连接密码(默认为空)
   datasource:
     druid:
       url: jdbc:mysql://192.168.2.237:3306/emrais?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
       password: lantone
+  flyway:
+    # 启用Flyway功能
+    enabled: false
 
 swagger.show: true

+ 9 - 6
config-center/src/main/resources/shared/security-center-outer.yml

@@ -1,13 +1,16 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.129 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: ENC(FR9/7gi6MjTqZndGV3JbgMYa9tW7ffos3/wfuZQP2CC+Yk5elYS5pKQ7SDUVPbsD) # Redis服务器连接密码(默认为空)
   datasource:
     druid:
-      url: jdbc:mysql://192.168.2.237:3306/emrais?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
-      username: root
-      password: lantone
+      url: jdbc:mysql://192.168.2.129:3306/emrais?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: ENC(Qs3DXZnOP4vT0wUJ/hvYF64wT8Gn8JaRbDQjwWlEpSP8X2OuxfilxJDPwiZmLeLp)
+      password: ENC(Kzq13ofPtHZfkXvC5A28C8+7+/BgOOli0T+DW5j9d9ed22x3qqGYc1gqjJf5Ewd93/QcmymCjhhVIVTxt4pDTA==)
+  flyway:
+    # 启用Flyway功能
+    enabled: true
 
 swagger.show: false

+ 8 - 5
config-center/src/main/resources/shared/security-center-test.yml

@@ -1,13 +1,16 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.126 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: Lan@T0Ne@6351 # Redis服务器连接密码(默认为空)
   datasource:
     druid:
-      url: jdbc:mysql://192.168.2.237:3306/emrais?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      url: jdbc:mysql://192.168.2.126:3306/emrais?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
-      password: lantone
+      password: Lat0ne@tesT
+  flyway:
+    # 启用Flyway功能
+    enabled: false
 
 swagger.show: true

+ 2 - 2
config-center/src/main/resources/shared/structure-center-debug.yml

@@ -2,8 +2,8 @@ spring:
   redis:
     database: 12
     host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    port: 6351 # Redis服务器连接端口
+    password: lemRatO6351 # Redis服务器连接密码(默认为空)
 
 swagger.show: true
 

+ 3 - 3
config-center/src/main/resources/shared/structure-center-inner.yml

@@ -1,9 +1,9 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.125 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: ENC(ROTGjn5VhZWfOiWGjLkMk0J+5b5IZkCWU3GW0yq4XCK+yT7cw8geJZ9asofRiYg2) # Redis服务器连接密码(默认为空)
 
 swagger.show: false
 

+ 2 - 2
config-center/src/main/resources/shared/structure-center-local.yml

@@ -2,8 +2,8 @@ spring:
   redis:
     database: 12
     host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    port: 6351 # Redis服务器连接端口
+    password: lemRatO6351 # Redis服务器连接密码(默认为空)
 
 swagger.show: true
 

+ 3 - 3
config-center/src/main/resources/shared/structure-center-outer.yml

@@ -1,9 +1,9 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.129 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: ENC(NRv47uLh9uZVkRFjghaHV307gL8OoPXvnTrgV6yMMR4oGsB5RR7Kh8+BtiK92jez) # Redis服务器连接密码(默认为空)
 
 swagger.show: false
 

+ 3 - 3
config-center/src/main/resources/shared/structure-center-test.yml

@@ -1,9 +1,9 @@
 spring:
   redis:
     database: 12
-    host: 192.168.2.237 # Redis服务器地址
-    port: 63791 # Redis服务器连接端口
-    password: emrais # Redis服务器连接密码(默认为空)
+    host: 192.168.2.126 # Redis服务器地址
+    port: 6351 # Redis服务器连接端口
+    password: Lan@T0Ne@6351 # Redis服务器连接密码(默认为空)
 
 swagger.show: true
 

+ 13 - 0
config-center/src/main/resources/shared/tran-service-debug.yml

@@ -0,0 +1,13 @@
+spring:
+  redis:
+    database: 12
+    host: 192.168.2.237 # Redis服务器地址
+    port: 63791 # Redis服务器连接端口
+    password: emrais # Redis服务器连接密码(默认为空)
+  datasource:
+    druid:
+      url: jdbc:mysql://192.168.2.237:3306/tran?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: root
+      password: lantone
+
+swagger.show: true

+ 13 - 0
config-center/src/main/resources/shared/tran-service-inner.yml

@@ -0,0 +1,13 @@
+spring:
+  redis:
+    database: 12
+    host: 192.168.2.237 # Redis服务器地址
+    port: 63791 # Redis服务器连接端口
+    password: emrais # Redis服务器连接密码(默认为空)
+  datasource:
+    druid:
+      url: jdbc:mysql://192.168.2.237:3306/tran?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: root
+      password: lantone
+
+swagger.show: false

+ 13 - 0
config-center/src/main/resources/shared/tran-service-local.yml

@@ -0,0 +1,13 @@
+spring:
+  redis:
+    database: 12
+    host: 192.168.2.237 # Redis服务器地址
+    port: 63791 # Redis服务器连接端口
+    password: emrais # Redis服务器连接密码(默认为空)
+  datasource:
+    druid:
+      url: jdbc:mysql://192.168.2.237:3306/tran?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: root
+      password: lantone
+
+swagger.show: true

+ 13 - 0
config-center/src/main/resources/shared/tran-service-outer.yml

@@ -0,0 +1,13 @@
+spring:
+  redis:
+    database: 12
+    host: 192.168.2.237 # Redis服务器地址
+    port: 63791 # Redis服务器连接端口
+    password: emrais # Redis服务器连接密码(默认为空)
+  datasource:
+    druid:
+      url: jdbc:mysql://192.168.2.237:3306/tran?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: root
+      password: lantone
+
+swagger.show: false

+ 13 - 0
config-center/src/main/resources/shared/tran-service-test.yml

@@ -0,0 +1,13 @@
+spring:
+  redis:
+    database: 12
+    host: 192.168.2.237 # Redis服务器地址
+    port: 63791 # Redis服务器连接端口
+    password: emrais # Redis服务器连接密码(默认为空)
+  datasource:
+    druid:
+      url: jdbc:mysql://192.168.2.237:3306/tran?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: root
+      password: lantone
+
+swagger.show: true

+ 4 - 12
daqe-center/pom.xml

@@ -9,10 +9,6 @@
         <version>0.0.1-SNAPSHOT</version>
     </parent>
 
-    <properties>
-        <easypoi.version>4.2.0</easypoi.version>
-    </properties>
-
     <artifactId>daqe-center</artifactId>
     <name>daqe-center</name>
     <packaging>jar</packaging>
@@ -23,14 +19,6 @@
             <groupId>com.lantone</groupId>
             <artifactId>dblayer-mbg</artifactId>
         </dependency>
-
-        <!-- easypoi -->
-        <dependency>
-            <groupId>cn.afterturn</groupId>
-            <artifactId>easypoi-spring-boot-starter</artifactId>
-            <version>${easypoi.version}</version>
-        </dependency>
-
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
@@ -47,6 +35,10 @@
             <groupId>io.github.openfeign</groupId>
             <artifactId>feign-okhttp</artifactId>
         </dependency>
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-spring-boot-starter</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 29 - 0
daqe-center/src/main/java/com/lantone/daqe/client/HisDataService.java

@@ -0,0 +1,29 @@
+package com.lantone.daqe.client;
+
+import com.lantone.common.api.CommonResult;
+import com.lantone.common.vo.BlockLossTypeGatherVO;
+import com.lantone.common.vo.DataCompareVO;
+import com.lantone.daqe.dto.HisMedicalRecordDTO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+/**
+ * @Description: his数据获取服务远程调用
+ * @author: songxl
+ * @time: 2022/2/28 11:15
+ */
+@FeignClient("trans-center")
+public interface HisDataService {
+
+    //数据比对-获取某个入院时间段内的病历数
+    @PostMapping("/balance/data/getDataCount")
+    CommonResult<List<HisMedicalRecordDTO>> getDataCount(@RequestBody DataCompareVO dataCompareVO);
+
+    //数据比对-获取某个入院时间段内的病历数量
+    @PostMapping("/balance/data/getCount")
+    CommonResult<Integer> getCount(@RequestBody BlockLossTypeGatherVO blockLossTypeGatherVO);
+
+}

+ 34 - 0
daqe-center/src/main/java/com/lantone/daqe/client/hystrix/HisDataServiceHystrix.java

@@ -0,0 +1,34 @@
+package com.lantone.daqe.client.hystrix;
+
+
+import com.lantone.common.api.CommonResult;
+import com.lantone.common.vo.BlockLossTypeGatherVO;
+import com.lantone.common.vo.DataCompareVO;
+import com.lantone.daqe.client.HisDataService;
+import com.lantone.daqe.dto.HisMedicalRecordDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+
+/**
+ * @Description: his数据获取服务远程调用(请求失败熔断)
+ * @author: songxl
+ * @time: 2022/2/28 11:15
+ */
+@Component
+@Slf4j
+public class HisDataServiceHystrix implements HisDataService {
+    @Override
+    public CommonResult<List<HisMedicalRecordDTO>> getDataCount(DataCompareVO dataCompareVO) {
+        log.error("【hystrix】调用{}异常", "getDataCount");
+        return null;
+    }
+
+    @Override
+    public CommonResult<Integer> getCount(BlockLossTypeGatherVO blockLossTypeGatherVO) {
+        log.error("【hystrix】调用{}异常", "getCount");
+        return null;
+    }
+}

+ 34 - 0
daqe-center/src/main/java/com/lantone/daqe/client/hystrix/OperationLogServiceHystrix.java

@@ -0,0 +1,34 @@
+package com.lantone.daqe.client.hystrix;
+
+
+import com.lantone.common.api.CommonResult;
+import com.lantone.common.dto.GetOperationLogDTO;
+import com.lantone.common.vo.BlockLossTypeGatherVO;
+import com.lantone.common.vo.DataCompareVO;
+import com.lantone.daqe.client.OperationLogService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+
+/**
+ * @Description: 操作日志服务远程调用(请求失败熔断)
+ * @author: songxl
+ * @time: 2022/2/28 11:15
+ */
+@Component
+@Slf4j
+public class OperationLogServiceHystrix implements OperationLogService {
+    @Override
+    public CommonResult<List<GetOperationLogDTO>> getOperationLogs(DataCompareVO dataCompareVO) {
+        log.error("【hystrix】调用{}异常", "getOperationLogs");
+        return null;
+    }
+
+    @Override
+    public CommonResult<Integer> getOperationLogNum(BlockLossTypeGatherVO blockLossTypeGatherVO) {
+        log.error("【hystrix】调用{}异常", "getOperationLogNum");
+        return null;
+    }
+}

+ 14 - 0
daqe-center/src/main/java/com/lantone/daqe/config/JasyptConfig.java

@@ -0,0 +1,14 @@
+package com.lantone.daqe.config;
+
+import com.lantone.common.config.BaseJasyptConfig;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Description: Jasypt相关配置
+ * @author: rengb
+ * @time: 2021/7/21 11:15
+ */
+@Configuration
+public class JasyptConfig extends BaseJasyptConfig {
+
+}

+ 14 - 0
daqe-center/src/main/java/com/lantone/daqe/config/SundriesConfig.java

@@ -0,0 +1,14 @@
+package com.lantone.daqe.config;
+
+import com.lantone.common.config.BaseSundriesConfig;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Description: 其他配置
+ * @author: rengb
+ * @time: 2022/4/12 18:38
+ */
+@Configuration
+public class SundriesConfig extends BaseSundriesConfig {
+
+}

+ 12 - 12
daqe-center/src/main/java/com/lantone/daqe/dto/BlockLossTypeGatherDTO.java

@@ -20,29 +20,29 @@ public class BlockLossTypeGatherDTO implements Serializable {
 
     private static final long serialVersionUID = -4656915107891039438L;
     @ApiModelProperty(value = "HIS数量")
-    private Integer hisNum;
+    private Integer hisNum = 0;
     @ApiModelProperty(value = "接口日志数量")
-    private Integer logNum;
+    private Integer logNum = 0;
     @ApiModelProperty(value = "实际数量")
-    private Integer realNum;
+    private Integer realNum = 0;
     @ApiModelProperty(value = "合计丢失数量")
-    private Integer allLossNum;
+    private Integer allLossNum = 0;
     @ApiModelProperty(value = "外部丢失数量")
-    private Integer outLossNum;
+    private Integer outLossNum = 0;
     @ApiModelProperty(value = "外部文书丢失数量")
-    private Integer outRecNum;
+    private Integer outRecNum = 0;
     @ApiModelProperty(value = "外部病历号丢失数量")
-    private Integer outCodeNum;
+    private Integer outCodeNum = 0;
     @ApiModelProperty(value = "外部病案首页丢失数量")
-    private Integer outHomePageNum;
+    private Integer outHomePageNum = 0;
     @ApiModelProperty(value = "内部丢失数量")
-    private Integer inLossNum;
+    private Integer inLossNum = 0;
     @ApiModelProperty(value = "内部文书丢失数量")
-    private Integer inRecNum;
+    private Integer inRecNum = 0;
     @ApiModelProperty(value = "内部病历号丢失数量")
-    private Integer inCodeNum;
+    private Integer inCodeNum = 0;
     @ApiModelProperty(value = "内部病案首页丢失数量")
-    private Integer inHomePageNum;
+    private Integer inHomePageNum = 0;
 
 
 }

+ 1 - 1
daqe-center/src/main/java/com/lantone/daqe/dto/GetBlockLossPageDTO.java

@@ -42,7 +42,7 @@ public class GetBlockLossPageDTO implements Serializable {
     private String lossWay;
 
     @ApiModelProperty(value = "更新时间")
-    private Date auditTime;
+    private Date gmtModified;
 
     @ApiModelProperty(value = "状态: 0:已丢失,1:已恢复")
     private String status;

+ 1 - 1
daqe-center/src/main/java/com/lantone/daqe/dto/GetByIdColumnVerifyDTO.java

@@ -37,7 +37,7 @@ public class GetByIdColumnVerifyDTO implements Serializable {
     private String isRequired;
 
     @ApiModelProperty(value = "标准值")
-    private String standardvalue;
+    private String[] standardValueList;
 
     @ApiModelProperty(value = "正则式id")
     private Long regularId;

+ 27 - 0
daqe-center/src/main/java/com/lantone/daqe/dto/GetColumnDTO.java

@@ -0,0 +1,27 @@
+package com.lantone.daqe.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 获取表字段信息
+ * @author: zhanghang
+ * @time: 2022/3/22 13:24
+ */
+@ApiModel(value = "获取表字段信息")
+@Getter
+@Setter
+public class GetColumnDTO implements Serializable {
+
+    private static final long serialVersionUID = -2189348212915891832L;
+    @ApiModelProperty(value = "字段名称(中文)")
+    private String columnName;
+
+    @ApiModelProperty(value = "字段注释")
+    private String columnComment;
+
+}

+ 9 - 0
daqe-center/src/main/java/com/lantone/daqe/dto/GetColumnResultPageDTO.java

@@ -60,6 +60,9 @@ public class GetColumnResultPageDTO implements Serializable {
     @ApiModelProperty(value = "字段问题类型,1-数据缺失,2-非标准值,3-正则校验失败")
     private String type;
 
+    @ApiModelProperty(value = "入院日期")
+    private Date behospitalDate;
+
     @ApiModelProperty(value = "最近一次机器比对时间")
     private Date solveTime;
 
@@ -71,4 +74,10 @@ public class GetColumnResultPageDTO implements Serializable {
 
     @ApiModelProperty(value = "最近一次人工核查时间")
     private Date auditTime;
+
+    @ApiModelProperty(value = "记录修改时间")
+    private Date gmtModified;
+
+    @ApiModelProperty(value = "记录创建时间")
+    private Date gmtCreate;
 }

+ 50 - 0
daqe-center/src/main/java/com/lantone/daqe/dto/GetColumnVerifyDTO.java

@@ -0,0 +1,50 @@
+package com.lantone.daqe.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 根据ID获取字段校验规则明细数据-接口入参
+ * @author: zhanghang
+ * @time: 2022/3/10 10:01
+ */
+@ApiModel(value = "根据ID获取字段校验规则明细数据-接口出参")
+@Getter
+@Setter
+public class GetColumnVerifyDTO implements Serializable {
+
+    private static final long serialVersionUID = 1598464598027326148L;
+    @ApiModelProperty(value = "表的列信息ID")
+    private Long columnId;
+
+    @ApiModelProperty(value = "表名称(中文)")
+    private String tableCname;
+
+    @ApiModelProperty(value = "表名称(英文)")
+    private String tableEname;
+
+    @ApiModelProperty(value = "字段名称(中文)")
+    private String columnCname;
+
+    @ApiModelProperty(value = "字段名称(英文)")
+    private String columnEname;
+
+    @ApiModelProperty(value = "是否必填,0:否,1:是")
+    private String isRequired;
+
+    @ApiModelProperty(value = "标准值")
+    private String standardValue;
+
+    @ApiModelProperty(value = "正则式id")
+    private Long regularId;
+
+    @ApiModelProperty(value = "正则式名称")
+    private String regular;
+
+    @ApiModelProperty(value = "说明")
+    private String description;
+}

+ 4 - 0
daqe-center/src/main/java/com/lantone/daqe/dto/GetColumnVerifyPageDTO.java

@@ -6,6 +6,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * @Description: 获取字段校验规则维护数据-接口出参
@@ -45,4 +46,7 @@ public class GetColumnVerifyPageDTO implements Serializable {
 
     @ApiModelProperty(value = "说明")
     private String description;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date gmtCreate;
 }

+ 40 - 0
daqe-center/src/main/java/com/lantone/daqe/dto/GetConceptLibraryPageDTO.java

@@ -0,0 +1,40 @@
+package com.lantone.daqe.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 获取标准词和同义词(一对一)分页列表-接口出参
+ * @author: rengb
+ * @time: 2022/2/27 14:30
+ */
+@ApiModel(value = "获取标准词和同义词(一对一)分页列表-接口出参")
+@Getter
+@Setter
+public class GetConceptLibraryPageDTO implements Serializable {
+
+    private static final long serialVersionUID = -3423432863909470619L;
+
+    /**
+     * 标准词
+     */
+    @ApiModelProperty(value = "标准词")
+    private String standard;
+
+    /**
+     * 同义词
+     */
+    @ApiModelProperty(value = "同义词")
+    private String synonym;
+
+    /**
+     * 术语类型
+     */
+    @ApiModelProperty(value = "术语类型")
+    private String type;
+
+}

+ 2 - 2
daqe-center/src/main/java/com/lantone/daqe/dto/GetRecordTemplateManageDTO.java

@@ -40,8 +40,8 @@ public class GetRecordTemplateManageDTO implements Serializable {
     @ApiModelProperty(value = "模板内容")
     private String content;
 
-    @ApiModelProperty(value = "模板类型")
-    private String contentType;
+    @ApiModelProperty(value = "模板类型,模板类型,0:未知,1:html,2:xml ")
+    private String type;
 
 
 }

+ 4 - 0
daqe-center/src/main/java/com/lantone/daqe/dto/GetRegular.java

@@ -6,6 +6,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * @Description: 获取正则信息
@@ -32,4 +33,7 @@ public class GetRegular implements Serializable {
 
     @ApiModelProperty(value = "正则式描述")
     private String des;
+
+    @ApiModelProperty(value = "修改时间")
+    private Date gmtModified;
 }

+ 4 - 0
daqe-center/src/main/java/com/lantone/daqe/dto/GetStandardvalueInfoDTO.java

@@ -6,6 +6,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * @Description: 列信息标准值信息
@@ -23,4 +24,7 @@ public class GetStandardvalueInfoDTO implements Serializable {
 
     @ApiModelProperty(value = "标准值")
     private String standardvalue;
+
+    @ApiModelProperty(value = "修改时间")
+    private Date gmtModified;
 }

+ 10 - 0
daqe-center/src/main/java/com/lantone/daqe/dto/GetTableColumnInfoDTO.java

@@ -6,6 +6,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * @Description:
@@ -33,6 +34,9 @@ public class GetTableColumnInfoDTO implements Serializable {
     @ApiModelProperty(value = "住院序号")
     private String behospitalCode;
 
+    @ApiModelProperty(value = "入院日期")
+    private Date behospitalDate;
+
     @ApiModelProperty(value = "值")
     private String val;
 
@@ -42,5 +46,11 @@ public class GetTableColumnInfoDTO implements Serializable {
     @ApiModelProperty(value = "模块名称")
     private String modeName;
 
+    @ApiModelProperty(value = "文书编号")
+    private String recId;
+
+    @ApiModelProperty(value = "文书标题")
+    private String recTitle;
+
 
 }

+ 4 - 0
daqe-center/src/main/java/com/lantone/daqe/dto/HisMedicalRecordDTO.java

@@ -6,6 +6,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import java.io.Serializable;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -29,6 +30,9 @@ public class HisMedicalRecordDTO implements Serializable {
     @ApiModelProperty(value = "文书列表")
     private List<HisRecDTO> hisRecs;
 
+    @ApiModelProperty(value = "入院时间")
+    private Date behospitalDate;
+
 
 
 }

+ 3 - 1
daqe-center/src/main/java/com/lantone/daqe/dto/UpBlockLossByIdVO.java

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
 /**
@@ -19,7 +20,8 @@ public class UpBlockLossByIdVO implements Serializable {
 
     private static final long serialVersionUID = 2135752709548682595L;
 
-    @ApiModelProperty(value = "编号")
+    @ApiModelProperty(value = "编号", required = true)
+    @NotNull(message = "编号不能为空")
     private Long id;
 
     @ApiModelProperty(value = "丢失原因")

+ 8 - 1
daqe-center/src/main/java/com/lantone/daqe/entity/BehospitalInfo.java

@@ -1,5 +1,6 @@
 package com.lantone.daqe.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -19,10 +20,16 @@ public class BehospitalInfo implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
     /**
      * 病人住院ID
      */
-    @TableId("behospital_code")
+    @TableField("behospital_code")
     private String behospitalCode;
 
     /**

+ 6 - 0
daqe-center/src/main/java/com/lantone/daqe/entity/BlocklossResult.java

@@ -86,6 +86,12 @@ public class BlocklossResult implements Serializable {
     @TableField("audit_time")
     private Date auditTime;
 
+    /**
+     * 入院时间
+     */
+    @TableField("behospital_date")
+    private Date behospitalDate;
+
     /**
      * 状态: 0:已丢失,1:已恢复
      */

+ 6 - 0
daqe-center/src/main/java/com/lantone/daqe/entity/ColumnResult.java

@@ -152,6 +152,12 @@ public class ColumnResult implements Serializable {
     @TableField("description")
     private String description;
 
+    /**
+     * 入院日期
+     */
+    @TableField("behospital_date")
+    private Date behospitalDate;
+
     /**
      * 是否删除,N:未删除,Y:删除
      */

+ 83 - 0
daqe-center/src/main/java/com/lantone/daqe/entity/ConceptLibrary.java

@@ -0,0 +1,83 @@
+package com.lantone.daqe.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 术语表 实体类
+ * </p>
+ */
+@Data
+@TableName("base_concept_library")
+public class ConceptLibrary implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 标准词
+     */
+    @TableField("standard")
+    private String standard;
+
+    /**
+     * 同义词
+     */
+    @TableField("synonym")
+    private String synonym;
+
+    /**
+     * 术语类型,1:诊断,2:手术,3:药品
+     */
+    @TableField("type")
+    private String type;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    @TableField("is_deleted")
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    @TableField("gmt_modified")
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    @TableField("creator")
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    @TableField("modifier")
+    private String modifier;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+}

+ 218 - 0
daqe-center/src/main/java/com/lantone/daqe/entity/HisBehospitalInfo.java

@@ -0,0 +1,218 @@
+package com.lantone.daqe.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * his住院病历信息 实体类
+ * </p>
+ */
+@Data
+public class HisBehospitalInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 病人住院ID
+     */
+    @TableId("behospital_code")
+    private String behospitalCode;
+
+    /**
+     * 医院ID
+     */
+    @TableField("hospital_id")
+    private Long hospitalId;
+
+    /**
+     * 姓名
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 性别(男,女)
+     */
+    @TableField("sex")
+    private String sex;
+
+    /**
+     * 出生日期
+     */
+    @TableField("birthday")
+    private Date birthday;
+
+    /**
+     * 档案号
+     */
+    @TableField("file_code")
+    private String fileCode;
+
+    /**
+     * 质控类型
+     */
+    @TableField("qc_type_id")
+    private Long qcTypeId;
+
+    /**
+     * 病区编码
+     */
+    @TableField("ward_code")
+    private String wardCode;
+
+    /**
+     * 病区名称
+     */
+    @TableField("ward_name")
+    private String wardName;
+
+    /**
+     * 住院科室ID
+     */
+    @TableField("beh_dept_id")
+    private String behDeptId;
+
+    /**
+     * 住院科室名称
+     */
+    @TableField("beh_dept_name")
+    private String behDeptName;
+
+    /**
+     * 床位号
+     */
+    @TableField("bed_code")
+    private String bedCode;
+
+    /**
+     * 床位名称
+     */
+    @TableField("bed_name")
+    private String bedName;
+
+    /**
+     * 医保类别
+     */
+    @TableField("insurance_name")
+    private String insuranceName;
+
+    /**
+     * 职业
+     */
+    @TableField("job_type")
+    private String jobType;
+
+    /**
+     * 入院时间
+     */
+    @TableField("behospital_date")
+    private Date behospitalDate;
+
+    /**
+     * 出院时间
+     */
+    @TableField("leave_hospital_date")
+    private Date leaveHospitalDate;
+
+    /**
+     * 疾病ICD编码
+     */
+    @TableField("diagnose_icd")
+    private String diagnoseIcd;
+
+    /**
+     * 疾病名称
+     */
+    @TableField("diagnose")
+    private String diagnose;
+
+    /**
+     * 主管医生ID
+     */
+    @TableField("doctor_id")
+    private String doctorId;
+
+    /**
+     * 主管医生姓名
+     */
+    @TableField("doctor_name")
+    private String doctorName;
+
+    /**
+     * 住院医生ID
+     */
+    @TableField("beh_doctor_id")
+    private String behDoctorId;
+
+    /**
+     * 住院医生姓名
+     */
+    @TableField("beh_doctor_name")
+    private String behDoctorName;
+
+    /**
+     * 主任医生ID
+     */
+    @TableField("director_doctor_id")
+    private String directorDoctorId;
+
+    /**
+     * 主任医生姓名
+     */
+    @TableField("director_doctor_name")
+    private String directorDoctorName;
+
+    /**
+     * 是否归档(0:未归档,1:已归档)
+     */
+    @TableField("is_placefile")
+    private String isPlacefile;
+
+    /**
+     * 归档时间
+     */
+    @TableField("placefile_date")
+    private Date placefileDate;
+
+    /**
+     * R-住院登记I-病房接诊B-出院登记O-出院结算P-预约出院N-无费退院
+     */
+    @TableField("in_state")
+    private String inState;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    @TableField("is_deleted")
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    @TableField("gmt_modified")
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    @TableField("creator")
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    @TableField("modifier")
+    private String modifier;
+
+}

+ 938 - 0
daqe-center/src/main/java/com/lantone/daqe/entity/HisHomePage.java

@@ -0,0 +1,938 @@
+package com.lantone.daqe.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *  实体类
+ * </p>
+ */
+@Data
+public class HisHomePage implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 病案首页编号
+     */
+    @TableId("home_page_id")
+    private String homePageId;
+
+    /**
+     * 医院ID
+     */
+    @TableField("hospital_id")
+    private Long hospitalId;
+
+    /**
+     * 病人住院序号
+     */
+    @TableField("behospital_code")
+    private String behospitalCode;
+
+    /**
+     * 组织机构id
+     */
+    @TableField("hospital_code")
+    private String hospitalCode;
+
+    /**
+     * 医疗机构名称
+     */
+    @TableField("hospital_name")
+    private String hospitalName;
+
+    /**
+     * 医疗机构代码
+     */
+    @TableField("org_code")
+    private String orgCode;
+
+    /**
+     * 医疗付费方式
+     */
+    @TableField("pay_type")
+    private String payType;
+
+    /**
+     * 健康卡号
+     */
+    @TableField("health_card")
+    private String healthCard;
+
+    /**
+     * 住院次数
+     */
+    @TableField("behospital_num")
+    private String behospitalNum;
+
+    /**
+     * 病案号
+     */
+    @TableField("file_code")
+    private String fileCode;
+
+    /**
+     * 姓名
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 性别
+     */
+    @TableField("sex")
+    private String sex;
+
+    /**
+     * 出生日期
+     */
+    @TableField("birthday")
+    private Date birthday;
+
+    /**
+     * 年龄
+     */
+    @TableField("age")
+    private String age;
+
+    /**
+     * 年龄单位
+     */
+    @TableField("age_unit")
+    private String ageUnit;
+
+    /**
+     * 国籍
+     */
+    @TableField("nationality")
+    private String nationality;
+
+    /**
+     * 新生儿出生月数
+     */
+    @TableField("newborn_month")
+    private String newbornMonth;
+
+    /**
+     * 新生儿出生天数
+     */
+    @TableField("newborn_day")
+    private String newbornDay;
+
+    /**
+     * 新生儿出生体重
+     */
+    @TableField("newborn_weight")
+    private String newbornWeight;
+
+    /**
+     * 新生儿入院体重
+     */
+    @TableField("newborn_behospital_weight")
+    private String newbornBehospitalWeight;
+
+    /**
+     * 出生地
+     */
+    @TableField("born_address")
+    private String bornAddress;
+
+    /**
+     * 籍贯
+     */
+    @TableField("born_place")
+    private String bornPlace;
+
+    /**
+     * 民族
+     */
+    @TableField("nation")
+    private String nation;
+
+    /**
+     * 身份证号
+     */
+    @TableField("identity_card_no")
+    private String identityCardNo;
+
+    /**
+     * 职业
+     */
+    @TableField("job_type")
+    private String jobType;
+
+    /**
+     * 婚姻
+     */
+    @TableField("marriage")
+    private String marriage;
+
+    /**
+     * 现住址
+     */
+    @TableField("cur_address")
+    private String curAddress;
+
+    /**
+     * 现住址电话
+     */
+    @TableField("cur_phone")
+    private String curPhone;
+
+    /**
+     * 现住址邮编
+     */
+    @TableField("cur_post_code")
+    private String curPostCode;
+
+    /**
+     * 户口地址
+     */
+    @TableField("residence_address")
+    private String residenceAddress;
+
+    /**
+     * 户口地址邮编
+     */
+    @TableField("residence_post_code")
+    private String residencePostCode;
+
+    /**
+     * 工作单位
+     */
+    @TableField("work_address")
+    private String workAddress;
+
+    /**
+     * 工作单位电话
+     */
+    @TableField("work_phone")
+    private String workPhone;
+
+    /**
+     * 工作单位邮编
+     */
+    @TableField("work_post_code")
+    private String workPostCode;
+
+    /**
+     * 联系人姓名
+     */
+    @TableField("contact_name")
+    private String contactName;
+
+    /**
+     * 联系人关系
+     */
+    @TableField("contact_relation")
+    private String contactRelation;
+
+    /**
+     * 联系人地址
+     */
+    @TableField("contact_address")
+    private String contactAddress;
+
+    /**
+     * 联系人电话
+     */
+    @TableField("contact_phone")
+    private String contactPhone;
+
+    /**
+     * 入院途径
+     */
+    @TableField("behospital_way")
+    private String behospitalWay;
+
+    /**
+     * 入院时间
+     */
+    @TableField("behospital_date")
+    private Date behospitalDate;
+
+    /**
+     * 入院科别
+     */
+    @TableField("behospital_dept")
+    private String behospitalDept;
+
+    /**
+     * 入院病房
+     */
+    @TableField("behospital_ward")
+    private String behospitalWard;
+
+    /**
+     * 入院床位序号
+     */
+    @TableField("behospital_bed_id")
+    private String behospitalBedId;
+
+    /**
+     * 入院床位号码
+     */
+    @TableField("behospital_bed_code")
+    private String behospitalBedCode;
+
+    /**
+     * 转科科别
+     */
+    @TableField("change_dept")
+    private String changeDept;
+
+    /**
+     * 出院时间
+     */
+    @TableField("leave_hospital_date")
+    private Date leaveHospitalDate;
+
+    /**
+     * 出院科别
+     */
+    @TableField("leave_hospital_dept")
+    private String leaveHospitalDept;
+
+    /**
+     * 出院病房
+     */
+    @TableField("leave_hospital_ward")
+    private String leaveHospitalWard;
+
+    /**
+     * 出院床位序号
+     */
+    @TableField("leave_hospital_bed_id")
+    private String leaveHospitalBedId;
+
+    /**
+     * 出院床位号码
+     */
+    @TableField("leave_hospital_bed_code")
+    private String leaveHospitalBedCode;
+
+    /**
+     * 实际住院天数
+     */
+    @TableField("behospital_day_num")
+    private String behospitalDayNum;
+
+    /**
+     * 治疗类别(1.中医<1.1 中医;1.2 民族医>、2.中西医、3.西医 )
+     */
+    @TableField("treatment_type")
+    private String treatmentType;
+
+    /**
+     * 门急诊诊断
+     */
+    @TableField("outpatient_emr_diagnose")
+    private String outpatientEmrDiagnose;
+
+    /**
+     * 门急诊诊断(中医)
+     */
+    @TableField("outpatient_emr_ch_diagnose")
+    private String outpatientEmrChDiagnose;
+
+    /**
+     * 门急诊诊断编码
+     */
+    @TableField("outpatient_emr_diagnose_code")
+    private String outpatientEmrDiagnoseCode;
+
+    /**
+     * 门急诊诊断编码(中医)
+     */
+    @TableField("outpatient_emr_ch_diagnose_code")
+    private String outpatientEmrChDiagnoseCode;
+
+    /**
+     * 实施临床路径(1中医、2西医、3否)
+     */
+    @TableField("implementation_clinical_pathway")
+    private String implementationClinicalPathway;
+
+    /**
+     * 使用医疗机构中药制剂(1是、2否)
+     */
+    @TableField("is_chinese_medicine_preparation")
+    private String isChineseMedicinePreparation;
+
+    /**
+     * 使用中医诊疗设备(1是、2否)	
+     */
+    @TableField("is_chinese_diagnose_equipment")
+    private String isChineseDiagnoseEquipment;
+
+    /**
+     * 使用中医诊疗技术(1是 、2否)	
+     */
+    @TableField("is_chinese_diagnose_technology")
+    private String isChineseDiagnoseTechnology;
+
+    /**
+     * 辩证施护(1是、2否)
+     */
+    @TableField("dialectical_nursing")
+    private String dialecticalNursing;
+
+    /**
+     * 损伤中毒因素
+     */
+    @TableField("poison_factor")
+    private String poisonFactor;
+
+    /**
+     * 损伤中毒因素编码
+     */
+    @TableField("poison_factor_code")
+    private String poisonFactorCode;
+
+    /**
+     * 病理诊断
+     */
+    @TableField("pathology_diagnose")
+    private String pathologyDiagnose;
+
+    /**
+     * 病理诊断编码
+     */
+    @TableField("pathology_diagnose_code")
+    private String pathologyDiagnoseCode;
+
+    /**
+     * 病理诊断编号
+     */
+    @TableField("pathology_diagnose_id")
+    private String pathologyDiagnoseId;
+
+    /**
+     * 药物过敏
+     */
+    @TableField("is_med_allergy")
+    private String isMedAllergy;
+
+    /**
+     * 过敏药物
+     */
+    @TableField("med_allergy_name")
+    private String medAllergyName;
+
+    /**
+     * 死亡患者尸检
+     */
+    @TableField("autopsy")
+    private String autopsy;
+
+    /**
+     * 血型
+     */
+    @TableField("blood_type")
+    private String bloodType;
+
+    /**
+     * Rh
+     */
+    @TableField("rh")
+    private String rh;
+
+    /**
+     * 科主任
+     */
+    @TableField("dept_director")
+    private String deptDirector;
+
+    /**
+     * 主任医师
+     */
+    @TableField("director_doctor")
+    private String directorDoctor;
+
+    /**
+     * 主治医师
+     */
+    @TableField("attending_doctor")
+    private String attendingDoctor;
+
+    /**
+     * 住院医师
+     */
+    @TableField("behospital_doctor")
+    private String behospitalDoctor;
+
+    /**
+     * 责任护士
+     */
+    @TableField("response_nurse")
+    private String responseNurse;
+
+    /**
+     * 进修医师
+     */
+    @TableField("study_doctor")
+    private String studyDoctor;
+
+    /**
+     * 实习医师
+     */
+    @TableField("practice_doctor")
+    private String practiceDoctor;
+
+    /**
+     * 编码员
+     */
+    @TableField("encode_man")
+    private String encodeMan;
+
+    /**
+     * 病案质量
+     */
+    @TableField("home_page_quality")
+    private String homePageQuality;
+
+    /**
+     * 质控医师
+     */
+    @TableField("qc_doctor")
+    private String qcDoctor;
+
+    /**
+     * 质控护士
+     */
+    @TableField("qc_nurse")
+    private String qcNurse;
+
+    /**
+     * 质控日期
+     */
+    @TableField("qc_date")
+    private Date qcDate;
+
+    /**
+     * 离院方式
+     */
+    @TableField("leave_hospital_type")
+    private String leaveHospitalType;
+
+    /**
+     * 接收机构名称
+     */
+    @TableField("accept_org_code")
+    private String acceptOrgCode;
+
+    /**
+     * 31天内再住院计划
+     */
+    @TableField("again_behospital_plan")
+    private String againBehospitalPlan;
+
+    /**
+     * 再住院目的
+     */
+    @TableField("again_behospital_goal")
+    private String againBehospitalGoal;
+
+    /**
+     * 颅脑损伤患者昏迷前天数
+     */
+    @TableField("tbi_before_day")
+    private String tbiBeforeDay;
+
+    /**
+     * 颅脑损伤患者昏迷前小时
+     */
+    @TableField("tbi_before_hour")
+    private String tbiBeforeHour;
+
+    /**
+     * 颅脑损伤患者昏迷前分钟
+     */
+    @TableField("tbi_before_minute")
+    private String tbiBeforeMinute;
+
+    /**
+     * 颅脑损伤患者昏迷后天数
+     */
+    @TableField("tbi_after_day")
+    private String tbiAfterDay;
+
+    /**
+     * 颅脑损伤患者昏迷后小时
+     */
+    @TableField("tbi_after_hour")
+    private String tbiAfterHour;
+
+    /**
+     * 颅脑损伤患者昏迷后分钟
+     */
+    @TableField("tbi_after_minute")
+    private String tbiAfterMinute;
+
+    /**
+     * 总费用
+     */
+    @TableField("total_fee")
+    private String totalFee;
+
+    /**
+     * 自付金额
+     */
+    @TableField("own_fee")
+    private String ownFee;
+
+    /**
+     * 一般医疗服务费
+     */
+    @TableField("general_fee")
+    private String generalFee;
+
+    /**
+     * 一般治疗服务费
+     */
+    @TableField("service_fee")
+    private String serviceFee;
+
+    /**
+     * 护理费
+     */
+    @TableField("nurse_fee")
+    private String nurseFee;
+
+    /**
+     * 其他费用
+     */
+    @TableField("other_fee")
+    private String otherFee;
+
+    /**
+     * 病理诊断费
+     */
+    @TableField("pathology_fee")
+    private String pathologyFee;
+
+    /**
+     * 实验室诊断费
+     */
+    @TableField("lab_fee")
+    private String labFee;
+
+    /**
+     * 影像学诊断费
+     */
+    @TableField("pacs_fee")
+    private String pacsFee;
+
+    /**
+     * 临床诊断项目费
+     */
+    @TableField("clinic_diagnose_fee")
+    private String clinicDiagnoseFee;
+
+    /**
+     * 非手术治疗项目费
+     */
+    @TableField("not_operation_fee")
+    private String notOperationFee;
+
+    /**
+     * 临床物理治疗费
+     */
+    @TableField("clinic_physic_fee")
+    private String clinicPhysicFee;
+
+    /**
+     * 手术治疗费
+     */
+    @TableField("operation_treat_fee")
+    private String operationTreatFee;
+
+    /**
+     * 麻醉费
+     */
+    @TableField("anaesthesia_fee")
+    private String anaesthesiaFee;
+
+    /**
+     * 手术费
+     */
+    @TableField("operation_fee")
+    private String operationFee;
+
+    /**
+     * 康复类
+     */
+    @TableField("health_type_fee")
+    private String healthTypeFee;
+
+    /**
+     * 中医治疗费
+     */
+    @TableField("chn_treat_fee")
+    private String chnTreatFee;
+
+    /**
+     * 西药费
+     */
+    @TableField("western_med_fee")
+    private String westernMedFee;
+
+    /**
+     * 抗菌药物费用
+     */
+    @TableField("antibiosis_fee")
+    private String antibiosisFee;
+
+    /**
+     * 中成药费
+     */
+    @TableField("chn_med_fee")
+    private String chnMedFee;
+
+    /**
+     * 中草药费
+     */
+    @TableField("chn_herb_fee")
+    private String chnHerbFee;
+
+    /**
+     * 血费
+     */
+    @TableField("blood_fee")
+    private String bloodFee;
+
+    /**
+     * 白蛋白类制品费
+     */
+    @TableField("albumen_fee")
+    private String albumenFee;
+
+    /**
+     * 球蛋白类制品费
+     */
+    @TableField("globulin_fee")
+    private String globulinFee;
+
+    /**
+     * 凝血因子类制品费
+     */
+    @TableField("blood_factor_fee")
+    private String bloodFactorFee;
+
+    /**
+     * 细胞因子类制品费
+     */
+    @TableField("cell_factor_fee")
+    private String cellFactorFee;
+
+    /**
+     * 检查用一次性医用材料费
+     */
+    @TableField("check_material_fee")
+    private String checkMaterialFee;
+
+    /**
+     * 治疗用一次性医用材料费
+     */
+    @TableField("treat_material_fee")
+    private String treatMaterialFee;
+
+    /**
+     * 手术用一次性医用材料费
+     */
+    @TableField("operation_material_fee")
+    private String operationMaterialFee;
+
+    /**
+     * 其他类其他费
+     */
+    @TableField("other_type_fee")
+    private String otherTypeFee;
+
+    /**
+     * 单病种管理
+     */
+    @TableField("single_diag_manage")
+    private String singleDiagManage;
+
+    /**
+     * 临床路径管理
+     */
+    @TableField("clinic_pathway_manage")
+    private String clinicPathwayManage;
+
+    /**
+     * 门诊与住院
+     */
+    @TableField("is_outpatient_behospital")
+    private String isOutpatientBehospital;
+
+    /**
+     * 入院与出院
+     */
+    @TableField("is_leave_behospital")
+    private String isLeaveBehospital;
+
+    /**
+     * 术前与术后
+     */
+    @TableField("is_operation_before_after")
+    private String isOperationBeforeAfter;
+
+    /**
+     * 临床与病理
+     */
+    @TableField("is_clinic_pathology")
+    private String isClinicPathology;
+
+    /**
+     * 放射与病理
+     */
+    @TableField("is_radiate_pathology")
+    private String isRadiatePathology;
+
+    /**
+     * 病人抢救次数
+     */
+    @TableField("rescue_num")
+    private String rescueNum;
+
+    /**
+     * 病人抢救成功次数
+     */
+    @TableField("rescue_success_num")
+    private String rescueSuccessNum;
+
+    /**
+     * 是否为自动出院
+     */
+    @TableField("is_auto_leavehospital")
+    private String isAutoLeavehospital;
+
+    /**
+     * 转归情况
+     */
+    @TableField("return_to_type")
+    private String returnToType;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    @TableField("is_deleted")
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    @TableField("gmt_modified")
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    @TableField("creator")
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    @TableField("modifier")
+    private String modifier;
+
+    /**
+     * 住院期间身体约束
+     */
+    @TableField("is_physical_restraint")
+    private String isPhysicalRestraint;
+
+    /**
+     * 入院前颅脑损伤患者昏迷时间
+     */
+    @TableField("tbi_behospital_before_time")
+    private String tbiBehospitalBeforeTime;
+
+    /**
+     * 入院后颅脑损伤患者昏迷时间
+     */
+    @TableField("tbi_behospital_after_time")
+    private String tbiBehospitalAfterTime;
+
+    /**
+     * 住院期间是否发生跌倒或坠床
+     */
+    @TableField("is_fall_bed")
+    private String isFallBed;
+
+    /**
+     * 医院感染
+     */
+    @TableField("is_nosocomial_infection")
+    private String isNosocomialInfection;
+
+    /**
+     * 入住ICU情况
+     */
+    @TableField("is_into_icu")
+    private String isIntoIcu;
+
+    /**
+     * 并发症情况
+     */
+    @TableField("is_complications")
+    private String isComplications;
+
+    /**
+     * 是否发生压疮
+     */
+    @TableField("is_pressure_sore")
+    private String isPressureSore;
+
+    /**
+     * 是否住院期间发生压疮
+     */
+    @TableField("is_behospital_pressure_sore")
+    private String isBehospitalPressureSore;
+
+    /**
+     * 非计划再次手术
+     */
+    @TableField("is_unplanned_reoperation")
+    private String isUnplannedReoperation;
+
+    /**
+     * 治疗结果
+     */
+    @TableField("treatment_results")
+    private String treatmentResults;
+
+    /**
+     * 并发症
+     */
+    @TableField("complications_results")
+    private String complicationsResults;
+
+    /**
+     * 感染部位
+     */
+    @TableField("infection_site")
+    private String infectionSite;
+
+    /**
+     * 住院期间有无告病危
+     */
+    @TableField("is_be_in_danger")
+    private String isBeInDanger;
+
+}

+ 101 - 0
daqe-center/src/main/java/com/lantone/daqe/entity/HisMedicalRecord.java

@@ -0,0 +1,101 @@
+package com.lantone.daqe.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *  实体类
+ * </p>
+ */
+@Data
+public class HisMedicalRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("rec_id")
+    private String recId;
+
+    /**
+     * 医院ID
+     */
+    @TableField("hospital_id")
+    private Long hospitalId;
+
+    /**
+     * 病人住院ID
+     */
+    @TableField("behospital_code")
+    private String behospitalCode;
+
+    /**
+     * 组织机构代码
+     */
+    @TableField("org_code")
+    private String orgCode;
+
+    /**
+     * 病历类别编号
+     */
+    @TableField("rec_type_id")
+    private String recTypeId;
+
+    /**
+     * 模块id
+     */
+    @TableField("mode_id")
+    private Long modeId;
+
+    /**
+     * 病历日期
+     */
+    @TableField("rec_date")
+    private Date recDate;
+
+    /**
+     * 病历标题
+     */
+    @TableField("rec_title")
+    private String recTitle;
+
+    /**
+     * 模板处理状态(0:未处理,1:已处理)
+     */
+    @TableField("status")
+    private Integer status;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    @TableField("is_deleted")
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    @TableField("gmt_modified")
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    @TableField("creator")
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    @TableField("modifier")
+    private String modifier;
+
+}

+ 87 - 0
daqe-center/src/main/java/com/lantone/daqe/entity/HisMedicalRecordContent.java

@@ -0,0 +1,87 @@
+package com.lantone.daqe.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.sql.Blob;
+import java.util.Date;
+
+/**
+ * <p>
+ *  实体类
+ * </p>
+ */
+@Data
+public class HisMedicalRecordContent implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 病历ID
+     */
+    @TableId("rec_id")
+    private String recId;
+
+    /**
+     * 医院ID
+     */
+    @TableField("hospital_id")
+    private Long hospitalId;
+
+    /**
+     * 文书内容(blob)
+     */
+    @TableField("content_blob")
+    private Blob contentBlob;
+
+    /**
+     * 病历文本(文本)
+     */
+    @TableField("content_text")
+    private String contentText;
+
+    /**
+     * html文本信息
+     */
+    @TableField("html_text")
+    private String htmlText;
+
+    /**
+     * xml文本信息
+     */
+    @TableField("xml_text")
+    private String xmlText;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    @TableField("is_deleted")
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    @TableField("gmt_modified")
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    @TableField("creator")
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    @TableField("modifier")
+    private String modifier;
+
+}

+ 8 - 1
daqe-center/src/main/java/com/lantone/daqe/entity/HomePage.java

@@ -1,5 +1,6 @@
 package com.lantone.daqe.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -19,10 +20,16 @@ public class HomePage implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
     /**
      * 病案首页编号
      */
-    @TableId("home_page_id")
+    @TableField("home_page_id")
     private String homePageId;
 
     /**

+ 8 - 1
daqe-center/src/main/java/com/lantone/daqe/entity/MedicalRecord.java

@@ -1,5 +1,6 @@
 package com.lantone.daqe.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -19,7 +20,13 @@ public class MedicalRecord implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
-    @TableId("rec_id")
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @TableField("rec_id")
     private String recId;
 
     /**

+ 8 - 1
daqe-center/src/main/java/com/lantone/daqe/entity/MedicalRecordContent.java

@@ -1,5 +1,6 @@
 package com.lantone.daqe.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -20,10 +21,16 @@ public class MedicalRecordContent implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
     /**
      * 病历ID
      */
-    @TableId("rec_id")
+    @TableField("rec_id")
     private String recId;
 
     /**

+ 6 - 0
daqe-center/src/main/java/com/lantone/daqe/entity/NonnullResult.java

@@ -134,6 +134,12 @@ public class NonnullResult implements Serializable {
     @TableField("audit_time")
     private Date auditTime;
 
+    /**
+     * 入院日期
+     */
+    @TableField("behospital_date")
+    private Date behospitalDate;
+
     /**
      * 描述
      */

+ 6 - 0
daqe-center/src/main/java/com/lantone/daqe/entity/RegularResult.java

@@ -158,6 +158,12 @@ public class RegularResult implements Serializable {
     @TableField("audit_time")
     private Date auditTime;
 
+    /**
+     * 入院日期
+     */
+    @TableField("behospital_date")
+    private Date behospitalDate;
+
     /**
      * 描述
      */

+ 6 - 0
daqe-center/src/main/java/com/lantone/daqe/entity/StandardvalueResult.java

@@ -140,6 +140,12 @@ public class StandardvalueResult implements Serializable {
     @TableField("audit_time")
     private Date auditTime;
 
+    /**
+     * 入院日期
+     */
+    @TableField("behospital_date")
+    private Date behospitalDate;
+
     /**
      * 描述
      */

+ 42 - 0
daqe-center/src/main/java/com/lantone/daqe/enums/ConceptLibraryTypeEnum.java

@@ -0,0 +1,42 @@
+package com.lantone.daqe.enums;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 术语类型
+ * @author: zhanghang
+ * @time: 2022/3/11 16:03
+ */
+public enum ConceptLibraryTypeEnum {
+    DISEASE("1", "诊断"),
+    OPERATION("2", "手术"),
+    DRUG("3", "药品");
+
+    @Getter
+    @Setter
+    private String key;
+
+    @Getter
+    @Setter
+    private String name;
+
+    ConceptLibraryTypeEnum(String key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static ConceptLibraryTypeEnum getEnum(String key) {
+        for (ConceptLibraryTypeEnum item : ConceptLibraryTypeEnum.values()) {
+            if (item.key.equals(key)) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(String key) {
+        ConceptLibraryTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+}

+ 42 - 0
daqe-center/src/main/java/com/lantone/daqe/enums/DataSaveUrlEnum.java

@@ -0,0 +1,42 @@
+package com.lantone.daqe.enums;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 数据保存url注解
+ * @author: songxl
+ * @time: 2022/3/4 16:03
+ */
+public enum DataSaveUrlEnum {
+    BEHOSPITAL_INFO("save/saveBehospitalCode", "病历数据"),
+    HOME_PAGE("save/saveHomePages", "病案首页"),
+    MEDICAL_RECORD("save/saveRecs", "文书记录");
+
+    @Getter
+    @Setter
+    private String key;
+
+    @Getter
+    @Setter
+    private String name;
+
+    DataSaveUrlEnum(String key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static DataSaveUrlEnum getEnum(String key) {
+        for (DataSaveUrlEnum item : DataSaveUrlEnum.values()) {
+            if (item.key.equals(key)) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(String key) {
+        DataSaveUrlEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+}

+ 4 - 1
daqe-center/src/main/java/com/lantone/daqe/enums/ModeEnum.java

@@ -9,7 +9,10 @@ import lombok.Setter;
  * @time: 2022/3/11 16:03
  */
 public enum ModeEnum {
-    med_home_page("6", "病案首页");
+    med_home_page("6", "病案首页"),
+    med_behospital_info("0", "住院病历信息"),
+    str_admission_note("1", "入院记录"),
+    str_leave_hospital("5", "出院小结");
 
 
     @Getter

+ 425 - 162
daqe-center/src/main/java/com/lantone/daqe/facade/BlockLossManagementFacade.java

@@ -5,7 +5,9 @@ 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.google.common.collect.Lists;
+import com.lantone.common.dto.GetOperationLogDTO;
 import com.lantone.common.enums.IsDeleteEnum;
+import com.lantone.common.exception.Asserts;
 import com.lantone.common.util.BeanUtil;
 import com.lantone.common.util.DateUtil;
 import com.lantone.common.util.EntityUtil;
@@ -13,23 +15,25 @@ import com.lantone.common.util.ListUtil;
 import com.lantone.common.util.StringUtil;
 import com.lantone.common.util.SysUserUtils;
 import com.lantone.common.vo.BlockLossTypeGatherVO;
+import com.lantone.common.vo.DataCompareVO;
+import com.lantone.common.vo.DataRepariVO;
+import com.lantone.daqe.client.HisDataService;
 import com.lantone.daqe.client.OperationLogService;
 import com.lantone.daqe.dto.BlockLossTypeGatherDTO;
 import com.lantone.daqe.dto.GetBlockLossPageDTO;
-import com.lantone.common.dto.GetOperationLogDTO;
 import com.lantone.daqe.dto.HisMedicalRecordDTO;
 import com.lantone.daqe.dto.UpBlockLossByIdVO;
 import com.lantone.daqe.entity.BehospitalInfo;
 import com.lantone.daqe.entity.BlocklossResult;
 import com.lantone.daqe.entity.HomePage;
 import com.lantone.daqe.entity.MedicalRecord;
-import com.lantone.daqe.entity.MedicalRecordContent;
+import com.lantone.daqe.enums.DataSaveUrlEnum;
+import com.lantone.daqe.enums.LossIsAuditedEnum;
 import com.lantone.daqe.enums.LossStatusEnum;
 import com.lantone.daqe.enums.LossTypeEnum;
 import com.lantone.daqe.enums.LossWayEnum;
 import com.lantone.daqe.facade.base.BehospitalInfoFacade;
 import com.lantone.daqe.facade.base.BlocklossResultFacade;
-import com.lantone.common.vo.DataCompareVO;
 import com.lantone.daqe.facade.base.HomePageFacade;
 import com.lantone.daqe.facade.base.MedicalRecordContentFacade;
 import com.lantone.daqe.facade.base.MedicalRecordFacade;
@@ -67,6 +71,12 @@ public class BlockLossManagementFacade {
     @Autowired
     private OperationLogService operationLogService;
 
+    @Autowired
+    private HisDataService hisDataService;
+
+    @Autowired
+    private HisDataManagementFacade hisDataManagementFacade;
+
 
     /**
      * 获取病历数据丢失明细分页列表
@@ -87,8 +97,9 @@ public class BlockLossManagementFacade {
     public Boolean upBlockLossById(UpBlockLossByIdVO upBlockLossByIdVO) {
         BlocklossResult blocklossResult = new BlocklossResult();
         BeanUtils.copyProperties(upBlockLossByIdVO, blocklossResult);
-        blocklossResult.setModifier(SysUserUtils.getCurrentPrinciple());
+        blocklossResult.setModifier(SysUserUtils.getCurrentPrinciple() == null ? "0" : SysUserUtils.getCurrentPrinciple());
         blocklossResult.setGmtModified(DateUtil.now());
+        blocklossResult.setAuditTime(DateUtil.now());
         return blocklossResultFacade.updateById(blocklossResult);
     }
 
@@ -100,100 +111,145 @@ public class BlockLossManagementFacade {
      */
     public Boolean dataCompare(DataCompareVO dataCompareVO) {
         Boolean flag = false;
-        //====1.获取已丢失状态记录,去数据库中对比判断是否补录
-        List<BlocklossResult> lossResults = blocklossResultFacade.list(new QueryWrapper<BlocklossResult>()
-                .ge(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getStartDate())
-                .le(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getEndDate())
-                .eq("status", LossStatusEnum.IS_LOSS.getKey())
+        Long hospitalId = null;
+        Long principleId = null;
+        //定时任务SysUserUtils取不到医院,操作人
+        if (dataCompareVO.getHospitalId() == null) {
+            hospitalId = SysUserUtils.getCurrentHospitalId();
+            principleId = SysUserUtils.getCurrentPrincipleId();
+        }
+        //获取his对应的数据
+        List<HisMedicalRecordDTO> hisMedicalRecords = getHisMedicalRecords(dataCompareVO);
+        if (ListUtil.isEmpty(hisMedicalRecords) && StringUtil.isNotBlank(dataCompareVO.getBehospitalCode())) {
+            Asserts.fail("未查询到该患者信息");
+        }
+
+
+        //====1.删除当前时间段的对比记录(未核查的)
+        flag = blocklossResultFacade.remove(new UpdateWrapper<BlocklossResult>()
+                .ge(dataCompareVO.getStartDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "behospital_date", dataCompareVO.getStartDate())
+                .le(dataCompareVO.getEndDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "behospital_date", dataCompareVO.getEndDate())
+                .eq(StringUtil.isNotBlank(dataCompareVO.getBehospitalCode()), "behospital_code", dataCompareVO.getBehospitalCode())
+                .eq(hospitalId != null, "hospital_id", hospitalId)
+                .eq("is_audited", LossIsAuditedEnum.NOT_AUDITED.getKey())
                 .eq("is_deleted", IsDeleteEnum.N.getKey()));
-        Map<String, List<BlocklossResult>> lossResultMap = null;
-        if (ListUtil.isNotEmpty(lossResults)) {
-            lossResultMap = EntityUtil.makeEntityListMap(lossResults, "lossType");
-            //更新以缺失数据的状态
-            flag = upBlockLossStatus(lossResultMap);
+
+        //已核查的数据(筛选区间)
+        List<BlocklossResult> auditedResults = blocklossResultFacade.list(new QueryWrapper<BlocklossResult>()
+                .ge(dataCompareVO.getStartDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "behospital_date", dataCompareVO.getStartDate())
+                .le(dataCompareVO.getEndDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "behospital_date", dataCompareVO.getEndDate())
+                .eq(StringUtil.isNotBlank(dataCompareVO.getBehospitalCode()), "behospital_code", dataCompareVO.getBehospitalCode())
+                .eq(hospitalId != null, "hospital_id", hospitalId)
+                .notIn("is_audited", LossIsAuditedEnum.NOT_AUDITED.getKey())
+                .eq("is_deleted", IsDeleteEnum.N.getKey()));
+        //再按照内部|外部区分
+        List<String> inAuditedResultCodes = null;
+        List<String> inAuditedResultHomePages = null;
+        List<String> inAuditedResultRecIds = null;
+        List<String> outAuditedResultCodes = null;
+        List<String> outAuditedResultHomePages = null;
+        List<String> outAuditedResultRecIds = null;
+
+        if (ListUtil.isNotEmpty(auditedResults)) {
+            Map<String, List<BlocklossResult>> auditedResultMap = EntityUtil.makeEntityListMap(auditedResults, "lossType");
+            if (ListUtil.isNotEmpty(auditedResultMap.get(LossTypeEnum.CODE_LOSS.getKey()))) {
+                List<BlocklossResult> auditedResultCodes = auditedResultMap.get(LossTypeEnum.CODE_LOSS.getKey());
+                if (ListUtil.isNotEmpty(auditedResultCodes)) {
+                    Map<String, List<BlocklossResult>> tempCodeMap = EntityUtil.makeEntityListMap(auditedResultCodes, "lossWay");
+                    if (ListUtil.isNotEmpty(tempCodeMap.get(LossWayEnum.IN_LOSS.getKey()))) {
+                        inAuditedResultCodes = tempCodeMap.get(LossWayEnum.IN_LOSS.getKey()).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList());
+                    }
+                    if (ListUtil.isNotEmpty(tempCodeMap.get(LossWayEnum.OUT_LOSS.getKey()))) {
+                        outAuditedResultCodes = tempCodeMap.get(LossWayEnum.OUT_LOSS.getKey()).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList());
+                    }
+                }
+            }
+            if (ListUtil.isNotEmpty(auditedResultMap.get(LossTypeEnum.HOMEPAGE_LOSS.getKey()))) {
+                List<BlocklossResult> auditedResultHomePages = auditedResultMap.get(LossTypeEnum.HOMEPAGE_LOSS.getKey());
+                if (ListUtil.isNotEmpty(auditedResultHomePages)) {
+                    Map<String, List<BlocklossResult>> tempHomePageMap = EntityUtil.makeEntityListMap(auditedResultHomePages, "lossWay");
+                    if (ListUtil.isNotEmpty(tempHomePageMap.get(LossWayEnum.IN_LOSS.getKey()))) {
+                        inAuditedResultHomePages = tempHomePageMap.get(LossWayEnum.IN_LOSS.getKey()).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
+                    }
+                    if (ListUtil.isNotEmpty(tempHomePageMap.get(LossWayEnum.OUT_LOSS.getKey()))) {
+                        outAuditedResultHomePages = tempHomePageMap.get(LossWayEnum.OUT_LOSS.getKey()).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
+                    }
+                }
+            }
+            if (ListUtil.isNotEmpty(auditedResultMap.get(LossTypeEnum.REC_LOSS.getKey()))) {
+                List<BlocklossResult> auditedResultRecIds = auditedResultMap.get(LossTypeEnum.REC_LOSS.getKey());
+                if (ListUtil.isNotEmpty(auditedResultRecIds)) {
+                    Map<String, List<BlocklossResult>> tempRecMap = EntityUtil.makeEntityListMap(auditedResultRecIds, "lossWay");
+                    if (ListUtil.isNotEmpty(tempRecMap.get(LossWayEnum.IN_LOSS.getKey()))) {
+                        inAuditedResultRecIds = tempRecMap.get(LossWayEnum.IN_LOSS.getKey()).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
+                    }
+                    if (ListUtil.isNotEmpty(tempRecMap.get(LossWayEnum.OUT_LOSS.getKey()))) {
+                        outAuditedResultRecIds = tempRecMap.get(LossWayEnum.OUT_LOSS.getKey()).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
+                    }
+                }
+            }
         }
+        //定义对应要更新的已核查集合
+        List<GetOperationLogDTO> dataUps = new ArrayList<>();
+
 
         //====2.某时间的数据对比
         //=====2.1获取数据
 
-        //获取his对应的数据
-        List<HisMedicalRecordDTO> hisMedicalRecords = getHisMedicalRecords(dataCompareVO);
+
+        Map<String, HisMedicalRecordDTO> hisMedicalRecordMap = EntityUtil.makeEntityMap(hisMedicalRecords, "behospitalCode");
 
         //获取操作记录数据
         //病历数据
-        dataCompareVO.setOperationUrl("save/saveBehospitalCode");
+        dataCompareVO.setOperationUrl(DataSaveUrlEnum.BEHOSPITAL_INFO.getKey());
         List<GetOperationLogDTO> behospitalCodeLogs = getOperationLogs(dataCompareVO);
         //病案首页数据
-        dataCompareVO.setOperationUrl("save/saveHomePages");
-        List<GetOperationLogDTO> homePageLogs = getOperationLogs(dataCompareVO);
+        List<GetOperationLogDTO> homePageLogs = new ArrayList<>();
         //文书数据
-        dataCompareVO.setOperationUrl("save/saveRecs");
-        List<GetOperationLogDTO> recLogs = getOperationLogs(dataCompareVO);
+        List<GetOperationLogDTO> recLogs = new ArrayList<>();
+
+        //没有病历数据就不用去查病案首页和文书
+        if (ListUtil.isNotEmpty(behospitalCodeLogs)) {
+            //日志去重防止多次操作
+            behospitalCodeLogs = removeRepeat(behospitalCodeLogs, "behospitalCode");
+            List<String> logCodes = behospitalCodeLogs.stream().map(GetOperationLogDTO::getBehospitalCode).collect(Collectors.toList());
+            dataCompareVO.setBehospitalCodes(logCodes);
+            //病案首页数据
+            dataCompareVO.setOperationUrl(DataSaveUrlEnum.HOME_PAGE.getKey());
+            homePageLogs = removeRepeat(getOperationLogs(dataCompareVO), "homePageId");
+            //文书数据
+            dataCompareVO.setOperationUrl(DataSaveUrlEnum.MEDICAL_RECORD.getKey());
+            recLogs = removeRepeat(getOperationLogs(dataCompareVO), "recId");
+        }
 
         //获取库中数据
         //病历数据
         List<String> dataBaseBehospitalCodes = behospitalInfoFacade.list(new QueryWrapper<BehospitalInfo>()
                 .select("behospital_code")
-                .ge(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getStartDate())
-                .le(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getEndDate())
-                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                .ge(dataCompareVO.getStartDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "behospital_date", dataCompareVO.getStartDate())
+                .le(dataCompareVO.getEndDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "behospital_date", dataCompareVO.getEndDate())
+                .eq(StringUtil.isNotBlank(dataCompareVO.getBehospitalCode()), "behospital_code", dataCompareVO.getBehospitalCode())
+                .eq(hospitalId != null, "hospital_id", hospitalId)
                 .eq("is_deleted", IsDeleteEnum.N.getKey()))
                 .stream().map(BehospitalInfo::getBehospitalCode).collect(Collectors.toList());
         //病案首页数据
-        List<String> dataBaseHomePageIds = homePageFacade.list(new QueryWrapper<HomePage>()
-                .select("home_page_id")
-                .ge(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getStartDate())
-                .le(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getEndDate())
-                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
-                .eq("is_deleted", IsDeleteEnum.N.getKey()))
-                .stream().map(HomePage::getHomePageId).collect(Collectors.toList());
-
+        List<String> dataBaseHomePageIds = new ArrayList<>();
         //文书数据
-        List<String> dataBaseRecIds = medicalRecordFacade.list(new QueryWrapper<MedicalRecord>()
-                .select("rec_id")
-                .ge(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getStartDate())
-                .le(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getEndDate())
-                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
-                .eq("is_deleted", IsDeleteEnum.N.getKey()))
-                .stream().map(MedicalRecord::getRecId).collect(Collectors.toList());
-
-        //==已丢失 外部|内部 病历、文书、病案首页 id集合
-        //外部
-        List<String> outLossCodes = null;
-        List<String> outLossHomepages = null;
-        List<String> outLossRecs = null;
-        //内部
-        List<String> inLossCodes = null;
-        List<String> inLossHomepages = null;
-        List<String> inLossRecs = null;
-        if (ListUtil.isNotEmpty(lossResultMap.get(LossTypeEnum.REC_LOSS.getKey()))) {
-            Map<String, List<BlocklossResult>> lossWayRecMap = EntityUtil.makeEntityListMap(lossResultMap.get(LossTypeEnum.REC_LOSS.getKey()), "lossWay");
-            if (ListUtil.isNotEmpty(lossWayRecMap.get(LossWayEnum.OUT_LOSS))) {
-                outLossRecs = lossWayRecMap.get(LossWayEnum.OUT_LOSS).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
-            }
-            if (ListUtil.isNotEmpty(lossWayRecMap.get(LossWayEnum.IN_LOSS))) {
-                inLossRecs = lossWayRecMap.get(LossWayEnum.IN_LOSS).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
-            }
+        List<String> dataBaseRecIds = new ArrayList<>();
+        if (ListUtil.isNotEmpty(dataBaseBehospitalCodes)) {
+            dataBaseHomePageIds = homePageFacade.list(new QueryWrapper<HomePage>()
+                    .select("home_page_id")
+                    .in("behospital_code", dataBaseBehospitalCodes)
+                    .eq(hospitalId != null, "hospital_id", hospitalId)
+                    .eq("is_deleted", IsDeleteEnum.N.getKey()))
+                    .stream().map(HomePage::getHomePageId).collect(Collectors.toList());
+            dataBaseRecIds = medicalRecordFacade.list(new QueryWrapper<MedicalRecord>()
+                    .select("rec_id")
+                    .in("behospital_code", dataBaseBehospitalCodes)
+                    .eq(hospitalId != null, "hospital_id", hospitalId)
+                    .eq("is_deleted", IsDeleteEnum.N.getKey()))
+                    .stream().map(MedicalRecord::getRecId).collect(Collectors.toList());
         }
-        if (ListUtil.isNotEmpty(lossResultMap.get(LossTypeEnum.HOMEPAGE_LOSS.getKey()))) {
-            Map<String, List<BlocklossResult>> lossWayHomePageMap = EntityUtil.makeEntityListMap(lossResultMap.get(LossTypeEnum.HOMEPAGE_LOSS.getKey()), "lossWay");
-            if (ListUtil.isNotEmpty(lossWayHomePageMap.get(LossWayEnum.OUT_LOSS))) {
-                outLossHomepages = lossWayHomePageMap.get(LossWayEnum.OUT_LOSS).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
-            }
-            if (ListUtil.isNotEmpty(lossWayHomePageMap.get(LossWayEnum.IN_LOSS))) {
-                inLossHomepages = lossWayHomePageMap.get(LossWayEnum.IN_LOSS).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
-            }
-        }
-        if (ListUtil.isNotEmpty(lossResultMap.get(LossTypeEnum.CODE_LOSS.getKey()))) {
-            Map<String, List<BlocklossResult>> lossWayCodeMap = EntityUtil.makeEntityListMap(lossResultMap.get(LossTypeEnum.CODE_LOSS.getKey()), "lossWay");
-            if (ListUtil.isNotEmpty(lossWayCodeMap.get(LossWayEnum.OUT_LOSS))) {
-                outLossCodes = lossWayCodeMap.get(LossWayEnum.OUT_LOSS).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
-            }
-            if (ListUtil.isNotEmpty(lossWayCodeMap.get(LossWayEnum.IN_LOSS))) {
-                inLossCodes = lossWayCodeMap.get(LossWayEnum.IN_LOSS).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
-            }
-        }
-
 
         //=====2.2数据对比
         //his与log日志做对比
@@ -207,7 +263,7 @@ public class BlockLossManagementFacade {
                     hisMedicalRecordDTO.getHisRecs().stream().forEach(hisRecDTO -> {
                         GetOperationLogDTO medicalRecord = new GetOperationLogDTO();
                         medicalRecord.setRecId(hisRecDTO.getRecId());
-                        medicalRecord.setRecId(hisRecDTO.getRecTitle());
+                        medicalRecord.setRecTitle(hisRecDTO.getRecTitle());
                         medicalRecord.setBehospitalCode(hisMedicalRecordDTO.getBehospitalCode());
                         recs.add(medicalRecord);
                     });
@@ -217,11 +273,11 @@ public class BlockLossManagementFacade {
             //外部丢失数据集合
             List<BlocklossResult> outInserts = new ArrayList<>();
             //文书数据对比
-            compareHisWithLog(recs, recLogs, "0", outInserts, outLossRecs);
+            compareHisWithLog(recs, recLogs, LossTypeEnum.REC_LOSS.getKey(), outAuditedResultRecIds, outInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
             //病案首页数据对比
-            compareHisWithLog(medicalRecords, homePageLogs, "1", outInserts, outLossHomepages);
+            compareHisWithLog(medicalRecords, homePageLogs, LossTypeEnum.HOMEPAGE_LOSS.getKey(), outAuditedResultHomePages, outInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
             //病历数据对比
-            compareHisWithLog(medicalRecords, behospitalCodeLogs, "2", outInserts, outLossCodes);
+            compareHisWithLog(medicalRecords, behospitalCodeLogs, LossTypeEnum.CODE_LOSS.getKey(), outAuditedResultCodes, outInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
 
             flag = blocklossResultServiceImpl.saveBatch(outInserts);
         }
@@ -230,87 +286,177 @@ public class BlockLossManagementFacade {
         //内部丢失数据集合
         List<BlocklossResult> inInserts = new ArrayList<>();
         if (ListUtil.isNotEmpty(recLogs)) {
-            compareLogWithLocal(recLogs, dataBaseRecIds, "0", inInserts, inLossRecs);
+            compareLogWithLocal(recLogs, dataBaseRecIds, LossTypeEnum.REC_LOSS.getKey(), inAuditedResultRecIds, inInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
         }
         if (ListUtil.isNotEmpty(homePageLogs)) {
-            compareLogWithLocal(homePageLogs, dataBaseHomePageIds, "1", inInserts, inLossHomepages);
+            compareLogWithLocal(homePageLogs, dataBaseHomePageIds, LossTypeEnum.HOMEPAGE_LOSS.getKey(), inAuditedResultHomePages, inInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
         }
         if (ListUtil.isNotEmpty(behospitalCodeLogs)) {
-            compareLogWithLocal(behospitalCodeLogs, dataBaseBehospitalCodes, "2", inInserts, inLossCodes);
+            compareLogWithLocal(behospitalCodeLogs, dataBaseBehospitalCodes, LossTypeEnum.CODE_LOSS.getKey(), inAuditedResultCodes, inInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
+        }
+        //更新核查数据的时间
+        if (ListUtil.isNotEmpty(dataUps)) {
+            Long finalPrincipleId = principleId;
+            Long finalHospitalId = hospitalId;
+            dataUps.stream().forEach(data -> {
+                UpdateWrapper<BlocklossResult> updateWrapper = new UpdateWrapper<>();
+                updateWrapper.set("gmt_modified", DateUtil.now())
+                        .set("modifier", finalPrincipleId != null ? finalPrincipleId + "" : "0")
+                        .notIn("is_audited", LossIsAuditedEnum.NOT_AUDITED.getKey())
+                        .eq(StringUtil.isNotBlank(data.getRecId()), "rec_id", data.getRecId())
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .eq("behospital_code", data.getBehospitalCode())
+                        .ge(dataCompareVO.getStartDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "behospital_date", dataCompareVO.getStartDate())
+                        .le(dataCompareVO.getEndDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "behospital_date", dataCompareVO.getEndDate())
+                        .eq(finalHospitalId != null, "hospital_id", finalHospitalId);
+                //更新病案首页或文书
+                if (StringUtil.isNotBlank(data.getRecId())) {
+                    updateWrapper.notIn("loss_type", LossTypeEnum.CODE_LOSS.getKey());
+                } else {//更新病历
+                    updateWrapper.eq("loss_type", LossTypeEnum.CODE_LOSS.getKey());
+                }
+                blocklossResultFacade.update(updateWrapper);
+            });
         }
+
         if (ListUtil.isNotEmpty(inInserts)) {
             flag = blocklossResultServiceImpl.saveBatch(inInserts);
         }
+
+        //====3.获取已丢失状态记录,去数据库中对比判断是否补录
+        List<BlocklossResult> lossResults = blocklossResultFacade.list(new QueryWrapper<BlocklossResult>()
+                .select("id,behospital_code,rec_id,loss_type,loss_way")
+                .eq(hospitalId != null, "hospital_id", hospitalId)
+                .eq("status", LossStatusEnum.IS_LOSS.getKey())
+                .eq("is_deleted", IsDeleteEnum.N.getKey()));
+        if (ListUtil.isNotEmpty(lossResults)) {
+            Map<String, List<BlocklossResult>> lossResultMap = EntityUtil.makeEntityListMap(lossResults, "lossType");
+            //更新以缺失数据的状态
+            flag = upBlockLossStatus(lossResultMap, hospitalId, principleId);
+        }
+
+
         return flag;
     }
 
+    /**
+     * 数据去重
+     *
+     * @param homePageLogs
+     * @param key
+     * @Return java.util.List<com.lantone.common.dto.GetOperationLogDTO>
+     */
+    private List<GetOperationLogDTO> removeRepeat(List<GetOperationLogDTO> homePageLogs, String key) {
+        Map<String, GetOperationLogDTO> tempMap = EntityUtil.makeEntityMap(homePageLogs, key);
+        List<GetOperationLogDTO> out = new ArrayList<>();
+        tempMap.keySet().stream().forEach(id -> {
+            out.add(tempMap.get(id));
+        });
+        return out;
+    }
+
     /**
      * 日志与入库数据对比
      *
-     * @param logs          日志记录
-     * @param dataBases     入库数据
-     * @param type          对比类型:0:文书丢失 1:病案首页丢失 2:患者信息丢失
-     * @param inInserts     内部丢失插入集合
-     * @param havingLossIds 已经插入的id集合
+     * @param logs                日志记录
+     * @param dataBases           入库数据
+     * @param type                对比类型:0:文书丢失 1:病案首页丢失 2:患者信息丢失
+     * @param auditedResultDatas  已核查数据
+     * @param inInserts           内部丢失插入集合
+     * @param hisMedicalRecordMap his病历数据map(key-住院序号:value-人的his数据)
+     * @param hospitalId          医院id
+     * @param principleId         操作人id
+     * @param dataUps             要更新的已核查的集合
      * @Return void
      */
     private void compareLogWithLocal(List<GetOperationLogDTO> logs, List<String> dataBases, String type,
-                                     List<BlocklossResult> inInserts, List<String> havingLossIds) {
+                                     List<String> auditedResultDatas, List<BlocklossResult> inInserts,
+                                     Map<String, HisMedicalRecordDTO> hisMedicalRecordMap, Long hospitalId, Long principleId, List<GetOperationLogDTO> dataUps) {
         switch (type) {
             case "0":
                 //文书丢失
                 logs.stream().forEach(rec -> {
                     //存在记录但是没有入库
                     if (!dataBases.contains(rec.getRecId())) {
-                        if (havingLossIds.contains(rec.getRecId())) {
+                        if (auditedResultDatas == null || !auditedResultDatas.contains(rec.getRecId())) {
                             BlocklossResult blocklossResult = new BlocklossResult();
                             blocklossResult.setBehospitalCode(rec.getBehospitalCode());
                             blocklossResult.setRecId(rec.getRecId());
                             blocklossResult.setRecTitle(rec.getRecTitle());
                             blocklossResult.setLossWay(LossWayEnum.IN_LOSS.getKey());
                             blocklossResult.setLossType(LossTypeEnum.REC_LOSS.getKey());
+                            if (hisMedicalRecordMap.get(rec.getBehospitalCode()) != null) {
+                                blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(rec.getBehospitalCode()).getBehospitalDate());
+                            }
                             //拼装病历数据块丢失明细其他信息
-                            assembleOtherBlocklossResult(blocklossResult);
+                            assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
                             inInserts.add(blocklossResult);
+                        } else {
+                            //更新人工操作记录(核查的)的时间
+                            GetOperationLogDTO temp = new GetOperationLogDTO();
+                            temp.setBehospitalCode(rec.getBehospitalCode());
+                            temp.setRecId(rec.getRecId());
+                            dataUps.add(temp);
                         }
+
                     }
                 });
                 //判断只插入文书id的情况
-                List<String> havingRecIds = medicalRecordContentFacade.list(new QueryWrapper<MedicalRecordContent>()
-                        .select("rec_id")
-                        .in("rec_id", dataBases)).stream().map(MedicalRecordContent::getRecId).collect(Collectors.toList());
-                List<String> tempList = new ArrayList<>(dataBases);
-                tempList.removeAll(havingRecIds);
-                Map<String, GetOperationLogDTO> recMap = EntityUtil.makeEntityMap(logs, "recId");
-                tempList.stream().forEach(recId -> {
-                    BlocklossResult blocklossResult = new BlocklossResult();
-                    blocklossResult.setBehospitalCode(recMap.get(recId).getBehospitalCode());
-                    blocklossResult.setRecId(recId);
-                    blocklossResult.setRecTitle(recMap.get(recId).getRecTitle());
-                    blocklossResult.setLossWay(LossWayEnum.IN_LOSS.getKey());
-                    blocklossResult.setLossType(LossTypeEnum.REC_LOSS.getKey());
-                    blocklossResult.setLossCause("文书id插入成功,文书内容没有插入");
-                    //拼装病历数据块丢失明细其他信息
-                    assembleOtherBlocklossResult(blocklossResult);
-                    inInserts.add(blocklossResult);
-                });
+                //获取插入的文书
+                //                if (ListUtil.isNotEmpty(dataBases)) {
+                //                    List<String> havingRecIds = medicalRecordContentFacade.list(new QueryWrapper<MedicalRecordContent>()
+                //                            .select("rec_id")
+                //                            .in("rec_id", dataBases)).stream().map(MedicalRecordContent::getRecId).collect(Collectors.toList());
+                //                    List<String> tempList = new ArrayList<>(dataBases);
+                //                    //移除查出来有内容的文书
+                //                    tempList.removeAll(havingRecIds);
+                //                    Map<String, GetOperationLogDTO> recMap = EntityUtil.makeEntityMap(logs, "recId");
+                //                    //有文书id无内容文书
+                //                    tempList.stream().forEach(recId -> {
+                //                        //没有被记录过
+                //                        BlocklossResult blocklossResult = new BlocklossResult();
+                //                        blocklossResult.setBehospitalCode(recMap.get(recId).getBehospitalCode());
+                //                        blocklossResult.setRecId(recId);
+                //                        blocklossResult.setRecTitle(recMap.get(recId).getRecTitle());
+                //                        blocklossResult.setLossWay(LossWayEnum.IN_LOSS.getKey());
+                //                        blocklossResult.setLossType(LossTypeEnum.REC_LOSS.getKey());
+                //                        blocklossResult.setLossCause("文书id插入成功,文书内容没有插入");
+                //                        if (hisMedicalRecordMap.get(recMap.get(recId)) != null) {
+                //                            blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(recMap.get(recId).getBehospitalCode()).getBehospitalDate());
+                //                        }
+                //                        //拼装病历数据块丢失明细其他信息
+                //                        assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
+                //                        inInserts.add(blocklossResult);
+                //                    });
+                //                }
+
                 break;
             case "1":
                 //病案首页丢失
                 logs.stream().forEach(homePages -> {
                     //存在记录但是没有入库
-                    if (!dataBases.contains(homePages.getRecId())) {
-                        if (havingLossIds.contains(homePages.getRecId())) {
+                    if (!dataBases.contains(homePages.getHomePageId())) {
+                        if (auditedResultDatas == null || !auditedResultDatas.contains(homePages.getHomePageId())) {
                             BlocklossResult blocklossResult = new BlocklossResult();
                             blocklossResult.setBehospitalCode(homePages.getBehospitalCode());
                             blocklossResult.setRecId(homePages.getHomePageId());
                             blocklossResult.setRecTitle("病案首页丢失");
                             blocklossResult.setLossWay(LossWayEnum.IN_LOSS.getKey());
                             blocklossResult.setLossType(LossTypeEnum.HOMEPAGE_LOSS.getKey());
+                            if (hisMedicalRecordMap.get(homePages.getBehospitalCode()) != null) {
+                                blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(homePages.getBehospitalCode()).getBehospitalDate());
+                            }
                             //拼装病历数据块丢失明细其他信息
-                            assembleOtherBlocklossResult(blocklossResult);
+                            assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
                             inInserts.add(blocklossResult);
+                        } else {
+                            //更新人工操作记录(核查的)的时间
+                            GetOperationLogDTO temp = new GetOperationLogDTO();
+                            temp.setBehospitalCode(homePages.getBehospitalCode());
+                            temp.setHomePageId(homePages.getHomePageId());
+                            dataUps.add(temp);
                         }
+
                     }
                 });
                 break;
@@ -319,15 +465,24 @@ public class BlockLossManagementFacade {
                 logs.stream().forEach(beHehospitalInfo -> {
                     //存在记录但是没有入库
                     if (!dataBases.contains(beHehospitalInfo.getBehospitalCode())) {
-                        if (havingLossIds.contains(beHehospitalInfo.getBehospitalCode())) {
+                        if (auditedResultDatas == null || !auditedResultDatas.contains(beHehospitalInfo.getBehospitalCode())) {
                             BlocklossResult blocklossResult = new BlocklossResult();
                             blocklossResult.setBehospitalCode(beHehospitalInfo.getBehospitalCode());
                             blocklossResult.setLossWay(LossWayEnum.IN_LOSS.getKey());
                             blocklossResult.setLossType(LossTypeEnum.CODE_LOSS.getKey());
+                            if (hisMedicalRecordMap.get(beHehospitalInfo.getBehospitalCode()) != null) {
+                                blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(beHehospitalInfo.getBehospitalCode()).getBehospitalDate());
+                            }
                             //拼装病历数据块丢失明细其他信息
-                            assembleOtherBlocklossResult(blocklossResult);
+                            assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
                             inInserts.add(blocklossResult);
+                        } else {
+                            //更新人工操作记录(核查的)的时间
+                            GetOperationLogDTO temp = new GetOperationLogDTO();
+                            temp.setBehospitalCode(beHehospitalInfo.getBehospitalCode());
+                            dataUps.add(temp);
                         }
+
                     }
                 });
                 break;
@@ -343,7 +498,22 @@ public class BlockLossManagementFacade {
      * @param lossResultMap
      * @Return void
      */
-    private Boolean upBlockLossStatus(Map<String, List<BlocklossResult>> lossResultMap) {
+    private Boolean upBlockLossStatus(Map<String, List<BlocklossResult>> lossResultMap, Long hospitalId, Long principleId) {
+        //====获取所有丢失记录code,在入院记录表没有入院登记则不更新它文书和病案首页状态为已恢复
+        List<String> lossCodes = blocklossResultFacade.list(new QueryWrapper<BlocklossResult>()
+                .select("DISTINCT behospital_code")
+                .eq(hospitalId != null, "hospital_id", hospitalId)
+                .eq("status", LossStatusEnum.IS_LOSS.getKey())
+                .eq("is_deleted", IsDeleteEnum.N.getKey())).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList());
+        //查询已恢复的
+        List<String> medCode = behospitalInfoFacade.list(new QueryWrapper<BehospitalInfo>()
+                .select("DISTINCT behospital_code")
+                .in("behospital_code", lossCodes)
+                .eq(hospitalId != null, "hospital_id", hospitalId)
+                .eq("is_deleted", IsDeleteEnum.N.getKey())).stream().map(BehospitalInfo::getBehospitalCode).collect(Collectors.toList());
+        //去除已恢复得到已丢失的
+        lossCodes.removeAll(medCode);
+
         AtomicReference<Boolean> flag = new AtomicReference<>(false);
         lossResultMap.keySet().stream().forEach(lossType -> {
             //0:文书丢失 1:病案首页丢失 2:患者信息丢失
@@ -351,9 +521,10 @@ public class BlockLossManagementFacade {
                 case "0":
                     //文书丢失
                     List<String> redIds = medicalRecordFacade.list(new QueryWrapper<MedicalRecord>()
-                            .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                            .eq("hospital_id", hospitalId != null ? hospitalId : 0)
                             .in("rec_id", lossResultMap.get(lossType).stream().map(BlocklossResult::getRecId).collect(Collectors.toList()))
                             .in("behospital_code", lossResultMap.get(lossType).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList()))
+                            .notIn(ListUtil.isNotEmpty(lossCodes), "behospital_code", lossCodes)//如果说入院记录丢失了,文书的状态还是已丢失不会更新
                             .eq("is_deleted", IsDeleteEnum.N.getKey()))
                             .stream().map(MedicalRecord::getRecId).collect(Collectors.toList());
                     //更新状态-已恢复
@@ -362,31 +533,33 @@ public class BlockLossManagementFacade {
                                 .set("solve_time", DateUtil.now())
                                 .set("gmt_modified", DateUtil.now())
                                 .set("status", LossStatusEnum.NOT_LOSS.getKey())
-                                .set("modifier", SysUserUtils.getCurrentPrincipleId())
+                                .set("modifier", principleId != null ? principleId + "" : "0")
+                                .eq("status", LossStatusEnum.IS_LOSS.getKey())
                                 .eq("loss_type", lossType)
                                 .eq("is_deleted", IsDeleteEnum.N.getKey())
-                                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                                .eq("hospital_id", hospitalId != null ? hospitalId : 0)
                                 .in("rec_id", redIds)));
                     }
                     break;
                 case "1":
                     //病案首页丢失
                     List<String> homePages = homePageFacade.list(new QueryWrapper<HomePage>()
-                            .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                            .eq("hospital_id", hospitalId != null ? hospitalId : 0)
                             .in("home_page_id", lossResultMap.get(lossType).stream().map(BlocklossResult::getRecId).collect(Collectors.toList()))
                             .in("behospital_code", lossResultMap.get(lossType).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList()))
+                            .notIn(ListUtil.isNotEmpty(lossCodes), "behospital_code", lossCodes)//如果说入院记录丢失了,病案首页的状态还是已丢失不会更新
                             .eq("is_deleted", IsDeleteEnum.N.getKey()))
                             .stream().map(HomePage::getHomePageId).collect(Collectors.toList());
-
                     //更新状态-已恢复
                     if (ListUtil.isNotEmpty(homePages)) {
                         flag.set(blocklossResultFacade.update(new UpdateWrapper<BlocklossResult>()
                                 .set("solve_time", DateUtil.now())
                                 .set("gmt_modified", DateUtil.now())
                                 .set("status", LossStatusEnum.NOT_LOSS.getKey())
-                                .set("modifier", SysUserUtils.getCurrentPrincipleId())
+                                .set("modifier", principleId != null ? principleId + "" : "0")
+                                .eq("status", LossStatusEnum.IS_LOSS.getKey())
                                 .eq("loss_type", lossType)
-                                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                                .eq("hospital_id", hospitalId != null ? hospitalId : 0)
                                 .in("rec_id", homePages)
                                 .eq("is_deleted", IsDeleteEnum.N.getKey())));
                     }
@@ -394,7 +567,7 @@ public class BlockLossManagementFacade {
                 case "2":
                     //患者信息丢失
                     List<String> behospitalCodes = behospitalInfoFacade.list(new QueryWrapper<BehospitalInfo>()
-                            .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                            .eq("hospital_id", hospitalId != null ? hospitalId : 0)
                             .in("behospital_code", lossResultMap.get(lossType).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList()))
                             .eq("is_deleted", IsDeleteEnum.N.getKey()))
                             .stream().map(BehospitalInfo::getBehospitalCode).collect(Collectors.toList());
@@ -404,10 +577,11 @@ public class BlockLossManagementFacade {
                                 .set("solve_time", DateUtil.now())
                                 .set("gmt_modified", DateUtil.now())
                                 .set("status", LossStatusEnum.NOT_LOSS.getKey())
-                                .set("modifier", SysUserUtils.getCurrentPrincipleId())
+                                .set("modifier", principleId != null ? principleId + "" : "0")
+                                .eq("status", LossStatusEnum.IS_LOSS.getKey())
                                 .eq("loss_type", lossType)
                                 .eq("is_deleted", IsDeleteEnum.N.getKey())
-                                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                                .eq("hospital_id", hospitalId != null ? hospitalId : 0)
                                 .in("behospital_code", behospitalCodes)));
                     }
                     break;
@@ -419,15 +593,25 @@ public class BlockLossManagementFacade {
     }
 
     /**
-     * @param medicalRecords his数据
-     * @param logs           日志数据
-     * @param type           对比类型:0:文书丢失 1:病案首页丢失 2:患者信息丢失
-     * @param outInserts     外部丢失插入集合
-     * @param havingLossIds  已经插入的id集合
+     * @param medicalRecords      his数据
+     * @param logs                日志数据
+     * @param type                对比类型:0:文书丢失 1:病案首页丢失 2:患者信息丢失
+     * @param auditedResultDatas  已核查数据
+     * @param outInserts          外部丢失插入集合
+     * @param hisMedicalRecordMap his病历数据map(key-住院序号:value-人的his数据)
+     * @param hospitalId          医院id
+     * @param principleId         操作人id
+     * @param dataUps             要更新的已核查的集合
      * @Return void
      */
     private void compareHisWithLog(List<GetOperationLogDTO> medicalRecords, List<GetOperationLogDTO> logs,
-                                   String type, List<BlocklossResult> outInserts, List<String> havingLossIds) {
+                                   String type, List<String> auditedResultDatas, List<BlocklossResult> outInserts,
+                                   Map<String, HisMedicalRecordDTO> hisMedicalRecordMap,
+                                   Long hospitalId, Long principleId, List<GetOperationLogDTO> dataUps) {
+        //his数据为空直接返回
+        if (ListUtil.isEmpty(medicalRecords)) {
+            return;
+        }
         switch (type) {
             case "0":
                 List<String> recLogs = logs.stream().map(GetOperationLogDTO::getRecId).collect(Collectors.toList());
@@ -435,18 +619,28 @@ public class BlockLossManagementFacade {
                     //文书不存在操作记录
                     if (StringUtil.isNotEmpty(medicalRecord.getRecId())) {
                         if (!recLogs.contains(medicalRecord.getRecId())) {
-                            //该记录没有插入
-                            if (ListUtil.isNotEmpty(havingLossIds) && !havingLossIds.contains(medicalRecord.getRecId())) {
+                            if (auditedResultDatas == null || !auditedResultDatas.contains(medicalRecord.getRecId())) {
+                                //该记录没有插入
                                 BlocklossResult blocklossResult = new BlocklossResult();
                                 blocklossResult.setBehospitalCode(medicalRecord.getBehospitalCode());
                                 blocklossResult.setRecId(medicalRecord.getRecId());
                                 blocklossResult.setRecTitle(medicalRecord.getRecTitle());
                                 blocklossResult.setLossWay(LossWayEnum.OUT_LOSS.getKey());
                                 blocklossResult.setLossType(LossTypeEnum.REC_LOSS.getKey());
+                                if (hisMedicalRecordMap.get(medicalRecord.getBehospitalCode()).getBehospitalDate() != null) {
+                                    blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(medicalRecord.getBehospitalCode()).getBehospitalDate());
+                                }
                                 //拼装病历数据块丢失明细其他信息
-                                assembleOtherBlocklossResult(blocklossResult);
+                                assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
                                 outInserts.add(blocklossResult);
+                            } else {
+                                //更新人工操作记录(核查的)的时间
+                                GetOperationLogDTO temp = new GetOperationLogDTO();
+                                temp.setBehospitalCode(medicalRecord.getBehospitalCode());
+                                temp.setRecId(medicalRecord.getRecId());
+                                dataUps.add(temp);
                             }
+
                         }
                     }
                 });
@@ -456,16 +650,25 @@ public class BlockLossManagementFacade {
                 medicalRecords.stream().forEach(medicalRecord -> {
                     //病案首页不存在操作记录
                     if (StringUtil.isNotEmpty(medicalRecord.getHomePageId()) && !homepageLogs.contains(medicalRecord.getHomePageId())) {
-                        if (ListUtil.isNotEmpty(havingLossIds) && !havingLossIds.contains(medicalRecord.getHomePageId())) {
+                        if (auditedResultDatas == null || !auditedResultDatas.contains(medicalRecord.getHomePageId())) {
                             BlocklossResult blocklossResult = new BlocklossResult();
                             blocklossResult.setBehospitalCode(medicalRecord.getBehospitalCode());
                             blocklossResult.setRecId(medicalRecord.getHomePageId());
                             blocklossResult.setRecTitle("病案首页丢失");
                             blocklossResult.setLossWay(LossWayEnum.OUT_LOSS.getKey());
                             blocklossResult.setLossType(LossTypeEnum.HOMEPAGE_LOSS.getKey());
+                            if (hisMedicalRecordMap.get(medicalRecord.getBehospitalCode()).getBehospitalDate() != null) {
+                                blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(medicalRecord.getBehospitalCode()).getBehospitalDate());
+                            }
                             //拼装病历数据块丢失明细其他信息
-                            assembleOtherBlocklossResult(blocklossResult);
+                            assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
                             outInserts.add(blocklossResult);
+                        } else {
+                            //更新人工操作记录(核查的)的时间
+                            GetOperationLogDTO temp = new GetOperationLogDTO();
+                            temp.setBehospitalCode(medicalRecord.getBehospitalCode());
+                            temp.setRecId(medicalRecord.getHomePageId());
+                            dataUps.add(temp);
                         }
                     }
                 });
@@ -475,14 +678,22 @@ public class BlockLossManagementFacade {
                 medicalRecords.stream().forEach(medicalRecord -> {
                     //病历数据不存在操作记录
                     if (!behospitalCodeLogs.contains(medicalRecord.getBehospitalCode())) {
-                        if (ListUtil.isNotEmpty(havingLossIds) && !havingLossIds.contains(medicalRecord.getBehospitalCode())) {
+                        if (auditedResultDatas == null || !auditedResultDatas.contains(medicalRecord.getBehospitalCode())) {
                             BlocklossResult blocklossResult = new BlocklossResult();
                             blocklossResult.setBehospitalCode(medicalRecord.getBehospitalCode());
                             blocklossResult.setLossWay(LossWayEnum.OUT_LOSS.getKey());
                             blocklossResult.setLossType(LossTypeEnum.CODE_LOSS.getKey());
+                            if (hisMedicalRecordMap.get(medicalRecord.getBehospitalCode()).getBehospitalDate() != null) {
+                                blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(medicalRecord.getBehospitalCode()).getBehospitalDate());
+                            }
                             //拼装病历数据块丢失明细其他信息
-                            assembleOtherBlocklossResult(blocklossResult);
+                            assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
                             outInserts.add(blocklossResult);
+                        } else {
+                            //更新人工操作记录(核查的)的时间
+                            GetOperationLogDTO temp = new GetOperationLogDTO();
+                            temp.setBehospitalCode(medicalRecord.getBehospitalCode());
+                            dataUps.add(temp);
                         }
                     }
                 });
@@ -496,13 +707,15 @@ public class BlockLossManagementFacade {
      * 拼装病历数据块丢失明细其他信息
      *
      * @param blocklossResult
+     * @param hospitalId
+     * @param principleId
      * @Return void
      */
-    private void assembleOtherBlocklossResult(BlocklossResult blocklossResult) {
+    private void assembleOtherBlocklossResult(BlocklossResult blocklossResult, Long hospitalId, Long principleId) {
         blocklossResult.setStatus(LossStatusEnum.IS_LOSS.getKey());
-        blocklossResult.setHospitalId(SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0);
+        blocklossResult.setHospitalId(hospitalId != null ? hospitalId : 0);
         blocklossResult.setGmtCreate(DateUtil.now());
-        blocklossResult.setCreator(SysUserUtils.getCurrentPrincipleId() != null ? SysUserUtils.getCurrentPrincipleId() + "" : "0");
+        blocklossResult.setCreator(principleId != null ? principleId + "" : "0");
         blocklossResult.setGmtModified(DateUtil.now());
     }
 
@@ -524,9 +737,10 @@ public class BlockLossManagementFacade {
      * @Return java.util.List<com.lantone.daqe.dto.HisMedicalRecordDTO>
      */
     private List<HisMedicalRecordDTO> getHisMedicalRecords(DataCompareVO dataCompareVO) {
+        //技术服务部接口 /balance/data/getDataCount
+        //        return hisDataService.getDataCount(dataCompareVO).getData();
         //###模拟
-
-        return new ArrayList<>();
+        return hisDataManagementFacade.getHisMedicalRecords(dataCompareVO);
     }
 
     /**
@@ -536,37 +750,60 @@ public class BlockLossManagementFacade {
      * @Return com.lantone.daqe.dto.BlockLossTypeGatherDTO
      */
     public BlockLossTypeGatherDTO blockLossTypeGather(BlockLossTypeGatherVO blockLossTypeGatherVO) {
-        blockLossTypeGatherVO.setOperationUrls(Lists.newArrayList("save/saveBehospitalCode",
-                "save/saveHomePages",
-                "save/saveRecs"));
+        blockLossTypeGatherVO.setOperationUrls(Lists.newArrayList(DataSaveUrlEnum.BEHOSPITAL_INFO.getKey(),
+                DataSaveUrlEnum.HOME_PAGE.getKey(),
+                DataSaveUrlEnum.MEDICAL_RECORD.getKey()));
+
 
         BlockLossTypeGatherDTO blockLossTypeGatherDTO = new BlockLossTypeGatherDTO();
+        //获取his数据
+        //        DataCompareVO dataCompareVO = new DataCompareVO();
+        //        dataCompareVO.setStartDate(blockLossTypeGatherVO.getStartDate());
+        //        dataCompareVO.setEndDate(blockLossTypeGatherVO.getEndDate());
+        //        List<HisMedicalRecordDTO> hisMedicalRecords = getHisMedicalRecords(dataCompareVO);
+        //        blockLossTypeGatherDTO.setHisNum(getHisMedicalRecordsCount(hisMedicalRecords));
+
+
+        //获取his数据
+        blockLossTypeGatherDTO.setHisNum(getHisDataCount(blockLossTypeGatherVO));
+
         //获取该时间段的日志数量
         Integer logNum = operationLogService.getOperationLogNum(blockLossTypeGatherVO).getData();
         blockLossTypeGatherDTO.setLogNum(logNum);
+
         //获取该时间段的实际数量
-        Integer codeNum = behospitalInfoFacade.count(new QueryWrapper<BehospitalInfo>()
-                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
-                .ge(blockLossTypeGatherVO.getStartDate() != null, "gmt_create", blockLossTypeGatherVO.getStartDate())
-                .le(blockLossTypeGatherVO.getStartDate() != null, "gmt_create", blockLossTypeGatherVO.getEndDate()));
-        Integer homePageNum = homePageFacade.count(new QueryWrapper<HomePage>()
-                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
-                .ge(blockLossTypeGatherVO.getStartDate() != null, "gmt_create", blockLossTypeGatherVO.getStartDate())
-                .le(blockLossTypeGatherVO.getStartDate() != null, "gmt_create", blockLossTypeGatherVO.getEndDate()));
-        Integer recNum = medicalRecordFacade.count(new QueryWrapper<MedicalRecord>()
-                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
-                .ge(blockLossTypeGatherVO.getStartDate() != null, "gmt_create", blockLossTypeGatherVO.getStartDate())
-                .le(blockLossTypeGatherVO.getStartDate() != null, "gmt_create", blockLossTypeGatherVO.getEndDate()));
+        List<String> codes = behospitalInfoFacade.list(new QueryWrapper<BehospitalInfo>()
+                .select("behospital_code")
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
+                .ge(blockLossTypeGatherVO.getStartDate() != null, "behospital_date", blockLossTypeGatherVO.getStartDate())
+                .le(blockLossTypeGatherVO.getEndDate() != null, "behospital_date", blockLossTypeGatherVO.getEndDate()))
+                .stream().map(BehospitalInfo::getBehospitalCode).collect(Collectors.toList());
+
+        Integer codeNum = codes.size();
+        Integer homePageNum = 0;
+        Integer recNum = 0;
+        if (ListUtil.isNotEmpty(codes)) {
+            homePageNum = homePageFacade.count(new QueryWrapper<HomePage>()
+                    .eq("hospital_id", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("behospital_code", codes));
+            recNum = medicalRecordFacade.count(new QueryWrapper<MedicalRecord>()
+                    .eq("hospital_id", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("behospital_code", codes));
+        }
+
         blockLossTypeGatherDTO.setRealNum(codeNum + homePageNum + recNum);
         //获取该时间段的丢失数量
         List<BlocklossResult> blocklossResults = blocklossResultFacade.list(new QueryWrapper<BlocklossResult>()
-                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                .eq("hospital_id", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
                 .eq("status", LossStatusEnum.IS_LOSS.getKey())
-                .ge(blockLossTypeGatherVO.getStartDate() != null, "gmt_create", blockLossTypeGatherVO.getStartDate())
-                .le(blockLossTypeGatherVO.getStartDate() != null, "gmt_create", blockLossTypeGatherVO.getEndDate()));
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .ge(blockLossTypeGatherVO.getStartDate() != null, "behospital_date", blockLossTypeGatherVO.getStartDate())
+                .le(blockLossTypeGatherVO.getEndDate() != null, "behospital_date", blockLossTypeGatherVO.getEndDate()));
         Integer allLossNum = blocklossResults.size();
         blockLossTypeGatherDTO.setAllLossNum(allLossNum);
-        blockLossTypeGatherDTO.setHisNum(logNum + allLossNum);
 
         Map<String, List<BlocklossResult>> lossWayMap = EntityUtil.makeEntityListMap(blocklossResults, "lossWay");
         //外部丢失
@@ -611,4 +848,30 @@ public class BlockLossManagementFacade {
         }
         return blockLossTypeGatherDTO;
     }
+
+    /**
+     * 获取his数据数量
+     *
+     * @param blockLossTypeGatherVO
+     * @Return java.lang.Integer
+     */
+    private Integer getHisDataCount(BlockLossTypeGatherVO blockLossTypeGatherVO) {
+        //获取his数量
+        //        return  hisDataService.getCount(blockLossTypeGatherVO).getData();
+        //模拟his
+        return hisDataManagementFacade.gethisDataCount(blockLossTypeGatherVO);
+    }
+
+
+    /**
+     * 数据补录
+     *
+     * @param dataRepariVO
+     * @Return boolean
+     */
+    public boolean dataRepari(DataRepariVO dataRepariVO) {
+        //调用数据补录服务
+
+        return hisDataManagementFacade.dataRepari(dataRepariVO);
+    }
 }

File diff suppressed because it is too large
+ 1165 - 739
daqe-center/src/main/java/com/lantone/daqe/facade/ColumnResultManagementFacade.java


+ 311 - 62
daqe-center/src/main/java/com/lantone/daqe/facade/ColumnVerifyManagementFacade.java

@@ -10,25 +10,37 @@ import com.lantone.common.util.ListUtil;
 import com.lantone.common.util.StringUtil;
 import com.lantone.common.util.SysUserUtils;
 import com.lantone.daqe.dto.GetByIdColumnVerifyDTO;
+import com.lantone.daqe.dto.GetColumnDTO;
 import com.lantone.daqe.dto.GetColumnInfoDTO;
 import com.lantone.daqe.dto.GetColumnNameDTO;
+import com.lantone.daqe.dto.GetColumnVerifyDTO;
 import com.lantone.daqe.dto.GetColumnVerifyPageDTO;
 import com.lantone.daqe.dto.GetRegularDTO;
 import com.lantone.daqe.dto.GetTableColumnNameDTO;
 import com.lantone.daqe.dto.GetTableNameDTO;
 import com.lantone.daqe.entity.ColumnInfo;
+import com.lantone.daqe.entity.ColumnResult;
 import com.lantone.daqe.entity.ColumnVerify;
 import com.lantone.daqe.entity.NonnullInfo;
+import com.lantone.daqe.entity.NonnullResult;
 import com.lantone.daqe.entity.RegularInfo;
 import com.lantone.daqe.entity.RegularMapping;
+import com.lantone.daqe.entity.RegularResult;
 import com.lantone.daqe.entity.StandardvalueInfo;
+import com.lantone.daqe.entity.StandardvalueResult;
+import com.lantone.daqe.enums.ColumnResultTypeEnum;
 import com.lantone.daqe.enums.ColumnVerifyTypeEnum;
 import com.lantone.daqe.facade.base.ColumnInfoFacade;
+import com.lantone.daqe.facade.base.ColumnResultFacade;
 import com.lantone.daqe.facade.base.ColumnVerifyFacade;
 import com.lantone.daqe.facade.base.NonnullInfoFacade;
+import com.lantone.daqe.facade.base.NonnullResultFacade;
 import com.lantone.daqe.facade.base.RegularInfoFacade;
 import com.lantone.daqe.facade.base.RegularMappingFacade;
+import com.lantone.daqe.facade.base.RegularResultFacade;
 import com.lantone.daqe.facade.base.StandardvalueInfoFacade;
+import com.lantone.daqe.facade.base.StandardvalueResultFacade;
+import com.lantone.daqe.vo.AddColumnVO;
 import com.lantone.daqe.vo.AddColumnVerifyVO;
 import com.lantone.daqe.vo.ColumnInfoVO;
 import com.lantone.daqe.vo.DelColumnVerifyVO;
@@ -36,6 +48,7 @@ import com.lantone.daqe.vo.GetByIdColumnVerifyVO;
 import com.lantone.daqe.vo.GetColumnNameVO;
 import com.lantone.daqe.vo.GetColumnVerifyPageVO;
 import com.lantone.daqe.vo.GetRegularVO;
+import com.lantone.daqe.vo.GetTableColumnNameVO;
 import com.lantone.daqe.vo.GetTableNameVO;
 import com.lantone.daqe.vo.UpdateColumnVerifyVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,7 +60,7 @@ import java.util.Date;
 import java.util.List;
 
 /**
- * @Description: 字段校验规则维护API
+ * @Description: 字段校验规则维护API-业务处理类
  * @author: zhanghang
  * @time: 2022/3/1 10:14
  */
@@ -67,6 +80,15 @@ public class ColumnVerifyManagementFacade {
     NonnullInfoFacade nonnullInfoFacade;
     @Autowired
     StandardvalueInfoFacade standardvalueInfoFacade;
+    @Autowired
+    ColumnResultFacade columnResultFacade;
+    @Autowired
+    StandardvalueResultFacade standardvalueResultFacade;
+    @Autowired
+    NonnullResultFacade nonnullResultFacade;
+    @Autowired
+    RegularResultFacade regularResultFacade;
+
 
     /**
      * 获取字段校验规则分页列表数据
@@ -76,7 +98,7 @@ public class ColumnVerifyManagementFacade {
      */
     public IPage<GetColumnVerifyPageDTO> getColumnVerifyPage(GetColumnVerifyPageVO getColumnVerifyPageVO) {
         Long currentHospitalId = SysUserUtils.getCurrentHospitalId();
-        getColumnVerifyPageVO.setHospitalId(SysUserUtils.getCurrentHospitalId()==null?4:SysUserUtils.getCurrentHospitalId());
+        getColumnVerifyPageVO.setHospitalId(currentHospitalId);
         return columnVerifyFacade.getBaseMapper().getColumnVerifyPage(getColumnVerifyPageVO);
     }
 
@@ -91,16 +113,43 @@ public class ColumnVerifyManagementFacade {
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("column_id", getByIdColumnVerifyVO.getColumnId())
         );
-        GetByIdColumnVerifyDTO byIdColumnVerify = columnVerifyFacade.getBaseMapper().getByIdColumnVerify(getByIdColumnVerifyVO);
-        if(mappingFacadeOne!=null) {
+        //获取规则总表数据
+        List<GetColumnVerifyDTO> columnVerifyDTOList = columnVerifyFacade.getBaseMapper().getByIdColumnVerify(getByIdColumnVerifyVO);
+        GetByIdColumnVerifyDTO getByIdColumnVerifyDTO = new GetByIdColumnVerifyDTO();
+        List<String> standardValueList = new ArrayList<>();
+        if (ListUtil.isEmpty(columnVerifyDTOList)) {
+            Asserts.fail("不存在该字段关联规则 !");
+        }
+        GetColumnVerifyDTO columnVerifyDTO = columnVerifyDTOList.get(0);
+        getByIdColumnVerifyDTO.setColumnId(columnVerifyDTO.getColumnId());
+        getByIdColumnVerifyDTO.setColumnCname(columnVerifyDTO.getColumnCname());
+        getByIdColumnVerifyDTO.setColumnEname(columnVerifyDTO.getColumnEname());
+        getByIdColumnVerifyDTO.setTableCname(columnVerifyDTO.getTableCname());
+        getByIdColumnVerifyDTO.setTableEname(columnVerifyDTO.getTableEname());
+        getByIdColumnVerifyDTO.setDescription(columnVerifyDTO.getDescription());
+        //处理关键值信息及非空信息
+        for (GetColumnVerifyDTO getColumnVerifyDTO : columnVerifyDTOList) {
+            if (StringUtil.isNotEmpty(getColumnVerifyDTO.getStandardValue())) {
+                standardValueList.add(getColumnVerifyDTO.getStandardValue());
+            }
+            if (StringUtil.isNotEmpty(getColumnVerifyDTO.getIsRequired())) {
+                getByIdColumnVerifyDTO.setIsRequired(getColumnVerifyDTO.getIsRequired());
+            }
+        }
+
+        if (mappingFacadeOne != null) {
             RegularInfo one = regularInfoFacade.getOne(new QueryWrapper<RegularInfo>()
                     .eq("is_deleted", IsDeleteEnum.N.getKey())
                     .eq("id", mappingFacadeOne.getRegularId())
             );
-            byIdColumnVerify.setRegularId(mappingFacadeOne.getRegularId());
-            byIdColumnVerify.setRegular(one.getName());
+            getByIdColumnVerifyDTO.setRegularId(mappingFacadeOne.getRegularId());
+            getByIdColumnVerifyDTO.setRegular(one.getName());
         }
-        return byIdColumnVerify;
+        String[] strings = new String[standardValueList.size()];
+        if (ListUtil.isNotEmpty(standardValueList)) {
+            getByIdColumnVerifyDTO.setStandardValueList(standardValueList.toArray(strings));
+        }
+        return getByIdColumnVerifyDTO;
     }
 
     /**
@@ -110,14 +159,7 @@ public class ColumnVerifyManagementFacade {
      * @return: 数据库表中列数据表名称信息
      */
     public List<GetTableNameDTO> getTableName(GetTableNameVO getTableNameVO) {
-        List<ColumnInfo> columnInfoList = columnInfoFacade.getBaseMapper().selectList(new QueryWrapper<ColumnInfo>()
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .like(StringUtil.isNotBlank(getTableNameVO.getTableCname()), "table_cname", getTableNameVO.getTableCname())
-                .like(StringUtil.isNotBlank(getTableNameVO.getTableEname()), "table_ename", getTableNameVO.getTableEname())
-                .groupBy("table_cname", "table_ename")
-        );
-        List<GetTableNameDTO> getColumnDTOList = BeanUtil.listCopyTo(columnInfoList, GetTableNameDTO.class);
-        return getColumnDTOList;
+        return columnInfoFacade.getBaseMapper().getVerifyTableName(getTableNameVO);
     }
 
     /**
@@ -129,6 +171,8 @@ public class ColumnVerifyManagementFacade {
     public List<GetColumnNameDTO> getColumnName(GetColumnNameVO getColumnNameVO) {
         List<ColumnInfo> columnInfoList = columnInfoFacade.getBaseMapper().selectList(new QueryWrapper<ColumnInfo>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq(StringUtil.isNotBlank(getColumnNameVO.getTableEname()), "table_ename", getColumnNameVO.getTableEname())
+                .eq(StringUtil.isNotBlank(getColumnNameVO.getTableCname()), "table_cname", getColumnNameVO.getTableCname())
                 .like(StringUtil.isNotBlank(getColumnNameVO.getColumnCname()), "column_cname", getColumnNameVO.getColumnCname())
                 .like(StringUtil.isNotBlank(getColumnNameVO.getColumnEname()), "column_ename", getColumnNameVO.getColumnEname())
                 .groupBy("column_cname", "column_ename")
@@ -143,8 +187,9 @@ public class ColumnVerifyManagementFacade {
      * @param
      * @return: 数据库表中列数据字段名称信息
      */
-    public List<GetTableColumnNameDTO> getTableColumnName() {
-        List<GetColumnInfoDTO> columnInfoList = columnInfoFacade.getBaseMapper().getNoVerifyColumnName();
+    public List<GetTableColumnNameDTO> getTableColumnName(GetTableColumnNameVO getTableColumnNameVO) {
+        List<GetColumnInfoDTO> columnInfoList = columnInfoFacade.getBaseMapper().getNoVerifyColumnName(getTableColumnNameVO);
+        ColumnInfo columnById = columnInfoFacade.getById(getTableColumnNameVO.getColumnId());
         List<String> columnString = new ArrayList<>();
         List<GetTableColumnNameDTO> getTableColumnNameDTOS = new ArrayList<>();
         for (GetColumnInfoDTO columnInfo : columnInfoList) {
@@ -166,6 +211,16 @@ public class ColumnVerifyManagementFacade {
                     getColumnNameDTOS.add(getColumnNameDTO);
                 }
             }
+            //加入查看时的字段
+            if (columnById != null) {
+                if (columnInfo.getTableEname().equals(columnById.getTableEname())) {
+                    GetColumnNameDTO getColumnNameDTO = new GetColumnNameDTO();
+                    getColumnNameDTO.setId(columnById.getId());
+                    getColumnNameDTO.setColumnCname(columnById.getColumnCname());
+                    getColumnNameDTO.setColumnEname(columnById.getColumnEname());
+                    getColumnNameDTOS.add(getColumnNameDTO);
+                }
+            }
             getTableColumnNameDTO.setGetTableNameDTO(getTableNameDTO);
             getTableColumnNameDTO.setGetColumnNameDTOList(getColumnNameDTOS);
             getTableColumnNameDTOS.add(getTableColumnNameDTO);
@@ -183,6 +238,7 @@ public class ColumnVerifyManagementFacade {
         List<RegularInfo> regularInfoList = regularInfoFacade.getBaseMapper().selectList(new QueryWrapper<RegularInfo>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .like(StringUtil.isNotBlank(getRegularVO.getName()), "name", getRegularVO.getName())
+                .orderByDesc("gmt_create")
         );
         List<GetRegularDTO> regularDTOList = BeanUtil.listCopyTo(regularInfoList, GetRegularDTO.class);
         return regularDTOList;
@@ -196,8 +252,20 @@ public class ColumnVerifyManagementFacade {
      */
     public Boolean addColumnVerify(AddColumnVerifyVO addColumnVerifyVO) {
         Long currentHospitalId = SysUserUtils.getCurrentHospitalId();
-        addColumnVerifyVO.setHospitalId(SysUserUtils.getCurrentHospitalId()==null?4:SysUserUtils.getCurrentHospitalId());
+        Long principleId = SysUserUtils.getCurrentPrincipleId();
+        addColumnVerifyVO.setHospitalId(currentHospitalId);
         List<ColumnInfoVO> columnList = addColumnVerifyVO.getColumnList();
+        //判断是否有重复
+        long distinctNum = columnList.stream().map(ColumnInfoVO::getId).distinct().count();
+        if (distinctNum < columnList.size()) {
+            Asserts.fail("表字段信息不能重复 !");
+        }
+        if(ListUtil.isNotEmpty(addColumnVerifyVO.getStandardValueList())) {
+            long count = addColumnVerifyVO.getStandardValueList().stream().distinct().count();
+            if (count < addColumnVerifyVO.getStandardValueList().size()){
+                Asserts.fail("标准值不允许重复!");
+            }
+        }
         //查出表列信息ID
         for (ColumnInfoVO columnInfoVO : columnList) {
             Long columnId = columnInfoVO.getId();
@@ -211,6 +279,11 @@ public class ColumnVerifyManagementFacade {
             columnVerify.setTableCname(columnInfoVO.getTableCname());
             columnVerify.setTableEname(columnInfoVO.getTableEname());
             if (addColumnVerifyVO.getRegularId() != null) {
+                //新增前判断是否存在该正则
+                RegularInfo regularInfo = regularInfoFacade.getBaseMapper().selectById(addColumnVerifyVO.getRegularId());
+                if (regularInfo == null) {
+                    Asserts.fail("该正则不存在,已被删除,请重新关联正则!");
+                }
                 //插入正则维护表
                 //先判断是否该字段信息是否已关联正则
                 RegularMapping selectOneMapping = regularMappingFacade.getBaseMapper().selectOne(new QueryWrapper<RegularMapping>()
@@ -223,6 +296,10 @@ public class ColumnVerifyManagementFacade {
                 RegularMapping regularMapping = new RegularMapping();
                 regularMapping.setColumnId(columnId);
                 regularMapping.setGmtCreate(new Date());
+                regularMapping.setGmtModified(new Date());
+                if (principleId != null) {
+                    regularMapping.setCreator(principleId.toString());
+                }
                 regularMapping.setRegularId(addColumnVerifyVO.getRegularId());
                 try {
                     regularMappingFacade.getBaseMapper().insert(regularMapping);
@@ -236,6 +313,10 @@ public class ColumnVerifyManagementFacade {
                 columnVerify.setVerifyVal(addColumnVerifyVO.getRegularName());
                 columnVerify.setDescription(addColumnVerifyVO.getDescription());
                 columnVerify.setGmtCreate(new Date());
+                columnVerify.setGmtModified(new Date());
+                if (principleId != null) {
+                    columnVerify.setCreator(principleId.toString());
+                }
                 try {
                     columnVerifyFacade.getBaseMapper().insert(columnVerify);
                 } catch (Exception e) {
@@ -255,6 +336,10 @@ public class ColumnVerifyManagementFacade {
                 NonnullInfo nonnullInfo = new NonnullInfo();
                 nonnullInfo.setColumnId(columnId);
                 nonnullInfo.setGmtCreate(new Date());
+                nonnullInfo.setGmtModified(new Date());
+                if (principleId != null) {
+                    nonnullInfo.setCreator(principleId.toString());
+                }
                 nonnullInfo.setIsRequired(addColumnVerifyVO.getIsRequired());
                 try {
                     nonnullInfoFacade.getBaseMapper().insert(nonnullInfo);
@@ -268,6 +353,10 @@ public class ColumnVerifyManagementFacade {
                 columnVerify.setVerifyVal(addColumnVerifyVO.getIsRequired());
                 columnVerify.setDescription(addColumnVerifyVO.getDescription());
                 columnVerify.setGmtCreate(new Date());
+                columnVerify.setGmtModified(new Date());
+                if (principleId != null) {
+                    columnVerify.setCreator(principleId.toString());
+                }
                 try {
                     columnVerifyFacade.getBaseMapper().insert(columnVerify);
                 } catch (Exception e) {
@@ -281,6 +370,10 @@ public class ColumnVerifyManagementFacade {
                     StandardvalueInfo standardvalueInfo = new StandardvalueInfo();
                     standardvalueInfo.setColumnId(columnId);
                     standardvalueInfo.setGmtCreate(new Date());
+                    standardvalueInfo.setGmtModified(new Date());
+                    if (principleId != null) {
+                        standardvalueInfo.setCreator(principleId.toString());
+                    }
                     standardvalueInfo.setVal(standardValue);
                     try {
                         standardvalueInfoFacade.getBaseMapper().insert(standardvalueInfo);
@@ -294,6 +387,10 @@ public class ColumnVerifyManagementFacade {
                     columnVerify.setVerifyVal(standardValue);
                     columnVerify.setDescription(addColumnVerifyVO.getDescription());
                     columnVerify.setGmtCreate(new Date());
+                    columnVerify.setGmtModified(new Date());
+                    if (principleId != null) {
+                        columnVerify.setCreator(principleId.toString());
+                    }
                     try {
                         columnVerifyFacade.getBaseMapper().insert(columnVerify);
                     } catch (Exception e) {
@@ -333,52 +430,70 @@ public class ColumnVerifyManagementFacade {
             String type = columnVerify.getType();
             //非空
             if (ColumnVerifyTypeEnum.NONNULL_TYPE.getKey().equals(type)) {
-                nonnullId.add(columnVerify.getVerifyId());
+                nonnullId.add(columnVerify.getColumnId());
             }
             //关键值
             if (ColumnVerifyTypeEnum.STANDARD_TYPE.getKey().equals(type)) {
-                standardValueId.add(columnVerify.getVerifyId());
+                standardValueId.add(columnVerify.getColumnId());
             }
             //正则
             if (ColumnVerifyTypeEnum.REGULAR_TYPE.getKey().equals(type)) {
-                regularId.add(columnVerify.getVerifyId());
+                regularId.add(columnVerify.getColumnId());
             }
         }
         //非空
         if (ListUtil.isNotEmpty(nonnullId)) {
-            nonnullInfo = nonnullInfoFacade.update(new UpdateWrapper<NonnullInfo>()
+            nonnullInfo = nonnullInfoFacade.remove(new UpdateWrapper<NonnullInfo>()
                     .eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .in("id", nonnullId)
-                    .set("is_deleted", IsDeleteEnum.Y.getKey())
-                    .set("gmt_modified", new Date())
+                    .in("column_id", nonnullId)
             );
+            if (nonnullInfo) {
+                //删除结果表数据
+                nonnullResultFacade.remove(new UpdateWrapper<NonnullResult>()
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .in("column_id", nonnullId)
+                );
+            }
         }
         //关键值
         if (ListUtil.isNotEmpty(standardValueId)) {
-            tandardvalueInfo = standardvalueInfoFacade.update(new UpdateWrapper<StandardvalueInfo>()
+            tandardvalueInfo = standardvalueInfoFacade.remove(new UpdateWrapper<StandardvalueInfo>()
                     .eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .in("id", standardValueId)
-                    .set("is_deleted", IsDeleteEnum.Y.getKey())
-                    .set("gmt_modified", new Date())
+                    .in("column_id", standardValueId)
             );
+            if (tandardvalueInfo) {
+                //删除结果表数据
+                standardvalueResultFacade.remove(new UpdateWrapper<StandardvalueResult>()
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .in("column_id", nonnullId)
+                );
+            }
         }
         //正则
         if (ListUtil.isNotEmpty(regularId)) {
-            regular = regularMappingFacade.update(new UpdateWrapper<RegularMapping>()
+            regular = regularMappingFacade.remove(new UpdateWrapper<RegularMapping>()
                     .eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .in("id", regularId)
-                    .set("is_deleted", IsDeleteEnum.Y.getKey())
-                    .set("gmt_modified", new Date())
+                    .in("column_id", regularId)
             );
+            if (regular) {
+                //删除结果表数据
+                regularResultFacade.remove(new UpdateWrapper<RegularResult>()
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .in("column_id", regularId)
+                );
+            }
         }
         if (nonnullInfo && tandardvalueInfo && regular) {
-            boolean update = columnVerifyFacade.update(new UpdateWrapper<ColumnVerify>()
+            boolean update = columnVerifyFacade.remove(new UpdateWrapper<ColumnVerify>()
                     .eq("is_deleted", IsDeleteEnum.N.getKey())
                     .in("column_id", ids)
-                    .set("is_deleted", IsDeleteEnum.Y.getKey())
-                    .set("gmt_modified", new Date())
             );
             if (update) {
+                //删除结果表数据
+                columnResultFacade.remove(new UpdateWrapper<ColumnResult>()
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .in("column_id",ids)
+                );
                 return true;
             }
         }
@@ -394,38 +509,38 @@ public class ColumnVerifyManagementFacade {
      */
     public Boolean updateColumnVerify(UpdateColumnVerifyVO updateColumnVerifyVO) {
         Long currentHospitalId = SysUserUtils.getCurrentHospitalId();
-        updateColumnVerifyVO.setHospitalId(SysUserUtils.getCurrentHospitalId()==null?4:SysUserUtils.getCurrentHospitalId());
+        Long principleId = SysUserUtils.getCurrentPrincipleId();
+        updateColumnVerifyVO.setHospitalId(currentHospitalId);
         List<ColumnInfoVO> columnList = updateColumnVerifyVO.getColumnList();
-        AddColumnVerifyVO addColumnVerifyVO = new AddColumnVerifyVO();
-        List<ColumnInfoVO> columnInfoAdd = new ArrayList<>();
+        //判断是否有重复--去重
+        long distinctNum = columnList.stream().map(ColumnInfoVO::getId).distinct().count();
+        if (distinctNum < columnList.size()) {
+            Asserts.fail("表字段信息不能重复 !");
+        }
+        if(ListUtil.isNotEmpty(updateColumnVerifyVO.getStandardValueList())) {
+            long count = updateColumnVerifyVO.getStandardValueList().stream().distinct().count();
+            if (count < updateColumnVerifyVO.getStandardValueList().size()){
+                Asserts.fail("标准值不允许重复!");
+            }
+        }
         List<ColumnInfoVO> columnInfoUpdate = new ArrayList<>();
         //查出表列信息ID
-        List<Long> columnInfoIdAdd = new ArrayList<>();
         List<Long> columnInfoIdUpdate = new ArrayList<>();
         for (ColumnInfoVO columnInfoVO : columnList) {
             Long columnId = columnInfoVO.getId();
-            ColumnVerify columnVerify = columnVerifyFacade.getById(columnId);
-            if (columnVerify != null) {
+            List<ColumnVerify> columnVerifyList = columnVerifyFacade.getBaseMapper().selectList(new QueryWrapper<ColumnVerify>()
+                    .eq("column_id", columnId)
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+            );
+            if (ListUtil.isNotEmpty(columnVerifyList)) {
                 //库中已有维护
                 columnInfoIdUpdate.add(columnId);
                 columnInfoUpdate.add(columnInfoVO);
             } else {
                 //库中暂无维护
-                columnInfoIdAdd.add(columnId);
-                columnInfoAdd.add(columnInfoVO);
+                Asserts.fail("该规则已被删除!");
             }
         }
-        if (ListUtil.isNotEmpty(columnInfoAdd)) {
-            addColumnVerifyVO.setHospitalId(updateColumnVerifyVO.getHospitalId());
-            addColumnVerifyVO.setColumnList(columnInfoAdd);
-            addColumnVerifyVO.setIsRequired(updateColumnVerifyVO.getIsRequired());
-            addColumnVerifyVO.setRegularId(updateColumnVerifyVO.getRegularId());
-            addColumnVerifyVO.setRegularName(updateColumnVerifyVO.getRegularName());
-            addColumnVerifyVO.setStandardValueList(updateColumnVerifyVO.getStandardValueList());
-            addColumnVerifyVO.setDescription(updateColumnVerifyVO.getDescription());
-            //库中暂无走新增流程
-            addColumnVerify(addColumnVerifyVO);
-        }
         //库中已有走修改流程
         if (ListUtil.isNotEmpty(columnInfoIdUpdate)) {
             for (Long columnId : columnInfoIdUpdate) {
@@ -436,20 +551,26 @@ public class ColumnVerifyManagementFacade {
                 columnVerify.setColumnEname(columnInfo.getColumnEname());
                 columnVerify.setTableCname(columnInfo.getTableCname());
                 columnVerify.setTableEname(columnInfo.getTableEname());
+                //先判断是否该字段信息是否已关联正则
+                RegularMapping selectOneMapping = regularMappingFacade.getBaseMapper().selectOne(new QueryWrapper<RegularMapping>()
+                        .eq("column_id", columnId)
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                );
                 if (updateColumnVerifyVO.getRegularId() != null) {
                     //插入正则维护表
-                    //先判断是否该字段信息是否已关联正则
-                    RegularMapping selectOneMapping = regularMappingFacade.getBaseMapper().selectOne(new QueryWrapper<RegularMapping>()
-                            .eq("column_id", columnId)
-                            .eq("is_deleted", IsDeleteEnum.N.getKey())
-                    );
                     if (selectOneMapping != null) {
+                        //修改前判断是否存在该正则
+                        RegularInfo regularInfo = regularInfoFacade.getBaseMapper().selectById(updateColumnVerifyVO.getRegularId());
+                        if (regularInfo == null) {
+                            Asserts.fail("该正则不存在,已被删除,请重新关联正则!");
+                        }
                         //已关联正则走修改
                         regularMappingFacade.update(new UpdateWrapper<RegularMapping>()
                                 .eq("column_id", columnId)
                                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                                 .set("regular_id", updateColumnVerifyVO.getRegularId())
                                 .set("gmt_modified", new Date())
+                                .set("modifier", principleId == null ? "0" : principleId)
                         );
                         Long mappingId = selectOneMapping.getId();
                         //修改总表
@@ -460,12 +581,21 @@ public class ColumnVerifyManagementFacade {
                                 .set("verify_val", updateColumnVerifyVO.getRegularName())
                                 .set("description", updateColumnVerifyVO.getDescription())
                                 .set("gmt_modified", new Date())
+                                .set("modifier", principleId == null ? "0" : principleId)
                         );
                     } else {
                         //未关联正则走新增
+                        //新增前判断是否存在该正则
+                        RegularInfo regularInfo = regularInfoFacade.getBaseMapper().selectById(updateColumnVerifyVO.getRegularId());
+                        if (regularInfo == null) {
+                            Asserts.fail("该正则不存在,已被删除,请重新关联正则!");
+                        }
                         RegularMapping regularMapping = new RegularMapping();
                         regularMapping.setColumnId(columnId);
                         regularMapping.setGmtCreate(new Date());
+                        if (principleId != null) {
+                            regularMapping.setCreator(principleId.toString());
+                        }
                         regularMapping.setRegularId(updateColumnVerifyVO.getRegularId());
                         try {
                             regularMappingFacade.getBaseMapper().insert(regularMapping);
@@ -479,12 +609,52 @@ public class ColumnVerifyManagementFacade {
                         columnVerify.setVerifyVal(updateColumnVerifyVO.getRegularName());
                         columnVerify.setDescription(updateColumnVerifyVO.getDescription());
                         columnVerify.setGmtCreate(new Date());
+                        if (principleId != null) {
+                            columnVerify.setCreator(principleId.toString());
+                        }
                         try {
                             columnVerifyFacade.getBaseMapper().insert(columnVerify);
                         } catch (Exception e) {
                             Asserts.fail("保存失败");
                         }
                     }
+                } else {
+                    //为空则存在的关联给删掉
+                    if (selectOneMapping != null) {
+                        //已关联正则删除
+                        regularMappingFacade.remove(new UpdateWrapper<RegularMapping>()
+                                .eq("column_id", columnId)
+                                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        );
+                        Long mappingId = selectOneMapping.getId();
+                        Long regularId = selectOneMapping.getRegularId();
+                        //获取结果表id
+                        List<Long> ids = new ArrayList<>();
+                        List<RegularResult> regularResults = regularResultFacade.getBaseMapper().selectList(new QueryWrapper<RegularResult>()
+                                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                                .eq("regular_id", regularId));
+                        if (ListUtil.isNotEmpty(regularResults)) {
+                            regularResults.stream().forEach(regularResult -> {
+                                ids.add(regularResult.getId());
+                            });
+                        }
+                        //删除结果表数据
+                        regularResultFacade.remove(new UpdateWrapper<RegularResult>()
+                                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                                .eq("regular_id", regularId)
+                        );
+                        //修改总表
+                        columnVerifyFacade.remove(new UpdateWrapper<ColumnVerify>()
+                                .eq("column_id", columnId)
+                                .eq("type", ColumnVerifyTypeEnum.REGULAR_TYPE.getKey())
+                                .eq("verify_id", mappingId)
+                        );
+                        //删除结果表数据
+                        if(ListUtil.isNotEmpty(ids)) {
+                            delColumnResult(ids, ColumnResultTypeEnum.REGULAR_TYPE.getKey());
+                        }
+                    }
+                    //未关联则不处理
                 }
                 if (updateColumnVerifyVO.getIsRequired() != null) {
                     //插入表字段的非空校验维护表
@@ -500,6 +670,7 @@ public class ColumnVerifyManagementFacade {
                                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                                 .set("is_required", updateColumnVerifyVO.getIsRequired())
                                 .set("gmt_modified", new Date())
+                                .set("modifier", principleId == null ? "0" : principleId)
                         );
                         Long mappingId = selectOneInfo.getId();
                         //修改总表
@@ -510,11 +681,15 @@ public class ColumnVerifyManagementFacade {
                                 .set("verify_val", updateColumnVerifyVO.getIsRequired())
                                 .set("description", updateColumnVerifyVO.getDescription())
                                 .set("gmt_modified", new Date())
+                                .set("modifier", principleId == null ? "0" : principleId)
                         );
                     } else {
                         NonnullInfo nonnullInfo = new NonnullInfo();
                         nonnullInfo.setColumnId(columnId);
                         nonnullInfo.setGmtCreate(new Date());
+                        if (principleId != null) {
+                            nonnullInfo.setCreator(principleId.toString());
+                        }
                         nonnullInfo.setIsRequired(updateColumnVerifyVO.getIsRequired());
                         try {
                             nonnullInfoFacade.getBaseMapper().insert(nonnullInfo);
@@ -528,6 +703,9 @@ public class ColumnVerifyManagementFacade {
                         columnVerify.setVerifyVal(updateColumnVerifyVO.getIsRequired());
                         columnVerify.setDescription(updateColumnVerifyVO.getDescription());
                         columnVerify.setGmtCreate(new Date());
+                        if (principleId != null) {
+                            columnVerify.setCreator(principleId.toString());
+                        }
                         try {
                             columnVerifyFacade.getBaseMapper().insert(columnVerify);
                         } catch (Exception e) {
@@ -539,10 +717,10 @@ public class ColumnVerifyManagementFacade {
                     //插入关键字信息维护表
                     List<String> standardValueList = updateColumnVerifyVO.getStandardValueList();
                     //先删除之前的关联然后直接插入
-                    standardvalueInfoFacade.remove(new QueryWrapper<StandardvalueInfo>()
+                    standardvalueInfoFacade.remove(new UpdateWrapper<StandardvalueInfo>()
                             .eq("column_id", columnId)
                     );
-                    columnVerifyFacade.remove(new QueryWrapper<ColumnVerify>()
+                    columnVerifyFacade.remove(new UpdateWrapper<ColumnVerify>()
                             .eq("column_id", columnId)
                             .eq("type", ColumnVerifyTypeEnum.STANDARD_TYPE.getKey())
                     );
@@ -550,7 +728,11 @@ public class ColumnVerifyManagementFacade {
                         StandardvalueInfo standardvalueInfo = new StandardvalueInfo();
                         standardvalueInfo.setColumnId(columnId);
                         standardvalueInfo.setGmtCreate(new Date());
+                        standardvalueInfo.setGmtModified(new Date());
                         standardvalueInfo.setVal(standardValue);
+                        if (principleId != null) {
+                            standardvalueInfo.setCreator(principleId.toString());
+                        }
                         try {
                             standardvalueInfoFacade.getBaseMapper().insert(standardvalueInfo);
                         } catch (Exception e) {
@@ -563,15 +745,82 @@ public class ColumnVerifyManagementFacade {
                         columnVerify.setVerifyVal(standardValue);
                         columnVerify.setDescription(updateColumnVerifyVO.getDescription());
                         columnVerify.setGmtCreate(new Date());
+                        columnVerify.setGmtModified(new Date());
+                        if (principleId != null) {
+                            columnVerify.setCreator(principleId.toString());
+                        }
                         try {
                             columnVerifyFacade.getBaseMapper().insert(columnVerify);
                         } catch (Exception e) {
                             Asserts.fail("保存失败");
                         }
                     }
+                } else {
+                    //获取结果表id
+                    List<Long> ids = new ArrayList<>();
+                    List<StandardvalueResult> standardvalueResultsList = standardvalueResultFacade.getBaseMapper().selectList(new QueryWrapper<StandardvalueResult>()
+                            .eq("is_deleted", IsDeleteEnum.N.getKey())
+                            .eq("column_id", columnId));
+                    if (ListUtil.isNotEmpty(standardvalueResultsList)) {
+                        standardvalueResultsList.stream().forEach(standardvalueResult -> {
+                            ids.add(standardvalueResult.getId());
+                        });
+                    }
+                    //删除结果表数据
+                    standardvalueResultFacade.remove(new UpdateWrapper<StandardvalueResult>()
+                            .eq("is_deleted", IsDeleteEnum.N.getKey())
+                            .eq("column_id", columnId));
+                    if(ListUtil.isNotEmpty(ids)) {
+                        delColumnResult(ids, ColumnResultTypeEnum.STANDARD_TYPE.getKey());
+                    }
+                    //为空则存在的关联给删掉
+                    standardvalueInfoFacade.remove(new UpdateWrapper<StandardvalueInfo>()
+                            .eq("column_id", columnId)
+                    );
+                    columnVerifyFacade.remove(new UpdateWrapper<ColumnVerify>()
+                            .eq("column_id", columnId)
+                            .eq("type", ColumnVerifyTypeEnum.STANDARD_TYPE.getKey())
+                    );
+                    //未关联则不处理
                 }
             }
         }
         return true;
     }
+    /**
+     * 删除结果总表数据
+     *
+     * @param ids
+     * @param type
+     * @return:
+     */
+    public Boolean delColumnResult(List<Long> ids , String type){
+       return columnResultFacade.remove(new UpdateWrapper<ColumnResult>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("type",type)
+                .in("result_id",ids)
+        );
+    }
+
+    /**
+     * 根据表名新增字段信息
+     *
+     * @param addColumnVO
+     * @return:
+     */
+    public Boolean addColumn(AddColumnVO addColumnVO) {
+        //根据表名查出所有字段及其注释信息
+        List<GetColumnDTO> columnDTOS = columnVerifyFacade.getBaseMapper().getColumn(addColumnVO);
+        ColumnInfo columnInfo = new ColumnInfo();
+        columnInfo.setTableCname(addColumnVO.getTableCname());
+        columnInfo.setTableEname(addColumnVO.getTableEname());
+        columnInfo.setType("1");
+        for (GetColumnDTO columnDTO : columnDTOS) {
+            columnInfo.setGmtCreate(new Date());
+            columnInfo.setColumnCname(columnDTO.getColumnComment());
+            columnInfo.setColumnEname(columnDTO.getColumnName());
+            columnInfoFacade.getBaseMapper().insert(columnInfo);
+        }
+        return true;
+    }
 }

+ 50 - 0
daqe-center/src/main/java/com/lantone/daqe/facade/CurrencyManagementFacade.java

@@ -0,0 +1,50 @@
+package com.lantone.daqe.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.lantone.common.enums.IsDeleteEnum;
+import com.lantone.common.util.BeanUtil;
+import com.lantone.common.util.StringUtil;
+import com.lantone.daqe.dto.GetConceptLibraryPageDTO;
+import com.lantone.daqe.entity.ConceptLibrary;
+import com.lantone.daqe.enums.ConceptLibraryTypeEnum;
+import com.lantone.daqe.facade.base.ConceptLibraryFacade;
+import com.lantone.daqe.vo.GetConceptLibraryPageVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description: 通用处理API-业务处理类
+ * @author: rengb
+ * @time: 2022/3/1 10:14
+ */
+@Component
+public class CurrencyManagementFacade {
+
+    @Autowired
+    private ConceptLibraryFacade conceptLibraryFacade;
+
+    public IPage<GetConceptLibraryPageDTO> getConceptLibraryPage(GetConceptLibraryPageVO getConceptLibraryPageVO) {
+        IPage<GetConceptLibraryPageDTO> getConceptLibraryPageDTOIPage = new Page<>();
+
+        QueryWrapper<ConceptLibrary> conceptLibraryQueryWrapper = new QueryWrapper<>();
+        conceptLibraryQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
+        conceptLibraryQueryWrapper.eq("type", getConceptLibraryPageVO.getType());
+        conceptLibraryQueryWrapper.like(StringUtil.isNotBlank(getConceptLibraryPageVO.getWord()), "synonym", getConceptLibraryPageVO.getWord());
+
+        Page<ConceptLibrary> conceptLibraryIPage = new Page<>(getConceptLibraryPageVO.getCurrent(), getConceptLibraryPageVO.getSize());
+        conceptLibraryFacade.page(conceptLibraryIPage, conceptLibraryQueryWrapper);
+        BeanUtil.copyProperties(conceptLibraryIPage, getConceptLibraryPageDTOIPage);
+
+        List<GetConceptLibraryPageDTO> getConceptLibraryPageDTOList = BeanUtil.listCopyTo(conceptLibraryIPage.getRecords(), GetConceptLibraryPageDTO.class);
+        getConceptLibraryPageDTOList.forEach(i -> {
+            i.setType(ConceptLibraryTypeEnum.getName(i.getType()));
+        });
+        getConceptLibraryPageDTOIPage.setRecords(getConceptLibraryPageDTOList);
+        return getConceptLibraryPageDTOIPage;
+    }
+
+}

+ 2 - 0
daqe-center/src/main/java/com/lantone/daqe/facade/DiseaseManagementFacade.java

@@ -144,6 +144,8 @@ public class DiseaseManagementFacade {
 
         DiseaseInfo diseaseInfo = new DiseaseInfo();
         BeanUtils.copyProperties(matchingDiseaseVO, diseaseInfo);
+        diseaseInfo.setModifier(SysUserUtils.getCurrentPrinciple() == null ? "0" : SysUserUtils.getCurrentPrinciple());
+        diseaseInfo.setGmtModified(DateUtil.now());
         return diseaseInfoFacade.updateById(diseaseInfo);
     }
 

+ 2 - 0
daqe-center/src/main/java/com/lantone/daqe/facade/DrugManagementFacade.java

@@ -146,6 +146,8 @@ public class DrugManagementFacade {
         DrugInfo drugInfo = new DrugInfo();
         BeanUtils.copyProperties(matchingDrugVO, drugInfo);
         drugInfo.setStandard(matchingDrugVO.getStandard() + "_" + matchingDrugVO.getDosageForm());
+        drugInfo.setModifier(SysUserUtils.getCurrentPrinciple() == null ? "0" : SysUserUtils.getCurrentPrinciple());
+        drugInfo.setGmtModified(DateUtil.now());
         return drugInfoFacade.updateById(drugInfo);
     }
 

+ 243 - 0
daqe-center/src/main/java/com/lantone/daqe/facade/HisDataManagementFacade.java

@@ -0,0 +1,243 @@
+package com.lantone.daqe.facade;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.lantone.common.enums.IsDeleteEnum;
+import com.lantone.common.exception.Asserts;
+import com.lantone.common.util.BeanUtil;
+import com.lantone.common.util.DateUtil;
+import com.lantone.common.util.EntityUtil;
+import com.lantone.common.util.ListUtil;
+import com.lantone.common.util.StringUtil;
+import com.lantone.common.vo.BlockLossTypeGatherVO;
+import com.lantone.common.vo.DataCompareVO;
+import com.lantone.common.vo.DataRepariVO;
+import com.lantone.daqe.dto.HisMedicalRecordDTO;
+import com.lantone.daqe.dto.HisRecDTO;
+import com.lantone.daqe.entity.BehospitalInfo;
+import com.lantone.daqe.entity.HisBehospitalInfo;
+import com.lantone.daqe.entity.HisHomePage;
+import com.lantone.daqe.entity.HisMedicalRecord;
+import com.lantone.daqe.entity.HisMedicalRecordContent;
+import com.lantone.daqe.entity.HomePage;
+import com.lantone.daqe.entity.MedicalRecord;
+import com.lantone.daqe.entity.MedicalRecordContent;
+import com.lantone.daqe.facade.base.HisBehospitalInfoFacade;
+import com.lantone.daqe.facade.base.HisHomePageFacade;
+import com.lantone.daqe.facade.base.HisMedicalRecordContentFacade;
+import com.lantone.daqe.facade.base.HisMedicalRecordFacade;
+import com.lantone.daqe.service.impl.BehospitalInfoServiceImpl;
+import com.lantone.daqe.service.impl.HomePageServiceImpl;
+import com.lantone.daqe.service.impl.MedicalRecordContentServiceImpl;
+import com.lantone.daqe.service.impl.MedicalRecordServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: His数据模拟对接-业务处理类
+ * @author: songxl
+ * @time: 2022/3/4 10:39
+ */
+@Component
+public class HisDataManagementFacade {
+    @Autowired
+    private HisBehospitalInfoFacade hisBehospitalInfoFacade;
+    @Autowired
+    private HisHomePageFacade hisHomePageFacade;
+    @Autowired
+    private HisMedicalRecordFacade hisMedicalRecordFacade;
+    @Autowired
+    private HisMedicalRecordContentFacade hisMedicalRecordContentFacade;
+
+    @Autowired
+    private BehospitalInfoServiceImpl behospitalInfoServiceImpl;
+    @Autowired
+    private HomePageServiceImpl homePageServiceImpl;
+    @Autowired
+    private MedicalRecordServiceImpl medicalRecordServiceImpl;
+    @Autowired
+    private MedicalRecordContentServiceImpl medicalRecordContentServiceImpl;
+
+
+    /**
+     * 数据补录
+     *
+     * @param dataRepariVO
+     * @Return boolean
+     */
+    public boolean dataRepari(DataRepariVO dataRepariVO) {
+        //=====获取his数据
+        //病历数据
+        List<HisBehospitalInfo> hisBehospitalInfos = hisBehospitalInfoFacade.list(new QueryWrapper<HisBehospitalInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .ge(dataRepariVO.getStartDate() != null && StringUtil.isBlank(dataRepariVO.getBehospitalCode()), "behospital_date", dataRepariVO.getStartDate())
+                .le(dataRepariVO.getEndDate() != null && StringUtil.isBlank(dataRepariVO.getBehospitalCode()), "behospital_date", dataRepariVO.getEndDate())
+                .eq(StringUtil.isNotBlank(dataRepariVO.getBehospitalCode()), "behospital_code", dataRepariVO.getBehospitalCode()));
+        if (ListUtil.isEmpty(hisBehospitalInfos) && StringUtil.isNotBlank(dataRepariVO.getBehospitalCode())) {
+            Asserts.fail("未查询到该患者信息");
+        }
+        //通过病历获取病案首页和文书
+        if (ListUtil.isEmpty(hisBehospitalInfos)) {
+            return true;
+        }
+        List<String> codes = hisBehospitalInfos.stream().map(HisBehospitalInfo::getBehospitalCode).collect(Collectors.toList());
+
+        //病案首页
+        List<HisHomePage> hisHomePages = hisHomePageFacade.list(new QueryWrapper<HisHomePage>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("behospital_code", codes));
+
+        //文书
+        List<HisMedicalRecord> hisMedicalRecords = hisMedicalRecordFacade.list(new QueryWrapper<HisMedicalRecord>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("behospital_code", codes));
+        List<HisMedicalRecordContent> hisMedicalRecordContents = null;
+        if (ListUtil.isNotEmpty(hisMedicalRecords)) {
+            hisMedicalRecordContents = hisMedicalRecordContentFacade.list(new QueryWrapper<HisMedicalRecordContent>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("rec_id", hisMedicalRecords.stream().map(HisMedicalRecord::getRecId).collect(Collectors.toList())));
+        }
+
+        //=====删除以插入病历数据,重新插入
+        behospitalInfoServiceImpl.remove(new UpdateWrapper<BehospitalInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("behospital_code", codes));
+        homePageServiceImpl.remove(new UpdateWrapper<HomePage>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("behospital_code", codes));
+
+        //删除文书内容
+        List<String> delRecIds = medicalRecordServiceImpl.list(new QueryWrapper<MedicalRecord>().select("rec_id")
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("behospital_code", codes))
+                .stream().map(MedicalRecord::getRecId).collect(Collectors.toList());
+        if (ListUtil.isNotEmpty(delRecIds)) {
+            medicalRecordContentServiceImpl.remove(new UpdateWrapper<MedicalRecordContent>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("rec_id", delRecIds));
+        }
+        //删除文书
+        medicalRecordServiceImpl.remove(new UpdateWrapper<MedicalRecord>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("behospital_code", codes));
+
+        //插入新查出的his数据
+        try {
+            List<BehospitalInfo> saveCodes = BeanUtil.listCopyTo(hisBehospitalInfos, BehospitalInfo.class);
+            List<HomePage> saveHomepages = BeanUtil.listCopyTo(hisHomePages, HomePage.class);
+            List<MedicalRecord> saveMedicalRecords = BeanUtil.listCopyTo(hisMedicalRecords, MedicalRecord.class);
+            if (ListUtil.isNotEmpty(saveCodes)) {
+                saveCodes.stream().forEach(behospitalInfo -> {
+                    behospitalInfo.setGmtModified(DateUtil.now());
+                    behospitalInfo.setGmtCreate(DateUtil.now());
+                });
+                behospitalInfoServiceImpl.saveBatch(saveCodes);
+            }
+
+            if (ListUtil.isNotEmpty(saveHomepages)) {
+                saveHomepages.stream().forEach(homePage -> {
+                    homePage.setGmtModified(DateUtil.now());
+                    homePage.setGmtCreate(DateUtil.now());
+                });
+                homePageServiceImpl.saveBatch(saveHomepages);
+            }
+
+            if (ListUtil.isNotEmpty(saveMedicalRecords)) {
+                saveMedicalRecords.stream().forEach(medicalRecord -> {
+                    medicalRecord.setGmtModified(DateUtil.now());
+                    medicalRecord.setGmtCreate(DateUtil.now());
+                });
+                medicalRecordServiceImpl.saveBatch(saveMedicalRecords);
+                if (ListUtil.isNotEmpty(hisMedicalRecordContents)) {
+                    medicalRecordContentServiceImpl.saveBatch(BeanUtil.listCopyTo(hisMedicalRecordContents, MedicalRecordContent.class));
+                }
+            }
+
+        } catch (Exception e) {
+            Asserts.fail("文书批量插入过程出错");
+        }
+        return true;
+    }
+
+    /**
+     * 模拟获取his某段时间的数据
+     *
+     * @param dataCompareVO
+     * @Return java.util.List<com.lantone.daqe.dto.HisMedicalRecordDTO>
+     */
+    public List<HisMedicalRecordDTO> getHisMedicalRecords(DataCompareVO dataCompareVO) {
+        List<HisMedicalRecordDTO> out = new ArrayList<>();
+        //病历数据
+        List<HisBehospitalInfo> hisBehospitalInfos = hisBehospitalInfoFacade.list(new QueryWrapper<HisBehospitalInfo>().select("behospital_code,behospital_date")
+                .eq(dataCompareVO.getHospitalId() != null, "hospital_id", dataCompareVO.getHospitalId())
+                .ge(dataCompareVO.getStartDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "behospital_date", dataCompareVO.getStartDate())
+                .le(dataCompareVO.getEndDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "behospital_date", dataCompareVO.getEndDate())
+                .eq(StringUtil.isNotBlank(dataCompareVO.getBehospitalCode()), "behospital_code", dataCompareVO.getBehospitalCode()));
+        //通过病历获取病案首页和文书
+        if (ListUtil.isEmpty(hisBehospitalInfos)) {
+            return out;
+        }
+        List<String> codes = hisBehospitalInfos.stream().map(HisBehospitalInfo::getBehospitalCode).collect(Collectors.toList());
+        //病案首页
+        List<HisHomePage> homePages = hisHomePageFacade.list(new QueryWrapper<HisHomePage>().select("home_page_id,behospital_code")
+                .eq(dataCompareVO.getHospitalId() != null, "hospital_id", dataCompareVO.getHospitalId())
+                .in("behospital_code", codes));
+        Map<String, List<HisHomePage>> homePageMap = EntityUtil.makeEntityListMap(homePages, "behospitalCode");
+
+        //文书
+        List<HisMedicalRecord> hisMedicalRecords = hisMedicalRecordFacade.list(new QueryWrapper<HisMedicalRecord>().select("rec_id,rec_title,behospital_code")
+                .eq(dataCompareVO.getHospitalId() != null, "hospital_id", dataCompareVO.getHospitalId())
+                .in("behospital_code", codes));
+        Map<String, List<HisMedicalRecord>> medicalRecordMap = EntityUtil.makeEntityListMap(hisMedicalRecords, "behospitalCode");
+
+        //拼装
+        hisBehospitalInfos.stream().forEach(hisBehospitalInfo -> {
+            HisMedicalRecordDTO oneData = new HisMedicalRecordDTO();
+            oneData.setBehospitalCode(hisBehospitalInfo.getBehospitalCode());
+            oneData.setBehospitalDate(hisBehospitalInfo.getBehospitalDate());
+            if (homePageMap != null && ListUtil.isNotEmpty(homePageMap.get(hisBehospitalInfo.getBehospitalCode()))) {
+                oneData.setHomePageId(homePageMap.get(hisBehospitalInfo.getBehospitalCode()).get(0).getHomePageId());
+            }
+            List<HisRecDTO> recs = new ArrayList<>();
+            if (medicalRecordMap != null && ListUtil.isNotEmpty(medicalRecordMap.get(hisBehospitalInfo.getBehospitalCode()))) {
+                medicalRecordMap.get(hisBehospitalInfo.getBehospitalCode()).stream().forEach(hisMedicalRecord -> {
+                    HisRecDTO rec = new HisRecDTO();
+                    rec.setRecId(hisMedicalRecord.getRecId());
+                    rec.setRecTitle(hisMedicalRecord.getRecTitle());
+                    recs.add(rec);
+                });
+                oneData.setHisRecs(recs);
+            }
+            out.add(oneData);
+        });
+        return out;
+    }
+
+    public Integer gethisDataCount(BlockLossTypeGatherVO blockLossTypeGatherVO) {
+        List<String> codes = hisBehospitalInfoFacade.list(new QueryWrapper<HisBehospitalInfo>()
+                .select("behospital_code")
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .ge(blockLossTypeGatherVO.getStartDate() != null, "behospital_date", blockLossTypeGatherVO.getStartDate())
+                .le(blockLossTypeGatherVO.getEndDate() != null, "behospital_date", blockLossTypeGatherVO.getEndDate()))
+                .stream().map(HisBehospitalInfo::getBehospitalCode).collect(Collectors.toList());
+
+        Integer codeNum = codes.size();
+        Integer homePageNum = 0;
+        Integer recNum = 0;
+        if (ListUtil.isNotEmpty(codes)) {
+            homePageNum = hisHomePageFacade.count(new QueryWrapper<HisHomePage>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("behospital_code", codes));
+            recNum = hisMedicalRecordFacade.count(new QueryWrapper<HisMedicalRecord>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("behospital_code", codes));
+        }
+        return codeNum + homePageNum + recNum;
+    }
+}

+ 0 - 0
daqe-center/src/main/java/com/lantone/daqe/facade/OfficialCapacityManagementFacade.java


Some files were not shown because too many files changed in this diff