sunzq il y a 4 ans
Parent
commit
f5c42a2300
64 fichiers modifiés avec 3964 ajouts et 1055 suppressions
  1. 56 3
      pom.xml
  2. 22 3
      src/main/java/com/miyzh/QingdaoUploadApplication.java
  3. 88 0
      src/main/java/com/miyzh/config/RabbitConfig.java
  4. 135 0
      src/main/java/com/miyzh/config/RedisConfig.java
  5. 8 0
      src/main/java/com/miyzh/config/SheduledConfig.java
  6. 27 1
      src/main/java/com/miyzh/config/SwaggerConfig.java
  7. 2 0
      src/main/java/com/miyzh/dao/ClinicDao.java
  8. 9 8
      src/main/java/com/miyzh/dao/MedicineReturnDao.java
  9. 7 6
      src/main/java/com/miyzh/dao/MedicineStorageDao.java
  10. 3 3
      src/main/java/com/miyzh/dao/MedicineStoreDao.java
  11. 7 6
      src/main/java/com/miyzh/dao/OrderDetailDao.java
  12. 16 0
      src/main/java/com/miyzh/entity/AccessResult.java
  13. 53 0
      src/main/java/com/miyzh/entity/AddiPrivateDetail.java
  14. 111 0
      src/main/java/com/miyzh/entity/Advice.java
  15. 96 0
      src/main/java/com/miyzh/entity/BaseRemindRequest.java
  16. 8 0
      src/main/java/com/miyzh/entity/BaseResult.java
  17. 22 0
      src/main/java/com/miyzh/entity/BeforeRequest.java
  18. 32 0
      src/main/java/com/miyzh/entity/BeforeResult.java
  19. 30 0
      src/main/java/com/miyzh/entity/BeforeResultRule.java
  20. 10 0
      src/main/java/com/miyzh/entity/Clinic.java
  21. 40 0
      src/main/java/com/miyzh/entity/ClinicAuditRequest.java
  22. 21 0
      src/main/java/com/miyzh/entity/ClinicRemindRequest.java
  23. 77 0
      src/main/java/com/miyzh/entity/ConfirmPayReqeset.java
  24. 17 0
      src/main/java/com/miyzh/entity/ConfirmPayResult.java
  25. 90 0
      src/main/java/com/miyzh/entity/HospitalAuditRequest.java
  26. 67 0
      src/main/java/com/miyzh/entity/HospitalRemindRequest.java
  27. 2 0
      src/main/java/com/miyzh/entity/Medicine.java
  28. 4 0
      src/main/java/com/miyzh/entity/Test.java
  29. 2 0
      src/main/java/com/miyzh/entity/dto/MedicineReturnDto.java
  30. 2 0
      src/main/java/com/miyzh/entity/dto/MedicineStorageDto.java
  31. 2 0
      src/main/java/com/miyzh/entity/dto/MedicineStoreDto.java
  32. 2 0
      src/main/java/com/miyzh/entity/dto/OrderDetailDto.java
  33. 79 0
      src/main/java/com/miyzh/rabbitMQ/MsgProducer.java
  34. 80 0
      src/main/java/com/miyzh/rabbitMQ/MsgReceiver.java
  35. 103 52
      src/main/java/com/miyzh/service/BaseService.java
  36. 5 1
      src/main/java/com/miyzh/service/ClinicService.java
  37. 251 164
      src/main/java/com/miyzh/service/MedicineReturnService.java
  38. 228 140
      src/main/java/com/miyzh/service/MedicineStorageService.java
  39. 246 64
      src/main/java/com/miyzh/service/MedicineStoreService.java
  40. 258 171
      src/main/java/com/miyzh/service/OrderDetailService.java
  41. 128 0
      src/main/java/com/miyzh/service/RedisService.java
  42. 158 0
      src/main/java/com/miyzh/service/TestService.java
  43. 41 0
      src/main/java/com/miyzh/utils/RedisKeyUtil.java
  44. 20 15
      src/main/java/com/miyzh/utils/RestTemplateUtil.java
  45. 41 0
      src/main/java/com/miyzh/utils/SHA256Util.java
  46. 30 33
      src/main/resources/application-szq.yml
  47. 34 26
      src/main/resources/application.yml
  48. BIN
      src/main/resources/linux-x86-64/posinf.dll
  49. BIN
      src/main/resources/linux-x86/posinf.dll
  50. 5 3
      src/main/resources/logback-spring.xml
  51. 10 6
      src/main/resources/mapper/ClinicMapper.xml
  52. 117 119
      src/main/resources/mapper/MedicineReturnMapper.xml
  53. 107 108
      src/main/resources/mapper/MedicineStorageMapper.xml
  54. 21 21
      src/main/resources/mapper/MedicineStoreMapper.xml
  55. 89 99
      src/main/resources/mapper/OrderDetailMapper.xml
  56. 2 2
      src/main/resources/mybatis/mybatis-config.xml
  57. BIN
      src/main/resources/posinf.dll
  58. BIN
      src/main/resources/win32-x86-64/posinf.dll
  59. BIN
      src/main/resources/win32-x86/posinf.dll
  60. 125 0
      src/test/java/com/miyzh/AccessTokenTest.java
  61. 20 0
      src/test/java/com/miyzh/JNATest.java
  62. 94 0
      src/test/java/com/miyzh/RedisConfigTest.java
  63. 581 0
      src/test/java/com/miyzh/RunServiceTest.java
  64. 23 1
      src/test/java/com/miyzh/YidebProxySrvApplicationTests.java

+ 56 - 3
pom.xml

@@ -67,8 +67,13 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-redis</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.lettuce</groupId>
+                    <artifactId>lettuce-core</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
-        <!-- 添加jedis客户端 -->
         <dependency>
             <groupId>redis.clients</groupId>
             <artifactId>jedis</artifactId>
@@ -93,6 +98,18 @@
             <version>${druid.version}</version>
         </dependency>
 
+        <dependency>
+            <groupId>net.java.dev.jna</groupId>
+            <artifactId>jna</artifactId>
+            <version>5.5.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>net.java.dev.jna</groupId>
+            <artifactId>jna-platform</artifactId>
+            <version>5.5.0</version>
+        </dependency>
+
         <!-- 工具类 -->
         <dependency>
             <groupId>org.apache.commons</groupId>
@@ -165,8 +182,17 @@
 
         <dependency>
             <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-tomcat</artifactId>
-            <scope>provided</scope>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-tomcat</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-jetty</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -196,6 +222,22 @@
             <artifactId>dom4j</artifactId>
             <version>1.6.1</version>
         </dependency>
+        <dependency>
+            <groupId>commons-collections</groupId>
+            <artifactId>commons-collections</artifactId>
+            <version>3.2.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>3.14</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-csv</artifactId>
+            <version>1.5</version>
+        </dependency>
 
         <dependency>
             <groupId>io.springfox</groupId>
@@ -217,6 +259,17 @@
             <artifactId>httpclient</artifactId>
             <version>4.5.6</version>
         </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <!--监控-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 22 - 3
src/main/java/com/miyzh/QingdaoUploadApplication.java

@@ -1,17 +1,36 @@
 package com.miyzh;
 
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.alibaba.fastjson.support.config.FastJsonConfig;
+import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
+import java.util.List;
+
 @SpringBootApplication
-@EnableAsync
 @EnableSwagger2
-public class QingdaoUploadApplication {
+public class QingdaoUploadApplication extends WebMvcConfigurerAdapter {
     public static void main(String[] args) {
         SpringApplication.run(QingdaoUploadApplication.class, args);
     }
 
+    @Override
+    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+
+        super.configureMessageConverters(converters);
+        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
+
+        FastJsonConfig fastJsonConfig = new FastJsonConfig();
+        fastJsonConfig.setSerializerFeatures(
+                SerializerFeature.PrettyFormat
+        );
+        fastConverter.setFastJsonConfig(fastJsonConfig);
+        converters.add(fastConverter);
+
+    }
 }

+ 88 - 0
src/main/java/com/miyzh/config/RabbitConfig.java

@@ -0,0 +1,88 @@
+package com.miyzh.config;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.amqp.core.Binding;
+import org.springframework.amqp.core.BindingBuilder;
+import org.springframework.amqp.core.DirectExchange;
+import org.springframework.amqp.core.Queue;
+import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.beans.factory.config.ConfigurableBeanFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Scope;
+
+@Configuration
+public class RabbitConfig {
+
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+    @Value("${spring.rabbitmq.host}")
+    private String host;
+
+    @Value("${spring.rabbitmq.port}")
+    private int port;
+
+    @Value("${spring.rabbitmq.username}")
+    private String username;
+
+    @Value("${spring.rabbitmq.password}")
+    private String password;
+
+    public static final String EXCHANGE_TEST = "testExchange";
+
+    public static final String QUEUE_TEST = "testMq";
+
+    public static final String QUEUE_TEST1 = "test";
+
+    public static final String ROUTINGKEY_TEST = "testMq";
+
+    public static final String ROUTINGKEY_TEST1 = "test";
+
+    @Bean
+    public ConnectionFactory connectionFactory() {
+        CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host,port);
+        connectionFactory.setUsername(username);
+        connectionFactory.setPassword(password);
+        connectionFactory.setVirtualHost("/");
+        connectionFactory.setPublisherConfirms(true);
+        return connectionFactory;
+    }
+
+    @Bean
+    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
+    //必须是prototype类型
+    public RabbitTemplate rabbitTemplate() {
+        RabbitTemplate template = new RabbitTemplate(connectionFactory());
+        return template;
+    }
+
+
+    @Bean
+    public DirectExchange testExchange() {
+        return new DirectExchange(EXCHANGE_TEST);
+    }
+    @Bean
+    public Queue queueTest() {
+        //队列持久
+        return new Queue(QUEUE_TEST, true);
+    }
+
+    @Bean
+    public Queue queueTest1() {
+        //队列持久
+        return new Queue(QUEUE_TEST1, true);
+    }
+    @Bean
+    public Binding bindingTest() {
+        return BindingBuilder.bind(queueTest()).to(testExchange()).with(RabbitConfig.ROUTINGKEY_TEST);
+    }
+
+    @Bean
+    public Binding bindingTest1() {
+        return BindingBuilder.bind(queueTest1()).to(testExchange()).with(RabbitConfig.ROUTINGKEY_TEST1);
+    }
+}

+ 135 - 0
src/main/java/com/miyzh/config/RedisConfig.java

@@ -0,0 +1,135 @@
+package com.miyzh.config;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cache.CacheManager;
+import org.springframework.cache.annotation.CachingConfigurerSupport;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.cache.RedisCacheConfiguration;
+import org.springframework.data.redis.cache.RedisCacheManager;
+import org.springframework.data.redis.cache.RedisCacheWriter;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
+import org.springframework.data.redis.core.*;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+import java.time.Duration;
+
+@Configuration
+@EnableCaching
+public class RedisConfig extends CachingConfigurerSupport {
+
+    @Bean
+    @ConfigurationProperties(prefix = "spring.redis")
+    JedisConnectionFactory jedisConnectionFactory() {
+        return new JedisConnectionFactory();
+    }
+
+
+    /**
+     * 选择redis作为默认缓存工具
+     */
+    @Bean
+    public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
+        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
+                .entryTtl( Duration.ofHours(1)); // 设置缓存有效期一小时
+        return RedisCacheManager
+                .builder( RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory))
+                .cacheDefaults(redisCacheConfiguration).build();
+    }
+
+    /**
+     * retemplate相关配置
+     * @param factory
+     * @return
+     */
+    @Bean
+    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
+
+        RedisTemplate<String, Object> template = new RedisTemplate<>();
+        // 配置连接工厂
+        template.setConnectionFactory(factory);
+
+        //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
+        Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
+
+        ObjectMapper om = new ObjectMapper();
+        // 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
+        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+        // 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常
+        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+        jacksonSeial.setObjectMapper(om);
+
+        // 值采用json序列化
+        template.setValueSerializer(jacksonSeial);
+        //使用StringRedisSerializer来序列化和反序列化redis的key值
+        template.setKeySerializer(new StringRedisSerializer());
+
+        // 设置hash key 和value序列化模式
+        template.setHashKeySerializer(new StringRedisSerializer());
+        template.setHashValueSerializer(jacksonSeial);
+        template.afterPropertiesSet();
+
+        return template;
+    }
+
+    /**
+     * 对hash类型的数据操作
+     *
+     * @param redisTemplate
+     * @return
+     */
+    @Bean
+    public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) {
+        return redisTemplate.opsForHash();
+    }
+
+    /**
+     * 对redis字符串类型数据操作
+     *
+     * @param redisTemplate
+     * @return
+     */
+    @Bean
+    public ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) {
+        return redisTemplate.opsForValue();
+    }
+
+    /**
+     * 对链表类型的数据操作
+     *
+     * @param redisTemplate
+     * @return
+     */
+    @Bean
+    public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) {
+        return redisTemplate.opsForList();
+    }
+
+    /**
+     * 对无序集合类型的数据操作
+     *
+     * @param redisTemplate
+     * @return
+     */
+    @Bean
+    public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) {
+        return redisTemplate.opsForSet();
+    }
+
+    /**
+     * 对有序集合类型的数据操作
+     *
+     * @param redisTemplate
+     * @return
+     */
+    @Bean
+    public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) {
+        return redisTemplate.opsForZSet();
+    }
+}

+ 8 - 0
src/main/java/com/miyzh/config/SheduledConfig.java

@@ -1,6 +1,7 @@
 package com.miyzh.config;
 
 import com.miyzh.service.BaseService;
+import com.miyzh.service.TestService;
 import lombok.extern.log4j.Log4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,10 +22,17 @@ public class SheduledConfig {
 
     @Autowired
     private BaseService baseService;
+    @Autowired
+    private TestService testService;
 
     @Scheduled(cron = "0 0 0 * * ?")
     private void runservice() {
         log.info("开始定时任务");
         baseService.runService();
     }
+    @Scheduled(cron = "0 0 0 * * ?")
+    private void runservice1() {
+        log.info("定时上传检验检查");
+        testService.inspectAndExamine();
+    }
 }

+ 27 - 1
src/main/java/com/miyzh/config/SwaggerConfig.java

@@ -2,17 +2,26 @@ package com.miyzh.config;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
 import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.ParameterBuilder;
 import springfox.documentation.builders.PathSelectors;
 import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.schema.ModelRef;
 import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Parameter;
 import springfox.documentation.spi.DocumentationType;
 import springfox.documentation.spring.web.plugins.Docket;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
+import java.util.ArrayList;
+import java.util.List;
+
 @Configuration
 @EnableSwagger2
-public class SwaggerConfig {
+public class SwaggerConfig extends WebMvcConfigurationSupport {
     @Bean
     public Docket docket(){
         return new Docket(DocumentationType.SWAGGER_2)
@@ -31,4 +40,21 @@ public class SwaggerConfig {
                 .version("1.0")
                 .build();
     }
+
+    /**
+     * 解决swagger-ui.html 404无法访问的问题
+     */
+    @Override
+    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
+        // 解决静态资源无法访问
+        registry.addResourceHandler("/**")
+                .addResourceLocations("classpath:/static/");
+        // 解决swagger无法访问
+        registry.addResourceHandler("/swagger-ui.html")
+                .addResourceLocations("classpath:/META-INF/resources/");
+        // 解决swagger的js文件无法访问
+        registry.addResourceHandler("/webjars/**")
+                .addResourceLocations("classpath:/META-INF/resources/webjars/");
+    }
+
 }

+ 2 - 0
src/main/java/com/miyzh/dao/ClinicDao.java

@@ -9,4 +9,6 @@ import java.util.List;
 public interface ClinicDao {
 
     List<Clinic> listClinic();
+
+    List<Clinic> listClinicBefore();
 }

+ 9 - 8
src/main/java/com/miyzh/dao/MedicineReturnDao.java

@@ -3,6 +3,7 @@ package com.miyzh.dao;
 import com.miyzh.entity.MedicineReturnTemp;
 import com.miyzh.entity.dto.MedicineReturnDto;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Value;
 
 import java.util.List;
@@ -12,27 +13,27 @@ public interface MedicineReturnDao {
 
 
     // 西药销售出库记录
-    List<MedicineReturnTemp> listMedicineOutbound(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineReturnTemp> listMedicineOutbound(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 中药销售出库记录
-    List<MedicineReturnTemp> listChinaMedicineOutbound(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineReturnTemp> listChinaMedicineOutbound(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 西药损耗/领用出库记录
-    List<MedicineReturnTemp> listMedicineOutTreasury(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineReturnTemp> listMedicineOutTreasury(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 中药损耗/领用出库记录
-    List<MedicineReturnTemp> listChinaMedicineOutTreasury(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineReturnTemp> listChinaMedicineOutTreasury(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 西药采购退货出库记录
-    List<MedicineReturnTemp> listMedicineBack(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineReturnTemp> listMedicineBack(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 中药采购退货出库记录
-    List<MedicineReturnTemp> listChinaMedicineBack(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineReturnTemp> listChinaMedicineBack(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 西药盘点盘亏出库记录
-    List<MedicineReturnTemp> listMedicineInventory(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineReturnTemp> listMedicineInventory(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 中药盘点盘亏出库记录
-    List<MedicineReturnTemp> listChinaMedicineInventory(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineReturnTemp> listChinaMedicineInventory(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
 }

+ 7 - 6
src/main/java/com/miyzh/dao/MedicineStorageDao.java

@@ -4,6 +4,7 @@ import com.miyzh.entity.MedicineStorage;
 import com.miyzh.entity.MedicineStorageTemp;
 import com.miyzh.entity.dto.MedicineReturnDto;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -11,21 +12,21 @@ import java.util.List;
 public interface MedicineStorageDao {
 
     // 西药采购入库记录
-    List<MedicineStorageTemp> listMedicinePurchase(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineStorageTemp> listMedicinePurchase(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 中药采购入库记录
-    List<MedicineStorageTemp> listChinaMedicinePurchase(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineStorageTemp> listChinaMedicinePurchase(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 西药销售退回入库记录
-    List<MedicineStorageTemp> listMedicineOutbound(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineStorageTemp> listMedicineOutbound(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 中药销售退回入库记录
-    List<MedicineStorageTemp> listChinaMedicineOutbound(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineStorageTemp> listChinaMedicineOutbound(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 西药盘点盘盈入库记录
-    List<MedicineStorageTemp> listMedicineInventory(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineStorageTemp> listMedicineInventory(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 中药盘点盘盈入库记录
-    List<MedicineStorageTemp> listChinaMedicineInventory(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineStorageTemp> listChinaMedicineInventory(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
 }

+ 3 - 3
src/main/java/com/miyzh/dao/MedicineStoreDao.java

@@ -1,15 +1,15 @@
 package com.miyzh.dao;
 
 import com.miyzh.entity.MedicineStore;
-import io.lettuce.core.dynamic.annotation.Param;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
 @Mapper
 public interface MedicineStoreDao {
 
-    List<MedicineStore> listMedicineStore(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineStore> listMedicineStore(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
-    List<MedicineStore> listChinaMedicineStore(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<MedicineStore> listChinaMedicineStore(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 }

+ 7 - 6
src/main/java/com/miyzh/dao/OrderDetailDao.java

@@ -2,6 +2,7 @@ package com.miyzh.dao;
 
 import com.miyzh.entity.OrderDetailTemp;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -9,22 +10,22 @@ import java.util.List;
 public interface OrderDetailDao {
 
     // 西药销售明细记录(自费门诊)
-    List<OrderDetailTemp> listClcMedOrder(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<OrderDetailTemp> listClcMedOrder(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 西药销售明细记录(医保门诊)
-    List<OrderDetailTemp> listInsClcMedOrder(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<OrderDetailTemp> listInsClcMedOrder(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 中药销售明细记录(自费门诊)
-    List<OrderDetailTemp> listClcChinaMedOrder(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<OrderDetailTemp> listClcChinaMedOrder(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 中药销售明细记录(医保门诊)
-    List<OrderDetailTemp> listInsClcChinaMedOrder(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<OrderDetailTemp> listInsClcChinaMedOrder(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 西药药销售明细记录(住院)
-    List<OrderDetailTemp> listHosMedOrder(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<OrderDetailTemp> listHosMedOrder(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
     // 中药销售明细记录(住院)
-    List<OrderDetailTemp> listHosChinaMedOrder(String clinicId, String startDate, String endDate, String dateType, Integer count);
+    List<OrderDetailTemp> listHosChinaMedOrder(@Param("clinicId") String clinicId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateType") String dateType, @Param("count") Integer count);
 
 
 

+ 16 - 0
src/main/java/com/miyzh/entity/AccessResult.java

@@ -0,0 +1,16 @@
+package com.miyzh.entity;
+
+import lombok.Data;
+
+@Data
+public class AccessResult {
+
+    private String errCode;
+
+    private String errInfo;
+
+    private String accessToken;
+
+    private String expiresIn;
+
+}

+ 53 - 0
src/main/java/com/miyzh/entity/AddiPrivateDetail.java

@@ -0,0 +1,53 @@
+package com.miyzh.entity;
+
+import lombok.Data;
+
+@Data
+public class AddiPrivateDetail {
+
+    private String transType; // 交易类型
+
+    private String fbskd; // 增值业务类
+
+    private String areaCode; // 地区码
+
+    private String addiAreaCode; // 附加区域代码
+
+    private String payTermSsn; // 刷卡流水号
+
+    private String transMode; // 请求发起系统
+
+    private String socInstCode; // 组织机构代码
+
+    private String instName; // 组织机构名称
+
+    private String cardHolderName; // 刷卡人姓名
+
+    private String certType; // 证件类型
+
+    private String certNo; // 证件号码
+
+    private String socCardNo; // 社保卡号
+
+    private String termNo; // 刷卡机编号
+
+    private String loc; // 药店位置
+
+    private String storeId; // 单个摄像头id
+
+    private String transRecvTime; // 刷卡时间
+
+    private String orderId; // 两定机构单号
+
+    private String transAmt; // 统筹金额
+
+    private String recvAmt; // 自费金额
+
+    private String detail; // 收款明细
+
+    private String respCode; // 第三方返回码
+
+    private String respDesc; // 第三方返回信息
+
+
+}

+ 111 - 0
src/main/java/com/miyzh/entity/Advice.java

@@ -0,0 +1,111 @@
+package com.miyzh.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class Advice {
+
+    // 处方id
+    @JsonProperty(value = "advice_code")
+    public String adviceCode;
+
+    // 医嘱明细类别 1:药品 2:诊疗 3:服务设施
+    @JsonProperty(value = "project_type")
+    public String projectType;
+
+    // 项目编码(使用医保三目录项目编码)
+    @JsonProperty(value = "project_code")
+    public String projectCode;
+
+    // 医嘱明细名称
+    @JsonProperty(value = "project_name")
+    public String projectName;
+
+    // 医院项目编号
+    @JsonProperty(value = "hospital_project_code")
+    public String hospitalProjectCode;
+
+    // 医院项目名称
+    @JsonProperty(value = "hospital_project_name")
+    public String hospitalProjectName;
+
+    // 药品本位码
+    @JsonProperty(value = "medical_standard_code")
+    public String medicalStandardCode;
+
+    // 单位
+    @JsonProperty(value = "dose_unit")
+    public String doseUnit;
+
+    // 单价,以元为单位,保留4位小数
+    @JsonProperty(value = "price")
+    public String price;
+
+    // 外配处方标志 0:非外配处方 1外配处方
+    @JsonProperty(value = "is_out_recipe")
+    public String isOutRecipe;
+
+    // 药品规格/制剂规格
+    @JsonProperty(value = "medical_specification")
+    public String medicalSpecification;
+
+    // 发票项目编码
+    @JsonProperty(value = "invoice_project")
+    public String invoiceProject;
+
+    // 剂型
+    @JsonProperty(value = "dose_form")
+    public String doseForm;
+
+    // 用药频次
+    @JsonProperty(value = "take_frequence")
+    public String takeFrequence;
+
+    // 单次剂量
+    @JsonProperty(value = "single_dose")
+    public String singleDose;
+
+    // 单次计量单位
+    @JsonProperty(value = "single_dose_unit")
+    public String singleDoseUnit;
+
+    // 药品时表示发药数量,非药品时表示计价数量
+    @JsonProperty(value = "take_medical_number")
+    public String takeMedicalNumber;
+
+    // 药品时表示发药数量单位,非药品时表示计价单位
+    @JsonProperty(value = "take_medical_unit")
+    public String takeMedicalUnit;
+
+    // 用药途径代码
+    @JsonProperty(value = "use_way_code")
+    public String useWayCode;
+
+    // 用药途径名称
+    @JsonProperty(value = "use_way_name")
+    public String useWayName;
+
+    // 用药天数
+    @JsonProperty(value = "use_medical_days")
+    public String useMedicalDays;
+
+    // 总金额
+    @JsonProperty(value = "amount")
+    public String amount;
+
+    // 药量天数
+    @JsonProperty(value = "dose_day")
+    public String doseDay;
+
+    // 部位代码
+    @JsonProperty(value = "check_part_code")
+    public String checkPartCode;
+
+    // 部位名称
+    @JsonProperty(value = "check_part_name")
+    public String checkPartName;
+
+
+}

+ 96 - 0
src/main/java/com/miyzh/entity/BaseRemindRequest.java

@@ -0,0 +1,96 @@
+package com.miyzh.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+
+@Data
+public class BaseRemindRequest {
+
+    // 交易流水号
+    @JsonProperty(value = "tran_serial_no")
+    public String tranSerialNo;
+
+    // 操作机器ip
+    @JsonProperty(value = "operate_ip")
+    public String operateIp;
+
+    // 操作机器mac地址
+    @JsonProperty(value = "operate_mac")
+    public String operateMac;
+
+    // 操作人员id
+    @JsonProperty(value = "operate_person_code")
+    public String operatePersonCode;
+
+    // 操作人员姓名
+    @JsonProperty(value = "operate_person_name")
+    public String operatePersonName;
+
+    // 凭证类型 02:医保卡 03:身份证
+    @JsonProperty(value = "patient_evidence_type")
+    public String patientEvidenceType;
+
+    // 凭证编号
+    @JsonProperty(value = "patient_evidence_no")
+    public String patientEvidenceNo;
+
+    // 就诊类型 1:住院 2:门诊 3:购药
+    @JsonProperty(value = "visit_type")
+    public String visitType;
+
+    // 就诊唯一识别号
+    @JsonProperty(value = "visit_no")
+    public String visitNo;
+
+    // 医疗类别
+    @JsonProperty(value = "medical_type")
+    public String medicalType;
+
+    // 个人电脑编号
+    @JsonProperty(value = "pc_no")
+    public String pcNo;
+
+    // 姓名
+    @JsonProperty(value = "patient_name")
+    public String patientName;
+
+    // 性别
+    @JsonProperty(value = "patient_sex")
+    public String patientSex;
+
+    // 出生日期 yyyymmdd
+    @JsonProperty(value = "patient_birth_date")
+    public String patientBirthDate;
+
+    // 险种类型
+    @JsonProperty(value = "insurance_type")
+    public String insuranceType;
+
+    // 参保人统筹区编号 370200
+    @JsonProperty(value = "region_code")
+    public String regionCode = "370200";
+
+    // 医保科室编码
+    @JsonProperty(value = "medical_dept_code")
+    public String medicalDeptCode;
+
+    // 医保科室名称
+    @JsonProperty(value = "medical_dept_name")
+    public String medicalDeptName;
+
+    // 医院科室编码
+    @JsonProperty(value = "hospital_dept_code")
+    public String hospitalDeptCode;
+
+    // 医院科室名称
+    @JsonProperty(value = "hospital_dept_name")
+    public String hospitalDeptName;
+
+
+
+
+
+
+}

+ 8 - 0
src/main/java/com/miyzh/entity/BaseResult.java

@@ -2,6 +2,8 @@ package com.miyzh.entity;
 
 import lombok.Data;
 
+import java.util.Map;
+
 @Data
 public class BaseResult {
 
@@ -10,4 +12,10 @@ public class BaseResult {
     private String resultCode;
 
     private String message;
+
+
+    private String code;
+
+    private String type;
+
 }

+ 22 - 0
src/main/java/com/miyzh/entity/BeforeRequest.java

@@ -0,0 +1,22 @@
+package com.miyzh.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+@Data
+public class BeforeRequest {
+
+    @JsonProperty(value = "public_type")
+    public String publicType;
+
+    @JsonProperty(value = "auth_token")
+    public String authToken;
+
+    @JsonProperty(value = "version")
+    public String version = "3.0.4";
+
+
+}

+ 32 - 0
src/main/java/com/miyzh/entity/BeforeResult.java

@@ -0,0 +1,32 @@
+package com.miyzh.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class BeforeResult {
+
+    @JsonProperty(value = "success")
+    private boolean success;
+
+    @JsonProperty(value = "error_code")
+    private String errorCode;
+
+    @JsonProperty(value = "error_msg")
+    private String errorMsg;
+
+    @JsonProperty(value = "tran_serial_no")
+    private String tranSerialNo;
+
+    @JsonProperty(value = "znjg_serial_no")
+    private String znjgSerialNo;
+
+    @JsonProperty(value = "result")
+    private BeforeResultRule result;
+
+    @JsonProperty(value = "window_url")
+    private String windowUrl;
+
+
+}

+ 30 - 0
src/main/java/com/miyzh/entity/BeforeResultRule.java

@@ -0,0 +1,30 @@
+package com.miyzh.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class BeforeResultRule {
+
+    @JsonProperty(value = "rule_code")
+    private String ruleCode;
+
+    @JsonProperty(value = "rule_name")
+    private String ruleName;
+
+    @JsonProperty(value = "rule_level")
+    private String ruleLevel;
+
+    @JsonProperty(value = "rule_desc")
+    private String ruleDesc;
+
+    @JsonProperty(value = "project_code")
+    private String projectCode;
+
+    @JsonProperty(value = "project_name")
+    private String projectName;
+
+
+
+}

+ 10 - 0
src/main/java/com/miyzh/entity/Clinic.java

@@ -7,6 +7,16 @@ public class Clinic {
 
     private String storeCode; //医药机构编码
 
+    private String storeName;
+
     private String clinicId; //诊所id
 
+
+    public Clinic(){
+
+    }
+    public Clinic(String storeCode, String storeName){
+        this.storeCode = storeCode;
+        this.storeName = storeName;
+    }
 }

+ 40 - 0
src/main/java/com/miyzh/entity/ClinicAuditRequest.java

@@ -0,0 +1,40 @@
+package com.miyzh.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+
+@Data
+public class ClinicAuditRequest extends BaseRemindRequest {
+
+    // 医生编号
+    @JsonProperty(value = "doctor_code")
+    public String doctorCode;
+
+    // 医生姓名
+    @JsonProperty(value = "doctor_name")
+    public String doctorName;
+
+    // 就诊时间
+    @JsonProperty(value = "in_hosp_date")
+    public String inHospDate;
+
+    // 诊断信息
+    @JsonProperty(value = "diagnoses")
+    public List<Map<String, String>> diagnoses;
+
+    // 操作标志 0:开立处方过程中 1: 提交保存处方
+    @JsonProperty(value = "operate_type")
+    public String operateType;
+
+    // 医嘱明细
+    @JsonProperty(value = "advice_details")
+    public List<Advice> adviceDetails;
+
+
+
+}

+ 21 - 0
src/main/java/com/miyzh/entity/ClinicRemindRequest.java

@@ -0,0 +1,21 @@
+package com.miyzh.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+
+@Data
+public class ClinicRemindRequest extends BaseRemindRequest {
+
+    // 医生编号
+    @JsonProperty(value = "doctor_code")
+    public String doctorCode;
+
+    // 医生姓名
+    @JsonProperty(value = "doctor_name")
+    public String doctorName;
+
+
+
+}

+ 77 - 0
src/main/java/com/miyzh/entity/ConfirmPayReqeset.java

@@ -0,0 +1,77 @@
+package com.miyzh.entity;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+
+import java.util.List;
+
+@Data
+public class ConfirmPayReqeset {
+
+    private String chnlMsgHead; // 渠道报文头
+
+    private String msgType = "0320"; // 消息类型
+
+    private String cardNo; // 卡号
+
+    private String procCode = "290000"; //交易处理码
+
+    private String transAmt; // 交易金额/实际交易金额
+
+    private String termSsn; // 终端流水号
+
+    private String payTransDate; // 受卡方所在地日期
+
+    private String cardExpireDate; // 卡有效期
+
+    private String stlDate; // 清算日期
+
+    private String posEntryModeCode = "00"; // 服务点输入方式码
+
+    private String cardSeq; // 卡序列号
+
+    private String posConCode; // 服务点条件码
+
+    private String posPinCapCode; // 服务点PIN获取码
+
+    private String acqCode; // 受理方标识码
+
+    private String track2; // 2磁道数据
+
+    private String track3; // 3磁道数据
+
+    private String refNo; // 检索参考号
+
+    private String respAuthCode; // 授权码
+
+    private String vaTermNo; // 受卡机终端标识码
+
+    private String vaMchntNo; // 受卡方标识码
+
+    private String addiRespDate; // 附加信息域
+
+    private List<AddiPrivateDetail> addiPrivateDate; // 行业特定信息
+
+    private String ccy; // 交易货币代码
+
+    private String pin; // 个人标识码数据
+
+    private String scyInfo; // 安全控制信息
+
+    private String balAmt; // 余额信息域
+
+    private String icTermFlds; // IC卡数据域
+
+    private String cust1; // 自定义字段1
+
+    private String cust2; // 自定义字段2
+
+    private String cust3; // 自定义字段3
+
+    private String cust4; // 自定义字段4
+
+    private String cust5; // 自定义字段5
+
+    private String cust6; // 自定义字段6
+
+}

+ 17 - 0
src/main/java/com/miyzh/entity/ConfirmPayResult.java

@@ -0,0 +1,17 @@
+package com.miyzh.entity;
+
+import lombok.Data;
+
+@Data
+public class ConfirmPayResult extends ConfirmPayReqeset {
+
+    private String errCode; // 返回码
+
+    private String errInfo; // 返回说明
+
+    private String respCode;
+
+    private String respDesc;
+
+
+}

+ 90 - 0
src/main/java/com/miyzh/entity/HospitalAuditRequest.java

@@ -0,0 +1,90 @@
+package com.miyzh.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+@Data
+public class HospitalAuditRequest extends BaseRemindRequest {
+
+    // 住院号
+    @JsonProperty(value = "hospital_no")
+    public String hospitalNo;
+
+    // 操作标志 0:开立医嘱过程中 1:提交保存医嘱
+    @JsonProperty(value = "operate_type")
+    public String operateType;
+
+    // 下达科室医保编码
+    @JsonProperty(value = "release_dept_code_in_social")
+    public String releaseDeptCodeInSocial;
+
+    // 下达科室医保名称
+    @JsonProperty(value = "release_dept_name_in_social")
+    public String releaseDeptNameInSocial;
+
+    // 下达科室院内编码
+    @JsonProperty(value = "release_dept_code_in_hosp")
+    public String releaseDeptCodeInHosp;
+
+    // 下达科室院内名称 
+    @JsonProperty(value = "release_dept_name_in_hosp")
+    public String releaseDeptNameInHosp;
+
+    // 下达人医保统一编码 
+    @JsonProperty(value = "release_person_code_in_social")
+    public String releasePersonCodeInSocial;
+
+    // 下达人院内工号
+    @JsonProperty(value = "release_person_code_in_hosp")
+    public String releasePersonCodeInHosp;
+
+    // 下达人姓名
+    @JsonProperty(value = "release_person_name")
+    public String releasePersonName;
+
+    // 下达时间 yyyy-MM-dd HH:mm:ss
+    @JsonProperty(value = "release_time")
+    public String releaseTime;
+
+    // 开立执行时间 yyyy-MM-dd HH:mm:ss
+    @JsonProperty(value = "start_execute_time")
+    public String startExecuteTime;
+
+    // 停止执行时间,停止医嘱操作时为必填
+    @JsonProperty(value = "end_execute_time")
+    public String endExecuteTime;
+
+    // 医嘱说明
+    @JsonProperty(value = "advice_desc")
+    public String adviceDesc;
+
+    // 医嘱类型:编码。1:长期(在院);2:临时(在院);3:出院带药;4:嘱托医嘱,5:文本医嘱 9:其他
+    @JsonProperty(value = "advice_type")
+    public String adviceType;
+
+    // 医嘱类别:0检验项目;1:西药;2:中成药;3:中草药;4:检查项目;5:手术项目;6:康复项目7:中医项目;8:材料医嘱;9:治疗医嘱;10:其他文本医嘱(不产生费用的);
+    @JsonProperty(value = "advice_stage")
+    public String adviceStage;
+
+    // 医嘱套餐编码
+    @JsonProperty(value = "advice_meal_code")
+    public String adviceMealCode;
+
+    // 医嘱套餐名称
+    @JsonProperty(value = "advice_meal_name")
+    public String adviceMealName;
+
+    // 医嘱明细
+    @JsonProperty(value = "advice_details")
+    public List<Advice> adviceDetails;
+
+
+
+
+
+
+}

+ 67 - 0
src/main/java/com/miyzh/entity/HospitalRemindRequest.java

@@ -0,0 +1,67 @@
+package com.miyzh.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+
+@Data
+public class HospitalRemindRequest extends BaseRemindRequest {
+
+    // 住院号
+    @JsonProperty(value = "hospital_no")
+    public String hospitalNo;
+
+    // 入院途径 1:急诊 2:门诊 3:其他医疗机构转入 9:其他
+    @JsonProperty(value = "in_hosp_type")
+    public String inHospType;
+
+    // 入院时间
+    @JsonProperty(value = "in_hosp_date")
+    public String inHospDate;
+
+    // 医生在社保统一编号
+    @JsonProperty(value = "doctor_code_in_social")
+    public String doctorCodeInSocial;
+
+    // 医生医院工号
+    @JsonProperty(value = "doctor_code_in_hosp")
+    public String doctorCodeInHosp;
+
+    // 医生姓名
+    @JsonProperty(value = "doctor_name_in_hosp")
+    public String doctorNameInHosp;
+
+    // 病区
+    @JsonProperty(value = "inpatient_area")
+    public String inpatientArea;
+
+    // 床位号
+    @JsonProperty(value = "number_beds")
+    public String numberBeds;
+
+    // 主诉
+    @JsonProperty(value = "chief_complaint")
+    public String chiefComplaint;
+
+    // 是否怀孕 编码 0:否 1:是
+    @JsonProperty(value = "is_pregnan")
+    public String isPregnan;
+
+    // 怀孕孕期 怀孕周数+不满一周的天数,如7周3天,计为7W3
+    @JsonProperty(value = "pregnancy")
+    public String pregnancy;
+
+    // 是否哺乳 编码 0:否 1:是
+    @JsonProperty(value = "is_feeding")
+    public String isFeeding;
+
+    // 诊断信息说明
+    @JsonProperty(value = "diagnoses")
+    public List<Map<String, String>> diagnoses;
+
+
+}

+ 2 - 0
src/main/java/com/miyzh/entity/Medicine.java

@@ -72,4 +72,6 @@ public class Medicine {
 
     private String goodsAllocation; //货位/货架号
 
+    private String medicineDeadline; //有效期
+
 }

+ 4 - 0
src/main/java/com/miyzh/entity/Test.java

@@ -0,0 +1,4 @@
+package com.miyzh.entity;
+
+public class Test {
+}

+ 2 - 0
src/main/java/com/miyzh/entity/dto/MedicineReturnDto.java

@@ -10,6 +10,8 @@ public class MedicineReturnDto {
 
     private String storeCode; // 医药机构编码
 
+    private String storeName;
+
     private String storePrecordCode; // 采购记录编码(医药机构)
 
     private String stockoutType; //出库类型

+ 2 - 0
src/main/java/com/miyzh/entity/dto/MedicineStorageDto.java

@@ -10,6 +10,8 @@ public class MedicineStorageDto{
 
     private String storeCode; //医药机构编码
 
+    private String storeName;
+
     private String storePrecordCode; //机构采购记录编码
 
     private String storageType; //入库类型

+ 2 - 0
src/main/java/com/miyzh/entity/dto/MedicineStoreDto.java

@@ -10,6 +10,8 @@ public class MedicineStoreDto {
 
     private String storeCode; //医药机构编码
 
+    private String storeName;
+
     private String erpNo; //机构采购记录编码
 
     private String  checkTime; //盘点时间

+ 2 - 0
src/main/java/com/miyzh/entity/dto/OrderDetailDto.java

@@ -13,6 +13,8 @@ public class OrderDetailDto{
 
     private String storeCode; // 医药机构编码
 
+    private String storeName;
+
     private String storeOrderNo; //机构销售订单编号
 
     private String misNo; //医保结算单号

+ 79 - 0
src/main/java/com/miyzh/rabbitMQ/MsgProducer.java

@@ -0,0 +1,79 @@
+package com.miyzh.rabbitMQ;
+
+import com.miyzh.config.RabbitConfig;
+import com.rabbitmq.client.Channel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.connection.CorrelationData;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.UUID;
+
+
+@Component
+public class MsgProducer implements RabbitTemplate.ConfirmCallback,RabbitTemplate.ReturnCallback,ChannelAwareMessageListener {
+
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+    //由于rabbitTemplate的scope属性设置为ConfigurableBeanFactory.SCOPE_PROTOTYPE,所以不能自动注入
+    private RabbitTemplate rabbitTemplate;
+
+    /**
+     * 构造方法注入rabbitTemplate
+     */
+    @Autowired
+    public MsgProducer(RabbitTemplate rabbitTemplate) {
+        this.rabbitTemplate = rabbitTemplate;
+        //rabbitTemplate如果为单例的话,那回调就是最后设置的内容
+        rabbitTemplate.setConfirmCallback(this);
+
+    }
+
+    public void sendMsg(String msg) {
+        //消息唯一性
+        CorrelationData correlationId = new CorrelationData(UUID.randomUUID().toString());
+        System.out.println("发送消息。。。。");
+//        rabbitTemplate.convertAndSend(RabbitConfig.EXCHANGE_TEST, RabbitConfig.ROUTINGKEY_TEST, msg, correlationId);
+        rabbitTemplate.convertAndSend(RabbitConfig.EXCHANGE_TEST, RabbitConfig.ROUTINGKEY_TEST1, msg, correlationId);
+    }
+
+    /*
+    消息成功发送到队列回调
+     */
+    @Override
+    public void confirm(CorrelationData correlationData, boolean b, String s) {
+        logger.info(" 回调id:" + correlationData);
+        if (b) {
+            logger.info("消息发送成功");
+        } else {
+            logger.info("消息发送失败:" + s);
+        }
+    }
+
+    /*
+     消息失败后return回调
+     */
+    @Override
+    public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {
+        logger.error("return--message:"+new String(message.getBody())+",replyCode:"+replyCode+",replyText:"+replyText+",exchange:"+exchange+",routingKey:"+routingKey);
+    }
+
+    /*
+     消息送达后回调
+     */
+    @Override
+    public void onMessage(Message message, Channel channel) throws Exception {
+        try{
+            logger.info("consumer--:"+message.getMessageProperties()+":"+new String(message.getBody()));
+            //成功消费,消息从队列中删除
+            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+        }catch(Exception e){
+            //requeue=true,消息重新进入队列,false被删除
+            channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, false);
+        }
+    }
+}

+ 80 - 0
src/main/java/com/miyzh/rabbitMQ/MsgReceiver.java

@@ -0,0 +1,80 @@
+package com.miyzh.rabbitMQ;
+
+import com.miyzh.utils.DesUtil;
+import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+
+
+@Slf4j
+@Component
+public class MsgReceiver {
+
+//    @RabbitListener(queues = "")
+    public void preSettleMq(String content, Message message, Channel channel) throws IOException {
+        try {
+//            int a = 1 / 0;
+            if (null != content && content.length() > 0) {
+                Document doc = DocumentHelper.parseText(DesUtil.decrypt(new String(message.getBody(), "utf-8")));
+                log.info("消费消息:" + doc);
+            }
+        } catch (Exception e) {
+            //重新回到队列
+            channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
+            log.error("尝试重发:" + message.getMessageProperties().getConsumerQueue());
+            //requeue =true 重回队列,false 丢弃
+//            channel.basicReject(message.getMessageProperties().getDeliveryTag(), false);
+            // TODO 该消息已经导致异常,重发无意义,自己实现补偿机制
+
+
+        }
+    }
+
+//    @RabbitListener(queues = "")
+    public void confirmSettleMq(String content, Message message, Channel channel) throws IOException {
+        try {
+            if (null != content && content.length() > 0) {
+                Document doc = DocumentHelper.parseText(DesUtil.decrypt(content));
+                log.info("消费消息:" + doc);
+                channel.basicAck(message.getMessageProperties().getDeliveryTag(), true);
+            }
+        } catch (Exception e) {
+            //重新回到队列
+            channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
+            log.info("尝试重发:" + message.getMessageProperties().getConsumerQueue());
+            //requeue =true 重回队列,false 丢弃
+            channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
+            // TODO 该消息已经导致异常,重发无意义,自己实现补偿机制
+
+
+        }
+    }
+
+//    @RabbitListener(queues = "test")
+    public void testMq(String content, Message message, Channel channel) throws IOException {
+        try {
+            if (null != content && content.length() > 0) {
+                System.out.println(content);
+                channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, false);
+            }
+        } catch (Exception e) {
+            //重新回到队列
+            channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
+            log.info("尝试重发:" + message.getMessageProperties().getConsumerQueue());
+            //requeue =true 重回队列,false 丢弃
+            channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
+            // TODO 该消息已经导致异常,重发无意义,自己实现补偿机制
+
+
+        }
+    }
+
+
+}

+ 103 - 52
src/main/java/com/miyzh/service/BaseService.java

@@ -1,12 +1,16 @@
 package com.miyzh.service;
 
 import com.miyzh.dao.OrderDetailDao;
+import com.miyzh.entity.BaseResult;
 import com.miyzh.entity.Clinic;
 import com.miyzh.entity.MedicineReturn;
+import com.miyzh.utils.RestTemplateUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Slf4j
@@ -58,40 +62,43 @@ public class BaseService {
     }
 
 
+
+
     public void runService () {
         try{
             long startTime = System.currentTimeMillis();
             List<Clinic> clinicList = clinicService.listClinic();
-//             库存同步
-            medicineStoreService.uploadMedicine(clinicList);
-            medicineStoreService.uploadChinaMedicine(clinicList);
-
-            // 入库
-            medicineStorageService.uploadMedicine(clinicList, InStore.MED_PUR);
-            medicineStorageService.uploadMedicine(clinicList, InStore.CHI_MED_PUR);
-            medicineStorageService.uploadMedicine(clinicList, InStore.MED_INBOUND);
-            medicineStorageService.uploadMedicine(clinicList, InStore.CHI_MED_INBOUND);
-            medicineStorageService.uploadMedicine(clinicList, InStore.MED_INV);
-            medicineStorageService.uploadMedicine(clinicList, InStore.CHI_MED_INV);
-
-            //出库
-            medicineReturnService.uploadMedicine(clinicList, OutStore.MED_OUT);
-            medicineReturnService.uploadMedicine(clinicList, OutStore.CHI_MED_OUT);
-            medicineReturnService.uploadMedicine(clinicList, OutStore.MED_OUTTREASURY);
-            medicineReturnService.uploadMedicine(clinicList, OutStore.CHI_MED_OUTTREASURY);
-            medicineReturnService.uploadMedicine(clinicList, OutStore.MED_BACK);
-            medicineReturnService.uploadMedicine(clinicList, OutStore.CHI_MED_BACK);
-            medicineReturnService.uploadMedicine(clinicList, OutStore.MED_INV);
-            medicineReturnService.uploadMedicine(clinicList, OutStore.CHI_MED_INV);
-
-            // 销售明细
-            orderDetailService.uploadMedicine(clinicList, OrderDetail.CLI_MED);
-            orderDetailService.uploadMedicine(clinicList, OrderDetail.CLI_CHI_MED);
-            orderDetailService.uploadMedicine(clinicList, OrderDetail.INS_CLC_MED);
-            orderDetailService.uploadMedicine(clinicList, OrderDetail.INS_CLC_CHI_MED);
-            orderDetailService.uploadMedicine(clinicList, OrderDetail.HOS_MED);
-            orderDetailService.uploadMedicine(clinicList, OrderDetail.HOS_CHI_MED);
-
+            for(Clinic clinic : clinicList) {
+                // 库存同步
+                medicineStoreService.uploadMedicine(clinic);
+                medicineStoreService.uploadChinaMedicine(clinic);
+
+                // 入库
+                medicineStorageService.uploadMedicine(clinic, InStore.MED_PUR);
+                medicineStorageService.uploadMedicine(clinic, InStore.CHI_MED_PUR);
+                medicineStorageService.uploadMedicine(clinic, InStore.MED_INBOUND);
+                medicineStorageService.uploadMedicine(clinic, InStore.CHI_MED_INBOUND);
+                medicineStorageService.uploadMedicine(clinic, InStore.MED_INV);
+                medicineStorageService.uploadMedicine(clinic, InStore.CHI_MED_INV);
+
+                //出库
+                medicineReturnService.uploadMedicine(clinic, OutStore.MED_OUT);
+                medicineReturnService.uploadMedicine(clinic, OutStore.CHI_MED_OUT);
+                medicineReturnService.uploadMedicine(clinic, OutStore.MED_OUTTREASURY);
+                medicineReturnService.uploadMedicine(clinic, OutStore.CHI_MED_OUTTREASURY);
+                medicineReturnService.uploadMedicine(clinic, OutStore.MED_BACK);
+                medicineReturnService.uploadMedicine(clinic, OutStore.CHI_MED_BACK);
+                medicineReturnService.uploadMedicine(clinic, OutStore.MED_INV);
+                medicineReturnService.uploadMedicine(clinic, OutStore.CHI_MED_INV);
+
+                // 销售明细
+                orderDetailService.uploadMedicine(clinic, OrderDetail.CLI_MED);
+                orderDetailService.uploadMedicine(clinic, OrderDetail.CLI_CHI_MED);
+                orderDetailService.uploadMedicine(clinic, OrderDetail.INS_CLC_MED);
+                orderDetailService.uploadMedicine(clinic, OrderDetail.INS_CLC_CHI_MED);
+                orderDetailService.uploadMedicine(clinic, OrderDetail.HOS_MED);
+                orderDetailService.uploadMedicine(clinic, OrderDetail.HOS_CHI_MED);
+            }
 
             long syncTime = System.currentTimeMillis();
             log.info("总耗时--{}", startTime - syncTime);
@@ -105,128 +112,172 @@ public class BaseService {
     // 西药库存同步
     public void medicineStore() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineStoreService.uploadMedicine(clinicList);
+        for(Clinic clinic : clinicList) {
+            medicineStoreService.uploadMedicine(clinic);
+        }
     }
     // 中药库存同步
     public void medicineChiStore() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineStoreService.uploadChinaMedicine(clinicList);
+        for(Clinic clinic : clinicList) {
+            medicineStoreService.uploadChinaMedicine(clinic);
+        }
     }
     // 西药采购入库
     public void medicineStorage() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineStorageService.uploadMedicine(clinicList, InStore.MED_PUR);
+        for(Clinic clinic : clinicList) {
+            medicineStorageService.uploadMedicine(clinic, InStore.MED_PUR);
+        }
     }
     // 中药采购入库
     public void medicineChiStorage() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineStorageService.uploadMedicine(clinicList, InStore.CHI_MED_PUR);
+        for(Clinic clinic : clinicList) {
+            medicineStorageService.uploadMedicine(clinic, InStore.CHI_MED_PUR);
+        }
     }
 
     // 西药销售退回
     public void medicineInbound() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineStorageService.uploadMedicine(clinicList, InStore.MED_INBOUND);
+        for(Clinic clinic : clinicList) {
+            medicineStorageService.uploadMedicine(clinic, InStore.MED_INBOUND);
+        }
     }
 
     // 中药销售退回
     public void medicineChiInbound() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineStorageService.uploadMedicine(clinicList, InStore.CHI_MED_INBOUND);
+        for(Clinic clinic : clinicList) {
+            medicineStorageService.uploadMedicine(clinic, InStore.CHI_MED_INBOUND);
+        }
     }
     // 西药盘盈入库
     public void medicineInv() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineStorageService.uploadMedicine(clinicList, InStore.MED_INV);
+        for(Clinic clinic : clinicList) {
+            medicineStorageService.uploadMedicine(clinic, InStore.MED_INV);
+        }
     }
     // 中药盘盈入库
     public void medicineChiInv() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineStorageService.uploadMedicine(clinicList, InStore.CHI_MED_INV);
+        for(Clinic clinic : clinicList) {
+            medicineStorageService.uploadMedicine(clinic, InStore.CHI_MED_INV);
+        }
     }
 
     // 西药销售出库记录
     public void medicineOutBound() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineReturnService.uploadMedicine(clinicList, OutStore.MED_OUT);
+        for(Clinic clinic : clinicList) {
+            medicineReturnService.uploadMedicine(clinic, OutStore.MED_OUT);
+        }
     }
 
     // 中药销售出库记录
     public void medicineChiOutBound() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineReturnService.uploadMedicine(clinicList, OutStore.CHI_MED_OUT);
+        for(Clinic clinic : clinicList) {
+            medicineReturnService.uploadMedicine(clinic, OutStore.CHI_MED_OUT);
+        }
     }
 
     // 西药损耗/领用出库记录
     public void medicineOutTreasury() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineReturnService.uploadMedicine(clinicList, OutStore.MED_OUTTREASURY);
+        for(Clinic clinic : clinicList) {
+            medicineReturnService.uploadMedicine(clinic, OutStore.MED_OUTTREASURY);
+        }
     }
 
     // 中药损耗/领用出库记录
     public void medicineOutChiTreasury() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineReturnService.uploadMedicine(clinicList, OutStore.CHI_MED_OUTTREASURY);
+        for(Clinic clinic : clinicList) {
+            medicineReturnService.uploadMedicine(clinic, OutStore.CHI_MED_OUTTREASURY);
+        }
     }
 
     // 西药采购退货出库记录
     public void medicineBack() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineReturnService.uploadMedicine(clinicList, OutStore.MED_BACK);
+        for(Clinic clinic : clinicList) {
+            medicineReturnService.uploadMedicine(clinic, OutStore.MED_BACK);
+        }
     }
 
     // 中药采购退货出库记录
     public void medicineChiBack() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineReturnService.uploadMedicine(clinicList, OutStore.CHI_MED_BACK);
+        for(Clinic clinic : clinicList) {
+            medicineReturnService.uploadMedicine(clinic, OutStore.CHI_MED_BACK);
+        }
     }
 
     // 西药盘点盘亏出库记录
     public void medicineInvOut() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineReturnService.uploadMedicine(clinicList, OutStore.MED_INV);
+        for(Clinic clinic : clinicList) {
+            medicineReturnService.uploadMedicine(clinic, OutStore.MED_INV);
+        }
     }
 
     // 中药盘点盘亏出库记录
     public void medicineChiInvOut() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        medicineReturnService.uploadMedicine(clinicList, OutStore.CHI_MED_INV);
+        for(Clinic clinic : clinicList) {
+            medicineReturnService.uploadMedicine(clinic, OutStore.CHI_MED_INV);
+        }
     }
 
     // 西药销售明细记录(自费门诊)
     public void medicineOrder() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        orderDetailService.uploadMedicine(clinicList, OrderDetail.CLI_MED);
+        for(Clinic clinic : clinicList) {
+            orderDetailService.uploadMedicine(clinic, OrderDetail.CLI_MED);
+        }
     }
 
     // 中药销售明细记录(自费门诊)
     public void medicineChiOrder() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        orderDetailService.uploadMedicine(clinicList, OrderDetail.CLI_CHI_MED);
+        for(Clinic clinic : clinicList) {
+            orderDetailService.uploadMedicine(clinic, OrderDetail.CLI_CHI_MED);
+        }
     }
 
     // 西药销售明细记录(医保门诊)
     public void medicineInsOrder() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        orderDetailService.uploadMedicine(clinicList, OrderDetail.INS_CLC_MED);
+        for(Clinic clinic : clinicList) {
+            orderDetailService.uploadMedicine(clinic, OrderDetail.INS_CLC_MED);
+        }
     }
 
     // 中药销售明细记录(医保门诊)
     public void medicineChiInsOrder() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        orderDetailService.uploadMedicine(clinicList, OrderDetail.INS_CLC_CHI_MED);
+        for(Clinic clinic : clinicList) {
+            orderDetailService.uploadMedicine(clinic, OrderDetail.INS_CLC_CHI_MED);
+        }
     }
 
     // 西药药销售明细记录(住院)
     public void medicineHosOrder() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        orderDetailService.uploadMedicine(clinicList, OrderDetail.HOS_MED);
+        for(Clinic clinic : clinicList) {
+            orderDetailService.uploadMedicine(clinic, OrderDetail.HOS_MED);
+        }
     }
 
     // 中药销售明细记录(住院)
     public void medicineChiHosOrder() throws Exception {
         List<Clinic> clinicList = clinicService.listClinic();
-        orderDetailService.uploadMedicine(clinicList, OrderDetail.HOS_CHI_MED);
+        for(Clinic clinic : clinicList) {
+            orderDetailService.uploadMedicine(clinic, OrderDetail.HOS_CHI_MED);
+        }
     }
 
 

+ 5 - 1
src/main/java/com/miyzh/service/ClinicService.java

@@ -14,8 +14,12 @@ public class ClinicService {
     @Autowired
     private ClinicDao clinicDao;
 
-    List<Clinic> listClinic() {
+    public List<Clinic> listClinic() {
         return clinicDao.listClinic();
     }
 
+    public List<Clinic> listClinicBefore() {
+        return clinicDao.listClinicBefore();
+    }
+
 }

+ 251 - 164
src/main/java/com/miyzh/service/MedicineReturnService.java

@@ -11,6 +11,7 @@ import com.miyzh.utils.RestTemplateUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpHeaders;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
@@ -62,221 +63,307 @@ public class MedicineReturnService {
     private static final String MED_INV = "7"; //西药盘点盘亏出库记录
     private static final String CHI_MED_INV = "8"; //中药盘点盘亏出库记录
 
-    @Async
-    public void uploadMedicine(List<Clinic> clinicList, String flag) throws InterruptedException, JsonProcessingException {
-        long startTime = System.currentTimeMillis();
+    public void uploadMedicine(Clinic clinic, String flag) throws InterruptedException, JsonProcessingException {
         PageInfo<MedicineReturnTemp> page = new PageInfo<>();
-        for(Clinic clinic : clinicList) {
+        switch (flag) {
+            case MED_OUT:
+                System.out.println(clinic.getStoreCode() + "开始查询西药销售出库记录...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    medicineReturnDao.listMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步西药销售出库记录,数量" + page.getTotal());
+                break;
+            case CHI_MED_OUT:
+                System.out.println(clinic.getStoreCode() + "开始查询中药销售出库记录...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    medicineReturnDao.listChinaMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步中药销售出库记录,数量" + page.getTotal());
+                break;
+            case MED_OUTTREASURY:
+                System.out.println(clinic.getStoreCode() + "开始查询西药损耗/领用出库记录...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    medicineReturnDao.listMedicineOutTreasury(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步西药损耗/领用出库记录,数量" + page.getTotal());
+                break;
+            case CHI_MED_OUTTREASURY:
+                System.out.println(clinic.getStoreCode() + "开始查询中药损耗/领用出库记录...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    medicineReturnDao.listChinaMedicineOutTreasury(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步中药损耗/领用出库记录,数量" + page.getTotal());
+                break;
+            case MED_BACK:
+                System.out.println(clinic.getStoreCode() + "开始查询西药采购退货出库记录...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    medicineReturnDao.listMedicineBack(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步西药采购退货出库记录,数量" + page.getTotal());
+                break;
+            case CHI_MED_BACK:
+                System.out.println(clinic.getStoreCode() + "开始查询中药采购退货出库记录...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    medicineReturnDao.listChinaMedicineBack(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步中药采购退货出库记录,数量" + page.getTotal());
+                break;
+            case MED_INV:
+                System.out.println(clinic.getStoreCode() + "开始查询西药盘点盘亏出库记录...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    medicineReturnDao.listMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步西药盘点盘亏出库记录,数量" + page.getTotal());
+                break;
+            case CHI_MED_INV:
+                System.out.println(clinic.getStoreCode() + "开始查询中药盘点盘亏出库记录...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    medicineReturnDao.listChinaMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步中药盘点盘亏出库记录,数量" + page.getTotal());
+                break;
+        }
+        if (page.getTotal() == 0) {
+            return;
+        }
+        for(MedicineReturnTemp medicineStore : page.getList()) {
+            if(null == medicineStore.getDosageId() || "".equals(medicineStore.getDosageId().trim())) {
+                medicineStore.setDosageId("999999999");
+            }
+            if(null == medicineStore.getDosageName() || "".equals(medicineStore.getDosageName().trim())) {
+                medicineStore.setDosageName("999999999");
+            }
+            if(null == medicineStore.getSpecification() || "".equals(medicineStore.getSpecification().trim())) {
+                medicineStore.setSpecification("999999999");
+            }
+            if(null == medicineStore.getManufacturer() || "".equals(medicineStore.getManufacturer().trim())) {
+                medicineStore.setManufacturer("999999999");
+            }
+            if(null == medicineStore.getPlace() || "".equals(medicineStore.getPlace().trim())) {
+                medicineStore.setPlace("999999999");
+            }
+            if(null == medicineStore.getPack() || "".equals(medicineStore.getPack().trim())) {
+                medicineStore.setPack("999999999");
+            }
+            if(null == medicineStore.getBatchNo() || "".equals(medicineStore.getBatchNo().trim())) {
+                medicineStore.setBatchNo("0000000000000");
+            }
+            if(null == medicineStore.getMedicineDeadline() || "".equals(medicineStore.getMedicineDeadline().trim())) {
+                medicineStore.setMedicineDeadline("0000000000000");
+            }
+            if(null == medicineStore.getBarCode() || "".equals(medicineStore.getBarCode().trim())) {
+                medicineStore.setBarCode("0000000000000");
+            }
+            if(null == medicineStore.getDeliveryCompany() || "".equals(medicineStore.getDeliveryCompany().trim())) {
+                medicineStore.setDeliveryCompany("999999999");
+            }
+            if(null == medicineStore.getItemCode() || "".equals(medicineStore.getItemCode().trim())) {
+                medicineStore.setItemCode("999999999");
+            }
+            if(null == medicineStore.getItemName() || "".equals(medicineStore.getItemName().trim())) {
+                medicineStore.setItemName("999999999");
+            }
+            if(null == medicineStore.getValidity() || "".equals(medicineStore.getValidity().trim())) {
+                medicineStore.setValidity("0000000000000");
+            }
+            if(null == medicineStore.getManufactureTime() || "".equals(medicineStore.getManufactureTime().trim())) {
+                medicineStore.setManufactureTime("0000-00-00");
+            }
+        }
+        Map<String, List<MedicineReturnTemp>> map =  page.getList()
+                .stream()
+                .collect(Collectors.groupingBy(MedicineReturnTemp::getStoreReturnCode));
+        for(Map.Entry<String, List<MedicineReturnTemp>> msMap:map.entrySet()){
+            MedicineReturnDto medicineReturnDto = new MedicineReturnDto();
+            medicineReturnDto.setStoreCode(clinic.getStoreCode());
             switch (flag) {
                 case MED_OUT:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        medicineReturnDao.listMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======西药销售出库记录======total=" + page.getTotal());
-                    break;
                 case CHI_MED_OUT:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        medicineReturnDao.listChinaMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======中药销售出库记录======total=" + page.getTotal());
+                    // 销售出库
+                    medicineReturnDto.setStockoutType(StockoutType.SELL);
                     break;
                 case MED_OUTTREASURY:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        medicineReturnDao.listMedicineOutTreasury(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======西药损耗/领用出库记录======total=" + page.getTotal());
-                    break;
                 case CHI_MED_OUTTREASURY:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        medicineReturnDao.listChinaMedicineOutTreasury(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======中药损耗/领用出库记录======total=" + page.getTotal());
+                    //
+                    medicineReturnDto.setStockoutType(StockoutType.LOSS);
                     break;
                 case MED_BACK:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        medicineReturnDao.listMedicineBack(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======西药采购退货出库记录======total=" + page.getTotal());
-                    break;
                 case CHI_MED_BACK:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        medicineReturnDao.listChinaMedicineBack(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======中药采购退货出库记录======total=" + page.getTotal());
+                    medicineReturnDto.setStockoutType(StockoutType.OUT_BOUND);
                     break;
                 case MED_INV:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        medicineReturnDao.listMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======西药盘点盘亏出库记录======total=" + page.getTotal());
-                    break;
                 case CHI_MED_INV:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        medicineReturnDao.listChinaMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======中药盘点盘亏出库记录======total=" + page.getTotal());
+                    medicineReturnDto.setStockoutType(StockoutType.ALLOT);
                     break;
             }
-            if (page.getTotal() == 0) {
-                continue;
-            }
-            Map<String, List<MedicineReturnTemp>> map =  page.getList()
+            medicineReturnDto.setStorePrecordCode("00000000");
+            medicineReturnDto.setReturnMan(msMap.getValue().get(0).getReturnMan());
+            medicineReturnDto.setReturnTime(msMap.getValue().get(0).getReturnTime());
+            medicineReturnDto.setStoreCode(clinic.getStoreCode());
+            medicineReturnDto.setStoreName(clinic.getStoreName());
+            medicineReturnDto.setStoreReturnCode(msMap.getKey());
+            medicineReturnDto.setStoreStorageCode(msMap.getValue().get(0).getStoreStorageCode());
+            List<MedicineReturn> list = msMap.getValue()
                     .stream()
-                    .collect(Collectors.groupingBy(MedicineReturnTemp::getStoreReturnCode));
-            for(Map.Entry<String, List<MedicineReturnTemp>> msMap:map.entrySet()){
-                MedicineReturnDto medicineReturnDto = new MedicineReturnDto();
-                medicineReturnDto.setStoreCode(clinic.getStoreCode());
+                    .map(MedicineReturnTemp::temp2MedRet)
+                    .collect(Collectors.toList());
+            // 西药部分 耗材西药分别上传 中药不需要处理
+            if(flag.equals(MED_OUT) || flag.equals(MED_OUTTREASURY) || flag.equals(MED_BACK) || flag.equals(MED_INV)){
+                Map<String, List<MedicineReturn>> medMap = list.stream().collect(Collectors.groupingBy(MedicineReturn::getItemType));
+                for(Map.Entry<String, List<MedicineReturn>> m : medMap.entrySet()) {
+                    if(m.getValue().size() > 0) {
+                        String f = ("1".equals(m.getKey())?"西药":"耗材");
+                        System.out.println(f + ",数量" + m.getValue().size());
+                        medicineReturnDto.setMedicineInfos(m.getValue());
+                        this.upload(medicineReturnDto, flag);
+                    }
+                }
+            }  else {
+                medicineReturnDto.setMedicineInfos(list);
+                this.upload(medicineReturnDto, flag);
+            }
+        }
+        if (page.getPages() > 1) {
+            PageInfo<MedicineReturnTemp> page1 = new PageInfo<>();
+            for(int i = 2; i <= page.getPages(); i++) {
                 switch (flag) {
                     case MED_OUT:
+                        page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            medicineReturnDao.listMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
+                        break;
                     case CHI_MED_OUT:
-                        // 销售出库
-                        medicineReturnDto.setStockoutType(StockoutType.SELL);
+                        page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            medicineReturnDao.listChinaMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
                         break;
                     case MED_OUTTREASURY:
+                        page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            medicineReturnDao.listMedicineOutTreasury(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
+                        break;
                     case CHI_MED_OUTTREASURY:
-                        //
-                        medicineReturnDto.setStockoutType(StockoutType.LOSS);
+                        page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            medicineReturnDao.listChinaMedicineOutTreasury(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
                         break;
                     case MED_BACK:
+                        page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            medicineReturnDao.listMedicineBack(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
+                        break;
                     case CHI_MED_BACK:
-                        medicineReturnDto.setStockoutType(StockoutType.OUT_BOUND);
+                        page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            medicineReturnDao.listChinaMedicineBack(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
                         break;
                     case MED_INV:
+                        page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            medicineReturnDao.listMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
+                        break;
                     case CHI_MED_INV:
-                        medicineReturnDto.setStockoutType(StockoutType.ALLOT);
+                        page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            medicineReturnDao.listChinaMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
                         break;
                 }
-                medicineReturnDto.setStorePrecordCode("00000000");
-                medicineReturnDto.setReturnMan(msMap.getValue().get(0).getReturnMan());
-                medicineReturnDto.setReturnTime(msMap.getValue().get(0).getReturnTime());
-                medicineReturnDto.setStoreCode(clinic.getStoreCode());
-                medicineReturnDto.setStoreReturnCode(msMap.getKey());
-                medicineReturnDto.setStoreStorageCode(msMap.getValue().get(0).getStoreStorageCode());
-                List<MedicineReturn> list = msMap.getValue()
-                        .stream()
-                        .map(MedicineReturnTemp::temp2MedRet)
-                        .collect(Collectors.toList());
-                // 西药部分 耗材西药分别上传 中药不需要处理
-                if(flag.equals(MED_OUT) || flag.equals(MED_OUTTREASURY) || flag.equals(MED_BACK) || flag.equals(MED_INV)){
-                    Map<String, List<MedicineReturn>> medMap = list.stream().collect(Collectors.groupingBy(MedicineReturn::getItemType));
-                    for(Map.Entry<String, List<MedicineReturn>> m : medMap.entrySet()) {
-                        if(m.getValue().size() > 0) {
-                            medicineReturnDto.setMedicineInfos(m.getValue());
-                            this.upload(medicineReturnDto, flag);
-                        }
+                for(MedicineReturnTemp medicineStore : page1.getList()) {
+                    if(null == medicineStore.getDosageId() || "".equals(medicineStore.getDosageId().trim())) {
+                        medicineStore.setDosageId("999999999");
+                    }
+                    if(null == medicineStore.getDosageName() || "".equals(medicineStore.getDosageName().trim())) {
+                        medicineStore.setDosageName("999999999");
+                    }
+                    if(null == medicineStore.getSpecification() || "".equals(medicineStore.getSpecification().trim())) {
+                        medicineStore.setSpecification("999999999");
+                    }
+                    if(null == medicineStore.getManufacturer() || "".equals(medicineStore.getManufacturer().trim())) {
+                        medicineStore.setManufacturer("999999999");
+                    }
+                    if(null == medicineStore.getPlace() || "".equals(medicineStore.getPlace().trim())) {
+                        medicineStore.setPlace("999999999");
+                    }
+                    if(null == medicineStore.getPack() || "".equals(medicineStore.getPack().trim())) {
+                        medicineStore.setPack("999999999");
+                    }
+                    if(null == medicineStore.getBatchNo() || "".equals(medicineStore.getBatchNo().trim())) {
+                        medicineStore.setBatchNo("0000000000000");
+                    }
+                    if(null == medicineStore.getMedicineDeadline() || "".equals(medicineStore.getMedicineDeadline().trim())) {
+                        medicineStore.setMedicineDeadline("0000000000000");
+                    }
+                    if(null == medicineStore.getBarCode() || "".equals(medicineStore.getBarCode().trim())) {
+                        medicineStore.setBarCode("0000000000000");
+                    }
+                    if(null == medicineStore.getDeliveryCompany() || "".equals(medicineStore.getDeliveryCompany().trim())) {
+                        medicineStore.setDeliveryCompany("999999999");
+                    }
+                    if(null == medicineStore.getItemCode() || "".equals(medicineStore.getItemCode().trim())) {
+                        medicineStore.setItemCode("999999999");
+                    }
+                    if(null == medicineStore.getItemName() || "".equals(medicineStore.getItemName().trim())) {
+                        medicineStore.setItemName("999999999");
+                    }
+                    if(null == medicineStore.getValidity() || "".equals(medicineStore.getValidity().trim())) {
+                        medicineStore.setValidity("0000000000000");
+                    }
+                    if(null == medicineStore.getManufactureTime() || "".equals(medicineStore.getManufactureTime().trim())) {
+                        medicineStore.setManufactureTime("0000-00-00");
                     }
-                }  else {
-                    medicineReturnDto.setMedicineInfos(list);
-                    this.upload(medicineReturnDto, flag);
                 }
-            }
-            if (page.getPages() > 1) {
-                PageInfo<MedicineReturnTemp> page1 = new PageInfo<>();
-                for(int i = 2; i <= page.getPages(); i++) {
+                Map<String, List<MedicineReturnTemp>> map1 =  page1.getList()
+                        .stream()
+                        .collect(Collectors.groupingBy(MedicineReturnTemp::getStoreReturnCode));
+                for(Map.Entry<String, List<MedicineReturnTemp>> msMap:map1.entrySet()){
+                    MedicineReturnDto medicineReturnDto = new MedicineReturnDto();
+                    medicineReturnDto.setStoreCode(clinic.getStoreCode());
                     switch (flag) {
                         case MED_OUT:
-                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                                medicineReturnDao.listMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======西药销售出库记录分页" + i + "======total=" + page.getTotal());
-                            break;
                         case CHI_MED_OUT:
-                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                                medicineReturnDao.listChinaMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======中药销售出库记录分页" + i + "======total=" + page.getTotal());
+                            medicineReturnDto.setStockoutType(StockoutType.SELL);
                             break;
                         case MED_OUTTREASURY:
-                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                                medicineReturnDao.listMedicineOutTreasury(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======西药损耗/领用出库记录分页" + i + "======total=" + page.getTotal());
-                            break;
                         case CHI_MED_OUTTREASURY:
-                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                                medicineReturnDao.listChinaMedicineOutTreasury(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======中药损耗/领用出库记录分页" + i + "======total=" + page.getTotal());
+                            medicineReturnDto.setStockoutType(StockoutType.ALLOT);
                             break;
                         case MED_BACK:
-                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                                medicineReturnDao.listMedicineBack(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======西药采购退货出库记录分页" + i + "======total=" + page.getTotal());
-                            break;
                         case CHI_MED_BACK:
-                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                                medicineReturnDao.listChinaMedicineBack(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======中药采购退货出库记录分页" + i + "======total=" + page.getTotal());
+                            medicineReturnDto.setStockoutType(StockoutType.OUT_BOUND);
                             break;
                         case MED_INV:
-                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                                medicineReturnDao.listMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======西药盘点盘亏出库记录分页" + i + "======total=" + page.getTotal());
-                            break;
                         case CHI_MED_INV:
-                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                                medicineReturnDao.listChinaMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======中药盘点盘亏出库记录分页" + i + "======total=" + page.getTotal());
+                            medicineReturnDto.setStockoutType(StockoutType.LOSS);
                             break;
                     }
-                    Map<String, List<MedicineReturnTemp>> map1 =  page1.getList()
+                    medicineReturnDto.setStorePrecordCode("00000000");
+                    medicineReturnDto.setReturnMan(msMap.getValue().get(0).getReturnMan());
+                    medicineReturnDto.setReturnTime(msMap.getValue().get(0).getReturnTime());
+                    medicineReturnDto.setStoreCode(clinic.getStoreCode());
+                    medicineReturnDto.setStoreReturnCode(msMap.getKey());
+                    medicineReturnDto.setStoreStorageCode(msMap.getValue().get(0).getStoreStorageCode());
+                    List<MedicineReturn> list = msMap.getValue()
                             .stream()
-                            .collect(Collectors.groupingBy(MedicineReturnTemp::getStoreReturnCode));
-                    for(Map.Entry<String, List<MedicineReturnTemp>> msMap:map1.entrySet()){
-                        MedicineReturnDto medicineReturnDto = new MedicineReturnDto();
-                        medicineReturnDto.setStoreCode(clinic.getStoreCode());
-                        switch (flag) {
-                            case MED_OUT:
-                            case CHI_MED_OUT:
-                                medicineReturnDto.setStockoutType(StockoutType.SELL);
-                                break;
-                            case MED_OUTTREASURY:
-                            case CHI_MED_OUTTREASURY:
-                                medicineReturnDto.setStockoutType(StockoutType.ALLOT);
-                                break;
-                            case MED_BACK:
-                            case CHI_MED_BACK:
-                                medicineReturnDto.setStockoutType(StockoutType.OUT_BOUND);
-                                break;
-                            case MED_INV:
-                            case CHI_MED_INV:
-                                medicineReturnDto.setStockoutType(StockoutType.LOSS);
-                                break;
-                        }
-                        medicineReturnDto.setStorePrecordCode("00000000");
-                        medicineReturnDto.setReturnMan(msMap.getValue().get(0).getReturnMan());
-                        medicineReturnDto.setReturnTime(msMap.getValue().get(0).getReturnTime());
-                        medicineReturnDto.setStoreCode(clinic.getStoreCode());
-                        medicineReturnDto.setStoreReturnCode(msMap.getKey());
-                        medicineReturnDto.setStoreStorageCode(msMap.getValue().get(0).getStoreStorageCode());
-                        List<MedicineReturn> list = msMap.getValue()
-                                .stream()
-                                .map(MedicineReturnTemp::temp2MedRet)
-                                .collect(Collectors.toList());
+                            .map(MedicineReturnTemp::temp2MedRet)
+                            .collect(Collectors.toList());
 
-                        if(flag.equals(MED_OUT) || flag.equals(MED_OUTTREASURY) || flag.equals(MED_BACK) || flag.equals(MED_INV)){
-                            Map<String, List<MedicineReturn>> medMap = list.stream().collect(Collectors.groupingBy(MedicineReturn::getItemType));
-                            for(Map.Entry<String, List<MedicineReturn>> m : medMap.entrySet()) {
-                                System.out.println(medicineReturnDto.getStoreCode() + "======" + ("1".equals(m.getKey())?"药品":"耗材"));
-                                if(m.getValue().size() > 0) {
-                                    medicineReturnDto.setMedicineInfos(m.getValue());
-                                    this.upload(medicineReturnDto, flag);
-                                }
+                    if(flag.equals(MED_OUT) || flag.equals(MED_OUTTREASURY) || flag.equals(MED_BACK) || flag.equals(MED_INV)){
+                        Map<String, List<MedicineReturn>> medMap = list.stream().collect(Collectors.groupingBy(MedicineReturn::getItemType));
+                        for(Map.Entry<String, List<MedicineReturn>> m : medMap.entrySet()) {
+                            if(m.getValue().size() > 0) {
+                                String f = ("1".equals(m.getKey())?"西药":"耗材");
+                                System.out.println(f + ",数量" + m.getValue().size());
+                                medicineReturnDto.setMedicineInfos(m.getValue());
+                                this.upload(medicineReturnDto, flag);
                             }
-                        } else {
-                            medicineReturnDto.setMedicineInfos(list);
-                            this.upload(medicineReturnDto, flag);
                         }
+                    } else {
+                        medicineReturnDto.setMedicineInfos(list);
+                        this.upload(medicineReturnDto, flag);
                     }
                 }
             }
-        };
-        long syncTime = System.currentTimeMillis();
-        log.info("出库执行用时--{}", startTime - syncTime);
+        }
     };
 
     public void upload (MedicineReturnDto medicineReturnDto, String flag) throws JsonProcessingException {
@@ -308,9 +395,9 @@ public class MedicineReturnService {
         }
         ObjectMapper objectMapper = new ObjectMapper();
         String params = objectMapper.writeValueAsString(medicineReturnDto);
-        BaseResult baseResult = RestTemplateUtil.postHttp(url, params);
+        BaseResult baseResult = RestTemplateUtil.postHttp(url, params, new HttpHeaders(), new BaseResult());
         if (null != baseResult && baseResult.isSuccess()) {
-            System.out.println(flagStr + "======" + medicineReturnDto.getStoreCode() + "======" + baseResult.getMessage());
+            log.info(medicineReturnDto.getStoreCode() + flagStr + baseResult.getMessage() + ",数量" + medicineReturnDto.getMedicineInfos().size());
         } else {
             log.error(flagStr + "------" + medicineReturnDto.getStoreCode() + "------" + baseResult.getMessage());
         }

+ 228 - 140
src/main/java/com/miyzh/service/MedicineStorageService.java

@@ -13,6 +13,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpHeaders;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
@@ -56,187 +57,274 @@ public class MedicineStorageService {
     private static final String MED_INV = "5"; //西药盘盈入库
     private static final String CHI_MED_INV = "6"; //中药盘盈入库
 
-    @Async
-    public void uploadMedicine(List<Clinic> clinicList, String flag) throws InterruptedException, JsonProcessingException {
-        long startTime = System.currentTimeMillis();
+    public void uploadMedicine(Clinic clinic, String flag) throws InterruptedException, JsonProcessingException {
+
         PageInfo<MedicineStorageTemp> page = new PageInfo<>();
-        for(Clinic clinic : clinicList) {
+        switch (flag) {
+            case MED_PUR:
+                System.out.println(clinic.getStoreCode() + "开始查询西药采购入库记录...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    medicineStorageDao.listMedicinePurchase(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步西药采购入库记录, 数量" + page.getTotal());
+                break;
+            case CHI_MED_PUR:
+                System.out.println(clinic.getStoreCode() + "开始查询中药采购入库记录...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    medicineStorageDao.listChinaMedicinePurchase(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步中药采购入库记录, 数量" + page.getTotal());
+                break;
+            case MED_MED_INBOUND:
+                System.out.println(clinic.getStoreCode() + "开始查询西药销售退回入库记录...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    medicineStorageDao.listMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步西药销售退回入库记录, 数量" + page.getTotal());
+                break;
+            case CHI_MED_INBOUND:
+                System.out.println(clinic.getStoreCode() + "开始查询中药销售退回入库记录...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    medicineStorageDao.listChinaMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步中药销售退回入库记录, 数量" + page.getTotal());
+                break;
+            case MED_INV:
+                System.out.println(clinic.getStoreCode() + "开始查询西药盘盈入库记录...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    medicineStorageDao.listMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步西药盘盈入库记录, 数量" + page.getTotal());
+                break;
+            case CHI_MED_INV:
+                System.out.println(clinic.getStoreCode() + "开始查询中药盘盈入库记录...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    medicineStorageDao.listChinaMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步中药盘盈入库记录, 数量" + page.getTotal());
+                break;
+        }
+        if (page.getTotal() == 0) {
+            return;
+        }
+        for(MedicineStorageTemp medicineStore : page.getList()) {
+            if(null == medicineStore.getDosageId() || "".equals(medicineStore.getDosageId().trim())) {
+                medicineStore.setDosageId("999999999");
+            }
+            if(null == medicineStore.getDosageName() || "".equals(medicineStore.getDosageName().trim())) {
+                medicineStore.setDosageName("999999999");
+            }
+            if(null == medicineStore.getSpecification() || "".equals(medicineStore.getSpecification().trim())) {
+                medicineStore.setSpecification("999999999");
+            }
+            if(null == medicineStore.getManufacturer() || "".equals(medicineStore.getManufacturer().trim())) {
+                medicineStore.setManufacturer("999999999");
+            }
+            if(null == medicineStore.getPlace() || "".equals(medicineStore.getPlace().trim())) {
+                medicineStore.setPlace("999999999");
+            }
+            if(null == medicineStore.getPack() || "".equals(medicineStore.getPack().trim())) {
+                medicineStore.setPack("999999999");
+            }
+            if(null == medicineStore.getBatchNo() || "".equals(medicineStore.getBatchNo().trim())) {
+                medicineStore.setBatchNo("0000000000000");
+            }
+            if(null == medicineStore.getMedicineDeadline() || "".equals(medicineStore.getMedicineDeadline().trim())) {
+                medicineStore.setMedicineDeadline("0000000000000");
+            }
+            if(null == medicineStore.getBarCode() || "".equals(medicineStore.getBarCode().trim())) {
+                medicineStore.setBarCode("0000000000000");
+            }
+            if(null == medicineStore.getDeliveryCompany() || "".equals(medicineStore.getDeliveryCompany().trim())) {
+                medicineStore.setDeliveryCompany("999999999");
+            }
+            if(null == medicineStore.getItemCode() || "".equals(medicineStore.getItemCode().trim())) {
+                medicineStore.setItemCode("999999999");
+            }
+            if(null == medicineStore.getItemName() || "".equals(medicineStore.getItemName().trim())) {
+                medicineStore.setItemName("999999999");
+            }
+            if(null == medicineStore.getValidity() || "".equals(medicineStore.getValidity().trim())) {
+                medicineStore.setValidity("0000000000000");
+            }
+            if(null == medicineStore.getManufactureTime() || "".equals(medicineStore.getManufactureTime().trim())) {
+                medicineStore.setManufactureTime("0000-00-00");
+            }
+        }
+        Map<String, List<MedicineStorageTemp>> map =  page.getList()
+                .stream()
+                .collect(Collectors.groupingBy(MedicineStorageTemp::getStoreStorageCode));
+        for(Map.Entry<String, List<MedicineStorageTemp>> msMap:map.entrySet()){
+            MedicineStorageDto medicineStorageDto = new MedicineStorageDto();
+            medicineStorageDto.setStoreCode(clinic.getStoreCode());
             switch (flag) {
                 case MED_PUR:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        medicineStorageDao.listMedicinePurchase(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======查询西药采购入库列表======total=" + page.getTotal());
-                    break;
                 case CHI_MED_PUR:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        medicineStorageDao.listChinaMedicinePurchase(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======查询中药采购入库列表======total=" + page.getTotal());
+                    medicineStorageDto.setStorePurchaseType("5");
+                    medicineStorageDto.setStorageType(StorageType.PUR);
                     break;
                 case MED_MED_INBOUND:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        medicineStorageDao.listMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======查询西药销售退回入库列表======total=" + page.getTotal());
-                    break;
                 case CHI_MED_INBOUND:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        medicineStorageDao.listChinaMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======中药销售退回入库列表======total=" + page.getTotal());
+                    medicineStorageDto.setStorageType(StorageType.INBOUND);
                     break;
                 case MED_INV:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        medicineStorageDao.listMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======西药盘盈入库列表======total=" + page.getTotal());
-                    break;
                 case CHI_MED_INV:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        medicineStorageDao.listChinaMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======中药盘盈入库列表======total=" + page.getTotal());
+                    medicineStorageDto.setStorageType(StorageType.CHI_MED_INBOUND);
                     break;
             }
-            if (page.getTotal() == 0) {
-                continue;
-            }
-            Map<String, List<MedicineStorageTemp>> map =  page.getList()
+            medicineStorageDto.setStorePrecordCode("00000000");
+            medicineStorageDto.setStorageMan(msMap.getValue().get(0).getStorageMan());
+            medicineStorageDto.setStorageTime(msMap.getValue().get(0).getStorageTime());
+            medicineStorageDto.setStoreCode(clinic.getStoreCode());
+            medicineStorageDto.setStoreStorageCode(msMap.getKey());
+            List<MedicineStorage> list = msMap.getValue()
                     .stream()
-                    .collect(Collectors.groupingBy(MedicineStorageTemp::getStoreStorageCode));
-            for(Map.Entry<String, List<MedicineStorageTemp>> msMap:map.entrySet()){
-                MedicineStorageDto medicineStorageDto = new MedicineStorageDto();
-                medicineStorageDto.setStoreCode(clinic.getStoreCode());
+                    .map(MedicineStorageTemp::temp2MedSto)
+                    .collect(Collectors.toList());
+
+            // 西药部分 耗材西药分别上传 中药不需要处理
+            if(flag.equals(MED_PUR) || flag.equals(MED_MED_INBOUND) || flag.equals(MED_INV)){
+                Map<String, List<MedicineStorage>> medMap = list.stream().collect(Collectors.groupingBy(MedicineStorage::getItemType));
+                for(Map.Entry<String, List<MedicineStorage>> m : medMap.entrySet()) {
+                    if(m.getValue().size() > 0) {
+                        String f = ("1".equals(m.getKey())?"西药":"耗材");
+                        System.out.println(f + "数量" + m.getValue().size());
+                        medicineStorageDto.setMedicineInfos(m.getValue());
+                        this.upload(medicineStorageDto, flag);
+                    }
+                }
+            }  else {
+                medicineStorageDto.setMedicineInfos(list);
+                this.upload(medicineStorageDto, flag);
+            }
+        }
+        if (page.getPages() > 1) {
+            PageInfo<MedicineStorageTemp> page1 = new PageInfo<>();
+            for(int i = 2; i <= page.getPages(); i++) {
                 switch (flag) {
                     case MED_PUR:
+                        page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
+                            medicineStorageDao.listMedicinePurchase(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
+                        break;
                     case CHI_MED_PUR:
-                        medicineStorageDto.setStorePurchaseType("5");
-                        medicineStorageDto.setStorageType(StorageType.PUR);
+                        page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
+                            medicineStorageDao.listChinaMedicinePurchase(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
                         break;
                     case MED_MED_INBOUND:
+                        page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
+                            medicineStorageDao.listMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
+                        break;
                     case CHI_MED_INBOUND:
-                        medicineStorageDto.setStorageType(StorageType.INBOUND);
+                        page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
+                            medicineStorageDao.listChinaMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
                         break;
                     case MED_INV:
+                        page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
+                            medicineStorageDao.listMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
+                        break;
                     case CHI_MED_INV:
-                        medicineStorageDto.setStorageType(StorageType.CHI_MED_INBOUND);
+                        page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
+                            medicineStorageDao.listChinaMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
                         break;
                 }
-                medicineStorageDto.setStorePrecordCode("00000000");
-                medicineStorageDto.setStorageMan(msMap.getValue().get(0).getStorageMan());
-                medicineStorageDto.setStorageTime(msMap.getValue().get(0).getStorageTime());
-                medicineStorageDto.setStoreCode(clinic.getStoreCode());
-                medicineStorageDto.setStoreStorageCode(msMap.getKey());
-                List<MedicineStorage> list = msMap.getValue()
-                        .stream()
-                        .map(MedicineStorageTemp::temp2MedSto)
-                        .collect(Collectors.toList());
-
-                // 西药部分 耗材西药分别上传 中药不需要处理
-                if(flag.equals(MED_PUR) || flag.equals(MED_MED_INBOUND) || flag.equals(MED_INV)){
-                    Map<String, List<MedicineStorage>> medMap = list.stream().collect(Collectors.groupingBy(MedicineStorage::getItemType));
-                    for(Map.Entry<String, List<MedicineStorage>> m : medMap.entrySet()) {
-                        if(m.getValue().size() > 0) {
-                            medicineStorageDto.setMedicineInfos(m.getValue());
-                            this.upload(medicineStorageDto, flag);
-                        }
+                for(MedicineStorageTemp medicineStore : page1.getList()) {
+                    if(null == medicineStore.getDosageId() || "".equals(medicineStore.getDosageId().trim())) {
+                        medicineStore.setDosageId("999999999");
+                    }
+                    if(null == medicineStore.getDosageName() || "".equals(medicineStore.getDosageName().trim())) {
+                        medicineStore.setDosageName("999999999");
+                    }
+                    if(null == medicineStore.getSpecification() || "".equals(medicineStore.getSpecification().trim())) {
+                        medicineStore.setSpecification("999999999");
+                    }
+                    if(null == medicineStore.getManufacturer() || "".equals(medicineStore.getManufacturer().trim())) {
+                        medicineStore.setManufacturer("999999999");
+                    }
+                    if(null == medicineStore.getPlace() || "".equals(medicineStore.getPlace().trim())) {
+                        medicineStore.setPlace("999999999");
+                    }
+                    if(null == medicineStore.getPack() || "".equals(medicineStore.getPack().trim())) {
+                        medicineStore.setPack("999999999");
+                    }
+                    if(null == medicineStore.getBatchNo() || "".equals(medicineStore.getBatchNo().trim())) {
+                        medicineStore.setBatchNo("0000000000000");
+                    }
+                    if(null == medicineStore.getMedicineDeadline() || "".equals(medicineStore.getMedicineDeadline().trim())) {
+                        medicineStore.setMedicineDeadline("0000000000000");
+                    }
+                    if(null == medicineStore.getBarCode() || "".equals(medicineStore.getBarCode().trim())) {
+                        medicineStore.setBarCode("0000000000000");
+                    }
+                    if(null == medicineStore.getDeliveryCompany() || "".equals(medicineStore.getDeliveryCompany().trim())) {
+                        medicineStore.setDeliveryCompany("999999999");
+                    }
+                    if(null == medicineStore.getItemCode() || "".equals(medicineStore.getItemCode().trim())) {
+                        medicineStore.setItemCode("999999999");
+                    }
+                    if(null == medicineStore.getItemName() || "".equals(medicineStore.getItemName().trim())) {
+                        medicineStore.setItemName("999999999");
+                    }
+                    if(null == medicineStore.getValidity() || "".equals(medicineStore.getValidity().trim())) {
+                        medicineStore.setValidity("0000000000000");
+                    }
+                    if(null == medicineStore.getManufactureTime() || "".equals(medicineStore.getManufactureTime().trim())) {
+                        medicineStore.setManufactureTime("0000-00-00");
                     }
-                }  else {
-                    medicineStorageDto.setMedicineInfos(list);
-                    this.upload(medicineStorageDto, flag);
                 }
-            }
-            if (page.getPages() > 1) {
-                PageInfo<MedicineStorageTemp> page1 = new PageInfo<>();
-                for(int i = 2; i <= page.getPages(); i++) {
+                Map<String, List<MedicineStorageTemp>> map1 =  page1.getList()
+                        .stream()
+                        .collect(Collectors.groupingBy(MedicineStorageTemp::getStoreStorageCode));
+                for(Map.Entry<String, List<MedicineStorageTemp>> msMap:map1.entrySet()){
+                    MedicineStorageDto medicineStorageDto = new MedicineStorageDto();
+                    medicineStorageDto.setStoreCode(clinic.getStoreCode());
                     switch (flag) {
                         case MED_PUR:
-                            page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
-                                medicineStorageDao.listMedicinePurchase(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======查询西药采购入库分页" + i + "======total=" + page.getTotal());
-                            break;
                         case CHI_MED_PUR:
-                            page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
-                                medicineStorageDao.listChinaMedicinePurchase(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======查询中药采购入库分页" + i + "======total=" + page.getTotal() );
+                            medicineStorageDto.setStorePurchaseType("5");
+                            medicineStorageDto.setStorageType(StorageType.PUR);
                             break;
                         case MED_MED_INBOUND:
-                            page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
-                                medicineStorageDao.listMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======查询西药销售退回入库分页" + i + "======total=" + page.getTotal());
-                            break;
                         case CHI_MED_INBOUND:
-                            page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
-                                medicineStorageDao.listChinaMedicineOutbound(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======查询中药销售退回入库分页" + i + "======total=" + page.getTotal());
+                            medicineStorageDto.setStorageType(StorageType.INBOUND);
                             break;
                         case MED_INV:
-                            page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
-                                medicineStorageDao.listMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======查询西药盘盈入库分页" + i + "======total=" + page.getTotal());
-                            break;
                         case CHI_MED_INV:
-                            page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
-                                medicineStorageDao.listChinaMedicineInventory(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======查询中药销售退回入库上传分页" + i + "======total=" + page.getTotal());
+                            medicineStorageDto.setStorageType(StorageType.CHI_MED_INBOUND);
                             break;
                     }
-                    Map<String, List<MedicineStorageTemp>> map1 =  page1.getList()
+                    medicineStorageDto.setStorePrecordCode("00000000");
+                    medicineStorageDto.setStorageMan(msMap.getValue().get(0).getStorageMan());
+                    medicineStorageDto.setStorageTime(msMap.getValue().get(0).getStorageTime());
+                    medicineStorageDto.setStoreCode(clinic.getStoreCode());
+                    medicineStorageDto.setStoreName(clinic.getStoreName());
+                    medicineStorageDto.setStoreStorageCode(msMap.getKey());
+                    List<MedicineStorage> list = msMap.getValue()
                             .stream()
-                            .collect(Collectors.groupingBy(MedicineStorageTemp::getStoreStorageCode));
-                    for(Map.Entry<String, List<MedicineStorageTemp>> msMap:map1.entrySet()){
-                        MedicineStorageDto medicineStorageDto = new MedicineStorageDto();
-                        medicineStorageDto.setStoreCode(clinic.getStoreCode());
-                        switch (flag) {
-                            case MED_PUR:
-                            case CHI_MED_PUR:
-                                medicineStorageDto.setStorePurchaseType("5");
-                                medicineStorageDto.setStorageType(StorageType.PUR);
-                                break;
-                            case MED_MED_INBOUND:
-                            case CHI_MED_INBOUND:
-                                medicineStorageDto.setStorageType(StorageType.INBOUND);
-                                break;
-                            case MED_INV:
-                            case CHI_MED_INV:
-                                medicineStorageDto.setStorageType(StorageType.CHI_MED_INBOUND);
-                                break;
-                        }
-                        medicineStorageDto.setStorePrecordCode("00000000");
-                        medicineStorageDto.setStorageMan(msMap.getValue().get(0).getStorageMan());
-                        medicineStorageDto.setStorageTime(msMap.getValue().get(0).getStorageTime());
-                        medicineStorageDto.setStoreCode(clinic.getStoreCode());
-                        medicineStorageDto.setStoreStorageCode(msMap.getKey());
-                        List<MedicineStorage> list = msMap.getValue()
-                                .stream()
-                                .map(MedicineStorageTemp::temp2MedSto)
-                                .collect(Collectors.toList());
-                        if(flag.equals(MED_PUR) || flag.equals(MED_MED_INBOUND) || flag.equals(MED_INV)){
-                            Map<String, List<MedicineStorage>> medMap = list.stream().collect(Collectors.groupingBy(MedicineStorage::getItemType));
-                            for(Map.Entry<String, List<MedicineStorage>> m : medMap.entrySet()) {
-                                System.out.println(medicineStorageDto.getStoreCode() + "======" + ("1".equals(m.getKey())?"药品":"耗材"));
-                                if(m.getValue().size() > 0) {
-                                    medicineStorageDto.setMedicineInfos(m.getValue());
-                                    this.upload(medicineStorageDto, flag);
-                                }
+                            .map(MedicineStorageTemp::temp2MedSto)
+                            .collect(Collectors.toList());
+                    if(flag.equals(MED_PUR) || flag.equals(MED_MED_INBOUND) || flag.equals(MED_INV)){
+                        Map<String, List<MedicineStorage>> medMap = list.stream().collect(Collectors.groupingBy(MedicineStorage::getItemType));
+                        for(Map.Entry<String, List<MedicineStorage>> m : medMap.entrySet()) {
+                            if(m.getValue().size() > 0) {
+                                String f = ("1".equals(m.getKey())?"西药":"耗材");
+                                System.out.println(f + "数量" + m.getValue().size());
+                                medicineStorageDto.setMedicineInfos(m.getValue());
+                                this.upload(medicineStorageDto, flag);
                             }
-                        }  else {
-                            medicineStorageDto.setMedicineInfos(list);
-                            this.upload(medicineStorageDto, flag);
                         }
+                    }  else {
+                        medicineStorageDto.setMedicineInfos(list);
+                        this.upload(medicineStorageDto, flag);
                     }
                 }
             }
-        };
-        long syncTime = System.currentTimeMillis();
-        log.info("入库上传用时--{}", startTime - syncTime);
+        }
     };
 
     public void upload (MedicineStorageDto storageDtoInfo, String flag) throws InterruptedException, JsonProcessingException {
@@ -263,9 +351,9 @@ public class MedicineStorageService {
         }
         ObjectMapper objectMapper = new ObjectMapper();
         String params = objectMapper.writeValueAsString(storageDtoInfo);
-        BaseResult baseResult = RestTemplateUtil.postHttp(url, params);
+        BaseResult baseResult = RestTemplateUtil.postHttp(url, params, new HttpHeaders(), new BaseResult());
         if (null != baseResult && baseResult.isSuccess()) {
-            System.out.println(flagStr + "======" + storageDtoInfo.getStoreCode() + "======" + baseResult.getMessage());
+            log.info(storageDtoInfo.getStoreCode() + flagStr + baseResult.getMessage() + ",数量" + storageDtoInfo.getMedicineInfos().size());
         } else {
             log.error(flagStr + "------" + storageDtoInfo.getStoreCode() + "------" + baseResult.getMessage());
         }

+ 246 - 64
src/main/java/com/miyzh/service/MedicineStoreService.java

@@ -1,5 +1,6 @@
 package com.miyzh.service;
 
+import com.alibaba.druid.util.StringUtils;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
@@ -13,9 +14,11 @@ import com.miyzh.utils.RestTemplateUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpHeaders;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
+import java.lang.reflect.Field;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.List;
@@ -47,90 +50,269 @@ public class MedicineStoreService {
     @Value("${update.count}")
     public Integer count;
 
-    @Async
-    public void uploadMedicine(List<Clinic> clinicList) throws Exception {
-        long startTime = System.currentTimeMillis();
+    public void uploadMedicine(Clinic clinic) throws Exception {
+        System.out.println(clinic.getStoreCode() + "开始查询西药库存记录...");
         MedicineStoreDto storeInfo = new MedicineStoreDto();
         storeInfo.setCheckMan("");
         storeInfo.setCheckTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss")));
-        for(Clinic clinic : clinicList) {
-            System.out.println(clinic.getStoreCode());
-            storeInfo.setStoreCode(clinic.getStoreCode());
-            PageInfo<MedicineStore> page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                medicineStoreDao.listMedicineStore(clinic.getClinicId(), startDate, endDate, dateType, count);
-            });
-            System.out.println(clinic.getStoreCode() + "======西药库存记录======total=" + page.getTotal());
-            if (page.getTotal() == 0) {
-                continue;
-            }
-            Map<String, List<MedicineStore>> map = page.getList().stream().collect(Collectors.groupingBy(MedicineStore::getItemType));
-            for(Map.Entry<String, List<MedicineStore>> m : map.entrySet()) {
-                if(m.getValue().size() > 0) {
-                    System.out.println(storeInfo.getStoreCode() + "======" + ("1".equals(m.getKey())?"药品":"耗材"));
-                    storeInfo.setMedicineInfos(m.getValue());
-                    this.upload(storeInfo, "西药库存同步");
-                }
+        storeInfo.setStoreCode(clinic.getStoreCode());
+        storeInfo.setStoreName(clinic.getStoreName());
+        PageInfo<MedicineStore> page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+            medicineStoreDao.listMedicineStore(clinic.getClinicId(), startDate, endDate, dateType, count);
+        });
+        Long total = page.getTotal();
+        System.out.println(clinic.getStoreCode() + "开始同步西药库存记录,数量" + total);
+        if (total == 0) {
+            return;
+        }
+        for(MedicineStore medicineStore : page.getList()) {
+            if(null == medicineStore.getDosageId() || "".equals(medicineStore.getDosageId())) {
+                medicineStore.setDosageId("999999999");
+            }
+            if(null == medicineStore.getDosageName() || "".equals(medicineStore.getDosageName())) {
+                medicineStore.setDosageName("999999999");
+            }
+            if(null == medicineStore.getSpecification() || "".equals(medicineStore.getSpecification())) {
+                medicineStore.setSpecification("999999999");
+            }
+            if(null == medicineStore.getManufacturer() || "".equals(medicineStore.getManufacturer())) {
+                medicineStore.setManufacturer("999999999");
+            }
+            if(null == medicineStore.getPlace() || "".equals(medicineStore.getPlace())) {
+                medicineStore.setPlace("999999999");
+            }
+            if(null == medicineStore.getPack() || "".equals(medicineStore.getPack())) {
+                medicineStore.setPack("999999999");
+            }
+            if(null == medicineStore.getBatchNo() || "".equals(medicineStore.getBatchNo())) {
+                medicineStore.setBatchNo("0000000000000");
+            }
+            if(null == medicineStore.getValidity() || "".equals(medicineStore.getValidity())) {
+                medicineStore.setValidity("0000000000000");
+            }
+            if(null == medicineStore.getManufactureTime() || "".equals(medicineStore.getManufactureTime())) {
+                medicineStore.setManufactureTime("0000-00-00");
+            }
+            if(null == medicineStore.getMedicineDeadline() || "".equals(medicineStore.getMedicineDeadline())) {
+                medicineStore.setMedicineDeadline("0000000000000");
+            }
+            if(null == medicineStore.getBarCode() || "".equals(medicineStore.getBarCode())) {
+                medicineStore.setBarCode("0000000000000");
+            }
+            if(null == medicineStore.getDeliveryCompany() || "".equals(medicineStore.getDeliveryCompany())) {
+                medicineStore.setDeliveryCompany("999999999");
+            }
+            if(null == medicineStore.getItemCode() || "".equals(medicineStore.getItemCode())) {
+                medicineStore.setItemCode("999999999");
+            }
+            if(null == medicineStore.getItemName() || "".equals(medicineStore.getItemName())) {
+                medicineStore.setItemName("999999999");
+            }
+            if(null == medicineStore.getPrice() || "".equals(medicineStore.getPrice().trim())) {
+                medicineStore.setPrice("999999999");
+            }
+        }
+        Map<String, List<MedicineStore>> map = page.getList().stream().collect(Collectors.groupingBy(MedicineStore::getItemType));
+        for(Map.Entry<String, List<MedicineStore>> m : map.entrySet()) {
+            if(m.getValue().size() > 0) {
+                String flag = ("1".equals(m.getKey())?"西药":"耗材");
+                storeInfo.setMedicineInfos(m.getValue());
+                this.upload(storeInfo, flag + "库存同步");
             }
-            if (page.getPages() > 1) {
-                for(int i = 2; i <= page.getPages(); i++) {
-                    PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
-                        medicineStoreDao.listMedicineStore(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======西药库存记录分页======" + i + "total=" + page.getTotal());
-                    Map<String, List<MedicineStore>> map1 = page.getList().stream().collect(Collectors.groupingBy(MedicineStore::getItemType));
-                    for(Map.Entry<String, List<MedicineStore>> m : map1.entrySet()) {
-                        if(m.getValue().size() > 0) {
-                            System.out.println(storeInfo.getStoreCode() + "======" + ("1".equals(m.getKey())?"药品":"耗材"));
-                            storeInfo.setMedicineInfos(m.getValue());
-                            this.upload(storeInfo, "西药库存分页同步");
-                        }
+        }
+        if (page.getPages() > 1) {
+            for(int i = 2; i <= page.getPages(); i++) {
+                PageInfo<MedicineStore> page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
+                    medicineStoreDao.listMedicineStore(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                for(MedicineStore medicineStore : page1.getList()) {
+                    if(null == medicineStore.getDosageId() || "".equals(medicineStore.getDosageId().trim())) {
+                        medicineStore.setDosageId("999999999");
+                    }
+                    if(null == medicineStore.getDosageName() || "".equals(medicineStore.getDosageName().trim())) {
+                        medicineStore.setDosageName("999999999");
+                    }
+                    if(null == medicineStore.getSpecification() || "".equals(medicineStore.getSpecification().trim())) {
+                        medicineStore.setSpecification("999999999");
+                    }
+                    if(null == medicineStore.getManufacturer() || "".equals(medicineStore.getManufacturer().trim())) {
+                        medicineStore.setManufacturer("999999999");
+                    }
+                    if(null == medicineStore.getPlace() || "".equals(medicineStore.getPlace().trim())) {
+                        medicineStore.setPlace("999999999");
+                    }
+                    if(null == medicineStore.getPack() || "".equals(medicineStore.getPack().trim())) {
+                        medicineStore.setPack("999999999");
+                    }
+                    if(null == medicineStore.getBatchNo() || "".equals(medicineStore.getBatchNo().trim())) {
+                        medicineStore.setBatchNo("0000000000000");
+                    }
+                    if(null == medicineStore.getMedicineDeadline() || "".equals(medicineStore.getMedicineDeadline().trim())) {
+                        medicineStore.setMedicineDeadline("0000000000000");
+                    }
+                    if(null == medicineStore.getBarCode() || "".equals(medicineStore.getBarCode().trim())) {
+                        medicineStore.setBarCode("0000000000000");
+                    }
+                    if(null == medicineStore.getDeliveryCompany() || "".equals(medicineStore.getDeliveryCompany().trim())) {
+                        medicineStore.setDeliveryCompany("999999999");
+                    }
+                    if(null == medicineStore.getItemCode() || "".equals(medicineStore.getItemCode().trim())) {
+                        medicineStore.setItemCode("999999999");
+                    }
+                    if(null == medicineStore.getValidity() || "".equals(medicineStore.getValidity().trim())) {
+                        medicineStore.setValidity("0000000000000");
+                    }
+                    if(null == medicineStore.getManufactureTime() || "".equals(medicineStore.getManufactureTime().trim())) {
+                        medicineStore.setManufactureTime("0000-00-00");
+                    }
+                    if(null == medicineStore.getItemName() || "".equals(medicineStore.getItemName().trim())) {
+                        medicineStore.setItemName("999999999");
+                    }
+                    if(null == medicineStore.getPrice() || "".equals(medicineStore.getPrice().trim())) {
+                        medicineStore.setPrice("999999999");
+                    }
+                }
+                Map<String, List<MedicineStore>> map1 = page1.getList().stream().collect(Collectors.groupingBy(MedicineStore::getItemType));
+                for(Map.Entry<String, List<MedicineStore>> m : map1.entrySet()) {
+                    if(m.getValue().size() > 0) {
+                        String flag = ("1".equals(m.getKey())?"西药":"耗材");
+                        System.out.println(flag + ",数量" + m.getValue().size());
+                        storeInfo.setMedicineInfos(m.getValue());
+                        this.upload(storeInfo, flag + "库存分页同步");
                     }
                 }
             }
-        };
-        long syncTime = System.currentTimeMillis();
-        log.info("西药库存同步方法执行用时--{}", startTime - syncTime);
+        }
     };
 
-    @Async
-    public void uploadChinaMedicine(List<Clinic> clinicList) throws Exception {
-        long startTime = System.currentTimeMillis();
+    public void uploadChinaMedicine(Clinic clinic) throws Exception {
+        System.out.println(clinic.getStoreCode() + "开始查询中药库存记录...");
         MedicineStoreDto storeInfo = new MedicineStoreDto();
         storeInfo.setCheckMan("");
         storeInfo.setCheckTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss")));
-        for(Clinic clinic : clinicList) {
-            System.out.println(clinic.getStoreCode());
-            storeInfo.setStoreCode(clinic.getStoreCode());
-            PageInfo<MedicineStore> page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                medicineStoreDao.listChinaMedicineStore(clinic.getClinicId(), startDate, endDate, dateType, count);
-            });
-            System.out.println(clinic.getStoreCode() + "======中药库存记录======total=" + page.getTotal());
-            if (page.getTotal() == 0) {
-                continue;
-            }
-            storeInfo.setMedicineInfos(page.getList());
-            this.upload(storeInfo, "中药库存同步");
-            if (page.getPages() > 1) {
-                for(int i = 2; i <= page.getPages(); i++) {
-                    PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
-                        medicineStoreDao.listChinaMedicineStore(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======中药库存记录分页======" + i + "total=" + page.getTotal());
-                    storeInfo.setMedicineInfos(page.getList());
-                    this.upload(storeInfo, "中药库存分页同步");
+        storeInfo.setStoreCode(clinic.getStoreCode());
+        storeInfo.setStoreName(clinic.getStoreName());
+        PageInfo<MedicineStore> page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+            medicineStoreDao.listChinaMedicineStore(clinic.getClinicId(), startDate, endDate, dateType, count);
+        });
+        Long total = page.getTotal();
+        System.out.println(clinic.getStoreCode() + "开始同步中药库存记录" + ",数量" + total);
+        if (page.getTotal() == 0) {
+            return;
+        }
+        storeInfo.setMedicineInfos(page.getList());
+        for(MedicineStore medicineStore : page.getList()) {
+            if(null == medicineStore.getDosageId() || "".equals(medicineStore.getDosageId().trim())) {
+                medicineStore.setDosageId("999999999");
+            }
+            if(null == medicineStore.getDosageName() || "".equals(medicineStore.getDosageName().trim())) {
+                medicineStore.setDosageName("999999999");
+            }
+            if(null == medicineStore.getSpecification() || "".equals(medicineStore.getSpecification().trim())) {
+                medicineStore.setSpecification("999999999");
+            }
+            if(null == medicineStore.getManufacturer() || "".equals(medicineStore.getManufacturer().trim())) {
+                medicineStore.setManufacturer("999999999");
+            }
+            if(null == medicineStore.getPlace() || "".equals(medicineStore.getPlace().trim())) {
+                medicineStore.setPlace("999999999");
+            }
+            if(null == medicineStore.getPack() || "".equals(medicineStore.getPack().trim())) {
+                medicineStore.setPack("999999999");
+            }
+            if(null == medicineStore.getBatchNo() || "".equals(medicineStore.getBatchNo().trim())) {
+                medicineStore.setBatchNo("0000000000000");
+            }
+            if(null == medicineStore.getMedicineDeadline() || "".equals(medicineStore.getMedicineDeadline().trim())) {
+                medicineStore.setMedicineDeadline("0000000000000");
+            }
+            if(null == medicineStore.getBarCode() || "".equals(medicineStore.getBarCode().trim())) {
+                medicineStore.setBarCode("0000000000000");
+            }
+            if(null == medicineStore.getDeliveryCompany() || "".equals(medicineStore.getDeliveryCompany().trim())) {
+                medicineStore.setDeliveryCompany("999999999");
+            }
+            if(null == medicineStore.getItemCode() || "".equals(medicineStore.getItemCode().trim())) {
+                medicineStore.setItemCode("999999999");
+            }
+            if(null == medicineStore.getItemName() || "".equals(medicineStore.getItemName().trim())) {
+                medicineStore.setItemName("999999999");
+            }
+            if(null == medicineStore.getValidity() || "".equals(medicineStore.getValidity().trim())) {
+                medicineStore.setValidity("0000000000000");
+            }
+            if(null == medicineStore.getManufactureTime() || "".equals(medicineStore.getManufactureTime().trim())) {
+                medicineStore.setManufactureTime("0000-00-00");
+            }
+            if(null == medicineStore.getPrice() || "".equals(medicineStore.getPrice().trim())) {
+                medicineStore.setPrice("999999999");
+            }
+        }
+        this.upload(storeInfo, "中药库存同步");
+        if (page.getPages() > 1) {
+            for(int i = 2; i <= page.getPages(); i++) {
+                PageInfo<MedicineStore> page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
+                    medicineStoreDao.listChinaMedicineStore(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                for(MedicineStore medicineStore : page1.getList()) {
+                    if(null == medicineStore.getDosageId() || "".equals(medicineStore.getDosageId().trim())) {
+                        medicineStore.setDosageId("999999999");
+                    }
+                    if(null == medicineStore.getDosageName() || "".equals(medicineStore.getDosageName().trim())) {
+                        medicineStore.setDosageName("999999999");
+                    }
+                    if(null == medicineStore.getSpecification() || "".equals(medicineStore.getSpecification().trim())) {
+                        medicineStore.setSpecification("999999999");
+                    }
+                    if(null == medicineStore.getManufacturer() || "".equals(medicineStore.getManufacturer().trim())) {
+                        medicineStore.setManufacturer("999999999");
+                    }
+                    if(null == medicineStore.getPlace() || "".equals(medicineStore.getPlace().trim())) {
+                        medicineStore.setPlace("999999999");
+                    }
+                    if(null == medicineStore.getPack() || "".equals(medicineStore.getPack().trim())) {
+                        medicineStore.setPack("999999999");
+                    }
+                    if(null == medicineStore.getBatchNo() || "".equals(medicineStore.getBatchNo().trim())) {
+                        medicineStore.setBatchNo("0000000000000");
+                    }
+                    if(null == medicineStore.getMedicineDeadline() || "".equals(medicineStore.getMedicineDeadline().trim())) {
+                        medicineStore.setMedicineDeadline("0000000000000");
+                    }
+                    if(null == medicineStore.getBarCode() || "".equals(medicineStore.getBarCode().trim())) {
+                        medicineStore.setBarCode("0000000000000");
+                    }
+                    if(null == medicineStore.getDeliveryCompany() || "".equals(medicineStore.getDeliveryCompany().trim())) {
+                        medicineStore.setDeliveryCompany("999999999");
+                    }
+                    if(null == medicineStore.getItemCode() || "".equals(medicineStore.getItemCode().trim())) {
+                        medicineStore.setItemCode("999999999");
+                    }
+                    if(null == medicineStore.getItemName() || "".equals(medicineStore.getItemName().trim())) {
+                        medicineStore.setItemName("999999999");
+                    }
+                    if(null == medicineStore.getValidity() || "".equals(medicineStore.getValidity().trim())) {
+                        medicineStore.setValidity("0000000000000");
+                    }
+                    if(null == medicineStore.getManufactureTime() || "".equals(medicineStore.getManufactureTime().trim())) {
+                        medicineStore.setManufactureTime("0000-00-00");
+                    }
+                    if(null == medicineStore.getPrice() || "".equals(medicineStore.getPrice().trim())) {
+                        medicineStore.setPrice("999999999");
+                    }
                 }
+                storeInfo.setMedicineInfos(page1.getList());
+                this.upload(storeInfo, "中药库存分页同步");
             }
-        };
-        long syncTime = System.currentTimeMillis();
-        log.info("中药库存同步方法执行用时--{}", startTime - syncTime);
+        }
     };
 
     public void upload (MedicineStoreDto storeInfo, String flag) throws Exception {
         ObjectMapper objectMapper = new ObjectMapper();
         String params = objectMapper.writeValueAsString(storeInfo);
-        BaseResult baseResult = RestTemplateUtil.postHttp(url, params);
+        BaseResult baseResult = RestTemplateUtil.postHttp(url, params, new HttpHeaders(), new BaseResult());
         if (null != baseResult && baseResult.isSuccess()) {
-            System.out.println(flag + "======" + storeInfo.getStoreCode() + "======" + baseResult.getMessage());
+            log.info(storeInfo.getStoreCode() + flag + baseResult.getMessage() + ",数量" + storeInfo.getMedicineInfos().size());
         } else {
             log.error(flag + "------" + storeInfo.getStoreCode() + "------" + baseResult.getMessage());
         }

+ 258 - 171
src/main/java/com/miyzh/service/OrderDetailService.java

@@ -14,6 +14,7 @@ import com.mysql.cj.util.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpHeaders;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
@@ -52,196 +53,282 @@ public class OrderDetailService {
     private static final String HOS_MED = "5"; // 西药销售明细(住院)
     private static final String HOS_CHI_MED = "6"; // 中药销售明细(住院)
 
-    @Async
-    public void uploadMedicine(List<Clinic> clinicList, String flag) throws InterruptedException, JsonProcessingException {
-        long startTime = System.currentTimeMillis();
+    public void uploadMedicine(Clinic clinic, String flag) throws InterruptedException, JsonProcessingException {
         PageInfo<OrderDetailTemp> page = new PageInfo<>();
-        for(Clinic clinic : clinicList) {
-            switch (flag) {
-                case CLI_MED:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        orderDetailDao.listClcMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======查询西药销售明细(自费门诊)======total=" + page.getTotal());
-                    break;
-                case CLI_CHI_MED:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        orderDetailDao.listClcChinaMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======查询中药销售明细(自费门诊)======total=" + page.getTotal());
-                    break;
-                case INS_CLC_MED:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        orderDetailDao.listInsClcMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======查询西药销售明细(医保门诊)======total=" + page.getTotal());
-                    break;
-                case INS_CLC_CHI_MED:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        orderDetailDao.listInsClcChinaMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======查询中药销售明细(医保门诊)======total=" + page.getTotal());
-                    break;
-                case HOS_MED:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        orderDetailDao.listHosMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======查询西药销售明细(住院)======total=" + page.getTotal());
-                    break;
-                case HOS_CHI_MED:
-                    page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                        orderDetailDao.listHosChinaMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
-                    });
-                    System.out.println(clinic.getStoreCode() + "======查询中药销售明细(住院)======total=" + page.getTotal());
-                    break;
+        switch (flag) {
+            case CLI_MED:
+                System.out.println(clinic.getStoreCode() + "开始查询西药销售明细记录(自费门诊)...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    orderDetailDao.listClcMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步西药销售明细记录(自费门诊),数量" + page.getTotal());
+                break;
+            case CLI_CHI_MED:
+                System.out.println(clinic.getStoreCode() + "开始查询中药销售明细记录(自费门诊)...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    orderDetailDao.listClcChinaMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步中药销售明细记录(自费门诊),数量" + page.getTotal());
+                break;
+            case INS_CLC_MED:
+                System.out.println(clinic.getStoreCode() + "开始查询西药销售明细鸡柳(医保门诊)...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    orderDetailDao.listInsClcMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步西药销售明细记录(医保门诊),数量" + page.getTotal());
+                break;
+            case INS_CLC_CHI_MED:
+                System.out.println(clinic.getStoreCode() + "开始查询中药销售明细记录(医保门诊)...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    orderDetailDao.listInsClcChinaMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步中药销售明细记录(医保门诊),数量" + page.getTotal());
+                break;
+            case HOS_MED:
+                System.out.println(clinic.getStoreCode() + "开始查询西药销售明细记录(住院)...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    orderDetailDao.listHosMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步西药销售明细记录(住院),数量" + page.getTotal());
+                break;
+            case HOS_CHI_MED:
+                System.out.println(clinic.getStoreCode() + "开始查询中药销售明细记录(住院)...");System.out.println(clinic.getStoreCode() + "开始查询西药销售明细记录(住院)...");
+                page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                    orderDetailDao.listHosChinaMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
+                });
+                System.out.println(clinic.getStoreCode() + "开始同步中药销售明细记录(住院),数量" + page.getTotal());
+                break;
+        }
+        if (page.getTotal() == 0) {
+            return;
+        }
+        for(OrderDetailTemp medicineStore : page.getList()) {
+            if(null == medicineStore.getDosageId() || "".equals(medicineStore.getDosageId().trim())) {
+                medicineStore.setDosageId("999999999");
+            }
+            if(null == medicineStore.getDosageName() || "".equals(medicineStore.getDosageName().trim())) {
+                medicineStore.setDosageName("999999999");
+            }
+            if(null == medicineStore.getSpecification() || "".equals(medicineStore.getSpecification().trim())) {
+                medicineStore.setSpecification("999999999");
+            }
+            if(null == medicineStore.getManufacturer() || "".equals(medicineStore.getManufacturer().trim())) {
+                medicineStore.setManufacturer("999999999");
+            }
+            if(null == medicineStore.getPlace() || "".equals(medicineStore.getPlace().trim())) {
+                medicineStore.setPlace("999999999");
+            }
+            if(null == medicineStore.getPack() || "".equals(medicineStore.getPack().trim())) {
+                medicineStore.setPack("999999999");
+            }
+            if(null == medicineStore.getBatchNo() || "".equals(medicineStore.getBatchNo().trim())) {
+                medicineStore.setBatchNo("0000000000000");
             }
-            if (page.getTotal() == 0) {
-                continue;
+            if(null == medicineStore.getMedicineDeadline() || "".equals(medicineStore.getMedicineDeadline().trim())) {
+                medicineStore.setMedicineDeadline("0000000000000");
             }
-            Map<String, List<OrderDetailTemp>> map = new HashMap<>();
+            if(null == medicineStore.getBarCode() || "".equals(medicineStore.getBarCode().trim())) {
+                medicineStore.setBarCode("0000000000000");
+            }
+            if(null == medicineStore.getDeliveryCompany() || "".equals(medicineStore.getDeliveryCompany().trim())) {
+                medicineStore.setDeliveryCompany("999999999");
+            }
+            if(null == medicineStore.getItemCode() || "".equals(medicineStore.getItemCode().trim())) {
+                medicineStore.setItemCode("999999999");
+            }
+            if(null == medicineStore.getItemName() || "".equals(medicineStore.getItemName().trim())) {
+                medicineStore.setItemName("999999999");
+            }
+            if(null == medicineStore.getValidity() || "".equals(medicineStore.getValidity().trim())) {
+                medicineStore.setValidity("0000000000000");
+            }
+            if(null == medicineStore.getManufactureTime() || "".equals(medicineStore.getManufactureTime().trim())) {
+                medicineStore.setManufactureTime("0000-00-00");
+            }
+        }
+        Map<String, List<OrderDetailTemp>> map = new HashMap<>();
 //            if (HOS_MED.equals(flag) || HOS_CHI_MED.equals(flag)) {
 //                map =  page.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getVisitCode));
 //            } else {
 //                map =  page.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getStoreOrderNo));
 //            }
-            map =  page.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getStoreOrderNo));
+        map =  page.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getStoreOrderNo));
 
-            for(Map.Entry<String, List<OrderDetailTemp>> msMap:map.entrySet()){
-                OrderDetailDto orderDetailDto = new OrderDetailDto();
-                orderDetailDto.setStoreCode(clinic.getStoreCode());
-                orderDetailDto.setStoreOrderNo(msMap.getValue().get(0).getStoreOrderNo());
-                if (StringUtils.isNullOrEmpty(msMap.getValue().get(0).getMisNo())) {
-                    orderDetailDto.setMisNo("99999999");
-                } else {
-                    orderDetailDto.setMisNo(msMap.getValue().get(0).getMisNo());
-                }
-                orderDetailDto.setSettledTypeNo(msMap.getValue().get(0).getSettledTypeNo());
-                orderDetailDto.setSettledTypeName(msMap.getValue().get(0).getSettledTypeName());
-                orderDetailDto.setSettledstatus(msMap.getValue().get(0).getSettledstatus());
-                orderDetailDto.setTotalAmt(msMap.getValue().get(0).getTotalAmt());
-                orderDetailDto.setInsuranceAmt(msMap.getValue().get(0).getInsuranceAmt());
-                orderDetailDto.setOperater(msMap.getValue().get(0).getOperater());
-                orderDetailDto.setSaleDate(msMap.getValue().get(0).getSaleDate());
-                orderDetailDto.setSaleTime(msMap.getValue().get(0).getSaleTime());
-                orderDetailDto.setBuyMedPerson(msMap.getValue().get(0).getBuyMedPerson());
-                orderDetailDto.setSex(msMap.getValue().get(0).getSex());
-                orderDetailDto.setAge(msMap.getValue().get(0).getAge());
-                orderDetailDto.setIdCard(msMap.getValue().get(0).getIdCard());
-                orderDetailDto.setCredentialNum(msMap.getValue().get(0).getCredentialNum());
-                List<OrderDetail> list = msMap.getValue()
-                        .stream()
-                        .map(OrderDetailTemp::temp2OrderDetail)
-                        .collect(Collectors.toList());
-                if(flag.equals(CLI_MED) || flag.equals(INS_CLC_MED) || flag.equals(HOS_MED)){
-                    Map<String, List<OrderDetail>> medMap = list.stream().collect(Collectors.groupingBy(OrderDetail::getItemType));
-                    for(Map.Entry<String, List<OrderDetail>> m : medMap.entrySet()) {
-                        if(m.getValue().size() > 0) {
-                            orderDetailDto.setMedicineInfos(m.getValue());
-                            this.upload(orderDetailDto, flag);
-                        }
+        for(Map.Entry<String, List<OrderDetailTemp>> msMap:map.entrySet()){
+            OrderDetailDto orderDetailDto = new OrderDetailDto();
+            orderDetailDto.setStoreCode(clinic.getStoreCode());
+            orderDetailDto.setStoreOrderNo(msMap.getValue().get(0).getStoreOrderNo());
+            if (StringUtils.isNullOrEmpty(msMap.getValue().get(0).getMisNo())) {
+                orderDetailDto.setMisNo("99999999");
+            } else {
+                orderDetailDto.setMisNo(msMap.getValue().get(0).getMisNo());
+            }
+            orderDetailDto.setSettledTypeNo(msMap.getValue().get(0).getSettledTypeNo());
+            orderDetailDto.setSettledTypeName(msMap.getValue().get(0).getSettledTypeName());
+            orderDetailDto.setSettledstatus(msMap.getValue().get(0).getSettledstatus());
+            orderDetailDto.setTotalAmt(msMap.getValue().get(0).getTotalAmt());
+            orderDetailDto.setInsuranceAmt(msMap.getValue().get(0).getInsuranceAmt());
+            orderDetailDto.setOperater(msMap.getValue().get(0).getOperater());
+            orderDetailDto.setSaleDate(msMap.getValue().get(0).getSaleDate());
+            orderDetailDto.setSaleTime(msMap.getValue().get(0).getSaleTime());
+            orderDetailDto.setBuyMedPerson(msMap.getValue().get(0).getBuyMedPerson());
+            orderDetailDto.setSex(msMap.getValue().get(0).getSex());
+            orderDetailDto.setAge(msMap.getValue().get(0).getAge());
+            orderDetailDto.setIdCard(msMap.getValue().get(0).getIdCard());
+            orderDetailDto.setCredentialNum(msMap.getValue().get(0).getCredentialNum());
+            List<OrderDetail> list = msMap.getValue()
+                    .stream()
+                    .map(OrderDetailTemp::temp2OrderDetail)
+                    .collect(Collectors.toList());
+            if(flag.equals(CLI_MED) || flag.equals(INS_CLC_MED) || flag.equals(HOS_MED)){
+                Map<String, List<OrderDetail>> medMap = list.stream().collect(Collectors.groupingBy(OrderDetail::getItemType));
+                for(Map.Entry<String, List<OrderDetail>> m : medMap.entrySet()) {
+                    if(m.getValue().size() > 0) {
+                        String f = ("1".equals(m.getKey())?"西药":"耗材");
+                        System.out.println(f + ",数量" + m.getValue().size());
+                        orderDetailDto.setMedicineInfos(m.getValue());
+                        this.upload(orderDetailDto, flag);
                     }
-                }  else {
-                    orderDetailDto.setMedicineInfos(list);
-                    this.upload(orderDetailDto, flag);
                 }
+            }  else {
+                orderDetailDto.setMedicineInfos(list);
+                this.upload(orderDetailDto, flag);
             }
-            if (page.getPages() > 1) {
-                PageInfo<OrderDetailTemp> page1 = new PageInfo<>();
-                for(int i = 2; i <= page.getPages(); i++) {
-                    switch (flag) {
-                        case CLI_MED:
-                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                                orderDetailDao.listClcMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======查询西药销售明细(自费门诊)分页" + i + "======total=" + page.getTotal());
-                            break;
-                        case CLI_CHI_MED:
-                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                                orderDetailDao.listClcChinaMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======查询中药销售明细(自费门诊)分页" + i + "======total=" + page.getTotal());
-                            break;
-                        case INS_CLC_MED:
-                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                                orderDetailDao.listInsClcMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======查询西药销售明细(医保门诊)分页" + i + "======total=" + page.getTotal());
-                            break;
-                        case INS_CLC_CHI_MED:
-                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                                orderDetailDao.listInsClcChinaMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======查询中药销售明细(医保门诊)分页" + i + "======total=" + page.getTotal());
-                            break;
-                        case HOS_MED:
-                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                                orderDetailDao.listHosMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======查询西药销售明细(住院)分页" + i + "======total=" + page.getTotal());
-                            break;
-                        case HOS_CHI_MED:
-                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
-                                orderDetailDao.listHosChinaMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
-                            });
-                            System.out.println(clinic.getStoreCode() + "======查询中药销售明细(住院)分页" + i + "======total=" + page.getTotal());
-                            break;
+        }
+        if (page.getPages() > 1) {
+            PageInfo<OrderDetailTemp> page1 = new PageInfo<>();
+            for(int i = 2; i <= page.getPages(); i++) {
+                switch (flag) {
+                    case CLI_MED:
+                        page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
+                            orderDetailDao.listClcMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
+                        break;
+                    case CLI_CHI_MED:
+                        page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
+                            orderDetailDao.listClcChinaMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
+                        break;
+                    case INS_CLC_MED:
+                        page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
+                            orderDetailDao.listInsClcMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
+                        break;
+                    case INS_CLC_CHI_MED:
+                        page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
+                            orderDetailDao.listInsClcChinaMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
+                        break;
+                    case HOS_MED:
+                        page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
+                            orderDetailDao.listHosMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
+                        break;
+                    case HOS_CHI_MED:
+                        page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
+                            orderDetailDao.listHosChinaMedOrder(clinic.getClinicId(), startDate, endDate, dateType, count);
+                        });
+                        break;
+                }
+                for(OrderDetailTemp medicineStore : page1.getList()) {
+                    if(null == medicineStore.getDosageId() || "".equals(medicineStore.getDosageId().trim())) {
+                        medicineStore.setDosageId("999999999");
+                    }
+                    if(null == medicineStore.getDosageName() || "".equals(medicineStore.getDosageName().trim())) {
+                        medicineStore.setDosageName("999999999");
+                    }
+                    if(null == medicineStore.getSpecification() || "".equals(medicineStore.getSpecification().trim())) {
+                        medicineStore.setSpecification("999999999");
+                    }
+                    if(null == medicineStore.getManufacturer() || "".equals(medicineStore.getManufacturer().trim())) {
+                        medicineStore.setManufacturer("999999999");
+                    }
+                    if(null == medicineStore.getPlace() || "".equals(medicineStore.getPlace().trim())) {
+                        medicineStore.setPlace("999999999");
+                    }
+                    if(null == medicineStore.getPack() || "".equals(medicineStore.getPack().trim())) {
+                        medicineStore.setPack("999999999");
+                    }
+                    if(null == medicineStore.getBatchNo() || "".equals(medicineStore.getBatchNo().trim())) {
+                        medicineStore.setBatchNo("0000000000000");
+                    }
+                    if(null == medicineStore.getMedicineDeadline() || "".equals(medicineStore.getMedicineDeadline().trim())) {
+                        medicineStore.setMedicineDeadline("0000000000000");
+                    }
+                    if(null == medicineStore.getBarCode() || "".equals(medicineStore.getBarCode().trim())) {
+                        medicineStore.setBarCode("0000000000000");
                     }
-                    Map<String, List<OrderDetailTemp>> map1 = new HashMap<>();
+                    if(null == medicineStore.getDeliveryCompany() || "".equals(medicineStore.getDeliveryCompany().trim())) {
+                        medicineStore.setDeliveryCompany("999999999");
+                    }
+                    if(null == medicineStore.getItemCode() || "".equals(medicineStore.getItemCode().trim())) {
+                        medicineStore.setItemCode("999999999");
+                    }
+                    if(null == medicineStore.getItemName() || "".equals(medicineStore.getItemName().trim())) {
+                        medicineStore.setItemName("999999999");
+                    }
+                    if(null == medicineStore.getValidity() || "".equals(medicineStore.getValidity().trim())) {
+                        medicineStore.setValidity("0000000000000");
+                    }
+                    if(null == medicineStore.getManufactureTime() || "".equals(medicineStore.getManufactureTime().trim())) {
+                        medicineStore.setManufactureTime("0000-00-00");
+                    }
+                }
+                Map<String, List<OrderDetailTemp>> map1 = new HashMap<>();
+                if (HOS_MED.equals(flag) || HOS_CHI_MED.equals(flag)) {
+                    map1 =  page1.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getVisitCode));
+                } else {
+                    map1 =  page1.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getStoreOrderNo));
+                }
+                for(Map.Entry<String, List<OrderDetailTemp>> msMap:map1.entrySet()){
+                    OrderDetailDto orderDetailDto = new OrderDetailDto();
+                    orderDetailDto.setStoreCode(clinic.getStoreCode());
+                    orderDetailDto.setStoreName(clinic.getStoreName());
                     if (HOS_MED.equals(flag) || HOS_CHI_MED.equals(flag)) {
-                        map1 =  page1.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getVisitCode));
+                        orderDetailDto.setStoreOrderNo(msMap.getValue().get(0).getVisitCode());
                     } else {
-                        map1 =  page1.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getStoreOrderNo));
+                        orderDetailDto.setStoreOrderNo(msMap.getValue().get(0).getStoreOrderNo());
                     }
-                    for(Map.Entry<String, List<OrderDetailTemp>> msMap:map1.entrySet()){
-                        OrderDetailDto orderDetailDto = new OrderDetailDto();
-                        orderDetailDto.setStoreCode(clinic.getStoreCode());
-                        if (HOS_MED.equals(flag) || HOS_CHI_MED.equals(flag)) {
-                            orderDetailDto.setStoreOrderNo(msMap.getValue().get(0).getVisitCode());
-                        } else {
-                            orderDetailDto.setStoreOrderNo(msMap.getValue().get(0).getStoreOrderNo());
-                        }
-                        if (StringUtils.isNullOrEmpty(msMap.getValue().get(0).getMisNo())) {
-                            orderDetailDto.setMisNo("99999999");
-                        } else {
-                            orderDetailDto.setMisNo(msMap.getValue().get(0).getMisNo());
-                        }
-                        orderDetailDto.setSettledTypeNo(msMap.getValue().get(0).getSettledTypeNo());
-                        orderDetailDto.setSettledTypeName(msMap.getValue().get(0).getSettledTypeName());
-                        orderDetailDto.setSettledstatus(msMap.getValue().get(0).getSettledstatus());
-                        orderDetailDto.setTotalAmt(msMap.getValue().get(0).getTotalAmt());
-                        orderDetailDto.setInsuranceAmt(msMap.getValue().get(0).getInsuranceAmt());
-                        orderDetailDto.setOperater(msMap.getValue().get(0).getOperater());
-                        orderDetailDto.setSaleDate(msMap.getValue().get(0).getSaleDate());
-                        orderDetailDto.setSaleTime(msMap.getValue().get(0).getSaleTime());
-                        orderDetailDto.setBuyMedPerson(msMap.getValue().get(0).getBuyMedPerson());
-                        orderDetailDto.setSex(msMap.getValue().get(0).getSex());
-                        orderDetailDto.setAge(msMap.getValue().get(0).getAge());
-                        orderDetailDto.setIdCard(msMap.getValue().get(0).getIdCard());
-                        orderDetailDto.setCredentialNum(msMap.getValue().get(0).getCredentialNum());
-                        List<OrderDetail> list = msMap.getValue()
-                                .stream()
-                                .map(OrderDetailTemp::temp2OrderDetail)
-                                .collect(Collectors.toList());
-                        // 西药部分 耗材西药分别上传 中药不需要处理
-                        if(flag.equals(CLI_MED) || flag.equals(INS_CLC_MED) || flag.equals(HOS_MED)){
-                            Map<String, List<OrderDetail>> medMap = list.stream().collect(Collectors.groupingBy(OrderDetail::getItemType));
-                            for(Map.Entry<String, List<OrderDetail>> m : medMap.entrySet()) {
-                                if(m.getValue().size() > 0) {
-                                    System.out.println(orderDetailDto.getStoreCode() + "======" + ("1".equals(m.getKey())?"药品":"耗材"));
-                                    orderDetailDto.setMedicineInfos(m.getValue());
-                                    this.upload(orderDetailDto, flag);
-                                }
+                    if (StringUtils.isNullOrEmpty(msMap.getValue().get(0).getMisNo())) {
+                        orderDetailDto.setMisNo("99999999");
+                    } else {
+                        orderDetailDto.setMisNo(msMap.getValue().get(0).getMisNo());
+                    }
+                    orderDetailDto.setSettledTypeNo(msMap.getValue().get(0).getSettledTypeNo());
+                    orderDetailDto.setSettledTypeName(msMap.getValue().get(0).getSettledTypeName());
+                    orderDetailDto.setSettledstatus(msMap.getValue().get(0).getSettledstatus());
+                    orderDetailDto.setTotalAmt(msMap.getValue().get(0).getTotalAmt());
+                    orderDetailDto.setInsuranceAmt(msMap.getValue().get(0).getInsuranceAmt());
+                    orderDetailDto.setOperater(msMap.getValue().get(0).getOperater());
+                    orderDetailDto.setSaleDate(msMap.getValue().get(0).getSaleDate());
+                    orderDetailDto.setSaleTime(msMap.getValue().get(0).getSaleTime());
+                    orderDetailDto.setBuyMedPerson(msMap.getValue().get(0).getBuyMedPerson());
+                    orderDetailDto.setSex(msMap.getValue().get(0).getSex());
+                    orderDetailDto.setAge(msMap.getValue().get(0).getAge());
+                    orderDetailDto.setIdCard(msMap.getValue().get(0).getIdCard());
+                    orderDetailDto.setCredentialNum(msMap.getValue().get(0).getCredentialNum());
+                    List<OrderDetail> list = msMap.getValue()
+                            .stream()
+                            .map(OrderDetailTemp::temp2OrderDetail)
+                            .collect(Collectors.toList());
+                    // 西药部分 耗材西药分别上传 中药不需要处理
+                    if(flag.equals(CLI_MED) || flag.equals(INS_CLC_MED) || flag.equals(HOS_MED)){
+                        Map<String, List<OrderDetail>> medMap = list.stream().collect(Collectors.groupingBy(OrderDetail::getItemType));
+                        for(Map.Entry<String, List<OrderDetail>> m : medMap.entrySet()) {
+                            if(m.getValue().size() > 0) {
+                                String f = ("1".equals(m.getKey())?"西药":"耗材");
+                                System.out.println(f + ",数量" + m.getValue().size());
+                                orderDetailDto.setMedicineInfos(m.getValue());
+                                this.upload(orderDetailDto, flag);
                             }
-                        }  else {
-                            orderDetailDto.setMedicineInfos(list);
-                            this.upload(orderDetailDto, flag);
                         }
+                    }  else {
+                        orderDetailDto.setMedicineInfos(list);
+                        this.upload(orderDetailDto, flag);
                     }
                 }
             }
-        };
-        long syncTime = System.currentTimeMillis();
-        log.info("订单上传执行用时--{}", startTime - syncTime);
+        }
     };
 
     public void upload (OrderDetailDto orderDetailDto, String flag) throws JsonProcessingException {
@@ -269,9 +356,9 @@ public class OrderDetailService {
 
         ObjectMapper objectMapper = new ObjectMapper();
         String params = objectMapper.writeValueAsString(orderDetailDto);
-        BaseResult baseResult = RestTemplateUtil.postHttp(url, params);
+        BaseResult baseResult = RestTemplateUtil.postHttp(url, params, new HttpHeaders(), new BaseResult());
         if (null != baseResult && baseResult.isSuccess()) {
-            System.out.println(flagStr + "======" + orderDetailDto.getStoreCode() + "======" + baseResult.getMessage());
+            log.info(orderDetailDto.getStoreCode() + flagStr + baseResult.getMessage() + ",数量" + orderDetailDto.getMedicineInfos().size());
         } else {
             log.error(flagStr + "------" + orderDetailDto.getStoreCode() + "------" + baseResult.getMessage());
         }

+ 128 - 0
src/main/java/com/miyzh/service/RedisService.java

@@ -0,0 +1,128 @@
+package com.miyzh.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@Component
+public class RedisService {
+    @Autowired
+    private RedisTemplate<String, String> redisTemplate;
+
+    /**
+     * 默认过期时长,单位:秒
+     */
+    public static final long DEFAULT_EXPIRE = 60 * 60 * 24;
+
+    /**
+     * 不设置过期时长
+     */
+    public static final long NOT_EXPIRE = -1;
+
+
+
+
+    public boolean existsKey(String key) {
+        return redisTemplate.hasKey(key);
+    }
+
+    /**
+     * 重名名key,如果newKey已经存在,则newKey的原值被覆盖
+     *
+     * @param oldKey
+     * @param newKey
+     */
+    public void renameKey(String oldKey, String newKey) {
+        redisTemplate.rename(oldKey, newKey);
+    }
+
+    /**
+     * newKey不存在时才重命名
+     *
+     * @param oldKey
+     * @param newKey
+     * @return 修改成功返回true
+     */
+    public boolean renameKeyNotExist(String oldKey, String newKey) {
+        return redisTemplate.renameIfAbsent(oldKey, newKey);
+    }
+
+    /**
+     * 删除key
+     *
+     * @param key
+     */
+    public void deleteKey(String key) {
+        redisTemplate.delete(key);
+    }
+
+    /**
+     * 删除多个key
+     *
+     * @param keys
+     */
+    public void deleteKey(String... keys) {
+        Set<String> kSet = Stream.of(keys).map(k -> k).collect(Collectors.toSet());
+        redisTemplate.delete(kSet);
+    }
+
+    /**
+     * 删除Key的集合
+     *
+     * @param keys
+     */
+    public void deleteKey(Collection<String> keys) {
+        Set<String> kSet = keys.stream().map(k -> k).collect(Collectors.toSet());
+        redisTemplate.delete(kSet);
+    }
+
+    /**
+     * 设置key的生命周期
+     *
+     * @param key
+     * @param time
+     * @param timeUnit
+     */
+    public void expireKey(String key, long time, TimeUnit timeUnit) {
+        redisTemplate.expire(key, time, timeUnit);
+    }
+
+    /**
+     * 指定key在指定的日期过期
+     *
+     * @param key
+     * @param date
+     */
+    public void expireKeyAt(String key, Date date) {
+        redisTemplate.expireAt(key, date);
+    }
+
+    /**
+     * 查询key的生命周期
+     *
+     * @param key
+     * @param timeUnit
+     * @return
+     */
+    public long getKeyExpire(String key, TimeUnit timeUnit) {
+        return redisTemplate.getExpire(key, timeUnit);
+    }
+
+    /**
+     * 将key设置为永久有效
+     *
+     * @param key
+     */
+    public void persistKey(String key) {
+        redisTemplate.persist(key);
+    }
+
+
+}

+ 158 - 0
src/main/java/com/miyzh/service/TestService.java

@@ -0,0 +1,158 @@
+package com.miyzh.service;
+
+import com.miyzh.entity.BaseResult;
+import com.miyzh.entity.Clinic;
+import com.miyzh.utils.RestTemplateUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Slf4j
+@Service
+public class TestService {
+
+    private ClinicService clinicService;
+
+    public void inspectAndExamine() {
+        long startTime = System.currentTimeMillis();
+        List<Clinic> clinicList = clinicService.listClinicBefore();
+        String url = "http://39.102.97.60:28082/mei-svc/api/inspectAndExamine";
+        String params1 = "";
+        String params2 = "";
+        int count = 0;
+        for (Clinic clinic : clinicList) {
+            params1 = "{\n" +
+                    "    \"publicType\": \"inspection_report\", \n" +
+                    "    \"authToken\":" + clinic.getStoreCode() + ", \n" +
+                    "    \"tranSerialNo\": \"b7b8a893f9294259aba0caf73d715965\", \n" +
+                    "    \"inspectReportList\": [\n" +
+                    "        {\n" +
+                    "            \"operateIp\": \"0.0.0.0\", \n" +
+                    "            \"operateMac\": \"00.00.00.00\", \n" +
+                    "            \"operatePersonCode\": \"3700000\", \n" +
+                    "            \"operatePersonName\": \"医德帮\", \n" +
+                    "            \"operateTime\": \"20200317/131516/\", \n" +
+                    "            \"inspectReportNo\": \"20200317-1001\", \n" +
+                    "            \"inspectReportType\": \"1\", \n" +
+                    "            \"reportDate\": \"20200317/133036/\", \n" +
+                    "            \"regionCode\": \"310101\", \n" +
+                    "            \"visitSerialNo\": \"20200317-1001-01\", \n" +
+                    "            \"visitType\": \"2\", \n" +
+                    "            \"settleBillNo\": \"1000001\", \n" +
+                    "            \"settleDetailNo\": \"1000001-001\", \n" +
+                    "            \"isHospInspect\": \"0\", \n" +
+                    "            \"deliveryInspectOrgCode\": \"3665666\", \n" +
+                    "            \"deliveryInspectNo\": \"9995565565\", \n" +
+                    "            \"apply_date\": \"20200317/131516/\", \n" +
+                    "            \"applicantCode\": \"136256\", \n" +
+                    "            \"applicantName\": \"老六\", \n" +
+                    "            \"reporterCode\": \"136257\", \n" +
+                    "            \"reporterName\": \"张三\", \n" +
+                    "            \"approverCode\": \"158965\", \n" +
+                    "            \"approverName\": \"李四\", \n" +
+                    "            \"applyDeptCode\": \"001236\", \n" +
+                    "            \"applyDeptName\": \"001236\", \n" +
+                    "            \"gatherDate\": \"20200317/132636/\", \n" +
+                    "            \"inspectDate\": \"20200318/132336/\", \n" +
+                    "            \"muterNo\": \"8\", \n" +
+                    "            \"muterName\": \"红细胞\", \n" +
+                    "            \"reportCardCategoryCode\": \"2\", \n" +
+                    "            \"reportCardCategoryName\": \"血液学检查\", \n" +
+                    "            \"isEffective\": \"1\", \n" +
+                    "            \"inspectChargeCodeHis\": \"001001233\", \n" +
+                    "            \"inspectChargeNameHis\": \"检验\", \n" +
+                    "            \"inspectChargeCodeMed\": \"10025642\", \n" +
+                    "            \"inspectChargeNameMed\": \"检验\", \n" +
+                    "            \"inspectReportDetail\": [\n" +
+                    "                {\n" +
+                    "                    \"inspectIndicatrixSerailNo\": \"1000101\", \n" +
+                    "                    \"inspectIndicatrixName\": \"检验指标1\", \n" +
+                    "                    \"inspectIndicatrixResult\": \"检验指标结果1\", \n" +
+                    "                    \"inspectIndicatrixChange\": \"检验指标变化1\", \n" +
+                    "                    \"inspectMethod\": \"1\", \n" +
+                    "                    \"inspectReferenceScope\": \"1\", \n" +
+                    "                    \"calculateUnit\": \"1\", \n" +
+                    "                    \"settleDetailNo\": \"1000001-001\", \n" +
+                    "                    \"inspectReportNo \": \"20200317-1001\"\n" +
+                    "                }\n" +
+                    "            ]\n" +
+                    "        }\n" +
+                    "    ]\n" +
+                    "}";
+            params2 = "{\n" +
+                    "    \"publicType\": \"examine_report\", \n" +
+                    "    \"authToken\":" + clinic.getStoreCode() + ", \n" +
+                    "    \"tranSerialNo\": \"g7b8a893f9294259aba0caf73d715965\", \n" +
+                    "    \"examineReportList\": [\n" +
+                    "        {\n" +
+                    "            \"operateIp\": \"215.33.4.1\", \n" +
+                    "            \"operateMac\": \"255.255.4.1\", \n" +
+                    "            \"operatePersonCode\": \"3701001\", \n" +
+                    "            \"operatePersonName\": \"李医生\", \n" +
+                    "            \"operateTime\": \"20200317/131516/\", \n" +
+                    "            \"examineReportNo\": \"20200319-1001\", \n" +
+                    "            \"examineSerialNo\": \"20200319-1001001\", \n" +
+                    "            \"reportDate\": \"20200319/133036/\", \n" +
+                    "            \"openingDate\": \"20200318/133036/\", \n" +
+                    "            \"examineDate\": \"20200320/133036/\", \n" +
+                    "            \"regionCode\": \"310101\", \n" +
+                    "            \"visitSerialNo\": \"20200316-1001-01\", \n" +
+                    "            \"visitType\": \"2\", \n" +
+                    "            \"settleBillNo\": \"1000001\", \n" +
+                    "            \"settleDetailNo\": \"1000001-001\", \n" +
+                    "            \"isHospInspect\": \"0\", \n" +
+                    "            \"deliveryInspectOrgCode\": \"0406\", \n" +
+                    "            \"deliveryInspectNo\": \"95656\", \n" +
+                    "            \"examineProjectCodeHis\": \"2000001\", \n" +
+                    "            \"examineProjectNameHis\": \"检验项目名称\", \n" +
+                    "            \"examineProjectCodeMed\": \"2000001\", \n" +
+                    "            \"examineProjectNameMed\": \"检验项目名称\", \n" +
+                    "            \"examineType\": \"1\", \n" +
+                    "            \"examinePart\": \"1\", \n" +
+                    "            \"examinePlan\": \"aaaa\", \n" +
+                    "            \"examineResult\": \"检查结果1\", \n" +
+                    "            \"examineDesc\": \"检查结果描述1\", \n" +
+                    "            \"otherDesc\": \"其他描述1\", \n" +
+                    "            \"applyDeptCode\": \"001236\", \n" +
+                    "            \"applyDeptName\": \"001236\", \n" +
+                    "            \"applicantCode\": \"136256\", \n" +
+                    "            \"applicantName\": \"老六\", \n" +
+                    "            \"examineDeptCode\": \"12035623\", \n" +
+                    "            \"examineDeptName\": \"12035623\", \n" +
+                    "            \"examineDoctorCode\": \"00152689\", \n" +
+                    "            \"examineDoctorName\": \"张三\", \n" +
+                    "            \"reporterCode\": \"158956\", \n" +
+                    "            \"reporterName\": \"张三\", \n" +
+                    "            \"approverCode\": \"158965\", \n" +
+                    "            \"approverName\": \"李四\"\n" +
+                    "        }\n" +
+                    "    ]\n" +
+                    "}";
+            BaseResult baseResult1 = RestTemplateUtil.postHttp(url, params1, new HttpHeaders(), new BaseResult());
+            if("0".equals(baseResult1.getCode())) {
+                System.out.println(clinic.getStoreCode() + clinic.getStoreName() + "医院检验接口上传成功");
+            } else {
+                System.out.println(clinic.getStoreCode() + clinic.getStoreName() + "医院检验接口上传" + baseResult1.getMessage());
+            }
+
+            BaseResult baseResult2 = RestTemplateUtil.postHttp(url, params2, new HttpHeaders(), new BaseResult());
+            if("0".equals(baseResult2.getCode())) {
+                System.out.println(clinic.getStoreCode() + clinic.getStoreName() + "医院检查接口上传成功");
+            } else {
+                System.out.println(clinic.getStoreCode() + clinic.getStoreName() + "医院检查接口上传" + baseResult2.getMessage());
+            }
+        }
+
+        long syncTime = System.currentTimeMillis();
+        System.out.println("成功上传" + count);
+        log.info("总耗时--{}", startTime - syncTime);
+    }
+
+
+
+
+}

+ 41 - 0
src/main/java/com/miyzh/utils/RedisKeyUtil.java

@@ -0,0 +1,41 @@
+package com.miyzh.utils;
+
+public class RedisKeyUtil {
+
+    /**
+     * redis的key
+     * 形式为:
+     * 表名:主键名:主键值:列名
+     *
+     * @param tableName 表名
+     * @param majorKey 主键名
+     * @param majorKeyValue 主键值
+     * @param column 列名
+     * @return
+     */
+    public static String getKeyWithColumn(String tableName,String majorKey,String majorKeyValue,String column){
+        StringBuffer buffer = new StringBuffer();
+        buffer.append(tableName).append(":");
+        buffer.append(majorKey).append(":");
+        buffer.append(majorKeyValue).append(":");
+        buffer.append(column);
+        return buffer.toString();
+    }
+    /**
+     * redis的key
+     * 形式为:
+     * 表名:主键名:主键值
+     *
+     * @param tableName 表名
+     * @param majorKey 主键名
+     * @param majorKeyValue 主键值
+     * @return
+     */
+    public static String getKey(String tableName,String majorKey,String majorKeyValue){
+        StringBuffer buffer = new StringBuffer();
+        buffer.append(tableName).append(":");
+        buffer.append(majorKey).append(":");
+        buffer.append(majorKeyValue).append(":");
+        return buffer.toString();
+    }
+}

+ 20 - 15
src/main/java/com/miyzh/utils/RestTemplateUtil.java

@@ -1,7 +1,9 @@
 package com.miyzh.utils;
 
 import com.alibaba.fastjson.JSONObject;
+import com.miyzh.entity.AccessResult;
 import com.miyzh.entity.BaseResult;
+import com.rabbitmq.client.AMQP;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.http.Header;
@@ -27,6 +29,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
@@ -36,20 +39,21 @@ public class RestTemplateUtil {
 
 
     // 默认时间五秒,不重试。
-    private final static int CONNEC_TIMEOUT = 10000;
-    private final static int READ_TIMEOUT   = 10000;
+    private final static int CONNEC_TIMEOUT = 30000;
+    private final static int READ_TIMEOUT   = 30000;
     private final static int RETRY_COUNT    = 1;
 
 
-    public static BaseResult postHttp(String url, String params) {
+    public static <T> T postHttp(String url, String params, HttpHeaders headers, T t) {
         RestTemplate restTemplate = simpeClient(url, CONNEC_TIMEOUT, READ_TIMEOUT);
         // 设置·header信息
-        HttpHeaders headers = new HttpHeaders();
-        headers.setContentType(MediaType.APPLICATION_JSON);
+        if(null == headers.getContentType() || "".equals(headers.getContentType())) {
+            headers.setContentType(MediaType.APPLICATION_JSON);
+        }
         HttpEntity<String> httpEntity = new HttpEntity<>(params, headers);
         for (int i = 1; i <= RETRY_COUNT; i++) {
             try {
-                return restTemplate.postForObject(url, httpEntity, BaseResult.class);
+                return (T)restTemplate.postForObject(url, httpEntity, t.getClass());
             } catch (RestClientException e) {
                 log.error("-----------开始-----------重试count: " + i);
                 e.printStackTrace();
@@ -58,16 +62,17 @@ public class RestTemplateUtil {
         return null;
     }
 
+
     private static RestTemplate simpeClient(String url, int connecTimeout, int readTimeout) {
-//        SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
-//        requestFactory.setConnectTimeout(connecTimeout);
-//        requestFactory.setReadTimeout(readTimeout);
-//        RestTemplate restTemplate = new RestTemplate(requestFactory);
-//        restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); // 设置编码集
-//        restTemplate.setErrorHandler(new DefaultResponseErrorHandler()); //error处理
-//        return restTemplate;
-        HttpComponentsClientHttpRequestFactory httpRequestFactory = httpComponentsClientHttpRequestFactory(5);
-        return new RestTemplate(httpRequestFactory);
+        SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
+        requestFactory.setConnectTimeout(connecTimeout);
+        requestFactory.setReadTimeout(readTimeout);
+        RestTemplate restTemplate = new RestTemplate(requestFactory);
+        restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); // 设置编码集
+        restTemplate.setErrorHandler(new DefaultResponseErrorHandler()); //error处理
+        return restTemplate;
+//        HttpComponentsClientHttpRequestFactory httpRequestFactory = httpComponentsClientHttpRequestFactory(5);
+//        return new RestTemplate(httpRequestFactory);
     }
 
     private static class DefaultResponseErrorHandler implements ResponseErrorHandler {

+ 41 - 0
src/main/java/com/miyzh/utils/SHA256Util.java

@@ -0,0 +1,41 @@
+package com.miyzh.utils;
+
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+public class SHA256Util {
+
+        public static String sha256(final String contents) {
+            String encryptedContents = "";
+            try {
+                MessageDigest messageDigest = null;
+                messageDigest = MessageDigest.getInstance("SHA-256");
+                messageDigest.reset();
+                messageDigest.update(contents.getBytes("UTF-8"));
+                encryptedContents = byteToString(messageDigest.digest());
+            } catch (NoSuchAlgorithmException e) {
+                e.printStackTrace();
+                System.exit(-1);
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+
+            return encryptedContents;
+        }
+
+        private static String byteToString(byte[] bByte) {
+            StringBuffer encrytStrBuf = new StringBuffer();
+            for (int i = 0; i < bByte.length; i++) {
+                if (Integer.toHexString(0xFF & bByte[i]).length() == 1)
+                    encrytStrBuf.append("0").append(Integer.toHexString(0xFF & bByte[i]));
+                else {
+                    encrytStrBuf.append(Integer.toHexString(0xFF & bByte[i]));
+                }
+            }
+            return encrytStrBuf.toString().toLowerCase();
+        }
+
+
+
+}

+ 30 - 33
src/main/resources/application-szq.yml

@@ -1,11 +1,11 @@
 spring:
   application:
-    name: yideb-proxy-srv
-#druid数据源相关配置配置
+    name: yideb-proxy-srv-dev
+  #druid数据源相关配置配置
   datasource:
-    url: jdbc:mysql://www.yidab.com:61002/yideb2-pre?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
-    username: yideb2pre
-    password: yideb2pre1234YDB
+    url: jdbc:mysql://www.yidab.com:61000/yideb2?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
+    username: dev_sunzq
+    password: a1b2c3d4f5
     driver-class-name: com.mysql.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
 
@@ -28,27 +28,24 @@ spring:
     connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
 
 
-  #redis配置数据
-#  redis:
-#    hostName: 192.168.140.131
-#    hostName: 47.104.236.202
-#    port: 6379
-#    password: 123456
+    #redis配置数据
+  redis:
+    host: localhost
+    #    hostName: 47.104.236.202
+    port: 6379
+    password: 5tgbhu8
     #  连接超时时间
-#    timeout: 5000
-#    jedis:
-#      pool:
-#    最大连接数(使用负值表示没有限制)
-#        max-active: 10
-#    连接池最大阻塞等待时间(使用负值表示没有限制)
-#        max-wait: -1
-#      连接池中最大空闲连接(使用负值表示没有限制)
-#        max-idle: 2
-#      连接池中最小空闲连接
-#        min-idle: 0
-    # 下面为连接池的补充设置,应用到上面所有数据源中
-    # 初始化大小,最小,最大
-
+    timeout: 5000
+    jedis:
+      pool:
+        #    最大连接数(使用负值表示没有限制)
+        max-active: 10
+        #    连接池最大阻塞等待时间(使用负值表示没有限制)
+        max-wait: -1
+        #      连接池中最大空闲连接(使用负值表示没有限制)
+        max-idle: 2
+        #      连接池中最小空闲连接
+        min-idle: 0
   rabbitmq:
     host: 47.95.29.209
     port: 5672
@@ -64,7 +61,7 @@ spring:
         prefetch: 5
         #必须配置这个才会确认回调
     publisher-confirm-type: correlated
-#    publisher-confirms: true
+    #    publisher-confirms: true
     publisher-returns: true
 #mybatis 配置信息
 mybatis:
@@ -79,18 +76,18 @@ server:
 
 postApi:
   pageSize: 1000
-  storeUrl: http://120.221.72.9:8081/mhis-pisp/api/pis/inventory-balance/upload
-  sorageUrl: http://120.221.72.9:8081/mhis-pisp/api/pis/storagein-records/upload
-  returnUrl: http://120.221.72.9:8081/mhis-pisp/api/pis/storageout-records/upload
-  orderUrl: http://120.221.72.9:8081/mhis-pisp/api/pis/order-details/upload
+  storeUrl: http://120.221.69.238:38080/mhis-pisp/api/pis/inventory-balance/upload
+  sorageUrl: http://120.221.69.238:38080/mhis-pisp/api/pis/storagein-records/upload
+  returnUrl: http://120.221.69.238:38080/mhis-pisp/api/pis/storageout-records/upload
+  orderUrl: http://120.221.69.238:38080/mhis-pisp/api/pis/order-details/upload
 
 update:
   # 查询时间类型 d(天)/m(月)/y(年)/s(区间)
-  dateType: s
+  dateType: d
   count: 1
   # 只有时间类型为s时生效
-  startDate: 20170101
-  endDate: 20201001
+  startDate: 20210101
+  endDate: 20210308
 
 
 

+ 34 - 26
src/main/resources/application.yml

@@ -3,9 +3,9 @@ spring:
     name: yideb-proxy-srv
   #druid数据源相关配置配置
   datasource:
-    url: jdbc:mysql://www.yidab.com:61002/yideb2-pre?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
-    username: yideb2pre
-    password: yideb2pre1234YDB
+    url: jdbc:mysql://www.yidab.com:61000/yideb2?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
+    username: dev_sunzq
+    password: a1b2c3d4f5
     driver-class-name: com.mysql.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
 
@@ -29,26 +29,23 @@ spring:
 
 
     #redis配置数据
-    #  redis:
-    #    hostName: 192.168.140.131
+  redis:
+    host: localhost
     #    hostName: 47.104.236.202
-    #    port: 6379
-    #    password: 123456
+    port: 6379
+    password: 5tgbhu8
     #  连接超时时间
-    #    timeout: 5000
-    #    jedis:
-    #      pool:
-    #    最大连接数(使用负值表示没有限制)
-    #        max-active: 10
-    #    连接池最大阻塞等待时间(使用负值表示没有限制)
-    #        max-wait: -1
-    #      连接池中最大空闲连接(使用负值表示没有限制)
-    #        max-idle: 2
-    #      连接池中最小空闲连接
-    #        min-idle: 0
-    # 下面为连接池的补充设置,应用到上面所有数据源中
-    # 初始化大小,最小,最大
-
+    timeout: 5000
+    jedis:
+      pool:
+        #    最大连接数(使用负值表示没有限制)
+        max-active: 10
+        #    连接池最大阻塞等待时间(使用负值表示没有限制)
+        max-wait: -1
+        #      连接池中最大空闲连接(使用负值表示没有限制)
+        max-idle: 2
+        #      连接池中最小空闲连接
+        min-idle: 0
   rabbitmq:
     host: 47.95.29.209
     port: 5672
@@ -72,15 +69,26 @@ mybatis:
   configLocation: classpath:mybatis/mybatis-config.xml
 
 
+logging:
+  config: classpath:logback-spring.xml
+
 server:
   port: 18099
 
 postApi:
-  pageSize: 2000
-  storeUrl: http://15.72.176.14/mhis-pisp/api/pis/inventory-balance/upload
-  sorageUrl: http://15.72.176.14/mhis-pisp/api/pis/storagein-records/upload
-  returnUrl: http://15.72.176.14/mhis-pisp/api/pis/storageout-records/upload
-  orderUrl: http://15.72.176.14/mhis-pisp/api/pis/order-details/upload
+  pageSize: 1000
+  storeUrl: http://120.221.69.238:38080/mhis-pisp/api/pis/inventory-balance/upload
+  sorageUrl: http://120.221.69.238:38080/mhis-pisp/api/pis/storagein-records/upload
+  returnUrl: http://120.221.69.238:38080/mhis-pisp/api/pis/storageout-records/upload
+  orderUrl: http://120.221.69.238:38080/mhis-pisp/api/pis/order-details/upload
+
+update:
+  # 查询时间类型 d(天)/m(月)/y(年)/s(区间)
+  dateType: d
+  count: 1
+  # 只有时间类型为s时生效
+  startDate: 20210101
+  endDate: 20210308
 
 
 

BIN
src/main/resources/linux-x86-64/posinf.dll


BIN
src/main/resources/linux-x86/posinf.dll


+ 5 - 3
src/main/resources/logback-spring.xml

@@ -9,7 +9,7 @@
     <!-- 属性描述 scan:性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
         debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
     <!-- 定义日志文件 输入位置 -->
-    <property name="log_dir" value="/opt/yideb-proxy-srv/logs"/>
+    <property name="log_dir" value="/opt/qingdao-upload/logs"/>
     <!-- 日志最大的历史 30天 -->
     <property name="maxHistory" value="30"/>
 
@@ -197,9 +197,11 @@
     <!--<queueSize>512</queueSize>-->
     <!--&lt;!&ndash; 添加附加的appender,最多只能添加一个 &ndash;&gt;-->
     <!--<appender-ref ref="TRACE"/>-->
-    <!--</appender>-->
+    <!--</appender>-->a
     <!--myibatis log configure-->
-    <logger name="com.miyzh.dao" level="INFO"/>
+    <springProfile name="dev">
+<!--        <logger name="com.miyzh.dao" level="DEBUG"/>-->
+    </springProfile>
 
 
     <!-- root级别   DEBUG -->

+ 10 - 6
src/main/resources/mapper/ClinicMapper.xml

@@ -2,15 +2,19 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.miyzh.dao.ClinicDao">
 
-    <resultMap id="BaseResultMap" type="com.miyzh.entity.Clinic">
-        <result column="ins_code" jdbcType="VARCHAR" property="storeCode" />
-        <result column="clinic_id" jdbcType="VARCHAR" property="clinicId" />
-    </resultMap>
+    <select id="listClinic" resultType="com.miyzh.entity.Clinic">
+        select
+        cci.clinic_id as clinicId, cci.clinic_name as storeName, cci.pos_sn as storeCode
+        from clc_clinic_ins cci
+        where cci.status = 1
+    </select>
 
-    <select id="listClinic" resultMap="BaseResultMap">
+    <select id="listClinicBefore" resultType="com.miyzh.entity.Clinic">
         select
-        cci.clinic_id, cci.ins_code
+        cci.clinic_id as clinicId, cci.clinic_name as storeName, cci.pos_sn as storeCode
         from clc_clinic_ins cci
+        where cci.status = 1
+        and cci.pos_sn is not null and length(cci.pos_sn) = 5
     </select>
 
 

+ 117 - 119
src/main/resources/mapper/MedicineReturnMapper.xml

@@ -22,19 +22,19 @@
             IF( length( cm.med_ins_backup_id ) > 0, cm.med_ins_backup_id, cm.medicine_id ) AS store_medicine_code,
                 cm.medicine_c_name AS store_medicine_name,
                 cm.medicine_c_name AS store_medicine_trade_name,
-                if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-                if(ifnull(cm.medicine_dosage_forms,'')='','999999999',cm.medicine_dosage_forms) as dosage_name,
-                if(ifnull(cm.medicine_specifications,'')='','999999999',cm.medicine_specifications) as specification,
-                if(ifnull(cm.medicine_manufacturer_name,'')='','999999999',cm.medicine_manufacturer_name) as manufacturer,
-                if(ifnull(cm.medicine_place,'')='','999999999',cm.medicine_place) as place,
-                if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+                idm.formulation as dosage_id,
+                cm.medicine_dosage_forms as dosage_name,
+                cm.medicine_specifications as specification,
+                cm.medicine_manufacturer_name as manufacturer,
+                cm.medicine_place as place,
+                idm.medicine_package as pack,
                 '0000000000000' as model,
-                if(ifnull(cso.timestamp_number,'')='','0000000000000',cso.timestamp_number) as batch_no,
+                cso.timestamp_number as batch_no,
                 SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
-                csd.medicine_deadline AS medicine_deadline,
-                if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+                csd.medicine_deadline as medicine_deadline,
+                cm.medicine_barcode as bar_code,
                  '99999999' AS regist_no,
-                if(ifnull(cso.medicine_manufacturer_name,'')='','999999999',cso.medicine_manufacturer_name) as delivery_company,
+                cso.medicine_manufacturer_name as delivery_company,
                 '999999999' AS distributor,
                 '999999999' AS store_storage_code,
                 sum( cso.change_number ) AS return_quantity,
@@ -42,8 +42,8 @@
                 ROUND(cso.retail_price,2) AS retail_price,
                 "" AS plat_item_code,
                 "" AS plat_item_name,
-                if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-                if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+                idm.standard_menu_code as item_code,
+                idm.insurance_medicine_name as item_name,
                 cso.create_name AS return_man,
                 cso.create_time AS return_time,
                 cso.create_id as store_return_code
@@ -51,7 +51,7 @@
                 clc_stock_outbound cso
                 LEFT JOIN clc_medicine cm ON cso.medicine_id = cm.medicine_id
                 AND cso.clinic_id = cm.clinic_id
-                LEFT JOIN clc_stock_detail csd ON csd.timestamp_number = cso.timestamp_number
+                LEFT JOIN clc_stock_detail csd ON csd.medicine_id = cso.medicine_id and csd.timestamp_number = cso.timestamp_number
                 AND cso.clinic_id = csd.clinic_id
                 LEFT JOIN ins_d_medicine idm ON idm.medicine_id = cso.medicine_id
                 AND idm.clinic_id = cso.clinic_id
@@ -86,24 +86,24 @@
     <!--中药销售出库记录-->
     <select id="listChinaMedicineOutbound" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT
-            if(ccm.medicine_category='04', '2','1') as item_type,
+            '1' as item_type,
             IF
                 ( length( ccm.med_ins_backup_id ) > 0, ccm.med_ins_backup_id, ccm.medicine_id ) AS store_medicine_code,
                 ccm.medicine_name AS store_medicine_name,
                 ccm.medicine_name AS store_medicine_trade_name,
-                if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-                if(ifnull(ccm.medicine_rate_last,'')='','999999999',ccm.medicine_rate_last) as dosage_name,
-                if(ifnull(ccm.medicine_specifications,'')='','999999999',ccm.medicine_specifications) as specification,
-                if(ifnull(ccm.medicine_manufacturer_name,'')='','999999999',ccm.medicine_manufacturer_name) as manufacturer,
-                if(ifnull(ccm.medicine_address,'')='','999999999',ccm.medicine_address) as place,
-                if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+                idm.formulation as dosage_id,
+                ccm.medicine_rate_last as dosage_name,
+                ccm.medicine_specifications as specification,
+                ccm.medicine_manufacturer_name as manufacturer,
+                ccm.medicine_address as place,
+                idm.medicine_package as pack,
                 '0000000000000' AS model,
-                if(ifnull(ccso.timestamp_number,'')='','0000000000000',ccso.timestamp_number) as batch_no,
+                ccso.timestamp_number as batch_no,
                 SUBSTR( ccsp.stock_date, 1, 10) AS manufacture_time,
-                ccsp.medicine_deadline AS medicine_deadline,
+                ccsp.medicine_deadline as medicine_deadline,
                 '0000000000000' AS bar_code,
                  '99999999' AS regist_no,
-                if(ifnull(ccso.medicine_manufacturer_name,'')='','999999999',ccso.medicine_manufacturer_name) as delivery_company,
+                ccso.medicine_manufacturer_name as delivery_company,
                 "999999999" AS distributor,
                 '999999999' AS store_storage_code,
                 sum( ccso.change_number ) AS return_quantity,
@@ -111,8 +111,8 @@
                 ROUND(ccso.retail_price,2) AS retail_price,
                 "" AS plat_item_code,
                 "" AS plat_item_name,
-                if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-                if(ifnull(insurance_medicine_name,'')='','999999999',insurance_medicine_name) as item_name,
+                idm.standard_menu_code as item_code,
+                insurance_medicine_name as item_name,
                 ccso.create_name AS return_man,
                 ccso.create_time AS return_time,
                 ccso.create_id as store_return_code
@@ -120,7 +120,7 @@
                 clc_china_stock_outbound ccso
                 LEFT JOIN clc_china_medicine ccm ON ccso.medicine_id = ccm.medicine_id
                 AND ccso.clinic_id = ccm.clinic_id
-                LEFT JOIN clc_china_stock_profit ccsp ON ccsp.timestamp_number = ccso.timestamp_number
+                LEFT JOIN clc_china_stock_profit ccsp ON ccsp.medicine_id = ccso.medicine_id and ccsp.timestamp_number = ccso.timestamp_number
                 AND ccso.clinic_id = ccsp.clinic_id
                 LEFT JOIN ins_d_medicine idm ON idm.medicine_id = ccso.medicine_id
                 AND idm.clinic_id = ccso.clinic_id
@@ -163,19 +163,19 @@
             ) AS store_medicine_code,
              cm.medicine_c_name AS store_medicine_name,
              cm.medicine_c_name AS store_medicine_trade_name,
-             if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-             if(ifnull(cm.medicine_dosage_forms,'')='','999999999',cm.medicine_dosage_forms) as dosage_name,
-             if(ifnull(cm.medicine_specifications,'')='','999999999',cm.medicine_specifications) as specification,
-             if(ifnull(cm.medicine_manufacturer_name,'')='','999999999',cm.medicine_manufacturer_name) as manufacturer,
-             if(ifnull(cm.medicine_place,'')='','999999999',cm.medicine_place) as place,
-             if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+             idm.formulation as dosage_id,
+             cm.medicine_dosage_forms as dosage_name,
+             cm.medicine_specifications as specification,
+             cm.medicine_manufacturer_name as manufacturer,
+             cm.medicine_place as place,
+             idm.medicine_package as pack,
              '0000000000000' AS model,
-             if(ifnull(cod.batch_number,'')='','0000000000000',cod.batch_number) as batch_no,
+             cod.batch_number as batch_no,
              SUBSTR( cod.stock_date, 1, 10) AS manufacture_time,
-             cod.deadline_date AS medicine_deadline,
-             if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+             cod.deadline_date as medicine_deadline,
+             cm.medicine_barcode as bar_code,
               '99999999' AS regist_no,
-             if(ifnull(cod.medicine_manufacture,'')='','999999999',cod.medicine_manufacture) as delivery_company,
+             cod.medicine_manufacture as delivery_company,
              "999999999" AS distributor,
              '999999999' AS store_storage_code,
              sum(cod.out_num) AS return_quantity,
@@ -183,8 +183,8 @@
              ROUND(cod.sale_price,2) AS retail_price,
              " " AS plat_item_code,
              " " AS plat_item_name,
-             if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-             if(ifnull(insurance_medicine_name,'')='','999999999',insurance_medicine_name) as item_name,
+             idm.standard_menu_code as item_code,
+             insurance_medicine_name as item_name,
              co.create_userName AS return_man,
              co.create_time AS return_time,
              co.outtreasury_no as store_return_code
@@ -240,19 +240,19 @@
             ) AS store_medicine_code,
              ccm.medicine_name AS store_medicine_name,
              ccm.medicine_name AS store_medicine_trade_name,
-             if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-             if(ifnull(ccm.medicine_rate_last,'')='','999999999',ccm.medicine_rate_last) as dosage_name,
-             if(ifnull(ccm.medicine_specifications,'')='','999999999',ccm.medicine_specifications) as specification,
-             if(ifnull(ccm.medicine_manufacturer_name,'')='','999999999',ccm.medicine_manufacturer_name) as manufacturer,
-             if(ifnull(ccm.medicine_address,'')='','999999999',ccm.medicine_address) as place,
-             if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+             idm.formulation as dosage_id,
+             ccm.medicine_rate_last as dosage_name,
+             ccm.medicine_specifications as specification,
+             ccm.medicine_manufacturer_name as manufacturer,
+             ccm.medicine_address as place,
+             idm.medicine_package as pack,
              '0000000000000' AS model,
-             if(ifnull(cod.batch_number,'')='','0000000000000',cod.batch_number) as batch_no,
+             cod.batch_number as batch_no,
              SUBSTR( cod.stock_date, 1, 10) AS manufacture_time,
-             cod.deadline_date AS medicine_deadline,
+             cod.deadline_date as medicine_deadline,
              '0000000000000' AS bar_code,
               '99999999' AS regist_no,
-             if(ifnull(cod.medicine_manufacture,'')='','999999999',cod.medicine_manufacture) as delivery_company,
+             cod.medicine_manufacture as delivery_company,
              "999999999" AS distributor,
              '999999999' AS store_storage_code,
              sum(cod.out_num) AS return_quantity,
@@ -260,8 +260,8 @@
              ROUND(cod.sale_price,2) AS retail_price,
              "" AS plat_item_code,
              "" AS plat_item_name,
-             if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-             if(ifnull(insurance_medicine_name,'')='','999999999',insurance_medicine_name) as item_name,
+             idm.standard_menu_code as item_code,
+             insurance_medicine_name as item_name,
              co.create_userName AS return_man,
              co.create_time AS return_time,
               co.outtreasury_no as store_return_code
@@ -314,19 +314,19 @@
                 ( length( cm.med_ins_backup_id ) > 0, cm.med_ins_backup_id, cm.medicine_id ) AS store_medicine_code,
                 cm.medicine_c_name AS store_medicine_name,
                 cm.medicine_c_name AS store_medicine_trade_name,
-                if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-                if(ifnull(cm.medicine_dosage_forms,'')='','999999999',cm.medicine_dosage_forms) as dosage_name,
-                if(ifnull(cm.medicine_specifications,'')='','999999999',cm.medicine_specifications) as specification,
-                if(ifnull(cm.medicine_manufacturer_name,'')='','999999999',cm.medicine_manufacturer_name) as manufacturer,
-                if(ifnull(cm.medicine_place,'')='','999999999',cm.medicine_place) as place,
-                if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+                idm.formulation as dosage_id,
+                cm.medicine_dosage_forms as dosage_name,
+                cm.medicine_specifications as specification,
+                cm.medicine_manufacturer_name as manufacturer,
+                cm.medicine_place as place,
+                idm.medicine_package as pack,
                 '0000000000000' AS model,
-                if(ifnull(cpbd.stock_purchase_number,'')='','0000000000000',cpbd.stock_purchase_number) as batch_no,
-                csd.medicine_deadline AS medicine_deadline,
+                cpbd.stock_purchase_number as batch_no,
+                csd.medicine_deadline as medicine_deadline,
                 SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
-                if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+                cm.medicine_barcode as bar_code,
                  '99999999' AS regist_no,
-                if(ifnull(cpb.supplier_name,'')='','999999999',cpb.supplier_name) as delivery_company,
+                cpb.supplier_name as delivery_company,
                 "999999999" AS distributor,
                 '999999999' AS store_storage_code,
                 sum( cpbd.return_count ) AS return_quantity,
@@ -334,8 +334,8 @@
                 ROUND(cpbd.current_sale_price,2) AS retail_price,
                 " " AS plat_item_code,
                 " " AS plat_item_name,
-                if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-                if(ifnull(insurance_medicine_name,'')='','999999999',insurance_medicine_name) as item_name,
+                idm.standard_menu_code as item_code,
+                insurance_medicine_name as item_name,
                 cpb.create_userName AS return_man,
                 cpb.create_time AS return_time,
                 cpb.purchase_id as store_return_code
@@ -346,12 +346,13 @@
                 ins_d_medicine AS idm,
                 clc_stock_detail csd
             WHERE
-                cpbd.medicine_id = cm.medicine_id
-                AND cpbd.clinic_id = cm.clinic_id
+                cpbd.clinic_id = cm.clinic_id
                 AND cpbd.clinic_id = cpb.clinic_id
+                AND cm.clinic_id = idm.clinic_id
+                AND cm.clinic_id = csd.clinic_id
+                AND cpbd.medicine_id = cm.medicine_id
                 AND cpb.id = cpbd.back_id
                 AND cm.medicine_id = idm.medicine_id
-                AND cm.clinic_id = idm.clinic_id
                 AND cpbd.stock_purchase_number = csd.stock_purchase_number
                 AND cpbd.clinic_id = #{clinicId}
                 AND cpb.biz_type in (1, 2, 3)
@@ -393,19 +394,19 @@
             ) AS store_medicine_code,
              ccm.medicine_name AS store_medicine_name,
              ccm.medicine_name AS store_medicine_trade_name,
-             if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-             if(ifnull(ccm.medicine_rate_last,'')='','999999999',ccm.medicine_rate_last) as dosage_name,
-             if(ifnull(ccm.medicine_specifications,'')='','999999999',ccm.medicine_specifications) as specification,
-             if(ifnull(ccm.medicine_manufacturer_name,'')='','999999999',ccm.medicine_manufacturer_name) as manufacturer,
-             if(ifnull(ccm.medicine_address,'')='','999999999',ccm.medicine_address) as place,
-             if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+             idm.formulation as dosage_id,
+             ccm.medicine_rate_last as dosage_name,
+             ccm.medicine_specifications as specification,
+             ccm.medicine_manufacturer_name as manufacturer,
+             ccm.medicine_address as place,
+             idm.medicine_package as pack,
              '0000000000000' AS model,
-             if(ifnull(cpbd.stock_purchase_number,'')='','0000000000000',cpbd.stock_purchase_number) as batch_no,
-             ccsp.medicine_deadline AS medicine_deadline,
+             cpbd.stock_purchase_number as batch_no,
+             ccsp.medicine_deadline as medicine_deadline,
              SUBSTR( ccsp.stock_date, 1, 10) AS manufacture_time,
              '0000000000000' AS bar_code,
               '99999999' AS regist_no,
-             if(ifnull(cpb.supplier_name,'')='','999999999',cpb.supplier_name) as delivery_company,
+             cpb.supplier_name as delivery_company,
              "999999999" AS distributor,
              '999999999' AS store_storage_code,
              sum(cpbd.return_count) AS return_quantity,
@@ -413,8 +414,8 @@
              ROUND(cpbd.current_sale_price,2) AS retail_price,
              "" AS plat_item_code,
              "" AS plat_item_name,
-             if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-             if(ifnull(insurance_medicine_name,'')='','999999999',insurance_medicine_name) as item_name,
+             idm.standard_menu_code as item_code,
+             insurance_medicine_name as item_name,
              cpb.create_userName AS return_man,
              cpb.create_time AS return_time,
              cpb.purchase_id as store_return_code
@@ -469,19 +470,19 @@
                 ( length( cm.med_ins_backup_id ) > 0, cm.med_ins_backup_id, cm.medicine_id ) AS store_medicine_code,
                 cm.medicine_c_name AS store_medicine_name,
                 cm.medicine_c_name AS store_medicine_trade_name,
-                if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-                if(ifnull(cm.medicine_dosage_forms,'')='','999999999',cm.medicine_dosage_forms) as dosage_name,
-                if(ifnull(cm.medicine_specifications,'')='','999999999',cm.medicine_specifications) as specification,
-                if(ifnull(cm.medicine_manufacturer_name,'')='','999999999',cm.medicine_manufacturer_name) as manufacturer,
-                if(ifnull(cm.medicine_place,'')='','999999999',cm.medicine_place) as place,
-                if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+                idm.formulation as dosage_id,
+                cm.medicine_dosage_forms as dosage_name,
+                cm.medicine_specifications as specification,
+                cm.medicine_manufacturer_name as manufacturer,
+                cm.medicine_place as place,
+                idm.medicine_package as pack,
                 '0000000000000' AS model,
-                if(ifnull(cid.batch_number,'')='','0000000000000',cid.batch_number) as batch_no,
+                cid.batch_number as batch_no,
                 SUBSTR( cid.stock_date, 1, 10) AS manufacture_time,
-                cid.deadline_date AS medicine_deadline,
-                if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+                cid.deadline_date as medicine_deadline,
+                cm.medicine_barcode as bar_code,
                  '99999999' AS regist_no,
-                if(ifnull(cid.medicine_manufacture,'')='','999999999',cid.medicine_manufacture) as delivery_company,
+                cid.medicine_manufacture as delivery_company,
                 '999999999' AS distributor,
                 '999999999' AS store_storage_code,
                 sum( cid.stock_num ) AS return_quantity,
@@ -489,24 +490,21 @@
                 ROUND(cid.sale_price,2) AS retail_price,
                 "" AS plat_item_code,
                 "" AS plat_item_name,
-                if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-                if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+                idm.standard_menu_code as item_code,
+                idm.insurance_medicine_name as item_name,
                 ci.create_userName AS return_man,
                 ci.create_time AS return_time,
                 ci.inventory_no as store_return_code
             FROM
-                clc_inventory_detail cid,
-                clc_medicine cm,
-                clc_inventory ci,
-                ins_d_medicine AS idm
-            WHERE
-                cid.medicine_id = cm.medicine_id
-                AND cid.clinic_id = cm.clinic_id
-                AND cid.clinic_id = ci.clinic_id
+                clc_inventory_detail AS cid
+                LEFT JOIN clc_medicine AS cm ON cid.clinic_id = cm.clinic_id
+                AND cid.medicine_id = cm.medicine_id
+                LEFT JOIN clc_inventory AS ci ON cid.clinic_id = ci.clinic_id
                 AND cid.inventory_id = ci.id
-                AND cm.medicine_id = idm.medicine_id
-                AND cm.clinic_id = idm.clinic_id
-                AND cid.inventory_type = 2
+                LEFT JOIN ins_d_medicine AS idm ON idm.clinic_id = ci.clinic_id
+                AND idm.medicine_id = cm.medicine_id
+            WHERE
+                cid.inventory_type = 2
                 AND cid.clinic_id = #{clinicId}
                 AND cid.biz_type != 4
                 <choose>
@@ -547,19 +545,19 @@
                 ) AS store_medicine_code,
                  ccm.medicine_name AS store_medicine_name,
                  ccm.medicine_name AS store_medicine_trade_name,
-                 if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-                 if(ifnull(ccm.medicine_rate_last,'')='','999999999',ccm.medicine_rate_last) as dosage_name,
-                 if(ifnull(ccm.medicine_specifications,'')='','999999999',ccm.medicine_specifications) as specification,
-                 if(ifnull(ccm.medicine_manufacturer_name,'')='','999999999',ccm.medicine_manufacturer_name) as manufacturer,
-                 if(ifnull(ccm.medicine_address,'')='','999999999',ccm.medicine_address) as place,
-                 if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+                 idm.formulation as dosage_id,
+                 ccm.medicine_rate_last as dosage_name,
+                 ccm.medicine_specifications as specification,
+                 ccm.medicine_manufacturer_name as manufacturer,
+                 ccm.medicine_address as place,
+                 idm.medicine_package as pack,
                  '0000000000000' AS model,
-                 if(ifnull(cid.batch_number,'')='','0000000000000',cid.batch_number) as batch_no,
+                 cid.batch_number as batch_no,
                  SUBSTR( cid.stock_date, 1, 10) AS manufacture_time,
-                 cid.deadline_date AS medicine_deadline,
+                 cid.deadline_date as medicine_deadline,
                  '0000000000000' AS bar_code,
                   '99999999' AS regist_no,
-                 if(ifnull(cid.medicine_manufacture,'')='','999999999',cid.medicine_manufacture) as delivery_company,
+                 cid.medicine_manufacture as delivery_company,
                  "999999999" AS distributor,
                  '999999999' AS store_storage_code,
                  sum(cid.stock_num) AS return_quantity,
@@ -567,24 +565,24 @@
                  ROUND(cid.sale_price,2) AS retail_price,
                  "" AS plat_item_code,
                  "" AS plat_item_name,
-                 if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-                 if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+                 idm.standard_menu_code as item_code,
+                 idm.insurance_medicine_name as item_name,
                  ci.create_userName AS return_man,
                  ci.create_time AS return_time,
                  ci.inventory_no as store_return_code
             FROM
-                clc_inventory_detail cid,
-                clc_china_medicine ccm,
-                clc_inventory ci ,
-                ins_d_medicine as idm
-            WHERE
-                cid.medicine_id = ccm.medicine_id
-                AND cid.clinic_id = ccm.clinic_id
-                AND cid.clinic_id = ci.clinic_id
+                clc_inventory_detail cid
+                left join clc_china_medicine ccm
+                on cid.clinic_id = ccm.clinic_id
+                and cid.medicine_id = ccm.medicine_id
+                left join clc_inventory ci
+                on cid.clinic_id = ci.clinic_id
                 AND cid.inventory_id = ci.id
+                left join ins_d_medicine as idm
+                on cid.clinic_id = idm.clinic_id
                 AND ccm.medicine_id = idm.medicine_id
-                AND ccm.clinic_id = idm.clinic_id
-                AND cid.inventory_type = 2
+            WHERE
+                cid.inventory_type = 2
                 AND cid.clinic_id = #{clinicId}
                 AND cid.biz_type = 4
                 <choose>

+ 107 - 108
src/main/resources/mapper/MedicineStorageMapper.xml

@@ -17,25 +17,25 @@
 
     <!--西药采购入库记录-->
     <select id="listMedicinePurchase" resultMap="BaseResultMap" parameterType="java.lang.String">
-        SELECT DISTINCT
+        SELECT
             if(cm.medicine_category='04', '2','1') as item_type,
             IF
             ( length( cm.med_ins_backup_id )> 0, cm.med_ins_backup_id, cm.medicine_id ) AS store_medicine_code,
             cm.medicine_c_name as store_medicine_name,
             cm.medicine_name_goods as store_medicine_trade_name,
-            if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-            if(ifnull(cm.medicine_dosage_forms,'')='','999999999',cm.medicine_dosage_forms) as dosage_name,
-            if(ifnull(cm.medicine_specifications,'')='','999999999',cm.medicine_specifications) as specification,
-            if(ifnull(cm.medicine_manufacturer_name,'')='','999999999',cm.medicine_manufacturer_name) as manufacturer,
-            if(ifnull(cm.medicine_place,'')='','999999999',cm.medicine_place) as place,
-            if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+            idm.formulation as dosage_id,
+            cm.medicine_dosage_forms as dosage_name,
+            cm.medicine_specifications as specification,
+            cm.medicine_manufacturer_name as manufacturer,
+            cm.medicine_place as place,
+            idm.medicine_package as pack,
             '0000000000000' AS model,
-            if(ifnull(csi.stock_batch_number,'')='','0000000000000',csi.stock_batch_number) as batch_no,
+            csi.stock_batch_number as batch_no,
             SUBSTR( csi.create_time, 1, 10) AS manufacture_time,
             csi.medicine_deadline as medicine_deadline,
-            if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+            cm.medicine_barcode as bar_code,
              '99999999' AS regist_no,
-            if(ifnull(csi.stock_channel,'')='','999999999',csi.stock_channel) as delivery_company,
+            csi.stock_channel as delivery_company,
             "999999999" as distributor,
             cp.purchase_no as store_storage_code,
             sum( csi.stock_change_number ) AS storage_quantity,
@@ -43,8 +43,8 @@
             ROUND(cs.medicine_retail_price,2) AS retail_price,
             "" as plat_item_code,
             "" as plat_item_name,
-            if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-            if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+            idm.standard_menu_code as item_code,
+            idm.insurance_medicine_name as item_name,
             cp.create_username AS storage_man,
             cp.create_time as storage_time
         FROM
@@ -96,7 +96,7 @@
 
     <!--中药采购入库记录-->
     <select id="listChinaMedicinePurchase" resultMap="BaseResultMap" parameterType="java.lang.String">
-        SELECT DISTINCT
+        SELECT
            if(ccm.medicine_category='04', '2','1') as item_type,
             IF (
                 length(ccm.med_ins_backup_id) > 0,
@@ -105,19 +105,19 @@
             ) AS store_medicine_code,
              ccm.medicine_name AS store_medicine_name,
              ccm.medicine_name AS store_medicine_trade_name,
-             if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-             if(ifnull(ccm.medicine_rate_last,'')='','999999999',ccm.medicine_rate_last) as dosage_name,
-             if(ifnull(ccm.medicine_specifications,'')='','999999999',ccm.medicine_specifications) as specification,
-             if(ifnull(ccm.medicine_manufacturer_name,'')='','999999999',ccm.medicine_manufacturer_name) as manufacturer,
-             if(ifnull(ccm.medicine_address,'')='','999999999',ccm.medicine_address) as place,
-             if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+             idm.formulation as dosage_id,
+             ccm.medicine_rate_last as dosage_name,
+             ccm.medicine_specifications as specification,
+             ccm.medicine_manufacturer_name as manufacturer,
+             ccm.medicine_address as place,
+             idm.medicine_package as pack,
              '0000000000000' AS model,
-             if(ifnull(ccssf.stock_batch_number,'')='','0000000000000',ccssf.stock_batch_number) as batch_no,
+             ccssf.stock_batch_number as batch_no,
              '0000000000000' as bar_code,
              SUBSTR( ccssf.create_time, 1, 10) AS manufacture_time,
-             ccssf.medicine_deadline AS medicine_deadline,
+            ccssf.medicine_deadline as medicine_deadline,
               '99999999' AS regist_no,
-             if(ifnull(ccssf.stock_channel,'')='','999999999',ccssf.stock_channel) as delivery_company,
+             ccssf.stock_channel as delivery_company,
              "999999999" AS distributor,
              cp.purchase_no AS store_storage_code,
              sum(ccssf.stock_change_number) AS storage_quantity,
@@ -125,8 +125,8 @@
              ROUND(cs.medicine_retail_price,2) AS retail_price,
              "" AS plat_item_code,
              "" AS plat_item_name,
-             if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-             if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+             idm.standard_menu_code as item_code,
+             idm.insurance_medicine_name as item_name,
              cp.create_username AS storage_man,
              cp.create_time AS storage_time
             FROM
@@ -178,25 +178,25 @@
 
     <!--西药销售退回入库记录-->
     <select id="listMedicineOutbound" resultMap="BaseResultMap" parameterType="java.lang.String">
-        SELECT DISTINCT
+        SELECT
             if(cm.medicine_category='04', '2','1') as item_type,
         IF
             ( length( cm.med_ins_backup_id )> 0, cm.med_ins_backup_id, cm.medicine_id ) AS store_medicine_code,
             cm.medicine_c_name AS store_medicine_name,
             cm.medicine_name_goods AS store_medicine_trade_name,
-            if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-            if(ifnull(cm.medicine_dosage_forms,'')='','999999999',cm.medicine_dosage_forms) as dosage_name,
-            if(ifnull(cm.medicine_specifications,'')='','999999999',cm.medicine_specifications) as specification,
-            if(ifnull(cm.medicine_manufacturer_name,'')='','999999999',cm.medicine_manufacturer_name) as manufacturer,
-            if(ifnull(cm.medicine_place,'')='','999999999',cm.medicine_place) as place,
-            if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+            idm.formulation as dosage_id,
+            cm.medicine_dosage_forms as dosage_name,
+            cm.medicine_specifications as specification,
+            cm.medicine_manufacturer_name as manufacturer,
+            cm.medicine_place as place,
+            idm.medicine_package as pack,
             '0000000000000' AS model,
-            if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as batch_no,
+            csd.stock_batch_number as batch_no,
             SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
-            csd.medicine_deadline AS medicine_deadline,
-            if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+        csd.medicine_deadline as medicine_deadline,
+            cm.medicine_barcode as bar_code,
              '99999999' AS regist_no,
-            if(ifnull(csd.stock_channel,'')='','999999999',csd.stock_channel) as delivery_company,
+            csd.stock_channel as delivery_company,
             "999999999" AS distributor,
             csd.timestamp_number AS store_storage_code,
             sum( cso.change_number ) AS storage_quantity,
@@ -204,22 +204,24 @@
             ROUND(cs.medicine_retail_price,2) AS retail_price,
             "" AS plat_item_code,
             "" AS plat_item_name,
-            if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-            if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+            idm.standard_menu_code as item_code,
+            idm.insurance_medicine_name as item_name,
             cso.doctor_name AS storage_man,
             cso.stock_date AS storage_time
         FROM
-            clc_medicine cm
-            LEFT JOIN clc_stock_outbound cso ON cso.medicine_id = cm.medicine_id
+            clc_stock_outbound cso
+            left join clc_medicine cm on
+            cso.medicine_id = cm.medicine_id
             AND cm.clinic_id = cso.clinic_id
             LEFT JOIN clc_stock_detail csd ON cso.stock_detail_id = csd.id
             AND cm.clinic_id = csd.clinic_id
             LEFT JOIN clc_stock cs ON cs.medicine_id = cm.medicine_id
-            AND cs.clinic_id = cm.clinic_id
+            AND cs.clinic_id = cso.clinic_id
             left join ins_d_medicine idm
             on idm.medicine_id = cm.medicine_id
+            and idm.clinic_id = cso.clinic_id
         WHERE
-            cm.clinic_id = #{clinicId}
+            cso.clinic_id = #{clinicId}
             AND cso.change_type IN ( '03', '04' )
             <choose>
                 <when test='dateType == "d" and count != null'>
@@ -250,25 +252,25 @@
 
     <!--中药销售退回入库记录-->
     <select id="listChinaMedicineOutbound" resultMap="BaseResultMap" parameterType="java.lang.String">
-        SELECT DISTINCT
-            if(ccm.medicine_category='04', '2','1') as item_type,
+        SELECT
+        '1' item_type,
         IF
             ( length( ccm.med_ins_backup_id )> 0, ccm.med_ins_backup_id, ccm.medicine_id ) AS store_medicine_code,
             ccm.medicine_name AS store_medicine_name,
             ccm.medicine_name AS store_medicine_trade_name,
-            if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-            if(ifnull(ccm.medicine_rate_last,'')='','999999999',ccm.medicine_rate_last) as dosage_name,
-            if(ifnull(ccm.medicine_specifications,'')='','999999999',ccm.medicine_specifications) as specification,
-            if(ifnull(ccm.medicine_manufacturer_name,'')='','999999999',ccm.medicine_manufacturer_name) as manufacturer,
-            if(ifnull(ccm.medicine_address,'')='','999999999',ccm.medicine_address) as place,
-            if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+            idm.formulation as dosage_id,
+            ccm.medicine_rate_last as dosage_name,
+            ccm.medicine_specifications as specification,
+            ccm.medicine_manufacturer_name as manufacturer,
+            ccm.medicine_address as place,
+            idm.medicine_package as pack,
             '0000000000000' AS model,
-            if(ifnull(ccsp.stock_batch_number,'')='','0000000000000',ccsp.stock_batch_number) as batch_no,
+            ccsp.stock_batch_number as batch_no,
             '0000000000000' as bar_code,
             SUBSTR( ccsp.stock_date, 1, 10) AS manufacture_time,
-            ccsp.medicine_deadline AS medicine_deadline,
+        ccsp.medicine_deadline as medicine_deadline,
              '99999999' AS regist_no,
-            if(ifnull(ccsp.stock_channel,'')='','999999999',ccsp.stock_channel) as delivery_company,
+            ccsp.stock_channel as delivery_company,
             "999999999" AS distributor,
             ccsp.timestamp_number AS store_storage_code,
             sum( cso.change_number ) AS storage_quantity,
@@ -276,22 +278,22 @@
             ROUND(ccs.medicine_retail_price,2) AS retail_price,
             "" AS plat_item_code,
             "" AS plat_item_name,
-            if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-            if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+            idm.standard_menu_code as item_code,
+            idm.insurance_medicine_name as item_name,
             cso.doctor_name AS storage_man,
             cso.stock_date AS storage_time
         FROM
-            clc_china_medicine ccm
-            LEFT JOIN clc_stock_outbound cso ON cso.medicine_id = ccm.medicine_id
+            clc_china_stock_outbound cso
+            LEFT JOIN clc_china_medicine ccm ON cso.medicine_id = ccm.medicine_id
             AND ccm.clinic_id = cso.clinic_id
             LEFT JOIN clc_china_stock_profit ccsp ON cso.stock_detail_id = ccsp.id
-            AND ccm.clinic_id = ccsp.clinic_id
-            LEFT JOIN clc_china_stock ccs ON ccs.medicine_id = ccm.medicine_id
-            AND ccs.clinic_id = ccm.clinic_id
-            LEFT JOIN ins_d_medicine idm ON idm.medicine_id = ccm.medicine_id
-            AND idm.clinic_id = ccm.clinic_id
+            AND cso.clinic_id = ccsp.clinic_id
+            LEFT JOIN clc_china_stock ccs ON ccs.medicine_id = cso.medicine_id
+            AND ccs.clinic_id = cso.clinic_id
+            LEFT JOIN ins_d_medicine idm ON idm.medicine_id = cso.medicine_id
+            AND idm.clinic_id = cso.clinic_id
         WHERE
-            ccm.clinic_id = #{clinicId}
+             cso.clinic_id = #{clinicId}
             AND cso.change_type IN ( '03', '04' )
             <choose>
                 <when test='dateType == "d" and count != null'>
@@ -328,43 +330,40 @@
                 ( length( cm.med_ins_backup_id ) > 0, cm.med_ins_backup_id, cm.medicine_id ) AS store_medicine_code,
                 cm.medicine_c_name AS store_medicine_name,
                 cm.medicine_c_name AS store_medicine_trade_name,
-                if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-                if(ifnull(cm.medicine_dosage_forms,'')='','999999999',cm.medicine_dosage_forms) as dosage_name,
-                if(ifnull(cm.medicine_specifications,'')='','999999999',cm.medicine_specifications) as specification,
-                if(ifnull(cm.medicine_manufacturer_name,'')='','999999999',cm.medicine_manufacturer_name) as manufacturer,
-                if(ifnull(cm.medicine_place,'')='','999999999',cm.medicine_place) as place,
-                if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+                idm.formulation as dosage_id,
+                cm.medicine_dosage_forms as dosage_name,
+                cm.medicine_specifications as specification,
+                cm.medicine_manufacturer_name as manufacturer,
+                cm.medicine_place as place,
+                idm.medicine_package as pack,
                 '0000000000000' AS model,
-                if(ifnull(cid.batch_number,'')='','0000000000000',cid.batch_number) as batch_no,
+                cid.batch_number as batch_no,
                 SUBSTR( cid.stock_date, 1, 10) AS manufacture_time,
-                cid.deadline_date AS medicine_deadline,
+                cid.deadline_date as medicine_deadline,
                 '0000000000000' AS bar_code,
                  '99999999' AS regist_no,
-                if(ifnull(cid.medicine_manufacture,'')='','999999999',cid.medicine_manufacture) as delivery_company,
+                cid.medicine_manufacture as delivery_company,
                 "999999999" AS distributor,
                 sum( cid.stock_num ) AS storage_quantity,
                 ROUND(cid.stock_price,2) AS price,
                 ROUND(cid.sale_price,2) AS retail_price,
                 "" AS plat_item_code,
                 "" AS plat_item_name,
-                if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-                if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+                idm.standard_menu_code as item_code,
+                idm.insurance_medicine_name as item_name,
                 ci.create_userName AS storage_man,
                 ci.create_time AS storage_time,
                 ci.inventory_no as store_storage_code
-            FROM
-                clc_inventory_detail cid,
-                clc_medicine cm,
-                clc_inventory ci,
-                ins_d_medicine AS idm
-            WHERE
-                cid.medicine_id = cm.medicine_id
-                AND cid.clinic_id = cm.clinic_id
-                AND cid.clinic_id = ci.clinic_id
-                AND cid.inventory_id = ci.id
-                AND cm.medicine_id = idm.medicine_id
-                AND cm.clinic_id = idm.clinic_id
-                AND cid.inventory_type = 1
+        FROM
+            clc_inventory_detail AS cid
+            LEFT JOIN clc_medicine AS cm ON cid.clinic_id = cm.clinic_id
+            AND cid.medicine_id = cm.medicine_id
+            LEFT JOIN clc_inventory AS ci ON cid.clinic_id = ci.clinic_id
+            AND cid.inventory_id = ci.id
+            LEFT JOIN ins_d_medicine AS idm ON idm.clinic_id = ci.clinic_id
+            AND idm.medicine_id = cm.medicine_id
+        WHERE
+                cid.inventory_type = 1
                 AND cid.clinic_id = #{clinicId}
                 AND cid.biz_type != '4'
                 <choose>
@@ -397,7 +396,7 @@
     <!--中药盘点盘盈入库-->
     <select id="listChinaMedicineInventory" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT DISTINCT
-            if(ccm.medicine_category='04', '2','1') as item_type,
+            '1' as item_type,
             IF (
                 length(ccm.med_ins_backup_id) > 0,
                 ccm.med_ins_backup_id,
@@ -405,19 +404,19 @@
                 ) AS store_medicine_code,
                  ccm.medicine_name AS store_medicine_name,
                  ccm.medicine_name AS store_medicine_trade_name,
-                 if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-                 if(ifnull(ccm.medicine_rate_last,'')='','999999999',ccm.medicine_rate_last) as dosage_name,
-                 if(ifnull(ccm.medicine_specifications,'')='','999999999',ccm.medicine_specifications) as specification,
-                 if(ifnull(ccm.medicine_manufacturer_name,'')='','999999999',ccm.medicine_manufacturer_name) as manufacturer,
-                 if(ifnull(ccm.medicine_address,'')='','999999999',ccm.medicine_address) as place,
-                 if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+                 idm.formulation as dosage_id,
+                 ccm.medicine_rate_last as dosage_name,
+                 ccm.medicine_specifications as specification,
+                 ccm.medicine_manufacturer_name as manufacturer,
+                 ccm.medicine_address as place,
+                 idm.medicine_package as pack,
                  '0000000000000' AS model,
-                 if(ifnull(cid.batch_number,'')='','0000000000000',cid.batch_number) as batch_no,
+                 cid.batch_number as batch_no,
                  SUBSTR( cid.stock_date, 1, 10) AS manufacture_time,
-                 cid.deadline_date AS medicine_deadline,
+                cid.deadline_date as medicine_deadline,
                  '0000000000000' as bar_code,
                   '99999999' AS regist_no,
-                 if(ifnull(cid.medicine_manufacture,'')='','999999999',cid.medicine_manufacture) as delivery_company,
+                 cid.medicine_manufacture as delivery_company,
                  "999999999" AS distributor,
                  ci.inventory_no AS store_storage_code,
                  sum(cid.stock_num) AS storage_quantity,
@@ -425,23 +424,23 @@
                  ROUND(cid.sale_price,2) AS retail_price,
                  "" AS plat_item_code,
                  "" AS plat_item_name,
-                 if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-                 if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+                 idm.standard_menu_code as item_code,
+                 idm.insurance_medicine_name as item_name,
                  ci.create_userName AS storage_man,
                  ci.create_time AS storage_time
             FROM
-                clc_inventory_detail cid,
-                clc_china_medicine ccm,
-                clc_inventory ci ,
-                ins_d_medicine as idm
-            WHERE
-                cid.medicine_id = ccm.medicine_id
-                AND cid.clinic_id = ccm.clinic_id
-                AND cid.clinic_id = ci.clinic_id
+                clc_inventory_detail cid
+                left join clc_china_medicine ccm
+                on cid.clinic_id = ccm.clinic_id
+                and cid.medicine_id = ccm.medicine_id
+                left join clc_inventory ci
+                on cid.clinic_id = ci.clinic_id
                 AND cid.inventory_id = ci.id
+                left join ins_d_medicine as idm
+                on cid.clinic_id = idm.clinic_id
                 AND ccm.medicine_id = idm.medicine_id
-                AND ccm.clinic_id = idm.clinic_id
-                AND cid.inventory_type = 1
+            WHERE
+               cid.inventory_type = 1
                 AND cid.clinic_id = #{clinicId}
                 AND cid.biz_type = 4
                 <choose>

+ 21 - 21
src/main/resources/mapper/MedicineStoreMapper.xml

@@ -15,26 +15,26 @@
         IF( length( cm.med_ins_backup_id ) > 0, cm.med_ins_backup_id, cm.medicine_id ) AS store_medicine_code,
         cm.medicine_c_name as store_medicine_name,
         cm.medicine_name_goods as store_medicine_trade_name,
-        if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-        if(ifnull(cm.medicine_dosage_forms,'')='','999999999',cm.medicine_dosage_forms) as dosage_name,
-        if(ifnull(cm.medicine_specifications,'')='','999999999',cm.medicine_specifications) as specification,
-        if(ifnull(cm.medicine_manufacturer_name,'')='','999999999',cm.medicine_manufacturer_name) as manufacturer,
-        if(ifnull(cm.medicine_place,'')='','999999999',cm.medicine_place) as place,
-        if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+        idm.formulation as dosage_id,
+        cm.medicine_dosage_forms as dosage_name,
+        cm.medicine_specifications as specification,
+        cm.medicine_manufacturer_name as manufacturer,
+        cm.medicine_place as place,
+        idm.medicine_package as pack,
         '0000000000000' as model,
-        if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as batch_no,
+        csd.stock_batch_number as batch_no,
         SUBSTR( csd.create_time, 1, 10) AS manufacture_time,
         csd.medicine_deadline as medicine_deadline,
-        if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+        cm.medicine_barcode as bar_code,
          '99999999' AS regist_no,
-        if(ifnull(csd.stock_channel,'')='','999999999',csd.stock_channel) as delivery_company,
+        csd.stock_channel as delivery_company,
         "999999999" as distributor,
         ROUND(csd.stock_bid,2) as price,
         ROUND(idm.sale_price,2) as retail_price,
         "" as plat_item_code,
         "" as plat_item_name,
-        if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-        if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+        idm.standard_menu_code as item_code,
+        idm.insurance_medicine_name as item_name,
         "999999999" as approval_number,
         csd.remain_number as current_num
         from
@@ -64,26 +64,26 @@
                 ) AS store_medicine_code,
         ccm.medicine_name as store_medicine_name,
         ccm.medicine_name as store_medicine_trade_name,
-        if(ifnull(idm.formulation, '')='','99999999',idm.formulation) as dosage_id,
-        if(ifnull(ccm.medicine_rate_last,'')='','999999999',ccm.medicine_rate_last) as dosage_name,
-        if(ifnull(ccm.medicine_specifications,'')='','999999999',ccm.medicine_specifications) as specification,
-        if(ifnull(ccm.medicine_manufacturer_name,'')='','999999999',ccm.medicine_manufacturer_name) as manufacturer,
-        if(ifnull(ccm.medicine_address,'')='','999999999',ccm.medicine_address) as place,
-        if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+        idm.formulation as dosage_id,
+        ccm.medicine_rate_last as dosage_name,
+        ccm.medicine_specifications as specification,
+        ccm.medicine_manufacturer_name as manufacturer,
+        ccm.medicine_address as place,
+        idm.medicine_package as pack,
         '0000000000000' as model,
-        if(ifnull(ccsp.stock_batch_number,'')='','0000000000000',ccsp.stock_batch_number) as batch_no,
+        ccsp.stock_batch_number as batch_no,
         SUBSTR( ccm.create_time, 1, 10) AS manufacture_time,
         ccsp.medicine_deadline as medicine_deadline,
         '0000000000000' as bar_code,
          '99999999' AS regist_no,
-        if(ifnull(ccsp.stock_channel,'')='','999999999',ccsp.stock_channel) as delivery_company,
+        ccsp.stock_channel as delivery_company,
         "999999999" as distributor,
         ROUND(ccsp.stock_bid,2) as price,
         ROUND(idm.sale_price,2) as retail_price,
         "" as plat_item_code,
         "" as plat_item_name,
-        if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-        if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+        idm.standard_menu_code as item_code,
+        idm.insurance_medicine_name as item_name,
         "999999999" as approval_number,
         ccsp.remain_number as current_num
         from

+ 89 - 99
src/main/resources/mapper/OrderDetailMapper.xml

@@ -52,18 +52,18 @@
     <select id="listClcMedOrder" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT
             cpi.prescription_id AS store_order_no,
-            if(ifnull(ics.settle_transaction_id,'')='','999999999',ics.settle_transaction_id) as mis_no,
+            '999999999' as mis_no,
             cpi.states AS settledstatus,
-            ROUND(cpi.price,2) AS total_amt,
-            0 AS insurance_amt,
-            cso.doctor_name AS operater,
+            ROUND(cso.change_number*cso.retail_price,2) AS total_amt,
+            '0' AS insurance_amt,
+            ifnull(cso.doctor_name, '无名') AS operater,
             SUBSTR( cso.create_time, 1, 10 ) AS sale_date,
             cso.create_time AS sale_time,
             cso.patient_name AS buy_med_person,
             '0000000000000' AS credential_num,
             IF( cm.medicine_category = '04', '2', '1') AS item_type,
             cso.medicine_name AS store_medicine_name,
-            IF( length( cso.med_ins_backup_id ) > 0, cm.med_ins_backup_id, cm.medicine_id ) AS store_medicine_code,
+            IF( length( cso.med_ins_backup_id ) > 0, cso.med_ins_backup_id, cm.medicine_id ) AS store_medicine_code,
             '' AS plat_item_code,
             '' AS plat_item_name,
             if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
@@ -71,19 +71,19 @@
             if(ifnull(csd.stock_purchase_number,'')='','0000000000000',csd.stock_purchase_number) as store_precord_code,
             if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as store_storage_code,
             cpi.prescription_id AS recipe_no,
-            if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-            if(ifnull(cm.medicine_dosage_forms,'')='','999999999',cm.medicine_dosage_forms) as dosage_name,
-            if(ifnull(cso.medicine_specifications,'')='','999999999',cso.medicine_specifications) as specification,
-            if(ifnull(cso.medicine_manufacturer_name,'')='','999999999',cso.medicine_manufacturer_name) as manufacturer,
-            if(ifnull(cm.medicine_place,'')='','999999999',cm.medicine_place) as place,
-            if(ifnull(cm.medicine_unit_form,'')='','999999999',cm.medicine_unit_form) as pack,
+            idm.formulation as dosage_id,
+            cm.medicine_dosage_forms as dosage_name,
+            cso.medicine_specifications as specification,
+            cso.medicine_manufacturer_name as manufacturer,
+            cm.medicine_place as place,
+            cm.medicine_unit_form as pack,
             '0000000000000' AS model,
-            if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as batch_no,
+            csd.stock_batch_number as batch_no,
             SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
             csd.medicine_deadline AS medicine_deadline,
-            if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+            cm.medicine_barcode as bar_code,
              '99999999' AS regist_no,
-            if(ifnull(csd.stock_channel,'')='','999999999',csd.stock_channel) as delivery_company,
+            csd.stock_channel as delivery_company,
             "999999999" AS distributor,
             ROUND(csd.stock_bid,2) AS price,
             ROUND(cso.retail_price,2) AS retail_price,
@@ -112,15 +112,11 @@
         ON
             cso.stock_detail_id = csd.id
             and cso.clinic_id = csd.clinic_id
-        left join
-            ins_clinic_settlement as ics
-        on
-            ics.clinic_id = csd.clinic_id
-            and cpi.prescription_id = ics.prescription_id
         WHERE
             cso.clinic_id = #{clinicId}
         AND
             cpi.prescription_type = 0
+        and cpi.states in (2, 3, 4)
         AND
             cso.change_type in (1, 2)
         and cso.source_type = 1
@@ -152,11 +148,11 @@
     <select id="listClcChinaMedOrder" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT
             cpi.prescription_id AS store_order_no,
-            if(ifnull(ics.settle_transaction_id,'')='','999999999',ics.settle_transaction_id) as mis_no,
+            '999999999' as mis_no,
             cpi.states AS settledstatus,
-            ROUND(cpi.price,2) AS total_amt,
-            0 AS insurance_amt,
-            ccso.doctor_name AS operater,
+            ROUND(ccso.change_number*ccso.retail_price,2) AS total_amt,
+            '0' AS insurance_amt,
+            ifnull(ccso.doctor_name, '无名') AS operater,
             SUBSTR( ccso.create_time, 1, 10 ) AS sale_date,
             ccso.create_time AS sale_time,
             ccso.patient_name AS buy_med_person,
@@ -164,22 +160,22 @@
         IF
             ( ccm.medicine_category = '04', 2, 1 ) AS item_type,
             ccso.medicine_name AS store_medicine_name,
-            IF( length( ccso.med_ins_backup_id ) > 0, ccm.med_ins_backup_id, ccm.medicine_id ) AS store_medicine_code,
+            IF( length( ccso.med_ins_backup_id ) > 0, ccso.med_ins_backup_id, ccm.medicine_id ) AS store_medicine_code,
             '' AS plat_item_code,
             '' AS plat_item_name,
-            if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-            if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+            idm.standard_menu_code as item_code,
+            idm.insurance_medicine_name as item_name,
             if(ifnull(ccsp.stock_purchase_number,'')='','0000000000000',ccsp.stock_purchase_number) as store_precord_code,
             if(ifnull(ccsp.stock_batch_number,'')='','0000000000000',ccsp.stock_batch_number) as store_storage_code,
             cpi.prescription_id AS recipe_no,
-            if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-            if(ifnull(ccm.medicine_rate_last,'')='','999999999',ccm.medicine_rate_last) as dosage_name,
-            if(ifnull(ccso.medicine_specifications,'')='','999999999',ccso.medicine_specifications) as specification,
-            if(ifnull(ccso.medicine_manufacturer_name,'')='','999999999',ccso.medicine_manufacturer_name) as manufacturer,
-            if(ifnull(ccm.medicine_address,'')='','999999999',ccm.medicine_address) as place,
-            if(ifnull(ccm.medicine_unit,'')='','999999999',ccm.medicine_unit) as pack,
+            idm.formulation as dosage_id,
+            ccm.medicine_rate_last as dosage_name,
+            ccso.medicine_specifications as specification,
+            ccso.medicine_manufacturer_name as manufacturer,
+            ccm.medicine_address as place,
+            ccm.medicine_unit as pack,
             '0000000000000' AS model,
-            if(ifnull(ccsp.stock_batch_number,'')='','0000000000000',ccsp.stock_batch_number) as batch_no,
+            ccsp.stock_batch_number as batch_no,
             SUBSTR( ccsp.stock_date, 1, 10) AS manufacture_time,
             ccsp.medicine_deadline AS medicine_deadline,
             '0000000000000' AS bar_code,
@@ -213,15 +209,11 @@
         ON
             ccso.stock_detail_id = ccsp.id
             and ccso.clinic_id = ccsp.clinic_id
-        left join
-            ins_clinic_settlement as ics
-        on
-            ics.clinic_id = ccso.clinic_id
-            and cpi.prescription_id = ics.prescription_id
         WHERE
             ccso.clinic_id = #{clinicId}
         AND
             cpi.prescription_type = 1
+        and cpi.states in (2, 3, 4)
         AND
             ccso.change_type in (1, 2)
         and ccso.source_type = 1
@@ -255,36 +247,36 @@
             cpi.prescription_id AS store_order_no,
             if(ifnull(ics.settle_transaction_id,'')='','999999999',ics.settle_transaction_id) as mis_no,
             cpi.states AS settledstatus,
-             ROUND(cpi.price,2) AS total_amt,
+             ROUND(cso.change_number*cso.retail_price,2) AS total_amt,
             ifnull( ROUND(ics.insurance_pay,2), '0.00' ) AS insurance_amt,
-            cso.doctor_name AS operater,
+            ifnull(cso.doctor_name, '无名') AS operater,
             SUBSTR( cso.create_time, 1, 10 ) AS sale_date,
             cso.create_time AS sale_time,
             cso.patient_name AS buy_med_person,
             '0000000000000' AS credential_num,
             IF( cm.medicine_category = '04', 2, 1 ) AS item_type,
             cso.medicine_name AS store_medicine_name,
-            IF( length( cso.med_ins_backup_id ) > 0, cm.med_ins_backup_id, cm.medicine_id ) AS store_medicine_code,
+            IF( length( cso.med_ins_backup_id ) > 0, cso.med_ins_backup_id, cm.medicine_id ) AS store_medicine_code,
             '' AS plat_item_code,
             '' AS plat_item_name,
-            if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-            if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+            idm.standard_menu_code as item_code,
+            idm.insurance_medicine_name as item_name,
             if(ifnull(csd.stock_purchase_number,'')='','0000000000000',csd.stock_purchase_number) as store_precord_code,
             if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as store_storage_code,
             cpi.prescription_id AS recipe_no,
-            if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-            if(ifnull(cm.medicine_dosage_forms,'')='','999999999',cm.medicine_dosage_forms) as dosage_name,
-            if(ifnull(cso.medicine_specifications,'')='','999999999',cso.medicine_specifications) as specification,
-            if(ifnull(cso.medicine_manufacturer_name,'')='','999999999',cso.medicine_manufacturer_name) as manufacturer,
-            if(ifnull(cm.medicine_place,'')='','999999999',cm.medicine_place) as place,
-            if(ifnull(cm.medicine_unit_form,'')='','999999999',cm.medicine_unit_form) as pack,
+            idm.formulation as dosage_id,
+            cm.medicine_dosage_forms as dosage_name,
+            cso.medicine_specifications as specification,
+            cso.medicine_manufacturer_name as manufacturer,
+            cm.medicine_place as place,
+            cm.medicine_unit_form as pack,
             '0000000000000' AS model,
-            if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as batch_no,
+            csd.stock_batch_number as batch_no,
             SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
             csd.medicine_deadline AS medicine_deadline,
-            if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+            cm.medicine_barcode as bar_code,
              '99999999' AS regist_no,
-            if(ifnull(csd.stock_channel,'')='','999999999',csd.stock_channel) as delivery_company,
+            csd.stock_channel as delivery_company,
             "999999999" AS distributor,
             ROUND(csd.stock_bid,2) AS price,
             ROUND(cso.retail_price,2) AS retail_price,
@@ -307,6 +299,7 @@
         WHERE
             cso.clinic_id = #{clinicId}
             AND cpi.prescription_type = 0
+            and cpi.states in (2, 3, 4)
             AND cso.change_type IN ( 1, 2 )
             AND cso.source_type IN ( 2, 3 )
         <choose>
@@ -339,31 +332,31 @@
             cpi.prescription_id AS store_order_no,
             if(ifnull(ics.settle_transaction_id,'')='','999999999',ics.settle_transaction_id) as mis_no,
             cpi.states AS settledstatus,
-            ROUND(cpi.price,2) AS total_amt,
+            ROUND(cso.change_number*cso.retail_price,2) AS total_amt,
             ifnull( ROUND(ics.insurance_pay,2), '0.00' ) AS insurance_amt,
-            cso.doctor_name AS operater,
+            ifnull(cso.doctor_name, '无名') AS operater,
             SUBSTR( cso.create_time, 1, 10 ) AS sale_date,
             cso.create_time AS sale_time,
             cso.patient_name AS buy_med_person,
             '0000000000000' AS credential_num,
             IF( ccm.medicine_category = '04', 2, 1 ) AS item_type,
             cso.medicine_name AS store_medicine_name,
-            IF( length( cso.med_ins_backup_id ) > 0, ccm.med_ins_backup_id, ccm.medicine_id ) AS store_medicine_code,
+            IF( length( cso.med_ins_backup_id ) > 0, cso.med_ins_backup_id, ccm.medicine_id ) AS store_medicine_code,
             '' AS plat_item_code,
             '' AS plat_item_name,
-            if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-            if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+            idm.standard_menu_code as item_code,
+            idm.insurance_medicine_name as item_name,
             if(ifnull(csd.stock_purchase_number,'')='','0000000000000',csd.stock_purchase_number) as store_precord_code,
             if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as store_storage_code,
             cpi.prescription_id AS recipe_no,
-            if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-            if(ifnull(ccm.medicine_rate_last,'')='','999999999',ccm.medicine_rate_last) as dosage_name,
-            if(ifnull(cso.medicine_specifications,'')='','999999999',cso.medicine_specifications) as specification,
-            if(ifnull(cso.medicine_manufacturer_name,'')='','999999999',cso.medicine_manufacturer_name) as manufacturer,
-            if(ifnull(ccm.medicine_address,'')='','999999999',ccm.medicine_address) as place,
-            if(ifnull(ccm.medicine_unit,'')='','999999999',ccm.medicine_unit) as pack,
+            idm.formulation as dosage_id,
+            ccm.medicine_rate_last as dosage_name,
+            cso.medicine_specifications as specification,
+            cso.medicine_manufacturer_name as manufacturer,
+            ccm.medicine_address as place,
+            ccm.medicine_unit as pack,
             '0000000000000' AS model,
-            if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as batch_no,
+            csd.stock_batch_number as batch_no,
             SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
             csd.medicine_deadline AS medicine_deadline,
             '0000000000000' AS bar_code,
@@ -395,6 +388,7 @@
         WHERE
             cso.clinic_id = #{clinicId}
             AND cpi.prescription_type = 1
+            and cpi.states in (2, 3, 4)
             AND cso.change_type IN ( 1, 2 )
             AND cso.source_type in (2, 3)
         <choose>
@@ -425,11 +419,11 @@
     <select id="listHosMedOrder" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT
             cpi.prescription_id AS store_order_no,
-            if(ifnull(ics.settle_transaction_id,'')='','999999999',ics.settle_transaction_id) as mis_no,
+            '999999999' as mis_no,
             cpi.states AS settledstatus,
-            ROUND(cpi.price,2) AS total_amt,
-            ifnull( ROUND(ics.insurance_pay,2), '0.00' ) AS insurance_amt,
-            cso.doctor_name AS operater,
+            ROUND(cso.change_number*cso.retail_price,2) AS total_amt,
+            ifnull( ROUND(cpi.price,2), '0.00' ) AS insurance_amt,
+            ifnull(cso.doctor_name, '无名') AS operater,
             SUBSTR( cso.create_time, 1, 10 ) AS sale_date,
             cso.create_time AS sale_time,
             cso.patient_name AS buy_med_person,
@@ -437,27 +431,27 @@
         IF
             ( cm.medicine_category = '04', 2, 1 ) AS item_type,
             cso.medicine_name AS store_medicine_name,
-            IF( length( cso.med_ins_backup_id ) > 0, cm.med_ins_backup_id, cm.medicine_id ) AS store_medicine_code,
+            IF( length( cso.med_ins_backup_id ) > 0, cso.med_ins_backup_id, cm.medicine_id ) AS store_medicine_code,
             '' AS plat_item_code,
             '' AS plat_item_name,
-            if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-            if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+            idm.standard_menu_code as item_code,
+            idm.insurance_medicine_name as item_name,
             if(ifnull(csd.stock_purchase_number,'')='','0000000000000',csd.stock_purchase_number) as store_precord_code,
             if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as store_storage_code,
             cpi.prescription_id AS recipe_no,
-            if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-            if(ifnull(cm.medicine_dosage_forms,'')='','999999999',cm.medicine_dosage_forms) as dosage_name,
-            if(ifnull(cso.medicine_specifications,'')='','999999999',cso.medicine_specifications) as specification,
-            if(ifnull(cso.medicine_manufacturer_name,'')='','999999999',cso.medicine_manufacturer_name) as manufacturer,
-            if(ifnull(cm.medicine_place,'')='','999999999',cm.medicine_place) as place,
-            if(ifnull(idm.medicine_package,'')='','999999999',idm.medicine_package) as pack,
+            idm.formulation as dosage_id,
+            cm.medicine_dosage_forms as dosage_name,
+            cso.medicine_specifications as specification,
+            cso.medicine_manufacturer_name as manufacturer,
+            cm.medicine_place as place,
+            idm.medicine_package as pack,
             '0000000000000' AS model,
-            if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as batch_no,
+            csd.stock_batch_number as batch_no,
             SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
             csd.medicine_deadline AS medicine_deadline,
-            if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+            cm.medicine_barcode as bar_code,
              '99999999' AS regist_no,
-            if(ifnull(csd.stock_channel,'')='','999999999',csd.stock_channel) as delivery_company,
+            csd.stock_channel as delivery_company,
             "999999999" AS distributor,
             ROUND(csd.stock_bid,2) AS price,
             ROUND(cso.retail_price,2) AS retail_price,
@@ -479,12 +473,10 @@
             ON cso.stock_detail_id = csd.id
             AND cso.clinic_id = csd.clinic_id
             AND cso.medicine_id = csd.medicine_id
-            LEFT JOIN ins_clinic_settlement ics
-            ON ics.prescription_id = cso.prescription_id
-            AND ics.clinic_id = cso.clinic_id
         WHERE
             cso.clinic_id = #{clinicId}
            AND cpi.prescription_type = 0
+            and cpi.states in (2, 3, 4)
             AND cso.change_type IN ( 1, 2 )
             AND cso.source_type = 4
         <choose>
@@ -515,10 +507,10 @@
     <select id="listHosChinaMedOrder" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT
             cpi.prescription_id AS store_order_no,
-            if(ifnull(ics.settle_transaction_id,'')='','999999999',ics.settle_transaction_id) as mis_no,
+            '999999999' as mis_no,
             cpi.states AS settledstatus,
-            ROUND(cpi.price,2) AS total_amt,
-            ifnull( ROUND(ics.ordinate_total_score,2), '0.00' ) AS insurance_amt,
+            ROUND(cso.change_number*cso.retail_price,2) AS total_amt,
+            ifnull( ROUND(cpi.price,2), '0.00' ) AS insurance_amt,
             cso.doctor_name AS operater,
             SUBSTR( cso.create_time, 1, 10 ) AS sale_date,
             cso.create_time AS sale_time,
@@ -527,22 +519,22 @@
         IF
             ( ccm.medicine_category = '04', 2, 1 ) AS item_type,
             cso.medicine_name AS store_medicine_name,
-            IF( length( cso.med_ins_backup_id ) > 0, ccm.med_ins_backup_id, ccm.medicine_id ) AS store_medicine_code,
+            IF( length( cso.med_ins_backup_id ) > 0, cso.med_ins_backup_id, ccm.medicine_id ) AS store_medicine_code,
             '' AS plat_item_code,
             '' AS plat_item_name,
-            if(ifnull(idm.standard_menu_code,'')='','999999999',idm.standard_menu_code) as item_code,
-            if(ifnull(idm.insurance_medicine_name,'')='','999999999',idm.insurance_medicine_name) as item_name,
+            idm.standard_menu_code as item_code,
+            idm.insurance_medicine_name as item_name,
             if(ifnull(csd.stock_purchase_number,'')='','0000000000000',csd.stock_purchase_number) as store_precord_code,
             if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as store_storage_code,
             cpi.prescription_id AS recipe_no,
-            if(ifnull(idm.formulation,'')='','999999999',idm.formulation) as dosage_id,
-            if(ifnull(ccm.medicine_rate_last,'')='','999999999',ccm.medicine_rate_last) as dosage_name,
-            if(ifnull(cso.medicine_specifications,'')='','999999999',cso.medicine_specifications) as specification,
-            if(ifnull(cso.medicine_manufacturer_name,'')='','999999999',cso.medicine_manufacturer_name) as manufacturer,
-            if(ifnull(ccm.medicine_address,'')='','999999999',ccm.medicine_address) as place,
-            if(ifnull(ccm.medicine_unit,'')='','999999999',ccm.medicine_unit) as pack,
+            idm.formulation as dosage_id,
+            ccm.medicine_rate_last as dosage_name,
+            cso.medicine_specifications as specification,
+            cso.medicine_manufacturer_name as manufacturer,
+            ccm.medicine_address as place,
+            ccm.medicine_unit as pack,
             '0000000000000' AS model,
-            if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as batch_no,
+            csd.stock_batch_number as batch_no,
             SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
             csd.medicine_deadline AS medicine_deadline,
             '0000000000000' AS bar_code,
@@ -568,12 +560,10 @@
             LEFT JOIN clc_china_stock_profit csd
             ON cso.stock_detail_id = csd.id
             AND cso.clinic_id = csd.clinic_id
-            LEFT JOIN ins_clinic_settlement ics
-            ON ics.prescription_id = cso.prescription_id
-            AND ics.clinic_id = cso.clinic_id
         WHERE
             cso.clinic_id = #{clinicId}
             AND cpi.prescription_type = 1
+            and cpi.states in (2, 3, 4)
             AND cso.change_type IN ( 1, 2 )
             AND cso.source_type = 4
         <choose>

+ 2 - 2
src/main/resources/mybatis/mybatis-config.xml

@@ -22,9 +22,9 @@
         <!-- 对于批量更新操作缓存SQL以提高性能 -->
         <setting name="defaultExecutorType" value="REUSE" />
         <!-- 数据库超过25000秒仍未响应则超时 -->
-        <setting name="defaultStatementTimeout" value="25000" />
+        <setting name="defaultStatementTimeout" value="60000" />
         <!-- 打印查询语句,如果将它注释,你的sql就可以打印进日志;如果将它放开,你的sql就打印到了控制台 -->
 <!--        <setting name="logImpl" value="SLF4J" />-->
-         <setting name="logImpl" value="STDOUT_LOGGING" />
+<!--         <setting name="logImpl" value="STDOUT_LOGGING" />-->
     </settings>
 </configuration>

BIN
src/main/resources/posinf.dll


BIN
src/main/resources/win32-x86-64/posinf.dll


BIN
src/main/resources/win32-x86/posinf.dll


+ 125 - 0
src/test/java/com/miyzh/AccessTokenTest.java

@@ -0,0 +1,125 @@
+package com.miyzh;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.miyzh.entity.AccessResult;
+import com.miyzh.entity.AddiPrivateDetail;
+import com.miyzh.entity.ConfirmPayReqeset;
+import com.miyzh.entity.ConfirmPayResult;
+import com.miyzh.service.RedisService;
+import com.miyzh.utils.RestTemplateUtil;
+import com.miyzh.utils.SHA256Util;
+import org.springframework.http.HttpHeaders;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.redis.core.*;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class AccessTokenTest {
+
+    @Autowired
+    private RedisService redisService;
+
+    @Resource
+    private ValueOperations<String,Object> valueOperations;
+
+    private static final String APPID = "10037e6f7322f3440173232a02e40000";
+
+    private static final String APPKEY  = "fbd517675abe4850972dbbea991567fc";
+
+    private static final String URL  = "http://58.247.0.18:29015/v1/token/access";
+
+    private static final String CONFIRM_URL  = "https://test-api-open.chinaums.com/v1/qdymis/confirm-pay";
+
+    public static String generateRandom32() {
+        String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
+        return uuid;
+    }
+
+    public static String generatePostParams() {
+        ObjectMapper objectMapper = new ObjectMapper();
+        Map params = new HashMap();
+        params.put("appId", APPID);
+        DateTimeFormatter fmDate = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+        LocalDateTime now = LocalDateTime.now();
+        String timestamp = now.format(fmDate);
+        String nonce = generateRandom32();
+        String signature = SHA256Util.sha256(APPID + timestamp + nonce + APPKEY);
+        params.put("timestamp", timestamp);
+        params.put("nonce", nonce);
+        params.put("signMethod", "SHA256");
+        params.put("signature", signature);
+        try {
+            return objectMapper.writeValueAsString(params);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+            return "";
+        }
+    }
+
+    @Test
+    public void generateAccessToken() {
+        String params = generatePostParams();
+        AccessResult accessResult = RestTemplateUtil.postHttp(URL, params, new HttpHeaders(), new AccessResult());
+        if(null != accessResult && "0000".equals(accessResult.getErrCode())) {
+            if(null != accessResult.getAccessToken() && !"".equals(accessResult.getAccessToken())) {
+                valueOperations.set("accessToken",  accessResult.getAccessToken(),10, TimeUnit.MINUTES);
+            }
+        }
+    }
+
+    @Test
+    public void confirmPay() {
+        ObjectMapper objectMapper = new ObjectMapper();
+        HttpHeaders httpHeaders = new HttpHeaders();
+        String accessToken = (String)valueOperations.get("accessToken");
+        if(null == accessToken || "".equals(accessToken)) {
+            generateAccessToken();
+            accessToken = (String)valueOperations.get("accessToken");
+            if(null == accessToken || "".equals(accessToken)) {
+                return;
+            }
+        }
+        String authorization = "OPEN-ACCESS-TOKEN AccessToken=" + accessToken;
+        System.out.println(authorization);
+        httpHeaders.set("Authorization", authorization);
+        List<AddiPrivateDetail> list = new ArrayList<>();
+        ConfirmPayReqeset confirmPayReqeset = new ConfirmPayReqeset();
+        confirmPayReqeset.setTransAmt("10");
+        confirmPayReqeset.setVaTermNo("10000001");
+        confirmPayReqeset.setVaMchntNo("fgscsqd00000001");
+        confirmPayReqeset.setCust3("00000001462");
+        AddiPrivateDetail addiPrivateDetail = new AddiPrivateDetail();
+        addiPrivateDetail.setTransType("B001");
+        addiPrivateDetail.setFbskd("A42L");
+        addiPrivateDetail.setAreaCode("4520");
+        addiPrivateDetail.setAddiAreaCode("0000");
+        addiPrivateDetail.setSocCardNo("12345678901234567890");
+        addiPrivateDetail.setTermNo("001");
+        addiPrivateDetail.setLoc("test");
+        addiPrivateDetail.setStoreId("1357924680");
+        addiPrivateDetail.setRecvAmt("8");
+        addiPrivateDetail.setDetail("1,00,00,医德帮测试1,1,1,1|2,01,01,医德帮测试2,2,2,2");
+        list.add(addiPrivateDetail);
+        confirmPayReqeset.setAddiPrivateDate(list);
+        confirmPayReqeset.setCcy("156");
+        try {
+            String params = objectMapper.writeValueAsString(confirmPayReqeset);
+            ConfirmPayResult confirmPayResult = RestTemplateUtil.postHttp(CONFIRM_URL, params, httpHeaders, new ConfirmPayResult());
+            System.out.println(confirmPayResult);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+    }
+
+}

+ 20 - 0
src/test/java/com/miyzh/JNATest.java

@@ -0,0 +1,20 @@
+package com.miyzh;
+
+import com.sun.jna.Library;
+import com.sun.jna.Native;
+import com.sun.jna.Platform;
+import com.sun.jna.win32.StdCallLibrary;
+
+public class JNATest {
+    public interface StdCallDll extends StdCallLibrary {
+        StdCallDll INSTANCE = Native.load(("c:/gmc/posinf"), StdCallDll.class);
+        int bankall(char[] req, char[] resp);
+    }
+
+
+    public static void main (String[]args){
+        char[] a = {1,2,3};
+        char[] b = {1,2,3};
+        StdCallDll.INSTANCE.bankall(a, b);
+    }
+}

+ 94 - 0
src/test/java/com/miyzh/RedisConfigTest.java

@@ -0,0 +1,94 @@
+package com.miyzh;
+
+import com.miyzh.service.RedisService;
+import com.miyzh.utils.RedisKeyUtil;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.redis.core.*;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.annotation.Resource;
+import java.util.concurrent.TimeUnit;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class RedisConfigTest {
+
+    @Autowired
+    private StringRedisTemplate stringRedisTemplate;
+
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    @Resource
+    private ValueOperations<String,Object> valueOperations;
+
+    @Autowired
+    private HashOperations<String, String, Object> hashOperations;
+
+    @Autowired
+    private ListOperations<String, Object> listOperations;
+
+    @Autowired
+    private SetOperations<String, Object> setOperations;
+
+    @Autowired
+    private ZSetOperations<String, Object> zSetOperations;
+
+    @Resource
+    private RedisService redisService;
+
+    @Test
+    public void testObj() throws Exception{
+//        ValueOperations<String,Object> operations = redisTemplate.opsForValue();
+//        redisService.expireKey("name",20, TimeUnit.SECONDS);
+//        String key = RedisKeyUtil.getKey(UserVo.Table,"name",userVo.getName());
+//        UserVo vo = (UserVo) operations.get(key);
+//        System.out.println(vo);
+    }
+
+    @Test
+    public void testValueOption() throws  Exception{
+        valueOperations.set("test","11");
+        System.out.println(valueOperations.get("test"));
+    }
+
+    @Test
+    public void testSetOperation() throws Exception{
+//        UserVo userVo = new UserVo();
+//        userVo.setAddress("北京");
+//        userVo.setName("jantent");
+//        userVo.setAge(23);
+//        UserVo auserVo = new UserVo();
+//        auserVo.setAddress("n柜昂周");
+//        auserVo.setName("antent");
+//        auserVo.setAge(23);
+//        setOperations.add("user:test",userVo,auserVo);
+//        Set<Object> result = setOperations.members("user:test");
+//        System.out.println(result);
+    }
+
+    @Test
+    public void HashOperations() throws Exception{
+//        UserVo userVo = new UserVo();
+//        userVo.setAddress("北京");
+//        userVo.setName("jantent");
+//        userVo.setAge(23);
+//        hashOperations.put("hash:user",userVo.hashCode()+"",userVo);
+//        System.out.println(hashOperations.get("hash:user",userVo.hashCode()+""));
+    }
+
+    @Test
+    public void  ListOperations() throws Exception{
+//        UserVo userVo = new UserVo();
+//        userVo.setAddress("北京");
+//        userVo.setName("jantent");
+//        userVo.setAge(23);
+//        listOperations.leftPush("list:user",userVo);
+//        System.out.println(listOperations.leftPop("list:user"));
+        // pop之后 值会消失
+//        System.out.println(listOperations.leftPop("list:user"));
+    }
+}

Fichier diff supprimé car celui-ci est trop grand
+ 581 - 0
src/test/java/com/miyzh/RunServiceTest.java


+ 23 - 1
src/test/java/com/miyzh/YidebProxySrvApplicationTests.java

@@ -1,13 +1,35 @@
 package com.miyzh;
 
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.alibaba.fastjson.support.config.FastJsonConfig;
+import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+import java.util.List;
 
 @SpringBootTest
-class YidebProxySrvApplicationTests {
+class YidebProxySrvApplicationTests extends WebMvcConfigurerAdapter {
 
     @Test
     void contextLoads() {
     }
 
+    @Override
+    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+
+        super.configureMessageConverters(converters);
+        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
+
+        FastJsonConfig fastJsonConfig = new FastJsonConfig();
+        fastJsonConfig.setSerializerFeatures(
+                SerializerFeature.PrettyFormat
+        );
+        fastConverter.setFastJsonConfig(fastJsonConfig);
+        converters.add(fastConverter);
+
+    }
+
 }