wisdomisite-java/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java
2024-05-23 00:41:22 +08:00

446 lines
19 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.zhgd.xmgl.async;
import com.zhgd.jeecg.common.execption.OpenPromptException;
import com.zhgd.jeecg.common.util.pass.HttpUtils;
import com.zhgd.xmgl.call.HikvisionCall;
import com.zhgd.xmgl.modules.basicdata.service.INoticeService;
import com.zhgd.xmgl.modules.car.entity.CarInfo;
import com.zhgd.xmgl.modules.project.entity.Project;
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 com.zhgd.xmgl.modules.worker.mapper.EnterpriseInfoMapper;
import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync;
import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionSyncMapper;
import com.zhgd.xmgl.security.util.SecurityUtils;
import com.zhgd.xmgl.util.ThreadLocalUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
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.Date;
import java.util.Objects;
/**
* 海康
*/
@Slf4j
@Component
public class AsyncHikvision {
@Autowired
@Lazy
HikvisionCall hikvisionCall;
@Lazy
@Autowired
VideoItemMapper videoItemMapper;
@Lazy
@Autowired
ProjectVideoHkVqdMapper projectVideoHkVqdMapper;
@Lazy
@Autowired
EnterpriseInfoMapper enterpriseInfoMapper;
@Lazy
@Autowired
private INoticeService noticeService;
@Lazy
@Autowired
private AsyncHikvision asyncHikvision;
@Lazy
@Autowired
private XzHikvisionSyncMapper xzHikvisionSyncMapper;
/**
* 添加劳务人员-海康
*
* @param workerInfo
* @param now
*/
@Async("hikvisionExecutor")
public void addWorkerForHikvisionAsync(WorkerInfo workerInfo, Date now) {
try {
ThreadLocalUtil.addInKey("now", now);
hikvisionCall.addWorkerForHikvision(workerInfo);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForWorker(workerInfo, e, "添加");
}
}
public void addWorkerForHikvision(WorkerInfo workerInfo) {
Date now = ThreadLocalUtil.getNotNull().getDate("now");
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(1).setOperate(1).setWhoId(workerInfo.getId()).setCreateDate(now));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(2).setOperate(1).setWhoId(workerInfo.getId()).setCreateDate(now));
asyncHikvision.addWorkerForHikvisionAsync(workerInfo, now);
}
@Async("hikvisionExecutor")
public void editWorkerForHikvisionAsync(WorkerInfo workerInfo, Date now) {
try {
ThreadLocalUtil.addInKey("now", now);
hikvisionCall.editWorkerForHikvision(workerInfo);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForWorker(workerInfo, e, "更新");
}
}
public void editWorkerForHikvision(WorkerInfo workerInfo) {
Date now = ThreadLocalUtil.getNotNull().getDate("now");
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(1).setOperate(2).setWhoId(workerInfo.getId()).setCreateDate(now));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(2).setOperate(2).setWhoId(workerInfo.getId()).setCreateDate(now));
asyncHikvision.editWorkerForHikvisionAsync(workerInfo, now);
}
private void sendNoticeForWorker(WorkerInfo workerInfo, Exception e, String action) {
String title = action + "人员到海康isc失败";
String type = "23";
String msg;
if (HttpUtils.isTimeOut(e)) {
msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因平台连接isc网络异常";
} else if (e instanceof OpenPromptException) {
msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:" + e.getMessage();
} else {
msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:下发异常";
}
if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) {
noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), msg, title, type);
}
}
@Async("hikvisionExecutor")
public void deleteWorkerForHikvisionAsync(WorkerInfo workerInfo, Date now) {
try {
ThreadLocalUtil.addInKey("now", now);
hikvisionCall.deleteWorkerForHikvision(workerInfo);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForWorker(workerInfo, e, "删除");
}
}
public void deleteWorkerForHikvision(WorkerInfo workerInfo) {
Date now = ThreadLocalUtil.getNotNull().getDate("now");
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(1).setOperate(3).setWhoId(workerInfo.getId()).setCreateDate(now));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(2).setOperate(3).setWhoId(workerInfo.getId()).setCreateDate(now));
asyncHikvision.deleteWorkerForHikvisionAsync(workerInfo, now);
}
public void addCarInfoForHikvision(CarInfo carInfo) {
Date now = new Date();
if (Objects.equals(carInfo.getCarModuleType(), 1)) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(4).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(5).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now));
} else if (Objects.equals(carInfo.getCarModuleType(), 2) || Objects.equals(carInfo.getCarModuleType(), 3)) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now));
}
asyncHikvision.addCarInfoForHikvisionAsyc(carInfo, now);
}
@Async("carInfoExecutor")
public void addCarInfoForHikvisionAsyc(CarInfo carInfo, Date now) {
try {
ThreadLocalUtil.addInKey("now", now);
hikvisionCall.saveCarInfoFromHikvision(carInfo);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForCar(carInfo, e, "添加");
}
}
private void sendNoticeForCar(CarInfo carInfo, Exception e, String action) {
String title = action + "车辆到海康isc失败";
String type = "24";
String msg = null;
if (HttpUtils.isTimeOut(e)) {
msg = "同步失败,车牌号:" + carInfo.getCarNumber() + "。失败原因平台连接isc网络异常";
} else if (e instanceof OpenPromptException) {
msg = "同步失败,车牌号:" + carInfo.getCarNumber() + "。失败原因:" + e.getMessage();
} else {
msg = "同步失败,车牌号:" + carInfo.getCarNumber() + "。失败原因:下发异常";
}
if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) {
noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), msg, title, type);
}
}
public void editCarInfoForHikvision(CarInfo carInfo, CarInfo old) {
Date now = new Date();
if (Objects.equals(carInfo.getCarModuleType(), 1)) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(4).setOperate(2).setWhoId(carInfo.getId()).setCreateDate(now));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(5).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now));
} else if (Objects.equals(carInfo.getCarModuleType(), 2) || Objects.equals(carInfo.getCarModuleType(), 3)) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now));
}
asyncHikvision.editCarInfoForHikvisionAsync(carInfo, old, now);
}
@Async("carInfoExecutor")
public void editCarInfoForHikvisionAsync(CarInfo carInfo, CarInfo old, Date now) {
try {
ThreadLocalUtil.addInKey("now", now);
hikvisionCall.editCarInfoForHikvision(carInfo, old);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForCar(carInfo, e, "编辑");
}
}
public void deleteCarInfoForHikvision(CarInfo carInfo) {
Date now = new Date();
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(4).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(5).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now));
asyncHikvision.deleteCarInfoForHikvisionAsync(carInfo, now);
}
@Async("carInfoExecutor")
public void deleteCarInfoForHikvisionAsync(CarInfo carInfo, Date now) {
try {
ThreadLocalUtil.addInKey("now", now);
hikvisionCall.deleteCarInfoForHikvision(carInfo);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForCar(carInfo, e, "删除");
}
}
@Async("carInfoExecutor")
public void addEnterpriseInfoForHikvision(EnterpriseInfo enterpriseInfo) {
try {
hikvisionCall.addEnterpriseInfoForHikvision(enterpriseInfo);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForOrg(enterpriseInfo.getEnterpriseName(), e, "新增");
}
}
private void sendNoticeForOrg(String name, Exception e, String action) {
String title = action + "组织到海康isc失败";
String type = "23";
String msg;
if (HttpUtils.isTimeOut(e)) {
msg = "同步失败,组织名称:" + name + "。失败原因平台连接isc网络异常";
} else if (e instanceof OpenPromptException) {
msg = "同步失败,组织名称:" + name + "。失败原因:" + e.getMessage();
} else {
msg = "同步失败,组织名称:" + name + "。失败原因:下发异常";
}
if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) {
noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), msg, title, type);
}
}
@Async("carInfoExecutor")
public void editEnterpriseInfoForHikvision(EnterpriseInfo enterpriseInfo) {
try {
hikvisionCall.editEnterpriseInfoForHikvision(enterpriseInfo);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForOrg(enterpriseInfo.getEnterpriseName(), e, "编辑");
}
}
@Async("carInfoExecutor")
public void deleteEnterpriseInfoForHikvision(String enterpriseId, String projectSn) {
try {
hikvisionCall.deleteEnterpriseInfoForHikvision(enterpriseId, projectSn);
} catch (Exception e) {
log.error("海康:", e);
EnterpriseInfo enterpriseInfo = enterpriseInfoMapper.selectById(enterpriseId);
if (enterpriseInfo != null) {
sendNoticeForOrg(enterpriseInfo.getEnterpriseName(), e, "删除");
}
}
}
@Async("carInfoExecutor")
public void editTeamInfoForHikvision(TeamInfo teamInfo) {
try {
hikvisionCall.editTeamInfoForHikvision(teamInfo);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForOrg(teamInfo.getTeamName(), e, "编辑");
}
}
@Async("carInfoExecutor")
public void deleteTeamInfoForHikvision(TeamInfo teamInfo) {
try {
hikvisionCall.deleteTeamInfoForHikvision(teamInfo);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForOrg(teamInfo.getTeamName(), e, "删除");
}
}
@Async("carInfoExecutor")
public void addTeamInfoForHikvision(TeamInfo teamInfo) {
try {
hikvisionCall.addTeamInfoForHikvision(teamInfo);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForOrg(teamInfo.getTeamName(), e, "新增");
}
}
@Async("carInfoExecutor")
public void editDepartmentInfoForHikvision(DepartmentInfo teamInfo) {
try {
hikvisionCall.editDepartmentInfoForHikvision(teamInfo);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForOrg(teamInfo.getDepartmentName(), e, "编辑");
}
}
@Async("carInfoExecutor")
public void addDepartmentInfoForHikvision(DepartmentInfo teamInfo) {
try {
hikvisionCall.addDepartmentInfoForHikvision(teamInfo);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForOrg(teamInfo.getDepartmentName(), e, "新增");
}
}
@Async("carInfoExecutor")
public void deleteDepartmentInfoForHikvision(DepartmentInfo teamInfo) {
try {
hikvisionCall.deleteDepartmentInfoForHikvision(teamInfo);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForOrg(teamInfo.getDepartmentName(), e, "删除");
}
}
@Async("carInfoExecutor")
public void editProjectForHikvision(Project project) {
try {
hikvisionCall.editProjectForHikvision(project);
} catch (Exception e) {
log.error("海康:", e);
}
}
public void addPersonAuth(WorkerInfo workerInfo, String devSn) {
if (StringUtils.isBlank(devSn)) {
return;
}
Date now = ThreadLocalUtil.getNotNull().getDate("now");
String[] devSnArr = StringUtils.split(devSn, ",");
for (String ds : devSnArr) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(3).setOperate(1).setWhoId(workerInfo.getId()).setDeviceSn(ds).setCreateDate(now));
}
asyncHikvision.addPersonAuthAsync(workerInfo, devSn, now);
}
@Async("hikvisionExecutor")
public void addPersonAuthAsync(WorkerInfo workerInfo, String devSn, Date now) {
try {
ThreadLocalUtil.addInKey("now", now);
StringBuilder sucSb = new StringBuilder();
StringBuilder failSb = new StringBuilder();
String[] devSnArr = StringUtils.split(devSn, ",");
try {
for (String ds : devSnArr) {
hikvisionCall.updatePersonAuth(workerInfo, ds, sucSb, failSb, 0);
}
} catch (Exception e) {
if (HttpUtils.isTimeOut(e)) {
noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), "失败原因平台连接isc网络异常", "人员下发设备提醒", "1");
} else {
noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), e.getMessage(), "人员下发设备提醒", "1");
}
return;
}
String title = "人员下发设备提醒";
String type = "1";
String msg = "";
String sucSbStr = sucSb.toString();
if (StringUtils.isNotBlank(sucSbStr)) {
sucSbStr = "下发权限成功:" + sucSbStr;
msg += sucSbStr;
}
String failSbStr = failSb.toString();
if (StringUtils.isNotBlank(failSbStr)) {
failSbStr = "下发权限失败:" + failSbStr;
msg += failSbStr;
}
if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) {
noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), StringUtils.substring(msg, 0, msg.length() - 1), title, type);
}
} catch (Exception e) {
log.error("海康:", e);
}
}
/**
* 删除
*
* @param workerInfo
* @param devSns
*/
public void deletePersonAuth(WorkerInfo workerInfo, String devSns) {
if (StringUtils.isBlank(devSns)) {
return;
}
Date now = ThreadLocalUtil.getNotNull().getDate("now");
String[] devSnArr = StringUtils.split(devSns, ",");
for (String ds : devSnArr) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(3).setOperate(3).setWhoId(workerInfo.getId()).setDeviceSn(ds).setCreateDate(now));
}
asyncHikvision.deletePersonAuthAsync(workerInfo, devSns, now);
}
@Async("hikvisionExecutor")
public void deletePersonAuthAsync(WorkerInfo workerInfo, String devSn, Date now) {
try {
if (StringUtils.isBlank(devSn)) {
return;
}
ThreadLocalUtil.addInKey("now", now);
StringBuilder sucSb = new StringBuilder();
StringBuilder failSb = new StringBuilder();
String[] devSnArr = StringUtils.split(devSn, ",");
try {
for (String ds : devSnArr) {
hikvisionCall.updatePersonAuth(workerInfo, ds, sucSb, failSb, 2);
}
} catch (Exception e) {
if (HttpUtils.isTimeOut(e)) {
noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), "网络异常", "人员下发设备提醒", "1");
} else {
noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), e.getMessage(), "人员下发设备提醒", "1");
}
return;
}
String title = "人员下发设备提醒";
String type = "1";
String msg = "";
String sucSbStr = sucSb.toString();
if (StringUtils.isNotBlank(sucSbStr)) {
sucSbStr = "移除权限成功:" + sucSbStr;
msg += sucSbStr;
}
String failSbStr = failSb.toString();
if (StringUtils.isNotBlank(failSbStr)) {
failSbStr = "移除权限失败:" + failSbStr;
msg += failSbStr;
}
if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) {
noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), StringUtils.substring(msg, 0, msg.length() - 1), title, type);
}
} catch (Exception e) {
log.error("海康:", e);
}
}
}