QueryStatusHandler.java 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package com.ydtech.modules.xxl.handler;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.xxl.job.core.handler.annotation.XxlJob;
  4. import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
  5. import com.ydtech.modules.order.components.ConfigureParametersComponents;
  6. import com.ydtech.modules.order.components.InsCrawlerOrderComponents;
  7. import com.ydtech.modules.order.components.ZhongmeiRequestApiComponents;
  8. import com.ydtech.modules.order.components.dajia.DaJiaRequestApiComponents;
  9. import com.ydtech.modules.order.components.gouren.GuorenRequestApiComponent;
  10. import com.ydtech.modules.order.components.huatai.HuaTaiRequestApiComponents;
  11. import com.ydtech.modules.order.components.yongcheng.YongchengRequestApiComponents;
  12. import com.ydtech.modules.order.components.zijin.ZijinRequestApiComponents;
  13. import com.ydtech.modules.order.dao.InsOrdersMapper;
  14. import com.ydtech.modules.order.entity.InsOrders;
  15. import com.ydtech.modules.order.entity.InsOrdersTrack;
  16. import com.ydtech.modules.order.service.InsOrdersTrackService;
  17. import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
  18. import com.ydtech.modules.protocol.service.PtlCrawlerApiService;
  19. import com.ydtech.modules.xxl.mapper.XxlInsAreaCompanyMapper;
  20. import com.ydtech.modules.xxl.model.InsAreaCompany;
  21. import com.ydtech.modules.xxl.model.QueryStatusResult;
  22. import com.ydtech.modules.xxl.service.BaseQueryStatusService;
  23. import com.ydtech.modules.xxl.factory.QueryStatusFactory;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Component;
  26. import java.time.Duration;
  27. import java.time.LocalDateTime;
  28. import java.time.format.DateTimeFormatter;
  29. import java.util.HashMap;
  30. import java.util.List;
  31. import java.util.Random;
  32. /**
  33. * 状态查询 并更新内部状态 定时任务
  34. */
  35. @Component
  36. public class QueryStatusHandler {
  37. @Autowired
  38. InsOrdersMapper insOrdersMapper;
  39. @Autowired
  40. XxlInsAreaCompanyMapper insAreaCompanyMapper;
  41. @Autowired
  42. ConfigureParametersComponents configureParametersComponents;
  43. @Autowired
  44. DaJiaRequestApiComponents daJiaRequestApiComponents;
  45. @Autowired
  46. YongchengRequestApiComponents yongchengRequestApiComponents;
  47. @Autowired
  48. GuorenRequestApiComponent guorenRequestApiComponent;
  49. @Autowired
  50. HuaTaiRequestApiComponents huaTaiRequestApiComponents;
  51. @Autowired
  52. ZhongmeiRequestApiComponents zhongmeiRequestApiComponents;
  53. @Autowired
  54. ZijinRequestApiComponents zijinRequestApiComponents;
  55. @Autowired
  56. InsCrawlerOrderComponents insCrawlerOrderComponents;
  57. @Autowired
  58. PtlCrawlerApiService ptlCrawlerApiService;
  59. @Autowired
  60. PtlAgreementAttributionService ptlAgreementAttributionService;
  61. @Autowired
  62. InsOrdersTrackService insOrdersTrackService;
  63. @XxlJob("queryStatusHandler")
  64. public void queryStatus() {
  65. Random random = new Random();
  66. HashMap<String, Object> components = getComponents();
  67. HashMap<String, String> time = get24HourTime();
  68. //获取24小时内未支付的订单
  69. List<InsAreaCompany> noPayList = insAreaCompanyMapper.getNoPayList(time.get("startTime"), time.get("endTime"));
  70. noPayList.forEach(insAreaCompany -> {
  71. if (insAreaCompany.getAgreementId() != null) {
  72. //实例化
  73. try {
  74. //添加延迟
  75. Thread.sleep((random.nextInt(5) + 1) * 1000);
  76. BaseQueryStatusService queryStatusService = QueryStatusFactory.getQueryStatusService(components, insAreaCompany.getCompanyId());
  77. if (queryStatusService != null) {
  78. QueryStatusResult queryStatusResult = queryStatusService.queryStatus(insAreaCompany);
  79. if (queryStatusResult.getStatus()) {
  80. //更新 ins_area_company
  81. insAreaCompany.setInsideOrderStatus(Integer.parseInt(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode()));
  82. insAreaCompany.setInsidePayTime(queryStatusResult.getPayTime());
  83. //设置支付时间
  84. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  85. LocalDateTime dateTime = LocalDateTime.parse(queryStatusResult.getPayTime(), formatter);
  86. insAreaCompany.setPayDate(dateTime);
  87. //设置状态为已承保
  88. insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
  89. insAreaCompanyMapper.updateInsideOrder(insAreaCompany);
  90. InsOrders insOrders = insOrdersMapper.selectOne(new LambdaQueryWrapper<InsOrders>().eq(InsOrders::getOrderno, insAreaCompany.getOrderno()));
  91. //设置主订单为已承保
  92. insOrders.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
  93. insOrdersMapper.updateStatus(insOrders.getOrderno(),InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
  94. //添加轨迹信息
  95. InsOrdersTrack insOrdersTrack = new InsOrdersTrack();
  96. insOrdersTrack.setOrderNo(insAreaCompany.getOrderno());
  97. insOrdersTrack.setInsCompany(insAreaCompany.getInscompany());
  98. insOrdersTrack.setCompanyId(insAreaCompany.getCompanyId());
  99. insOrdersTrack.setSuborder(insAreaCompany.getId());
  100. insOrdersTrack.setOrderStatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
  101. insOrdersTrack.setOperatorId("admin");
  102. insOrdersTrack.setOperator("自动操作");
  103. insOrdersTrack.setCreateTime(LocalDateTime.now());
  104. insOrdersTrackService.save(insOrdersTrack);
  105. }
  106. }
  107. } catch (Exception e) {
  108. e.printStackTrace();
  109. }
  110. }
  111. });
  112. }
  113. private HashMap<String, Object> getComponents() {
  114. HashMap<String, Object> components = new HashMap<>();
  115. components.put("configureParametersComponents", configureParametersComponents);
  116. components.put("daJiaRequestApiComponents", daJiaRequestApiComponents);
  117. components.put("yongchengRequestApiComponents", yongchengRequestApiComponents);
  118. components.put("guorenRequestApiComponent", guorenRequestApiComponent);
  119. components.put("huaTaiRequestApiComponents", huaTaiRequestApiComponents);
  120. components.put("zhongmeiRequestApiComponents", zhongmeiRequestApiComponents);
  121. components.put("zijinRequestApiComponents", zijinRequestApiComponents);
  122. components.put("insCrawlerOrderComponents", insCrawlerOrderComponents);
  123. components.put("ptlCrawlerApiService", ptlCrawlerApiService);
  124. components.put("ptlAgreementAttributionService", ptlAgreementAttributionService);
  125. return components;
  126. }
  127. private HashMap<String, String> get24HourTime() {
  128. HashMap<String, String> components = new HashMap<>();
  129. // 获取当前时间
  130. LocalDateTime currentTime = LocalDateTime.now();
  131. // 获取前24小时的时间
  132. LocalDateTime previous24Hours = currentTime.minus(Duration.ofHours(24));
  133. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  134. LocalDateTime current = LocalDateTime.now();
  135. components.put("startTime", previous24Hours.format(formatter));
  136. components.put("endTime", current.format(formatter));
  137. return components;
  138. }
  139. }