AssemblePushAggregate.java 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. package com.diagbot.aggregate;
  2. import com.diagbot.dto.PushBaseDTO;
  3. import com.diagbot.dto.PushDTO;
  4. import com.diagbot.facade.DiseaseConfigFacade;
  5. import com.diagbot.facade.DrugConfigFacade;
  6. import com.diagbot.facade.LisConfigFacade;
  7. import com.diagbot.facade.OperationConfigFacade;
  8. import com.diagbot.facade.PacsConfigFacade;
  9. import com.diagbot.util.ListUtil;
  10. import com.google.common.collect.Lists;
  11. import io.github.lvyahui8.spring.annotation.DataConsumer;
  12. import io.github.lvyahui8.spring.annotation.DataProvider;
  13. import io.github.lvyahui8.spring.annotation.InvokeParameter;
  14. import org.apache.commons.collections4.MapUtils;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Component;
  17. import java.util.ArrayList;
  18. import java.util.HashMap;
  19. import java.util.List;
  20. import java.util.Map;
  21. import java.util.stream.Collectors;
  22. /**
  23. * @Description:
  24. * @author: gaodm
  25. * @time: 2020/8/19 13:50
  26. */
  27. @Component
  28. public class AssemblePushAggregate {
  29. @Autowired
  30. private LisConfigFacade lisConfigFacade;
  31. @Autowired
  32. private PacsConfigFacade pacsConfigFacade;
  33. @Autowired
  34. private DiseaseConfigFacade diseaseConfigFacade;
  35. @Autowired
  36. private DrugConfigFacade drugConfigFacade;
  37. @Autowired
  38. private OperationConfigFacade operationConfigFacade;
  39. @DataProvider("assemblePushAll")
  40. public PushDTO assemblePushAll(
  41. @InvokeParameter("pushDTO") PushDTO data,
  42. @InvokeParameter("hospitalId") Long hospitalId,
  43. @DataConsumer("retLis") List<PushBaseDTO> retLis,
  44. @DataConsumer("retPacs") List<PushBaseDTO> retPacs,
  45. @DataConsumer("retDiagMap") Map<String, List<PushBaseDTO>> retDiagMap,
  46. @DataConsumer("retOperation") List<PushBaseDTO> retOperation,
  47. @DataConsumer("retDrug") List<PushBaseDTO> retDrug) {
  48. if (ListUtil.isNotEmpty(retLis)) {
  49. data.setLis(retLis);
  50. }
  51. if (ListUtil.isNotEmpty(retPacs)) {
  52. data.setPacs(retPacs);
  53. }
  54. if (MapUtils.isNotEmpty(retDiagMap)) {
  55. data.setDis(retDiagMap);
  56. }
  57. if (ListUtil.isNotEmpty(retOperation)) {
  58. data.setOperations(retOperation);
  59. }
  60. if (ListUtil.isNotEmpty(retDrug)) {
  61. data.setMedicines(retDrug);
  62. }
  63. return data;
  64. }
  65. @DataProvider("retLis")
  66. public List<PushBaseDTO> retLis(@InvokeParameter("pushDTO") PushDTO data,
  67. @InvokeParameter("hospitalId") Long hospitalId) {
  68. //检验
  69. List<PushBaseDTO> retLis = new ArrayList<>();
  70. if (ListUtil.isNotEmpty(data.getLis())) {
  71. retLis = data.getLis();
  72. List<String> uniqueNameList = retLis.stream()
  73. .map(i -> i.getName())
  74. .collect(Collectors.toList());
  75. Map<String, Map<String, Long>> uniqueNameMap
  76. = lisConfigFacade.getUniqueNameConfigMap(hospitalId, null, uniqueNameList);
  77. if (uniqueNameMap != null && uniqueNameMap.size() > 0) {
  78. retLis.forEach(item -> {
  79. if (uniqueNameMap.get(item.getName()) != null) {
  80. item.setHisNameList(new ArrayList<>(uniqueNameMap.get(item.getName()).keySet()));
  81. }
  82. });
  83. }
  84. }
  85. return retLis;
  86. }
  87. @DataProvider("retPacs")
  88. public List<PushBaseDTO> retPacs(@InvokeParameter("pushDTO") PushDTO data,
  89. @InvokeParameter("hospitalId") Long hospitalId) {
  90. //检查
  91. List<PushBaseDTO> retPacs = new ArrayList<>();
  92. if (ListUtil.isNotEmpty(data.getPacs())) {
  93. retPacs = data.getPacs();
  94. List<String> uniqueNameList = retPacs.stream()
  95. .map(i -> i.getName())
  96. .collect(Collectors.toList());
  97. Map<String, Map<String, Long>> uniqueNameMap
  98. = pacsConfigFacade.getUniqueNameConfigMap(hospitalId, null, uniqueNameList);
  99. if (uniqueNameMap != null && uniqueNameMap.size() > 0) {
  100. retPacs.forEach(item -> {
  101. if (uniqueNameMap.get(item.getName()) != null) {
  102. item.setHisNameList(new ArrayList<>(uniqueNameMap.get(item.getName()).keySet()));
  103. }
  104. });
  105. }
  106. }
  107. return retPacs;
  108. }
  109. @DataProvider("retDiagMap")
  110. public Map<String, List<PushBaseDTO>> retDiagMap(@InvokeParameter("pushDTO") PushDTO data,
  111. @InvokeParameter("hospitalId") Long hospitalId) {
  112. Map<String, List<PushBaseDTO>> retMap = new HashMap<>();
  113. if (data.getDis() != null && data.getDis().size() > 0) {
  114. retMap = data.getDis();
  115. List<String> uniqueNameList = Lists.newLinkedList();
  116. for (Map.Entry<String, List<PushBaseDTO>> entry : retMap.entrySet()) {
  117. if (ListUtil.isNotEmpty(entry.getValue())) {
  118. uniqueNameList.addAll(entry.getValue().stream()
  119. .map(i -> i.getName())
  120. .collect(Collectors.toList()));
  121. }
  122. }
  123. if (ListUtil.isNotEmpty(uniqueNameList)) {
  124. Map<String, Map<String, Long>> uniqueNameMap
  125. = diseaseConfigFacade.getUniqueNameConfigMap(hospitalId, null, uniqueNameList);
  126. for (Map.Entry<String, List<PushBaseDTO>> entry : retMap.entrySet()) {
  127. if (uniqueNameMap != null && uniqueNameMap.size() > 0) {
  128. entry.getValue().forEach(item -> {
  129. if (uniqueNameMap.get(item.getName()) != null) {
  130. item.setHisNameList(new ArrayList<>(uniqueNameMap.get(item.getName()).keySet()));
  131. }
  132. });
  133. }
  134. }
  135. }
  136. }
  137. return retMap;
  138. }
  139. @DataProvider("retOperation")
  140. public List<PushBaseDTO> retOperation(@InvokeParameter("pushDTO") PushDTO data,
  141. @InvokeParameter("hospitalId") Long hospitalId) {
  142. //手术
  143. List<PushBaseDTO> retOperation = new ArrayList<>();
  144. if (ListUtil.isNotEmpty(data.getOperations())) {
  145. retOperation = data.getOperations();
  146. List<String> uniqueNameList = retOperation.stream()
  147. .map(i -> i.getName())
  148. .collect(Collectors.toList());
  149. Map<String, Map<String, Long>> uniqueNameMap
  150. = operationConfigFacade.getUniqueNameConfigMap(hospitalId, null, uniqueNameList);
  151. if (uniqueNameMap != null && uniqueNameMap.size() > 0) {
  152. retOperation.forEach(item -> {
  153. if (uniqueNameMap.get(item.getName()) != null) {
  154. item.setHisNameList(new ArrayList<>(uniqueNameMap.get(item.getName()).keySet()));
  155. }
  156. });
  157. }
  158. }
  159. return retOperation;
  160. }
  161. @DataProvider("retDrug")
  162. public List<PushBaseDTO> retDrug(@InvokeParameter("pushDTO") PushDTO data,
  163. @InvokeParameter("hospitalId") Long hospitalId) {
  164. //药品
  165. List<PushBaseDTO> retDrug = new ArrayList<>();
  166. if (ListUtil.isNotEmpty(data.getMedicines())) {
  167. retDrug = data.getMedicines();
  168. List<String> uniqueNameList = retDrug.stream()
  169. .map(i -> i.getName())
  170. .collect(Collectors.toList());
  171. Map<String, Map<String, Long>> uniqueNameMap
  172. = drugConfigFacade.getUniqueNameConfigMap(hospitalId, null, uniqueNameList);
  173. if (uniqueNameMap != null && uniqueNameMap.size() > 0) {
  174. retDrug.forEach(item -> {
  175. if (uniqueNameMap.get(item.getName()) != null) {
  176. item.setHisNameList(new ArrayList<>(uniqueNameMap.get(item.getName()).keySet()));
  177. }
  178. });
  179. }
  180. }
  181. return retDrug;
  182. }
  183. }