bug修复

This commit is contained in:
guo 2024-03-01 11:16:24 +08:00
parent 079a7ef249
commit eced94a9ef
8 changed files with 277 additions and 37 deletions

View File

@ -2,10 +2,14 @@ package com.zhgd.xmgl.async;
import com.zhgd.xmgl.call.HikvisionCall;
import com.zhgd.xmgl.modules.car.entity.CarInfo;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.worker.entity.DepartmentInfo;
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
import com.zhgd.xmgl.modules.worker.entity.TeamInfo;
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
@ -13,6 +17,7 @@ import org.springframework.stereotype.Component;
@Component
public class AsyncHikvision {
@Autowired
@Lazy
HikvisionCall hikvisionCall;
/**
@ -100,4 +105,67 @@ public class AsyncHikvision {
e.printStackTrace();
}
}
@Async
public void editTeamInfoForHikvision(TeamInfo teamInfo) {
try {
hikvisionCall.editTeamInfoForHikvision(teamInfo);
} catch (Exception e) {
e.printStackTrace();
}
}
@Async
public void deleteTeamInfoForHikvision(TeamInfo teamInfo) {
try {
hikvisionCall.deleteTeamInfoForHikvision(teamInfo);
} catch (Exception e) {
e.printStackTrace();
}
}
@Async
public void addTeamInfoForHikvision(TeamInfo teamInfo) {
try {
hikvisionCall.addTeamInfoForHikvision(teamInfo);
} catch (Exception e) {
e.printStackTrace();
}
}
@Async
public void editDepartmentInfoForHikvision(DepartmentInfo teamInfo) {
try {
hikvisionCall.editDepartmentInfoForHikvision(teamInfo);
} catch (Exception e) {
e.printStackTrace();
}
}
@Async
public void addDepartmentInfoForHikvision(DepartmentInfo teamInfo) {
try {
hikvisionCall.addDepartmentInfoForHikvision(teamInfo);
} catch (Exception e) {
e.printStackTrace();
}
}
@Async
public void deleteDepartmentInfoForHikvision(DepartmentInfo teamInfo) {
try {
hikvisionCall.deleteDepartmentInfoForHikvision(teamInfo);
} catch (Exception e) {
e.printStackTrace();
}
}
@Async
public void editProjectForHikvision(Project project) {
try {
hikvisionCall.editProjectForHikvision(project);
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class HikvisionEnterpriseInfo {
public class HikvisionOrganization {
@JsonProperty("clientId")
private Long clientId;

View File

@ -9,15 +9,17 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.xmgl.base.HikvisionCarInfo;
import com.zhgd.xmgl.base.HikvisionEnterpriseInfo;
import com.zhgd.xmgl.base.HikvisionEventsPictureRq;
import com.zhgd.xmgl.base.HikvisionOrganization;
import com.zhgd.xmgl.base.SubscribeEventQo;
import com.zhgd.xmgl.modules.car.entity.CarInfo;
import com.zhgd.xmgl.modules.car.entity.CarPassRecord;
import com.zhgd.xmgl.modules.car.mapper.CarPassRecordMapper;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
import com.zhgd.xmgl.modules.worker.entity.DepartmentInfo;
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
import com.zhgd.xmgl.modules.worker.entity.TeamInfo;
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper;
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceService;
@ -29,6 +31,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@ -47,12 +50,16 @@ public class HikvisionCall {
@Value("${upload.image.url.prefix:}")
private String imageUrlPrefix;
@Autowired
@Lazy
private ProjectMapper projectMapper;
@Autowired
@Lazy
private IWorkerAttendanceService workerAttendanceService;
@Autowired
@Lazy
private WorkerInfoMapper workerInfoMapper;
@Autowired
@Lazy
private CarPassRecordMapper carPassRecordMapper;
public void addWorkerForHikvision(WorkerInfo workerInfo) {
@ -72,7 +79,7 @@ public class HikvisionCall {
jsonBody.put("personId", workerInfo.getId());
jsonBody.put("personName", workerInfo.getWorkerName());
jsonBody.put("gender", workerInfo.getSex());
jsonBody.put("orgIndexCode", "todo");//todo
jsonBody.put("orgIndexCode", getOrgIndexCode(workerInfo));
jsonBody.put("birthday", workerInfo.getBirthday());
jsonBody.put("phoneNo", workerInfo.getPhoneNumber());
jsonBody.put("email", workerInfo.getPersonMail());
@ -88,6 +95,20 @@ public class HikvisionCall {
return body;
}
private String getOrgIndexCode(WorkerInfo workerInfo) {
if (workerInfo == null) {
return null;
}
if (Objects.equals(workerInfo.getPersonType(), 1)) {
return String.valueOf(workerInfo.getTeamId());
} else if (Objects.equals(workerInfo.getPersonType(), 2)) {
return String.valueOf(workerInfo.getDepartmentId());
} else if (Objects.equals(workerInfo.getPersonType(), 3)) {
return String.valueOf(workerInfo.getProjectSn());
}
return null;
}
public void editWorkerForHikvision(WorkerInfo workerInfo) {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, workerInfo.getProjectSn()));
@ -341,20 +362,20 @@ public class HikvisionCall {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/batch/add";
String host = "https://" + project.getArtemisConfigHost();
HikvisionEnterpriseInfo hikvisionEnterpriseInfo = getHikvisionEnterpriseInfo(enterpriseInfo);
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(enterpriseInfo);
JsonArray array = new JsonArray();
array.add(BeanUtil.toBean(hikvisionEnterpriseInfo, JsonObject.class));
array.add(BeanUtil.toBean(hikvisionOrganization, JsonObject.class));
String body = array.toString();
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
private HikvisionEnterpriseInfo getHikvisionEnterpriseInfo(EnterpriseInfo enterpriseInfo) {
HikvisionEnterpriseInfo hikvisionEnterpriseInfo = new HikvisionEnterpriseInfo();
hikvisionEnterpriseInfo.setClientId(null);
hikvisionEnterpriseInfo.setOrgIndexCode(String.valueOf(enterpriseInfo.getId()));
hikvisionEnterpriseInfo.setOrgName(enterpriseInfo.getEnterpriseName());
hikvisionEnterpriseInfo.setParentIndexCode(null);
return hikvisionEnterpriseInfo;
private HikvisionOrganization getHikvisionOrganization(EnterpriseInfo enterpriseInfo) {
HikvisionOrganization hikvisionOrganization = new HikvisionOrganization();
hikvisionOrganization.setClientId(null);
hikvisionOrganization.setOrgIndexCode(String.valueOf(enterpriseInfo.getId()));
hikvisionOrganization.setOrgName(enterpriseInfo.getEnterpriseName());
hikvisionOrganization.setParentIndexCode(enterpriseInfo.getProjectSn());
return hikvisionOrganization;
}
public void editEnterpriseInfoForHikvision(EnterpriseInfo enterpriseInfo) {
@ -365,8 +386,8 @@ public class HikvisionCall {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/single/update";
String host = "https://" + project.getArtemisConfigHost();
HikvisionEnterpriseInfo hikvisionEnterpriseInfo = getHikvisionEnterpriseInfo(enterpriseInfo);
HikvisionUtil.doPost(host, path, JSONArray.toJSONString(hikvisionEnterpriseInfo), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(enterpriseInfo);
HikvisionUtil.doPost(host, path, JSONArray.toJSONString(hikvisionOrganization), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
@ -383,4 +404,125 @@ public class HikvisionCall {
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
public void addTeamInfoForHikvision(TeamInfo teamInfo) {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, teamInfo.getProjectSn()));
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/batch/add";
String host = "https://" + project.getArtemisConfigHost();
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(teamInfo);
JsonArray array = new JsonArray();
array.add(BeanUtil.toBean(hikvisionOrganization, JsonObject.class));
String body = array.toString();
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
private HikvisionOrganization getHikvisionOrganization(TeamInfo teamInfo) {
HikvisionOrganization hikvisionOrganization = new HikvisionOrganization();
hikvisionOrganization.setClientId(null);
hikvisionOrganization.setOrgIndexCode(String.valueOf(teamInfo.getId()));
hikvisionOrganization.setOrgName(teamInfo.getTeamName());
hikvisionOrganization.setParentIndexCode(String.valueOf(teamInfo.getEnterpriseId()));
return hikvisionOrganization;
}
public void editTeamInfoForHikvision(TeamInfo teamInfo) {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, teamInfo.getProjectSn()));
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/single/update";
String host = "https://" + project.getArtemisConfigHost();
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(teamInfo);
HikvisionUtil.doPost(host, path, JSONArray.toJSONString(hikvisionOrganization), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
public void deleteTeamInfoForHikvision(TeamInfo teamInfo) {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, teamInfo.getProjectSn()));
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
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", Arrays.asList(teamInfo.getId()));
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
public void addDepartmentInfoForHikvision(DepartmentInfo departmentInfo) {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, departmentInfo.getProjectSn()));
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/batch/add";
String host = "https://" + project.getArtemisConfigHost();
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(departmentInfo);
JsonArray array = new JsonArray();
array.add(BeanUtil.toBean(hikvisionOrganization, JsonObject.class));
String body = array.toString();
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
private HikvisionOrganization getHikvisionOrganization(DepartmentInfo departmentInfo) {
HikvisionOrganization hikvisionOrganization = new HikvisionOrganization();
hikvisionOrganization.setClientId(null);
hikvisionOrganization.setOrgIndexCode(String.valueOf(departmentInfo.getId()));
hikvisionOrganization.setOrgName(departmentInfo.getDepartmentName());
hikvisionOrganization.setParentIndexCode(String.valueOf(departmentInfo.getEnterpriseId()));
return hikvisionOrganization;
}
public void editDepartmentInfoForHikvision(DepartmentInfo departmentInfo) {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, departmentInfo.getProjectSn()));
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/single/update";
String host = "https://" + project.getArtemisConfigHost();
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(departmentInfo);
HikvisionUtil.doPost(host, path, JSONArray.toJSONString(hikvisionOrganization), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
public void deleteDepartmentInfoForHikvision(DepartmentInfo departmentInfo) {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, departmentInfo.getProjectSn()));
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
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", Arrays.asList(departmentInfo.getId()));
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
public void editProjectForHikvision(Project project) {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/batch/add";
String host = "https://" + project.getArtemisConfigHost();
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(project);
JsonArray array = new JsonArray();
array.add(BeanUtil.toBean(hikvisionOrganization, JsonObject.class));
String body = array.toString();
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
private HikvisionOrganization getHikvisionOrganization(Project project) {
HikvisionOrganization hikvisionOrganization = new HikvisionOrganization();
hikvisionOrganization.setClientId(null);
hikvisionOrganization.setOrgIndexCode(project.getProjectSn());
hikvisionOrganization.setOrgName(project.getProjectName());
hikvisionOrganization.setParentIndexCode(null);
return hikvisionOrganization;
}
}

View File

@ -193,28 +193,8 @@ public class ProjectController {
@ApiOperation(value = "编辑项目信息", notes = "编辑项目信息", httpMethod = "POST")
@PostMapping(value = "/edit")
public Result<Project> edit(@RequestBody Project project) {
Result<Project> result = new Result<Project>();
String projectSn = project.getProjectSn();
LambdaQueryWrapper<Project> queryWrapper = null;
if (StringUtils.isNotBlank(projectSn)) {
queryWrapper = new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, projectSn);
} else if (project.getProjectId() != null) {
queryWrapper = new LambdaQueryWrapper<Project>().eq(Project::getProjectId, project.getProjectId());
} else {
throw new RuntimeException("请求参数异常");
}
Project projectEntity = projectService.getOne(queryWrapper);
if (projectEntity == null) {
result.error500(MessageUtil.get("notFindErr"));
} else {
boolean ok = projectService.update(project, queryWrapper);
redisRepository.del("projectInfoBySn:" + projectEntity.getProjectSn());
if (ok) {
result.successMsg(MessageUtil.get("editSucess"));
}
}
return result;
projectService.edit(project);
return Result.ok();
}
/**

View File

@ -83,4 +83,6 @@ public interface IProjectService extends IService<Project> {
void saveProjectExtendInfo(ProjectExtDto map);
Project getProjectExtendInfo(Map<String, Object> map);
void edit(Project project);
}

View File

@ -16,8 +16,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.redis.lock.RedisRepository;
import com.zhgd.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.entity.vo.ZwProjectDataVo;
import com.zhgd.xmgl.enums.ParamEnum;
import com.zhgd.xmgl.modules.basicdata.constant.DictionaryConstant;
import com.zhgd.xmgl.modules.basicdata.entity.*;
import com.zhgd.xmgl.modules.basicdata.mapper.BaseModuleProjectMapper;
@ -99,6 +99,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
@Autowired
private BimfaceConfigMapper bimfaceConfigMapper;
@Autowired
private AsyncHikvision asyncHikvision;
@Autowired
private SystemProvincesServiceImpl systemProvincesService;
@Autowired
private SystemAreasMapper systemAreasMapper;
@ -333,6 +335,28 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
return project;
}
@Override
public void edit(Project project) {
String projectSn = project.getProjectSn();
LambdaQueryWrapper<Project> queryWrapper = null;
if (StringUtils.isNotBlank(projectSn)) {
queryWrapper = new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, projectSn);
} else if (project.getProjectId() != null) {
queryWrapper = new LambdaQueryWrapper<Project>().eq(Project::getProjectId, project.getProjectId());
} else {
throw new RuntimeException("请求参数异常");
}
Project projectEntity = baseMapper.selectOne(queryWrapper);
if (projectEntity == null) {
throw new OpenAlertException(MessageUtil.get("notFindErr"));
}
baseMapper.update(project, queryWrapper);
redisRepository.del("projectInfoBySn:" + projectEntity.getProjectSn());
//同步海康
asyncHikvision.editProjectForHikvision(project);
}
@Override
public void saveZwProject(ZwProjectDataVo zwProjectDataVo) {
Project project = new Project();

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.async.AsyncJiLianDa;
import com.zhgd.xmgl.async.AsyncWorker;
import com.zhgd.xmgl.modules.gt.entity.GtMaterialInOutWarehouse;
@ -38,6 +39,8 @@ public class DepartmentInfoServiceImpl extends ServiceImpl<DepartmentInfoMapper,
private AsyncWorker asyncWorker;
@Autowired
private AsyncJiLianDa asyncJiLianDa;
@Autowired
private AsyncHikvision asyncHikvision;
@Override
public void removeDepartmentInfo(String id) {
@ -54,6 +57,9 @@ public class DepartmentInfoServiceImpl extends ServiceImpl<DepartmentInfoMapper,
}
departmentInfoMapper.deleteById(id);
asyncJiLianDa.removeDepartmentInfo(departmentInfo);
//同步海康
asyncHikvision.deleteDepartmentInfoForHikvision(departmentInfo);
}
@Override
@ -90,6 +96,9 @@ public class DepartmentInfoServiceImpl extends ServiceImpl<DepartmentInfoMapper,
//上传外部平台
asyncWorker.sendAddOrUpdateTeam(null, departmentInfo, 2);
asyncJiLianDa.saveDepartmentInfo(departmentInfo);
//同步海康
asyncHikvision.addDepartmentInfoForHikvision(departmentInfo);
return departmentInfo;
}
@ -107,6 +116,9 @@ public class DepartmentInfoServiceImpl extends ServiceImpl<DepartmentInfoMapper,
//上传外部平台
asyncWorker.sendAddOrUpdateTeam(null, departmentInfo, 2);
asyncJiLianDa.saveDepartmentInfo(departmentInfo);
//同步海康
asyncHikvision.editDepartmentInfoForHikvision(departmentInfo);
return departmentInfo;
}

View File

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.async.AsyncJiLianDa;
import com.zhgd.xmgl.async.AsyncWorker;
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
@ -53,6 +54,8 @@ public class TeamInfoServiceImpl extends ServiceImpl<TeamInfoMapper, TeamInfo> i
private EnterpriseInfoMapper enterpriseInfoMapper;
@Autowired
private AsyncJiLianDa asyncJiLianDa;
@Autowired
private AsyncHikvision asyncHikvision;
@Override
public void removeTeamInfo(String id) {
@ -69,6 +72,9 @@ public class TeamInfoServiceImpl extends ServiceImpl<TeamInfoMapper, TeamInfo> i
}
teamInfoMapper.deleteById(id);
asyncJiLianDa.removeTeamInfo(teamInfo);
//同步海康
asyncHikvision.deleteTeamInfoForHikvision(teamInfo);
}
@Override
@ -113,6 +119,9 @@ public class TeamInfoServiceImpl extends ServiceImpl<TeamInfoMapper, TeamInfo> i
//上传外部平台
asyncWorker.sendAddOrUpdateTeam(teamInfo, null, 1);
asyncJiLianDa.saveTeamInfo(teamInfo);
//同步海康
asyncHikvision.editTeamInfoForHikvision(teamInfo);
return teamInfo;
}
@ -142,6 +151,9 @@ public class TeamInfoServiceImpl extends ServiceImpl<TeamInfoMapper, TeamInfo> i
//上传外部平台
asyncWorker.sendAddOrUpdateTeam(teamInfo, null, 1);
asyncJiLianDa.saveTeamInfo(teamInfo);
//同步海康
asyncHikvision.addTeamInfoForHikvision(teamInfo);
return teamInfo;
}