OrderStepServiceImpl.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package com.dderp.business.service.flycat;
  2. import com.dderp.common.api.flycat.OrderSearchService;
  3. import com.dderp.common.api.flycat.OrderStepService;
  4. import com.dderp.common.entity.order.BusinessOrder;
  5. import com.dySweetFishPlugin.elasticsearch.ESClient;
  6. import com.dderp.common.api.SupplierInitService;
  7. import com.dderp.common.base.BaseService;
  8. import com.dderp.common.datas.ESKeys;
  9. import com.dderp.common.entity.order.OrderStep;
  10. import com.dderp.common.entity.site.ERPTokenUser;
  11. import com.sweetfish.convert.json.JsonConvert;
  12. import com.sweetfish.service.Local;
  13. import com.sweetfish.service.RetResult;
  14. import com.sweetfish.util.AnyValue;
  15. import com.sweetfish.util.AutoLoad;
  16. import com.sweetfish.util.ResourceType;
  17. import org.apache.commons.lang3.StringUtils;
  18. import org.elasticsearch.index.query.QueryBuilders;
  19. import org.elasticsearch.search.sort.SortBuilders;
  20. import org.elasticsearch.search.sort.SortOrder;
  21. import org.rex.RMap;
  22. import javax.annotation.Resource;
  23. import java.time.Instant;
  24. import java.util.ArrayList;
  25. import java.util.Arrays;
  26. import java.util.Date;
  27. import java.util.List;
  28. import java.util.stream.Collectors;
  29. /**
  30. * Created by jlutt on 2022-08-23
  31. * 订单脚印服务
  32. *
  33. * @author jlutt
  34. */
  35. @AutoLoad(false)
  36. @Local
  37. @ResourceType(OrderStepService.class)
  38. public class OrderStepServiceImpl extends BaseService implements OrderStepService {
  39. @Resource
  40. private OrderSearchService orderSearchService;
  41. @Resource
  42. ESClient esClient;
  43. @Resource
  44. JsonConvert jsonConvert;
  45. @Resource
  46. SupplierInitService supplierService;
  47. @Override
  48. public void init(AnyValue config) {
  49. super.init(config);
  50. }
  51. /**
  52. * 订单结构转订单脚印结构
  53. *
  54. * @param idOrder 订单
  55. * @param workMemo 备注
  56. * @param workExplain 描述
  57. * @param currentUser 当前用户
  58. * @return 脚印
  59. */
  60. @Override
  61. public OrderStep parseOrderStep(long idOrder, String workMemo, String workExplain, ERPTokenUser currentUser) {
  62. Date now = Date.from(Instant.now());
  63. return OrderStep.newBuilder()
  64. .idOrder(idOrder)
  65. .idWorkMan(currentUser.getId())
  66. .workMan(currentUser.getUserName())
  67. .workMemo(workMemo)
  68. .workExplain(workExplain)
  69. .workTime(now)
  70. .workTimeLong(now.getTime())
  71. .build();
  72. }
  73. /**
  74. * 用于版工序反馈等需要批量写入订单脚印的场景
  75. *
  76. * @param printOrders 订单信息列表
  77. * @param workMemo 备注
  78. * @param workExplain 描述
  79. * @param currentUser 当前用户
  80. * @return List<OrderStep>
  81. */
  82. @Override
  83. public List<OrderStep> parseOrderSteps(List<BusinessOrder> printOrders, String workMemo, String workExplain, ERPTokenUser currentUser) {
  84. Date now = Date.from(Instant.now());
  85. return printOrders.stream().map((x) -> OrderStep.newBuilder()
  86. .idOrder(x.getId())
  87. .idWorkMan(currentUser.getId())
  88. .workMan(currentUser.getUserName())
  89. .workMemo(workMemo)
  90. .workExplain(workExplain)
  91. .workTime(now)
  92. .workTimeLong(now.getTime())
  93. .build()).collect(Collectors.toList());
  94. }
  95. @Override
  96. public List<OrderStep> parseOrderSteps(String idOrderStr, String workMemo, String workExplain, ERPTokenUser currentUser) {
  97. Date now = Date.from(Instant.now());
  98. List<OrderStep> orderSteps = new ArrayList<>();
  99. if (StringUtils.isBlank(idOrderStr)) return orderSteps;
  100. return Arrays.stream(idOrderStr.split(",")).map((idOrder) -> OrderStep.newBuilder()
  101. .idOrder(Long.parseLong(idOrder))
  102. .idWorkMan(currentUser.getId())
  103. .workMan(currentUser.getUserName())
  104. .workMemo(workMemo)
  105. .workExplain(workExplain)
  106. .workTime(now)
  107. .workTimeLong(now.getTime())
  108. .build()).collect(Collectors.toList());
  109. }
  110. /**
  111. * 获取订单脚印
  112. *
  113. * @param idOrder 订单id
  114. * @param currentUser 当前用户
  115. * @return 脚印list
  116. */
  117. @Override
  118. @SuppressWarnings({"unchecked"})
  119. public RetResult<List<OrderStep>> getOrderStepList(long idOrder, ERPTokenUser currentUser, String dataSourceId, long supplierCode) {
  120. if (idOrder < 0) {
  121. return RetResult.<List<OrderStep>>errorT().retcode(-1).retinfo("未传入订单id");
  122. }
  123. RetResult<BusinessOrder> orderResult = orderSearchService.getBusinessOrder(idOrder, currentUser, dataSourceId, supplierCode, null);
  124. if (!orderResult.isSuccess()) {
  125. return RetResult.error().retcode(-1).retinfo("未找到id为" + idOrder + "的订单");
  126. }
  127. BusinessOrder esOrder = orderResult.getResult();
  128. RMap<String, String> collectionData = new RMap<>();
  129. collectionData.put("orderCode", esOrder.getOrderCode());
  130. collectionData.put("orderName", esOrder.getOrderName());
  131. List<OrderStep> stepList = searchESList(esClient, jsonConvert,
  132. OrderStep.class,
  133. null,
  134. ((sd) -> QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_DELIVER_ORDER_STEP_TYPE))
  135. .must(QueryBuilders.termQuery("idOrder", idOrder))),
  136. null,
  137. supplierService.getDateYearESIndex(supplierCode, ESKeys.ES_DELIVER_ORDER_STEP_INDEX, 1),
  138. () -> SortBuilders.fieldSort("workTimeLong").order(SortOrder.ASC));
  139. return RetResult.success().retcode(0).retinfo("success").result(stepList).attachRMap(collectionData);
  140. }
  141. }