szq 5 rokov pred
rodič
commit
d0834c2c1d
24 zmenil súbory, kde vykonal 1333 pridanie a 593 odobranie
  1. 11 0
      pom.xml
  2. 2 0
      src/main/java/com/miyzh/QingdaoUploadApplication.java
  3. 34 0
      src/main/java/com/miyzh/config/SwaggerConfig.java
  4. 79 0
      src/main/java/com/miyzh/controller/OrderController.java
  5. 101 0
      src/main/java/com/miyzh/controller/ReturnController.java
  6. 81 0
      src/main/java/com/miyzh/controller/StorageController.java
  7. 41 0
      src/main/java/com/miyzh/controller/StoreController.java
  8. 226 10
      src/main/java/com/miyzh/controller/TestController.java
  9. 1 1
      src/main/java/com/miyzh/entity/Medicine.java
  10. 2 2
      src/main/java/com/miyzh/entity/OrderDetailTemp.java
  11. 0 1
      src/main/java/com/miyzh/entity/dto/MedicineReturnDto.java
  12. 1 1
      src/main/java/com/miyzh/entity/dto/OrderDetailDto.java
  13. 151 24
      src/main/java/com/miyzh/service/BaseService.java
  14. 12 10
      src/main/java/com/miyzh/service/MedicineReturnService.java
  15. 6 4
      src/main/java/com/miyzh/service/MedicineStorageService.java
  16. 7 1
      src/main/java/com/miyzh/service/MedicineStoreService.java
  17. 13 17
      src/main/java/com/miyzh/service/OrderDetailService.java
  18. 2 1
      src/main/java/com/miyzh/utils/RestTemplateUtil.java
  19. 0 2
      src/main/resources/application-szq.yml
  20. 8 6
      src/main/resources/application.yml
  21. 180 165
      src/main/resources/mapper/MedicineReturnMapper.xml
  22. 117 114
      src/main/resources/mapper/MedicineStorageMapper.xml
  23. 42 36
      src/main/resources/mapper/MedicineStoreMapper.xml
  24. 216 198
      src/main/resources/mapper/OrderDetailMapper.xml

+ 11 - 0
pom.xml

@@ -196,6 +196,17 @@
             <artifactId>dom4j</artifactId>
             <version>1.6.1</version>
         </dependency>
+
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.7.0</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.7.0</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 2 - 0
src/main/java/com/miyzh/QingdaoUploadApplication.java

@@ -4,9 +4,11 @@ import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.scheduling.annotation.EnableAsync;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
 @SpringBootApplication
 @EnableAsync
+@EnableSwagger2
 public class QingdaoUploadApplication {
     public static void main(String[] args) {
         SpringApplication.run(QingdaoUploadApplication.class, args);

+ 34 - 0
src/main/java/com/miyzh/config/SwaggerConfig.java

@@ -0,0 +1,34 @@
+package com.miyzh.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+    @Bean
+    public Docket docket(){
+        return new Docket(DocumentationType.SWAGGER_2)
+                .apiInfo(apiInfo())
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.miyzh.controller")) // 包路径
+                .paths(PathSelectors.any())
+                .build();
+    }
+    public ApiInfo apiInfo(){
+        return new ApiInfoBuilder()
+                .title("医保上传监测平台")
+                .description("医保上传监测平台")
+                .contact("Miyzh")
+                .termsOfServiceUrl("")
+                .version("1.0")
+                .build();
+    }
+}

+ 79 - 0
src/main/java/com/miyzh/controller/OrderController.java

@@ -0,0 +1,79 @@
+package com.miyzh.controller;
+
+import com.miyzh.service.BaseService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Api(tags="销售明细")
+@RestController
+@RequestMapping("order")
+public class OrderController {
+    @Autowired
+    private BaseService baseService;
+
+    @ApiOperation("西药销售明细记录(自费门诊)")
+    @PostMapping("medicineOrder")
+    public void medicineOrder(){
+        try {
+            baseService.medicineOrder();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药销售明细记录(自费门诊)")
+    @PostMapping("medicineChiOrder")
+    public void medicineChiOrder(){
+        try {
+            baseService.medicineChiOrder();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药销售明细记录(医保门诊)")
+    @PostMapping("medicineInsOrder")
+    public void medicineInsOrder(){
+        try {
+            baseService.medicineInsOrder();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药销售明细记录(医保门诊)")
+    @PostMapping("medicineChiInsOrder")
+    public void medicineChiInsOrder(){
+        try {
+            baseService.medicineChiInsOrder();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药药销售明细记录(住院)")
+    @PostMapping("medicineHosOrder")
+    public void medicineHosOrder(){
+        try {
+            baseService.medicineHosOrder();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药销售明细记录(住院)")
+    @PostMapping("medicineChiHosOrder")
+    public void medicineChiHosOrder(){
+        try {
+            baseService.medicineChiHosOrder();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+}

+ 101 - 0
src/main/java/com/miyzh/controller/ReturnController.java

@@ -0,0 +1,101 @@
+package com.miyzh.controller;
+
+import com.miyzh.service.BaseService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Api(tags="出库")
+@RestController
+@RequestMapping("return")
+public class ReturnController {
+    @Autowired
+    private BaseService baseService;
+
+
+    @ApiOperation("西药销售出库记录")
+    @PostMapping("medicineOutBound")
+    public void medicineOutBound(){
+        try {
+            baseService.medicineOutBound();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药销售出库记录")
+    @PostMapping("medicineChiOutBound")
+    public void medicineChiOutBound(){
+        try {
+            baseService.medicineChiOutBound();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药损耗/领用出库记录")
+    @PostMapping("medicineOutTreasury")
+    public void medicineOutTreasury(){
+        try {
+            baseService.medicineOutTreasury();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药损耗/领用出库记录")
+    @PostMapping("medicineOutChiTreasury")
+    public void medicineOutChiTreasury(){
+        try {
+            baseService.medicineOutChiTreasury();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药采购退货出库记录")
+    @PostMapping("medicineBack")
+    public void medicineBack(){
+        try {
+            baseService.medicineBack();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药采购退货出库记录")
+    @PostMapping("medicineChiBack")
+    public void medicineChiBack(){
+        try {
+            baseService.medicineChiBack();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药盘点盘亏出库记录")
+    @PostMapping("medicineInvOut")
+    public void medicineInvOut(){
+        try {
+            baseService.medicineInvOut();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药盘点盘亏出库记录")
+    @PostMapping("medicineChiInvOut")
+    public void medicineChiInvOut(){
+        try {
+            baseService.medicineChiInvOut();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+
+}

+ 81 - 0
src/main/java/com/miyzh/controller/StorageController.java

@@ -0,0 +1,81 @@
+package com.miyzh.controller;
+
+import com.miyzh.service.BaseService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Api(tags="入库")
+@RestController
+@RequestMapping("storage")
+public class StorageController {
+    @Autowired
+    private BaseService baseService;
+
+
+    @ApiOperation("西药采购入库")
+    @PostMapping("medicineStorage")
+    public void medicineStorage(){
+        try {
+            baseService.medicineStorage();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药采购入库")
+    @PostMapping("medicineChiStorage")
+    public void medicineChiStorage(){
+        try {
+            baseService.medicineChiStorage();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药销售退回")
+    @PostMapping("medicineInbound")
+    public void medicineInbound(){
+        try {
+            baseService.medicineInbound();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药销售退回")
+    @PostMapping("medicineChiInbound")
+    public void medicineChiInbound(){
+        try {
+            baseService.medicineChiInbound();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药盘盈入库")
+    @PostMapping("medicineInv")
+    public void medicineInv(){
+        try {
+            baseService.medicineInv();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药盘盈入库")
+    @PostMapping("medicineChiInv")
+    public void medicineChiInv(){
+        try {
+            baseService.medicineChiInv();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+
+}

+ 41 - 0
src/main/java/com/miyzh/controller/StoreController.java

@@ -0,0 +1,41 @@
+package com.miyzh.controller;
+
+import com.miyzh.service.BaseService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Api(tags="库存同步")
+@RestController
+@RequestMapping("store")
+public class StoreController {
+    @Autowired
+    private BaseService baseService;
+
+
+    @ApiOperation("西药库存同步")
+    @PostMapping("medicineStore")
+    public void medicineStore(){
+        try {
+            baseService.medicineStore();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药库存同步")
+    @PostMapping("medicineChiStore")
+    public void medicineChiStore(){
+        try {
+            baseService.medicineStore();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+
+}

+ 226 - 10
src/main/java/com/miyzh/controller/TestController.java

@@ -1,27 +1,243 @@
 package com.miyzh.controller;
 
 import com.miyzh.service.BaseService;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-/**
- * Title: TestController
- * Description:
- *
- * @author lyt
- * @date 2020/6/11 14:26
- */
 @RestController
-@RequestMapping("test")
+@RequestMapping("upload")
 public class TestController {
     @Autowired
     private BaseService baseService;
 
-    @RequestMapping("test")
-    public void testIndex(){
+    @ApiOperation("全部")
+    @PostMapping("runService")
+    public void runService(){
         baseService.runService();
     }
 
+    @ApiOperation("西药库存同步")
+    @PostMapping("medicineStore")
+    public void medicineStore(){
+        try {
+            baseService.medicineStore();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药库存同步")
+    @PostMapping("medicineChiStore")
+    public void medicineChiStore(){
+        try {
+            baseService.medicineStore();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药采购入库")
+    @PostMapping("medicineStorage")
+    public void medicineStorage(){
+        try {
+            baseService.medicineStorage();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药采购入库")
+    @PostMapping("medicineChiStorage")
+    public void medicineChiStorage(){
+        try {
+            baseService.medicineChiStorage();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药销售退回")
+    @PostMapping("medicineInbound")
+    public void medicineInbound(){
+        try {
+            baseService.medicineInbound();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药销售退回")
+    @PostMapping("medicineChiInbound")
+    public void medicineChiInbound(){
+        try {
+            baseService.medicineChiInbound();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药盘盈入库")
+    @PostMapping("medicineInv")
+    public void medicineInv(){
+        try {
+            baseService.medicineInv();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药盘盈入库")
+    @PostMapping("medicineChiInv")
+    public void medicineChiInv(){
+        try {
+            baseService.medicineChiInv();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药销售出库记录")
+    @PostMapping("medicineOutBound")
+    public void medicineOutBound(){
+        try {
+            baseService.medicineOutBound();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药销售出库记录")
+    @PostMapping("medicineChiOutBound")
+    public void medicineChiOutBound(){
+        try {
+            baseService.medicineChiOutBound();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药损耗/领用出库记录")
+    @PostMapping("medicineOutTreasury")
+    public void medicineOutTreasury(){
+        try {
+            baseService.medicineOutTreasury();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药损耗/领用出库记录")
+    @PostMapping("medicineOutChiTreasury")
+    public void medicineOutChiTreasury(){
+        try {
+            baseService.medicineOutChiTreasury();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药采购退货出库记录")
+    @PostMapping("medicineBack")
+    public void medicineBack(){
+        try {
+            baseService.medicineBack();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药采购退货出库记录")
+    @PostMapping("medicineChiBack")
+    public void medicineChiBack(){
+        try {
+            baseService.medicineChiBack();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药盘点盘亏出库记录")
+    @PostMapping("medicineInvOut")
+    public void medicineInvOut(){
+        try {
+            baseService.medicineInvOut();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药盘点盘亏出库记录")
+    @PostMapping("medicineChiInvOut")
+    public void medicineChiInvOut(){
+        try {
+            baseService.medicineChiInvOut();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药销售明细记录(自费门诊)")
+    @PostMapping("medicineOrder")
+    public void medicineOrder(){
+        try {
+            baseService.medicineOrder();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药销售明细记录(自费门诊)")
+    @PostMapping("medicineChiOrder")
+    public void medicineChiOrder(){
+        try {
+            baseService.medicineChiOrder();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药销售明细记录(医保门诊)")
+    @PostMapping("medicineInsOrder")
+    public void medicineInsOrder(){
+        try {
+            baseService.medicineInsOrder();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药销售明细记录(医保门诊)")
+    @PostMapping("medicineChiInsOrder")
+    public void medicineChiInsOrder(){
+        try {
+            baseService.medicineChiInsOrder();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("西药药销售明细记录(住院)")
+    @PostMapping("medicineHosOrder")
+    public void medicineHosOrder(){
+        try {
+            baseService.medicineHosOrder();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("中药销售明细记录(住院)")
+    @PostMapping("medicineChiHosOrder")
+    public void medicineChiHosOrder(){
+        try {
+            baseService.medicineChiHosOrder();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
 
 }

+ 1 - 1
src/main/java/com/miyzh/entity/Medicine.java

@@ -6,7 +6,7 @@ import lombok.Data;
 public class Medicine {
 
 
-    private String itemType; //项目类型
+    private String itemType; //项目类型 1.药品 2.耗材
 
     private String storeMedicineCode; //医药机构药品/耗材编码
 

+ 2 - 2
src/main/java/com/miyzh/entity/OrderDetailTemp.java

@@ -12,7 +12,7 @@ public class OrderDetailTemp extends OrderDetail {
 
     private String settledTypeName; //结算方式名称
 
-    private String settledstatus; //结算状态
+    private String settledstatus; //结算状态 1.未结算 2.已结算 3.已撤销 4.已退费
 
     private String totalAmt; //订单总金额
 
@@ -26,7 +26,7 @@ public class OrderDetailTemp extends OrderDetail {
 
     private String buyMedPerson; //购药人
 
-    private String sex; //性别
+    private String sex; //性别 F.女 M.男
 
     private String age; //年龄
 

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

@@ -1,7 +1,6 @@
 package com.miyzh.entity.dto;
 
 import com.miyzh.entity.MedicineReturn;
-import com.miyzh.entity.MedicineReturnTemp;
 import lombok.Data;
 
 import java.util.List;

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

@@ -43,7 +43,7 @@ public class OrderDetailDto{
 
     private String credentialNum; //医保卡号
 
-    private List<OrderDetail> orderDetails; // 订单列表
+    private List<OrderDetail> medicineInfos; // 订单列表
 
 
 }

+ 151 - 24
src/main/java/com/miyzh/service/BaseService.java

@@ -42,7 +42,7 @@ public class BaseService {
     private class InStore {
         private static final String MED_PUR = "1"; //西药采购入库
         private static final String CHI_MED_PUR = "2"; //中药采购入库
-        private static final String MED_MED_INBOUND = "3"; //西药销售退回入库
+        private static final String MED_INBOUND = "3"; //西药销售退回入库
         private static final String CHI_MED_INBOUND = "4"; //中药销售退回
         private static final String MED_INV = "5"; //西药盘盈入库
         private static final String CHI_MED_INV = "6"; //中药盘盈入库
@@ -50,8 +50,8 @@ public class BaseService {
 
     private class OrderDetail {
         private static final String CLI_MED = "1"; //西药销售明细记录(自费门诊)
-        private static final String CLI_CHI_MED = "2"; //西药销售明细记录(医保门诊)
-        private static final String INS_CLC_MED = "3"; // 中药销售明细记录(自费门诊)
+        private static final String CLI_CHI_MED = "2"; //中药销售明细记录(自费门诊)
+        private static final String INS_CLC_MED = "3"; // 西药销售明细记录(医保门诊)
         private static final String INS_CLC_CHI_MED = "4"; // 中药销售明细记录(医保门诊)
         private static final String HOS_MED = "5"; // 西药药销售明细记录(住院)
         private static final String HOS_CHI_MED = "6"; // 中药销售明细记录(住院)
@@ -63,34 +63,34 @@ public class BaseService {
             long startTime = System.currentTimeMillis();
             List<Clinic> clinicList = clinicService.listClinic();
             // 库存同步
-//            medicineStoreService.uploadMedicine(clinicList);
-//            medicineStoreService.uploadChinaMedicine(clinicList);
+            medicineStoreService.uploadMedicine(clinicList);
+            medicineStoreService.uploadChinaMedicine(clinicList);
 
             // 入库
-//            medicineStorageService.uploadMedicine(clinicList, InStore.MED_PUR);
-//            medicineStorageService.uploadMedicine(clinicList, InStore.CHI_MED_PUR);
-//            medicineStorageService.uploadMedicine(clinicList, InStore.MED_MED_INBOUND);
-//            medicineStorageService.uploadMedicine(clinicList, InStore.CHI_MED_INBOUND);
-//            medicineStorageService.uploadMedicine(clinicList, InStore.MED_INV);
-//            medicineStorageService.uploadMedicine(clinicList, InStore.CHI_MED_INV);
+            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);
+            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.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);
+            orderDetailService.uploadMedicine(clinicList, OrderDetail.HOS_CHI_MED);
 
 
             long syncTime = System.currentTimeMillis();
@@ -102,5 +102,132 @@ public class BaseService {
 
     }
 
+    // 西药库存同步
+    public void medicineStore() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineStoreService.uploadMedicine(clinicList);
+    }
+    // 中药库存同步
+    public void medicineChiStore() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineStoreService.uploadChinaMedicine(clinicList);
+    }
+    // 西药采购入库
+    public void medicineStorage() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineStorageService.uploadMedicine(clinicList, InStore.MED_PUR);
+    }
+    // 中药采购入库
+    public void medicineChiStorage() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineStorageService.uploadMedicine(clinicList, InStore.CHI_MED_PUR);
+    }
+
+    // 西药销售退回
+    public void medicineInbound() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineStorageService.uploadMedicine(clinicList, InStore.MED_INBOUND);
+    }
+
+    // 中药销售退回
+    public void medicineChiInbound() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineStorageService.uploadMedicine(clinicList, InStore.CHI_MED_INBOUND);
+    }
+    // 西药盘盈入库
+    public void medicineInv() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineStorageService.uploadMedicine(clinicList, InStore.MED_INV);
+    }
+    // 中药盘盈入库
+    public void medicineChiInv() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineStorageService.uploadMedicine(clinicList, InStore.CHI_MED_INV);
+    }
+
+    // 西药销售出库记录
+    public void medicineOutBound() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineReturnService.uploadMedicine(clinicList, OutStore.MED_OUT);
+    }
+
+    // 中药销售出库记录
+    public void medicineChiOutBound() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineReturnService.uploadMedicine(clinicList, OutStore.CHI_MED_OUT);
+    }
+
+    // 西药损耗/领用出库记录
+    public void medicineOutTreasury() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineReturnService.uploadMedicine(clinicList, OutStore.MED_OUTTREASURY);
+    }
+
+    // 中药损耗/领用出库记录
+    public void medicineOutChiTreasury() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineReturnService.uploadMedicine(clinicList, OutStore.CHI_MED_OUTTREASURY);
+    }
+
+    // 西药采购退货出库记录
+    public void medicineBack() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineReturnService.uploadMedicine(clinicList, OutStore.MED_BACK);
+    }
+
+    // 中药采购退货出库记录
+    public void medicineChiBack() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineReturnService.uploadMedicine(clinicList, OutStore.CHI_MED_BACK);
+    }
+
+    // 西药盘点盘亏出库记录
+    public void medicineInvOut() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineReturnService.uploadMedicine(clinicList, OutStore.MED_INV);
+    }
+
+    // 中药盘点盘亏出库记录
+    public void medicineChiInvOut() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        medicineReturnService.uploadMedicine(clinicList, OutStore.CHI_MED_INV);
+    }
+
+    // 西药销售明细记录(自费门诊)
+    public void medicineOrder() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        orderDetailService.uploadMedicine(clinicList, OrderDetail.CLI_MED);
+    }
+
+    // 中药销售明细记录(自费门诊)
+    public void medicineChiOrder() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        orderDetailService.uploadMedicine(clinicList, OrderDetail.CLI_CHI_MED);
+    }
+
+    // 西药销售明细记录(医保门诊)
+    public void medicineInsOrder() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        orderDetailService.uploadMedicine(clinicList, OrderDetail.INS_CLC_MED);
+    }
+
+    // 中药销售明细记录(医保门诊)
+    public void medicineChiInsOrder() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        orderDetailService.uploadMedicine(clinicList, OrderDetail.INS_CLC_CHI_MED);
+    }
+
+    // 西药药销售明细记录(住院)
+    public void medicineHosOrder() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        orderDetailService.uploadMedicine(clinicList, OrderDetail.HOS_MED);
+    }
+
+    // 中药销售明细记录(住院)
+    public void medicineChiHosOrder() throws Exception {
+        List<Clinic> clinicList = clinicService.listClinic();
+        orderDetailService.uploadMedicine(clinicList, OrderDetail.HOS_CHI_MED);
+    }
+
 
 }

+ 12 - 10
src/main/java/com/miyzh/service/MedicineReturnService.java

@@ -7,6 +7,7 @@ import com.github.pagehelper.PageInfo;
 import com.miyzh.dao.MedicineReturnDao;
 import com.miyzh.entity.*;
 import com.miyzh.entity.dto.MedicineReturnDto;
+import com.miyzh.utils.RestTemplateUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -131,6 +132,7 @@ public class MedicineReturnService {
                 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)
@@ -143,42 +145,42 @@ public class MedicineReturnService {
                 for(int i = 2; i <= page.getPages(); i++) {
                     switch (flag) {
                         case MED_OUT:
-                            page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                                 medicineReturnDao.listMedicineOutbound(clinic.getClinicId());
                             });
                             break;
                         case CHI_MED_OUT:
-                            page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                                 medicineReturnDao.listChinaMedicineOutbound(clinic.getClinicId());
                             });
                             break;
                         case MED_OUTTREASURY:
-                            page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                                 medicineReturnDao.listMedicineOutTreasury(clinic.getClinicId());
                             });
                             break;
                         case CHI_MED_OUTTREASURY:
-                            page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                                 medicineReturnDao.listChinaMedicineOutTreasury(clinic.getClinicId());
                             });
                             break;
                         case MED_BACK:
-                            page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                                 medicineReturnDao.listMedicineBack(clinic.getClinicId());
                             });
                             break;
                         case CHI_MED_BACK:
-                            page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                                 medicineReturnDao.listChinaMedicineBack(clinic.getClinicId());
                             });
                             break;
                         case MED_INV:
-                            page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                                 medicineReturnDao.listMedicineInventory(clinic.getClinicId());
                             });
                             break;
                         case CHI_MED_INV:
-                            page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                                 medicineReturnDao.listChinaMedicineInventory(clinic.getClinicId());
                             });
                             break;
@@ -212,6 +214,7 @@ public class MedicineReturnService {
                         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)
@@ -229,8 +232,7 @@ public class MedicineReturnService {
     public void upload (Object o) throws JsonProcessingException {
         ObjectMapper objectMapper = new ObjectMapper();
         String params = objectMapper.writeValueAsString(o);
-        System.out.println(params);
-//        System.out.println(objectMapper.writeValueAsString(RestTemplateUtil.postHttp(url, params)));
+        System.out.println(objectMapper.writeValueAsString(RestTemplateUtil.postHttp(url, params)));
     }
 
 }

+ 6 - 4
src/main/java/com/miyzh/service/MedicineStorageService.java

@@ -9,6 +9,7 @@ import com.miyzh.entity.Clinic;
 import com.miyzh.entity.MedicineStorage;
 import com.miyzh.entity.MedicineStorageTemp;
 import com.miyzh.entity.dto.MedicineStorageDto;
+import com.miyzh.utils.RestTemplateUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,7 +22,7 @@ import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
- * 库存信息同步
+ * 
  */
 
 @Slf4j
@@ -30,7 +31,7 @@ public class MedicineStorageService {
 
     @Autowired
     private MedicineStorageDao medicineStorageDao;
-    @Value ("${postApi.storeUrl}")
+    @Value ("${postApi.sorageUrl}")
     private String url;
     @Value("${postApi.pageSize}")
     private int pageSize;
@@ -97,6 +98,7 @@ public class MedicineStorageService {
                 switch (flag) {
                     case MED_PUR:
                     case CHI_MED_PUR:
+                        medicineStorageDto.setStorePurchaseType("5");
                         medicineStorageDto.setStorageType(StorageType.PUR);
                         break;
                     case MED_MED_INBOUND:
@@ -164,6 +166,7 @@ public class MedicineStorageService {
                         switch (flag) {
                             case MED_PUR:
                             case CHI_MED_PUR:
+                                medicineStorageDto.setStorePurchaseType("5");
                                 medicineStorageDto.setStorageType(StorageType.PUR);
                                 break;
                             case MED_MED_INBOUND:
@@ -197,8 +200,7 @@ public class MedicineStorageService {
     public void upload (Object o) throws JsonProcessingException {
         ObjectMapper objectMapper = new ObjectMapper();
         String params = objectMapper.writeValueAsString(o);
-        System.out.println(params);
-//        System.out.println(objectMapper.writeValueAsString(RestTemplateUtil.postHttp(url, params)));
+        System.out.println(objectMapper.writeValueAsString(RestTemplateUtil.postHttp(url, params)));
     }
 
 }

+ 7 - 1
src/main/java/com/miyzh/service/MedicineStoreService.java

@@ -50,6 +50,9 @@ public class MedicineStoreService {
             PageInfo<MedicineStore> page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                 medicineStoreDao.listMedicineStore(clinic.getClinicId());
             });
+            if (page.getTotal() == 0) {
+                continue;
+            }
             storeInfo.setMedicineInfos(page.getList());
             this.upload(storeInfo);
             if (page.getPages() > 1) {
@@ -77,6 +80,9 @@ public class MedicineStoreService {
             PageInfo<MedicineStore> page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                 medicineStoreDao.listChinaMedicineStore(clinic.getClinicId());
             });
+            if (page.getTotal() == 0) {
+                continue;
+            }
             storeInfo.setMedicineInfos(page.getList());
             this.upload(storeInfo);
             if (page.getPages() > 1) {
@@ -96,7 +102,7 @@ public class MedicineStoreService {
     public void upload (MedicineStoreDto storeInfo) throws Exception {
         ObjectMapper objectMapper = new ObjectMapper();
         String params = objectMapper.writeValueAsString(storeInfo);
-        System.out.println(params);
+        System.out.println(objectMapper.writeValueAsString(RestTemplateUtil.postHttp(url, params)));
 //        BaseResult baseResult = RestTemplateUtil.postHttp(url, params);
 //        if (null != baseResult && baseResult.isSuccess()) {
 //            log.info(storeInfo.getStoreCode() + baseResult.getMessage());

+ 13 - 17
src/main/java/com/miyzh/service/OrderDetailService.java

@@ -5,12 +5,10 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.miyzh.dao.ClinicDao;
-import com.miyzh.dao.MedicineStoreDao;
 import com.miyzh.dao.OrderDetailDao;
 import com.miyzh.entity.*;
-import com.miyzh.entity.dto.MedicineReturnDto;
-import com.miyzh.entity.dto.MedicineStoreDto;
 import com.miyzh.entity.dto.OrderDetailDto;
+import com.miyzh.utils.RestTemplateUtil;
 import com.mysql.cj.util.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,8 +16,6 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -48,6 +44,7 @@ public class OrderDetailService {
     private static final String INS_CLC_CHI_MED = "4"; // 中药销售明细(医保门诊)
     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();
@@ -121,7 +118,7 @@ public class OrderDetailService {
                         .stream()
                         .map(OrderDetailTemp::temp2OrderDetail)
                         .collect(Collectors.toList());
-                orderDetailDto.setOrderDetails(list);
+                orderDetailDto.setMedicineInfos(list);
                 this.upload(orderDetailDto);
             }
             if (page.getPages() > 1) {
@@ -129,41 +126,41 @@ public class OrderDetailService {
                 for(int i = 2; i <= page.getPages(); i++) {
                     switch (flag) {
                         case CLI_MED:
-                            page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                                 orderDetailDao.listClcMedOrder(clinic.getClinicId());
                             });
                             break;
                         case CLI_CHI_MED:
-                            page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                                 orderDetailDao.listClcChinaMedOrder(clinic.getClinicId());
                             });
                             break;
                         case INS_CLC_MED:
-                            page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                                 orderDetailDao.listInsClcMedOrder(clinic.getClinicId());
                             });
                             break;
                         case INS_CLC_CHI_MED:
-                            page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                                 orderDetailDao.listInsClcChinaMedOrder(clinic.getClinicId());
                             });
                             break;
                         case HOS_MED:
-                            page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                                 orderDetailDao.listHosMedOrder(clinic.getClinicId());
                             });
                             break;
                         case HOS_CHI_MED:
-                            page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
+                            page1 = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
                                 orderDetailDao.listHosChinaMedOrder(clinic.getClinicId());
                             });
                             break;
                     }
                     Map<String, List<OrderDetailTemp>> map1 = new HashMap<>();
                     if (HOS_MED.equals(flag) || HOS_CHI_MED.equals(flag)) {
-                        map1 =  page.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getVisitCode));
+                        map1 =  page1.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getVisitCode));
                     } else {
-                        map1 =  page.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getStoreOrderNo));
+                        map1 =  page1.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getStoreOrderNo));
                     }
                     for(Map.Entry<String, List<OrderDetailTemp>> msMap:map1.entrySet()){
                         OrderDetailDto orderDetailDto = new OrderDetailDto();
@@ -195,7 +192,7 @@ public class OrderDetailService {
                                 .stream()
                                 .map(OrderDetailTemp::temp2OrderDetail)
                                 .collect(Collectors.toList());
-                        orderDetailDto.setOrderDetails(list);
+                        orderDetailDto.setMedicineInfos(list);
                         this.upload(orderDetailDto);
                     }
                 }
@@ -208,8 +205,7 @@ public class OrderDetailService {
     public void upload (Object o) throws JsonProcessingException {
         ObjectMapper objectMapper = new ObjectMapper();
         String params = objectMapper.writeValueAsString(o);
-        System.out.println(params);
-//            System.out.println(objectMapper.writeValueAsString(RestTemplateUtil.postHttp(url, params)));
+        System.out.println(objectMapper.writeValueAsString(RestTemplateUtil.postHttp(url, params)));
     }
 
 }

+ 2 - 1
src/main/java/com/miyzh/utils/RestTemplateUtil.java

@@ -34,9 +34,10 @@ public class RestTemplateUtil {
         // 设置·header信息
         HttpHeaders headers = new HttpHeaders();
         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, params, BaseResult.class);
+                return restTemplate.postForObject(url, httpEntity, BaseResult.class);
             } catch (RestClientException e) {
                 log.error("-----------开始-----------重试count: " + i);
                 e.printStackTrace();

+ 0 - 2
src/main/resources/application-szq.yml

@@ -75,8 +75,6 @@ mybatis:
 server:
   port: 18099
 
-scheduling:
-  limit: 100
 postApi:
   pageSize: 2000
   storeUrl: http://15.72.176.14/mhis-pisp/api/pis/inventory-balance/upload

+ 8 - 6
src/main/resources/application.yml

@@ -71,14 +71,16 @@ mybatis:
   mapperLocations: classpath:/mapper/*.xml
   configLocation: classpath:mybatis/mybatis-config.xml
 
-server:
-  port: 18080
 
-scheduling:
-  limit: 100
-ws:
-  webUrl: http://15.72.29.170:86/qdmmib/webservice/runservice?wsdl
+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
 
 
 

+ 180 - 165
src/main/resources/mapper/MedicineReturnMapper.xml

@@ -18,35 +18,35 @@
     <!--西药销售出库记录-->
     <select id="listMedicineOutbound" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT
-            ccm.medicine_category as item_type,
-            IF
-                ( length( cm.med_ins_backup_id ) > 0, cm.med_ins_backup_id, cm.medicine_id ) AS store_medicine_code,
+            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_c_name AS store_medicine_trade_name,
-                ifnull( 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,
-                " " AS model,
-                cso.timestamp_number AS batch_no,
-                csd.stock_date AS manufacture_time,
+                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,
+                '0000000000000' as model,
+                if(ifnull(cso.timestamp_number,'')='','0000000000000',cso.timestamp_number) as batch_no,
+                SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
                 csd.medicine_deadline AS medicine_deadline,
-                '00000000' AS bar_code,
-                "" AS regist_no,
-                cso.medicine_manufacturer_name AS delivery_company,
-                "999999999" AS distributor,
-                '' AS store_storage_code,
+                if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+                 '99999999' AS regist_no,
+                if(ifnull(cso.medicine_manufacturer_name,'')='','999999999',cso.medicine_manufacturer_name) as delivery_company,
+                '999999999' AS distributor,
+                '999999999' AS store_storage_code,
                 sum( cso.change_number ) AS return_quantity,
-                cso.stock_bid AS price,
-                cso.retail_price AS retail_price,
+                ROUND(cso.stock_bid,2) AS price,
+                ROUND(cso.retail_price,2) AS retail_price,
                 "" AS plat_item_code,
                 "" AS plat_item_name,
-                idm.standard_menu_code AS item_code,
-                idm.insurance_medicine_name AS 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,
                 cso.create_name AS return_man,
-                cso.create_time AS return_time
+                cso.create_time AS return_time,
+                cso.create_id as store_return_code
             FROM
                 clc_stock_outbound cso
                 LEFT JOIN clc_medicine cm ON cso.medicine_id = cm.medicine_id
@@ -58,40 +58,42 @@
             WHERE
                 cso.clinic_id = #{clinicId}
                 AND cso.change_type IN ( 1, 2 )
+                GROUP BY cso.medicine_id
     </select>
 
     <!--中药销售出库记录-->
     <select id="listChinaMedicineOutbound" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT
-            ccm.medicine_category as item_type,
+            if(ccm.medicine_category='04', '2','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,
-                ifnull( 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,
-                " " AS model,
-                ccso.timestamp_number AS batch_no,
-                ccsp.stock_date AS manufacture_time,
+                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,
+                '0000000000000' AS model,
+                if(ifnull(ccso.timestamp_number,'')='','0000000000000',ccso.timestamp_number) as batch_no,
+                SUBSTR( ccsp.stock_date, 1, 10) AS manufacture_time,
                 ccsp.medicine_deadline AS medicine_deadline,
-                '00000000' AS bar_code,
-                "" AS regist_no,
-                ccso.medicine_manufacturer_name AS delivery_company,
+                '0000000000000' AS bar_code,
+                 '99999999' AS regist_no,
+                if(ifnull(ccso.medicine_manufacturer_name,'')='','999999999',ccso.medicine_manufacturer_name) as delivery_company,
                 "999999999" AS distributor,
-                '' AS store_storage_code,
+                '999999999' AS store_storage_code,
                 sum( ccso.change_number ) AS return_quantity,
-                ccso.stock_bid AS price,
-                ccso.retail_price AS retail_price,
+                ROUND(ccso.stock_bid,2) AS price,
+                ROUND(ccso.retail_price,2) AS retail_price,
                 "" AS plat_item_code,
                 "" AS plat_item_name,
-                idm.standard_menu_code AS item_code,
-                idm.insurance_medicine_name AS 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,
                 ccso.create_name AS return_man,
-                ccso.create_time AS return_time
+                ccso.create_time AS return_time,
+                ccso.create_id as store_return_code
             FROM
                 clc_china_stock_outbound ccso
                 LEFT JOIN clc_china_medicine ccm ON ccso.medicine_id = ccm.medicine_id
@@ -103,12 +105,13 @@
             WHERE
                 ccso.clinic_id = #{clinicId}
                 AND ccso.change_type IN ( 1, 2 )
+                GROUP BY ccso.medicine_id
     </select>
 
     <!--西药损耗/领用出库记录-->
     <select id="listMedicineOutTreasury" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT DISTINCT
-            ccm.medicine_category as item_type,
+            if(cm.medicine_category='04', '2','1') as item_type,
             IF (
                 length(cm.med_ins_backup_id) > 0,
                 cm.med_ins_backup_id,
@@ -116,30 +119,31 @@
             ) AS store_medicine_code,
              cm.medicine_c_name AS store_medicine_name,
              cm.medicine_c_name AS store_medicine_trade_name,
-             ifnull(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,
-             " " AS model,
-             cod.batch_number AS batch_no,
-             cod.stock_date AS manufacture_time,
+             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,
+             '0000000000000' AS model,
+             if(ifnull(cod.batch_number,'')='','0000000000000',cod.batch_number) as batch_no,
+             SUBSTR( cod.stock_date, 1, 10) AS manufacture_time,
              cod.deadline_date AS medicine_deadline,
-             '00000000' AS bar_code,
-             "" AS regist_no,
-             cod.medicine_manufacture AS delivery_company,
+             if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+              '99999999' AS regist_no,
+             if(ifnull(cod.medicine_manufacture,'')='','999999999',cod.medicine_manufacture) as delivery_company,
              "999999999" AS distributor,
-             '' AS store_storage_code,
+             '999999999' AS store_storage_code,
              sum(cod.out_num) AS return_quantity,
-             cod.stock_price AS price,
-             cod.sale_price AS retail_price,
-             "" AS plat_item_code,
-             "" AS plat_item_name,
-             idm.standard_menu_code AS item_code,
-             idm.insurance_medicine_name AS item_name,
+             ROUND(cod.stock_price,2) AS price,
+             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,
              co.create_userName AS return_man,
-             co.create_time AS return_time
+             co.create_time AS return_time,
+             co.outtreasury_no as store_return_code
          FROM
             clc_outtreasury_detail cod,
             clc_medicine cm,
@@ -154,6 +158,7 @@
             AND cm.clinic_id = idm.clinic_id
             AND cod.clinic_id = #{clinicId}
             AND cod.biz_type = 1
+            GROUP BY cod.medicine_id
          ORDER BY
             co.create_time,
             cod.medicine_id
@@ -162,7 +167,7 @@
     <!--中药损耗/领用出库记录-->
     <select id="listChinaMedicineOutTreasury" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT DISTINCT
-            cCm.medicine_category as item_type,
+            if(ccm.medicine_category='04', '2','1') as item_type,
             IF (
                 length(ccm.med_ins_backup_id) > 0,
                 ccm.med_ins_backup_id,
@@ -170,30 +175,31 @@
             ) AS store_medicine_code,
              ccm.medicine_name AS store_medicine_name,
              ccm.medicine_name AS store_medicine_trade_name,
-             ifnull(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,
-             " " AS model,
-             cod.batch_number AS batch_no,
-             cod.stock_date AS medicine_deadline,
-             cod.deadline_date AS manufacture_time,
-             '00000000' AS bar_code,
-             "" AS regist_no,
-             cod.medicine_manufacture AS delivery_company,
+             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,
+             '0000000000000' AS model,
+             if(ifnull(cod.batch_number,'')='','0000000000000',cod.batch_number) as batch_no,
+             SUBSTR( cod.stock_date, 1, 10) AS manufacture_time,
+             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,
              "999999999" AS distributor,
-             '' AS store_storage_code,
+             '999999999' AS store_storage_code,
              sum(cod.out_num) AS return_quantity,
-             cod.stock_price AS price,
-             cod.sale_price AS retail_price,
+             ROUND(cod.stock_price,2) AS price,
+             ROUND(cod.sale_price,2) AS retail_price,
              "" AS plat_item_code,
              "" AS plat_item_name,
-             idm.standard_menu_code AS item_code,
-             idm.insurance_medicine_name AS 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,
              co.create_userName AS return_man,
-             co.create_time AS return_time
+             co.create_time AS return_time,
+              co.outtreasury_no as store_return_code
              FROM
                 clc_outtreasury_detail cod,
                 clc_china_medicine ccm,
@@ -208,6 +214,7 @@
                 AND ccm.clinic_id = idm.clinic_id
                 AND cod.clinic_id = #{clinicId}
                 AND cod.biz_type = 2
+                GROUP BY cod.medicine_id
              ORDER BY
                 co.create_time,
                 cod.medicine_id
@@ -216,35 +223,36 @@
     <!--西药采购退货出库记录-->
     <select id="listMedicineBack" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT DISTINCT
-            cm.medicine_category as item_type,
+            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_c_name AS store_medicine_trade_name,
-                ifnull( 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,
-                " " AS model,
-                cpbd.stock_purchase_number AS batch_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(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,
+                '0000000000000' AS model,
+                if(ifnull(cpbd.stock_purchase_number,'')='','0000000000000',cpbd.stock_purchase_number) as batch_no,
                 csd.medicine_deadline AS medicine_deadline,
-                csd.stock_date AS manufacture_time,
-                '00000000' AS bar_code,
-                "" AS regist_no,
-                cpb.supplier_name AS delivery_company,
+                SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
+                if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+                 '99999999' AS regist_no,
+                if(ifnull(cpb.supplier_name,'')='','999999999',cpb.supplier_name) as delivery_company,
                 "999999999" AS distributor,
-                '' AS store_storage_code,
+                '999999999' AS store_storage_code,
                 sum( cpbd.return_count ) AS return_quantity,
-                cpbd.stock_price AS price,
-                cpbd.current_sale_price AS retail_price,
-                "" AS plat_item_code,
-                "" AS plat_item_name,
-                idm.standard_menu_code AS item_code,
-                idm.insurance_medicine_name AS item_name,
+                ROUND(cpbd.stock_price,2) AS price,
+                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,
                 cpb.create_userName AS return_man,
-                cpb.create_time AS return_time
+                cpb.create_time AS return_time,
+                cpb.purchase_id as store_return_code
             FROM
                 clc_purchase_back_detail cpbd,
                 clc_medicine cm,
@@ -261,6 +269,7 @@
                 AND cpbd.stock_purchase_number = csd.stock_purchase_number
                 AND cpbd.clinic_id = #{clinicId}
                 AND cpb.biz_type in (1, 2, 3)
+                GROUP BY cpbd.medicine_id
             ORDER BY
                 cpb.create_time,
                 cpbd.medicine_id
@@ -269,7 +278,7 @@
     <!--中药采购退货出库记录-->
     <select id="listChinaMedicineBack" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT DISTINCT
-            ccm.medicine_category as item_type,
+            if(ccm.medicine_category='04', '2','1') as item_type,
             IF (
                 length(ccm.med_ins_backup_id) > 0,
                 ccm.med_ins_backup_id,
@@ -277,30 +286,31 @@
             ) AS store_medicine_code,
              ccm.medicine_name AS store_medicine_name,
              ccm.medicine_name AS store_medicine_trade_name,
-             ifnull(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,
-             " " AS model,
-             cpbd.stock_purchase_number AS batch_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(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,
+             '0000000000000' AS model,
+             if(ifnull(cpbd.stock_purchase_number,'')='','0000000000000',cpbd.stock_purchase_number) as batch_no,
              ccsp.medicine_deadline AS medicine_deadline,
-             ccsp.stock_date AS manufacture_time,
-             '00000000' AS bar_code,
-             "" AS regist_no,
-             cpb.supplier_name AS delivery_company,
+             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,
              "999999999" AS distributor,
-             '' AS store_storage_code,
+             '999999999' AS store_storage_code,
              sum(cpbd.return_count) AS return_quantity,
-             cpbd.stock_price AS price,
-             cpbd.current_sale_price AS retail_price,
+             ROUND(cpbd.stock_price,2) AS price,
+             ROUND(cpbd.current_sale_price,2) AS retail_price,
              "" AS plat_item_code,
              "" AS plat_item_name,
-             idm.standard_menu_code AS item_code,
-             idm.insurance_medicine_name AS 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,
              cpb.create_userName AS return_man,
-             cpb.create_time AS return_time
+             cpb.create_time AS return_time,
+             cpb.purchase_id as store_return_code
         FROM
             clc_purchase_back_detail cpbd,
             clc_china_medicine ccm,
@@ -317,6 +327,7 @@
             AND cpbd.stock_purchase_number = ccsp.stock_purchase_number
             AND cpbd.clinic_id = #{clinicId}
             AND cpb.biz_type = 4
+            GROUP BY cpbd.medicine_id
         ORDER BY
             cpb.create_time,
             cpbd.medicine_id
@@ -325,35 +336,36 @@
     <!--西药盘点盘亏出库记录-->
     <select id="listMedicineInventory" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT DISTINCT
-            cm.medicine_category as item_type,
+            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_cide,
+                ( 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,
-                ifnull( 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,
-                " " AS model,
-                cid.batch_number AS batch_no,
-                cid.stock_date AS manufacture_time,
+                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,
+                '0000000000000' AS model,
+                if(ifnull(cid.batch_number,'')='','0000000000000',cid.batch_number) as batch_no,
+                SUBSTR( cid.stock_date, 1, 10) AS manufacture_time,
                 cid.deadline_date AS medicine_deadline,
-                '00000000' AS bar_cide,
-                "" AS regist_no,
-                cid.medicine_manufacture AS delivery_company,
-                "999999999" AS distributor,
-                '' AS store_storage_cide,
+                if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+                 '99999999' AS regist_no,
+                if(ifnull(cid.medicine_manufacture,'')='','999999999',cid.medicine_manufacture) as delivery_company,
+                '999999999' AS distributor,
+                '999999999' AS store_storage_code,
                 sum( cid.stock_num ) AS return_quantity,
-                cid.stock_price AS price,
-                cid.sale_price AS retail_price,
-                "" AS plat_item_cide,
+                ROUND(cid.stock_price,2) AS price,
+                ROUND(cid.sale_price,2) AS retail_price,
+                "" AS plat_item_code,
                 "" AS plat_item_name,
-                idm.standard_menu_code AS item_cide,
-                idm.insurance_medicine_name AS 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,
                 ci.create_userName AS return_man,
-                ci.create_time AS return_time
+                ci.create_time AS return_time,
+                ci.inventory_no as store_return_code
             FROM
                 clc_inventory_detail cid,
                 clc_medicine cm,
@@ -369,6 +381,7 @@
                 AND cid.inventory_type = 2
                 AND cid.clinic_id = #{clinicId}
                 AND <![CDATA[cid.biz_type != 4]]>
+                GROUP BY cid.medicine_id
             ORDER BY
                 ci.create_time,
                 cid.medicine_id
@@ -377,38 +390,39 @@
     <!--中药盘点盘亏出库记录-->
     <select id="listChinaMedicineInventory" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT DISTINCT
-            ccm.medicine_category as item_type,
+            if(ccm.medicine_category='04', '2','1') as item_type,
             IF (
                 length(ccm.med_ins_backup_id) > 0,
                 ccm.med_ins_backup_id,
                 ccm.medicine_id
-                ) AS store_medicine_cide,
+                ) AS store_medicine_code,
                  ccm.medicine_name AS store_medicine_name,
                  ccm.medicine_name AS store_medicine_trade_name,
-                 ifnull(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,
-                 " " AS model,
-                 cid.batch_number AS batch_no,
-                 cid.stock_date AS manufacture_time,
+                 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,
+                 '0000000000000' AS model,
+                 if(ifnull(cid.batch_number,'')='','0000000000000',cid.batch_number) as batch_no,
+                 SUBSTR( cid.stock_date, 1, 10) AS manufacture_time,
                  cid.deadline_date AS medicine_deadline,
-                 '00000000' AS bar_cide,
-                 "" AS regist_no,
-                 cid.medicine_manufacture AS delivery_company,
+                 '0000000000000' AS bar_code,
+                  '99999999' AS regist_no,
+                 if(ifnull(cid.medicine_manufacture,'')='','999999999',cid.medicine_manufacture) as delivery_company,
                  "999999999" AS distributor,
-                 '' AS store_storage_cide,
+                 '999999999' AS store_storage_code,
                  sum(cid.stock_num) AS return_quantity,
-                 cid.stock_price AS price,
-                 cid.sale_price AS retail_price,
-                 "" AS plat_item_cide,
+                 ROUND(cid.stock_price,2) AS price,
+                 ROUND(cid.sale_price,2) AS retail_price,
+                 "" AS plat_item_code,
                  "" AS plat_item_name,
-                 idm.standard_menu_code AS item_cide,
-                 idm.insurance_medicine_name AS 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,
                  ci.create_userName AS return_man,
-                 ci.create_time AS return_time
+                 ci.create_time AS return_time,
+                 ci.inventory_no as store_return_code
             FROM
                 clc_inventory_detail cid,
                 clc_china_medicine ccm,
@@ -424,6 +438,7 @@
                 AND cid.inventory_type = 2
                 AND cid.clinic_id = #{clinicId}
                 AND cid.biz_type = 4
+                GROUP BY cid.medicine_id
             ORDER BY
                 ci.create_time,
                 cid.medicine_id

+ 117 - 114
src/main/resources/mapper/MedicineStorageMapper.xml

@@ -16,33 +16,33 @@
     <!--西药采购入库记录-->
     <select id="listMedicinePurchase" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT DISTINCT
-            cm.medicine_category as item_type,
+            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,
-            ifnull(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,
-            cm.medicine_unit AS pack,
-            " " as model,
-            csi.stock_batch_number as batch_no,
-            csi.create_time as manufacture_time,
+            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,
+            '0000000000000' AS model,
+            if(ifnull(csi.stock_batch_number,'')='','0000000000000',csi.stock_batch_number) as batch_no,
+            SUBSTR( csi.create_time, 1, 10) AS manufacture_time,
             csi.medicine_deadline as medicine_deadline,
-            cm.medicine_barcode as bar_code,
-            "" as regist_no,
-            csi.stock_channel as delivery_company,
+            if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+             '99999999' AS regist_no,
+            if(ifnull(csi.stock_channel,'')='','999999999',csi.stock_channel) as delivery_company,
             "999999999" as distributor,
             cp.purchase_no as store_storage_code,
             sum( csi.stock_change_number ) AS storage_quantity,
-            csi.stock_bid AS price,
-            cs.medicine_retail_price AS retail_price,
+            ROUND(csi.stock_bid,2) AS price,
+            ROUND(cs.medicine_retail_price,2) AS retail_price,
             "" as plat_item_code,
             "" as plat_item_name,
-            idm.standard_menu_code as item_code,
-            idm.insurance_medicine_name as 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,
             cp.create_username AS storage_man,
             cp.create_time as storage_time
         FROM
@@ -74,7 +74,7 @@
     <!--中药采购入库记录-->
     <select id="listChinaMedicinePurchase" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT DISTINCT
-            ccm.medicine_category as item_type,
+           if(ccm.medicine_category='04', '2','1') as item_type,
             IF (
                 length(ccm.med_ins_backup_id) > 0,
                 ccm.med_ins_backup_id,
@@ -82,28 +82,28 @@
             ) AS store_medicine_code,
              ccm.medicine_name AS store_medicine_name,
              ccm.medicine_name AS store_medicine_trade_name,
-             ifnull(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,
-             " " AS model,
-             ccssf.stock_batch_number AS batch_no,
-             ccssf.create_time AS manufacture_time,
+             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,
+             '0000000000000' AS model,
+             if(ifnull(ccssf.stock_batch_number,'')='','0000000000000',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,
-             '00000000' AS bar_code,
-             "" AS regist_no,
-             ccssf.stock_channel AS delivery_company,
+              '99999999' AS regist_no,
+             if(ifnull(ccssf.stock_channel,'')='','999999999',ccssf.stock_channel) as delivery_company,
              "999999999" AS distributor,
              cp.purchase_no AS store_storage_code,
              sum(ccssf.stock_change_number) AS storage_quantity,
-             ccssf.stock_bid AS price,
-             cs.medicine_retail_price AS retail_price,
+             ROUND(ccssf.stock_bid,2) AS price,
+             ROUND(cs.medicine_retail_price,2) AS retail_price,
              "" AS plat_item_code,
              "" AS plat_item_name,
-             idm.standard_menu_code AS item_code,
-             idm.insurance_medicine_name AS 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,
              cp.create_username AS storage_man,
              cp.create_time AS storage_time
             FROM
@@ -135,33 +135,33 @@
     <!--西药销售退回入库记录-->
     <select id="listMedicineOutbound" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT DISTINCT
-            cm.medicine_category AS item_type,
+            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,
-            ifnull( 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,
-            cm.medicine_unit AS pack,
-            " " AS model,
-            csd.stock_batch_number AS batch_no,
-            csd.stock_date AS manufacture_time,
+            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,
+            '0000000000000' AS model,
+            if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as batch_no,
+            SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
             csd.medicine_deadline AS medicine_deadline,
-            cm.medicine_barcode AS bar_code,
-            "" AS regist_no,
-            csd.stock_channel AS delivery_company,
+            if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+             '99999999' AS regist_no,
+            if(ifnull(csd.stock_channel,'')='','999999999',csd.stock_channel) as delivery_company,
             "999999999" AS distributor,
-            csd.stock_batch_number AS store_storage_code,
+            csd.timestamp_number AS store_storage_code,
             sum( cso.change_number ) AS storage_quantity,
-            csd.stock_bid AS price,
-            cs.medicine_retail_price AS retail_price,
+            ROUND(csd.stock_bid,2) AS price,
+            ROUND(cs.medicine_retail_price,2) AS retail_price,
             "" AS plat_item_code,
             "" AS plat_item_name,
-            idm.standard_menu_code AS item_code,
-            idm.insurance_medicine_name AS 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,
             cso.doctor_name AS storage_man,
             cso.stock_date AS storage_time
         FROM
@@ -186,33 +186,33 @@
     <!--中药销售退回入库记录-->
     <select id="listChinaMedicineOutbound" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT DISTINCT
-            ccm.medicine_category AS item_type,
+            if(ccm.medicine_category='04', '2','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,
-            ifnull( 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,
-            ccm.medicine_unit AS pack,
-            " " AS model,
-            ccsp.stock_batch_number AS batch_no,
-            ccsp.stock_date AS manufacture_time,
+            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,
+            '0000000000000' AS model,
+            if(ifnull(ccsp.stock_batch_number,'')='','0000000000000',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,
-            '00000000' AS bar_code,
-            "" AS regist_no,
-            ccsp.stock_channel AS delivery_company,
+             '99999999' AS regist_no,
+            if(ifnull(ccsp.stock_channel,'')='','999999999',ccsp.stock_channel) as delivery_company,
             "999999999" AS distributor,
-            ccsp.stock_batch_number AS store_storage_code,
+            ccsp.timestamp_number AS store_storage_code,
             sum( cso.change_number ) AS storage_quantity,
-            ccsp.stock_bid AS price,
-            ccs.medicine_retail_price AS retail_price,
+            ROUND(ccsp.stock_bid,2) AS price,
+            ROUND(ccs.medicine_retail_price,2) AS retail_price,
             "" AS plat_item_code,
             "" AS plat_item_name,
-            idm.standard_menu_code AS item_code,
-            idm.insurance_medicine_name AS 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,
             cso.doctor_name AS storage_man,
             cso.stock_date AS storage_time
         FROM
@@ -224,6 +224,7 @@
             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
         WHERE
             ccm.clinic_id = #{clinicId}
             AND cso.change_type IN ( '03', '04' )
@@ -236,35 +237,35 @@
     <!--西药盘点盘盈入库记录-->
     <select id="listMedicineInventory" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT DISTINCT
-            cm.medicine_category as item_type,
+           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_c_name AS store_medicine_trade_name,
-                ifnull( 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,
-                " " AS model,
-                cid.batch_number AS batch_no,
-                cid.stock_date AS manufacture_time,
+                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,
+                '0000000000000' AS model,
+                if(ifnull(cid.batch_number,'')='','0000000000000',cid.batch_number) as batch_no,
+                SUBSTR( cid.stock_date, 1, 10) AS manufacture_time,
                 cid.deadline_date AS medicine_deadline,
-                '00000000' AS bar_cide,
-                "" AS regist_no,
-                cid.medicine_manufacture AS delivery_company,
+                '0000000000000' AS bar_code,
+                 '99999999' AS regist_no,
+                if(ifnull(cid.medicine_manufacture,'')='','999999999',cid.medicine_manufacture) as delivery_company,
                 "999999999" AS distributor,
-                '' AS store_storage_cide,
-                sum( cid.stock_num ) AS return_quantity,
-                cid.stock_price AS price,
-                cid.sale_price AS retail_price,
-                "" AS plat_item_cide,
+                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,
-                idm.standard_menu_code AS item_cide,
-                idm.insurance_medicine_name AS item_name,
-                ci.create_userName AS return_man,
-                ci.create_time AS return_time
+                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,
+                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,
@@ -280,6 +281,7 @@
                 AND cid.inventory_type = 1
                 AND cid.clinic_id = #{clinicId}
                 AND <![CDATA[cid.biz_type != 4]]>
+                GROUP BY cid.medicine_id
             ORDER BY
                 ci.create_time,
                 cid.medicine_id
@@ -288,7 +290,7 @@
     <!--中药盘点盘盈入库-->
     <select id="listChinaMedicineInventory" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT DISTINCT
-            ccm.medicine_category as item_type,
+            if(ccm.medicine_category='04', '2','1') as item_type,
             IF (
                 length(ccm.med_ins_backup_id) > 0,
                 ccm.med_ins_backup_id,
@@ -296,30 +298,30 @@
                 ) AS store_medicine_code,
                  ccm.medicine_name AS store_medicine_name,
                  ccm.medicine_name AS store_medicine_trade_name,
-                 ifnull(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,
-                 " " AS model,
-                 cid.batch_number AS batch_no,
-                 cid.stock_date AS manufacture_time,
+                 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,
+                 '0000000000000' AS model,
+                 if(ifnull(cid.batch_number,'')='','0000000000000',cid.batch_number) as batch_no,
+                 SUBSTR( cid.stock_date, 1, 10) AS manufacture_time,
                  cid.deadline_date AS medicine_deadline,
-                 '00000000' AS bar_cide,
-                 "" AS regist_no,
-                 cid.medicine_manufacture AS delivery_company,
+                 '0000000000000' as bar_code,
+                  '99999999' AS regist_no,
+                 if(ifnull(cid.medicine_manufacture,'')='','999999999',cid.medicine_manufacture) as delivery_company,
                  "999999999" AS distributor,
-                 '' AS store_storage_cide,
-                 sum(cid.stock_num) AS return_quantity,
-                 cid.stock_price AS price,
-                 cid.sale_price AS retail_price,
-                 "" AS plat_item_cide,
+                 ci.inventory_no AS store_storage_code,
+                 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,
-                 idm.standard_menu_code AS item_cide,
-                 idm.insurance_medicine_name AS item_name,
-                 ci.create_userName AS return_man,
-                 ci.create_time AS return_time
+                 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,
+                 ci.create_userName AS storage_man,
+                 ci.create_time AS storage_time
             FROM
                 clc_inventory_detail cid,
                 clc_china_medicine ccm,
@@ -335,6 +337,7 @@
                 AND cid.inventory_type = 1
                 AND cid.clinic_id = #{clinicId}
                 AND cid.biz_type = 4
+                GROUP BY cid.medicine_id
             ORDER BY
                 ci.create_time,
                 cid.medicine_id

+ 42 - 36
src/main/resources/mapper/MedicineStoreMapper.xml

@@ -11,30 +11,30 @@
 
     <select id="listMedicineStore" resultMap="BaseResultMap" parameterType="java.lang.String">
         select
-        cm.medicine_category as item_type,
-        cm.med_ins_backup_id as store_medicine_code,
+        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,
-        ifnull(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,
-        " " as model,
-        csd.stock_batch_number as batch_no,
-        csd.create_time as manufacture_time,
+        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,
+        '0000000000000' as model,
+        if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as batch_no,
+        SUBSTR( csd.create_time, 1, 10) AS manufacture_time,
         csd.medicine_deadline as medicine_deadline,
-        cm.medicine_barcode as bar_code,
-        "" as regist_no,
-        csd.stock_channel as delivery_company,
+        if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+         '99999999' AS regist_no,
+        if(ifnull(csd.stock_channel,'')='','999999999',csd.stock_channel) as delivery_company,
         "999999999" as distributor,
-        csd.stock_bid as price,
-        idm.sale_price as retail_price,
+        ROUND(csd.stock_bid,2) as price,
+        ROUND(idm.sale_price,2) as retail_price,
         "" as plat_item_code,
         "" as plat_item_name,
-        idm.standard_menu_code as item_code,
-        idm.insurance_medicine_name as 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,
         "999999999" as approval_number,
         csd.remain_number as current_num
         from
@@ -49,36 +49,41 @@
             csd.clinic_id = idm.clinic_id and csd.medicine_id=idm.medicine_id
         where
             csd.clinic_id = #{clinicId}
+            and <![CDATA[csd.timestamp_number != 'default' ]]>
         GROUP BY
             csd.medicine_id
     </select>
 
     <select id="listChinaMedicineStore" resultMap="BaseResultMap" parameterType="java.lang.String">
         select
-        ccm.medicine_category as item_type,
-        ccm.med_ins_backup_id as store_medicine_code,
+        if(ccm.medicine_category='04', '2','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,
-        ifnull(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,
-        " " as model,
-        ccsp.stock_batch_number as batch_no,
-        ccm.create_time as manufacture_time,
+        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,
+        '0000000000000' as model,
+        if(ifnull(ccsp.stock_batch_number,'')='','0000000000000',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,
-        "" as regist_no,
-        ccsp.stock_channel as delivery_company,
+        '0000000000000' as bar_code,
+         '99999999' AS regist_no,
+        if(ifnull(ccsp.stock_channel,'')='','999999999',ccsp.stock_channel) as delivery_company,
         "999999999" as distributor,
-        ccsp.stock_bid as price,
-        idm.sale_price as retail_price,
+        ROUND(ccsp.stock_bid,2) as price,
+        ROUND(idm.sale_price,2) as retail_price,
         "" as plat_item_code,
         "" as plat_item_name,
-        idm.standard_menu_code as item_code,
-        idm.insurance_medicine_name as 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,
         "999999999" as approval_number,
         ccsp.remain_number as current_num
         from
@@ -93,6 +98,7 @@
             ccsp.clinic_id = idm.clinic_id and ccsp.medicine_id=idm.medicine_id
         where
             ccsp.clinic_id = #{clinicId}
+            and <![CDATA[ccsp.timestamp_number != 'default' ]]>
         GROUP BY
             ccsp.medicine_id
     </select>

+ 216 - 198
src/main/resources/mapper/OrderDetailMapper.xml

@@ -2,6 +2,8 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.miyzh.dao.OrderDetailDao">
     <resultMap id="BaseResultMap" type="com.miyzh.entity.OrderDetailTemp" extends="com.miyzh.dao.MedicineDao.BaseResultMap">
+        <!--机构销售订单编号-->
+        <result column="store_order_no" jdbcType="VARCHAR" property="storeOrderNo" />
         <!--医保结算单号-->
         <result column="mis_no" jdbcType="VARCHAR" property="misNo" />
         <!--结算方式编码-->
@@ -42,48 +44,52 @@
         <result column="is_unpacking" jdbcType="VARCHAR" property="isUnpacking" />
         <!--查询时间-->
         <result column="query_time" jdbcType="VARCHAR" property="queryTime" />
+        <!--处方编码-->
+        <result column="recipe_no" jdbcType="VARCHAR" property="recipeNo" />
+
     </resultMap>
 
     <select id="listClcMedOrder" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT
             cpi.prescription_id AS store_order_no,
             '99999999' AS mis_no,
-            states AS settledstatus,
-            cpi.price AS total_amt,
+            cpi.states AS settledstatus,
+            ROUND(cpi.price,2) AS total_amt,
             0 AS insurance_amt,
             cso.doctor_name AS operater,
-            SUBSTR( cso.stock_date, 1, 10 ) AS sale_date,
-            cso.stock_date AS sale_time,
+            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,
-            cm.medicine_c_name AS store_medicine_name,
-            cm.medicine_id AS store_medicine_code,
+            IF( cm.medicine_category = '04', '2', '1') AS item_type,
+            cso.medicine_name AS store_medicine_name,
+            cso.med_ins_backup_id AS store_medicine_code,
             '' AS plat_item_code,
             '' AS plat_item_name,
-            idm.med_ins_backup_id AS item_code,
-            idm.insurance_medicine_name AS item_name,
-            '0000000000000' AS store_precord_code,
-            '0000000000000' AS store_storage_code,
+            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,
+            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,
-            ifnull( 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,
-            " " AS model,
-            csd.stock_batch_number AS batch_no,
-            csd.create_time AS manufacture_time,
+            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,
+            '0000000000000' AS model,
+            if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as batch_no,
+            SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
             csd.medicine_deadline AS medicine_deadline,
-            cm.medicine_barcode AS bar_code,
-            "" AS regist_no,
-            csd.stock_channel AS delivery_company,
+            if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+             '99999999' AS regist_no,
+            if(ifnull(csd.stock_channel,'')='','999999999',csd.stock_channel) as delivery_company,
             "999999999" AS distributor,
-            csd.stock_bid AS price,
-            idm.sale_price AS retail_price,
+            ROUND(csd.stock_bid,2) AS price,
+            ROUND(cso.retail_price,2) AS retail_price,
             cso.change_number as num,
-            cso.if_piece as is_unpacking
+            if(cso.if_piece = '0', '1', '2') as is_unpacking,
+            now() as query_time
         FROM
             clc_stock_outbound cso
         LEFT JOIN
@@ -104,8 +110,7 @@
         LEFT JOIN
             clc_stock_detail csd
         ON
-            cso.timestamp_number = csd.timestamp_number
-            and cso.medicine_id = csd.medicine_id
+            cso.stock_detail_id = csd.id
             and cso.clinic_id = csd.clinic_id
         WHERE
             cso.clinic_id = #{clinicId}
@@ -122,118 +127,118 @@
         SELECT
             cpi.prescription_id AS store_order_no,
             '99999999' AS mis_no,
-            states AS settledstatus,
-            cpi.price AS total_amt,
+            cpi.states AS settledstatus,
+            ROUND(cpi.price,2) AS total_amt,
             0 AS insurance_amt,
-            cso.doctor_name AS operater,
-            SUBSTR( cso.stock_date, 1, 10 ) AS sale_date,
-            cso.stock_date AS sale_time,
-            cso.patient_name AS buy_med_person,
+            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,
             '0000000000000' AS credential_num,
         IF
             ( ccm.medicine_category = '04', 2, 1 ) AS item_type,
-            ccm.medicine_name AS store_medicine_name,
-        IF
-            ( length( ccm.med_ins_backup_id ) > 0, ccm.med_ins_backup_id, ccm.medicine_id ) AS store_medicine_code,
+            ccso.medicine_name AS store_medicine_name,
+            ccso.med_ins_backup_id AS store_medicine_code,
             '' AS plat_item_code,
             '' AS plat_item_name,
-            idm.med_ins_backup_id AS item_code,
-            idm.insurance_medicine_name AS item_name,
-            '0000000000000' AS store_precord_code,
-            '0000000000000' AS store_storage_code,
+            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,
+            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,
-            ifnull( 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,
-            " " AS model,
-            csd.stock_batch_number AS batch_no,
-            csd.create_time AS manufacture_time,
-            csd.medicine_deadline AS medicine_deadline,
-            '00000000' AS bar_code,
-            "" AS regist_no,
-            csd.stock_channel AS delivery_company,
+            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,
+            '0000000000000' AS model,
+            if(ifnull(ccsp.stock_batch_number,'')='','0000000000000',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,
+             '99999999' AS regist_no,
+            if(ifnull(ccsp.stock_channel,'')='','999999999',ccsp.stock_channel) as delivery_company,
             "999999999" AS distributor,
-            csd.stock_bid AS price,
-            idm.sale_price AS retail_price,
-            cso.change_number AS num,
-            cso.if_piece AS is_unpacking
+            ROUND(ccsp.stock_bid,2) AS price,
+            ROUND(ccso.retail_price,2) AS retail_price,
+            ccso.change_number AS num,
+            '1' as is_unpacking,
+            now() as query_time
         FROM
-            clc_stock_outbound cso
+            clc_china_stock_outbound ccso
         LEFT JOIN
             clc_prescription_info cpi
         ON
-            cpi.prescription_id = cso.prescription_id
-            AND cso.clinic_id = cpi.clinic_id
+            cpi.prescription_id = ccso.prescription_id
+            AND ccso.clinic_id = cpi.clinic_id
         LEFT JOIN
             clc_china_medicine ccm
         ON
-            cso.medicine_id = ccm.medicine_id
-            and cso.clinic_id = ccm.clinic_id
+            ccso.medicine_id = ccm.medicine_id
+            and ccso.clinic_id = ccm.clinic_id
         LEFT JOIN
             ins_d_medicine idm
         ON
-            cso.medicine_id = idm.medicine_id
-            and cso.clinic_id = idm.clinic_id
+            ccso.medicine_id = idm.medicine_id
+            and ccso.clinic_id = idm.clinic_id
         LEFT JOIN
-            clc_stock_detail csd
+            clc_china_stock_profit ccsp
         ON
-            cso.timestamp_number = csd.timestamp_number
-            and cso.clinic_id = csd.clinic_id
-            AND cso.medicine_id = csd.medicine_id
+            ccso.stock_detail_id = ccsp.id
+            and ccso.clinic_id = ccsp.clinic_id
         WHERE
-            cso.clinic_id = #{clinicId}
+            ccso.clinic_id = #{clinicId}
         AND
             cpi.prescription_type = 1
         AND
-            cso.change_type in (1, 2)
-        and cso.source_type = 1
+            ccso.change_type in (1, 2)
+        and ccso.source_type = 1
         GROUP BY
-            cso.id
+            ccso.id
     </select>
 
     <select id="listInsClcMedOrder" resultMap="BaseResultMap" parameterType="java.lang.String">
         SELECT
             cpi.prescription_id AS store_order_no,
             '99999999' AS mis_no,
-            states AS settledstatus,
-            cpi.price AS total_amt,
-            ifnull( ids.ordinate_total_score, 0 ) AS insurance_amt,
+            cpi.states AS settledstatus,
+             ROUND(cpi.price,2) AS total_amt,
+            ifnull( ROUND(ids.ordinate_total_score,2), '0.00' ) AS insurance_amt,
             cso.doctor_name AS operater,
-            SUBSTR( cso.stock_date, 1, 10 ) AS sale_date,
-            cso.stock_date AS sale_time,
+            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,
-            cm.medicine_c_name AS store_medicine_name,
-            cm.medicine_id AS store_medicine_code,
+            cso.medicine_name AS store_medicine_name,
+            cso.med_ins_backup_id AS store_medicine_code,
             '' AS plat_item_code,
             '' AS plat_item_name,
-            idm.med_ins_backup_id AS item_code,
-            idm.insurance_medicine_name AS item_name,
-            '0000000000000' AS store_precord_code,
-            '0000000000000' AS store_storage_code,
+            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,
+            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,
-            ifnull( 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,
-            " " AS model,
-            csd.stock_batch_number AS batch_no,
-            csd.create_time AS manufacture_time,
+            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,
+            '0000000000000' AS model,
+            if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as batch_no,
+            SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
             csd.medicine_deadline AS medicine_deadline,
-            cm.medicine_barcode AS bar_code,
-            "" AS regist_no,
-            csd.stock_channel AS delivery_company,
+            if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+             '99999999' AS regist_no,
+            if(ifnull(csd.stock_channel,'')='','999999999',csd.stock_channel) as delivery_company,
             "999999999" AS distributor,
-            csd.stock_bid AS price,
-            idm.sale_price AS retail_price,
+            ROUND(csd.stock_bid,2) AS price,
+            ROUND(cso.retail_price,2) AS retail_price,
             cso.change_number AS num,
-            cso.if_piece AS is_unpacking
+            if(cso.if_piece = '0', '1', '2') as is_unpacking,
+            now() as query_time
         FROM
             clc_stock_outbound cso
             LEFT JOIN clc_prescription_info cpi ON cpi.prescription_id = cso.prescription_id
@@ -242,8 +247,7 @@
             AND cpi.clinic_id = cso.clinic_id
             LEFT JOIN ins_d_medicine idm ON cso.medicine_id = idm.medicine_id
             AND cso.clinic_id = idm.clinic_id
-            LEFT JOIN clc_stock_detail csd ON cso.timestamp_number = csd.timestamp_number
-            AND cso.medicine_id = csd.medicine_id
+            LEFT JOIN clc_stock_detail 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
@@ -263,56 +267,62 @@
         SELECT
             cpi.prescription_id AS store_order_no,
             '99999999' AS mis_no,
-            states AS settledstatus,
-            cpi.price AS total_amt,
-            ifnull( ids.ordinate_total_score, 0 ) AS insurance_amt,
+            cpi.states AS settledstatus,
+            ROUND(cpi.price,2) AS total_amt,
+            ifnull( ROUND(ids.ordinate_total_score,2), '0.00' ) AS insurance_amt,
             cso.doctor_name AS operater,
-            SUBSTR( cso.stock_date, 1, 10 ) AS sale_date,
-            cso.stock_date AS sale_time,
+            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,
-            ccm.medicine_name AS store_medicine_name,
-            IF( length( ccm.med_ins_backup_id ) > 0, ccm.med_ins_backup_id, ccm.medicine_id ) AS store_medicine_code,
+            cso.medicine_name AS store_medicine_name,
+            cso.med_ins_backup_id AS store_medicine_code,
             '' AS plat_item_code,
             '' AS plat_item_name,
-            idm.med_ins_backup_id AS item_code,
-            idm.insurance_medicine_name AS item_name,
-            '0000000000000' AS store_precord_code,
-            '0000000000000' AS store_storage_code,
+            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,
+            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,
-            ifnull( 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,
-            " " AS model,
-            csd.stock_batch_number AS batch_no,
-            csd.create_time AS manufacture_time,
+            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,
+            '0000000000000' AS model,
+            if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as batch_no,
+            SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
             csd.medicine_deadline AS medicine_deadline,
-            '00000000' AS bar_code,
-            "" AS regist_no,
-            csd.stock_channel AS delivery_company,
+            '0000000000000' AS bar_code,
+             '99999999' AS regist_no,
+            if(ifnull(csd.stock_channel,'')='','999999999',csd.stock_channel) as delivery_company,
             "999999999" AS distributor,
-            csd.stock_bid AS price,
-            idm.sale_price AS retail_price,
+            ROUND(csd.stock_bid,2) AS price,
+            ROUND(cso.retail_price,2) AS retail_price,
             cso.change_number AS num,
-            cso.if_piece AS is_unpacking
+            '1' as is_unpacking,
+            now() as query_time
         FROM
-            clc_stock_outbound cso
-            LEFT JOIN clc_prescription_info cpi ON cpi.prescription_id = cso.prescription_id
+            clc_china_stock_outbound cso
+            LEFT JOIN clc_prescription_info cpi
+            ON cpi.prescription_id = cso.prescription_id
             AND cso.clinic_id = cpi.clinic_id
-            LEFT JOIN clc_china_medicine ccm ON cso.medicine_id = ccm.medicine_id
+            LEFT JOIN clc_china_medicine ccm
+            ON cso.medicine_id = ccm.medicine_id
             AND cso.clinic_id = ccm.clinic_id
-            LEFT JOIN ins_d_medicine idm ON cso.medicine_id = idm.medicine_id
+            LEFT JOIN ins_d_medicine idm
+            ON cso.medicine_id = idm.medicine_id
             AND cso.clinic_id = idm.clinic_id
-            LEFT JOIN clc_stock_detail csd ON cso.timestamp_number = csd.timestamp_number
+            LEFT JOIN clc_china_stock_profit csd
+            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
+            LEFT JOIN ins_clinic_settlement ics
+            ON ics.prescription_id = cso.prescription_id
             AND ics.clinic_id = cso.clinic_id
-            LEFT JOIN ins_d_settlement ids ON ids.settlement_id = ics.id
+            LEFT JOIN ins_d_settlement ids
+            ON ids.settlement_id = ics.id
             AND ids.clinic_id = cso.clinic_id
         WHERE
             cso.clinic_id = #{clinicId}
@@ -327,52 +337,57 @@
         SELECT
             cpi.prescription_id AS store_order_no,
             '99999999' AS mis_no,
-            states AS settledstatus,
-            cpi.price AS total_amt,
-            ifnull( ids.ordinate_total_score, 0 ) AS insurance_amt,
+            cpi.states AS settledstatus,
+            ROUND(cpi.price,2) AS total_amt,
+            ifnull( ROUND(ids.ordinate_total_score,2), '0.00' ) AS insurance_amt,
             cso.doctor_name AS operater,
-            SUBSTR( cso.stock_date, 1, 10 ) AS sale_date,
-            cso.stock_date AS sale_time,
+            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,
-            cm.medicine_c_name AS store_medicine_name,
-            cm.medicine_id AS store_medicine_code,
+            cso.medicine_name AS store_medicine_name,
+            cso.med_ins_backup_id AS store_medicine_code,
             '' AS plat_item_code,
             '' AS plat_item_name,
-            idm.med_ins_backup_id AS item_code,
-            idm.insurance_medicine_name AS item_name,
-            '0000000000000' AS store_precord_code,
-            '0000000000000' AS store_storage_code,
+            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,
+            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,
-            ifnull( 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,
-            " " AS model,
-            csd.stock_batch_number AS batch_no,
-            csd.create_time AS manufacture_time,
+            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,
+            '0000000000000' AS model,
+            if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as batch_no,
+            SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
             csd.medicine_deadline AS medicine_deadline,
-            cm.medicine_barcode AS bar_code,
-            "" AS regist_no,
-            csd.stock_channel AS delivery_company,
+            if(ifnull(cm.medicine_barcode,'')='','0000000000000',cm.medicine_barcode) as bar_code,
+             '99999999' AS regist_no,
+            if(ifnull(csd.stock_channel,'')='','999999999',csd.stock_channel) as delivery_company,
             "999999999" AS distributor,
-            csd.stock_bid AS price,
-            idm.sale_price AS retail_price,
+            ROUND(csd.stock_bid,2) AS price,
+            ROUND(cso.retail_price,2) AS retail_price,
             cso.change_number AS num,
-            cso.if_piece AS is_unpacking
+            if(cso.if_piece = '0', '1', '2') as is_unpacking,
+            now() as query_time
         FROM
             clc_stock_outbound cso
-            LEFT JOIN clc_prescription_info cpi ON cpi.prescription_id = cso.prescription_id
+            LEFT JOIN clc_prescription_info cpi
+            ON cpi.prescription_id = cso.prescription_id
             AND cso.clinic_id = cpi.clinic_id
-            LEFT JOIN clc_medicine cm ON cso.medicine_id = cm.medicine_id
+            LEFT JOIN clc_medicine cm
+            ON cso.medicine_id = cm.medicine_id
             AND cso.clinic_id = cm.clinic_id
-            LEFT JOIN ins_d_medicine idm ON cso.medicine_id = idm.medicine_id
+            LEFT JOIN ins_d_medicine idm
+            ON cso.medicine_id = idm.medicine_id
             AND cso.clinic_id = idm.clinic_id
-            LEFT JOIN clc_stock_detail csd ON cso.timestamp_number = csd.timestamp_number
+            LEFT JOIN clc_stock_detail csd
+            ON cso.stock_detail_id = csd.id
             AND cso.clinic_id = csd.clinic_id
             AND cso.medicine_id = csd.medicine_id
             LEFT JOIN (
@@ -401,55 +416,58 @@
         SELECT
             cpi.prescription_id AS store_order_no,
             '99999999' AS mis_no,
-            states AS settledstatus,
-            cpi.price AS total_amt,
-            ifnull( ids.ordinate_total_score, 0 ) AS insurance_amt,
+            cpi.states AS settledstatus,
+            ROUND(cpi.price,2) AS total_amt,
+            ifnull( ROUND(ids.ordinate_total_score,2), '0.00' ) AS insurance_amt,
             cso.doctor_name AS operater,
-            SUBSTR( cso.stock_date, 1, 10 ) AS sale_date,
-            cso.stock_date AS sale_time,
+            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,
-            ccm.medicine_name AS store_medicine_name,
-        IF
-            ( length( ccm.med_ins_backup_id ) > 0, ccm.med_ins_backup_id, ccm.medicine_id ) AS store_medicine_code,
+            cso.medicine_name AS store_medicine_name,
+            cso.med_ins_backup_id AS store_medicine_code,
             '' AS plat_item_code,
             '' AS plat_item_name,
-            idm.med_ins_backup_id AS item_code,
-            idm.insurance_medicine_name AS item_name,
-            '0000000000000' AS store_precord_code,
-            '0000000000000' AS store_storage_code,
+            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,
+            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,
-            ifnull( 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,
-            " " AS model,
-            csd.stock_batch_number AS batch_no,
-            csd.create_time AS manufacture_time,
+            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,
+            '0000000000000' AS model,
+            if(ifnull(csd.stock_batch_number,'')='','0000000000000',csd.stock_batch_number) as batch_no,
+            SUBSTR( csd.stock_date, 1, 10) AS manufacture_time,
             csd.medicine_deadline AS medicine_deadline,
-            '00000000' AS bar_code,
-            "" AS regist_no,
-            csd.stock_channel AS delivery_company,
+            '0000000000000' AS bar_code,
+            '99999999' AS regist_no,
+            if(ifnull(csd.stock_channel,'')='','999999999',csd.stock_channel) as delivery_company,
             "999999999" AS distributor,
-            csd.stock_bid AS price,
-            idm.sale_price AS retail_price,
+            ROUND(csd.stock_bid,2) AS price,
+            ROUND(cso.retail_price,2) AS retail_price,
             cso.change_number AS num,
-            cso.if_piece AS is_unpacking
+            '1' as is_unpacking,
+            now() as query_time
         FROM
-            clc_stock_outbound cso
-            LEFT JOIN clc_prescription_info cpi ON cpi.prescription_id = cso.prescription_id
+            clc_china_stock_outbound cso
+            LEFT JOIN clc_prescription_info cpi
+            ON cpi.prescription_id = cso.prescription_id
             AND cso.clinic_id = cpi.clinic_id
-            LEFT JOIN clc_china_medicine ccm ON cso.medicine_id = ccm.medicine_id
+            LEFT JOIN clc_china_medicine ccm
+            ON cso.medicine_id = ccm.medicine_id
             AND cso.clinic_id = ccm.clinic_id
-            LEFT JOIN ins_d_medicine idm ON cso.medicine_id = idm.medicine_id
+            LEFT JOIN ins_d_medicine idm
+            ON cso.medicine_id = idm.medicine_id
             AND cso.clinic_id = idm.clinic_id
-            LEFT JOIN clc_stock_detail csd ON cso.timestamp_number = csd.timestamp_number
+            LEFT JOIN clc_china_stock_profit csd
+            ON cso.stock_detail_id = csd.id
             AND cso.clinic_id = csd.clinic_id
-            AND cso.medicine_id = csd.medicine_id
             LEFT JOIN (
             SELECT
                 t.clinic_id,