海康下发人员
This commit is contained in:
parent
5dea079820
commit
c59aa46e91
@ -1,5 +1,6 @@
|
||||
package com.zhgd.xmgl.async;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@ -9,11 +10,11 @@ import com.zhgd.jeecg.common.util.SpringContextUtils;
|
||||
import com.zhgd.jeecg.common.util.pass.HttpUtils;
|
||||
import com.zhgd.xmgl.call.HikvisionCall;
|
||||
import com.zhgd.xmgl.constant.Cts;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.Notice;
|
||||
import com.zhgd.xmgl.modules.basicdata.service.INoticeService;
|
||||
import com.zhgd.xmgl.modules.car.entity.CarInfo;
|
||||
import com.zhgd.xmgl.modules.car.service.impl.CarInfoServiceImpl;
|
||||
import com.zhgd.xmgl.modules.project.entity.Project;
|
||||
import com.zhgd.xmgl.modules.project.entity.ProjectUfaceConfig;
|
||||
import com.zhgd.xmgl.modules.project.entity.vo.ProjectInfoExtVo;
|
||||
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
|
||||
import com.zhgd.xmgl.modules.project.service.IProjectUfaceConfigService;
|
||||
@ -28,10 +29,7 @@ import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionCompareDataMapper;
|
||||
import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionSyncMapper;
|
||||
import com.zhgd.xmgl.modules.xz.service.impl.XzHikvisionCompareDataServiceImpl;
|
||||
import com.zhgd.xmgl.security.entity.UserInfo;
|
||||
import com.zhgd.xmgl.util.HikvisionUtil;
|
||||
import com.zhgd.xmgl.util.JoBuilder;
|
||||
import com.zhgd.xmgl.util.MapBuilder;
|
||||
import com.zhgd.xmgl.util.ThreadLocalUtil;
|
||||
import com.zhgd.xmgl.util.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@ -39,9 +37,11 @@ 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 org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -57,8 +57,9 @@ public class AsyncHikvision {
|
||||
public CarInfoServiceImpl carInfoService;
|
||||
@Autowired
|
||||
@Lazy
|
||||
public
|
||||
WorkerInfoServiceImpl workerInfoService;
|
||||
public WorkerInfoServiceImpl workerInfoService;
|
||||
@Autowired
|
||||
@Lazy
|
||||
public IProjectUfaceConfigService projectUfaceConfigService;
|
||||
@Autowired
|
||||
@Lazy
|
||||
@ -117,6 +118,13 @@ public class AsyncHikvision {
|
||||
return ThreadLocalUtil.getNotNull().getDate(XZ_HIKVISION_SYNC_TIME);
|
||||
}
|
||||
|
||||
@Async("sendWorkerExecutor")
|
||||
public Future addWorkerAndAuthAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
|
||||
addWorkerAsync(workerInfo, true, true);
|
||||
projectUfaceConfigService.addWorkerInfo(workerInfo);
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加劳务人员-海康
|
||||
*
|
||||
@ -124,8 +132,8 @@ public class AsyncHikvision {
|
||||
* @param isSaveWorker
|
||||
* @param isSaveWorkerFace
|
||||
*/
|
||||
@Async("hikvisionExecutor")
|
||||
public void addWorkerForHikvisionAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
|
||||
@Async("sendWorkerExecutor")
|
||||
public void addWorkerAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
|
||||
try {
|
||||
hikvisionCall.addWorkerForHikvision(workerInfo, isSaveWorker, isSaveWorkerFace);
|
||||
} catch (Exception e) {
|
||||
@ -134,22 +142,28 @@ public class AsyncHikvision {
|
||||
}
|
||||
}
|
||||
|
||||
public void addWorkerForHikvision(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
|
||||
this.addWorkerForHikvisionAsync(workerInfo, isSaveWorker, isSaveWorkerFace);
|
||||
public void addWorker(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
|
||||
this.addWorkerAsync(workerInfo, isSaveWorker, isSaveWorkerFace);
|
||||
}
|
||||
|
||||
@Async("hikvisionExecutor")
|
||||
public void editWorkerForHikvisionAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
|
||||
@Async("sendWorkerExecutor")
|
||||
public void editWorkerAndAuthAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
|
||||
this.editWorkerAsync(workerInfo, true, true);
|
||||
projectUfaceConfigService.updateWorkerInfo(workerInfo, workerInfo);
|
||||
}
|
||||
|
||||
@Async("sendWorkerExecutor")
|
||||
public void editWorkerAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
|
||||
try {
|
||||
hikvisionCall.editWorkerForHikvision(workerInfo, isSaveWorker, isSaveWorkerFace);
|
||||
hikvisionCall.editWorker(workerInfo, isSaveWorker, isSaveWorkerFace);
|
||||
} catch (Exception e) {
|
||||
log.error("海康:", e);
|
||||
sendNoticeForWorker(workerInfo, e, "更新");
|
||||
}
|
||||
}
|
||||
|
||||
public void editWorkerForHikvision(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
|
||||
this.editWorkerForHikvisionAsync(workerInfo, isSaveWorker, isSaveWorkerFace);
|
||||
public void editWorker(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
|
||||
this.editWorkerAsync(workerInfo, isSaveWorker, isSaveWorkerFace);
|
||||
}
|
||||
|
||||
private void sendNoticeForWorker(WorkerInfo workerInfo, Exception e, String action) {
|
||||
@ -169,7 +183,7 @@ public class AsyncHikvision {
|
||||
hikvisionCall.updateAllFailStatusIfNull(workerInfo.getProjectSn(), workerInfo.getId(), 1);
|
||||
}
|
||||
|
||||
@Async("hikvisionExecutor")
|
||||
@Async("sendWorkerExecutor")
|
||||
public void deleteWorkerForHikvisionAsync(String uniqueId, WorkerInfo workerInfo) {
|
||||
try {
|
||||
hikvisionCall.deleteWorkerForHikvision(uniqueId, workerInfo);
|
||||
@ -464,12 +478,24 @@ public class AsyncHikvision {
|
||||
hikvisionCall.getDoorEvents(paramMap);
|
||||
}
|
||||
|
||||
public void sendBatchWorkerInfo(List<UfaceDev> allDevList, List<WorkerInfo> workerList, List<JSONObject> workerAndDevSnList, Long userId, String projectSn) {
|
||||
this.sendBatchWorkerInfoAsync(allDevList, workerList, workerAndDevSnList, userId, projectSn);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量下发人员
|
||||
*
|
||||
* @param allDevList
|
||||
* @param workerList 下发的人员
|
||||
* @param workerAndDevSnList 构建的下发的人员和设备的关系
|
||||
* @param userId
|
||||
*/
|
||||
@Async("sendBatchExecutor")
|
||||
public void sendBatchWorkerInfoAsync(ProjectUfaceConfig projectUfaceConfig, List<UfaceDev> allDevList, List<WorkerInfo> workerList, List<JSONObject> workerAndDevSnList) {
|
||||
public void sendBatchWorkerInfoAsync(List<UfaceDev> allDevList, List<WorkerInfo> workerList, List<JSONObject> workerAndDevSnList, Long userId, String projectSn) {
|
||||
try {
|
||||
Map<String, WorkerInfo> workerIdMap = workerList.stream().collect(Collectors.toMap(workerInfo -> workerInfo.getId() + "", Function.identity()));
|
||||
Map<String, UfaceDev> devSnMap = allDevList.stream().collect(Collectors.toMap(UfaceDev::getDevSn, Function.identity()));
|
||||
ProjectInfoExtVo project = projectService.getProjectInfoBySn(projectUfaceConfig.getProjectSn());
|
||||
ProjectInfoExtVo project = projectService.getProjectInfoBySn(projectSn);
|
||||
Map<String, List<JSONObject>> devSnToJoMap = workerAndDevSnList.stream().collect(Collectors.groupingBy(jsonObject -> jsonObject.getString("devSn")));
|
||||
JSONObject gdvJo = HikvisionUtil.getDoorsV2(project, HikvisionUtil.addPageParamIfAbsent(new JSONObject()));
|
||||
JSONObject gdvDataJo = HikvisionUtil.getJSONObjectData(gdvJo);
|
||||
@ -483,23 +509,69 @@ public class AsyncHikvision {
|
||||
o1.putAll(o2);
|
||||
return o1;
|
||||
}));
|
||||
ArrayList<Future> futures = new ArrayList<>();
|
||||
for (Map.Entry<String, List<JSONObject>> entry : devSnToJoMap.entrySet()) {
|
||||
asyncHikvision.sendBatchWorkersForOneDevAsync(projectUfaceConfig, workerIdMap, devSnMap, project, devSnToIscDevSnMap, iscDevSnToMyMap, entry);
|
||||
Future future = asyncHikvision.sendBatchWorkersForOneDevAsync(workerIdMap, devSnMap, project, devSnToIscDevSnMap, iscDevSnToMyMap, entry, projectSn);
|
||||
futures.add(future);
|
||||
}
|
||||
for (Future future : futures) {
|
||||
while (!future.isDone()) {
|
||||
}
|
||||
}
|
||||
//下发完成
|
||||
if (userId != null) {
|
||||
java.text.DateFormat format1 = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
String redNotice = "";
|
||||
List<String> redNameList = workerList.stream().filter(w -> NumberUtils.lt(w.getSafeScore(), 80D)).map(WorkerInfo::getWorkerName).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(redNameList)) {
|
||||
redNotice = StrUtil.format(",其中{}是红码不下发", StrUtil.join(",", redNameList));
|
||||
}
|
||||
Notice notice = new Notice();
|
||||
notice.setAccountId(userId);
|
||||
notice.setMsg(StrUtil.format("已经完成批量向设备下发{}个人{}", workerList.size(), redNotice));
|
||||
notice.setTitle("人员批量下发设备提醒");
|
||||
notice.setSendTime(format1.format(new Date()));
|
||||
notice.setType("1");
|
||||
noticeService.addNotice(notice, true);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("批量下发权限失败:", e);
|
||||
hikvisionCall.updateAllFailStatusIfNullForAuth(projectUfaceConfig.getProjectSn(), workerList, 1, 1);
|
||||
hikvisionCall.updateAllFailStatusIfNullForAuth(projectSn, workerList, 1, 1);
|
||||
hikvisionCall.updateAllFailStatusIfNullForAuth(projectSn, workerList, 1, 3);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 一个设备批量下发人员
|
||||
*
|
||||
* @param workerIdMap
|
||||
* @param devSnMap
|
||||
* @param project
|
||||
* @param devSnToIscDevSnMap
|
||||
* @param iscDevSnToMyMap
|
||||
* @param devSnToJoEntry
|
||||
*/
|
||||
@Async("sendBatchExecutor")
|
||||
public void sendBatchWorkersForOneDevAsync(ProjectUfaceConfig projectUfaceConfig, Map<String, WorkerInfo> workerIdMap, Map<String, UfaceDev> devSnMap, ProjectInfoExtVo project, Map<String, JSONObject> devSnToIscDevSnMap, Map<String, Map<String, JSONObject>> iscDevSnToMyMap, Map.Entry<String, List<JSONObject>> entry) {
|
||||
public Future sendBatchWorkersForOneDevAsync(Map<String, WorkerInfo> workerIdMap, Map<String, UfaceDev> devSnMap, ProjectInfoExtVo project, Map<String, JSONObject> devSnToIscDevSnMap, Map<String, Map<String, JSONObject>> iscDevSnToMyMap, Map.Entry<String, List<JSONObject>> devSnToJoEntry, String projectSn) {
|
||||
try {
|
||||
//【添加权限配置】(人员列表,设备列表),这个接口只要没报错,你就直接去下一步就行了。
|
||||
JSONObject aaRJo = HikvisionUtil.addAuth(project, getAddAuthParam(entry));
|
||||
HikvisionUtil.getJSONObjectData(aaRJo);
|
||||
List<String> addAuthWorkerIds = devSnToJoEntry.getValue().stream().filter(jo -> jo.getBoolean(Cts.IS_ADD_AUTH)).map(jsonObject -> jsonObject.getString("workerId")).collect(Collectors.toList());
|
||||
List<String> deleteAuthWorkerIds = devSnToJoEntry.getValue().stream().filter(jo -> !jo.getBoolean(Cts.IS_ADD_AUTH)).map(jsonObject -> jsonObject.getString("workerId")).collect(Collectors.toList());
|
||||
if (CollUtil.isEmpty(addAuthWorkerIds) && CollUtil.isEmpty(deleteAuthWorkerIds)) {
|
||||
log.error("无权限添加或删除,跳过");
|
||||
return null;
|
||||
}
|
||||
if (CollUtil.isNotEmpty(addAuthWorkerIds)) {
|
||||
JSONObject aaRJo = HikvisionUtil.addAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, addAuthWorkerIds));
|
||||
HikvisionUtil.getJSONObjectData(aaRJo);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(deleteAuthWorkerIds)) {
|
||||
JSONObject aaRJo = HikvisionUtil.deleteAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, deleteAuthWorkerIds));
|
||||
HikvisionUtil.getJSONObjectData(aaRJo);
|
||||
}
|
||||
String devSn = devSnToJoEntry.getKey();
|
||||
//然后调用【根据出入权限配置快捷下载】(设备列表)(【添加权限配置】+【快捷下发】这是一个流程,你添加了几个权限,下发成功之后,就清零了)
|
||||
JSONObject daJo = HikvisionUtil.downloadAuth(project, getQueryDownloadProgressParam(entry));
|
||||
JSONObject daJo = HikvisionUtil.downloadAuth(project, getQueryDownloadProgressParam(devSnToJoEntry));
|
||||
JSONObject daRtJo = HikvisionUtil.getJSONObjectData(daJo);
|
||||
//然后调用【查询下载任务进度】(上面那个的任务)
|
||||
int totalPercent = 0;
|
||||
@ -511,21 +583,50 @@ public class AsyncHikvision {
|
||||
Thread.sleep(1000);
|
||||
} while (totalPercent != 100);
|
||||
//权限下发后(进度100后),用【查询权限条目列表】(人员列表,设备列表)接口去查,返回参数有权限状态,返回已下载的就是有权限
|
||||
JSONObject qaiJo = HikvisionUtil.queryAuthItem(project, getQueryAuthItemParam(entry, devSnToIscDevSnMap));
|
||||
JSONObject qaiJo = HikvisionUtil.queryAuthItem(project, getQueryAuthItemParam(devSnToJoEntry, devSnToIscDevSnMap));
|
||||
JSONObject qaiRtJo = HikvisionUtil.getJSONObjectData(qaiJo);
|
||||
JSONArray qaiList = qaiRtJo.getJSONArray("list");
|
||||
for (int i = 0; i < qaiList.size(); i++) {
|
||||
sendBatchWorkersForOneDevOneWorkerAsync(projectUfaceConfig, workerIdMap, devSnMap, iscDevSnToMyMap, qaiList, i);
|
||||
if (CollUtil.isNotEmpty(qaiList)) {
|
||||
for (int i = 0; i < qaiList.size(); i++) {
|
||||
handlerBatchWorkersResultForAddAuth(workerIdMap, devSnMap, iscDevSnToMyMap, qaiList, i, devSn, projectSn);
|
||||
}
|
||||
}
|
||||
//处理删除权限的结果的
|
||||
//handlerBatchWorkersResultForDeleteAuth();
|
||||
if (CollUtil.isNotEmpty(deleteAuthWorkerIds)) {
|
||||
for (String workerId : deleteAuthWorkerIds) {
|
||||
hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(workerId), 3, 3, devSn);
|
||||
if (ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class) != null) {
|
||||
noticeService.addUserNotice(ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class).getUserId(),
|
||||
StrUtil.format("[{}]取消下发到[{}]{}",
|
||||
workerIdMap.get(workerId).getWorkerName(),
|
||||
devSnMap.get(devSn).getDevName(),
|
||||
"成功"),
|
||||
"人员下发设备提醒", "1");
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("批量下发权限失败:", e);
|
||||
hikvisionCall.updateAllFailStatusIfNullForAuth(projectUfaceConfig.getProjectSn(), new ArrayList<>(workerIdMap.values()), 1, 1);
|
||||
hikvisionCall.updateAllFailStatusIfNullForAuth(projectSn, new ArrayList<>(workerIdMap.values()), 1, 1);
|
||||
hikvisionCall.updateAllFailStatusIfNullForAuth(projectSn, new ArrayList<>(workerIdMap.values()), 1, 3);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Async("sendBatchExecutor")
|
||||
public void sendBatchWorkersForOneDevOneWorkerAsync(ProjectUfaceConfig projectUfaceConfig, Map<String, WorkerInfo> workerIdMap, Map<String, UfaceDev> devSnMap, Map<String, Map<String, JSONObject>> iscDevSnToMyMap, JSONArray qaiList, int i) {
|
||||
/**
|
||||
* 处理结果:一个设备批量下发人员
|
||||
*
|
||||
* @param workerIdMap
|
||||
* @param devSnMap
|
||||
* @param iscDevSnToMyMap
|
||||
* @param qaiList
|
||||
* @param i
|
||||
* @param devSn
|
||||
* @param projectSn
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
||||
public void handlerBatchWorkersResultForAddAuth(Map<String, WorkerInfo> workerIdMap, Map<String, UfaceDev> devSnMap, Map<String, Map<String, JSONObject>> iscDevSnToMyMap, JSONArray qaiList, int i, String devSn, String projectSn) {
|
||||
JSONObject jo = qaiList.getJSONObject(i);
|
||||
String personId = jo.getString("personId");
|
||||
String resourceIndexCode = jo.getString("resourceIndexCode");
|
||||
@ -537,23 +638,23 @@ public class AsyncHikvision {
|
||||
//3:已下载
|
||||
//4:未配置
|
||||
Integer faceStatus = jo.getInteger("faceStatus");
|
||||
UfaceDev dev = devSnMap.get(iscDevSnToMyMap.get(resourceIndexCode).get(channelNo).getString("indexCode"));
|
||||
UfaceDev dev = devSnMap.get(devSn);
|
||||
hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(personId), 3, 1, dev.getDevSn());
|
||||
if (ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class) != null) {
|
||||
noticeService.addUserNotice(ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class).getUserId(),
|
||||
StrUtil.format("[{}]下发到[{}]{}",
|
||||
workerIdMap.get(personId).getWorkerName(),
|
||||
Optional.ofNullable(dev).map(UfaceDev::getDevName).orElse("设备"),
|
||||
dev.getDevName(),
|
||||
Objects.equals(faceStatus, 3) ? "成功" : "失败,下发异常"),
|
||||
"人员下发设备提醒", "1");
|
||||
}
|
||||
hikvisionCall.updateSuccessStatus(projectUfaceConfig.getProjectSn(), Long.valueOf(personId), 3, 1, dev.getDevSn());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JSONObject getAddAuthParam(Map.Entry<String, List<JSONObject>> entry) {
|
||||
private JSONObject getAddOrDeleteAuthParam(Map.Entry<String, List<JSONObject>> entry, List<String> workerIds) {
|
||||
JSONObject aaJo = new JSONObject();
|
||||
aaJo.put("personDatas", Collections.singletonList(new MapBuilder<String, Object>()
|
||||
.put("indexCodes", entry.getValue().stream().map(jsonObject -> jsonObject.getString("workerId")).collect(Collectors.toList()))
|
||||
.put("indexCodes", workerIds)
|
||||
.put("personDataType", "person")
|
||||
.build()));
|
||||
aaJo.put("resourceInfos", getDevRqParam(entry));
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
package com.zhgd.xmgl.async;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.zhgd.jeecg.common.util.SpringContextUtils;
|
||||
import com.zhgd.xmgl.call.HousingDataCall;
|
||||
import com.zhgd.xmgl.call.WkServiceuCall;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.Notice;
|
||||
@ -12,9 +10,6 @@ import com.zhgd.xmgl.modules.project.service.IProjectUfaceConfigService;
|
||||
import com.zhgd.xmgl.modules.worker.entity.*;
|
||||
import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper;
|
||||
import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl;
|
||||
import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync;
|
||||
import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionSyncMapper;
|
||||
import com.zhgd.xmgl.util.NumberUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -72,10 +67,6 @@ public class AsyncWorker {
|
||||
}
|
||||
}
|
||||
|
||||
public void sendBatchWokerDev(Map<String, Object> map, ProjectUfaceConfig projectUfaceConfig, List<UfaceDev> allDevList) {
|
||||
this.sendBatchWokerDevAsync(map, projectUfaceConfig, allDevList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量数据发送任务
|
||||
*
|
||||
@ -89,32 +80,31 @@ public class AsyncWorker {
|
||||
if (workerList.size() > 0) {
|
||||
if (projectUfaceConfig.getSupplierType() == 9) {
|
||||
//isc下发
|
||||
projectUfaceConfigService.sendBatchWorkerForHk(map, projectUfaceConfig, allDevList, workerList);
|
||||
projectUfaceConfigService.buildAndSendBatchWorkerForHk(projectUfaceConfig, allDevList, workerList, userId);
|
||||
} else {
|
||||
for (WorkerInfo info : workerList) {
|
||||
try {
|
||||
info.setNoticeUserId(userId);
|
||||
projectUfaceConfigService.sendBatchWorkerInfo(info, projectUfaceConfig, allDevList);
|
||||
workerInfoService.resetHkStatus(info);
|
||||
} catch (Exception e) {
|
||||
log.error("下发人员异常,人员名称:{}", info.getWorkerName() + "," + e.getMessage());
|
||||
noticeFail(info.getWorkerName(), userId, e);
|
||||
log.error("error:", e);
|
||||
}
|
||||
}
|
||||
if (userId != null) {
|
||||
java.text.DateFormat format1 = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
Notice notice = new Notice();
|
||||
notice.setAccountId(userId);
|
||||
notice.setMsg("已经完成批量向设备下发" + workerList.size() + "个人");
|
||||
notice.setTitle("人员批量下发设备提醒");
|
||||
notice.setSendTime(format1.format(new Date()));
|
||||
notice.setType("1");
|
||||
noticeService.addNotice(notice, true);
|
||||
}
|
||||
log.info("--------------------------------批量向设备下发人员执行完成-------------------------------");
|
||||
}
|
||||
}
|
||||
if (userId != null) {
|
||||
java.text.DateFormat format1 = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
Notice notice = new Notice();
|
||||
notice.setAccountId(userId);
|
||||
notice.setMsg("已经完成批量向设备下发" + workerList.size() + "个人");
|
||||
notice.setTitle("人员批量下发设备提醒");
|
||||
notice.setSendTime(format1.format(new Date()));
|
||||
notice.setType("1");
|
||||
noticeService.addNotice(notice, true);
|
||||
}
|
||||
log.info("--------------------------------批量向设备下发人员执行完成-------------------------------");
|
||||
} catch (Exception e) {
|
||||
log.error("error:", e);
|
||||
}
|
||||
|
||||
@ -892,7 +892,7 @@ public class HikvisionCall {
|
||||
* @param isSaveWorker
|
||||
* @param isSaveWorkerFace
|
||||
*/
|
||||
public void editWorkerForHikvision(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) throws Exception {
|
||||
public void editWorker(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) throws Exception {
|
||||
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, workerInfo.getProjectSn()));
|
||||
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
|
||||
return;
|
||||
@ -1137,6 +1137,14 @@ public class HikvisionCall {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新所有未同步失败状态
|
||||
*
|
||||
* @param projectSn
|
||||
* @param workerList
|
||||
* @param bigType
|
||||
* @param operate
|
||||
*/
|
||||
public void updateAllFailStatusIfNullForAuth(String projectSn, List<WorkerInfo> workerList, Integer bigType, Integer operate) {
|
||||
for (WorkerInfo workerInfo : workerList) {
|
||||
updateAllFailStatusIfNullForAuth(projectSn, workerInfo.getId(), bigType, operate);
|
||||
@ -1170,6 +1178,15 @@ public class HikvisionCall {
|
||||
updateStatus(projectSn, whoId, type, operate, deviceSn, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新成功状态
|
||||
*
|
||||
* @param projectSn
|
||||
* @param whoId
|
||||
* @param type
|
||||
* @param operate
|
||||
* @param deviceSn
|
||||
*/
|
||||
public void updateSuccessStatus(String projectSn, Long whoId, Integer type, Integer operate, String deviceSn) {
|
||||
updateStatus(projectSn, whoId, type, operate, deviceSn, true);
|
||||
}
|
||||
@ -1199,6 +1216,13 @@ public class HikvisionCall {
|
||||
updateTotalStatus(projectSn, whoId, xzHikvisionSync.getBigType());
|
||||
}
|
||||
|
||||
/**
|
||||
* 更下总状态
|
||||
*
|
||||
* @param projectSn
|
||||
* @param whoId
|
||||
* @param bigType
|
||||
*/
|
||||
public void updateTotalStatus(String projectSn, Long whoId, Integer bigType) {
|
||||
List<XzHikvisionSync> xzHikvisionSyncs = xzHikvisionSyncMapper.selectList(new LambdaQueryWrapper<XzHikvisionSync>()
|
||||
.eq(XzHikvisionSync::getProjectSn, projectSn)
|
||||
|
||||
@ -128,10 +128,10 @@ public class AsyncConfig {
|
||||
public ThreadPoolTaskExecutor sendWorkerExecutor() {
|
||||
MdcThreadPoolTaskExecutor executor = new MdcThreadPoolTaskExecutor();
|
||||
/** 核心线程数(默认线程数) */
|
||||
executor.setCorePoolSize(corePoolSize);
|
||||
executor.setCorePoolSize(corePoolSize * 10);
|
||||
/** 最大线程数 */
|
||||
executor.setMaxPoolSize(maxPoolSize);
|
||||
executor.setQueueCapacity(queueCapacity);
|
||||
executor.setMaxPoolSize(maxPoolSize * 10);
|
||||
executor.setQueueCapacity(queueCapacity * 10);
|
||||
/** 允许线程空闲时间(单位:默认为秒) */
|
||||
executor.setKeepAliveSeconds(60);
|
||||
/** 线程池名前缀 */
|
||||
@ -334,6 +334,11 @@ public class AsyncConfig {
|
||||
return executor;
|
||||
}
|
||||
|
||||
/**
|
||||
* 单个线程
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Bean("hikvisionExecutor")
|
||||
public ThreadPoolTaskExecutor hikvisionExecutor() {
|
||||
MdcThreadPoolTaskExecutor executor = new MdcThreadPoolTaskExecutor();
|
||||
@ -341,7 +346,7 @@ public class AsyncConfig {
|
||||
executor.setCorePoolSize(1);
|
||||
/** 最大线程数 */
|
||||
executor.setMaxPoolSize(1);
|
||||
executor.setQueueCapacity(100000);
|
||||
executor.setQueueCapacity(1000);
|
||||
/** 允许线程空闲时间(单位:默认为秒) */
|
||||
executor.setKeepAliveSeconds(60);
|
||||
/** 线程池名前缀 */
|
||||
@ -379,7 +384,7 @@ public class AsyncConfig {
|
||||
executor.setCorePoolSize(maxPoolSize);
|
||||
/** 最大线程数 */
|
||||
executor.setMaxPoolSize(maxPoolSize);
|
||||
executor.setQueueCapacity(100000);
|
||||
executor.setQueueCapacity(1000);
|
||||
/** 允许线程空闲时间(单位:默认为秒) */
|
||||
executor.setKeepAliveSeconds(60);
|
||||
/** 线程池名前缀 */
|
||||
@ -398,7 +403,7 @@ public class AsyncConfig {
|
||||
executor.setCorePoolSize(maxPoolSize);
|
||||
/** 最大线程数 */
|
||||
executor.setMaxPoolSize(maxPoolSize);
|
||||
executor.setQueueCapacity(100000);
|
||||
executor.setQueueCapacity(1000);
|
||||
/** 允许线程空闲时间(单位:默认为秒) */
|
||||
executor.setKeepAliveSeconds(60);
|
||||
/** 线程池名前缀 */
|
||||
@ -417,7 +422,7 @@ public class AsyncConfig {
|
||||
executor.setCorePoolSize(maxPoolSize);
|
||||
/** 最大线程数 */
|
||||
executor.setMaxPoolSize(maxPoolSize);
|
||||
executor.setQueueCapacity(100000);
|
||||
executor.setQueueCapacity(1000);
|
||||
/** 允许线程空闲时间(单位:默认为秒) */
|
||||
executor.setKeepAliveSeconds(60);
|
||||
/** 线程池名前缀 */
|
||||
@ -436,7 +441,7 @@ public class AsyncConfig {
|
||||
executor.setCorePoolSize(maxPoolSize);
|
||||
/** 最大线程数 */
|
||||
executor.setMaxPoolSize(maxPoolSize);
|
||||
executor.setQueueCapacity(100000);
|
||||
executor.setQueueCapacity(1000);
|
||||
/** 允许线程空闲时间(单位:默认为秒) */
|
||||
executor.setKeepAliveSeconds(60);
|
||||
/** 线程池名前缀 */
|
||||
@ -455,7 +460,7 @@ public class AsyncConfig {
|
||||
executor.setCorePoolSize(corePoolSize);
|
||||
/** 最大线程数 */
|
||||
executor.setMaxPoolSize(maxPoolSize);
|
||||
executor.setQueueCapacity(100000);
|
||||
executor.setQueueCapacity(1000);
|
||||
/** 允许线程空闲时间(单位:默认为秒) */
|
||||
executor.setKeepAliveSeconds(60);
|
||||
/** 线程池名前缀 */
|
||||
@ -474,7 +479,7 @@ public class AsyncConfig {
|
||||
executor.setCorePoolSize(1);
|
||||
/** 最大线程数 */
|
||||
executor.setMaxPoolSize(160);
|
||||
executor.setQueueCapacity(100000);
|
||||
executor.setQueueCapacity(1000);
|
||||
/** 允许线程空闲时间(单位:默认为秒) */
|
||||
executor.setKeepAliveSeconds(60);
|
||||
/** 线程池名前缀 */
|
||||
@ -513,7 +518,7 @@ public class AsyncConfig {
|
||||
executor.setCorePoolSize(maxPoolSize * 10);
|
||||
/** 最大线程数 */
|
||||
executor.setMaxPoolSize(maxPoolSize * 10);
|
||||
executor.setQueueCapacity(queueCapacity);
|
||||
executor.setQueueCapacity(queueCapacity * 10);
|
||||
/** 允许线程空闲时间(单位:默认为秒) */
|
||||
executor.setKeepAliveSeconds(60);
|
||||
/** 线程池名前缀 */
|
||||
@ -524,4 +529,5 @@ public class AsyncConfig {
|
||||
executor.initialize();
|
||||
return executor;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -31,13 +31,6 @@ public interface Cts {
|
||||
String MSG = "msg";
|
||||
String ENTERPRISE_ID = "enterpriseId";
|
||||
|
||||
/**
|
||||
* 数据校验重试是否成功
|
||||
*/
|
||||
String TL_XZ_HIKVISION_COMPARE_DATA_RETRY = "tl_xz_hikvision_compare_data";
|
||||
String TL_IS_FROM_TASK = "isFromTask";
|
||||
String TL_IS_FROM_WEB = "isFromWeb";
|
||||
|
||||
String TYPE = "type";
|
||||
String TEAM_ID = "teamId";
|
||||
String DEPARTMENT_ID = "departmentId";
|
||||
@ -46,4 +39,18 @@ public interface Cts {
|
||||
String YYYY_MM_DD = "yyyy-MM-dd";
|
||||
String TL_AUTH_USER = "authUser";
|
||||
String PAGE_NO = "pageNo";
|
||||
|
||||
|
||||
/**
|
||||
* 数据校验重试是否成功
|
||||
*/
|
||||
String TL_XZ_HIKVISION_COMPARE_DATA_RETRY = "tl_xz_hikvision_compare_data";
|
||||
String TL_IS_FROM_TASK = "isFromTask";
|
||||
String TL_IS_FROM_WEB = "isFromWeb";
|
||||
String TL_SEND_BATCH_WORKER_COUNT_DOWN_LATCH = "sendBatchWorkerCountDownLatch";
|
||||
|
||||
/**
|
||||
* 1添加权限2删除权限
|
||||
*/
|
||||
String IS_ADD_AUTH = "isAddAuth";
|
||||
}
|
||||
|
||||
@ -1,17 +1,16 @@
|
||||
package com.zhgd.xmgl.modules.project.service;
|
||||
|
||||
import com.zhgd.xmgl.modules.project.entity.ProjectUfaceConfig;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.zhgd.xmgl.modules.project.entity.ProjectUfaceConfig;
|
||||
import com.zhgd.xmgl.modules.worker.entity.UfaceDev;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description: 项目对应的人脸设备配置
|
||||
* @author: pds
|
||||
* @date: 2020-09-23
|
||||
* @date: 2020-09-23
|
||||
* @version: V1.0
|
||||
*/
|
||||
public interface IProjectUfaceConfigService extends IService<ProjectUfaceConfig> {
|
||||
@ -32,11 +31,20 @@ public interface IProjectUfaceConfigService extends IService<ProjectUfaceConfig>
|
||||
|
||||
boolean isHikvisionConfig(String projectSn);
|
||||
|
||||
void addPersonAuth(WorkerInfo workerInfo, String devSn);
|
||||
void addHkSyncRecordsAndUpdateWorkerStatus(WorkerInfo workerInfo, String devSns);
|
||||
|
||||
void addHkSyncRecordAndResetStatusForDev(WorkerInfo workerInfo, String devSns);
|
||||
|
||||
void deletePersonAuth(WorkerInfo workerInfo, String devSns);
|
||||
void buildAndSendBatchWorkerForHk(ProjectUfaceConfig projectUfaceConfig, List<UfaceDev> allDevList, List<WorkerInfo> workerList, Long userId);
|
||||
|
||||
void sendBatchWorkerForHk(Map<String, Object> map, ProjectUfaceConfig projectUfaceConfig, List<UfaceDev> allDevList, List<WorkerInfo> workerList);
|
||||
|
||||
void buildAndSendOneWorkerAndDevForHk(List<UfaceDev> allDevList, WorkerInfo workerInfo, int operate, String devSn, String projectSn);
|
||||
|
||||
/**
|
||||
* 添加权限的记录
|
||||
*
|
||||
* @param workerInfo
|
||||
*/
|
||||
void addHkSyncRecordAndResetStatusForDev(WorkerInfo workerInfo);
|
||||
|
||||
void editHkSyncRecordAndResetStatusForDev(WorkerInfo workerInfo);
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import com.zhgd.xmgl.async.AsyncHikvision;
|
||||
import com.zhgd.xmgl.call.HikvisionCall;
|
||||
import com.zhgd.xmgl.constant.Cts;
|
||||
import com.zhgd.xmgl.modules.basicdata.service.INoticeService;
|
||||
import com.zhgd.xmgl.modules.project.entity.ProjectUfaceConfig;
|
||||
import com.zhgd.xmgl.modules.project.mapper.ProjectUfaceConfigMapper;
|
||||
@ -152,78 +153,31 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
//判断是否配置并下发设备
|
||||
if (tempProjectUfaceConfig != null && tempProjectUfaceConfig.getIssueDev() == 1) {
|
||||
String ufaceDevId = workerInfo.getUfaceDevId();
|
||||
if (tempProjectUfaceConfig.getSupplierType() == 9) {
|
||||
//isc设备
|
||||
Map<String, Object> param = new HashMap<>();
|
||||
param.put("projectSn", workerInfo.getProjectSn());
|
||||
if ("0".equals(ufaceDevId)) {
|
||||
workerInfo.setUfaceDevId(null);
|
||||
}
|
||||
if (StringUtils.isNotEmpty(ufaceDevId)) {
|
||||
param.put("registerType", workerInfo.getRegisterType());
|
||||
}
|
||||
param.put("accountType", 2);
|
||||
if (Objects.equals(workerInfo.getDevType(), 1)) {
|
||||
if (StrUtil.isBlank(ufaceDevId)) {
|
||||
return;
|
||||
Map<String, Object> param = new HashMap<>();
|
||||
param.put("projectSn", workerInfo.getProjectSn());
|
||||
if ("0".equals(ufaceDevId)) {
|
||||
workerInfo.setUfaceDevId(null);
|
||||
}
|
||||
if (StringUtils.isNotEmpty(ufaceDevId)) {
|
||||
param.put("registerType", workerInfo.getRegisterType());
|
||||
param.put("accountType", workerInfo.getAccountType());
|
||||
param.put("devIds", ufaceDevId);
|
||||
}
|
||||
List<UfaceDev> list = ufaceDevMapper.selectUserUfaceDevList(param);
|
||||
if (list != null && list.size() > 0) {
|
||||
StringBuilder devBuilder = new StringBuilder();
|
||||
StringBuilder devIdBuilder = new StringBuilder();
|
||||
for (UfaceDev dev : list) {
|
||||
if (devBuilder.length() > 0) {
|
||||
devBuilder.append(",");
|
||||
}
|
||||
param.put("devIds", ufaceDevId);
|
||||
} else if (Objects.equals(workerInfo.getDevType(), 2)) {
|
||||
//设备分组情况!
|
||||
String ufaceDevGroupId = workerInfo.getUfaceDevGroupId();
|
||||
if (StringUtils.isEmpty(ufaceDevGroupId)) {
|
||||
return;
|
||||
if (devIdBuilder.length() > 0) {
|
||||
devIdBuilder.append(",");
|
||||
}
|
||||
List<Long> ufaceIds = ufaceDevToGroupMapper.selectList(new LambdaQueryWrapper<UfaceDevToGroup>().in(UfaceDevToGroup::getUfaceDevGroupId, Arrays.asList(StringUtils.split(ufaceDevGroupId, ",")))).stream().map(UfaceDevToGroup::getUfaceDevId).collect(Collectors.toList());
|
||||
if (CollUtil.isEmpty(ufaceIds)) {
|
||||
return;
|
||||
}
|
||||
ufaceIds.stream().distinct();
|
||||
param.put("devIds", StringUtils.join(ufaceIds, ","));
|
||||
}
|
||||
List<UfaceDev> list = ufaceDevMapper.selectUserUfaceDevList(param);
|
||||
if (list != null && list.size() > 0) {
|
||||
StringBuilder devBuilder = new StringBuilder();
|
||||
StringBuilder devIdBuilder = new StringBuilder();
|
||||
for (UfaceDev dev : list) {
|
||||
if (devBuilder.length() > 0) {
|
||||
devBuilder.append(",");
|
||||
}
|
||||
if (devIdBuilder.length() > 0) {
|
||||
devIdBuilder.append(",");
|
||||
}
|
||||
devBuilder.append(dev.getDevSn());
|
||||
devIdBuilder.append(dev.getDeviceId());
|
||||
}
|
||||
sendDev(tempProjectUfaceConfig, workerInfo, devBuilder.toString(), devIdBuilder.toString());
|
||||
}
|
||||
} else {
|
||||
Map<String, Object> param = new HashMap<>();
|
||||
param.put("projectSn", workerInfo.getProjectSn());
|
||||
if ("0".equals(ufaceDevId)) {
|
||||
workerInfo.setUfaceDevId(null);
|
||||
}
|
||||
if (StringUtils.isNotEmpty(ufaceDevId)) {
|
||||
param.put("registerType", workerInfo.getRegisterType());
|
||||
param.put("accountType", workerInfo.getAccountType());
|
||||
param.put("devIds", ufaceDevId);
|
||||
}
|
||||
List<UfaceDev> list = ufaceDevMapper.selectUserUfaceDevList(param);
|
||||
if (list != null && list.size() > 0) {
|
||||
StringBuilder devBuilder = new StringBuilder();
|
||||
StringBuilder devIdBuilder = new StringBuilder();
|
||||
for (UfaceDev dev : list) {
|
||||
if (devBuilder.length() > 0) {
|
||||
devBuilder.append(",");
|
||||
}
|
||||
if (devIdBuilder.length() > 0) {
|
||||
devIdBuilder.append(",");
|
||||
}
|
||||
devBuilder.append(dev.getDevSn());
|
||||
devIdBuilder.append(dev.getDeviceId());
|
||||
}
|
||||
sendDev(tempProjectUfaceConfig, workerInfo, devBuilder.toString(), devIdBuilder.toString());
|
||||
devBuilder.append(dev.getDevSn());
|
||||
devIdBuilder.append(dev.getDeviceId());
|
||||
}
|
||||
sendDev(tempProjectUfaceConfig, workerInfo, devBuilder.toString(), devIdBuilder.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -232,30 +186,29 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
public void deleteWorkerInfo(WorkerInfo workerInfo) {
|
||||
QueryWrapper<ProjectUfaceConfig> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(ProjectUfaceConfig::getProjectSn, workerInfo.getProjectSn());
|
||||
ProjectUfaceConfig tempProjectUfaceConfig = projectUfaceConfigMapper.selectOne(queryWrapper);
|
||||
ProjectUfaceConfig ufaceConfig = projectUfaceConfigMapper.selectOne(queryWrapper);
|
||||
//判断是否配置并下发设备
|
||||
if (tempProjectUfaceConfig != null && tempProjectUfaceConfig.getIssueDev() == 1) {
|
||||
QueryWrapper<UfaceDev> qw = new QueryWrapper<>();
|
||||
qw.lambda().eq(UfaceDev::getProjectSn, workerInfo.getProjectSn());
|
||||
List<UfaceDev> list = ufaceDevMapper.selectList(qw);
|
||||
if (ufaceConfig != null && ufaceConfig.getIssueDev() == 1) {
|
||||
List<UfaceDev> list = getAllDevsByProjectSn(workerInfo.getProjectSn());
|
||||
if (list != null && list.size() > 0) {
|
||||
if (tempProjectUfaceConfig.getSupplierType() == 1) {
|
||||
UniUbiUtil.delPerson(null, tempProjectUfaceConfig.getAppId(), tempProjectUfaceConfig.getAppKey(), tempProjectUfaceConfig.getAppSecret(), workerInfo.getIdCard());
|
||||
} else if (tempProjectUfaceConfig.getSupplierType() == 4) {
|
||||
QYUfaceUtil.deleteNewPerson(tempProjectUfaceConfig.getAppId(), tempProjectUfaceConfig.getAppSecret(), workerInfo.getIdCard());
|
||||
} else if (tempProjectUfaceConfig.getSupplierType() == 5) {
|
||||
if (ufaceConfig.getSupplierType() == 1) {
|
||||
UniUbiUtil.delPerson(null, ufaceConfig.getAppId(), ufaceConfig.getAppKey(), ufaceConfig.getAppSecret(), workerInfo.getIdCard());
|
||||
} else if (ufaceConfig.getSupplierType() == 4) {
|
||||
QYUfaceUtil.deleteNewPerson(ufaceConfig.getAppId(), ufaceConfig.getAppSecret(), workerInfo.getIdCard());
|
||||
} else if (ufaceConfig.getSupplierType() == 5) {
|
||||
//佳信捷设备
|
||||
JxjUfaceUtil.deleteWorkerInfo(workerInfo, tempProjectUfaceConfig);
|
||||
} else if (tempProjectUfaceConfig.getSupplierType() == 6) {
|
||||
JxjUfaceUtil.deleteWorkerInfo(workerInfo, ufaceConfig);
|
||||
} else if (ufaceConfig.getSupplierType() == 6) {
|
||||
//佳信捷新设备
|
||||
JxjNewUfaceDevUtil.deleteWorkerInfo(workerInfo, tempProjectUfaceConfig);
|
||||
} else if (tempProjectUfaceConfig.getSupplierType() == 7) {
|
||||
JxjNewUfaceDevUtil.deleteWorkerInfo(workerInfo, ufaceConfig);
|
||||
} else if (ufaceConfig.getSupplierType() == 7) {
|
||||
//海康门禁sdk
|
||||
HikvisionUfaceSDKUtil.deletePerson(workerInfo, tempProjectUfaceConfig, workerInfo.getUfaceDevId());
|
||||
} else if (tempProjectUfaceConfig.getSupplierType() == 9) {
|
||||
HikvisionUfaceSDKUtil.deletePerson(workerInfo, ufaceConfig, workerInfo.getUfaceDevId());
|
||||
} else if (ufaceConfig.getSupplierType() == 9) {
|
||||
//海康门禁isc
|
||||
String notDevSns = StrUtil.join(",", list.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
this.deletePersonAuth(workerInfo, notDevSns);
|
||||
List<UfaceDev> ufaceDevs = getAllDevsByProjectSn(ufaceConfig.getProjectSn());
|
||||
this.deleteHkSyncRecordAndResetStatusForDev(workerInfo, ufaceDevs);
|
||||
this.buildAndSendOneWorkerForHk(ufaceDevs, workerInfo, 3, ufaceConfig.getProjectSn());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -265,67 +218,13 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
public void updateWorkerInfo(WorkerInfo workerInfo, WorkerInfo oldWorkerInfo) {
|
||||
QueryWrapper<ProjectUfaceConfig> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(ProjectUfaceConfig::getProjectSn, workerInfo.getProjectSn());
|
||||
ProjectUfaceConfig tempProjectUfaceConfig = projectUfaceConfigMapper.selectOne(queryWrapper);
|
||||
ProjectUfaceConfig ufaceConfig = projectUfaceConfigMapper.selectOne(queryWrapper);
|
||||
//判断是否配置并下发设备
|
||||
if (tempProjectUfaceConfig != null && tempProjectUfaceConfig.getIssueDev() == 1) {
|
||||
if (tempProjectUfaceConfig.getSupplierType() == 9) {
|
||||
if (NumberUtils.lt(workerInfo.getSafeScore(), 80D)) {
|
||||
//红码不能通行
|
||||
List<UfaceDev> allList = ufaceDevMapper.selectList(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getProjectSn, workerInfo.getProjectSn()));
|
||||
if (CollUtil.isNotEmpty(allList)) {
|
||||
String devSns = StrUtil.join(",", allList.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
this.deletePersonAuth(workerInfo, devSns);
|
||||
}
|
||||
} else {
|
||||
//海康门禁isc
|
||||
String devSns = "";
|
||||
String notDevSns = "";
|
||||
if (Objects.equals(workerInfo.getDevType(), 1)) {
|
||||
devSns = workerInfo.getUfaceDevId();
|
||||
if (StrUtil.isNotBlank(devSns)) {
|
||||
List<UfaceDev> existList = ufaceDevMapper.selectList(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getProjectSn, workerInfo.getProjectSn()).in(UfaceDev::getId, StrUtil.split(devSns, ",")));
|
||||
List<UfaceDev> notExistList = ufaceDevMapper.selectList(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getProjectSn, workerInfo.getProjectSn()).notIn(UfaceDev::getId, StrUtil.split(devSns, ",")));
|
||||
if (CollUtil.isNotEmpty(notExistList)) {
|
||||
notDevSns = StrUtil.join(",", notExistList.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
this.deletePersonAuth(workerInfo, notDevSns);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(existList)) {
|
||||
devSns = StrUtil.join(",", existList.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
this.addPersonAuth(workerInfo, devSns);
|
||||
}
|
||||
} else {
|
||||
//只删除
|
||||
List<UfaceDev> notExistList = ufaceDevMapper.selectList(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getProjectSn, workerInfo.getProjectSn()));
|
||||
if (CollUtil.isNotEmpty(notExistList)) {
|
||||
notDevSns = StrUtil.join(",", notExistList.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
this.deletePersonAuth(workerInfo, notDevSns);
|
||||
}
|
||||
}
|
||||
} else if (Objects.equals(workerInfo.getDevType(), 2)) {
|
||||
//设备分组情况!
|
||||
String ufaceDevGroupId = workerInfo.getUfaceDevGroupId();
|
||||
if (StrUtil.isNotBlank(ufaceDevGroupId)) {
|
||||
List<UfaceDev> listForIsc = ufaceDevMapper.getUfaceDevListForIsc(StrUtil.split(ufaceDevGroupId, ","), workerInfo.getProjectSn());
|
||||
List<UfaceDev> notExistList = ufaceDevMapper.getUfaceDevListForIscNotExist(StrUtil.split(ufaceDevGroupId, ","), workerInfo.getProjectSn());
|
||||
if (CollUtil.isNotEmpty(notExistList)) {
|
||||
notDevSns = StrUtil.join(",", notExistList.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
this.deletePersonAuth(workerInfo, notDevSns);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(listForIsc)) {
|
||||
devSns = StrUtil.join(",", listForIsc.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
this.addPersonAuth(workerInfo, devSns);
|
||||
}
|
||||
} else {
|
||||
//只删除
|
||||
List<UfaceDev> notExistList = ufaceDevMapper.selectList(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getProjectSn, workerInfo.getProjectSn()));
|
||||
if (CollUtil.isNotEmpty(notExistList)) {
|
||||
notDevSns = StrUtil.join(",", notExistList.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
this.deletePersonAuth(workerInfo, notDevSns);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
workerInfoService.resetHkStatus(workerInfo);
|
||||
if (ufaceConfig != null && ufaceConfig.getIssueDev() == 1) {
|
||||
if (ufaceConfig.getSupplierType() == 9) {
|
||||
List<UfaceDev> list = getAllDevsByProjectSn(workerInfo.getProjectSn());
|
||||
this.buildAndSendOneWorkerForHk(list, workerInfo, 2, workerInfo.getProjectSn());
|
||||
workerInfoService.updateWorkerHkStatus(workerInfo);
|
||||
} else {
|
||||
Map<String, Object> param = new HashMap<>();
|
||||
param.put("projectSn", workerInfo.getProjectSn());
|
||||
@ -358,35 +257,35 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
devBuilder.append(dev.getDevSn());
|
||||
devIdBuilder.append(dev.getDeviceId());
|
||||
}
|
||||
if (tempProjectUfaceConfig.getSupplierType() == 1) {
|
||||
if (ufaceConfig.getSupplierType() == 1) {
|
||||
String image = "";
|
||||
if (StringUtils.isNotEmpty(workerInfo.getFieldAcquisitionUrl()) && workerInfo.getFieldAcquisitionUrl().startsWith("http")) {
|
||||
image = workerInfo.getFieldAcquisitionUrl();
|
||||
} else {
|
||||
image = basePath + "/" + workerInfo.getFieldAcquisitionUrl();
|
||||
}
|
||||
UniUbiUtil.addPerson(tempProjectUfaceConfig.getAppId(), tempProjectUfaceConfig.getAppKey(), tempProjectUfaceConfig.getAppSecret(), workerInfo.getWorkerName(), workerInfo.getAttendanceNumber(), workerInfo.getIdCard(), image, devBuilder.toString());
|
||||
} else if (tempProjectUfaceConfig.getSupplierType() == 4) {
|
||||
UniUbiUtil.addPerson(ufaceConfig.getAppId(), ufaceConfig.getAppKey(), ufaceConfig.getAppSecret(), workerInfo.getWorkerName(), workerInfo.getAttendanceNumber(), workerInfo.getIdCard(), image, devBuilder.toString());
|
||||
} else if (ufaceConfig.getSupplierType() == 4) {
|
||||
//人员唯一编号改变需要先删除再下发
|
||||
if (oldWorkerInfo != null && workerInfo.getIdCard().equals(oldWorkerInfo.getIdCard())) {
|
||||
try {
|
||||
QYUfaceUtil.deleteNewPerson(tempProjectUfaceConfig.getAppId(), tempProjectUfaceConfig.getAppSecret(), oldWorkerInfo.getIdCard());
|
||||
QYUfaceUtil.deleteNewPerson(ufaceConfig.getAppId(), ufaceConfig.getAppSecret(), oldWorkerInfo.getIdCard());
|
||||
} catch (Exception e) {
|
||||
log.error("error:", e);
|
||||
}
|
||||
}
|
||||
QYUfaceUtil.addOrUpdatePerson(tempProjectUfaceConfig.getAppId(), tempProjectUfaceConfig.getAppSecret(), 1, workerInfo.getIdCard(), workerInfo.getWorkerName(), "", "", workerInfo.getIdCard(), "", "", 3, "", devIdBuilder.toString().split(","), basePath + "/" + workerInfo.getFieldAcquisitionUrl());
|
||||
} else if (tempProjectUfaceConfig.getSupplierType() == 5) {
|
||||
QYUfaceUtil.addOrUpdatePerson(ufaceConfig.getAppId(), ufaceConfig.getAppSecret(), 1, workerInfo.getIdCard(), workerInfo.getWorkerName(), "", "", workerInfo.getIdCard(), "", "", 3, "", devIdBuilder.toString().split(","), basePath + "/" + workerInfo.getFieldAcquisitionUrl());
|
||||
} else if (ufaceConfig.getSupplierType() == 5) {
|
||||
//佳信捷设备
|
||||
JxjUfaceUtil.updateWorkerInfo(workerInfo, tempProjectUfaceConfig, serverUrl + "/image/");
|
||||
} else if (tempProjectUfaceConfig.getSupplierType() == 6) {
|
||||
JxjUfaceUtil.updateWorkerInfo(workerInfo, ufaceConfig, serverUrl + "/image/");
|
||||
} else if (ufaceConfig.getSupplierType() == 6) {
|
||||
//佳信捷新设备
|
||||
JxjNewUfaceDevUtil.addOrUpdatePerson(workerInfo, tempProjectUfaceConfig, basePath, devBuilder.toString(), jxjDevImageType);
|
||||
} else if (tempProjectUfaceConfig.getSupplierType() == 7) {
|
||||
JxjNewUfaceDevUtil.addOrUpdatePerson(workerInfo, ufaceConfig, basePath, devBuilder.toString(), jxjDevImageType);
|
||||
} else if (ufaceConfig.getSupplierType() == 7) {
|
||||
//海康门禁sdk
|
||||
HikvisionUfaceSDKUtil.deletePerson(workerInfo, tempProjectUfaceConfig, oldWorkerInfo.getUfaceDevId());
|
||||
HikvisionUfaceSDKUtil.deletePerson(workerInfo, ufaceConfig, oldWorkerInfo.getUfaceDevId());
|
||||
if (hasDev) {
|
||||
HikvisionUfaceSDKUtil.addOrUpdatePerson(workerInfo, tempProjectUfaceConfig, devBuilder.toString());
|
||||
HikvisionUfaceSDKUtil.addOrUpdatePerson(workerInfo, ufaceConfig, devBuilder.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -394,13 +293,89 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
}
|
||||
}
|
||||
|
||||
public Pair<String, String> getSendBatchDevSnsAndDevIds(WorkerInfo workerInfo, List<UfaceDev> allDevList) {
|
||||
String rtDevSn = null;
|
||||
String rtDevId = null;
|
||||
if ("0".equals(workerInfo.getUfaceDevId())) {
|
||||
workerInfo.setUfaceDevId(null);
|
||||
/**
|
||||
* 查询所有设备列表
|
||||
*
|
||||
* @param projectSn
|
||||
* @return
|
||||
*/
|
||||
private List<UfaceDev> getAllDevsByProjectSn(String projectSn) {
|
||||
QueryWrapper<UfaceDev> qw = new QueryWrapper<>();
|
||||
qw.lambda().eq(UfaceDev::getProjectSn, projectSn);
|
||||
return ufaceDevMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取下发的设备sns和删除下发的设备sns
|
||||
*
|
||||
* @param workerInfo
|
||||
* @return
|
||||
*/
|
||||
public Pair<String, String> getSendAndDeleteDevSns(WorkerInfo workerInfo) {
|
||||
//海康门禁isc
|
||||
String devSns = "";
|
||||
String notDevSns = "";
|
||||
if (NumberUtils.lt(workerInfo.getSafeScore(), 80D)) {
|
||||
//红码不能通行
|
||||
List<UfaceDev> allList = ufaceDevMapper.selectList(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getProjectSn, workerInfo.getProjectSn()));
|
||||
if (CollUtil.isNotEmpty(allList)) {
|
||||
notDevSns = StrUtil.join(",", allList.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
}
|
||||
} else if (Objects.equals(workerInfo.getDevType(), 1)) {
|
||||
devSns = workerInfo.getUfaceDevId();
|
||||
if (StrUtil.isNotBlank(devSns)) {
|
||||
List<UfaceDev> existList = ufaceDevMapper.selectList(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getProjectSn, workerInfo.getProjectSn()).in(UfaceDev::getId, StrUtil.split(devSns, ",")));
|
||||
List<UfaceDev> notExistList = ufaceDevMapper.selectList(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getProjectSn, workerInfo.getProjectSn()).notIn(UfaceDev::getId, StrUtil.split(devSns, ",")));
|
||||
if (CollUtil.isNotEmpty(notExistList)) {
|
||||
notDevSns = StrUtil.join(",", notExistList.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
}
|
||||
if (CollUtil.isNotEmpty(existList)) {
|
||||
devSns = StrUtil.join(",", existList.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
}
|
||||
} else {
|
||||
//只删除
|
||||
List<UfaceDev> notExistList = ufaceDevMapper.selectList(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getProjectSn, workerInfo.getProjectSn()));
|
||||
if (CollUtil.isNotEmpty(notExistList)) {
|
||||
notDevSns = StrUtil.join(",", notExistList.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//设备分组情况
|
||||
String ufaceDevGroupId = workerInfo.getUfaceDevGroupId();
|
||||
if (StrUtil.isNotBlank(ufaceDevGroupId)) {
|
||||
List<UfaceDev> listForIsc = ufaceDevMapper.getUfaceDevListForIsc(StrUtil.split(ufaceDevGroupId, ","), workerInfo.getProjectSn());
|
||||
List<UfaceDev> notExistList = ufaceDevMapper.getUfaceDevListForIscNotExist(StrUtil.split(ufaceDevGroupId, ","), workerInfo.getProjectSn());
|
||||
if (CollUtil.isNotEmpty(notExistList)) {
|
||||
notDevSns = StrUtil.join(",", notExistList.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
}
|
||||
if (CollUtil.isNotEmpty(listForIsc)) {
|
||||
devSns = StrUtil.join(",", listForIsc.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
}
|
||||
} else {
|
||||
//只删除
|
||||
List<UfaceDev> notExistList = ufaceDevMapper.selectList(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getProjectSn, workerInfo.getProjectSn()));
|
||||
if (CollUtil.isNotEmpty(notExistList)) {
|
||||
notDevSns = StrUtil.join(",", notExistList.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
}
|
||||
}
|
||||
}
|
||||
return new ImmutablePair<String, String>(devSns, notDevSns);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取下发的设备sns和设备ids
|
||||
*
|
||||
* @param workerInfo
|
||||
* @param allDevList
|
||||
* @return
|
||||
*/
|
||||
public Pair<String, String> getBatchDevSnsAndDevIds(WorkerInfo workerInfo, List<UfaceDev> allDevList) {
|
||||
String rtDevSns = null;
|
||||
String rtDevIds = null;
|
||||
if (Objects.equals(workerInfo.getDevType(), 1)) {
|
||||
if ("0".equals(workerInfo.getUfaceDevId())) {
|
||||
workerInfo.setUfaceDevId(null);
|
||||
}
|
||||
StringBuilder devBuilder = new StringBuilder();
|
||||
StringBuilder devIdBuilder = new StringBuilder();
|
||||
if (StringUtils.isNotEmpty(workerInfo.getUfaceDevId())) {
|
||||
@ -431,8 +406,8 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
devIdBuilder.append(dev.getDeviceId());
|
||||
}
|
||||
}
|
||||
rtDevSn = devBuilder.toString();
|
||||
rtDevId = devIdBuilder.toString();
|
||||
rtDevSns = devBuilder.toString();
|
||||
rtDevIds = devIdBuilder.toString();
|
||||
} else {
|
||||
//设备分组情况
|
||||
String ufaceDevGroupId = workerInfo.getUfaceDevGroupId();
|
||||
@ -458,19 +433,19 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
devBuilder1.append(dev.getDevSn());
|
||||
devIdBuilder1.append(dev.getDeviceId());
|
||||
}
|
||||
rtDevId = devIdBuilder1.toString();
|
||||
rtDevSn = devBuilder1.toString();
|
||||
rtDevIds = devIdBuilder1.toString();
|
||||
rtDevSns = devBuilder1.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
log.info("准备下发人员名称:{},devSn:{},devId:{}", workerInfo.getWorkerName(), rtDevSn, rtDevId);
|
||||
return new ImmutablePair<>(rtDevSn, rtDevId);
|
||||
log.info("准备下发人员名称:{},devSn:{},devId:{}", workerInfo.getWorkerName(), rtDevSns, rtDevIds);
|
||||
return new ImmutablePair<>(rtDevSns, rtDevIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendBatchWorkerInfo(WorkerInfo workerInfo, ProjectUfaceConfig projectUfaceConfig, List<UfaceDev> allDevList) {
|
||||
Pair<String, String> devSnsAndDevIdsPair = getSendBatchDevSnsAndDevIds(workerInfo, allDevList);
|
||||
Pair<String, String> devSnsAndDevIdsPair = getBatchDevSnsAndDevIds(workerInfo, allDevList);
|
||||
String right = devSnsAndDevIdsPair.getRight();
|
||||
if (right != null) {
|
||||
sendDev(projectUfaceConfig, workerInfo, devSnsAndDevIdsPair.getLeft(), right);
|
||||
@ -483,79 +458,61 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
return c > 0;
|
||||
}
|
||||
|
||||
public void sendDev(ProjectUfaceConfig tempProjectUfaceConfig, WorkerInfo workerInfo, String devSns, String devIds) {
|
||||
log.info("supplierType:{}", tempProjectUfaceConfig.getSupplierType());
|
||||
public void sendDev(ProjectUfaceConfig ufaceConfig, WorkerInfo workerInfo, String devSns, String devIds) {
|
||||
log.info("supplierType:{}", ufaceConfig.getSupplierType());
|
||||
//1杭州宇泛智能科技,2用jdpush推送,3.mqtt,4.芊熠智能,5佳信捷,6佳信捷新设备
|
||||
if (tempProjectUfaceConfig.getSupplierType() == 1) {
|
||||
if (ufaceConfig.getSupplierType() == 1) {
|
||||
String image = "";
|
||||
if (StringUtils.isNotEmpty(workerInfo.getFieldAcquisitionUrl()) && workerInfo.getFieldAcquisitionUrl().startsWith("http")) {
|
||||
image = workerInfo.getFieldAcquisitionUrl();
|
||||
} else {
|
||||
image = basePath + "/" + workerInfo.getFieldAcquisitionUrl();
|
||||
}
|
||||
UniUbiUtil.addPerson(tempProjectUfaceConfig.getAppId(), tempProjectUfaceConfig.getAppKey(), tempProjectUfaceConfig.getAppSecret(), workerInfo.getWorkerName(), workerInfo.getAttendanceNumber(), workerInfo.getIdCard(), image, devSns);
|
||||
} else if (tempProjectUfaceConfig.getSupplierType() == 4) {
|
||||
QYUfaceUtil.addOrUpdatePerson(tempProjectUfaceConfig.getAppId(), tempProjectUfaceConfig.getAppSecret(), 1, workerInfo.getIdCard(), workerInfo.getWorkerName(), "", workerInfo.getPhoneNumber(), workerInfo.getIdCard(), workerInfo.getAttendanceNumber(), workerInfo.getNation(), workerInfo.getSex(), workerInfo.getBirthday(), devIds.split(","), basePath + "/" + workerInfo.getFieldAcquisitionUrl());
|
||||
} else if (tempProjectUfaceConfig.getSupplierType() == 5) {
|
||||
UniUbiUtil.addPerson(ufaceConfig.getAppId(), ufaceConfig.getAppKey(), ufaceConfig.getAppSecret(), workerInfo.getWorkerName(), workerInfo.getAttendanceNumber(), workerInfo.getIdCard(), image, devSns);
|
||||
} else if (ufaceConfig.getSupplierType() == 4) {
|
||||
QYUfaceUtil.addOrUpdatePerson(ufaceConfig.getAppId(), ufaceConfig.getAppSecret(), 1, workerInfo.getIdCard(), workerInfo.getWorkerName(), "", workerInfo.getPhoneNumber(), workerInfo.getIdCard(), workerInfo.getAttendanceNumber(), workerInfo.getNation(), workerInfo.getSex(), workerInfo.getBirthday(), devIds.split(","), basePath + "/" + workerInfo.getFieldAcquisitionUrl());
|
||||
} else if (ufaceConfig.getSupplierType() == 5) {
|
||||
//佳信捷设备
|
||||
JxjUfaceUtil.addWorkerInfo(workerInfo, tempProjectUfaceConfig, serverUrl + "/image/");
|
||||
} else if (tempProjectUfaceConfig.getSupplierType() == 6) {
|
||||
JxjUfaceUtil.addWorkerInfo(workerInfo, ufaceConfig, serverUrl + "/image/");
|
||||
} else if (ufaceConfig.getSupplierType() == 6) {
|
||||
//佳信捷新设备
|
||||
JxjNewUfaceDevUtil.addOrUpdatePerson(workerInfo, tempProjectUfaceConfig, basePath, devSns, jxjDevImageType);
|
||||
} else if (tempProjectUfaceConfig.getSupplierType() == 7) {
|
||||
JxjNewUfaceDevUtil.addOrUpdatePerson(workerInfo, ufaceConfig, basePath, devSns, jxjDevImageType);
|
||||
} else if (ufaceConfig.getSupplierType() == 7) {
|
||||
//海康门禁sdk
|
||||
HikvisionUfaceSDKUtil.addOrUpdatePerson(workerInfo, tempProjectUfaceConfig, devSns);
|
||||
} else if (tempProjectUfaceConfig.getSupplierType() == 9) {
|
||||
HikvisionUfaceSDKUtil.addOrUpdatePerson(workerInfo, ufaceConfig, devSns);
|
||||
} else if (ufaceConfig.getSupplierType() == 9) {
|
||||
//海康门禁isc
|
||||
if (NumberUtils.lt(workerInfo.getSafeScore(), 80D)) {
|
||||
log.info("安全评分红码不下发权限,名称:{}", workerInfo.getWorkerName());
|
||||
return;
|
||||
}
|
||||
this.addPersonAuth(workerInfo, devSns);
|
||||
List<UfaceDev> list = getAllDevsByProjectSn(ufaceConfig.getProjectSn());
|
||||
this.buildAndSendOneWorkerForHk(list, workerInfo, 1, ufaceConfig.getProjectSn());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addPersonAuth(WorkerInfo workerInfo, String devSns) {
|
||||
if (StringUtils.isBlank(devSns)) {
|
||||
return;
|
||||
}
|
||||
addHkSyncRecordAndResetStatusForDev(workerInfo, devSns);
|
||||
asyncHikvision.addPersonAuthAsync(workerInfo, devSns);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addHkSyncRecordAndResetStatusForDev(WorkerInfo workerInfo, String devSns) {
|
||||
getSyncTimeWithInitIfAbsent(1, workerInfo.getId());
|
||||
String[] devSnArr = StringUtils.split(devSns, ",");
|
||||
for (String ds : devSnArr) {
|
||||
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(3).setOperate(1).setWhoId(workerInfo.getId()).setDeviceSn(ds).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
|
||||
}
|
||||
workerInfoService.resetHkStatus(workerInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
* 添加海康同步记录和更新劳务人员总状态
|
||||
*
|
||||
* @param workerInfo
|
||||
* @param devSns
|
||||
*/
|
||||
@Override
|
||||
public void deletePersonAuth(WorkerInfo workerInfo, String devSns) {
|
||||
if (StringUtils.isBlank(devSns)) {
|
||||
return;
|
||||
}
|
||||
public void addHkSyncRecordsAndUpdateWorkerStatus(WorkerInfo workerInfo, String devSns) {
|
||||
getSyncTimeWithInitIfAbsent(1, workerInfo.getId());
|
||||
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).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
|
||||
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(3).setOperate(1).setWhoId(workerInfo.getId()).setDeviceSn(ds).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
|
||||
}
|
||||
asyncHikvision.deletePersonAuthAsync(workerInfo, devSns);
|
||||
workerInfoService.updateWorkerHkStatus(workerInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建workerAndDevSnList和下发人员
|
||||
*
|
||||
* @param projectUfaceConfig
|
||||
* @param allDevList
|
||||
* @param workerList
|
||||
* @param userId
|
||||
*/
|
||||
@Override
|
||||
public void sendBatchWorkerForHk(Map<String, Object> map, ProjectUfaceConfig projectUfaceConfig, List<UfaceDev> allDevList, List<WorkerInfo> workerList) {
|
||||
public void buildAndSendBatchWorkerForHk(ProjectUfaceConfig projectUfaceConfig, List<UfaceDev> allDevList, List<WorkerInfo> workerList, Long userId) {
|
||||
//构建workerAndDevSnList
|
||||
List<JSONObject> workerAndDevSnList = new ArrayList<>();
|
||||
for (WorkerInfo workerInfo : workerList) {
|
||||
@ -564,17 +521,22 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
log.info("安全评分红码不下发权限,名称:{}", workerInfo.getWorkerName());
|
||||
continue;
|
||||
}
|
||||
Pair<String, String> devSnsAndDevIdsPair = this.getSendBatchDevSnsAndDevIds(workerInfo, allDevList);
|
||||
Pair<String, String> devSnsAndDevIdsPair = this.getBatchDevSnsAndDevIds(workerInfo, allDevList);
|
||||
if (devSnsAndDevIdsPair.getRight() != null) {
|
||||
String devSns = devSnsAndDevIdsPair.getLeft();
|
||||
//清楚以前的记录
|
||||
xzHikvisionSyncMapper.delete(new LambdaQueryWrapper<XzHikvisionSync>().eq(XzHikvisionSync::getBigType, 1).eq(XzHikvisionSync::getWhoId, workerInfo.getId()));
|
||||
this.addHkSyncRecordAndResetStatusForDev(workerInfo, devSns);
|
||||
//清除以前的记录
|
||||
xzHikvisionSyncMapper.delete(new LambdaQueryWrapper<XzHikvisionSync>()
|
||||
.eq(XzHikvisionSync::getBigType, 1)
|
||||
.eq(XzHikvisionSync::getWhoId, workerInfo.getId())
|
||||
.eq(XzHikvisionSync::getType, 3)
|
||||
);
|
||||
this.addHkSyncRecordsAndUpdateWorkerStatus(workerInfo, devSns);
|
||||
List<String> devSnList = StrUtil.split(devSns, ",");
|
||||
for (String devSn : devSnList) {
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("workerId", workerInfo.getId());
|
||||
jo.put("devSn", devSn);
|
||||
jo.put(Cts.IS_ADD_AUTH, true);
|
||||
workerAndDevSnList.add(jo);
|
||||
}
|
||||
}
|
||||
@ -583,7 +545,118 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
return;
|
||||
}
|
||||
|
||||
asyncHikvision.sendBatchWorkerInfoAsync(projectUfaceConfig, allDevList, workerList, workerAndDevSnList);
|
||||
asyncHikvision.sendBatchWorkerInfoAsync(allDevList, workerList, workerAndDevSnList, userId, projectUfaceConfig.getProjectSn());
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建workerAndDevSnList和下发一个人员
|
||||
*
|
||||
* @param allDevList
|
||||
* @param workerInfo
|
||||
* @param model 1只下发有权限的,2下发有的权限和删除没有的权限,3删除所有权限
|
||||
*/
|
||||
public void buildAndSendOneWorkerForHk(List<UfaceDev> allDevList, WorkerInfo workerInfo, int model, String projectSn) {
|
||||
List<JSONObject> workerAndDevSnList = new ArrayList<>();
|
||||
if (model == 2 || model == 1) {
|
||||
Pair<String, String> sendAndDeleteDevSnsPair = getSendAndDeleteDevSns(workerInfo);
|
||||
String devSns = sendAndDeleteDevSnsPair.getLeft();
|
||||
String notDevSns = sendAndDeleteDevSnsPair.getRight();
|
||||
if (StrUtil.isNotBlank(devSns)) {
|
||||
for (String devSn : StrUtil.split(devSns, ",")) {
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("workerId", workerInfo.getId());
|
||||
jo.put("devSn", devSn);
|
||||
jo.put(Cts.IS_ADD_AUTH, true);
|
||||
workerAndDevSnList.add(jo);
|
||||
}
|
||||
}
|
||||
if (model == 2 && StrUtil.isNotBlank(notDevSns)) {
|
||||
for (String devSn : StrUtil.split(notDevSns, ",")) {
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("workerId", workerInfo.getId());
|
||||
jo.put("devSn", devSn);
|
||||
jo.put(Cts.IS_ADD_AUTH, false);
|
||||
workerAndDevSnList.add(jo);
|
||||
}
|
||||
}
|
||||
} else if (model == 3) {
|
||||
for (UfaceDev dev : allDevList) {
|
||||
String devSn = dev.getDevSn();
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("workerId", workerInfo.getId());
|
||||
jo.put("devSn", devSn);
|
||||
jo.put(Cts.IS_ADD_AUTH, false);
|
||||
workerAndDevSnList.add(jo);
|
||||
}
|
||||
}
|
||||
if (CollUtil.isEmpty(workerAndDevSnList)) {
|
||||
log.info("未找到设备,无需下发,人员:{}", workerInfo.getWorkerName());
|
||||
return;
|
||||
}
|
||||
asyncHikvision.sendBatchWorkerInfoAsync(allDevList, Collections.singletonList(workerInfo), workerAndDevSnList, null, projectSn);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建workerAndDevSnList和下发一个人员一个设备
|
||||
*
|
||||
* @param allDevList
|
||||
* @param workerInfo
|
||||
*/
|
||||
@Override
|
||||
public void buildAndSendOneWorkerAndDevForHk(List<UfaceDev> allDevList, WorkerInfo workerInfo, int operate, String devSn, String projectSn) {
|
||||
List<JSONObject> workerAndDevSnList = new ArrayList<>();
|
||||
if (operate == 1) {
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("workerId", workerInfo.getId());
|
||||
jo.put("devSn", devSn);
|
||||
jo.put(Cts.IS_ADD_AUTH, true);
|
||||
workerAndDevSnList.add(jo);
|
||||
} else if (operate == 3) {
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("workerId", workerInfo.getId());
|
||||
jo.put("devSn", devSn);
|
||||
jo.put(Cts.IS_ADD_AUTH, false);
|
||||
workerAndDevSnList.add(jo);
|
||||
}
|
||||
if (CollUtil.isEmpty(workerAndDevSnList)) {
|
||||
log.info("未找到设备,无需下发,人员:{}", workerInfo.getWorkerName());
|
||||
return;
|
||||
}
|
||||
asyncHikvision.sendBatchWorkerInfo(allDevList, Collections.singletonList(workerInfo), workerAndDevSnList, null, projectSn);
|
||||
}
|
||||
|
||||
|
||||
public void deleteHkSyncRecordAndResetStatusForDev(WorkerInfo workerInfo, List<UfaceDev> allDevList) {
|
||||
for (UfaceDev dev : allDevList) {
|
||||
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(3).setOperate(3).setWhoId(workerInfo.getId()).setDeviceSn(dev.getDevSn()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
|
||||
}
|
||||
workerInfoService.updateWorkerHkStatus(workerInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addHkSyncRecordAndResetStatusForDev(WorkerInfo workerInfo) {
|
||||
Pair<String, String> sendAndDeleteDevSnsPair = getSendAndDeleteDevSns(workerInfo);
|
||||
String devSns = sendAndDeleteDevSnsPair.getLeft();
|
||||
String[] devSnArr = StringUtils.split(devSns, ",");
|
||||
for (String ds : devSnArr) {
|
||||
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(3).setOperate(1).setWhoId(workerInfo.getId()).setDeviceSn(ds).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
|
||||
}
|
||||
workerInfoService.updateWorkerHkStatus(workerInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void editHkSyncRecordAndResetStatusForDev(WorkerInfo workerInfo) {
|
||||
Pair<String, String> sendAndDeleteDevSnsPair = getSendAndDeleteDevSns(workerInfo);
|
||||
String devSns = sendAndDeleteDevSnsPair.getLeft();
|
||||
for (String devSn : StrUtil.split(devSns, ",")) {
|
||||
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(3).setOperate(1).setWhoId(workerInfo.getId()).setDeviceSn(devSn).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
|
||||
}
|
||||
String deleteDevSns = sendAndDeleteDevSnsPair.getRight();
|
||||
for (String deleteDevSn : StrUtil.split(deleteDevSns, ",")) {
|
||||
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(3).setOperate(3).setWhoId(workerInfo.getId()).setDeviceSn(deleteDevSn).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
|
||||
}
|
||||
workerInfoService.updateWorkerHkStatus(workerInfo);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -111,7 +111,8 @@ public class UfaceDevController {
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "enterpriseId", value = "所属企业", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "personType", value = "人员类型 1、劳务人员 2、管理人员", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "userId", value = "人员ID", paramType = "body", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "userId", value = "通知的人员ID", paramType = "body", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "workerIds", value = "下发的劳务人员IDs(多个逗号分割)", paramType = "body", required = false, dataType = "String"),
|
||||
})
|
||||
@PostMapping(value = "/sendBatchWokerDev")
|
||||
public Result< Map<String, Object>> sendBatchWokerDev(@RequestBody Map<String, Object> map) {
|
||||
|
||||
@ -177,6 +177,12 @@ public interface WorkerInfoMapper extends BaseMapper<WorkerInfo> {
|
||||
|
||||
List<WorkerInfo> selectAllWorkerInfoList(@Param("projectSn") String projectSn);
|
||||
|
||||
/**
|
||||
* 查询下发的劳务人员列表
|
||||
*
|
||||
* @param ma
|
||||
* @return
|
||||
*/
|
||||
List<WorkerInfo> selectProjectWorkerInfoList(Map<String, Object> ma);
|
||||
|
||||
String selectCarDriverNameByWorkerId(@Param("driverWorkerId") String driverWorkerId);
|
||||
|
||||
@ -1449,6 +1449,9 @@
|
||||
<if test="personType != null and personType != ''">
|
||||
and person_type = #{personType}
|
||||
</if>
|
||||
<if test="workerIds != null and workerIds != ''">
|
||||
and find_in_set(id, #{workerIds})
|
||||
</if>
|
||||
</select>
|
||||
<select id="selectCarDriverNameByWorkerId" resultType="java.lang.String">
|
||||
select GROUP_CONCAT(worker_name)
|
||||
|
||||
@ -160,4 +160,6 @@ public interface IWorkerInfoService extends IService<WorkerInfo> {
|
||||
void deleteWorkerForHikvision(String uniqueId, WorkerInfo workerInfo);
|
||||
|
||||
void editWorkerForHikvision(WorkerInfo workerInfo);
|
||||
|
||||
void editWorkerAndAuthForHikvision(WorkerInfo workerInfo, WorkerInfo oldWorkerInfo);
|
||||
}
|
||||
|
||||
@ -209,7 +209,7 @@ public class UfaceDevServiceImpl extends ServiceImpl<UfaceDevMapper, UfaceDev> i
|
||||
if (list == null || list.size() == 0) {
|
||||
throw new OpenAlertException("请先添加设备");
|
||||
}
|
||||
asyncWorker.sendBatchWokerDev(map, tempProjectUfaceConfig, list);
|
||||
asyncWorker.sendBatchWokerDevAsync(map, tempProjectUfaceConfig, list);
|
||||
} else {
|
||||
throw new OpenAlertException("项目配置不下发设备或未配置参数");
|
||||
}
|
||||
|
||||
@ -387,8 +387,7 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
|
||||
workerInfoMapper.insert(workerInfo);
|
||||
ThreadLocalUtil.addInKey("now", new Date());
|
||||
//同步海康
|
||||
addWorkerForHikvision(workerInfo);
|
||||
projectUfaceConfigService.addWorkerInfo(workerInfo);
|
||||
this.addWorkerAndAuthForHikvision(workerInfo);
|
||||
//上传住建
|
||||
asyncWorker.sendWorkerInfoById(workerInfo);
|
||||
asyncWorker.sendAndOrEditWorkerInfo(workerInfo);
|
||||
@ -453,9 +452,8 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
|
||||
}
|
||||
workerInfoMapper.updateById(workerInfo);
|
||||
//同步海康
|
||||
editWorkerForHikvision(workerInfo);
|
||||
this.editWorkerAndAuthForHikvision(workerInfo, oldWorkerInfo);
|
||||
|
||||
projectUfaceConfigService.updateWorkerInfo(workerInfo, oldWorkerInfo);
|
||||
//上传住建
|
||||
//housingDataCall.sendUpdateWork(workerInfo.getProjectSn(),workerInfo.getId());
|
||||
//上传住建
|
||||
@ -470,11 +468,16 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
|
||||
govtOpenApiService.workerInfoAddSync(workerInfo);
|
||||
}
|
||||
asyncJiLianDa.saveWorkerInfo(workerInfo);
|
||||
resetHkStatus(workerInfo);
|
||||
updateWorkerHkStatus(workerInfo);
|
||||
return workerInfo;
|
||||
}
|
||||
|
||||
public void resetHkStatus(WorkerInfo workerInfo) {
|
||||
/**
|
||||
* 更新劳务人员总状态
|
||||
*
|
||||
* @param workerInfo
|
||||
*/
|
||||
public void updateWorkerHkStatus(WorkerInfo workerInfo) {
|
||||
hikvisionCall.updateTotalStatus(workerInfo.getProjectSn(), workerInfo.getId(), 1);
|
||||
}
|
||||
|
||||
@ -1631,7 +1634,6 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
|
||||
Result<String> result = new Result<String>();
|
||||
StringBuilder existName = new StringBuilder("");
|
||||
String ufaceId = null;
|
||||
Date now = new Date();
|
||||
try {
|
||||
InputStream is = excelFile.getInputStream();
|
||||
List<Map<String, String>> list = ExcelUtils.jxlExlToList(is, 0);
|
||||
@ -1762,7 +1764,7 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
|
||||
workerInfo.setId(oldWorkerInfo.getId());
|
||||
workerInfoMapper.updateById(workerInfo);
|
||||
//同步海康
|
||||
editWorkerForHikvision(workerInfo);
|
||||
this.editWorkerForHikvision(workerInfo);
|
||||
} else {
|
||||
String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase();
|
||||
workerInfo.setPersonSn(uuid);
|
||||
@ -1770,7 +1772,7 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
|
||||
workerInfo.setAttendanceNumber(workerInfo.getIdCard());
|
||||
workerInfoMapper.insert(workerInfo);
|
||||
//同步海康
|
||||
addWorkerForHikvision(workerInfo);
|
||||
this.addWorkerForHikvision(workerInfo);
|
||||
}
|
||||
asyncJiLianDa.saveWorkerInfo(workerInfo);
|
||||
}
|
||||
@ -2231,11 +2233,19 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
|
||||
workerInfoMapper.updateScore(map);
|
||||
WorkerInfo workerInfo = baseMapper.selectById(id);
|
||||
if (notNeedSend(old, workerInfo)) return;
|
||||
projectUfaceConfigService.editHkSyncRecordAndResetStatusForDev(workerInfo);
|
||||
projectUfaceConfigService.updateWorkerInfo(workerInfo, workerInfo);
|
||||
resetHkStatus(workerInfo);
|
||||
updateWorkerHkStatus(workerInfo);
|
||||
}
|
||||
|
||||
private boolean notNeedSend(WorkerInfo old, WorkerInfo newWi) {
|
||||
/**
|
||||
* 是否需要下发,根据分数
|
||||
*
|
||||
* @param old
|
||||
* @param newWi
|
||||
* @return
|
||||
*/
|
||||
public boolean notNeedSend(WorkerInfo old, WorkerInfo newWi) {
|
||||
boolean bothRed = NumberUtils.lt(old.getSafeScore(), 80D) && NumberUtils.lt(newWi.getSafeScore(), 80D);
|
||||
boolean bothNotRed = !NumberUtils.lt(old.getSafeScore(), 80D) && !NumberUtils.lt(newWi.getSafeScore(), 80D);
|
||||
if ((bothRed || bothNotRed) && Objects.equals(old.getSendSuccessStatus(), 1)) {
|
||||
@ -2253,6 +2263,7 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
|
||||
updateById(workerInfo);
|
||||
if (Objects.equals(workerInfo.getSafeScore(), 100D)) {
|
||||
old.setSafeScore(100D);
|
||||
projectUfaceConfigService.editHkSyncRecordAndResetStatusForDev(workerInfo);
|
||||
projectUfaceConfigService.updateWorkerInfo(old, old);
|
||||
}
|
||||
}
|
||||
@ -2362,36 +2373,52 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
|
||||
return number.get();
|
||||
}
|
||||
|
||||
public void addWorkerAndAuthForHikvision(WorkerInfo workerInfo) {
|
||||
this.addHkSyncRecordIf(workerInfo, 1);
|
||||
projectUfaceConfigService.addHkSyncRecordAndResetStatusForDev(workerInfo);
|
||||
asyncHikvision.addWorkerAndAuthAsync(workerInfo, true, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addWorkerForHikvision(WorkerInfo workerInfo) {
|
||||
if (!addHkSyncRecordIf(workerInfo, 1)) return;
|
||||
asyncHikvision.addWorkerAsync(workerInfo, true, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加同步记录如果是海康
|
||||
*
|
||||
* @param workerInfo
|
||||
* @param operate
|
||||
* @return
|
||||
*/
|
||||
public boolean addHkSyncRecordIf(WorkerInfo workerInfo, int operate) {
|
||||
boolean hikvisionConfig = projectUfaceConfigService.isHikvisionConfig(workerInfo.getProjectSn());
|
||||
if (!hikvisionConfig) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(1).setOperate(1).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
|
||||
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(2).setOperate(1).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
|
||||
asyncHikvision.addWorkerForHikvisionAsync(workerInfo, true, true);
|
||||
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(1).setOperate(operate).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
|
||||
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(2).setOperate(operate).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteWorkerForHikvision(String uniqueId, WorkerInfo workerInfo) {
|
||||
boolean hikvisionConfig = projectUfaceConfigService.isHikvisionConfig(workerInfo.getProjectSn());
|
||||
if (!hikvisionConfig) {
|
||||
return;
|
||||
}
|
||||
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(1).setOperate(3).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
|
||||
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(2).setOperate(3).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
|
||||
if (!addHkSyncRecordIf(workerInfo, 3)) return;
|
||||
asyncHikvision.deleteWorkerForHikvisionAsync(uniqueId, workerInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void editWorkerForHikvision(WorkerInfo workerInfo) {
|
||||
boolean hikvisionConfig = projectUfaceConfigService.isHikvisionConfig(workerInfo.getProjectSn());
|
||||
if (!hikvisionConfig) {
|
||||
return;
|
||||
}
|
||||
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(1).setOperate(2).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
|
||||
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(2).setOperate(2).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
|
||||
asyncHikvision.editWorkerForHikvisionAsync(workerInfo, true, true);
|
||||
if (!addHkSyncRecordIf(workerInfo, 2)) return;
|
||||
asyncHikvision.editWorkerAsync(workerInfo, true, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void editWorkerAndAuthForHikvision(WorkerInfo workerInfo, WorkerInfo oldWorkerInfo) {
|
||||
this.addHkSyncRecordIf(workerInfo, 2);
|
||||
projectUfaceConfigService.editHkSyncRecordAndResetStatusForDev(workerInfo);
|
||||
asyncHikvision.editWorkerAndAuthAsync(workerInfo, true, true);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -300,7 +300,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
|
||||
//查询id是否存在平台,存在就更新,不存在就删除
|
||||
if (workerInfo != null) {
|
||||
//同步海康
|
||||
asyncHikvision.editWorkerForHikvisionAsync(workerInfo, isWorker, !isWorker);
|
||||
asyncHikvision.editWorkerAsync(workerInfo, isWorker, !isWorker);
|
||||
} else {
|
||||
workerInfo = new WorkerInfo();
|
||||
workerInfo.setWorkerName(data.getWorkerName());
|
||||
@ -316,10 +316,10 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
|
||||
JSONArray list = HikvisionUtil.getJSONObjectData(rtJo).getJSONArray("list");
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
//新增
|
||||
asyncHikvision.addWorkerForHikvisionAsync(workerInfo, isWorker, !isWorker);
|
||||
asyncHikvision.addWorkerAsync(workerInfo, isWorker, !isWorker);
|
||||
} else {
|
||||
//更新
|
||||
asyncHikvision.editWorkerForHikvisionAsync(workerInfo, isWorker, !isWorker);
|
||||
asyncHikvision.editWorkerAsync(workerInfo, isWorker, !isWorker);
|
||||
}
|
||||
} else {
|
||||
log.error("校验数据同步海康失败,失败原因:{}", rtJo.toJSONString());
|
||||
|
||||
@ -15,7 +15,9 @@ import com.zhgd.xmgl.modules.car.mapper.CarInfoMapper;
|
||||
import com.zhgd.xmgl.modules.project.entity.Project;
|
||||
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
|
||||
import com.zhgd.xmgl.modules.project.service.IProjectUfaceConfigService;
|
||||
import com.zhgd.xmgl.modules.worker.entity.UfaceDev;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import com.zhgd.xmgl.modules.worker.mapper.UfaceDevMapper;
|
||||
import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper;
|
||||
import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync;
|
||||
import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionSyncMapper;
|
||||
@ -57,6 +59,8 @@ public class XzHikvisionSyncServiceImpl extends ServiceImpl<XzHikvisionSyncMappe
|
||||
private WorkerInfoMapper workerInfoMapper;
|
||||
@Autowired
|
||||
private ProjectMapper projectMapper;
|
||||
@Autowired
|
||||
private UfaceDevMapper ufaceDevMapper;
|
||||
|
||||
public static void main(String[] args) {
|
||||
Date val = new Date();
|
||||
@ -203,8 +207,9 @@ public class XzHikvisionSyncServiceImpl extends ServiceImpl<XzHikvisionSyncMappe
|
||||
} else {
|
||||
//人员
|
||||
WorkerInfo workerInfo = workerInfoMapper.selectById(whoId);
|
||||
String projectSn = workerInfo.getProjectSn();
|
||||
Project p = projectMapper.selectOne(new LambdaQueryWrapper<Project>()
|
||||
.eq(Project::getProjectSn, workerInfo.getProjectSn())
|
||||
.eq(Project::getProjectSn, projectSn)
|
||||
.eq(Project::getSyncHikvision, 1)
|
||||
);
|
||||
if (p == null) {
|
||||
@ -212,26 +217,25 @@ public class XzHikvisionSyncServiceImpl extends ServiceImpl<XzHikvisionSyncMappe
|
||||
}
|
||||
if (xzHikvisionSync.getType() == 1) {
|
||||
if (xzHikvisionSync.getOperate() == 1) {
|
||||
asyncHikvision.addWorkerForHikvision(workerInfo, true, true);
|
||||
asyncHikvision.addWorker(workerInfo, true, true);
|
||||
} else if (xzHikvisionSync.getOperate() == 2) {
|
||||
asyncHikvision.editWorkerForHikvision(workerInfo, true, true);
|
||||
asyncHikvision.editWorker(workerInfo, true, true);
|
||||
} else if (xzHikvisionSync.getOperate() == 3) {
|
||||
asyncHikvision.deleteWorkerForHikvision(String.valueOf(workerInfo.getId()), workerInfo);
|
||||
}
|
||||
} else if (xzHikvisionSync.getType() == 2) {
|
||||
if (xzHikvisionSync.getOperate() == 1) {
|
||||
asyncHikvision.addWorkerForHikvision(workerInfo, false, true);
|
||||
asyncHikvision.addWorker(workerInfo, false, true);
|
||||
} else if (xzHikvisionSync.getOperate() == 2) {
|
||||
asyncHikvision.editWorkerForHikvision(workerInfo, false, true);
|
||||
asyncHikvision.editWorker(workerInfo, false, true);
|
||||
} else if (xzHikvisionSync.getOperate() == 3) {
|
||||
asyncHikvision.deleteWorkerForHikvision(String.valueOf(workerInfo.getId()), workerInfo);
|
||||
}
|
||||
} else if (xzHikvisionSync.getType() == 3) {
|
||||
if (xzHikvisionSync.getOperate() == 1) {
|
||||
asyncHikvision.addPersonAuth(workerInfo, xzHikvisionSync.getDeviceSn());
|
||||
} else if (xzHikvisionSync.getOperate() == 3) {
|
||||
asyncHikvision.deletePersonAuth(workerInfo, xzHikvisionSync.getDeviceSn());
|
||||
}
|
||||
QueryWrapper<UfaceDev> qw = new QueryWrapper<>();
|
||||
qw.lambda().eq(UfaceDev::getProjectSn, projectSn);
|
||||
List<UfaceDev> ufaceDevs = ufaceDevMapper.selectList(qw);
|
||||
projectUfaceConfigService.buildAndSendOneWorkerAndDevForHk(ufaceDevs, workerInfo, xzHikvisionSync.getOperate(), xzHikvisionSync.getDeviceSn(), projectSn);
|
||||
}
|
||||
}
|
||||
|
||||
@ -241,5 +245,4 @@ public class XzHikvisionSyncServiceImpl extends ServiceImpl<XzHikvisionSyncMappe
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user