LiveTask.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. package com.fs.task;
  2. import com.fs.common.annotation.QuartzRunnable;
  3. import com.fs.erp.domain.ErpDeliverys;
  4. import com.fs.erp.domain.ErpOrderQuery;
  5. import com.fs.erp.dto.ErpOrderQueryRequert;
  6. import com.fs.erp.dto.ErpOrderQueryResponse;
  7. import com.fs.erp.service.FsJstAftersalePushService;
  8. import com.fs.erp.service.IErpOrderService;
  9. import com.fs.erp.utils.ErpContextHolder;
  10. import com.fs.live.utils.redis.RedisBatchHandler;
  11. import com.fs.live.domain.LiveAfterSales;
  12. import com.fs.live.domain.LiveOrder;
  13. import com.fs.live.service.*;
  14. import com.fs.store.domain.FsExpress;
  15. import com.fs.store.enums.OrderLogEnum;
  16. import com.fs.store.mapper.*;
  17. import com.fs.store.param.LiveAfterSalesAudit1Param;
  18. import com.fs.store.service.*;
  19. import org.apache.commons.collections4.CollectionUtils;
  20. import org.apache.commons.lang.ObjectUtils;
  21. import org.slf4j.Logger;
  22. import org.slf4j.LoggerFactory;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.scheduling.annotation.Scheduled;
  25. import org.springframework.stereotype.Component;
  26. import java.text.ParseException;
  27. import java.util.List;
  28. import static com.fs.live.utils.redis.RedisBatchHandler.CONSUME_INTERVAL;
  29. /**
  30. * 定时任务调度
  31. * @author fs
  32. */
  33. @Component("liveTask")
  34. public class LiveTask {
  35. Logger logger = LoggerFactory.getLogger(LiveTask.class);
  36. @Autowired
  37. private ILiveOrderService liveOrderService;
  38. @Autowired
  39. private ILiveAfterSalesService afterSalesService;
  40. @Autowired
  41. private IErpOrderService erpOrderService;
  42. @Autowired
  43. private IFsExpressService expressService;
  44. @Autowired
  45. private ILiveOrderLogsService orderLogsService;
  46. @Autowired
  47. private FsWarehousesMapper fsWarehousesMapper;
  48. @Autowired
  49. public FsJstAftersalePushService fsJstAftersalePushService;
  50. @Autowired
  51. public RedisBatchHandler redisBatchHandler;
  52. /**
  53. * 超时订单自动取消
  54. */
  55. @QuartzRunnable(name = "超时订单自动取消")
  56. public void orderCancel(){
  57. liveOrderService.orderCancel();
  58. }
  59. /**
  60. * 发货任务
  61. */
  62. @QuartzRunnable(name = "发货任务")
  63. public void deliveryOp() {
  64. List<LiveOrder> list = liveOrderService.selectDeliverPenddingData();
  65. for (LiveOrder order : list) {
  66. String orderCode = order.getOrderCode();
  67. ErpOrderQueryRequert request = new ErpOrderQueryRequert();
  68. request.setCode(order.getExtendOrderId());
  69. try {
  70. // 根据仓库code找erp
  71. if (com.fs.common.utils.StringUtils.isNotBlank(order.getStoreHouseCode())) {
  72. String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
  73. ErpContextHolder.setErpType(erp);
  74. }
  75. ErpOrderQueryResponse response = erpOrderService.getOrderLive(request);
  76. if (CollectionUtils.isNotEmpty(response.getOrders())) {
  77. for (ErpOrderQuery orderQuery : response.getOrders()) {
  78. if (CollectionUtils.isNotEmpty(orderQuery.getDeliverys())) {
  79. // 部分发货或者全部发货
  80. if (ObjectUtils.equals(orderQuery.getDelivery_state(), 1) || ObjectUtils.equals(orderQuery.getDelivery_state(), 2)) {
  81. orderLogsService.create(order.getOrderId(), OrderLogEnum.DELIVERY_GOODS.getValue(),
  82. OrderLogEnum.DELIVERY_GOODS.getDesc());
  83. for (ErpDeliverys delivery : orderQuery.getDeliverys()) {
  84. FsExpress express = expressService.selectFsExpressByOmsCode(delivery.getExpress_code());
  85. if (express == null) {
  86. logger.warn("当前express_code: {} 不存在!", delivery.getExpress_code());
  87. continue;
  88. }
  89. if (delivery.getDelivery()) {
  90. liveOrderService.deliveryOrder(orderCode, delivery.getMail_no(),
  91. delivery.getExpress_code(), delivery.getExpress_name());
  92. }
  93. }
  94. logger.info("订单 {} 发货信息同步成功", order.getOrderCode());
  95. }
  96. }
  97. }
  98. }
  99. } catch (Exception e) {
  100. logger.error(String.format("[发货任务]调用erp查询接口失败!原因: %s", e));
  101. }
  102. }
  103. }
  104. /**
  105. * 退款自动处理 24小时未审核自动审核通过 每小时执行一次
  106. */
  107. @QuartzRunnable(name = "直播售后自动审核")
  108. public void refundOp() {
  109. //获取所有退款申请
  110. List<LiveAfterSales> list = afterSalesService.selectLiveAfterSalesByDoAudit();
  111. if (list != null) {
  112. for (LiveAfterSales afterSales : list) {
  113. //仅退款
  114. // if (afterSales.getServiceType().equals(0)) {
  115. LiveAfterSalesAudit1Param audit1Param = new LiveAfterSalesAudit1Param();
  116. audit1Param.setSalesId(afterSales.getId());
  117. audit1Param.setOperator("平台");
  118. afterSalesService.audit1(audit1Param);
  119. // }
  120. }
  121. }
  122. }
  123. /**
  124. * 批量推管易
  125. * @throws ParseException 解析异常
  126. */
  127. @QuartzRunnable(name = "批量推管易")
  128. public void updateOrderItem() throws ParseException {
  129. List<Long> ids = liveOrderService.selectOrderIdByNoErp();
  130. for (Long id : ids) {
  131. try{
  132. liveOrderService.createOmsOrder(id);
  133. }catch (Exception e){
  134. logger.error("推送管易失败 {}",id,e);
  135. }
  136. }
  137. }
  138. /**
  139. * 同步物流状态
  140. */
  141. @QuartzRunnable(name = "直播同步物流状态")
  142. public void syncExpress() {
  143. List<Long> ids = liveOrderService.selectSyncExpressIds();
  144. for (Long id : ids) {
  145. liveOrderService.syncExpress(id);
  146. }
  147. }
  148. /**
  149. * 更新发货状态
  150. */
  151. @QuartzRunnable(name = "直播发货任务")
  152. public void updateExpress() {
  153. List<LiveOrder> list = liveOrderService.selectUpdateExpress();
  154. for (LiveOrder order : list) {
  155. try{
  156. liveOrderService.syncDeliveryOrder(order);
  157. }catch (Exception e) {
  158. logger.error("获取订单是否发货失败!原因: ",e);
  159. }
  160. }
  161. }
  162. /**
  163. * 更新发货状态
  164. */
  165. @Scheduled(fixedRate = CONSUME_INTERVAL)
  166. public void insertLiveTrralog() {
  167. redisBatchHandler.consumeBatchData();
  168. }
  169. }