LiveTask.java 6.7 KB

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