package com.zhgd.xmgl.async; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zhgd.xmgl.call.HikvisionCall; import com.zhgd.xmgl.modules.car.entity.CarInfo; import com.zhgd.xmgl.modules.project.entity.Project; import com.zhgd.xmgl.modules.project.entity.ProjectVideoConfig; import com.zhgd.xmgl.modules.video.entity.ProjectVideoHkVqd; import com.zhgd.xmgl.modules.video.entity.VideoItem; import com.zhgd.xmgl.modules.video.mapper.ProjectVideoHkVqdMapper; import com.zhgd.xmgl.modules.video.mapper.VideoItemMapper; import com.zhgd.xmgl.modules.worker.entity.DepartmentInfo; import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo; import com.zhgd.xmgl.modules.worker.entity.TeamInfo; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; @Slf4j @Component public class AsyncHikvision { @Autowired @Lazy HikvisionCall hikvisionCall; @Autowired VideoItemMapper videoItemMapper; @Autowired ProjectVideoHkVqdMapper projectVideoHkVqdMapper; /** * 添加劳务人员-海康 * * @param workerInfo */ @Async public void addWorkerForHikvision(WorkerInfo workerInfo) { try { hikvisionCall.addWorkerForHikvision(workerInfo); } catch (Exception e) { e.printStackTrace(); } } @Async public void editWorkerForHikvision(WorkerInfo workerInfo) { try { hikvisionCall.editWorkerForHikvision(workerInfo); } catch (Exception e) { e.printStackTrace(); } } @Async public void deleteWorkerForHikvision(WorkerInfo workerInfo) { try { hikvisionCall.deleteWorkerForHikvision(workerInfo); } catch (Exception e) { e.printStackTrace(); } } @Async public void addCarInfoForHikvision(CarInfo carInfo) { try { hikvisionCall.addCarInfoFromHttp(carInfo); } catch (Exception e) { e.printStackTrace(); } } @Async public void editCarInfoForHikvision(CarInfo carInfo) { try { hikvisionCall.editCarInfoForHikvision(carInfo); } catch (Exception e) { e.printStackTrace(); } } @Async public void deleteCarInfoForHikvision(CarInfo carInfo) { try { hikvisionCall.deleteCarInfoForHikvision(carInfo); } catch (Exception e) { e.printStackTrace(); } } @Async public void addEnterpriseInfoForHikvision(EnterpriseInfo enterpriseInfo) { try { hikvisionCall.addEnterpriseInfoForHikvision(enterpriseInfo); } catch (Exception e) { e.printStackTrace(); } } @Async public void editEnterpriseInfoForHikvision(EnterpriseInfo enterpriseInfo) { try { hikvisionCall.editEnterpriseInfoForHikvision(enterpriseInfo); } catch (Exception e) { e.printStackTrace(); } } @Async public void deleteEnterpriseInfoForHikvision(String enterpriseInfo, String projectSn) { try { hikvisionCall.deleteEnterpriseInfoForHikvision(enterpriseInfo, projectSn); } catch (Exception e) { e.printStackTrace(); } } @Async public void editTeamInfoForHikvision(TeamInfo teamInfo) { try { hikvisionCall.editTeamInfoForHikvision(teamInfo); } catch (Exception e) { e.printStackTrace(); } } @Async public void deleteTeamInfoForHikvision(TeamInfo teamInfo) { try { hikvisionCall.deleteTeamInfoForHikvision(teamInfo); } catch (Exception e) { e.printStackTrace(); } } @Async public void addTeamInfoForHikvision(TeamInfo teamInfo) { try { hikvisionCall.addTeamInfoForHikvision(teamInfo); } catch (Exception e) { e.printStackTrace(); } } @Async public void editDepartmentInfoForHikvision(DepartmentInfo teamInfo) { try { hikvisionCall.editDepartmentInfoForHikvision(teamInfo); } catch (Exception e) { e.printStackTrace(); } } @Async public void addDepartmentInfoForHikvision(DepartmentInfo teamInfo) { try { hikvisionCall.addDepartmentInfoForHikvision(teamInfo); } catch (Exception e) { e.printStackTrace(); } } @Async public void deleteDepartmentInfoForHikvision(DepartmentInfo teamInfo) { try { hikvisionCall.deleteDepartmentInfoForHikvision(teamInfo); } catch (Exception e) { e.printStackTrace(); } } @Async public void editProjectForHikvision(Project project) { try { hikvisionCall.editProjectForHikvision(project); } catch (Exception e) { e.printStackTrace(); } } /** * 添加视频质量诊断结果 * * @param projectVideoConfig */ @Async public void addVqdForHikvision(ProjectVideoConfig projectVideoConfig) { try { List videoItems = videoItemMapper.selectList(new LambdaQueryWrapper() .eq(VideoItem::getVideoId, projectVideoConfig.getId())); ArrayList indexCodes = new ArrayList<>(); for (int i = 0; i < videoItems.size(); i++) { VideoItem videoItem = videoItems.get(i); indexCodes.add(videoItem.getSerialNumber()); if ((i + 1) % 20 == 0) { //20一次发生http请求 JSONObject requestParam = new JSONObject(); requestParam.put("pageNo", 1); requestParam.put("pageSize", 20); requestParam.put("indexCodes", indexCodes); JSONObject jo = hikvisionCall.getVqdForHikvision(projectVideoConfig, requestParam); if (jo != null) { //插入结果 JSONArray listJa = jo.getJSONArray("list"); if (CollUtil.isEmpty(listJa)) { continue; } for (int j = 0; j < listJa.size(); j++) { JSONObject lJo = listJa.getJSONObject(j); ProjectVideoHkVqd vqd = new ProjectVideoHkVqd(); BeanUtil.copyProperties(lJo, vqd); vqd.setProjectSn(projectVideoConfig.getProjectSn()); projectVideoHkVqdMapper.insert(vqd); } } } else if (i == videoItems.size() - 1) { } } } catch (Exception e) { e.printStackTrace(); } } }