85 lines
3.1 KiB
Java
Raw Normal View History

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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
2025-07-25 10:35:03 +08:00
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Scheduled;
2025-07-25 10:35:03 +08:00
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;
2025-07-25 10:35:03 +08:00
import java.util.concurrent.CompletableFuture;
@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;
2025-07-25 10:35:03 +08:00
@Autowired
@Qualifier("doubleCarbonExecutor")
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
/**
* 定时从Mcs8获取执法记录仪文件
*/
@Scheduled(cron = "0 */5 * * * ?")
@RequestMapping("getPoliceCameraItemFile")
public void getPoliceCameraItemFile() {
Date now = new Date();
List<Project> projects = projectService.list();
for (Project project : projects) {
try {
PoliceCameraManufacturer manufacturer = policeCameraManufacturerFactory.getPoliceCameraManufacturer(project.getProjectSn());
if (manufacturer != null) {
2025-07-25 10:35:03 +08:00
CompletableFuture.runAsync(() -> {
manufacturer.pullFile(DateUtil.offsetDay(now, -7), now);
}, threadPoolTaskExecutor);
}
} catch (Exception e) {
log.error("定时从Mcs8获取执法记录仪文件err{}", project.getProjectName(), e);
}
}
}
/**
* 定时更新执法仪设备状态
*/
@Scheduled(cron = "0 */5 * * * ?")
@RequestMapping("updateStatus")
public void updateStatus() {
List<Project> projects = projectService.list();
for (Project project : projects) {
try {
PoliceCameraManufacturer manufacturer = policeCameraManufacturerFactory.getPoliceCameraManufacturer(project.getProjectSn());
if (manufacturer != null) {
manufacturer.updateStatus();
}
} catch (Exception e) {
log.error("定时更新执法仪设备状态err{}", project.getProjectName(), e);
}
}
}
}