package com.whyc.schedule; import com.whyc.constant.YamlProperties; import com.whyc.dto.*; import com.whyc.factory.ThreadPoolExecutorFactory; import com.whyc.pojo.db_power_rt.BattStationTemp; import com.whyc.service.BattStationTempService; import com.whyc.service.VideoService; import com.whyc.util.DateUtil; import com.whyc.util.FileUtil; import com.whyc.util.HikTempUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.io.File; import java.util.*; import java.util.stream.Collectors; @EnableScheduling @Component @Slf4j public class BattStationTempScheduleService { @Autowired private BattStationTempService service; /** * 温度实时 * */ @Scheduled(fixedRate = 4000,initialDelay = 2000) public void startRecordAndCheck(){ List ipInfoList = HikTempUtil.ipInfoList; for (int i = 0; i < ipInfoList.size(); i++) { IpInfo ipInfo = ipInfoList.get(i); ThreadPoolExecutorFactory.getPoolExecutor().execute(()-> { String ip = ipInfo.getIp(); String cameraId = ipInfo.getCameraId(); Response response = HikTempUtil.getTempPoint(ip); if ((Boolean) response.getData()){ Map tempMap = (Map) response.getData2(); int pixelX = (int) tempMap.get("pixelX"); int pixelY = (int) tempMap.get("pixelY"); TempPoint minTempPoint = (TempPoint) tempMap.get("minTempPoint"); TempPoint maxTempPoint = (TempPoint) tempMap.get("maxTempPoint"); BattStationTemp battStationTemp = new BattStationTemp(); battStationTemp.setPixelX(pixelX); battStationTemp.setPixelY(pixelY); //最大温度点位 battStationTemp.setMaxTemp(maxTempPoint.getTemp()); List maxTempPoints = maxTempPoint.getPoints(); //对points,里面的x,y进行x*y的字符串转换,并将所有元素用逗号隔开 List maxPointsStr = maxTempPoints.stream().map(item -> item.getX() + "*" + item.getY()).collect(Collectors.toList()); String maxPoints = String.join(",", maxPointsStr); battStationTemp.setMaxTempPoint(maxPoints); //最小温度点位 battStationTemp.setMinTemp(minTempPoint.getTemp()); List minTempPoints = minTempPoint.getPoints(); //对points,里面的x,y进行x*y的字符串转换,并将所有元素用逗号隔开 List minPointsStr = minTempPoints.stream().map(item -> item.getX() + "*" + item.getY()).collect(Collectors.toList()); String minPoints = String.join(",", minPointsStr); battStationTemp.setMinTempPoint(minPoints); battStationTemp.setCameraId(cameraId); Date date = new Date(); battStationTemp.setRecordTime(date); service.addOrUpdate(battStationTemp); }else{ String msg = response.getMsg(); // TODO 报错日志记录 } }); } } }