@Component
@Slf4j
public class CheckTimeJob {
@Resource
ScheduleCheckService scheduleCheckService;
@Resource
ComplainCheckService complainCheckService;
@XxlJob("checkTime")
public void checkTimeJob() {
List<ThemisAgingCheck> themisAgingChecks = scheduleCheckService.getPendCheck(1, 200);
int shardIndex = XxlJobHelper.getShardIndex();
if (CollUtil.isNotEmpty(themisAgingChecks)) {
log.info("查找并溢出单子数量,{}", themisAgingChecks.size());
//如果有 正在考核的 并超时的单子 开始溢出
for (ThemisAgingCheck themisAgingCheck : themisAgingChecks) {
int shardLong = (int) (Long.parseLong(themisAgingCheck.getComplainId()) % XxlJobHelper.getShardTotal());
String complainId = themisAgingCheck.getComplainId();
log.info("CheckTimeJob--CurrentShardLong:{},Total:{},CurrentIndex:{},ComplainId:{}",
shardLong, XxlJobHelper.getShardTotal(), shardIndex, themisAgingCheck.getComplainId());
if (StringUtils.isNotBlank(complainId) && shardIndex == shardLong) {
long start = System.currentTimeMillis();
log.info("Process overflow start...");
try {
//验证时效超时是否重复 如果重复 时效无效化 如果不重复继续执行
String actionTypeByRuleType = OverFlowActionEnum.getActionTypeByRuleType(themisAgingCheck.getRuleType());
//过滤溪鸟单
if (themisAgingCheck.getBusinessType().intValue() == 11
|| CheckRuleTypeEnum.REMINDER.getType().equals(themisAgingCheck.getRuleType())
|| complainCheckService.replyActionException(themisAgingCheck.getCheckTime(), themisAgingCheck.getComplainId(), actionTypeByRuleType, themisAgingCheck.getCheckSiteId())) {
//不重复
complainCheckService.overFlow(themisAgingCheck);
} else {
//重复
themisAgingCheck.setCheckStatus(2);
complainCheckService.updateCheck(themisAgingCheck);
}
} catch (Exception e) {
log.error("checkTimeJob Exception·········complainId is {},{}", complainId, ExceptionUtils.getStackTrace(e));
}
log.info("Process overflow end, cost time:{}s", (System.currentTimeMillis() - start) / 1000);
}
}
}
XxlJobHelper.handleSuccess();
}
}
Xxljob示例
最新推荐文章于 2024-05-16 10:23:10 发布