MedicineStorageService.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. package com.miyzh.service;
  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import com.github.pagehelper.PageHelper;
  5. import com.github.pagehelper.PageInfo;
  6. import com.miyzh.dao.MedicineStorageDao;
  7. import com.miyzh.entity.Clinic;
  8. import com.miyzh.entity.MedicineStorage;
  9. import com.miyzh.entity.MedicineStorageTemp;
  10. import com.miyzh.entity.dto.MedicineStorageDto;
  11. import com.miyzh.utils.RestTemplateUtil;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.springframework.beans.BeanUtils;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.beans.factory.annotation.Value;
  16. import org.springframework.scheduling.annotation.Async;
  17. import org.springframework.stereotype.Service;
  18. import java.util.List;
  19. import java.util.Map;
  20. import java.util.stream.Collectors;
  21. /**
  22. * 入库
  23. */
  24. @Slf4j
  25. @Service
  26. public class MedicineStorageService {
  27. @Autowired
  28. private MedicineStorageDao medicineStorageDao;
  29. @Value ("${postApi.sorageUrl}")
  30. private String url;
  31. @Value("${postApi.pageSize}")
  32. private int pageSize;
  33. private class StorageType {
  34. private static final String PUR = "1"; //采购入库
  35. private static final String OTHER = "2"; //其他
  36. private static final String INBOUND = "3"; //销售退货
  37. private static final String CHI_MED_INBOUND = "4"; // 退溢
  38. }
  39. private static final String MED_PUR = "1"; //西药采购入库
  40. private static final String CHI_MED_PUR = "2"; //中药采购入库
  41. private static final String MED_MED_INBOUND = "3"; //西药销售退回入库
  42. private static final String CHI_MED_INBOUND = "4"; //中药销售退回
  43. private static final String MED_INV = "5"; //西药盘盈入库
  44. private static final String CHI_MED_INV = "6"; //中药盘盈入库
  45. @Async
  46. public void uploadMedicine(List<Clinic> clinicList, String flag) throws InterruptedException, JsonProcessingException {
  47. long startTime = System.currentTimeMillis();
  48. PageInfo<MedicineStorageTemp> page = new PageInfo<>();
  49. for(Clinic clinic : clinicList) {
  50. switch (flag) {
  51. case MED_PUR:
  52. page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
  53. medicineStorageDao.listMedicinePurchase(clinic.getClinicId());
  54. });
  55. break;
  56. case CHI_MED_PUR:
  57. page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
  58. medicineStorageDao.listChinaMedicinePurchase(clinic.getClinicId());
  59. });
  60. break;
  61. case MED_MED_INBOUND:
  62. page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
  63. medicineStorageDao.listMedicineOutbound(clinic.getClinicId());
  64. });
  65. break;
  66. case CHI_MED_INBOUND:
  67. page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
  68. medicineStorageDao.listChinaMedicineOutbound(clinic.getClinicId());
  69. });
  70. break;
  71. case MED_INV:
  72. page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
  73. medicineStorageDao.listMedicineInventory(clinic.getClinicId());
  74. });
  75. break;
  76. case CHI_MED_INV:
  77. page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
  78. medicineStorageDao.listChinaMedicineInventory(clinic.getClinicId());
  79. });
  80. break;
  81. }
  82. if (page.getTotal() == 0) {
  83. continue;
  84. }
  85. Map<String, List<MedicineStorageTemp>> map = page.getList()
  86. .stream()
  87. .collect(Collectors.groupingBy(MedicineStorageTemp::getStoreStorageCode));
  88. for(Map.Entry<String, List<MedicineStorageTemp>> msMap:map.entrySet()){
  89. MedicineStorageDto medicineStorageDto = new MedicineStorageDto();
  90. medicineStorageDto.setStoreCode(clinic.getStoreCode());
  91. switch (flag) {
  92. case MED_PUR:
  93. case CHI_MED_PUR:
  94. medicineStorageDto.setStorePurchaseType("5");
  95. medicineStorageDto.setStorageType(StorageType.PUR);
  96. break;
  97. case MED_MED_INBOUND:
  98. case CHI_MED_INBOUND:
  99. medicineStorageDto.setStorageType(StorageType.INBOUND);
  100. break;
  101. case MED_INV:
  102. case CHI_MED_INV:
  103. medicineStorageDto.setStorageType(StorageType.CHI_MED_INBOUND);
  104. break;
  105. }
  106. medicineStorageDto.setStorePrecordCode("00000000");
  107. medicineStorageDto.setStorageMan(msMap.getValue().get(0).getStorageMan());
  108. medicineStorageDto.setStorageTime(msMap.getValue().get(0).getStorageTime());
  109. medicineStorageDto.setStoreCode(clinic.getStoreCode());
  110. medicineStorageDto.setStoreStorageCode(msMap.getKey());
  111. List<MedicineStorage> list = msMap.getValue()
  112. .stream()
  113. .map(MedicineStorageTemp::temp2MedSto)
  114. .collect(Collectors.toList());
  115. medicineStorageDto.setMedicineInfos(list);
  116. this.upload(medicineStorageDto);
  117. }
  118. if (page.getPages() > 1) {
  119. PageInfo<MedicineStorageTemp> page1 = new PageInfo<>();
  120. for(int i = 2; i <= page.getPages(); i++) {
  121. switch (flag) {
  122. case MED_PUR:
  123. page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
  124. medicineStorageDao.listMedicinePurchase(clinic.getClinicId());
  125. });
  126. break;
  127. case CHI_MED_PUR:
  128. page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
  129. medicineStorageDao.listChinaMedicinePurchase(clinic.getClinicId());
  130. });
  131. break;
  132. case MED_MED_INBOUND:
  133. page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
  134. medicineStorageDao.listMedicineOutbound(clinic.getClinicId());
  135. });
  136. break;
  137. case CHI_MED_INBOUND:
  138. page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
  139. medicineStorageDao.listChinaMedicineOutbound(clinic.getClinicId());
  140. });
  141. break;
  142. case MED_INV:
  143. page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
  144. medicineStorageDao.listMedicineInventory(clinic.getClinicId());
  145. });
  146. break;
  147. case CHI_MED_INV:
  148. page1 = PageHelper.startPage(i, pageSize).doSelectPageInfo(() -> {
  149. medicineStorageDao.listChinaMedicineInventory(clinic.getClinicId());
  150. });
  151. break;
  152. }
  153. Map<String, List<MedicineStorageTemp>> map1 = page1.getList()
  154. .stream()
  155. .collect(Collectors.groupingBy(MedicineStorageTemp::getStoreStorageCode));
  156. for(Map.Entry<String, List<MedicineStorageTemp>> msMap:map1.entrySet()){
  157. MedicineStorageDto medicineStorageDto = new MedicineStorageDto();
  158. medicineStorageDto.setStoreCode(clinic.getStoreCode());
  159. switch (flag) {
  160. case MED_PUR:
  161. case CHI_MED_PUR:
  162. medicineStorageDto.setStorePurchaseType("5");
  163. medicineStorageDto.setStorageType(StorageType.PUR);
  164. break;
  165. case MED_MED_INBOUND:
  166. case CHI_MED_INBOUND:
  167. medicineStorageDto.setStorageType(StorageType.INBOUND);
  168. break;
  169. case MED_INV:
  170. case CHI_MED_INV:
  171. medicineStorageDto.setStorageType(StorageType.CHI_MED_INBOUND);
  172. break;
  173. }
  174. medicineStorageDto.setStorePrecordCode("00000000");
  175. medicineStorageDto.setStorageMan(msMap.getValue().get(0).getStorageMan());
  176. medicineStorageDto.setStorageTime(msMap.getValue().get(0).getStorageTime());
  177. medicineStorageDto.setStoreCode(clinic.getStoreCode());
  178. medicineStorageDto.setStoreStorageCode(msMap.getKey());
  179. List<MedicineStorage> list = msMap.getValue()
  180. .stream()
  181. .map(MedicineStorageTemp::temp2MedSto)
  182. .collect(Collectors.toList());
  183. medicineStorageDto.setMedicineInfos(list);
  184. this.upload(medicineStorageDto);
  185. }
  186. }
  187. }
  188. };
  189. long syncTime = System.currentTimeMillis();
  190. log.info("1方法执行用时--{}", startTime - syncTime);
  191. };
  192. public void upload (Object o) throws JsonProcessingException {
  193. ObjectMapper objectMapper = new ObjectMapper();
  194. String params = objectMapper.writeValueAsString(o);
  195. System.out.println(objectMapper.writeValueAsString(RestTemplateUtil.postHttp(url, params)));
  196. }
  197. }