QueryStatusHandler.java 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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. //协议id不为空的数据
  72. if (insAreaCompany.getAgreementId() != null) {
  73. //实例化
  74. try {
  75. //添加延迟
  76. Thread.sleep((random.nextInt(5) + 1) * 1000);
  77. //根据保险公司编号id获取对应的承保接口的service
  78. BaseQueryStatusService queryStatusService = QueryStatusFactory.getQueryStatusService(components, insAreaCompany.getCompanyId());
  79. if (queryStatusService != null) {
  80. QueryStatusResult queryStatusResult = queryStatusService.queryStatus(insAreaCompany);
  81. if (queryStatusResult.getStatus()) {
  82. //更新 ins_area_company
  83. insAreaCompany.setInsideOrderStatus(Integer.parseInt(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode()));
  84. insAreaCompany.setInsidePayTime(queryStatusResult.getPayTime());
  85. //设置支付时间
  86. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  87. LocalDateTime dateTime = LocalDateTime.parse(queryStatusResult.getPayTime(), formatter);
  88. insAreaCompany.setPayDate(dateTime);
  89. //设置状态为已承保
  90. insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
  91. //更新外部表接口
  92. insAreaCompanyMapper.updateInsideOrder(insAreaCompany);
  93. //add by hxl 更新内部装状态
  94. insAreaCompanyMapper.updateInsideOrderNew(insAreaCompany);
  95. //查询订单更新为已承保状态
  96. InsOrders insOrders = insOrdersMapper.selectOne(new LambdaQueryWrapper<InsOrders>().eq(InsOrders::getOrderno, insAreaCompany.getOrderno()));
  97. //设置主订单为已承保 保险订单表
  98. insOrders.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
  99. insOrdersMapper.updateStatus(insOrders.getOrderno(),InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
  100. //添加轨迹信息
  101. InsOrdersTrack insOrdersTrack = new InsOrdersTrack();
  102. insOrdersTrack.setOrderNo(insAreaCompany.getOrderno());
  103. insOrdersTrack.setInsCompany(insAreaCompany.getInscompany());
  104. insOrdersTrack.setCompanyId(insAreaCompany.getCompanyId());
  105. insOrdersTrack.setSuborder(insAreaCompany.getId());
  106. insOrdersTrack.setOrderStatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
  107. insOrdersTrack.setOperatorId("admin");
  108. insOrdersTrack.setOperator("自动操作");
  109. insOrdersTrack.setCreateTime(LocalDateTime.now());
  110. insOrdersTrackService.save(insOrdersTrack);
  111. }
  112. }
  113. } catch (Exception e) {
  114. e.printStackTrace();
  115. }
  116. }
  117. });
  118. }
  119. private HashMap<String, Object> getComponents() {
  120. HashMap<String, Object> components = new HashMap<>();
  121. components.put("configureParametersComponents", configureParametersComponents);
  122. components.put("daJiaRequestApiComponents", daJiaRequestApiComponents);
  123. components.put("yongchengRequestApiComponents", yongchengRequestApiComponents);
  124. components.put("guorenRequestApiComponent", guorenRequestApiComponent);
  125. components.put("huaTaiRequestApiComponents", huaTaiRequestApiComponents);
  126. components.put("zhongmeiRequestApiComponents", zhongmeiRequestApiComponents);
  127. components.put("zijinRequestApiComponents", zijinRequestApiComponents);
  128. components.put("insCrawlerOrderComponents", insCrawlerOrderComponents);
  129. components.put("ptlCrawlerApiService", ptlCrawlerApiService);
  130. components.put("ptlAgreementAttributionService", ptlAgreementAttributionService);
  131. return components;
  132. }
  133. private HashMap<String, String> get24HourTime() {
  134. HashMap<String, String> components = new HashMap<>();
  135. // 获取当前时间
  136. LocalDateTime currentTime = LocalDateTime.now();
  137. // 获取前24小时的时间
  138. LocalDateTime previous24Hours = currentTime.minus(Duration.ofHours(24));
  139. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  140. LocalDateTime current = LocalDateTime.now();
  141. components.put("startTime", previous24Hours.format(formatter));
  142. components.put("endTime", current.format(formatter));
  143. return components;
  144. }
  145. }