调用海康bug修改

This commit is contained in:
guoshengxiong 2024-06-06 17:21:47 +08:00
parent a0445656e8
commit b0e74517df
6 changed files with 143 additions and 75 deletions

View File

@ -109,11 +109,13 @@ public class AsyncHikvision {
* 添加劳务人员-海康 * 添加劳务人员-海康
* *
* @param workerInfo * @param workerInfo
* @param isSaveWorker
* @param isSaveWorkerFace
*/ */
@Async("hikvisionExecutor") @Async("hikvisionExecutor")
public void addWorkerForHikvisionAsync(WorkerInfo workerInfo) { public void addWorkerForHikvisionAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
try { try {
hikvisionCall.addWorkerForHikvision(workerInfo); hikvisionCall.addWorkerForHikvision(workerInfo, isSaveWorker, isSaveWorkerFace);
} catch (Exception e) { } catch (Exception e) {
log.error("海康:", e); log.error("海康:", e);
sendNoticeForWorker(workerInfo, e, "添加"); sendNoticeForWorker(workerInfo, e, "添加");
@ -121,9 +123,9 @@ public class AsyncHikvision {
} }
@Async("hikvisionExecutor") @Async("hikvisionExecutor")
public void editWorkerForHikvisionAsync(WorkerInfo workerInfo) { public void editWorkerForHikvisionAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
try { try {
hikvisionCall.editWorkerForHikvision(workerInfo); hikvisionCall.editWorkerForHikvision(workerInfo, isSaveWorker, isSaveWorkerFace);
} catch (Exception e) { } catch (Exception e) {
log.error("海康:", e); log.error("海康:", e);
sendNoticeForWorker(workerInfo, e, "更新"); sendNoticeForWorker(workerInfo, e, "更新");

View File

@ -55,6 +55,7 @@ import com.zhgd.xmgl.modules.worker.mapper.WorkerAttendanceMapper;
import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper; import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper;
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendancePresenceService; import com.zhgd.xmgl.modules.worker.service.IWorkerAttendancePresenceService;
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceService; import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceService;
import com.zhgd.xmgl.modules.worker.service.impl.EnterpriseInfoServiceImpl;
import com.zhgd.xmgl.modules.worker.service.impl.WorkerAttendanceServiceImpl; import com.zhgd.xmgl.modules.worker.service.impl.WorkerAttendanceServiceImpl;
import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync; import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync;
import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionCompareDataMapper; import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionCompareDataMapper;
@ -69,6 +70,8 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@ -108,6 +111,9 @@ public class HikvisionCall {
@Lazy @Lazy
@Autowired @Autowired
CarInfoServiceImpl carInfoService; CarInfoServiceImpl carInfoService;
@Autowired
@Lazy
EnterpriseInfoServiceImpl enterpriseInfoService;
@Lazy @Lazy
@Autowired @Autowired
private XzHikvisionCompareDataMapper xzHikvisionCompareDataMapper; private XzHikvisionCompareDataMapper xzHikvisionCompareDataMapper;
@ -822,14 +828,20 @@ public class HikvisionCall {
* 添加人员 * 添加人员
* *
* @param workerInfo * @param workerInfo
* @param isSaveWorker
* @param isSaveWorkerFace
*/ */
public void addWorkerForHikvision(WorkerInfo workerInfo) throws Exception { public void addWorkerForHikvision(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) throws Exception {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, workerInfo.getProjectSn())); Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, workerInfo.getProjectSn()));
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return; return;
} }
addWorkerFromHttp(workerInfo, project); if (isSaveWorker) {
addWorkerFace(workerInfo, project); addWorkerFromHttp(workerInfo, project);
}
if (isSaveWorkerFace) {
addWorkerFace(workerInfo, project);
}
} }
public void addWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { public void addWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception {
@ -885,19 +897,25 @@ public class HikvisionCall {
* 编辑人员 * 编辑人员
* *
* @param workerInfo * @param workerInfo
* @param isSaveWorker
* @param isSaveWorkerFace
*/ */
public void editWorkerForHikvision(WorkerInfo workerInfo) throws Exception { public void editWorkerForHikvision(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) throws Exception {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, workerInfo.getProjectSn())); Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, workerInfo.getProjectSn()));
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return; return;
} }
JSONObject wiJo = getWorkerInfoByPersonId(String.valueOf(workerInfo.getId()), project); JSONObject wiJo = getWorkerInfoByPersonId(String.valueOf(workerInfo.getId()), project);
if (wiJo != null) { if (wiJo != null) {
editWorkerFromHttp(workerInfo, project); if (isSaveWorker) {
editWorkerFromHttp(workerInfo, project);
}
editWorkerFace(workerInfo, project); if (isSaveWorkerFace) {
editWorkerFace(workerInfo, project);
}
} else { } else {
addWorkerForHikvision(workerInfo); addWorkerForHikvision(workerInfo, isSaveWorker, isSaveWorkerFace);
} }
} }
@ -1036,17 +1054,22 @@ public class HikvisionCall {
String type = "25"; String type = "25";
if (success) { if (success) {
JSONObject jo = JSONObject.parseObject(rs); JSONObject jo = JSONObject.parseObject(rs);
JSONObject dataJo = jo.getJSONObject("data"); if (jo.get("data") instanceof JSONObject) {
Optional<JSONArray> fOp = Optional.ofNullable(dataJo).map(o -> o.getJSONArray("failures")); JSONObject dataJo = jo.getJSONObject("data");
if (fOp.isPresent() && fOp.get().size() != 0) { Optional<JSONArray> fOp = Optional.ofNullable(dataJo).map(o -> o.getJSONArray("failures"));
if ("0x00052102".equals(fOp.get().getJSONObject(0).getString("code"))) { if (fOp.isPresent() && fOp.get().size() != 0) {
msg = "同步失败,组织名称:" + orgName + "。失败原因:上级组织不存在"; if ("0x00052102".equals(fOp.get().getJSONObject(0).getString("code"))) {
title += "失败"; msg = "同步失败,组织名称:" + orgName + "。失败原因:上级组织不存在";
success = false; title += "失败";
success = false;
} else {
msg = "同步失败,组织名称:" + orgName + "。失败原因:下发异常";
title += "失败";
success = false;
}
} else { } else {
msg = "同步失败,组织名称:" + orgName + "。失败原因:下发异常"; msg = "同步成功,组织名称:" + orgName;
title += "失败"; title += "成功";
success = false;
} }
} else { } else {
msg = "同步成功,组织名称:" + orgName; msg = "同步成功,组织名称:" + orgName;
@ -1516,7 +1539,6 @@ public class HikvisionCall {
return oldCarInfo == null ? null : oldCarInfo.getString("vehicleId"); return oldCarInfo == null ? null : oldCarInfo.getString("vehicleId");
} }
/** /**
* 保存绑定群组关系 * 保存绑定群组关系
* *
@ -1825,14 +1847,16 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return; return;
} }
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(enterpriseInfo); enterpriseInfo = BeanUtil.toBean(enterpriseInfoService.getEnterpriseInfoById(new MapBuilder<String, Object>()
.put(Cts.PROJECT_SN, enterpriseInfo.getProjectSn()).put(Cts.ENTERPRISE_ID, enterpriseInfo.getId()).build()), EnterpriseInfo.class);
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(enterpriseInfo, String.valueOf(enterpriseInfo.getProjectEnterprise().getId()));
addOrgNoticeFromHttp(project, hikvisionOrganization); addOrgNoticeFromHttp(project, hikvisionOrganization);
} }
private HikvisionOrganization getHikvisionOrganization(EnterpriseInfo enterpriseInfo) { private HikvisionOrganization getHikvisionOrganization(EnterpriseInfo enterpriseInfo, String orgIndexCode) {
HikvisionOrganization hikvisionOrganization = new HikvisionOrganization(); HikvisionOrganization hikvisionOrganization = new HikvisionOrganization();
hikvisionOrganization.setClientId(null); hikvisionOrganization.setClientId(null);
hikvisionOrganization.setOrgIndexCode(String.valueOf(enterpriseInfo.getId())); hikvisionOrganization.setOrgIndexCode(orgIndexCode);
hikvisionOrganization.setOrgName(enterpriseInfo.getEnterpriseName()); hikvisionOrganization.setOrgName(enterpriseInfo.getEnterpriseName());
hikvisionOrganization.setParentIndexCode(enterpriseInfo.getProjectSn()); hikvisionOrganization.setParentIndexCode(enterpriseInfo.getProjectSn());
return hikvisionOrganization; return hikvisionOrganization;
@ -1848,14 +1872,28 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return; return;
} }
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(enterpriseInfo); Pair<Boolean, String> existAndIndexCode = existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, enterpriseInfo.getId());
if (existOrg(project, String.valueOf(enterpriseInfo.getId()))) { HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(enterpriseInfo, existAndIndexCode.getRight());
if (existAndIndexCode.getLeft()) {
editOrgFromHttp(project, hikvisionOrganization); editOrgFromHttp(project, hikvisionOrganization);
} else { } else {
addOrgNoticeFromHttp(project, hikvisionOrganization); addOrgNoticeFromHttp(project, hikvisionOrganization);
} }
} }
private Pair<Boolean, String> existAndGetEnterpriseOrgIndexCodeByEnterpriseId(Project project, Long enterpriseId) throws Exception {
EnterpriseInfo enterpriseInfo = BeanUtil.toBean(enterpriseInfoService.getEnterpriseInfoById(new MapBuilder<String, Object>()
.put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.ENTERPRISE_ID, enterpriseId).build()), EnterpriseInfo.class);
JSONArray orgList = getOrgList(project, StrUtil.join(",", enterpriseInfo.getId(), enterpriseInfo.getProjectEnterprise().getId()), project.getProjectSn());
String index = null;
if (CollUtil.isEmpty(orgList)) {
index = String.valueOf(enterpriseInfo.getProjectEnterprise().getId());
} else {
index = orgList.getJSONObject(0).getString("orgIndexCode");
}
return new ImmutablePair<>(CollUtil.isNotEmpty(orgList), index);
}
/** /**
* 删除组织 * 删除组织
* *
@ -1868,12 +1906,8 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return; return;
} }
final String ARTEMIS_PATH = "/artemis"; Pair<Boolean, String> pair = existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, Long.valueOf(enterpriseId));
final String path = ARTEMIS_PATH + "/api/resource/v1/org/batch/delete"; String rs = HikvisionUtil.deleteOrgByIndexCodes(project, Arrays.asList(pair.getRight()));
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("indexCodes", Arrays.asList(enterpriseId));
String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
sendNoticeForOrg("删除组织到海康isc", rs, enterpriseName); sendNoticeForOrg("删除组织到海康isc", rs, enterpriseName);
} }
@ -1887,16 +1921,16 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return; return;
} }
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(teamInfo); HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(teamInfo, project);
addOrgNoticeFromHttp(project, hikvisionOrganization); addOrgNoticeFromHttp(project, hikvisionOrganization);
} }
private HikvisionOrganization getHikvisionOrganization(TeamInfo teamInfo) { private HikvisionOrganization getHikvisionOrganization(TeamInfo teamInfo, Project project) throws Exception {
HikvisionOrganization hikvisionOrganization = new HikvisionOrganization(); HikvisionOrganization hikvisionOrganization = new HikvisionOrganization();
hikvisionOrganization.setClientId(null); hikvisionOrganization.setClientId(null);
hikvisionOrganization.setOrgIndexCode(String.valueOf(teamInfo.getId())); hikvisionOrganization.setOrgIndexCode(String.valueOf(teamInfo.getId()));
hikvisionOrganization.setOrgName(teamInfo.getTeamName()); hikvisionOrganization.setOrgName(teamInfo.getTeamName());
hikvisionOrganization.setParentIndexCode(String.valueOf(teamInfo.getEnterpriseId())); hikvisionOrganization.setParentIndexCode(existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, teamInfo.getEnterpriseId()).getRight());
return hikvisionOrganization; return hikvisionOrganization;
} }
@ -1910,8 +1944,8 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return; return;
} }
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(teamInfo); HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(teamInfo, project);
if (existOrg(project, String.valueOf(teamInfo.getId()))) { if (existOrg(project, String.valueOf(teamInfo.getId()), hikvisionOrganization.getParentIndexCode())) {
editOrgFromHttp(project, hikvisionOrganization); editOrgFromHttp(project, hikvisionOrganization);
} else { } else {
addOrgNoticeFromHttp(project, hikvisionOrganization); addOrgNoticeFromHttp(project, hikvisionOrganization);
@ -1927,29 +1961,15 @@ public class HikvisionCall {
} }
private void deleteOrgFromHttp(Project project, List<String> idList, String orgName) throws Exception { private void deleteOrgFromHttp(Project project, List<String> idList, String orgName) throws Exception {
final String ARTEMIS_PATH = "/artemis"; String rs = HikvisionUtil.deleteOrgByIndexCodes(project, idList);
final String path = ARTEMIS_PATH + "/api/resource/v1/org/batch/delete";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("indexCodes", idList);
String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
sendNoticeForOrg("删除组织到海康isc", rs, orgName); sendNoticeForOrg("删除组织到海康isc", rs, orgName);
} }
private void addOrgNoticeFromHttp(Project project, HikvisionOrganization hikvisionOrganization) throws Exception { private void addOrgNoticeFromHttp(Project project, HikvisionOrganization hikvisionOrganization) throws Exception {
String rs = addOrgFromHttp(project, hikvisionOrganization); String rs = HikvisionUtil.addOrgFromHttp(project, hikvisionOrganization);
sendNoticeForOrg("添加组织到海康isc", rs, hikvisionOrganization.getOrgName()); sendNoticeForOrg("添加组织到海康isc", rs, hikvisionOrganization.getOrgName());
} }
private String addOrgFromHttp(Project project, HikvisionOrganization hikvisionOrganization) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/batch/add";
String host = "https://" + project.getArtemisConfigHost();
ArrayList<HikvisionOrganization> list = new ArrayList<>();
list.add(hikvisionOrganization);
return HikvisionUtil.doPost(host, path, JSON.toJSONString(list), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
/** /**
* 删除组织 * 删除组织
* *
@ -1974,16 +1994,16 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return; return;
} }
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(departmentInfo); HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(departmentInfo, project);
addOrgNoticeFromHttp(project, hikvisionOrganization); addOrgNoticeFromHttp(project, hikvisionOrganization);
} }
private HikvisionOrganization getHikvisionOrganization(DepartmentInfo departmentInfo) { private HikvisionOrganization getHikvisionOrganization(DepartmentInfo departmentInfo, Project project) throws Exception {
HikvisionOrganization hikvisionOrganization = new HikvisionOrganization(); HikvisionOrganization hikvisionOrganization = new HikvisionOrganization();
hikvisionOrganization.setClientId(null); hikvisionOrganization.setClientId(null);
hikvisionOrganization.setOrgIndexCode(String.valueOf(departmentInfo.getId())); hikvisionOrganization.setOrgIndexCode(String.valueOf(departmentInfo.getId()));
hikvisionOrganization.setOrgName(departmentInfo.getDepartmentName()); hikvisionOrganization.setOrgName(departmentInfo.getDepartmentName());
hikvisionOrganization.setParentIndexCode(String.valueOf(departmentInfo.getEnterpriseId())); hikvisionOrganization.setParentIndexCode(existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, departmentInfo.getEnterpriseId()).getRight());
return hikvisionOrganization; return hikvisionOrganization;
} }
@ -1997,8 +2017,8 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return; return;
} }
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(departmentInfo); HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(departmentInfo, project);
if (existOrg(project, String.valueOf(departmentInfo.getId()))) { if (existOrg(project, String.valueOf(departmentInfo.getId()), hikvisionOrganization.getParentIndexCode())) {
editOrgFromHttp(project, hikvisionOrganization); editOrgFromHttp(project, hikvisionOrganization);
} else { } else {
addOrgNoticeFromHttp(project, hikvisionOrganization); addOrgNoticeFromHttp(project, hikvisionOrganization);
@ -2030,7 +2050,7 @@ public class HikvisionCall {
return; return;
} }
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(project); HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(project);
addOrgFromHttp(project, hikvisionOrganization); HikvisionUtil.addOrgFromHttp(project, hikvisionOrganization);
} }
/** /**
@ -2053,16 +2073,31 @@ public class HikvisionCall {
} }
/** /**
* 组织存在 * 组织是否存在
* *
* @param project * @param project
* @param orgIndex * @param orgIndexs 逗号分割
* @param parentOrgIndexCode
* @return * @return
*/ */
public boolean existOrg(Project project, String orgIndex) throws Exception { public boolean existOrg(Project project, String orgIndexs, String parentOrgIndexCode) throws Exception {
String rs = HikvisionUtil.getOrgV2(project, orgIndex, project.getProjectSn()); JSONArray list = getOrgList(project, orgIndexs, parentOrgIndexCode);
return list.size() > 0;
}
/**
* 查询组织
*
* @param project
* @param orgIndexs 逗号分割
* @param parentOrgIndexCode
* @return
*/
private JSONArray getOrgList(Project project, String orgIndexs, String parentOrgIndexCode) throws Exception {
String rs = HikvisionUtil.getOrgV2(project, orgIndexs, parentOrgIndexCode);
JSONObject jo = HikvisionUtil.getJSONObjectData(rs); JSONObject jo = HikvisionUtil.getJSONObjectData(rs);
return jo.getJSONArray("list").size() > 0; JSONArray list = jo.getJSONArray("list");
return list;
} }
private HikvisionOrganization getHikvisionOrganization(Project project) { private HikvisionOrganization getHikvisionOrganization(Project project) {

View File

@ -250,7 +250,11 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl<EnterpriseInfoMapper,
} }
List<XzUserToSupplier> xzUserToSuppliers = baseMapper.getSupplierUserIdByProjectSnAndEnterpriseId(projectSn, enterpriseId); List<XzUserToSupplier> xzUserToSuppliers = baseMapper.getSupplierUserIdByProjectSnAndEnterpriseId(projectSn, enterpriseId);
for (XzUserToSupplier xzUserToSupplier : xzUserToSuppliers) { for (XzUserToSupplier xzUserToSupplier : xzUserToSuppliers) {
systemUserService.deleteTenantOrSupplier(String.valueOf(xzUserToSupplier.getUserId()), projectSn); try {
systemUserService.deleteTenantOrSupplier(String.valueOf(xzUserToSupplier.getUserId()), projectSn);
} catch (Exception e) {
e.printStackTrace();
}
} }
EnterpriseInfo enterpriseInfo = baseMapper.selectById(enterpriseId); EnterpriseInfo enterpriseInfo = baseMapper.selectById(enterpriseId);
//同步海康 //同步海康

View File

@ -2345,7 +2345,7 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
} }
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(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()))); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(2).setOperate(1).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
asyncHikvision.addWorkerForHikvisionAsync(workerInfo); asyncHikvision.addWorkerForHikvisionAsync(workerInfo, true, true);
} }
@Override @Override
@ -2367,6 +2367,6 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
} }
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(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()))); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(2).setOperate(2).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId())));
asyncHikvision.editWorkerForHikvisionAsync(workerInfo); asyncHikvision.editWorkerForHikvisionAsync(workerInfo, true, true);
} }
} }

View File

@ -58,6 +58,7 @@ import java.util.*;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Slf4j @Slf4j
public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCompareDataMapper, XzHikvisionCompareData> implements IXzHikvisionCompareDataService { public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCompareDataMapper, XzHikvisionCompareData> implements IXzHikvisionCompareDataService {
@Lazy
@Autowired @Autowired
private ICarInfoService carInfoService; private ICarInfoService carInfoService;
@Lazy @Lazy
@ -292,13 +293,14 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
private void syncWorker(XzHikvisionCompareData data) throws Exception { private void syncWorker(XzHikvisionCompareData data) throws Exception {
boolean isWorker = data.getOurType() == 4;
ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(data.getProjectSn()); ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(data.getProjectSn());
WorkerInfo workerInfo = workerInfoService.queryById(data.getUniqueId()); WorkerInfo workerInfo = workerInfoService.queryById(data.getUniqueId());
if (data.getExistIsc() == 1 && data.getExistMyPlatform() == 0) { if (data.getExistIsc() == 1 && data.getExistMyPlatform() == 0) {
//查询id是否存在平台存在就更新不存在就删除 //查询id是否存在平台存在就更新不存在就删除
if (workerInfo != null) { if (workerInfo != null) {
//同步海康 //同步海康
workerInfoService.editWorkerForHikvision(workerInfo); asyncHikvision.editWorkerForHikvisionAsync(workerInfo, isWorker, !isWorker);
} else { } else {
workerInfo = new WorkerInfo(); workerInfo = new WorkerInfo();
workerInfo.setWorkerName(data.getWorkerName()); workerInfo.setWorkerName(data.getWorkerName());
@ -314,10 +316,10 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
JSONArray list = HikvisionUtil.getJSONObjectData(rtJo).getJSONArray("list"); JSONArray list = HikvisionUtil.getJSONObjectData(rtJo).getJSONArray("list");
if (CollUtil.isEmpty(list)) { if (CollUtil.isEmpty(list)) {
//新增 //新增
workerInfoService.addWorkerForHikvision(workerInfo); asyncHikvision.addWorkerForHikvisionAsync(workerInfo, isWorker, !isWorker);
} else { } else {
//更新 //更新
workerInfoService.editWorkerForHikvision(workerInfo); asyncHikvision.editWorkerForHikvisionAsync(workerInfo, isWorker, !isWorker);
} }
} else { } else {
log.error("校验数据同步海康失败,失败原因:{}", rtJo.toJSONString()); log.error("校验数据同步海康失败,失败原因:{}", rtJo.toJSONString());

View File

@ -10,15 +10,13 @@ import com.hikvision.artemis.sdk.constant.Constants;
import com.hikvision.artemis.sdk.enums.Method; import com.hikvision.artemis.sdk.enums.Method;
import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.execption.OpenPromptException; import com.zhgd.jeecg.common.execption.OpenPromptException;
import com.zhgd.xmgl.base.HikvisionOrganization;
import com.zhgd.xmgl.base.HikvisionReservationCarInfo; import com.zhgd.xmgl.base.HikvisionReservationCarInfo;
import com.zhgd.xmgl.modules.project.entity.Project; import com.zhgd.xmgl.modules.project.entity.Project;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Arrays; import java.util.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/** /**
* 海康接口 * 海康接口
@ -374,4 +372,31 @@ public class HikvisionUtil {
String body = jo.toJSONString(); String body = jo.toJSONString();
return doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); return doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
} }
/**
* 批量添加组织
*
* @param project
* @param hikvisionOrganization
* @return
* @throws Exception
*/
public static String addOrgFromHttp(Project project, HikvisionOrganization hikvisionOrganization) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/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());
}
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";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("indexCodes", indexCodes);
String rs = doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
return rs;
}
} }