package com.ycl.task; import com.ycl.platform.domain.vo.DeviceInfoVO; import com.ycl.platform.service.WorkOrderService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import java.util.List; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** * 工单恢复图片获取 * * @author:xp * @date:2024/8/21 11:56 */ @Slf4j @RequiredArgsConstructor @Component("workOrderImgTask") public class WorkOrderImgTask { private final WorkOrderService workOrderService; private static final ExecutorService executorService = new ThreadPoolExecutor(8, 24, 5000, TimeUnit.SECONDS, new ArrayBlockingQueue<>(10), new ThreadPoolExecutor.CallerRunsPolicy() ); public void run() { // 查出故障的设备 List deviceList = workOrderService.hasErrorWorkOrderList(); for (DeviceInfoVO deviceInfo : deviceList) { executorService.submit(() -> { String frameImg = workOrderService.getFrameImgByDevice(deviceInfo.getDeviceId(), deviceInfo.getChannelId()); if (StringUtils.hasText(frameImg)) { workOrderService.updateImgById(deviceInfo.getWorkOrderId(), frameImg); } }); } } }