package com.zy.acs.manager.core.scheduler;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.zy.acs.charge.ChargeCoreService;
|
import com.zy.acs.common.utils.RedisSupport;
|
import com.zy.acs.framework.common.Cools;
|
import com.zy.acs.manager.common.config.UplinkProperties;
|
import com.zy.acs.manager.core.integrate.wms.FaultReportService;
|
import com.zy.acs.manager.core.integrate.wms.TaskReportService;
|
import com.zy.acs.manager.core.service.ChargeService;
|
import com.zy.acs.manager.core.service.MainLockWrapService;
|
import com.zy.acs.manager.manager.entity.VehFaultRec;
|
import com.zy.acs.manager.manager.enums.VehFaultRecStateType;
|
import com.zy.acs.manager.manager.service.*;
|
import com.zy.acs.manager.system.service.ConfigService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import java.time.Instant;
|
import java.time.ZoneId;
|
import java.util.List;
|
|
|
@Slf4j
|
@Component
|
public class ReportUpScheduler {
|
|
private final RedisSupport redis = RedisSupport.defaultRedisSupport;
|
|
|
@Autowired
|
private ConfigService configService;
|
|
@Autowired
|
private VehFaultRecService vehFaultRecService;
|
@Autowired
|
private FaultReportService faultReportService;
|
|
|
@Scheduled(cron = "0/3 * * * * ? ")
|
private synchronized void reportFault() {
|
String reportFaultUrl = configService.getVal("reportFaultUrl", String.class);
|
if (Cools.isEmpty(reportFaultUrl)) {
|
return;
|
}
|
List<VehFaultRec> vehFaultRecList = vehFaultRecService.list((new LambdaQueryWrapper<VehFaultRec>().eq(VehFaultRec::getState, VehFaultRecStateType.PENDING).ge(VehFaultRec::getHappenTime, Instant.now().minusSeconds(180).atZone(ZoneId.systemDefault()).toLocalDateTime())));
|
if (Cools.isEmpty(vehFaultRecList)) {
|
return;
|
}
|
for (VehFaultRec vehFaultRec : vehFaultRecList) {
|
boolean finished = faultReportService.reportFinished(vehFaultRec, reportFaultUrl);
|
if (finished) {
|
vehFaultRec.setState(VehFaultRecStateType.REPORT_SUCCESS.name());
|
} else {
|
log.error("failed to report vehFaultRec to uplink");
|
vehFaultRec.setState(VehFaultRecStateType.REPORT_FAILED.name());
|
}
|
vehFaultRecService.updateById(vehFaultRec);
|
}
|
|
}
|
|
}
|