diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java index 10ddbdfbb..9216c388d 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java @@ -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") diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncXzHikvisionCompareData.java b/src/main/java/com/zhgd/xmgl/async/AsyncXzHikvisionCompareData.java new file mode 100644 index 000000000..1049e3328 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/async/AsyncXzHikvisionCompareData.java @@ -0,0 +1,10 @@ +package com.zhgd.xmgl.async; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class AsyncXzHikvisionCompareData { + +} diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 1bc5cef35..5eb7e93de 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -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()); - } - } + } diff --git a/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java b/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java index 2c407409d..2bfe540ce 100644 --- a/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java +++ b/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java @@ -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; + } + } diff --git a/src/main/java/com/zhgd/xmgl/constant/Cts.java b/src/main/java/com/zhgd/xmgl/constant/Cts.java index 7a997075d..2b09bd56c 100644 --- a/src/main/java/com/zhgd/xmgl/constant/Cts.java +++ b/src/main/java/com/zhgd/xmgl/constant/Cts.java @@ -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"; } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/TeamInfoMapper.java b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/TeamInfoMapper.java index 4538c305e..3c6d3d4fc 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/TeamInfoMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/TeamInfoMapper.java @@ -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 { - + /** + * 查询企业下的班组列表 + * @param map + * @return + */ List getTeamInfoList(Map map); EntityMap selectTeamInfoById(@Param("teamId") Long teamId); @@ -33,7 +37,7 @@ public interface TeamInfoMapper extends BaseMapper { List> selectEnterpriseTeamList(Map map); - EntityMap getTeamInfo(@Param("teamId")Long teamId); + EntityMap getTeamInfo(@Param("teamId") Long teamId); List selectTeamInfoBySnList(@Param("projectSn") String projectSn); diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/ITeamInfoService.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/ITeamInfoService.java index d7dc19716..a3ef16d9a 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/ITeamInfoService.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/ITeamInfoService.java @@ -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 { @@ -20,8 +20,14 @@ public interface ITeamInfoService extends IService { void bathDeleteTeamInfo(String projectSn); - Map getTeamInfoList(Map map); + Map getTeamInfoList(Map map); + /** + * 查询列表 + * + * @param map + * @return + */ List getProjectTeamList(Map map); TeamInfo editTeamInfo(TeamInfo teamInfo); diff --git a/src/main/java/com/zhgd/xmgl/modules/x/controller/XzHikvisionCompareDataController.java b/src/main/java/com/zhgd/xmgl/modules/x/controller/XzHikvisionCompareDataController.java index 8e02e5eaf..02a63ddae 100644 --- a/src/main/java/com/zhgd/xmgl/modules/x/controller/XzHikvisionCompareDataController.java +++ b/src/main/java/com/zhgd/xmgl/modules/x/controller/XzHikvisionCompareDataController.java @@ -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> queryPageList(@ApiIgnore @RequestParam HashMap 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> queryPageList(@ApiIgnore @RequestParam HashMap param) { + return Result.success(xzHikvisionCompareDataService.queryPageList(param)); + } - /** - * 列表查询 - * - * @return - */ - @ApiOperation(value = "列表查询星纵-海康数据校验失败记录信息", notes = "列表查询星纵-海康数据校验失败记录信息", httpMethod = "GET") - @GetMapping(value = "/list") - public Result> queryList(@ApiIgnore @RequestParam HashMap param) { - return Result.success(xzHikvisionCompareDataService.queryList(param)); - } + /** + * 列表查询 + * + * @return + */ + @ApiOperation(value = "列表查询星纵-海康数据校验失败记录信息", notes = "列表查询星纵-海康数据校验失败记录信息", httpMethod = "GET") + @GetMapping(value = "/list") + public Result> queryList(@ApiIgnore @RequestParam HashMap param) { + return Result.success(xzHikvisionCompareDataService.queryList(param)); + } - /** - * 添加 - * - * @param xzHikvisionCompareData - * @return - */ - @ApiOperation(value = "添加星纵-海康数据校验失败记录信息", notes = "添加星纵-海康数据校验失败记录信息", httpMethod = "POST") - @PostMapping(value = "/add") - public Result add(@RequestBody @Validate XzHikvisionCompareData xzHikvisionCompareData) { - xzHikvisionCompareDataService.add(xzHikvisionCompareData); - return Result.ok(); - } + /** + * 添加 + * + * @param xzHikvisionCompareData + * @return + */ + @ApiOperation(value = "添加星纵-海康数据校验失败记录信息", notes = "添加星纵-海康数据校验失败记录信息", httpMethod = "POST") + @PostMapping(value = "/add") + public Result add(@RequestBody @Validate XzHikvisionCompareData xzHikvisionCompareData) { + xzHikvisionCompareDataService.add(xzHikvisionCompareData); + return Result.ok(); + } - /** - * 编辑 - * - * @param xzHikvisionCompareData - * @return - */ - @ApiOperation(value = "编辑星纵-海康数据校验失败记录信息", notes = "编辑星纵-海康数据校验失败记录信息", httpMethod = "POST") - @PostMapping(value = "/edit") - public Result edit(@RequestBody XzHikvisionCompareData xzHikvisionCompareData) { - xzHikvisionCompareDataService.edit(xzHikvisionCompareData); - return Result.ok(); - } + /** + * 编辑 + * + * @param xzHikvisionCompareData + * @return + */ + @ApiOperation(value = "编辑星纵-海康数据校验失败记录信息", notes = "编辑星纵-海康数据校验失败记录信息", httpMethod = "POST") + @PostMapping(value = "/edit") + public Result 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 delete(@ApiIgnore @RequestBody HashMap 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 delete(@ApiIgnore @RequestBody HashMap 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 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 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 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 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 checkCompareDataException(@ApiIgnore @RequestBody Map param) { + return Result.success(xzHikvisionCompareDataService.checkCompareDataException(param)); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/x/entity/XzHikvisionCompareData.java b/src/main/java/com/zhgd/xmgl/modules/x/entity/XzHikvisionCompareData.java index e706464de..4528dad74 100644 --- a/src/main/java/com/zhgd/xmgl/modules/x/entity/XzHikvisionCompareData.java +++ b/src/main/java/com/zhgd/xmgl/modules/x/entity/XzHikvisionCompareData.java @@ -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; /** diff --git a/src/main/java/com/zhgd/xmgl/modules/x/service/IXzHikvisionCompareDataService.java b/src/main/java/com/zhgd/xmgl/modules/x/service/IXzHikvisionCompareDataService.java index ac11454f8..b5b06236a 100644 --- a/src/main/java/com/zhgd/xmgl/modules/x/service/IXzHikvisionCompareDataService.java +++ b/src/main/java/com/zhgd/xmgl/modules/x/service/IXzHikvisionCompareDataService.java @@ -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 param); } diff --git a/src/main/java/com/zhgd/xmgl/modules/x/service/impl/XzHikvisionCompareDataServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/x/service/impl/XzHikvisionCompareDataServiceImpl.java index 6a95c0dc4..10d8da868 100644 --- a/src/main/java/com/zhgd/xmgl/modules/x/service/impl/XzHikvisionCompareDataServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/x/service/impl/XzHikvisionCompareDataServiceImpl.java @@ -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 queryPageList(HashMap param) { @@ -120,6 +129,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl 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().put(Cts.PROJECT_SN, data.getProjectSn()).build()); EnterpriseInfo enterpriseInfo = BeanUtil.toBean(enterpriseInfoService.getEnterpriseInfoById(new MapBuilder() @@ -130,7 +140,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl 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().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().put(Cts.SUCCESS, true).put(Cts.MSG, "").build())); + } + + @Override + public JSONObject checkCompareDataException(Map 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; + } } diff --git a/src/main/java/com/zhgd/xmgl/task/HikvisionTask.java b/src/main/java/com/zhgd/xmgl/task/HikvisionTask.java index e7d29f50e..fc21a8483 100644 --- a/src/main/java/com/zhgd/xmgl/task/HikvisionTask.java +++ b/src/main/java/com/zhgd/xmgl/task/HikvisionTask.java @@ -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 projects = projectMapper.selectList(new LambdaQueryWrapper().eq(Project::getSyncHikvision, 1)); for (Project project : projects) { - compareHikvision(project); + try { + xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper() + .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 enterpriseInfos = BeanUtil.copyToList(enterpriseInfoService.getEnterpriseInfoList(new MapBuilder().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 nameSet = new HashSet<>(); - enterpriseInfos.forEach(enterpriseInfo -> nameSet.add(enterpriseInfo.getEnterpriseName())); - listJa.forEach(o -> nameSet.add(((JSONObject) o).getString("orgName"))); - Set iscSet = listJa.stream().map(o -> ((JSONObject) o).getString("orgName")).collect(Collectors.toSet()); - Set 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 nameSet = new HashSet<>(); + enterpriseInfos.forEach(enterpriseInfo -> nameSet.add(enterpriseInfo.getEnterpriseName())); + listJa.forEach(o -> nameSet.add(((JSONObject) o).getString("orgName"))); + Map iscMap = listJa.stream().collect(Collectors.toMap(o -> ((JSONObject) o).getString("orgName"), o -> (JSONObject) o, (o, o2) -> o2)); + Map 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 teamList = teamInfoService.getProjectTeamList(new MapBuilder() + .put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.ENTERPRISE_ID, orgIndex).build()); + List departmentInfoList = departmentInfoMapper.getDepartmentInfoList(new MapBuilder() + .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 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 iscMap = listJa.stream().collect(Collectors.toMap(o -> ((JSONObject) o).getString("orgName"), o -> (JSONObject) o, (o, o2) -> o2)); + Map myTeamMap = teamList.stream().collect(Collectors.toMap(TeamInfo::getTeamName, Function.identity(), (o, o2) -> o2)); + Map 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().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 workerPage = workerInfoService.selectWorkerInfoList(new MapBuilder().put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.TEAM_ID, orgIndex).build()); + List 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 idCardSet = new HashSet<>(); + workerInfoList.forEach(workerInfo -> idCardSet.add(workerInfo.getIdCard())); + listJa.forEach(o -> idCardSet.add(((JSONObject) o).getString("certificateNo"))); + Map iscMap = listJa.stream().collect(Collectors.toMap(o -> ((JSONObject) o).getString("certificateNo"), o -> (JSONObject) o, (o, o2) -> o2)); + Map 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 carInfoList = carInfoService.selectCarList(new MapBuilder().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 carNumberSet = new HashSet<>(); + carInfoList.forEach(enterpriseInfo -> carNumberSet.add(enterpriseInfo.getCarNumber())); + listJa.forEach(o -> carNumberSet.add(((JSONObject) o).getString("plateNo"))); + Map iscMap = listJa.stream().collect(Collectors.toMap(o -> ((JSONObject) o).getString("plateNo"), o -> (JSONObject) o, (o, o2) -> o2)); + Map 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"); + } } diff --git a/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java b/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java index c3d901c3e..e0508fba5 100644 --- a/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java +++ b/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java @@ -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 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 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()); + } } diff --git a/src/main/java/com/zhgd/xmgl/util/JoBuilder.java b/src/main/java/com/zhgd/xmgl/util/JoBuilder.java new file mode 100644 index 000000000..d3210c476 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/util/JoBuilder.java @@ -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; + } + +}