代码规范

This commit is contained in:
guoshengxiong 2024-07-01 09:51:07 +08:00
parent b8a3fd258a
commit 2f855d3d1e
6 changed files with 854 additions and 173 deletions

View File

@ -46,12 +46,13 @@ import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 海康
* 异步海康
*/
@Slf4j
@Component
public class AsyncHikvision {
public static final String XZ_HIKVISION_SYNC_TIME = "xzHikvisionSyncTime";
public static final int MAX_PAGE_SIZE = 1000;
@Lazy
@Autowired
public CarInfoServiceImpl carInfoService;
@ -97,6 +98,11 @@ public class AsyncHikvision {
@Autowired
private RedisRepository redisRepository;
/**
* 获取下发的时间如果不存在就新建
*
* @return
*/
public static Date getSyncTimeWithInitIfAbsent() {
Date now = ThreadLocalUtil.getNotNull().getDate(XZ_HIKVISION_SYNC_TIME);
if (now == null) {
@ -107,6 +113,8 @@ public class AsyncHikvision {
}
/**
* 获取下发的时间如果不存在就新建并删除同步表中对应的数据
*
* @param bigType 1人员2车辆
* @param tableId
* @return
@ -125,10 +133,23 @@ public class AsyncHikvision {
return now;
}
/**
* 获取同步时间
*
* @return
*/
public static Date getSyncTime() {
return ThreadLocalUtil.getNotNull().getDate(XZ_HIKVISION_SYNC_TIME);
}
/**
* 异步添加人员和权限
*
* @param workerInfo
* @param isSaveWorker
* @param isSaveWorkerFace
* @return
*/
@Async("workerHkExecutor")
public Future addWorkerAndAuthAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
this.addWorkerAsync(workerInfo, true, true);
@ -153,20 +174,48 @@ public class AsyncHikvision {
}
}
/**
* 添加人员
*
* @param workerInfo
* @param isSaveWorker
* @param isSaveWorkerFace
*/
public void addWorker(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
this.addWorkerAsync(workerInfo, isSaveWorker, isSaveWorkerFace);
}
/**
* 编辑人员和权限
*
* @param workerInfo
* @param isSaveWorker
* @param isSaveWorkerFace
*/
@Async("workerHkExecutor")
public void editWorkerAndAuthAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
this.saveWorkerAsync(workerInfo, true, true);
projectUfaceConfigService.updateWorkerInfo(workerInfo, workerInfo);
}
/**
* 保存人员
*
* @param workerInfo
* @param isSaveWorker
* @param isSaveWorkerFace
*/
public void saveWorker(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
this.saveWorkerAsync(workerInfo, isSaveWorker, isSaveWorkerFace);
}
/**
* 异步保存人员
*
* @param workerInfo
* @param isSaveWorker
* @param isSaveWorkerFace
*/
@Async("workerHkExecutor")
public void saveWorkerAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
try {
@ -177,10 +226,24 @@ public class AsyncHikvision {
}
}
/**
* 编辑人员
*
* @param workerInfo
* @param isSaveWorker
* @param isSaveWorkerFace
*/
public void editWorker(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
this.saveWorkerAsync(workerInfo, isSaveWorker, isSaveWorkerFace);
}
/**
* 为人员发送通知和设置下发状态
*
* @param workerInfo
* @param e
* @param action
*/
private void sendNoticeForWorker(WorkerInfo workerInfo, Exception e, String action) {
String title = action + "人员到海康isc失败";
String type = "23";
@ -198,6 +261,12 @@ public class AsyncHikvision {
hikvisionCall.updateAllFailStatusIfNull(workerInfo.getProjectSn(), workerInfo.getId(), 1);
}
/**
* 异步删除人员
*
* @param uniqueId
* @param workerInfo
*/
@Async("workerHkExecutor")
public void deleteWorkerForHikvisionAsync(String uniqueId, WorkerInfo workerInfo) {
try {
@ -208,10 +277,21 @@ public class AsyncHikvision {
}
}
/**
* 删除人员
*
* @param uniqueId
* @param workerInfo
*/
public void deleteWorkerForHikvision(String uniqueId, WorkerInfo workerInfo) {
this.deleteWorkerForHikvisionAsync(uniqueId, workerInfo);
}
/**
* 异步添加车辆
*
* @param carInfo
*/
@Async("carInfoExecutor")
public void addCarInfoForHikvisionAsync(CarInfo carInfo) {
try {
@ -222,10 +302,22 @@ public class AsyncHikvision {
}
}
/**
* 添加车辆
*
* @param carInfo
*/
public void addCarInfoForHikvision(CarInfo carInfo) {
this.addCarInfoForHikvisionAsync(carInfo);
}
/**
* 为车辆发送通知和设置下发状态
*
* @param carInfo
* @param e
* @param action
*/
private void sendNoticeForCar(CarInfo carInfo, Exception e, String action) {
String title = action + "车辆到海康isc失败";
String type = "24";
@ -243,6 +335,12 @@ public class AsyncHikvision {
hikvisionCall.updateAllFailStatusIfNull(carInfo.getProjectSn(), carInfo.getId(), 2);
}
/**
* 异步编辑车辆
*
* @param carInfo
* @param old
*/
@Async("carInfoExecutor")
public void editCarInfoForHikvisionAsync(CarInfo carInfo, CarInfo old) {
try {
@ -253,10 +351,22 @@ public class AsyncHikvision {
}
}
/**
* 编辑车辆
*
* @param carInfo
* @param old
*/
public void editCarInfoForHikvision(CarInfo carInfo, CarInfo old) {
this.editCarInfoForHikvisionAsync(carInfo, old);
}
/**
* 异步删除车辆并设置车辆黑名单状态
*
* @param carInfo
* @param isSetBlack
*/
@Async("carInfoExecutor")
public void deleteCarInfoAndSetBlackForHikvisionAsync(CarInfo carInfo, boolean isSetBlack) {
try {
@ -267,10 +377,21 @@ public class AsyncHikvision {
}
}
/**
* 删除车辆并设置车辆黑名单状态
*
* @param carInfo
* @param isSetBlack
*/
public void deleteCarInfoAndSetBlackForHikvision(CarInfo carInfo, boolean isSetBlack) {
this.deleteCarInfoAndSetBlackForHikvisionAsync(carInfo, isSetBlack);
}
/**
* 添加企业
*
* @param enterpriseInfo
*/
@Async("carInfoExecutor")
public void addEnterpriseInfoForHikvision(EnterpriseInfo enterpriseInfo) {
try {
@ -281,6 +402,13 @@ public class AsyncHikvision {
}
}
/**
* 为组织发送通知和设置下发状态
*
* @param name
* @param e
* @param action
*/
private void sendNoticeForOrg(String name, Exception e, String action) {
String title = action + "组织到海康isc失败";
String type = "23";
@ -298,6 +426,11 @@ public class AsyncHikvision {
xzHikvisionCompareDataService.compareRetryFail();
}
/**
* 编辑企业
*
* @param enterpriseInfo
*/
@Async("carInfoExecutor")
public void editEnterpriseInfoForHikvision(EnterpriseInfo enterpriseInfo) {
try {
@ -308,6 +441,12 @@ public class AsyncHikvision {
}
}
/**
* 删除企业
*
* @param projectSn
* @param enterpriseName
*/
@Async("carInfoExecutor")
public void deleteEnterpriseInfoForHikvision(String projectSn, String enterpriseName) {
try {
@ -318,6 +457,11 @@ public class AsyncHikvision {
}
}
/**
* 异步编辑班组
*
* @param teamInfo
*/
@Async("carInfoExecutor")
public void editTeamInfoForHikvision(TeamInfo teamInfo) {
try {
@ -328,6 +472,12 @@ public class AsyncHikvision {
}
}
/**
* 异步删除班组
*
* @param id
* @param teamInfo
*/
@Async("carInfoExecutor")
public void deleteTeamInfoForHikvision(String id, TeamInfo teamInfo) {
try {
@ -338,6 +488,11 @@ public class AsyncHikvision {
}
}
/**
* 异步添加班组
*
* @param teamInfo
*/
@Async("carInfoExecutor")
public void addTeamInfoForHikvision(TeamInfo teamInfo) {
try {
@ -348,6 +503,11 @@ public class AsyncHikvision {
}
}
/**
* 异步编辑部门
*
* @param teamInfo
*/
@Async("carInfoExecutor")
public void editDepartmentInfoForHikvision(DepartmentInfo teamInfo) {
try {
@ -358,6 +518,11 @@ public class AsyncHikvision {
}
}
/**
* 异步添加部门
*
* @param teamInfo
*/
@Async("carInfoExecutor")
public void addDepartmentInfoForHikvision(DepartmentInfo teamInfo) {
try {
@ -368,6 +533,12 @@ public class AsyncHikvision {
}
}
/**
* 异步删除部门
*
* @param uniqueId
* @param departmentInfo
*/
@Async("carInfoExecutor")
public void deleteDepartmentInfoForHikvision(String uniqueId, DepartmentInfo departmentInfo) {
try {
@ -378,6 +549,11 @@ public class AsyncHikvision {
}
}
/**
* 异步编辑项目
*
* @param project
*/
@Async("carInfoExecutor")
public void editProjectForHikvision(Project project) {
try {
@ -387,6 +563,12 @@ public class AsyncHikvision {
}
}
/**
* 异步添加人员权限
*
* @param workerInfo
* @param devSns
*/
@Async("hikvisionExecutor")
public void addPersonAuthAsync(WorkerInfo workerInfo, String devSns) {
try {
@ -430,10 +612,12 @@ public class AsyncHikvision {
}
}
public void addPersonAuth(WorkerInfo workerInfo, String devSns) {
this.addPersonAuthAsync(workerInfo, devSns);
}
/**
* 异步删除人员权限
*
* @param workerInfo
* @param devSns
*/
@Async("hikvisionExecutor")
public void deletePersonAuthAsync(WorkerInfo workerInfo, String devSns) {
try {
@ -479,15 +663,21 @@ public class AsyncHikvision {
}
}
public void deletePersonAuth(WorkerInfo workerInfo, String devSn) {
this.deletePersonAuthAsync(workerInfo, devSn);
}
/**
* 异步获取车辆通行数据
*
* @param paramMap
*/
@Async("getRecordForHikvisionTask")
public void getCrossRecordsAsync(HashMap<String, Object> paramMap) {
hikvisionCall.getCrossRecords(paramMap);
}
/**
* 异步获取人员通行数据
*
* @param paramMap
*/
@Async("getRecordForHikvisionTask")
public void getDoorEventsAsync(HashMap<String, Object> paramMap) {
hikvisionCall.getDoorEvents(paramMap);
@ -527,7 +717,7 @@ public class AsyncHikvision {
Map<String, UfaceDev> devSnMap = allDevList.stream().collect(Collectors.toMap(UfaceDev::getDevSn, Function.identity()));
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);
JSONObject gdvDataJo = HikvisionUtil.getJsonObjectData(gdvJo);
//门禁设备编号parentIndexCode门禁点编号indexCode门禁设备资源通道号channelNo
Map<String, JSONObject> devSnToIscDevSnMap = gdvDataJo.getJSONArray("list").stream().collect(Collectors.toMap(o -> ((JSONObject) o).getString("indexCode"), o -> (JSONObject) o));
futures = new ArrayList<>();
@ -596,6 +786,15 @@ public class AsyncHikvision {
}
}
/**
* 获取需要编辑的人员
*
* @param workerList
* @param project
* @param workerIdMap
* @return
* @throws Exception
*/
private ArrayList<WorkerInfo> getNeedEditWorkers(List<WorkerInfo> workerList, ProjectInfoExtVo project, Map<String, WorkerInfo> workerIdMap) throws Exception {
ArrayList<WorkerInfo> needEditWorkers = new ArrayList<>();
JSONArray plListJa = getPersonListByWorkerList(workerList, project);
@ -618,15 +817,23 @@ public class AsyncHikvision {
return needEditWorkers;
}
/**
* 根据人员列表获取isc人员列表
*
* @param workerList
* @param project
* @return
* @throws Exception
*/
private JSONArray getPersonListByWorkerList(List<WorkerInfo> workerList, ProjectInfoExtVo project) throws Exception {
JSONArray rtJa = new JSONArray();
for (List<WorkerInfo> splitList : CollUtil.splitList(workerList, 1000)) {
for (List<WorkerInfo> splitList : CollUtil.splitList(workerList, MAX_PAGE_SIZE)) {
JSONObject plJo = HikvisionUtil.queryPersonList(project, new JoBuilder()
.put("personIds", StrUtil.join(",", splitList.stream().map(WorkerInfo::getId).collect(Collectors.toList())))
.put("pageNo", 1)
.put("pageSize", 1000)
.put("pageSize", MAX_PAGE_SIZE)
.build());
JSONObject plDataJo = HikvisionUtil.getJSONObjectData(plJo);
JSONObject plDataJo = HikvisionUtil.getJsonObjectData(plJo);
JSONArray plListJa = plDataJo.getJSONArray("list");
rtJa.addAll(plListJa);
}
@ -665,15 +872,15 @@ public class AsyncHikvision {
}
//然后调用根据出入权限配置快捷下载设备列表添加权限配置+快捷下发这是一个流程你添加了几个权限下发成功之后就清零了
JSONObject daJo = HikvisionUtil.downloadAuth(project, getQueryDownloadProgressParam(devSnToJoEntry, devSnToIscDevSnMap));
JSONObject daRtJo = HikvisionUtil.getJSONObjectData(daJo);
JSONObject daRtJo = HikvisionUtil.getJsonObjectData(daJo);
//然后调用查询下载任务进度上面那个的任务
int totalPercent = 0;
do {
JSONObject qdpJo = HikvisionUtil.queryDownloadProgress(project, new JoBuilder()
.put("taskId", daRtJo.getString("taskId"))
.build());
totalPercent = HikvisionUtil.getJSONObjectData(qdpJo).getInteger("totalPercent");
Thread.sleep(1000);
totalPercent = HikvisionUtil.getJsonObjectData(qdpJo).getInteger("totalPercent");
Thread.sleep(MAX_PAGE_SIZE);
} while (totalPercent != 100);
//权限下发后进度100后查询权限条目列表人员列表设备列表接口去查返回参数有权限状态返回已下载的就是有权限
List<String> workerIds = devSnToJoEntry.getValue().stream().map(jsonObject -> jsonObject.getString("workerId")).collect(Collectors.toList());
@ -719,11 +926,21 @@ public class AsyncHikvision {
return null;
}
/**
* 为人员列表查询权限列表
*
* @param project
* @param workerIds
* @param devSnToJoEntry
* @param devSnToIscDevSnMap
* @return
* @throws Exception
*/
private JSONArray queryAuthItemByWorkerList(ProjectInfoExtVo project, List<String> workerIds, Map.Entry<String, List<JSONObject>> devSnToJoEntry, Map<String, JSONObject> devSnToIscDevSnMap) throws Exception {
JSONArray rtJa = new JSONArray();
for (List<String> splitList : CollUtil.splitList(workerIds, 1000)) {
for (List<String> splitList : CollUtil.splitList(workerIds, MAX_PAGE_SIZE)) {
JSONObject qaiJo = HikvisionUtil.queryAuthItem(project, getQueryAuthItemParam(devSnToJoEntry, devSnToIscDevSnMap, splitList));
JSONObject qaiRtJo = HikvisionUtil.getJSONObjectData(qaiJo);
JSONObject qaiRtJo = HikvisionUtil.getJsonObjectData(qaiJo);
JSONArray qaiList = qaiRtJo.getJSONArray("list");
if (CollUtil.isNotEmpty(qaiList)) {
rtJa.addAll(qaiList);
@ -732,17 +949,35 @@ public class AsyncHikvision {
return rtJa;
}
/**
* 为人员列表删除权限
*
* @param project
* @param devSnToIscDevSnMap
* @param devSnToJoEntry
* @param deleteAuthWorkerIds
* @throws Exception
*/
private void deleteAuthByWorkerList(ProjectInfoExtVo project, Map<String, JSONObject> devSnToIscDevSnMap, Map.Entry<String, List<JSONObject>> devSnToJoEntry, List<String> deleteAuthWorkerIds) throws Exception {
for (List<String> splitWorkerIds : CollUtil.splitList(deleteAuthWorkerIds, 1000)) {
JSONObject aaRJo = HikvisionUtil.deleteAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, splitWorkerIds, devSnToIscDevSnMap));
HikvisionUtil.getJSONObjectData(aaRJo);
for (List<String> splitWorkerIds : CollUtil.splitList(deleteAuthWorkerIds, MAX_PAGE_SIZE)) {
JSONObject jo = HikvisionUtil.deleteAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, splitWorkerIds, devSnToIscDevSnMap));
HikvisionUtil.getJsonObjectData(jo);
}
}
/**
* 为人员列表添加权限
*
* @param project
* @param devSnToIscDevSnMap
* @param devSnToJoEntry
* @param addAuthWorkerIds
* @throws Exception
*/
private void addAuthByWorkerList(ProjectInfoExtVo project, Map<String, JSONObject> devSnToIscDevSnMap, Map.Entry<String, List<JSONObject>> devSnToJoEntry, List<String> addAuthWorkerIds) throws Exception {
for (List<String> splitWorkerIds : CollUtil.splitList(addAuthWorkerIds, 1000)) {
JSONObject aaRJo = HikvisionUtil.addAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, splitWorkerIds, devSnToIscDevSnMap));
HikvisionUtil.getJSONObjectData(aaRJo);
for (List<String> splitWorkerIds : CollUtil.splitList(addAuthWorkerIds, MAX_PAGE_SIZE)) {
JSONObject jo = HikvisionUtil.addAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, splitWorkerIds, devSnToIscDevSnMap));
HikvisionUtil.getJsonObjectData(jo);
}
}
@ -771,7 +1006,8 @@ public class AsyncHikvision {
if (sendNotice) {
if (addAuthWorkerIds.contains(personId)) {
//添加权限
if (Objects.equals(faceStatus, 3)) {
int addAuth = 3;
if (Objects.equals(faceStatus, addAuth)) {
hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(personId), 3, 1, dev.getDevSn());
Long syncId = ThreadLocalUtil.getByKey(Cts.TL_HK_SYNC_ID, Long.class);
if (syncId != null) {
@ -791,7 +1027,8 @@ public class AsyncHikvision {
}
} else {
//删除权限
if (Objects.equals(faceStatus, 4)) {
int deleteAuth = 4;
if (Objects.equals(faceStatus, deleteAuth)) {
hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(personId), 3, 3, dev.getDevSn());
} else {
hikvisionCall.updateFailStatus(projectSn, Long.valueOf(personId), 3, 3, dev.getDevSn());
@ -802,13 +1039,21 @@ public class AsyncHikvision {
StrUtil.format("[{}]取消下发到[{}]{}",
workerIdMap.get(personId).getWorkerName(),
dev.getDevName(),
Objects.equals(faceStatus, 4) ? "成功" : "失败,下发异常"),
Objects.equals(faceStatus, deleteAuth) ? "成功" : "失败,下发异常"),
"人员下发设备提醒", "1");
}
}
}
}
/**
* 获取添加或删除权限的参数
*
* @param entry
* @param workerIds
* @param devSnToIscDevSnMap
* @return
*/
@NotNull
private JSONObject getAddOrDeleteAuthParam(Map.Entry<String, List<JSONObject>> entry, List<String> workerIds, Map<String, JSONObject> devSnToIscDevSnMap) {
JSONObject aaJo = new JSONObject();
@ -820,6 +1065,13 @@ public class AsyncHikvision {
return aaJo;
}
/**
* 获取删除权限配置接口的设备请求的参数
*
* @param entry
* @param devSnToIscDevSnMap
* @return
*/
@NotNull
private List<JSONObject> getDevRqParam(Map.Entry<String, List<JSONObject>> entry, Map<String, JSONObject> devSnToIscDevSnMap) {
return Collections.singletonList(new JoBuilder()
@ -829,6 +1081,13 @@ public class AsyncHikvision {
.build());
}
/**
* 获取根据出入权限配置快捷下载接口的请求的参数
*
* @param entry
* @param devSnToIscDevSnMap
* @return
*/
private JSONObject getQueryDownloadProgressParam(Map.Entry<String, List<JSONObject>> entry, Map<String, JSONObject> devSnToIscDevSnMap) {
JSONObject aaJo = new JSONObject();
aaJo.put("taskType", 4);
@ -836,6 +1095,14 @@ public class AsyncHikvision {
return aaJo;
}
/**
* 获取查询权限条目列表的请求参数
*
* @param entry
* @param devSnToIscDevSnMap
* @param workerIds
* @return
*/
private JSONObject getQueryAuthItemParam(Map.Entry<String, List<JSONObject>> entry, Map<String, JSONObject> devSnToIscDevSnMap, List<String> workerIds) {
JSONObject aaJo = new JSONObject();
aaJo.put("personIds", workerIds);
@ -846,7 +1113,7 @@ public class AsyncHikvision {
.build()));
aaJo.put("queryType", "acsDevice");
aaJo.put("pageNo", 1);
aaJo.put("pageSize", 1000);
aaJo.put("pageSize", MAX_PAGE_SIZE);
return aaJo;
}

View File

@ -108,11 +108,13 @@ public class HikvisionCall {
public static final String MSG = "msg";
public static final String DATA = "data";
public static final String X_00072002 = "0x00072002";
public static final String Fail = "失败";
public static final String FAIL = "失败";
public static final String SUC = "成功";
public static final String X_15403007 = "0x15403007";
public static final String X_02401033 = "0x02401033";
public static final String LIST = "list";
public static final String EVENT_PMS = "event_pms";
public static final String EVENT_VSS = "event_vss";
private static final String FIXED_CAR_GROUP_NAME = "业主车辆";
public AsyncHikvision asyncHikvision;
@Autowired
@ -289,8 +291,8 @@ public class HikvisionCall {
if (Objects.equals(method, onEventNotify)) {
JSONObject paramsJo = jsonObject.getJSONObject("params");
String ability = paramsJo.getString("ability");
String event_acs = "event_acs";
if (Objects.equals(ability, event_acs)) {
String eventAcs = "event_acs";
if (Objects.equals(ability, eventAcs)) {
log.info("人员通行记录事件");
//人员通行记录
JSONArray eventsJa = paramsJo.getJSONArray("events");
@ -332,7 +334,7 @@ public class HikvisionCall {
hikvisionCall.saveEventCallbackAttendanceAsync(dataJo, workerInfo, srcIndex, project, idCard, time, passType);
}
}
} else if (Objects.equals(ability, "event_pms")) {
} else if (Objects.equals(ability, EVENT_PMS)) {
log.info("车辆出入场事件");
//车辆入场压线放行出场压线放行
JSONArray eventsJa = paramsJo.getJSONArray("events");
@ -388,7 +390,7 @@ public class HikvisionCall {
JSONArray eventDetails = dataEvent.getJSONArray("eventDetails");
JSONObject eventDetail = eventDetails.getJSONObject(0);
ability = eventDetail.getString("ability");
if (Objects.equals(ability, "event_vss")) {
if (Objects.equals(ability, EVENT_VSS)) {
log.info("AI识别告警=======" + paramsJo);
//摄像机名称
String srcName = eventDetail.getString("srcName");
@ -408,7 +410,7 @@ public class HikvisionCall {
hikvisionCall.saveEventCallbackAiAsync(dataEvent, srcName, eventType, imageUrl, srcIndex, dev);
} else if (Objects.equals(ability, EVENT_IAS)) {
log.info("临边防护告警=======" + paramsJo);
String srcName = eventDetail.getString("srcName");//srcName
String srcName = eventDetail.getString("srcName");
String srcParentIndex = dataEvent.getString("srcParentIndex");
String happenTime = dataEvent.getString("happenTime");
String ds = srcName + "报警";
@ -428,6 +430,11 @@ public class HikvisionCall {
return Result.ok();
}
/**
* 添加红外对射预警数据
*
* @param paramsJo
*/
private void addFrontierProtectionNoNetData(JSONObject paramsJo) {
log.info("临边防护告警事件========" + paramsJo);
JSONArray eventsJa = paramsJo.getJSONArray("events");
@ -435,6 +442,11 @@ public class HikvisionCall {
hikvisionCall.saveEventCallbackIasAsync(dataEvent);
}
/**
* 异步添加红外对射预警数据
*
* @param dataEvent
*/
@Async("saveEventCallbackAiAsync")
public void saveEventCallbackIasAsync(JSONObject dataEvent) {
String devCode = dataEvent.getString("srcIndex");
@ -456,6 +468,16 @@ public class HikvisionCall {
frontierProtectionNoNetDataService.add(data1);
}
/**
* 异步添加ai数据
*
* @param dataEvent
* @param srcName
* @param eventType
* @param imageUrl
* @param deviceId
* @param dev
*/
@Async("saveEventCallbackAiAsync")
public void saveEventCallbackAiAsync(JSONObject dataEvent, String srcName, String eventType, String imageUrl, String deviceId, AiAnalyseHardWareRecord dev) {
String happenTime = dataEvent.getString("happenTime");
@ -489,6 +511,15 @@ public class HikvisionCall {
asyncAiAnalyse.sendAiAnalyse(record, Cts.PROJECT_LEVEL_AND_CHILDREN);
}
/***
* 异步添加车辆通行数据
* @param dataJo
* @param srcIndex
* @param plateNo
* @param carCamera
* @param project
* @param time
*/
@Async("saveEventCallbackCarPassRecord")
public void saveEventCallbackCarPassRecordAsync(JSONObject dataJo, String srcIndex, String plateNo, CarCamera carCamera, Project project, String time) {
CarPassRecord carPassRecord = new CarPassRecord();
@ -543,9 +574,20 @@ public class HikvisionCall {
}
}
/**
* 异步保存人员通行数据
*
* @param dataJo
* @param workerInfo
* @param srcIndex
* @param project
* @param idCard
* @param time
* @param passType
*/
@Async("saveEventCallbackAttendance")
public void saveEventCallbackAttendanceAsync(JSONObject dataJo, WorkerInfo workerInfo, String srcIndex, Project project, String idCard, String time, int passType) {
HashMap<String, Object> map = new HashMap<>();
HashMap<String, Object> map = new HashMap<>(16);
map.put("passTime", time);
map.put("idCard", idCard);
map.put("attendanceNumber", workerInfo.getAttendanceNumber());
@ -613,6 +655,15 @@ public class HikvisionCall {
return Result.ok("已在后台同步人员数据,请耐心等待!");
}
/**
* 获取门禁事件的数据
*
* @param startTime
* @param endTime
* @param param
* @param projectSn
* @param projects
*/
@Async("getDoorEvents")
public void getDoorEventsAsync(String startTime, String endTime, JSONObject param, String projectSn, List<Project> projects) {
for (Project project : projects) {
@ -633,7 +684,7 @@ public class HikvisionCall {
log.error("err:", e);
return;
}
JSONObject joData = HikvisionUtil.getJSONObjectData(rs);
JSONObject joData = HikvisionUtil.getJsonObjectData(rs);
if (joData != null) {
total = joData.getInteger("total");
if (!Objects.equals(total, 0)) {
@ -651,7 +702,7 @@ public class HikvisionCall {
log.error("未找到该人员信息,personName:{}", personName);
continue;
}
HashMap<String, Object> map = new HashMap<>();
HashMap<String, Object> map = new HashMap<>(16);
String time = DateUtil.formatDateTime(DateUtil.parse(eventTime));
map.put("passTime", time);
map.put("idCard", workerInfo.getIdCard());
@ -721,6 +772,14 @@ public class HikvisionCall {
return Result.ok("已在后台同步车辆通行数据,请耐心等待!");
}
/**
* 异步同步车辆通行数据
*
* @param startTime
* @param endTime
* @param param
* @param projects
*/
@Async("getCrossRecords")
public void getCrossRecordsAsync(String startTime, String endTime, JSONObject param, List<Project> projects) {
for (Project project : projects) {
@ -744,7 +803,7 @@ public class HikvisionCall {
log.error("err:", e);
return;
}
JSONObject joData = HikvisionUtil.getJSONObjectData(rs);
JSONObject joData = HikvisionUtil.getJsonObjectData(rs);
if (joData != null) {
total = joData.getInteger("total");
if (!Objects.equals(total, 0)) {
@ -892,6 +951,12 @@ public class HikvisionCall {
return null;
}
/**
* 获取进出类型
*
* @param passType
* @return
*/
private Integer getPassType(Integer passType) {
if (passType == null) {
return null;
@ -927,6 +992,13 @@ public class HikvisionCall {
}
}
/**
* 添加人员
*
* @param workerInfo
* @param project
* @throws Exception
*/
public void addWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception {
String rs = HikvisionUtil.addWorker(workerInfo, project);
sendNoticeAndSetStatusForWorker("添加人员到海康isc", rs, workerInfo, 1, 1, true);
@ -972,6 +1044,13 @@ public class HikvisionCall {
}
}
/**
* 更新人员
*
* @param workerInfo
* @param project
* @throws Exception
*/
public void editWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception {
String rs = HikvisionUtil.editWorker(workerInfo, project);
sendNoticeAndSetStatusForWorker("更新人员到海康isc", rs, workerInfo, 1, 2, true);
@ -991,6 +1070,17 @@ public class HikvisionCall {
}
}
/**
* 为车辆发送通知和设置下发状态
*
* @param title
* @param rs
* @param carInfo
* @param type
* @param operate
* @param setSuc
* @param isNotice
*/
public void sendNoticeAndSetStatusForCarInfo(String title, String rs, CarInfo carInfo, Integer type, Integer operate, Boolean setSuc, boolean isNotice) {
String msg;
if (setSuc == null) {
@ -1006,10 +1096,10 @@ public class HikvisionCall {
if (fOp.isPresent() && fOp.get().size() != 0) {
if (X_00052102.equals(fOp.get().getJSONObject(0).getString(CODE))) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因车辆绑定的人员在isc不存在";
title += Fail;
title += FAIL;
} else {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常";
title += Fail;
title += FAIL;
}
} else {
msg = "同步成功,车牌号码:" + carInfo.getCarNumber();
@ -1039,30 +1129,31 @@ public class HikvisionCall {
String errMsg = "Car reservation failed! The plateNo has reserved in the parking!";
if (Objects.equals(msg1, errMsg)) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车辆预约记录已存在";
title += Fail;
title += FAIL;
} else {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常";
title += Fail;
title += FAIL;
}
}
} else if (Objects.equals(code, X_02_E_33400)) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车辆属于黑名单内不能下发预约车";
title += Fail;
title += FAIL;
} else if (Objects.equals(code, X_00072003)) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车牌格式不正确!";
title += Fail;
title += FAIL;
} else if (Objects.equals(code, X_00052301)) {
String msg1 = jo.getString(MSG);
if (Objects.equals(msg1, "PersonId Not Exists")) {
String errMsg = "PersonId Not Exists";
if (Objects.equals(msg1, errMsg)) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因车辆绑定的人员ID不存在";
title += Fail;
title += FAIL;
} else {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常";
title += Fail;
title += FAIL;
}
} else {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常";
title += Fail;
title += FAIL;
}
}
} else {
@ -1071,7 +1162,7 @@ public class HikvisionCall {
title += SUC;
} else {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常";
title += Fail;
title += FAIL;
}
}
@ -1096,6 +1187,13 @@ public class HikvisionCall {
}
}
/**
* 为组织发送通知和设置下发状态
*
* @param title
* @param rs
* @param orgName
*/
private void sendNoticeForOrg(String title, String rs, String orgName) {
if (StringUtils.isBlank(rs)) {
return;
@ -1111,11 +1209,11 @@ public class HikvisionCall {
if (fOp.isPresent() && fOp.get().size() != 0) {
if (X_00052102.equals(fOp.get().getJSONObject(0).getString(CODE))) {
msg = "同步失败,组织名称:" + orgName + "。失败原因:上级组织不存在";
title += Fail;
title += FAIL;
success = false;
} else {
msg = "同步失败,组织名称:" + orgName + "。失败原因:下发异常";
title += Fail;
title += FAIL;
success = false;
}
} else {
@ -1128,11 +1226,11 @@ public class HikvisionCall {
String errMsg = "Exists Child Org";
if (X_00052102.equals(dataJa.getJSONObject(0).getString(CODE)) && errMsg.equals(dataJa.getJSONObject(0).getString(MSG))) {
msg = "同步失败,组织名称:" + orgName + "。失败原因ISC存在下级组织";
title += Fail;
title += FAIL;
success = false;
} else {
msg = "同步失败,组织名称:" + orgName + "。失败原因:下发异常";
title += Fail;
title += FAIL;
success = false;
}
} else {
@ -1145,7 +1243,7 @@ public class HikvisionCall {
}
} else {
msg = "同步失败,组织名称:" + orgName + "。失败原因:" + rs;
title += Fail;
title += FAIL;
success = false;
}
if (success) {
@ -1158,6 +1256,16 @@ public class HikvisionCall {
}
}
/**
* 为人员发送通知和设置下发状态
*
* @param title
* @param rs
* @param workerInfo
* @param type
* @param operate
* @param sendNotice
*/
private void sendNoticeAndSetStatusForWorker(String title, String rs, WorkerInfo workerInfo, int type, int operate, boolean sendNotice) {
boolean callSuc = HikvisionUtil.isSuccess(rs);
String msg = "";
@ -1175,10 +1283,10 @@ public class HikvisionCall {
String errMsg = "Please Change Picture,Picture Max Size Is Limit 200KB";
if (Objects.equals(msg1, errMsg)) {
msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因人脸图片不能大于200KB";
title += Fail;
title += FAIL;
} else {
msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:下发异常";
title += Fail;
title += FAIL;
}
} else if (Objects.equals(code, X_00052301)) {
String msg1 = jo.getString(MSG);
@ -1193,7 +1301,7 @@ public class HikvisionCall {
pN = "部门";
}
msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:" + pN + "未同步成功";
title += Fail;
title += FAIL;
} else if (Objects.equals(msg1, personIdAlreadyInDb)) {
//成功
success = true;
@ -1201,24 +1309,24 @@ public class HikvisionCall {
title += SUC;
} else if (Objects.equals(msg1, personNotExists)) {
msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:人员不存在";
title += Fail;
title += FAIL;
} else {
msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:下发异常";
title += Fail;
title += FAIL;
}
} else if (Objects.equals(code, X_00072003)) {
String msg1 = jo.getString(MSG);
String errMsg = "The format of parameter phoneNo is not correct.";
if (Objects.equals(msg1, errMsg)) {
msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:手机号码格式不正确";
title += Fail;
title += FAIL;
} else {
msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:下发异常";
title += Fail;
title += FAIL;
}
} else {
msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:下发异常";
title += Fail;
title += FAIL;
}
}
if (success) {
@ -1271,6 +1379,14 @@ public class HikvisionCall {
}
}
/**
* 更新某个为失败状态
*
* @param projectSn
* @param whoId
* @param bigType
* @param operate
*/
@Transactional(rollbackFor = Exception.class)
public void updateAllFailStatusIfNullForAuth(String projectSn, Long whoId, Integer bigType, Integer operate) {
xzHikvisionSyncMapper.update(null, new LambdaUpdateWrapper<XzHikvisionSync>()
@ -1284,6 +1400,13 @@ public class HikvisionCall {
this.updateTotalStatus(projectSn, whoId, bigType);
}
/**
* 更新某个为失败状态
*
* @param projectSn
* @param whoId
* @param bigType
*/
@Transactional(rollbackFor = Exception.class)
public void updateAllFailStatusIfNull(String projectSn, Long whoId, Integer bigType) {
xzHikvisionSyncMapper.update(null, new LambdaUpdateWrapper<XzHikvisionSync>()
@ -1295,6 +1418,15 @@ public class HikvisionCall {
updateTotalStatus(projectSn, whoId, bigType);
}
/**
* 更新某个为失败状态
*
* @param projectSn
* @param whoId
* @param type
* @param operate
* @param deviceSn
*/
public void updateFailStatus(String projectSn, Long whoId, Integer type, Integer operate, String deviceSn) {
updateStatus(projectSn, whoId, type, operate, deviceSn, false);
}
@ -1312,6 +1444,16 @@ public class HikvisionCall {
updateStatus(projectSn, whoId, type, operate, deviceSn, true);
}
/**
* 更新某个状态
*
* @param projectSn
* @param whoId
* @param type
* @param operate
* @param deviceSn
* @param isSuccess
*/
@Transactional(rollbackFor = Exception.class)
public void updateStatus(String projectSn, Long whoId, Integer type, Integer operate, String deviceSn, Boolean isSuccess) {
LambdaQueryWrapper<XzHikvisionSync> queryWrapper = new LambdaQueryWrapper<XzHikvisionSync>()
@ -1414,11 +1556,29 @@ public class HikvisionCall {
deleteWorkerFromHttp(uniqueId, workerInfo, project, sendNotice);
}
/**
* 删除人员到海康isc
*
* @param uniqueId
* @param workerInfo
* @param project
* @param sendNotice
* @throws Exception
*/
public void deleteWorkerFromHttp(String uniqueId, WorkerInfo workerInfo, Project project, boolean sendNotice) throws Exception {
String rs = HikvisionUtil.deleteWorkerById(uniqueId, project).toJSONString();
sendNoticeAndSetStatusForWorker("删除人员到海康isc", rs, workerInfo, 1, 3, sendNotice);
}
/**
* 删除人员图片到海康isc
*
* @param uniqueId
* @param workerInfo
* @param project
* @param sendNotice
* @throws Exception
*/
public void deleteWorkerFace(String uniqueId, WorkerInfo workerInfo, Project project, boolean sendNotice) throws Exception {
List<String> workerFaceIds = getWorkerFaceIds(uniqueId, project);
if (CollUtil.isNotEmpty(workerFaceIds)) {
@ -1492,7 +1652,7 @@ public class HikvisionCall {
jo.put("pageSize", 1);
JSONObject joRs = HikvisionUtil.getBlackCarList(project, jo);
if (HikvisionUtil.isSuccess(joRs)) {
JSONObject dataJo = HikvisionUtil.getJSONObjectData(joRs);
JSONObject dataJo = HikvisionUtil.getJsonObjectData(joRs);
JSONArray listJa = dataJo.getJSONArray(LIST);
if (CollUtil.isEmpty(listJa)) {
if (carInfo.getIsBlack() == 1) {
@ -1526,6 +1686,11 @@ public class HikvisionCall {
}
}
/**
* 添加车辆黑名单失败报警通知
*
* @param carInfo
*/
private void failAlarmNotice(CarInfo carInfo) {
if (carInfo.getIsBlack() == 1) {
sendNoticeAndSetStatusForCarInfo("车辆添加黑名单到海康isc", new JSONObject().toJSONString(), carInfo, 7, null, false, true);
@ -1555,6 +1720,14 @@ public class HikvisionCall {
}
}
/**
* 通过车牌号获取isc的车辆id
*
* @param carNumber
* @param project
* @return
* @throws Exception
*/
private String getRemoteCarIdByCarNumber(String carNumber, Project project) throws Exception {
JSONObject oldCarInfo = searchCarInfoByCarNumberFromHttp(carNumber, project);
return oldCarInfo == null ? null : oldCarInfo.getString("vehicleId");
@ -1571,6 +1744,13 @@ public class HikvisionCall {
bindCar(project, carInfo);
}
/**
* 获取绑定的固定车辆群组
*
* @param project
* @return
* @throws Exception
*/
@NotNull
private String getCategoryCode(Project project) throws Exception {
//绑定固定的群组
@ -1578,6 +1758,13 @@ public class HikvisionCall {
return getFixedCarGroupName(ja);
}
/**
* 添加车辆
*
* @param carInfo
* @param project
* @throws Exception
*/
public void addCarInfoFromHttp(CarInfo carInfo, Project project) throws Exception {
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v1/vehicle/batch/add";
@ -1589,6 +1776,12 @@ public class HikvisionCall {
sendNoticeAndSetStatusForCarInfo("添加车辆白名单到海康isc", rs, carInfo, 4, 1, null, true);
}
/**
* 获取车辆
*
* @param carInfo
* @return
*/
private HikvisionCarInfo getHikvisionCarInfo(CarInfo carInfo) {
HikvisionCarInfo hikvisionCarInfo = new HikvisionCarInfo();
hikvisionCarInfo.setVehicleId(carInfo.getHikvisionVehicleId());
@ -1605,6 +1798,12 @@ public class HikvisionCall {
return hikvisionCarInfo;
}
/**
* 获取isc的车牌颜色
*
* @param carInfo
* @return
*/
private String getPlateColor(CarInfo carInfo) {
String carColor = carInfo.getCarColor();
if (StringUtils.isBlank(carColor)) {
@ -1630,6 +1829,12 @@ public class HikvisionCall {
return null;
}
/**
* 获取isc的车辆类型
*
* @param carInfo
* @return
*/
private String getVehicleType(CarInfo carInfo) {
String carTypeName = carInfoMapper.getCarTypeName(carInfo);
switch (carTypeName) {
@ -1646,6 +1851,12 @@ public class HikvisionCall {
return null;
}
/**
* 获取isc的车辆颜色
*
* @param carColor
* @return
*/
private String getVehicleColor(String carColor) {
if (StringUtils.isBlank(carColor)) {
return null;
@ -1786,6 +1997,13 @@ public class HikvisionCall {
handleAlarmCar(project, c);
}
/**
* 删除固定车
*
* @param carInfo
* @param project
* @throws Exception
*/
private void deleteFixedCarForHikvision(CarInfo carInfo, Project project) throws Exception {
//根据车牌号删除车辆
JSONObject oldCarInfo = searchCarInfoByCarNumberFromHttp(carInfo.getCarNumber(), project);
@ -1798,6 +2016,14 @@ public class HikvisionCall {
}
}
/**
* 根据车牌号查询车辆
*
* @param carNumber
* @param project
* @return
* @throws Exception
*/
private JSONObject searchCarInfoByCarNumberFromHttp(String carNumber, Project project) throws Exception {
long total = 0;
JSONObject o1 = null;
@ -1805,7 +2031,7 @@ public class HikvisionCall {
do {
JSONObject jo = HikvisionUtil.getFixCarListByCarNumber(carNumber, project, ++pageNo);
if (HikvisionUtil.isSuccess(jo)) {
JSONObject dataJo = HikvisionUtil.getJSONObjectData(jo);
JSONObject dataJo = HikvisionUtil.getJsonObjectData(jo);
total = dataJo.getInteger("total");
JSONArray listJa = dataJo.getJSONArray(LIST);
Optional<Object> plateNoOpt = listJa.stream().filter(o -> {
@ -1864,6 +2090,13 @@ public class HikvisionCall {
addOrgNoticeFromHttp(project, hikvisionOrganization);
}
/**
* 映射isc的组织
*
* @param enterpriseInfo
* @param orgIndexCode
* @return
*/
private HikvisionOrganization getHikvisionOrganization(EnterpriseInfo enterpriseInfo, String orgIndexCode) {
HikvisionOrganization hikvisionOrganization = new HikvisionOrganization();
hikvisionOrganization.setClientId(null);
@ -1948,7 +2181,7 @@ public class HikvisionCall {
param.put("orgName", orgName);
param.put("parentOrgIndexCodes", project.getProjectSn());
String rs = HikvisionUtil.getOrgV2(project, param);
JSONObject dataJo = HikvisionUtil.getJSONObjectData(rs);
JSONObject dataJo = HikvisionUtil.getJsonObjectData(rs);
JSONArray listJa = dataJo.getJSONArray(LIST);
for (int i = 0; i < listJa.size(); i++) {
JSONObject jo = listJa.getJSONObject(i);
@ -1973,6 +2206,14 @@ public class HikvisionCall {
addOrgNoticeFromHttp(project, hikvisionOrganization);
}
/**
* 映射isc的组织
*
* @param teamInfo
* @param project
* @return
* @throws Exception
*/
private HikvisionOrganization getHikvisionOrganization(TeamInfo teamInfo, Project project) throws Exception {
HikvisionOrganization hikvisionOrganization = new HikvisionOrganization();
hikvisionOrganization.setClientId(null);
@ -2000,16 +2241,38 @@ public class HikvisionCall {
}
}
/**
* 更新组织到海康isc
*
* @param project
* @param hikvisionOrganization
* @throws Exception
*/
private void editOrgFromHttp(Project project, HikvisionOrganization hikvisionOrganization) throws Exception {
String rs = HikvisionUtil.editOrg(project, hikvisionOrganization);
sendNoticeForOrg("更新组织到海康isc", rs, hikvisionOrganization.getOrgName());
}
/**
* 删除组织到海康isc
*
* @param project
* @param idList
* @param orgName
* @throws Exception
*/
private void deleteOrgFromHttp(Project project, List<String> idList, String orgName) throws Exception {
String rs = HikvisionUtil.deleteOrgByIndexCodes(project, idList);
sendNoticeForOrg("删除组织到海康isc", rs, orgName);
}
/**
* 添加组织到海康isc
*
* @param project
* @param hikvisionOrganization
* @throws Exception
*/
private void addOrgNoticeFromHttp(Project project, HikvisionOrganization hikvisionOrganization) throws Exception {
String rs = HikvisionUtil.addOrg(project, hikvisionOrganization);
sendNoticeForOrg("添加组织到海康isc", rs, hikvisionOrganization.getOrgName());
@ -2043,6 +2306,14 @@ public class HikvisionCall {
addOrgNoticeFromHttp(project, hikvisionOrganization);
}
/**
* 映射isc的组织
*
* @param departmentInfo
* @param project
* @return
* @throws Exception
*/
private HikvisionOrganization getHikvisionOrganization(DepartmentInfo departmentInfo, Project project) throws Exception {
HikvisionOrganization hikvisionOrganization = new HikvisionOrganization();
hikvisionOrganization.setClientId(null);
@ -2126,10 +2397,16 @@ public class HikvisionCall {
param.put("orgIndexCodes", orgIndexs);
param.put("parentOrgIndexCodes", parentOrgIndexCode);
String rs = HikvisionUtil.getOrgV2(project, param);
JSONObject jo = HikvisionUtil.getJSONObjectData(rs);
JSONObject jo = HikvisionUtil.getJsonObjectData(rs);
return jo.getJSONArray(LIST);
}
/**
* 映射isc的组织
*
* @param project
* @return
*/
private HikvisionOrganization getHikvisionOrganization(Project project) {
HikvisionOrganization hikvisionOrganization = new HikvisionOrganization();
hikvisionOrganization.setClientId(null);
@ -2166,6 +2443,13 @@ public class HikvisionCall {
HikvisionUtil.chargeDeletion(project, new ChargeDeletionParam(parkIndexCode, carInfo.getCarNumber()));
}
/**
* 添加预约车辆到海康isc
*
* @param project
* @param carInfo
* @throws Exception
*/
private void reservationCarFromHttp(Project project, CarInfo carInfo) throws Exception {
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/pms/v2/parkingSpace/reservations/addition";
@ -2175,13 +2459,21 @@ public class HikvisionCall {
sendNoticeAndSetStatusForCarInfo("添加预约车辆到海康isc", rs, carInfo, 6, 1, null, true);
}
/**
* 映射车辆预约信息
*
* @param project
* @param carInfo
* @return
* @throws Exception
*/
private ParkReservation getParkReservation(Project project, CarInfo carInfo) throws Exception {
String parkIndexCode = HikvisionUtil.getProjectParkCode(project);
WorkerInfo workerInfo = workerInfoMapper.selectById(carInfo.getDriverWorkerId());
ParkReservation parkReservation = new ParkReservation();
parkReservation.setParkSyscode(parkIndexCode);
parkReservation.setPlateNo(carInfo.getCarNumber());
if (Objects.equals(carInfo.getCarModuleType(), 3)) {
if (Objects.equals(carInfo.getCarModuleType(), ParamEnum.CarInfoCarModuleTypeEnum.LS.getValue())) {
parkReservation.setOwner(carInfo.getDriverWorkerName());
} else if (workerInfo != null) {
parkReservation.setOwner(workerInfo.getWorkerName());
@ -2194,7 +2486,12 @@ public class HikvisionCall {
return parkReservation;
}
/**
* 保存图片本体
*
* @param url
* @return
*/
public String saveToLocal(String url) {
return UrlUtil.saveToLocal(url, basePath, IdUtil.simpleUUID() + ".png");
}
@ -2250,6 +2547,14 @@ public class HikvisionCall {
}
}
/**
* 获取isc的海康的车辆ids
*
* @param project
* @param carInfo
* @return
* @throws Exception
*/
@NotNull
private Set<String> getHkCarIds(Project project, CarInfo carInfo) throws Exception {
JSONObject param = new JSONObject();
@ -2260,7 +2565,7 @@ public class HikvisionCall {
do {
param.put("pageNo", param.getInteger("pageNo") + 1);
JSONObject hkFixCars = HikvisionUtil.getFixCarList(project, param);
JSONObject jo = HikvisionUtil.getJSONObjectData(hkFixCars);
JSONObject jo = HikvisionUtil.getJsonObjectData(hkFixCars);
total = jo.getInteger("total");
JSONArray oneList = jo.getJSONArray(LIST);
listJa.addAll(oneList);
@ -2290,7 +2595,7 @@ public class HikvisionCall {
String host = "https://" + project.getArtemisConfigHost();
String rs = HikvisionUtil.doPost(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
if (HikvisionUtil.isSuccess(rs)) {
JSONObject rsJo = HikvisionUtil.getJSONObjectData(rs);
JSONObject rsJo = HikvisionUtil.getJsonObjectData(rs);
return rsJo.getBoolean("checkResult");
} else {
return false;
@ -2298,6 +2603,8 @@ public class HikvisionCall {
}
/**
* 更新人员权限
*
* @param i 0新增2删除
*/
public void updatePersonAuth(WorkerInfo workerInfo, String devSn, StringBuilder sucSb, StringBuilder failSb, int i) throws Exception {
@ -2321,7 +2628,7 @@ public class HikvisionCall {
" ],\n" +
"}";
JSONObject rs = HikvisionUtil.getDoorsV2(project, JSONObject.parseObject(json));
JSONObject jo = HikvisionUtil.getJSONObjectData(rs);
JSONObject jo = HikvisionUtil.getJsonObjectData(rs);
JSONArray listJa = jo.getJSONArray(LIST);
if (CollUtil.isEmpty(listJa)) {
throw new OpenAlertException("失败信息isc不存在该设备");
@ -2356,7 +2663,7 @@ public class HikvisionCall {
}
return;
}
JSONObject sdRsJo = HikvisionUtil.getJSONObjectData(sdRs);
JSONObject sdRsJo = HikvisionUtil.getJsonObjectData(sdRs);
Integer downloadResult = sdRsJo.getJSONObject("resourceDownloadResult").getInteger("downloadResult");
if (downloadResult == 0) {
updateSucForUpdatePersonAuth(workerInfo, devSn, i);
@ -2367,6 +2674,13 @@ public class HikvisionCall {
}
}
/**
* 为人员权限设置成功下发状态
*
* @param workerInfo
* @param devSn
* @param i
*/
private void updateSucForUpdatePersonAuth(WorkerInfo workerInfo, String devSn, int i) {
updateSuccessStatus(workerInfo.getProjectSn(), workerInfo.getId(), 3, i == 0 ? 1 : 3, devSn);
}

View File

@ -218,7 +218,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
param.put("orgIndexCodes", Collections.singletonList(data.getUniqueId()));
JSONObject rtJo = HikvisionUtil.getOrgListByIndex(projectInfoBySn, param);
if (HikvisionUtil.isSuccess(rtJo)) {
JSONArray list = HikvisionUtil.getJSONObjectData(rtJo).getJSONArray("list");
JSONArray list = HikvisionUtil.getJsonObjectData(rtJo).getJSONArray("list");
if (CollUtil.isEmpty(list)) {
//新增
asyncHikvision.addEnterpriseInfoForHikvision(enterpriseInfo);
@ -252,7 +252,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
param.put("orgIndexCodes", Collections.singletonList(data.getUniqueId()));
JSONObject rtJo = HikvisionUtil.getOrgListByIndex(projectInfoBySn, param);
if (HikvisionUtil.isSuccess(rtJo)) {
JSONArray list = HikvisionUtil.getJSONObjectData(rtJo).getJSONArray("list");
JSONArray list = HikvisionUtil.getJsonObjectData(rtJo).getJSONArray("list");
if (CollUtil.isEmpty(list)) {
//新增
asyncHikvision.addTeamInfoForHikvision(teamInfo);
@ -286,7 +286,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
param.put("orgIndexCodes", Collections.singletonList(data.getUniqueId()));
JSONObject rtJo = HikvisionUtil.getOrgListByIndex(projectInfoBySn, param);
if (HikvisionUtil.isSuccess(rtJo)) {
JSONArray list = HikvisionUtil.getJSONObjectData(rtJo).getJSONArray("list");
JSONArray list = HikvisionUtil.getJsonObjectData(rtJo).getJSONArray("list");
if (CollUtil.isEmpty(list)) {
//新增
asyncHikvision.addDepartmentInfoForHikvision(departmentInfo);
@ -330,7 +330,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
param.put("paramValue", Collections.singletonList(data.getIdCard()));
JSONObject rtJo = HikvisionUtil.queryWorkerByCondition(projectInfoBySn, param);
if (HikvisionUtil.isSuccess(rtJo)) {
JSONArray list = HikvisionUtil.getJSONObjectData(rtJo).getJSONArray("list");
JSONArray list = HikvisionUtil.getJsonObjectData(rtJo).getJSONArray("list");
xzHikvisionSyncMapper.delete(new LambdaQueryWrapper<XzHikvisionSync>()
.eq(XzHikvisionSync::getBigType, 1)
.eq(XzHikvisionSync::getType, type)
@ -392,7 +392,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
rtJo = HikvisionUtil.getReservationCarInfoList(carInfo.getCarNumber(), projectInfoBySn);
}
if (HikvisionUtil.isSuccess(rtJo)) {
JSONArray list = HikvisionUtil.getJSONObjectData(rtJo).getJSONArray("list");
JSONArray list = HikvisionUtil.getJsonObjectData(rtJo).getJSONArray("list");
if (CollUtil.isEmpty(list)) {
//新增
if (carInfo.getIsBlack() == 1) {

View File

@ -201,7 +201,7 @@ public class HikvisionTask {
param.put("parentOrgIndexCode", project.getProjectSn());
JSONObject rtJo = HikvisionUtil.getSubOrgListByParentOrg(project, param);
List<EnterpriseInfo> enterpriseInfos = BeanUtil.copyToList(enterpriseInfoService.getEnterpriseInfoList(new MapBuilder<String, Object>().put(Cts.PROJECT_SN, project.getProjectSn()).build()), EnterpriseInfo.class);
JSONObject dataJo = HikvisionUtil.getJSONObjectData(rtJo);
JSONObject dataJo = HikvisionUtil.getJsonObjectData(rtJo);
JSONArray listJa = dataJo.getJSONArray("list");
if (CollUtil.isEmpty(listJa)) {
for (EnterpriseInfo enterpriseInfo : enterpriseInfos) {
@ -253,7 +253,7 @@ public class HikvisionTask {
.put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.ENTERPRISE_ID, enterpriseId).build());
List<DepartmentInfo> departmentInfoList = departmentInfoMapper.getDepartmentInfoList(new MapBuilder<String, Object>()
.put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.ENTERPRISE_ID, enterpriseId).build());
JSONObject dataJo = HikvisionUtil.getJSONObjectData(rtJo);
JSONObject dataJo = HikvisionUtil.getJsonObjectData(rtJo);
JSONArray listJa = dataJo.getJSONArray("list");
if (CollUtil.isEmpty(listJa)) {
for (TeamInfo teamInfo : teamList) {
@ -323,7 +323,7 @@ public class HikvisionTask {
.put(type == 2, Cts.DEPARTMENT_ID, orgIndex)
.build());
List<WorkerInfo> workerInfoList = workerPage.getRecords();
JSONObject dataJo = HikvisionUtil.getJSONObjectData(rtJo);
JSONObject dataJo = HikvisionUtil.getJsonObjectData(rtJo);
JSONArray listJa = dataJo.getJSONArray("list");
if (CollUtil.isEmpty(listJa)) {
for (WorkerInfo workerInfo : workerInfoList) {
@ -381,7 +381,7 @@ public class HikvisionTask {
.put("carModuleType", 1)
.put("isBlack", 0)
.build());
JSONObject dataJo = HikvisionUtil.getJSONObjectData(rtJo);
JSONObject dataJo = HikvisionUtil.getJsonObjectData(rtJo);
JSONArray listJa = dataJo.getJSONArray("list");
compareAndAddData(project, listJa, carInfoList, 1);
}
@ -417,7 +417,7 @@ public class HikvisionTask {
jo.put("pageNo", 1);
jo.put("pageSize", 1000);
JSONObject joRs = HikvisionUtil.getBlackCarList(project, jo);
JSONObject dataJo = HikvisionUtil.getJSONObjectData(joRs);
JSONObject dataJo = HikvisionUtil.getJsonObjectData(joRs);
JSONArray listJa = dataJo.getJSONArray("list");
List<CarInfo> carInfoList = carInfoService.selectCarList(new MapBuilder<String, Object>()
.put(Cts.PROJECT_SN, project.getProjectSn())

View File

@ -102,7 +102,7 @@ public class VideoItemTask {
jo.put("indexCodes", videoItems.stream().map(entityMap -> entityMap.get("serialNumber")).filter(Objects::nonNull).collect(Collectors.toList()));
JSONObject rsJo = hikvisionVideoCall.getNmsRecordForHikvisionForHttp(project, jo);
if (HikvisionUtil.isSuccess(rsJo)) {
JSONObject dataJo = HikvisionUtil.getJSONObjectData(rsJo);
JSONObject dataJo = HikvisionUtil.getJsonObjectData(rsJo);
JSONArray listJa = dataJo.getJSONArray("list");
for (int i = 0; i < listJa.size(); i++) {
JSONObject oneJo = listJa.getJSONObject(i);
@ -155,7 +155,7 @@ public class VideoItemTask {
jo.put("indexCodes", videoItems.stream().map(entityMap -> entityMap.get("serialNumber")).filter(Objects::nonNull).collect(Collectors.toList()));
JSONObject rsJo = hikvisionVideoCall.getVqdForHikvisionForHttp(project, jo);
if (HikvisionUtil.isSuccess(rsJo)) {
JSONObject dataJo = HikvisionUtil.getJSONObjectData(rsJo);
JSONObject dataJo = HikvisionUtil.getJsonObjectData(rsJo);
JSONArray listJa = dataJo.getJSONArray("list");
for (int i = 0; i < listJa.size(); i++) {
JSONObject oneJo = listJa.getJSONObject(i);
@ -188,7 +188,7 @@ public class VideoItemTask {
jo.put("indexCodes", videoItems.stream().map(entityMap -> entityMap.get("serialNumber")).filter(Objects::nonNull).collect(Collectors.toList()));
JSONObject rsJo = hikvisionVideoCall.getCameraOnlineForHttp(project, jo);
if (HikvisionUtil.isSuccess(rsJo)) {
JSONObject dataJo = HikvisionUtil.getJSONObjectData(rsJo);
JSONObject dataJo = HikvisionUtil.getJsonObjectData(rsJo);
JSONArray listJa = dataJo.getJSONArray("list");
for (int i = 0; i < listJa.size(); i++) {
JSONObject oneJo = listJa.getJSONObject(i);

View File

@ -28,14 +28,40 @@ import java.util.*;
@Component
public class HikvisionUtil {
public static final String SUC_CODE = "0";
/**
* 获取JSONObject的请求结果
*
* @param host
* @param path
* @param body
* @param querys
* @param appKey
* @param appSecret
* @return
* @throws Exception
*/
public static JSONObject doPostRtObj(String host, String path, String body, Map<String, String> querys, String appKey, String appSecret) throws Exception {
return JSONObject.parseObject(doPost(host, path, body, querys, appKey, appSecret));
}
/**
* 发送Post请求
*
* @param host
* @param path
* @param body
* @param querys
* @param appKey
* @param appSecret
* @return
* @throws Exception
*/
public static String doPost(String host, String path, String body, Map<String, String> querys, String appKey, String appSecret) throws Exception {
log.info("调用海康接口.url:{}", host + path);
log.info("调用海康接口.body:{}", body);
Map<String, String> headers = new HashMap();
Map<String, String> headers = new HashMap<>(16);
headers.put("Accept", "*/*");
headers.put("Content-Type", "application/json");
Request request = new Request(Method.POST_STRING, host, path, appKey, appSecret, Constants.DEFAULT_TIMEOUT * 30);
@ -48,10 +74,18 @@ public class HikvisionUtil {
return responseStr;
}
/**
* 获取响应结果
*
* @param response
* @return
*/
private static String getResponseResult(Response response) {
String responseStr = null;
int statusCode = response.getStatusCode();
if (!String.valueOf(statusCode).startsWith("2") && !String.valueOf(statusCode).startsWith("3")) {
String prefix2 = "2";
String prefix3 = "3";
if (!String.valueOf(statusCode).startsWith(prefix2) && !String.valueOf(statusCode).startsWith(prefix3)) {
responseStr = response.getBody();
} else {
responseStr = response.getBody();
@ -66,10 +100,10 @@ public class HikvisionUtil {
* @param rs
* @return
*/
public static JSONObject getJSONObjectData(String rs) {
public static JSONObject getJsonObjectData(String rs) {
JSONObject rsJo = JSONObject.parseObject(rs);
String code = rsJo.getString("code");
if (Objects.equals(code, "0")) {
if (Objects.equals(code, SUC_CODE)) {
return rsJo.getJSONObject("data");
} else {
log.error("海康返回错误码:{}", rs);
@ -83,9 +117,9 @@ public class HikvisionUtil {
* @param rsJo
* @return
*/
public static JSONObject getJSONObjectData(JSONObject rsJo) {
public static JSONObject getJsonObjectData(JSONObject rsJo) {
String code = rsJo.getString("code");
if (Objects.equals(code, "0")) {
if (Objects.equals(code, SUC_CODE)) {
return rsJo.getJSONObject("data");
} else {
log.error("海康返回错误码:{}", rsJo.toJSONString());
@ -93,10 +127,16 @@ public class HikvisionUtil {
}
}
public static JSONArray getJSONArrayData(String rs) {
/**
* 获取响应结果
*
* @param rs
* @return
*/
public static JSONArray getJsonArrayData(String rs) {
JSONObject rsJo = JSONArray.parseObject(rs);
String code = rsJo.getString("code");
if (Objects.equals(code, "0")) {
if (Objects.equals(code, SUC_CODE)) {
return rsJo.getJSONArray("data");
} else {
log.error("海康返回错误码:{}", rs);
@ -113,7 +153,7 @@ public class HikvisionUtil {
public static boolean isSuccess(String rs) {
JSONObject rsJo = JSONObject.parseObject(rs);
String code = rsJo.getString("code");
if (Objects.equals(code, "0")) {
if (Objects.equals(code, SUC_CODE)) {
return true;
} else {
return false;
@ -128,7 +168,7 @@ public class HikvisionUtil {
*/
public static boolean isSuccess(JSONObject rsJo) {
String code = rsJo.getString("code");
if (Objects.equals(code, "0")) {
if (Objects.equals(code, SUC_CODE)) {
return true;
} else {
return false;
@ -143,14 +183,19 @@ public class HikvisionUtil {
*/
public static boolean isFail(JSONObject rsJo) {
String code = rsJo.getString("code");
if (Objects.equals(code, "0")) {
if (Objects.equals(code, SUC_CODE)) {
return false;
} else {
return true;
}
}
/**
* 添加初始化分页
*
* @param param
* @return
*/
public static JSONObject addPageParamIfAbsent(JSONObject param) {
param.putIfAbsent("pageNo", 1);
param.putIfAbsent("pageSize", 1000);
@ -167,8 +212,8 @@ public class HikvisionUtil {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v2/vehicle/advance/vehicleList";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v2/vehicle/advance/vehicleList";
String host = "https://" + project.getArtemisConfigHost();
return doPostRtObj(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
@ -195,12 +240,12 @@ public class HikvisionUtil {
* 查询车辆分类
*/
public static JSONArray getCategoryList(Project project) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/car/category/search";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/pms/v1/car/category/search";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
String rs = doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
return getJSONArrayData(rs);
return getJsonArrayData(rs);
}
/**
@ -215,8 +260,8 @@ public class HikvisionUtil {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/car/categoryBind";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/pms/v1/car/categoryBind";
String host = "https://" + project.getArtemisConfigHost();
return doPostRtObj(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
@ -229,8 +274,8 @@ public class HikvisionUtil {
* @return
*/
public static JSONObject deleteWorkerFace(Project project, String workerFaceId) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/face/single/delete";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v1/face/single/delete";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("faceId", workerFaceId);
@ -247,8 +292,8 @@ public class HikvisionUtil {
* @throws Exception
*/
public static JSONObject deleteWorkerById(String uniqueId, Project project) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/person/batch/delete";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v1/person/batch/delete";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jsonBody = new JSONObject();
jsonBody.put("personIds", Arrays.asList(uniqueId));
@ -264,8 +309,8 @@ public class HikvisionUtil {
* @throws Exception
*/
public static JSONObject queryWorkerByCondition(Project project, JSONObject param) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/person/condition/personInfo";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v1/person/condition/personInfo";
String host = "https://" + project.getArtemisConfigHost();
return doPostRtObj(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
@ -279,12 +324,12 @@ public class HikvisionUtil {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/park/parkList";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v1/park/parkList";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
String rs = doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
return getJSONArrayData(rs);
return getJsonArrayData(rs);
}
/**
@ -315,8 +360,8 @@ public class HikvisionUtil {
* @param project
*/
public static JSONObject getReservationCarInfoList(String carNumber, Project project) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v2/reserveRecord/page";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/pms/v2/reserveRecord/page";
String host = "https://" + project.getArtemisConfigHost();
HikvisionReservationCarInfo info = getHikvisionReservationCarInfoObj(carNumber, project);
return doPostRtObj(host, path, JSON.toJSONString(info), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
@ -330,10 +375,17 @@ public class HikvisionUtil {
*/
public static JSONArray getReservationCarInfoDataList(String carNumber, Project project) throws Exception {
JSONObject jo = getReservationCarInfoList(carNumber, project);
return getJSONObjectData(jo).getJSONArray("list");
return getJsonObjectData(jo).getJSONArray("list");
}
/**
* 映射车辆预约信息
*
* @param carNumber
* @param project
* @return
* @throws Exception
*/
private static HikvisionReservationCarInfo getHikvisionReservationCarInfoObj(String carNumber, Project project) throws Exception {
String projectParkCode = HikvisionUtil.getProjectParkCode(project);
HikvisionReservationCarInfo hikvisionReservationCarInfo = new HikvisionReservationCarInfo();
@ -360,8 +412,8 @@ public class HikvisionUtil {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v2/org/advance/orgList";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v2/org/advance/orgList";
String host = "https://" + project.getArtemisConfigHost();
return doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
@ -375,17 +427,25 @@ public class HikvisionUtil {
* @throws Exception
*/
public static String addOrg(Project project, HikvisionOrganization hikvisionOrganization) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/batch/add";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v1/org/batch/add";
String host = "https://" + project.getArtemisConfigHost();
ArrayList<HikvisionOrganization> list = new ArrayList<>();
list.add(hikvisionOrganization);
return doPost(host, path, JSON.toJSONString(list), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
/**
* 批量删除组织
*
* @param project
* @param indexCodes
* @return
* @throws Exception
*/
public static String deleteOrgByIndexCodes(Project project, List<String> indexCodes) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/batch/delete";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v1/org/batch/delete";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("indexCodes", indexCodes);
@ -402,8 +462,8 @@ public class HikvisionUtil {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/alarmCar/page";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/pms/v1/alarmCar/page";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
@ -418,8 +478,8 @@ public class HikvisionUtil {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v2/person/orgIndexCode/personList";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v2/person/orgIndexCode/personList";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
@ -434,8 +494,8 @@ public class HikvisionUtil {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/orgIndexCodes/orgInfo";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v1/org/orgIndexCodes/orgInfo";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
@ -450,8 +510,8 @@ public class HikvisionUtil {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/parentOrgIndexCode/subOrgList";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v1/org/parentOrgIndexCode/subOrgList";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
@ -466,8 +526,8 @@ public class HikvisionUtil {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/car/charge/deletion";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/pms/v1/car/charge/deletion";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
@ -482,32 +542,56 @@ public class HikvisionUtil {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/acps/v1/authDownload/task/simpleDownload";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/acps/v1/authDownload/task/simpleDownload";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(doPost(host, path, param, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
/**
* 添加人员
*
* @param workerInfo
* @param project
* @return
* @throws Exception
*/
public static String addWorker(WorkerInfo workerInfo, Project project) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v2/person/single/add";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v2/person/single/add";
String host = "https://" + project.getArtemisConfigHost();
String body = HikvisionCall.getWorkerJson(workerInfo);
String rs = doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
return rs;
}
/**
* 编剧人员
*
* @param workerInfo
* @param project
* @return
* @throws Exception
*/
public static String editWorker(WorkerInfo workerInfo, Project project) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/person/single/update";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v1/person/single/update";
String host = "https://" + project.getArtemisConfigHost();
String body = HikvisionCall.getWorkerJson(workerInfo);
return doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
/**
* 添加人脸
*
* @param workerInfo
* @param project
* @return
* @throws Exception
*/
public static String addWorkerFace(WorkerInfo workerInfo, Project project) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/face/single/add";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v1/face/single/add";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("personId", String.valueOf(workerInfo.getId()));
@ -525,8 +609,8 @@ public class HikvisionUtil {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/alarmCar/addition";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/pms/v1/alarmCar/addition";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
@ -541,15 +625,23 @@ public class HikvisionUtil {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/alarmCar/deletion";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/pms/v1/alarmCar/deletion";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
/**
* 删除车辆
*
* @param carId
* @param project
* @return
* @throws Exception
*/
public static String deleteCarInfoById(String carId, Project project) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/batch/delete";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v1/vehicle/batch/delete";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
ArrayList<String> list = new ArrayList<>();
@ -569,8 +661,8 @@ public class HikvisionUtil {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/acs/v2/door/events";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/acs/v2/door/events";
String host = "https://" + project.getArtemisConfigHost();
return doPost(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
@ -585,8 +677,8 @@ public class HikvisionUtil {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/crossRecords/page";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/pms/v1/crossRecords/page";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("pageNo", param.getIntValue("pageNo"));
@ -609,15 +701,23 @@ public class HikvisionUtil {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v2/door/search";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v2/door/search";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(doPost(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
/**
* 编辑组织
*
* @param project
* @param hikvisionOrganization
* @return
* @throws Exception
*/
public static String editOrg(Project project, HikvisionOrganization hikvisionOrganization) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/single/update";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v1/org/single/update";
String host = "https://" + project.getArtemisConfigHost();
String rs = doPost(host, path, JSONArray.toJSONString(hikvisionOrganization), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
return rs;
@ -632,8 +732,8 @@ public class HikvisionUtil {
* @throws Exception
*/
public static JSONObject addAuth(Project project, JSONObject param) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/acps/v1/auth_config/add";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/acps/v1/auth_config/add";
String host = "https://" + project.getArtemisConfigHost();
return doPostRtObj(host, path, JSONArray.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
@ -647,8 +747,8 @@ public class HikvisionUtil {
* @throws Exception
*/
public static JSONObject deleteAuth(Project project, JSONObject param) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/acps/v1/auth_config/delete";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/acps/v1/auth_config/delete";
String host = "https://" + project.getArtemisConfigHost();
return doPostRtObj(host, path, JSONArray.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
@ -662,8 +762,8 @@ public class HikvisionUtil {
* @throws Exception
*/
public static JSONObject downloadAuth(Project project, JSONObject param) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/acps/v1/authDownload/configuration/shortcut";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/acps/v1/authDownload/configuration/shortcut";
String host = "https://" + project.getArtemisConfigHost();
return doPostRtObj(host, path, JSONArray.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
@ -677,8 +777,8 @@ public class HikvisionUtil {
* @throws Exception
*/
public static JSONObject queryDownloadProgress(Project project, JSONObject param) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/acps/v1/authDownload/task/progress";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/acps/v1/authDownload/task/progress";
String host = "https://" + project.getArtemisConfigHost();
return doPostRtObj(host, path, JSONArray.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
@ -693,8 +793,8 @@ public class HikvisionUtil {
* @throws Exception
*/
public static JSONObject queryAuthItem(Project project, JSONObject param) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/acps/v1/auth_item/list/search";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/acps/v1/auth_item/list/search";
String host = "https://" + project.getArtemisConfigHost();
return doPostRtObj(host, path, JSONArray.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
@ -708,8 +808,8 @@ public class HikvisionUtil {
* @throws Exception
*/
public static JSONObject queryPersonList(Project project, JSONObject param) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v2/person/advance/personList";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v2/person/advance/personList";
String host = "https://" + project.getArtemisConfigHost();
return doPostRtObj(host, path, JSONArray.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
@ -722,14 +822,14 @@ public class HikvisionUtil {
* @return
*/
public static JSONObject getWorkerInfoByPersonId(String uniqueId, Project project) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/person/condition/personInfo";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v1/person/condition/personInfo";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("paramName", "personId");
jo.put("paramValue", Collections.singletonList(uniqueId));
String rs = doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
JSONObject joData = getJSONObjectData(rs);
JSONObject joData = getJsonObjectData(rs);
Integer total = joData.getInteger("total");
if (Objects.equals(total, 1)) {
JSONArray jsonArray = joData.getJSONArray("list");
@ -748,14 +848,14 @@ public class HikvisionUtil {
* @return
*/
public static JSONObject getWorkerInfoByCertificateNo(WorkerInfo workerInfo, Project project) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/person/condition/personInfo";
final String artemisPath = "/artemis";
final String path = artemisPath + "/api/resource/v1/person/condition/personInfo";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("paramName", "certificateNo");
jo.put("paramValue", Collections.singletonList(String.valueOf(workerInfo.getIdCard())));
String rs = doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
JSONObject joData = getJSONObjectData(rs);
JSONObject joData = getJsonObjectData(rs);
Integer total = joData.getInteger("total");
if (Objects.equals(total, 1)) {
JSONArray jsonArray = joData.getJSONArray("list");