OrderBaseSchedule.java 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package com.gree.mall.manager.schedule;
  2. import cn.hutool.core.date.DateUtil;
  3. import com.github.binarywang.wxpay.exception.WxPayException;
  4. import com.gree.mall.manager.enums.workorder.OrderBaseStatusEnum;
  5. import com.gree.mall.manager.logic.common.WechatLogic;
  6. import com.gree.mall.manager.logic.workorder.OrderBaseLogic;
  7. import com.gree.mall.manager.plus.entity.PgOrderBase;
  8. import com.gree.mall.manager.plus.entity.SettlementOrder;
  9. import com.gree.mall.manager.plus.service.PgOrderBaseService;
  10. import com.gree.mall.manager.plus.service.SettlementOrderService;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
  14. import org.springframework.scheduling.annotation.Scheduled;
  15. import org.springframework.stereotype.Component;
  16. import org.springframework.transaction.annotation.Transactional;
  17. import org.springframework.util.CollectionUtils;
  18. import java.util.Date;
  19. import java.util.List;
  20. import java.util.stream.Collectors;
  21. /**
  22. * 工单相关定时任务
  23. * @author :lijh
  24. * @description:TODO
  25. * @date :2024/4/26 14:12
  26. */
  27. @ConditionalOnProperty(name = "schedule.enable", havingValue = "true", matchIfMissing = true)
  28. @Component
  29. @Slf4j
  30. public class OrderBaseSchedule {
  31. @Autowired
  32. OrderBaseLogic orderBaseLogic;
  33. @Autowired
  34. PgOrderBaseService pgOrderBaseService;
  35. @Autowired
  36. SettlementOrderService settlementOrderService;
  37. @Autowired
  38. WechatLogic wechatLogic;
  39. /**
  40. * 生成抢单通知
  41. */
  42. @Transactional
  43. @Scheduled(fixedDelay = 35 * 1000)
  44. public void task(){
  45. //抢单的通知,通知给当前网点的所有师傅
  46. List<PgOrderBase> list = pgOrderBaseService.lambdaQuery()
  47. .eq(PgOrderBase::getOrderStatus,OrderBaseStatusEnum.DQD.getKey())
  48. .eq(PgOrderBase::getIsQd, true)
  49. .eq(PgOrderBase::getIsQdNotice, false)
  50. .ge(PgOrderBase::getCreateTime, DateUtil.beginOfDay(new Date()))
  51. .last("limit 1000")
  52. .list();
  53. for(PgOrderBase orderBase : list) {
  54. orderBaseLogic.addQdNotice(orderBase);
  55. }
  56. List<String> orderBaseIds = list.stream().map(PgOrderBase::getId).collect(Collectors.toList());
  57. if(CollectionUtils.isEmpty(orderBaseIds)){
  58. return;
  59. }
  60. pgOrderBaseService.lambdaUpdate().set(PgOrderBase::getIsQdNotice,true).in(PgOrderBase::getId,orderBaseIds).update();
  61. }
  62. /**
  63. * 每天五点结算所有结算单
  64. */
  65. @Transactional
  66. //@Scheduled(cron = "0 0 17 * * ?")
  67. @Scheduled(fixedDelay = 30 * 1000)
  68. public void fenzhang() throws WxPayException {
  69. List<SettlementOrder> settlementOrders = settlementOrderService.lambdaQuery().eq(SettlementOrder::getStatus, "WAIT").list();
  70. for (SettlementOrder settlementOrder : settlementOrders) {
  71. wechatLogic.shareSettlementAmount(settlementOrder);
  72. }
  73. }
  74. }