数据校验

This commit is contained in:
guoshengxiong 2024-05-30 19:52:54 +08:00
parent d55e543b3d
commit 1c509a9625
12 changed files with 648 additions and 3 deletions

View File

@ -2553,5 +2553,37 @@ public class HikvisionCall {
return JSON.parseObject(HikvisionUtil.doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
/**
* 根据父组织编号获取下级组织列表
*
* @param project
* @return
*/
public JSONObject getSubOrgListByParentOrg(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/v1/org/parentOrgIndexCode/subOrgList";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(HikvisionUtil.doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
/**
* 根据组织编号获取组织详细信息
*
* @param project
* @return
*/
public JSONObject getOrgListByIndex(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/v1/org/orgIndexCodes/orgInfo";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(HikvisionUtil.doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
}

View File

@ -14,4 +14,8 @@ public interface Cts {
String EXPIRED = "expired";
String ID = "id";
String TODAY = "today";
String REDIS_HIKVISION_COMPARE_DATA = "HIKVISION_COMPARE_DATA_";
String SUCCESS = "success";
String MSG = "msg";
String ENTERPRISE_ID = "enterpriseId";
}

View File

@ -30,6 +30,9 @@
<if test="map.enterpriseTypeId != null and map.enterpriseTypeId != ''">
and b.enterprise_type_id = #{map.enterpriseTypeId}
</if>
<if test="map.enterpriseId != null and map.enterpriseId != ''">
and b.enterprise_id = #{map.enterpriseId}
</if>
order by b.sort_num
</sql>
<select id="getEnterpriseInfoList" resultType="com.zhgd.jeecg.common.mybatis.EntityMap" parameterType="map">

View File

@ -17,11 +17,15 @@ import java.util.Map;
/**
* @Description: 劳务公司
* @author pds
* @date 2020-08-13
* @date 2020-08-13
* @version V1.0
*/
public interface IEnterpriseInfoService extends IService<EnterpriseInfo> {
/**
*
* @param map projectSn
* @return
*/
List<EntityMap> getEnterpriseInfoList(Map<String, Object> map);
EnterpriseInfo saveEnterpriseInfo(EnterpriseInfo enterpriseInfo);

View File

@ -0,0 +1,150 @@
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.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 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.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;
/**
* @Title: Controller
* @Description: 星纵-海康数据校验失败记录
* @author pds
* @date 2024-05-30
* @version V1.0
*/
@RestController
@RequestMapping("/xmgl/xzHikvisionCompareData")
@Slf4j
@Api(tags = "星纵-海康数据校验失败记录相关Api")
public class XzHikvisionCompareDataController {
@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")
@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 = "/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查询
*
* @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("已在后台同步和重试中");
}
}

View File

@ -0,0 +1,107 @@
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;
/**
* @Description: 星纵-海康数据校验失败记录
* @author pds
* @date 2024-05-30
* @version V1.0
*/
@Data
@TableName("xz_hikvision_compare_data")
@ApiModel(value = "XzHikvisionCompareData实体类", description = "XzHikvisionCompareData")
public class XzHikvisionCompareData implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private Long id;
/**
* 所属项目SN
*/
@Excel(name = "所属项目SN", width = 15)
@ApiModelProperty(value = "所属项目SN")
private java.lang.String projectSn;
/**
* 企业名称
*/
@Excel(name = "企业名称", width = 15)
@ApiModelProperty(value = "企业名称")
private java.lang.String enterpriseName;
/**
* 是否存在isc平台
*/
@Excel(name = "是否存在isc平台", width = 15)
@ApiModelProperty(value = "是否存在isc平台")
private java.lang.Integer existIsc;
/**
* 是否存在我们平台
*/
@Excel(name = "是否存在我们平台", width = 15)
@ApiModelProperty(value = "是否存在我们平台")
private java.lang.Integer existMyPlatform;
/**
* 同步结果1未同步2同步失败
*/
@Excel(name = "同步结果1未同步2同步失败", width = 15)
@ApiModelProperty(value = "同步结果1未同步2同步失败")
private java.lang.Integer syncResult;
/**
* 人员姓名
*/
@Excel(name = "人员姓名", width = 15)
@ApiModelProperty(value = "人员姓名")
private java.lang.String workerName;
/**
* 身份证号
*/
@Excel(name = "身份证号", width = 15)
@ApiModelProperty(value = "身份证号")
private java.lang.String idCard;
/**
* 车牌号
*/
@Excel(name = "车牌号", width = 15)
@ApiModelProperty(value = "车牌号")
private java.lang.String carNumber;
/**
* 类型1组织2人员信息3人员照片4车辆信息
*/
@Excel(name = "类型1组织2人员信息3人员照片4车辆信息", width = 15)
@ApiModelProperty(value = "类型1组织2人员信息3人员照片4车辆信息")
private java.lang.Integer type;
/**
* 类型1企业2部门3班组
*/
private java.lang.Integer ourType;
/**
* 唯一id
*/
private java.lang.String uniqueId;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private java.util.Date createDate;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private java.util.Date updateDate;
}

View File

@ -0,0 +1,19 @@
package com.zhgd.xmgl.modules.x.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.zhgd.xmgl.modules.x.entity.XzHikvisionCompareData;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 星纵-海康数据校验失败记录
* @author pds
* @date 2024-05-30
* @version V1.0
*/
@Mapper
public interface XzHikvisionCompareDataMapper extends BaseMapper<XzHikvisionCompareData> {
}

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhgd.xmgl.modules.x.mapper.XzHikvisionCompareDataMapper">
</mapper>

View File

@ -0,0 +1,31 @@
package com.zhgd.xmgl.modules.x.service;
import com.zhgd.xmgl.modules.x.entity.XzHikvisionCompareData;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.HashMap;
import java.util.List;
/**
* @Description: 星纵-海康数据校验失败记录
* @author pds
* @date 2024-05-30
* @version V1.0
*/
public interface IXzHikvisionCompareDataService extends IService<XzHikvisionCompareData> {
IPage<XzHikvisionCompareData> queryPageList(HashMap<String, Object> param);
List<XzHikvisionCompareData> queryList(HashMap<String, Object> param);
void add(XzHikvisionCompareData xzHikvisionCompareData);
void edit(XzHikvisionCompareData xzHikvisionCompareData);
void delete(String id);
XzHikvisionCompareData queryById(String id);
void sync(String ids) throws Exception;
}

View File

@ -0,0 +1,158 @@
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.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.call.HikvisionCall;
import com.zhgd.xmgl.constant.Cts;
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;
import com.zhgd.xmgl.modules.worker.service.impl.EnterpriseInfoServiceImpl;
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 com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.RefUtil;
import lombok.extern.slf4j.Slf4j;
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 java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
/**
* @Description: 星纵-海康数据校验失败记录
* @author pds
* @date 2024-05-30
* @version V1.0
*/
@Service
@Transactional(rollbackFor = Exception.class)
@Slf4j
public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCompareDataMapper, XzHikvisionCompareData> implements IXzHikvisionCompareDataService {
@Autowired
private XzHikvisionCompareDataMapper xzHikvisionCompareDataMapper;
@Autowired
private EnterpriseInfoServiceImpl enterpriseInfoService;
@Lazy
@Autowired
private AsyncHikvision asyncHikvision;
@Lazy
@Autowired
private HikvisionCall hikvisionCall;
@Lazy
@Autowired
private ProjectServiceImpl projectService;
@Override
public IPage<XzHikvisionCompareData> queryPageList(HashMap<String, Object> param) {
QueryWrapper<XzHikvisionCompareData> queryWrapper = getQueryWrapper(param);
Page<XzHikvisionCompareData> page = PageUtil.getPage(param);
IPage<XzHikvisionCompareData> pageList = this.page(page, queryWrapper);
pageList.setRecords(dealList(pageList.getRecords()));
return pageList;
}
@Override
public List<XzHikvisionCompareData> queryList(HashMap<String, Object> param) {
QueryWrapper<XzHikvisionCompareData> queryWrapper = getQueryWrapper(param);
return dealList(this.list(queryWrapper));
}
private QueryWrapper<XzHikvisionCompareData> getQueryWrapper(HashMap<String, Object> param) {
String alias = "";
QueryWrapper<XzHikvisionCompareData> queryWrapper = QueryGenerator.initPageQueryWrapper(XzHikvisionCompareData.class, param, alias);
queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(XzHikvisionCompareData::getId));
return queryWrapper;
}
private List<XzHikvisionCompareData> dealList(List<XzHikvisionCompareData> list) {
return list;
}
@Override
public void add(XzHikvisionCompareData xzHikvisionCompareData) {
xzHikvisionCompareData.setId(null);
baseMapper.insert(xzHikvisionCompareData);
}
@Override
public void edit(XzHikvisionCompareData xzHikvisionCompareData) {
XzHikvisionCompareData oldXzHikvisionCompareData = baseMapper.selectById(xzHikvisionCompareData.getId());
if (oldXzHikvisionCompareData == null) {
throw new OpenAlertException("未找到对应实体");
}
baseMapper.updateById(xzHikvisionCompareData);
}
@Override
public void delete(String id) {
XzHikvisionCompareData xzHikvisionCompareData = baseMapper.selectById(id);
if (xzHikvisionCompareData == null) {
throw new OpenAlertException("未找到对应实体");
}
baseMapper.deleteById(id);
}
@Override
public XzHikvisionCompareData queryById(String id) {
XzHikvisionCompareData entity = getById(id);
if (entity == null) {
throw new OpenAlertException("未找到对应实体");
}
return entity;
}
@Override
public void sync(String ids) throws Exception {
List<String> idList = StrUtil.split(ids, ",");
for (String id : idList) {
XzHikvisionCompareData data = baseMapper.selectById(id);
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>()
.put(Cts.PROJECT_SN, data.getProjectSn()).put(Cts.ENTERPRISE_ID, data.getUniqueId()).build()), EnterpriseInfo.class);
if (data.getExistIsc() == 1 && data.getExistMyPlatform() == 0) {
//查询id是否存在平台存在就更新不存在就删除
if (enterpriseInfo != null) {
//同步海康
asyncHikvision.editEnterpriseInfoForHikvision(enterpriseInfo);
} else {
asyncHikvision.deleteEnterpriseInfoForHikvision(data.getUniqueId(), data.getProjectSn());
}
} else if (data.getExistIsc() == 0 && data.getExistMyPlatform() == 1) {
//查询id是否存在isc存在就更新不存在就新增
JSONObject param = new JSONObject();
param.put("orgIndexCodes", Collections.singletonList(data.getUniqueId()));
JSONObject rtJo = hikvisionCall.getOrgListByIndex(projectInfoBySn, param);
if (HikvisionUtil.isSuccess(rtJo)) {
JSONArray list = HikvisionUtil.getJSONObjectData(rtJo).getJSONArray("list");
if (CollUtil.isEmpty(list)) {
//新增
asyncHikvision.addEnterpriseInfoForHikvision(enterpriseInfo);
} else {
//更新
asyncHikvision.editEnterpriseInfoForHikvision(enterpriseInfo);
}
} else {
log.error("同步海康失败,失败原因:{}", rtJo.toJSONString());
}
}
}
}
}

View File

@ -0,0 +1,130 @@
package com.zhgd.xmgl.task;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
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.zhgd.redis.lock.RedisRepository;
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.mapper.ProjectMapper;
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
import com.zhgd.xmgl.modules.worker.service.impl.EnterpriseInfoServiceImpl;
import com.zhgd.xmgl.modules.x.entity.XzHikvisionCompareData;
import com.zhgd.xmgl.modules.x.mapper.XzHikvisionCompareDataMapper;
import com.zhgd.xmgl.util.HikvisionUtil;
import com.zhgd.xmgl.util.MapBuilder;
import lombok.extern.slf4j.Slf4j;
import net.javacrumbs.shedlock.core.SchedulerLock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Slf4j
@RestController
@RequestMapping("xmgl/task")
public class HikvisionTask {
@Lazy
@Autowired
private HikvisionCall hikvisionCall;
@Lazy
@Autowired
private ProjectMapper projectMapper;
@Lazy
@Autowired
private EnterpriseInfoServiceImpl enterpriseInfoService;
@Lazy
@Autowired
private XzHikvisionCompareDataMapper xzHikvisionCompareDataMapper;
@Lazy
@Autowired
private RedisRepository redisRepository;
/**
* 数据校验同步
*/
@SchedulerLock(name = "dataCompare", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5)
@Scheduled(cron = "0 0 3 * * ?")
@RequestMapping("dataCompare")
public void dataCompare() throws Exception {
List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>().eq(Project::getSyncHikvision, 1));
for (Project project : projects) {
compareHikvision(project);
}
}
private void compareHikvision(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);
}
});
}
} else {
log.error("数据校验同步失败调用海康ISC获取企业列表失败projectSn:{} ,err:{}", project.getProjectSn(), JSON.toJSONString(rtJo));
//key:1组织2人员信息3人员照片4车辆信息
addException(project, rtJo);
}
}
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()));
}
}

View File

@ -9,7 +9,6 @@ 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 liquibase.pro.packaged.O;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@ -146,4 +145,8 @@ public class HikvisionUtil {
}
public static void addPageParamIfAbsent(JSONObject param) {
param.putIfAbsent("pageNo", 1);
param.putIfAbsent("pageSize", 1000);
}
}