package com.ydtech.modules.xxl.handler; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.xxl.job.core.handler.annotation.XxlJob; import com.ydtech.constants.enums.dict.InsOrderStatusEnum; import com.ydtech.modules.order.components.ConfigureParametersComponents; import com.ydtech.modules.order.components.InsCrawlerOrderComponents; import com.ydtech.modules.order.components.ZhongmeiRequestApiComponents; import com.ydtech.modules.order.components.dajia.DaJiaRequestApiComponents; import com.ydtech.modules.order.components.gouren.GuorenRequestApiComponent; import com.ydtech.modules.order.components.huatai.HuaTaiRequestApiComponents; import com.ydtech.modules.order.components.yongcheng.YongchengRequestApiComponents; import com.ydtech.modules.order.components.zijin.ZijinRequestApiComponents; import com.ydtech.modules.order.dao.InsOrdersMapper; import com.ydtech.modules.order.entity.InsOrders; import com.ydtech.modules.order.entity.InsOrdersTrack; import com.ydtech.modules.order.service.InsOrdersTrackService; import com.ydtech.modules.protocol.service.PtlAgreementAttributionService; import com.ydtech.modules.protocol.service.PtlCrawlerApiService; import com.ydtech.modules.xxl.mapper.XxlInsAreaCompanyMapper; import com.ydtech.modules.xxl.model.InsAreaCompany; import com.ydtech.modules.xxl.model.QueryStatusResult; import com.ydtech.modules.xxl.service.BaseQueryStatusService; import com.ydtech.modules.xxl.factory.QueryStatusFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.time.Duration; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.List; import java.util.Random; /** * 状态查询 并更新内部状态 定时任务 */ @Component public class QueryStatusHandler { @Autowired InsOrdersMapper insOrdersMapper; @Autowired XxlInsAreaCompanyMapper insAreaCompanyMapper; @Autowired ConfigureParametersComponents configureParametersComponents; @Autowired DaJiaRequestApiComponents daJiaRequestApiComponents; @Autowired YongchengRequestApiComponents yongchengRequestApiComponents; @Autowired GuorenRequestApiComponent guorenRequestApiComponent; @Autowired HuaTaiRequestApiComponents huaTaiRequestApiComponents; @Autowired ZhongmeiRequestApiComponents zhongmeiRequestApiComponents; @Autowired ZijinRequestApiComponents zijinRequestApiComponents; @Autowired InsCrawlerOrderComponents insCrawlerOrderComponents; @Autowired PtlCrawlerApiService ptlCrawlerApiService; @Autowired PtlAgreementAttributionService ptlAgreementAttributionService; @Autowired InsOrdersTrackService insOrdersTrackService; @XxlJob("queryStatusHandler") public void queryStatus() { Random random = new Random(); HashMap components = getComponents(); HashMap time = get24HourTime(); //获取24小时内未支付的订单 List noPayList = insAreaCompanyMapper.getNoPayList(time.get("startTime"), time.get("endTime")); noPayList.forEach(insAreaCompany -> { if (insAreaCompany.getAgreementId() != null) { //实例化 try { //添加延迟 Thread.sleep((random.nextInt(5) + 1) * 1000); BaseQueryStatusService queryStatusService = QueryStatusFactory.getQueryStatusService(components, insAreaCompany.getCompanyId()); if (queryStatusService != null) { QueryStatusResult queryStatusResult = queryStatusService.queryStatus(insAreaCompany); if (queryStatusResult.getStatus()) { //更新 ins_area_company insAreaCompany.setInsideOrderStatus(Integer.parseInt(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode())); insAreaCompany.setInsidePayTime(queryStatusResult.getPayTime()); //设置支付时间 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime dateTime = LocalDateTime.parse(queryStatusResult.getPayTime(), formatter); insAreaCompany.setPayDate(dateTime); //设置状态为已承保 insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode()); insAreaCompanyMapper.updateInsideOrder(insAreaCompany); InsOrders insOrders = insOrdersMapper.selectOne(new LambdaQueryWrapper().eq(InsOrders::getOrderno, insAreaCompany.getOrderno())); //设置主订单为已承保 insOrders.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode()); insOrdersMapper.updateStatus(insOrders.getOrderno(),InsOrderStatusEnum.ACCEPT_INSURANCE.getCode()); //添加轨迹信息 InsOrdersTrack insOrdersTrack = new InsOrdersTrack(); insOrdersTrack.setOrderNo(insAreaCompany.getOrderno()); insOrdersTrack.setInsCompany(insAreaCompany.getInscompany()); insOrdersTrack.setCompanyId(insAreaCompany.getCompanyId()); insOrdersTrack.setSuborder(insAreaCompany.getId()); insOrdersTrack.setOrderStatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode()); insOrdersTrack.setOperatorId("admin"); insOrdersTrack.setOperator("自动操作"); insOrdersTrack.setCreateTime(LocalDateTime.now()); insOrdersTrackService.save(insOrdersTrack); } } } catch (Exception e) { e.printStackTrace(); } } }); } private HashMap getComponents() { HashMap components = new HashMap<>(); components.put("configureParametersComponents", configureParametersComponents); components.put("daJiaRequestApiComponents", daJiaRequestApiComponents); components.put("yongchengRequestApiComponents", yongchengRequestApiComponents); components.put("guorenRequestApiComponent", guorenRequestApiComponent); components.put("huaTaiRequestApiComponents", huaTaiRequestApiComponents); components.put("zhongmeiRequestApiComponents", zhongmeiRequestApiComponents); components.put("zijinRequestApiComponents", zijinRequestApiComponents); components.put("insCrawlerOrderComponents", insCrawlerOrderComponents); components.put("ptlCrawlerApiService", ptlCrawlerApiService); components.put("ptlAgreementAttributionService", ptlAgreementAttributionService); return components; } private HashMap get24HourTime() { HashMap components = new HashMap<>(); // 获取当前时间 LocalDateTime currentTime = LocalDateTime.now(); // 获取前24小时的时间 LocalDateTime previous24Hours = currentTime.minus(Duration.ofHours(24)); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime current = LocalDateTime.now(); components.put("startTime", previous24Hours.format(formatter)); components.put("endTime", current.format(formatter)); return components; } }