package com.zhgd.xmgl.task; import cn.hutool.core.date.DateUtil; import com.zhgd.xmgl.call.api.PoliceCameraManufacturer; import com.zhgd.xmgl.call.factory.PoliceCameraManufacturerFactory; import com.zhgd.xmgl.modules.policecamera.service.IProjectPoliceCameraConfigService; import com.zhgd.xmgl.modules.project.entity.Project; import com.zhgd.xmgl.modules.project.service.IProjectService; import com.zhgd.xmgl.util.AsyncTaskUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Date; import java.util.List; @Slf4j @RestController @RequestMapping("xmgl/task") @Transactional(rollbackFor = Exception.class) public class Mcs8Task { @Lazy @Autowired IProjectService projectService; @Lazy @Autowired private IProjectPoliceCameraConfigService projectPoliceCameraConfigService; @Lazy @Autowired private PoliceCameraManufacturerFactory policeCameraManufacturerFactory; @Autowired @Qualifier("doubleCarbonExecutor") private ThreadPoolTaskExecutor threadPoolTaskExecutor; /** * 定时从Mcs8获取执法记录仪文件 */ @Scheduled(cron = "0 */5 * * * ?") @RequestMapping("getPoliceCameraItemFile") public void getPoliceCameraItemFile() { Date now = new Date(); List projects = projectService.list(); for (Project project : projects) { try { PoliceCameraManufacturer manufacturer = policeCameraManufacturerFactory.getPoliceCameraManufacturer(project.getProjectSn()); if (manufacturer != null) { AsyncTaskUtil.runAsync(() -> { manufacturer.pullFile(DateUtil.offsetDay(now, -7), now); }); } } catch (Exception e) { log.error("定时从Mcs8获取执法记录仪文件err,{}", project.getProjectName(), e); } } } /** * 定时更新执法仪设备状态 */ @Scheduled(cron = "* */10 * * * ?") @RequestMapping("updateStatus") public void updateStatus() { List projects = projectService.list(); for (Project project : projects) { try { PoliceCameraManufacturer manufacturer = policeCameraManufacturerFactory.getPoliceCameraManufacturer(project.getProjectSn()); if (manufacturer != null) { manufacturer.updateStatus(3L); } } catch (Exception e) { log.error("定时更新执法仪设备状态err,{}", project.getProjectName(), e); } } } }