校验数据修改

This commit is contained in:
guoshengxiong 2024-05-31 18:47:42 +08:00
parent afb7e04321
commit 1d8e375ae7
14 changed files with 627 additions and 230 deletions

View File

@ -17,6 +17,7 @@ import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
import com.zhgd.xmgl.modules.worker.mapper.EnterpriseInfoMapper;
import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl;
import com.zhgd.xmgl.modules.x.mapper.XzHikvisionCompareDataMapper;
import com.zhgd.xmgl.modules.x.service.impl.XzHikvisionCompareDataServiceImpl;
import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync;
import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionSyncMapper;
import com.zhgd.xmgl.security.util.SecurityUtils;
@ -67,6 +68,9 @@ public class AsyncHikvision {
@Lazy
@Autowired
private XzHikvisionCompareDataMapper xzHikvisionCompareDataMapper;
@Lazy
@Autowired
private XzHikvisionCompareDataServiceImpl xzHikvisionCompareDataService;
public static Date getSyncLotNowOrSetIfNull() {
Date now = ThreadLocalUtil.getNotNull().getDate("now");
@ -285,7 +289,7 @@ public class AsyncHikvision {
if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) {
noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), msg, title, type);
}
hikvisionCall.compareRetryFail();
xzHikvisionCompareDataService.compareRetryFail();
}
@Async("carInfoExecutor")

View File

@ -0,0 +1,10 @@
package com.zhgd.xmgl.async;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class AsyncXzHikvisionCompareData {
}

View File

@ -51,8 +51,8 @@ import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper;
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendancePresenceService;
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceService;
import com.zhgd.xmgl.modules.worker.service.impl.WorkerAttendanceServiceImpl;
import com.zhgd.xmgl.modules.x.entity.XzHikvisionCompareData;
import com.zhgd.xmgl.modules.x.mapper.XzHikvisionCompareDataMapper;
import com.zhgd.xmgl.modules.x.service.IXzHikvisionCompareDataService;
import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync;
import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionSyncMapper;
import com.zhgd.xmgl.modules.xz.service.impl.XzHikvisionSyncServiceImpl;
@ -173,6 +173,10 @@ public class HikvisionCall {
@Autowired
private FrontierProtectionNoNetDataServiceImpl frontierProtectionNoNetDataService;
@Lazy
@Autowired
private IXzHikvisionCompareDataService xzHikvisionCompareDataService;
/**
* 获取图片
@ -1083,9 +1087,9 @@ public class HikvisionCall {
title += "失败";
}
if (success) {
this.compareRetrySuc();
xzHikvisionCompareDataService.compareRetrySuc();
} else {
this.compareRetryFail();
xzHikvisionCompareDataService.compareRetryFail();
}
if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) {
noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), msg, title, type);
@ -2285,24 +2289,6 @@ public class HikvisionCall {
}
}
/**
* 查询车辆列表v2
*
* @param project
*/
public void getCarList(Project project) throws Exception {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v2/vehicle/advance/vehicleList";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("pageNo", 1);
jo.put("pageSize", 1000);
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
public String saveToLocal(String url) {
if (StringUtils.isBlank(url)) {
@ -2590,25 +2576,20 @@ public class HikvisionCall {
}
/**
* 数据校验重试失败
* 获取组织下人员列表v2
*
* @param project
* @return
*/
public void compareRetryFail() {
JSONObject tlJo = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY);
if (tlJo != null) {
XzHikvisionCompareData data = BeanUtil.toBean(tlJo, XzHikvisionCompareData.class);
data.setSyncResult(2);
xzHikvisionCompareDataMapper.updateById(data);
public JSONObject getWorkerListByOrg(Project project, JSONObject param) throws Exception {
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";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(HikvisionUtil.doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
/**
* 数据校验重试成功
*/
public void compareRetrySuc() {
JSONObject tlJo = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY);
if (tlJo != null) {
XzHikvisionCompareData data = BeanUtil.toBean(tlJo, XzHikvisionCompareData.class);
xzHikvisionCompareDataMapper.deleteById(data.getId());
}
}
}

View File

@ -367,7 +367,7 @@ public class AsyncConfig {
/** 线程池名前缀 */
executor.setThreadNamePrefix("carInfoExecutor-");
// 线程池对拒绝任务的处理策略
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
// 初始化
executor.initialize();
return executor;
@ -453,7 +453,7 @@ public class AsyncConfig {
public MdcThreadPoolTaskExecutor saveEventCallbackAiAsync() {
MdcThreadPoolTaskExecutor executor = new MdcThreadPoolTaskExecutor();
/** 核心线程数(默认线程数) */
executor.setCorePoolSize(maxPoolSize);
executor.setCorePoolSize(corePoolSize);
/** 最大线程数 */
executor.setMaxPoolSize(maxPoolSize);
executor.setQueueCapacity(100000);
@ -472,7 +472,7 @@ public class AsyncConfig {
public MdcThreadPoolTaskExecutor getRecordForHikvisionTask() {
MdcThreadPoolTaskExecutor executor = new MdcThreadPoolTaskExecutor();
/** 核心线程数(默认线程数) */
executor.setCorePoolSize(160);
executor.setCorePoolSize(1);
/** 最大线程数 */
executor.setMaxPoolSize(160);
executor.setQueueCapacity(100000);
@ -487,5 +487,24 @@ public class AsyncConfig {
return executor;
}
@Bean("syncXzHikvisionCompareData")
public MdcThreadPoolTaskExecutor syncXzHikvisionCompareData() {
MdcThreadPoolTaskExecutor executor = new MdcThreadPoolTaskExecutor();
/** 核心线程数(默认线程数) */
executor.setCorePoolSize(2);
/** 最大线程数 */
executor.setMaxPoolSize(2);
executor.setQueueCapacity(10);
/** 允许线程空闲时间(单位:默认为秒) */
executor.setKeepAliveSeconds(60);
/** 线程池名前缀 */
executor.setThreadNamePrefix("syncXzHikvisionCompareData-");
// 线程池对拒绝任务的处理策略
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
// 初始化
executor.initialize();
return executor;
}
}

View File

@ -22,4 +22,6 @@ public interface Cts {
* 数据校验重试是否成功
*/
String TL_XZ_HIKVISION_COMPARE_DATA_RETRY = "tl_xz_hikvision_compare_data";
String TYPE = "type";
String TEAM_ID = "teamId";
}

View File

@ -19,12 +19,16 @@ import org.apache.ibatis.annotations.Select;
/**
* @Description: 人员班组
* @author pds
* @date 2020-08-13
* @date 2020-08-13
* @version V1.0
*/
@Mapper
public interface TeamInfoMapper extends BaseMapper<TeamInfo> {
/**
* 查询企业下的班组列表
* @param map
* @return
*/
List<TeamInfo> getTeamInfoList(Map<String, Object> map);
EntityMap selectTeamInfoById(@Param("teamId") Long teamId);
@ -33,7 +37,7 @@ public interface TeamInfoMapper extends BaseMapper<TeamInfo> {
List<Map<String, Object>> selectEnterpriseTeamList(Map<String, Object> map);
EntityMap getTeamInfo(@Param("teamId")Long teamId);
EntityMap getTeamInfo(@Param("teamId") Long teamId);
List<EntityMap> selectTeamInfoBySnList(@Param("projectSn") String projectSn);

View File

@ -1,8 +1,8 @@
package com.zhgd.xmgl.modules.worker.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.worker.entity.TeamInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhgd.xmgl.modules.worker.entity.dto.ModGroupDto;
import java.util.List;
@ -11,7 +11,7 @@ import java.util.Map;
/**
* @Description: 人员班组
* @author pds
* @date 2020-08-13
* @date 2020-08-13
* @version V1.0
*/
public interface ITeamInfoService extends IService<TeamInfo> {
@ -20,8 +20,14 @@ public interface ITeamInfoService extends IService<TeamInfo> {
void bathDeleteTeamInfo(String projectSn);
Map<String,Object> getTeamInfoList(Map<String, Object> map);
Map<String, Object> getTeamInfoList(Map<String, Object> map);
/**
* 查询列表
*
* @param map
* @return
*/
List<TeamInfo> getProjectTeamList(Map<String, Object> map);
TeamInfo editTeamInfo(TeamInfo teamInfo);

View File

@ -1,49 +1,24 @@
package com.zhgd.xmgl.modules.x.controller;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiImplicitParams;
import java.util.HashMap;
import springfox.documentation.annotations.ApiIgnore;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.jeecg.common.util.oConvertUtils;
import org.apache.commons.collections.MapUtils;
import com.zhgd.xmgl.modules.x.entity.XzHikvisionCompareData;
import com.zhgd.xmgl.modules.x.service.IXzHikvisionCompareDataService;
import org.simpleframework.xml.core.Validate;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.apache.commons.collections.MapUtils;
import org.simpleframework.xml.core.Validate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import springfox.documentation.annotations.ApiIgnore;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -58,93 +33,102 @@ import com.alibaba.fastjson.JSON;
@Slf4j
@Api(tags = "星纵-海康数据校验失败记录相关Api")
public class XzHikvisionCompareDataController {
@Autowired
private IXzHikvisionCompareDataService xzHikvisionCompareDataService;
@Autowired
private IXzHikvisionCompareDataService xzHikvisionCompareDataService;
/**
* 分页列表查询
*
* @return
*/
@ApiOperation(value = "分页列表查询星纵-海康数据校验失败记录信息", notes = "分页列表查询星纵-海康数据校验失败记录信息", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"),
})
@GetMapping(value = "/page")
public Result<IPage<XzHikvisionCompareData>> queryPageList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
return Result.success(xzHikvisionCompareDataService.queryPageList(param));
}
/**
* 分页列表查询
*
* @return
*/
@ApiOperation(value = "分页列表查询星纵-海康数据校验失败记录信息", notes = "分页列表查询星纵-海康数据校验失败记录信息", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"),
})
@GetMapping(value = "/page")
public Result<IPage<XzHikvisionCompareData>> queryPageList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
return Result.success(xzHikvisionCompareDataService.queryPageList(param));
}
/**
* 列表查询
*
* @return
*/
@ApiOperation(value = "列表查询星纵-海康数据校验失败记录信息", notes = "列表查询星纵-海康数据校验失败记录信息", httpMethod = "GET")
@GetMapping(value = "/list")
public Result<List<XzHikvisionCompareData>> queryList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
return Result.success(xzHikvisionCompareDataService.queryList(param));
}
/**
* 列表查询
*
* @return
*/
@ApiOperation(value = "列表查询星纵-海康数据校验失败记录信息", notes = "列表查询星纵-海康数据校验失败记录信息", httpMethod = "GET")
@GetMapping(value = "/list")
public Result<List<XzHikvisionCompareData>> queryList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
return Result.success(xzHikvisionCompareDataService.queryList(param));
}
/**
* 添加
*
* @param xzHikvisionCompareData
* @return
*/
@ApiOperation(value = "添加星纵-海康数据校验失败记录信息", notes = "添加星纵-海康数据校验失败记录信息", httpMethod = "POST")
@PostMapping(value = "/add")
public Result<XzHikvisionCompareData> add(@RequestBody @Validate XzHikvisionCompareData xzHikvisionCompareData) {
xzHikvisionCompareDataService.add(xzHikvisionCompareData);
return Result.ok();
}
/**
* 添加
*
* @param xzHikvisionCompareData
* @return
*/
@ApiOperation(value = "添加星纵-海康数据校验失败记录信息", notes = "添加星纵-海康数据校验失败记录信息", httpMethod = "POST")
@PostMapping(value = "/add")
public Result<XzHikvisionCompareData> add(@RequestBody @Validate XzHikvisionCompareData xzHikvisionCompareData) {
xzHikvisionCompareDataService.add(xzHikvisionCompareData);
return Result.ok();
}
/**
* 编辑
*
* @param xzHikvisionCompareData
* @return
*/
@ApiOperation(value = "编辑星纵-海康数据校验失败记录信息", notes = "编辑星纵-海康数据校验失败记录信息", httpMethod = "POST")
@PostMapping(value = "/edit")
public Result<XzHikvisionCompareData> edit(@RequestBody XzHikvisionCompareData xzHikvisionCompareData) {
xzHikvisionCompareDataService.edit(xzHikvisionCompareData);
return Result.ok();
}
/**
* 编辑
*
* @param xzHikvisionCompareData
* @return
*/
@ApiOperation(value = "编辑星纵-海康数据校验失败记录信息", notes = "编辑星纵-海康数据校验失败记录信息", httpMethod = "POST")
@PostMapping(value = "/edit")
public Result<XzHikvisionCompareData> edit(@RequestBody XzHikvisionCompareData xzHikvisionCompareData) {
xzHikvisionCompareDataService.edit(xzHikvisionCompareData);
return Result.ok();
}
/**
* 通过id删除
*
* @return
*/
@ApiOperation(value = "删除星纵-海康数据校验失败记录信息", notes = "删除星纵-海康数据校验失败记录信息", httpMethod = "POST")
@ApiImplicitParam(name = "id", value = "星纵-海康数据校验失败记录ID", paramType = "body", required = true, dataType = "String", example = "{\"id\":\"1\"}")
@PostMapping(value = "/delete")
public Result<XzHikvisionCompareData> delete(@ApiIgnore @RequestBody HashMap<String, Object> map) {
xzHikvisionCompareDataService.delete(MapUtils.getString(map, "id"));
return Result.ok();
}
/**
* 通过id删除
*
* @return
*/
@ApiOperation(value = "删除星纵-海康数据校验失败记录信息", notes = "删除星纵-海康数据校验失败记录信息", httpMethod = "POST")
@ApiImplicitParam(name = "id", value = "星纵-海康数据校验失败记录ID", paramType = "body", required = true, dataType = "String", example = "{\"id\":\"1\"}")
@PostMapping(value = "/delete")
public Result<XzHikvisionCompareData> delete(@ApiIgnore @RequestBody HashMap<String, Object> map) {
xzHikvisionCompareDataService.delete(MapUtils.getString(map, "id"));
return Result.ok();
}
/**
* 通过id查询
*
* @param id
* @return
*/
@ApiOperation(value = "通过id查询星纵-海康数据校验失败记录信息", notes = "通过id查询星纵-海康数据校验失败记录信息", httpMethod = "GET")
@ApiImplicitParam(name = "id", value = "星纵-海康数据校验失败记录ID", paramType = "query", required = true, dataType = "Integer")
@GetMapping(value = "/queryById")
public Result<XzHikvisionCompareData> queryById(@RequestParam(name = "id", required = true) String id) {
return Result.success(xzHikvisionCompareDataService.queryById(id));
}
/**
* 通过id查询
*
* @param id
* @return
*/
@ApiOperation(value = "通过id查询星纵-海康数据校验失败记录信息", notes = "通过id查询星纵-海康数据校验失败记录信息", httpMethod = "GET")
@ApiImplicitParam(name = "id", value = "星纵-海康数据校验失败记录ID", paramType = "query", required = true, dataType = "Integer")
@GetMapping(value = "/queryById")
public Result<XzHikvisionCompareData> queryById(@RequestParam(name = "id", required = true) String id) {
return Result.success(xzHikvisionCompareDataService.queryById(id));
}
@ApiOperation(value = "同步或重试", notes = "同步或重试", httpMethod = "GET")
@ApiImplicitParam(name = "ids", value = "星纵-海康数据校验失败记录ID多个逗号分割", paramType = "body", required = true, dataType = "String")
@GetMapping(value = "/sync")
public Result sync(@ApiIgnore @RequestBody HashMap<String, Object> map) throws Exception {
xzHikvisionCompareDataService.sync(MapUtils.getString(map, "ids"));
return Result.ok("已在后台同步和重试中");
}
@ApiOperation(value = "同步或重试", notes = "同步或重试", httpMethod = "POST")
@ApiImplicitParam(name = "ids", value = "星纵-海康数据校验失败记录ID多个逗号分割", paramType = "body", required = true, dataType = "String")
@PostMapping(value = "/sync")
public Result sync(@ApiIgnore @RequestBody HashMap<String, Object> map) throws Exception {
xzHikvisionCompareDataService.sync(MapUtils.getString(map, "ids"));
return Result.ok("已在后台同步和重试中");
}
@ApiOperation(value = "检查校验过程是否有异常情况", notes = "检查校验过程是否有异常情况", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
@ApiImplicitParam(name = "type", value = "类型1组织2人员信息3人员照片4车辆信息", paramType = "body", required = true, dataType = "Integer"),
})
@PostMapping(value = "/checkCompareDataException")
public Result<JSONObject> checkCompareDataException(@ApiIgnore @RequestBody Map<String, Object> param) {
return Result.success(xzHikvisionCompareDataService.checkCompareDataException(param));
}
}

View File

@ -1,15 +1,11 @@
package com.zhgd.xmgl.modules.x.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import liquibase.pro.packaged.id;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -39,11 +35,11 @@ public class XzHikvisionCompareData implements Serializable {
@ApiModelProperty(value = "所属项目SN")
private java.lang.String projectSn;
/**
* 企业名称
* 组织名称
*/
@Excel(name = "企业名称", width = 15)
@ApiModelProperty(value = "企业名称")
private java.lang.String enterpriseName;
@Excel(name = "组织名称", width = 15)
@ApiModelProperty(value = "组织名称")
private java.lang.String orgName;
/**
* 是否存在isc平台
*/
@ -87,7 +83,7 @@ public class XzHikvisionCompareData implements Serializable {
@ApiModelProperty(value = "类型1组织2人员信息3人员照片4车辆信息")
private java.lang.Integer type;
/**
* 类型1企业2部门3班组
* 类型1企业2部门3班组4人员5人员图片
*/
private java.lang.Integer ourType;
/**

View File

@ -1,11 +1,15 @@
package com.zhgd.xmgl.modules.x.service;
import com.zhgd.xmgl.modules.x.entity.XzHikvisionCompareData;
import com.baomidou.mybatisplus.extension.service.IService;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.x.entity.XzHikvisionCompareData;
import com.zhgd.xmgl.task.HikvisionTask;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Description: 星纵-海康数据校验失败记录
@ -28,4 +32,31 @@ public interface IXzHikvisionCompareDataService extends IService<XzHikvisionComp
XzHikvisionCompareData queryById(String id);
void sync(String ids) throws Exception;
void compareRetryFail();
void compareRetrySuc();
void addCompareDataForEnterprise(Project project, String orgName, int existIsc, int existMyPlatform, String uniqueId);
void addCompareDataForDepartment(Project project, String orgName, int existIsc, int existMyPlatform, String uniqueId);
void addCompareDataForTeam(Project project, String orgName, int existIsc, int existMyPlatform, String uniqueId);
void addCompareDataForWorker(Project project, String workerName, int existIsc, int existMyPlatform, String uniqueId, String idCard);
void addCompareDataForFace(Project project, String workerName, int existIsc, int existMyPlatform, String uniqueId, String idCard);
void addCompareDataForCar(Project project, String carNumber, int existIsc, int existMyPlatform, String uniqueId);
void addExceptionShowIfNull(String projectSn);
/**
* @param projectSn
* @param type key:1组织2人员信息3人员照片4车辆信息
*/
void addSuccessShow(String projectSn, String type);
JSONObject checkCompareDataException(Map<String, Object> param);
}

View File

@ -3,6 +3,7 @@ package com.zhgd.xmgl.modules.x.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -11,9 +12,11 @@ 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.system.query.QueryGenerator;
import com.zhgd.redis.lock.RedisRepository;
import com.zhgd.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.call.HikvisionCall;
import com.zhgd.xmgl.constant.Cts;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.entity.vo.ProjectInfoExtVo;
import com.zhgd.xmgl.modules.project.service.impl.ProjectServiceImpl;
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
@ -23,14 +26,17 @@ import com.zhgd.xmgl.modules.x.mapper.XzHikvisionCompareDataMapper;
import com.zhgd.xmgl.modules.x.service.IXzHikvisionCompareDataService;
import com.zhgd.xmgl.util.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Description: 星纵-海康数据校验失败记录
@ -55,6 +61,9 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
@Lazy
@Autowired
private ProjectServiceImpl projectService;
@Lazy
@Autowired
private RedisRepository redisRepository;
@Override
public IPage<XzHikvisionCompareData> queryPageList(HashMap<String, Object> param) {
@ -120,6 +129,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
List<String> idList = StrUtil.split(ids, ",");
for (String id : idList) {
XzHikvisionCompareData data = baseMapper.selectById(id);
Assert.notNull(data, "数据不存在");
ThreadLocalUtil.addInKeyIfNotExist(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, data);
ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(new MapBuilder<String, Object>().put(Cts.PROJECT_SN, data.getProjectSn()).build());
EnterpriseInfo enterpriseInfo = BeanUtil.toBean(enterpriseInfoService.getEnterpriseInfoById(new MapBuilder<String, Object>()
@ -130,7 +140,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
//同步海康
asyncHikvision.editEnterpriseInfoForHikvision(enterpriseInfo);
} else {
asyncHikvision.deleteEnterpriseInfoForHikvision(data.getUniqueId(), data.getProjectSn(), enterpriseInfo.getEnterpriseName());
asyncHikvision.deleteEnterpriseInfoForHikvision(data.getUniqueId(), data.getProjectSn(), data.getOrgName());
}
} else if (data.getExistIsc() == 0 && data.getExistMyPlatform() == 1) {
//查询id是否存在isc存在就更新不存在就新增
@ -147,9 +157,137 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
asyncHikvision.editEnterpriseInfoForHikvision(enterpriseInfo);
}
} else {
log.error("同步海康失败,失败原因:{}", rtJo.toJSONString());
log.error("校验数据同步海康失败,失败原因:{}", rtJo.toJSONString());
}
}
}
}
/**
* 数据校验重试失败
*/
@Override
public void compareRetryFail() {
JSONObject tlJo = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY);
if (tlJo != null) {
XzHikvisionCompareData data = BeanUtil.toBean(tlJo, XzHikvisionCompareData.class);
data.setSyncResult(2);
xzHikvisionCompareDataMapper.updateById(data);
}
}
/**
* 数据校验重试成功
*/
@Override
public void compareRetrySuc() {
JSONObject tlJo = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY);
if (tlJo != null) {
XzHikvisionCompareData data = BeanUtil.toBean(tlJo, XzHikvisionCompareData.class);
xzHikvisionCompareDataMapper.deleteById(data.getId());
}
}
@Override
public void addCompareDataForEnterprise(Project project, String orgName, int existIsc, int existMyPlatform, String uniqueId) {
XzHikvisionCompareData data = new XzHikvisionCompareData();
data.setProjectSn(project.getProjectSn());
data.setOrgName(orgName);
data.setExistIsc(existIsc);
data.setExistMyPlatform(existMyPlatform);
data.setType(1);
data.setOurType(1);
data.setUniqueId(uniqueId);
baseMapper.insert(data);
}
@Override
public void addCompareDataForDepartment(Project project, String orgName, int existIsc, int existMyPlatform, String uniqueId) {
XzHikvisionCompareData data = new XzHikvisionCompareData();
data.setProjectSn(project.getProjectSn());
data.setOrgName(orgName);
data.setExistIsc(existIsc);
data.setExistMyPlatform(existMyPlatform);
data.setType(1);
data.setOurType(2);
data.setUniqueId(uniqueId);
baseMapper.insert(data);
}
@Override
public void addCompareDataForTeam(Project project, String orgName, int existIsc, int existMyPlatform, String uniqueId) {
XzHikvisionCompareData data = new XzHikvisionCompareData();
data.setProjectSn(project.getProjectSn());
data.setOrgName(orgName);
data.setExistIsc(existIsc);
data.setExistMyPlatform(existMyPlatform);
data.setType(1);
data.setOurType(3);
data.setUniqueId(uniqueId);
baseMapper.insert(data);
}
@Override
public void addCompareDataForWorker(Project project, String workerName, int existIsc, int existMyPlatform, String uniqueId, String idCard) {
XzHikvisionCompareData data = new XzHikvisionCompareData();
data.setProjectSn(project.getProjectSn());
data.setWorkerName(workerName);
data.setIdCard(idCard);
data.setExistIsc(existIsc);
data.setExistMyPlatform(existMyPlatform);
data.setType(2);
data.setOurType(4);
data.setUniqueId(uniqueId);
baseMapper.insert(data);
}
@Override
public void addCompareDataForFace(Project project, String workerName, int existIsc, int existMyPlatform, String uniqueId, String idCard) {
XzHikvisionCompareData data = new XzHikvisionCompareData();
data.setProjectSn(project.getProjectSn());
data.setWorkerName(workerName);
data.setIdCard(idCard);
data.setExistIsc(existIsc);
data.setExistMyPlatform(existMyPlatform);
data.setType(3);
data.setOurType(5);
data.setUniqueId(uniqueId);
baseMapper.insert(data);
}
@Override
public void addCompareDataForCar(Project project, String carNumber, int existIsc, int existMyPlatform, String uniqueId) {
XzHikvisionCompareData data = new XzHikvisionCompareData();
data.setProjectSn(project.getProjectSn());
data.setCarNumber(carNumber);
data.setExistIsc(existIsc);
data.setExistMyPlatform(existMyPlatform);
data.setType(1);
data.setOurType(1);
data.setUniqueId(uniqueId);
baseMapper.insert(data);
}
@Override
public void addExceptionShowIfNull(String projectSn) {
Map<String, Object> map = redisRepository.getHashValue(Cts.REDIS_HIKVISION_COMPARE_DATA + projectSn);
System.out.println();
//redisRepository.putHashValue(Cts.REDIS_HIKVISION_COMPARE_DATA + project.getProjectSn(), "1", JSON.toJSONString(new MapBuilder<String, Object>().put(Cts.SUCCESS, false).put(Cts.MSG, rtJo).build()));
}
@Override
public void addSuccessShow(String projectSn, String type) {
redisRepository.putHashValue(Cts.REDIS_HIKVISION_COMPARE_DATA + projectSn, type, JSON.toJSONString(new MapBuilder<String, Object>().put(Cts.SUCCESS, true).put(Cts.MSG, "").build()));
}
@Override
public JSONObject checkCompareDataException(Map<String, Object> param) {
String projectSn = MapUtils.getString(param, Cts.PROJECT_SN);
Integer type = MapUtils.getInteger(param, Cts.TYPE);
Object hashValues = redisRepository.getHashValues(Cts.REDIS_HIKVISION_COMPARE_DATA + projectSn, String.valueOf(type));
if (hashValues == null) {
return new JoBuilder().put(Cts.SUCCESS, true).put(Cts.MSG, "未执行校验数据").build();
}
return (JSONObject) hashValues;
}
}

View File

@ -2,19 +2,30 @@ package com.zhgd.xmgl.task;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.gexin.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhgd.redis.lock.RedisRepository;
import com.zhgd.xmgl.call.HikvisionCall;
import com.zhgd.xmgl.constant.Cts;
import com.zhgd.xmgl.modules.car.entity.CarInfo;
import com.zhgd.xmgl.modules.car.service.impl.CarInfoServiceImpl;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.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.DepartmentInfoMapper;
import com.zhgd.xmgl.modules.worker.service.ITeamInfoService;
import com.zhgd.xmgl.modules.worker.service.impl.DepartmentInfoServiceImpl;
import com.zhgd.xmgl.modules.worker.service.impl.EnterpriseInfoServiceImpl;
import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl;
import com.zhgd.xmgl.modules.x.entity.XzHikvisionCompareData;
import com.zhgd.xmgl.modules.x.mapper.XzHikvisionCompareDataMapper;
import com.zhgd.xmgl.modules.x.service.IXzHikvisionCompareDataService;
import com.zhgd.xmgl.util.HikvisionUtil;
import com.zhgd.xmgl.util.MapBuilder;
import lombok.extern.slf4j.Slf4j;
@ -27,7 +38,8 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -45,12 +57,31 @@ public class HikvisionTask {
@Lazy
@Autowired
private EnterpriseInfoServiceImpl enterpriseInfoService;
@Lazy
@Autowired
private CarInfoServiceImpl carInfoService;
@Lazy
@Autowired
private DepartmentInfoServiceImpl departmentInfoService;
@Lazy
@Autowired
private ITeamInfoService teamInfoService;
@Lazy
@Autowired
private WorkerInfoServiceImpl workerInfoService;
@Lazy
@Autowired
private XzHikvisionCompareDataMapper xzHikvisionCompareDataMapper;
@Lazy
@Autowired
private RedisRepository redisRepository;
@Lazy
@Autowired
private IXzHikvisionCompareDataService xzHikvisionCompareDataService;
@Lazy
@Autowired
private DepartmentInfoMapper departmentInfoMapper;
/**
* 数据校验同步
@ -61,70 +92,180 @@ public class HikvisionTask {
public void dataCompare() throws Exception {
List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>().eq(Project::getSyncHikvision, 1));
for (Project project : projects) {
compareHikvision(project);
try {
xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper<XzHikvisionCompareData>()
.eq(XzHikvisionCompareData::getProjectSn, project.getProjectSn()));
compareHikvisionForEnterpriseEtc(project);
compareHikvisionForCar(project);
} catch (Exception e) {
log.error("数据校验同步失败projectSn:{} ", project.getProjectSn(), e);
xzHikvisionCompareDataService.addExceptionShowIfNull(project.getProjectSn());
}
}
}
private void compareHikvision(Project project) throws Exception {
private void compareHikvisionForEnterpriseEtc(Project project) throws Exception {
//对比企业
JSONObject param = new JSONObject();
HikvisionUtil.addPageParamIfAbsent(param);
param.put("parentOrgIndexCode", project.getProjectSn());
JSONObject rtJo = hikvisionCall.getSubOrgListByParentOrg(project, param);
List<EnterpriseInfo> enterpriseInfos = BeanUtil.copyToList(enterpriseInfoService.getEnterpriseInfoList(new MapBuilder<String, Object>().put(Cts.PROJECT_SN, project.getProjectSn()).build()), EnterpriseInfo.class);
if (HikvisionUtil.isSuccess(rtJo)) {
JSONObject dataJo = HikvisionUtil.getJSONObjectData(rtJo);
JSONArray listJa = dataJo.getJSONArray("list");
if (CollUtil.isEmpty(listJa)) {
for (EnterpriseInfo enterpriseInfo : enterpriseInfos) {
XzHikvisionCompareData data = new XzHikvisionCompareData();
data.setProjectSn(project.getProjectSn());
data.setEnterpriseName(enterpriseInfo.getEnterpriseName());
data.setExistIsc(0);
data.setExistMyPlatform(1);
data.setType(1);
data.setOurType(1);
xzHikvisionCompareDataMapper.insert(data);
}
} else {
HashSet<String> nameSet = new HashSet<>();
enterpriseInfos.forEach(enterpriseInfo -> nameSet.add(enterpriseInfo.getEnterpriseName()));
listJa.forEach(o -> nameSet.add(((JSONObject) o).getString("orgName")));
Set<String> iscSet = listJa.stream().map(o -> ((JSONObject) o).getString("orgName")).collect(Collectors.toSet());
Set<String> mySet = enterpriseInfos.stream().map(EnterpriseInfo::getEnterpriseName).collect(Collectors.toSet());
nameSet.forEach(s -> {
if (mySet.contains(s) || !iscSet.contains(s)) {
XzHikvisionCompareData data = new XzHikvisionCompareData();
data.setProjectSn(project.getProjectSn());
data.setEnterpriseName(s);
data.setExistIsc(0);
data.setExistMyPlatform(1);
data.setType(1);
data.setOurType(1);
xzHikvisionCompareDataMapper.insert(data);
} else if (!mySet.contains(s) || iscSet.contains(s)) {
XzHikvisionCompareData data = new XzHikvisionCompareData();
data.setProjectSn(project.getProjectSn());
data.setEnterpriseName(s);
data.setExistIsc(1);
data.setExistMyPlatform(0);
data.setType(1);
data.setOurType(1);
xzHikvisionCompareDataMapper.insert(data);
}
});
JSONObject dataJo = HikvisionUtil.getJSONObjectData(rtJo);
JSONArray listJa = dataJo.getJSONArray("list");
if (CollUtil.isEmpty(listJa)) {
for (EnterpriseInfo enterpriseInfo : enterpriseInfos) {
xzHikvisionCompareDataService.addCompareDataForEnterprise(project, enterpriseInfo.getEnterpriseName(), 0, 1, String.valueOf(enterpriseInfo.getId()));
compareHikvisionForDepartmentAndTeamEtc(project, String.valueOf(enterpriseInfo.getId()));
}
} else {
log.error("数据校验同步失败调用海康ISC获取企业列表失败projectSn:{} ,err:{}", project.getProjectSn(), JSON.toJSONString(rtJo));
//key:1组织2人员信息3人员照片4车辆信息
addException(project, rtJo);
//isc存在平台也存在
HashSet<String> nameSet = new HashSet<>();
enterpriseInfos.forEach(enterpriseInfo -> nameSet.add(enterpriseInfo.getEnterpriseName()));
listJa.forEach(o -> nameSet.add(((JSONObject) o).getString("orgName")));
Map<String, JSONObject> iscMap = listJa.stream().collect(Collectors.toMap(o -> ((JSONObject) o).getString("orgName"), o -> (JSONObject) o, (o, o2) -> o2));
Map<String, EnterpriseInfo> myMap = enterpriseInfos.stream().collect(Collectors.toMap(EnterpriseInfo::getEnterpriseName, Function.identity(), (o, o2) -> o2));
for (String name : nameSet) {
String orgIndex = null;
if (myMap.containsKey(name) && !iscMap.containsKey(name)) {
orgIndex = String.valueOf(myMap.get(name).getId());
xzHikvisionCompareDataService.addCompareDataForEnterprise(project, name, 0, 1, orgIndex);
} else if (!myMap.containsKey(name) && iscMap.containsKey(name)) {
orgIndex = iscMap.get(name).getString("orgIndexCode");
xzHikvisionCompareDataService.addCompareDataForEnterprise(project, name, 1, 0, orgIndex);
} else {
orgIndex = String.valueOf(myMap.get(name).getId());
}
compareHikvisionForDepartmentAndTeamEtc(project, orgIndex);
}
}
xzHikvisionCompareDataService.addSuccessShow(project.getProjectSn(), "1");
}
private void compareHikvisionForDepartmentAndTeamEtc(Project project, String orgIndex) throws Exception {
JSONObject param = new JSONObject();
HikvisionUtil.addPageParamIfAbsent(param);
param.put("parentOrgIndexCode", orgIndex);
JSONObject rtJo = hikvisionCall.getSubOrgListByParentOrg(project, param);
List<TeamInfo> teamList = teamInfoService.getProjectTeamList(new MapBuilder<String, Object>()
.put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.ENTERPRISE_ID, orgIndex).build());
List<DepartmentInfo> departmentInfoList = departmentInfoMapper.getDepartmentInfoList(new MapBuilder<String, Object>()
.put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.ENTERPRISE_ID, orgIndex).build());
JSONObject dataJo = HikvisionUtil.getJSONObjectData(rtJo);
JSONArray listJa = dataJo.getJSONArray("list");
if (CollUtil.isEmpty(listJa)) {
for (TeamInfo teamInfo : teamList) {
xzHikvisionCompareDataService.addCompareDataForTeam(project, teamInfo.getTeamName(), 0, 1, String.valueOf(teamInfo.getId()));
}
for (DepartmentInfo departmentInfo : departmentInfoList) {
xzHikvisionCompareDataService.addCompareDataForDepartment(project, departmentInfo.getDepartmentName(), 0, 1, String.valueOf(departmentInfo.getId()));
}
} else {
//isc存在平台也存在
HashSet<String> nameSet = new HashSet<>();
teamList.forEach(teamInfo -> nameSet.add(teamInfo.getTeamName()));
departmentInfoList.forEach(departmentInfo -> nameSet.add(departmentInfo.getDepartmentName()));
listJa.forEach(o -> nameSet.add(((JSONObject) o).getString("orgName")));
Map<String, JSONObject> iscMap = listJa.stream().collect(Collectors.toMap(o -> ((JSONObject) o).getString("orgName"), o -> (JSONObject) o, (o, o2) -> o2));
Map<String, TeamInfo> myTeamMap = teamList.stream().collect(Collectors.toMap(TeamInfo::getTeamName, Function.identity(), (o, o2) -> o2));
Map<String, DepartmentInfo> myDepartmentMap = departmentInfoList.stream().collect(Collectors.toMap(DepartmentInfo::getDepartmentName, Function.identity(), (o, o2) -> o2));
for (String name : nameSet) {
String index;
if (myTeamMap.containsKey(name) && !iscMap.containsKey(name)) {
index = String.valueOf(myTeamMap.get(name).getId());
xzHikvisionCompareDataService.addCompareDataForTeam(project, name, 0, 1, index);
} else if (myDepartmentMap.containsKey(name) && !iscMap.containsKey(name)) {
index = String.valueOf(myDepartmentMap.get(name).getId());
xzHikvisionCompareDataService.addCompareDataForDepartment(project, name, 0, 1, index);
} else if ((!myTeamMap.containsKey(name) && !myDepartmentMap.containsKey(name)) && iscMap.containsKey(name)) {
index = iscMap.get(name).getString("orgIndexCode");
xzHikvisionCompareDataService.addCompareDataForTeam(project, name, 1, 0, index);
} else {
//班组存在和isc存在
index = String.valueOf(myTeamMap.get(name).getId());
}
compareHikvisionForWorker(project, index);
}
}
xzHikvisionCompareDataService.addSuccessShow(project.getProjectSn(), "1");
}
private void addException(Project project, JSONObject rtJo) {
redisRepository.putHashValue(Cts.REDIS_HIKVISION_COMPARE_DATA + project.getProjectSn(), "1", JSONArray.toJSONString(new MapBuilder<String, Object>().put(Cts.SUCCESS, false).put(Cts.MSG, rtJo).build()));
private void compareHikvisionForWorker(Project project, String orgIndex) throws Exception {
JSONObject param = new JSONObject();
HikvisionUtil.addPageParamIfAbsent(param);
param.put("orgIndexCode", orgIndex);
JSONObject rtJo = hikvisionCall.getWorkerListByOrg(project, param);
IPage<WorkerInfo> workerPage = workerInfoService.selectWorkerInfoList(new MapBuilder<String, Object>().put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.TEAM_ID, orgIndex).build());
List<WorkerInfo> workerInfoList = workerPage.getRecords();
JSONObject dataJo = HikvisionUtil.getJSONObjectData(rtJo);
JSONArray listJa = dataJo.getJSONArray("list");
if (CollUtil.isEmpty(listJa)) {
for (WorkerInfo workerInfo : workerInfoList) {
xzHikvisionCompareDataService.addCompareDataForWorker(project, workerInfo.getWorkerName(), 0, 1, String.valueOf(workerInfo.getId()), workerInfo.getIdCard());
xzHikvisionCompareDataService.addCompareDataForFace(project, workerInfo.getWorkerName(), 0, 1, String.valueOf(workerInfo.getId()), workerInfo.getIdCard());
}
} else {
//isc存在平台也存在
HashSet<String> idCardSet = new HashSet<>();
workerInfoList.forEach(workerInfo -> idCardSet.add(workerInfo.getIdCard()));
listJa.forEach(o -> idCardSet.add(((JSONObject) o).getString("certificateNo")));
Map<String, JSONObject> iscMap = listJa.stream().collect(Collectors.toMap(o -> ((JSONObject) o).getString("certificateNo"), o -> (JSONObject) o, (o, o2) -> o2));
Map<String, WorkerInfo> myMap = workerInfoList.stream().collect(Collectors.toMap(WorkerInfo::getIdCard, Function.identity(), (o, o2) -> o2));
for (String idCard : idCardSet) {
if (myMap.containsKey(idCard) && !iscMap.containsKey(idCard)) {
xzHikvisionCompareDataService.addCompareDataForWorker(project, myMap.get(idCard).getWorkerName(), 0, 1, String.valueOf(myMap.get(idCard).getId()), idCard);
xzHikvisionCompareDataService.addCompareDataForFace(project, myMap.get(idCard).getWorkerName(), 0, 1, String.valueOf(myMap.get(idCard).getId()), idCard);
} else if (!myMap.containsKey(idCard) && iscMap.containsKey(idCard)) {
xzHikvisionCompareDataService.addCompareDataForWorker(project, iscMap.get(idCard).getString("personName"), 1, 0, iscMap.get(idCard).getString("personId"), idCard);
xzHikvisionCompareDataService.addCompareDataForFace(project, iscMap.get(idCard).getString("personName"), 1, 0, iscMap.get(idCard).getString("personId"), idCard);
} else {
//isc存在平台也存在该人员
boolean myHave = StrUtil.isNotBlank(myMap.get(idCard).getFieldAcquisitionUrl());
boolean iscHave = CollUtil.isNotEmpty(iscMap.get(idCard).getJSONArray("personPhoto"));
if (myHave && !iscHave) {
xzHikvisionCompareDataService.addCompareDataForFace(project, iscMap.get(idCard).getString("personName"), 0, 1, String.valueOf(myMap.get(idCard).getId()), idCard);
} else if (!myHave && iscHave) {
xzHikvisionCompareDataService.addCompareDataForFace(project, iscMap.get(idCard).getString("personName"), 1, 0, String.valueOf(myMap.get(idCard).getId()), idCard);
}
}
}
}
xzHikvisionCompareDataService.addSuccessShow(project.getProjectSn(), "2");
xzHikvisionCompareDataService.addSuccessShow(project.getProjectSn(), "3");
}
private void compareHikvisionForCar(Project project) throws Exception {
JSONObject param = new JSONObject();
HikvisionUtil.addPageParamIfAbsent(param);
JSONObject rtJo = HikvisionUtil.getCarList(project, param);
List<CarInfo> carInfoList = carInfoService.selectCarList(new MapBuilder<String, Object>().put(Cts.PROJECT_SN, project.getProjectSn()).build());
JSONObject dataJo = HikvisionUtil.getJSONObjectData(rtJo);
JSONArray listJa = dataJo.getJSONArray("list");
if (CollUtil.isEmpty(listJa)) {
for (CarInfo carInfo : carInfoList) {
xzHikvisionCompareDataService.addCompareDataForCar(project, carInfo.getCarNumber(), 0, 1, String.valueOf(carInfo.getId()));
}
} else {
//isc存在平台也存在
HashSet<String> carNumberSet = new HashSet<>();
carInfoList.forEach(enterpriseInfo -> carNumberSet.add(enterpriseInfo.getCarNumber()));
listJa.forEach(o -> carNumberSet.add(((JSONObject) o).getString("plateNo")));
Map<String, JSONObject> iscMap = listJa.stream().collect(Collectors.toMap(o -> ((JSONObject) o).getString("plateNo"), o -> (JSONObject) o, (o, o2) -> o2));
Map<String, CarInfo> myMap = carInfoList.stream().collect(Collectors.toMap(CarInfo::getCarNumber, Function.identity(), (o, o2) -> o2));
for (String carNumber : carNumberSet) {
String uniqueId = null;
if (myMap.containsKey(carNumber) && !iscMap.containsKey(carNumber)) {
uniqueId = String.valueOf(myMap.get(carNumber).getId());
xzHikvisionCompareDataService.addCompareDataForCar(project, carNumber, 0, 1, uniqueId);
} else if (!myMap.containsKey(carNumber) && iscMap.containsKey(carNumber)) {
uniqueId = iscMap.get(carNumber).getString("vehicleId");
xzHikvisionCompareDataService.addCompareDataForEnterprise(project, carNumber, 1, 0, uniqueId);
}
}
}
xzHikvisionCompareDataService.addSuccessShow(project.getProjectSn(), "4");
}
}

View File

@ -9,6 +9,7 @@ import com.hikvision.artemis.sdk.Response;
import com.hikvision.artemis.sdk.constant.Constants;
import com.hikvision.artemis.sdk.enums.Method;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.xmgl.modules.project.entity.Project;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@ -23,6 +24,10 @@ import java.util.Objects;
@Component
public class HikvisionUtil {
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));
}
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);
@ -80,7 +85,7 @@ public class HikvisionUtil {
return rsJo.getJSONObject("data");
} else {
log.error("海康返回错误码:{}", rsJo.toJSONString());
throw new OpenAlertException("海康调用失败");
throw new OpenAlertException("海康返回错误码");
}
}
@ -149,4 +154,20 @@ public class HikvisionUtil {
param.putIfAbsent("pageNo", 1);
param.putIfAbsent("pageSize", 1000);
}
/**
* 查询车辆列表v2
*
* @param project
* @return
*/
public static JSONObject getCarList(Project project, JSONObject param) throws Exception {
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";
String host = "https://" + project.getArtemisConfigHost();
return doPostRtObj(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
}

View File

@ -0,0 +1,60 @@
package com.zhgd.xmgl.util;
import com.alibaba.fastjson.JSONObject;
/**
* 一个简单的JSONObject构建器
*/
public class JoBuilder {
private JSONObject jsonObject;
/**
* 默认构造函数
*/
public JoBuilder() {
jsonObject = new JSONObject();
}
/**
* 有参构造函数
*
* @param jsonObject
*/
public JoBuilder(JSONObject jsonObject) {
this.jsonObject = jsonObject;
}
/**
* put方法返回MapParamBuilder构建器
*
* @param key
* @param value
* @return
*/
public JoBuilder put(String key, Object value) {
jsonObject.put(key, value);
return this;
}
/**
* 删除Key
*
* @param key
* @return
*/
public JoBuilder remove(String key) {
jsonObject.remove(key);
return this;
}
/**
* 返回构建好的map参数
*
* @return
*/
public JSONObject build() {
return jsonObject;
}
}