From 5c9e1dc443517b03b4e17daae59bb862cee1d8a8 Mon Sep 17 00:00:00 2001 From: GUO <1923636941@qq.com> Date: Sat, 1 Jun 2024 21:06:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=A0=A1=E9=AA=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/zhgd/xmgl/constant/Cts.java | 1 + .../XzHikvisionCompareDataController.java | 11 +++ .../IXzHikvisionCompareDataService.java | 2 + .../XzHikvisionCompareDataServiceImpl.java | 28 ++++++- .../com/zhgd/xmgl/task/HikvisionTask.java | 39 ++++++--- .../java/com/zhgd/xmgl/util/MapBuilder.java | 79 +++++++++++-------- 6 files changed, 114 insertions(+), 46 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/constant/Cts.java b/src/main/java/com/zhgd/xmgl/constant/Cts.java index ae9dab8d1..732a31513 100644 --- a/src/main/java/com/zhgd/xmgl/constant/Cts.java +++ b/src/main/java/com/zhgd/xmgl/constant/Cts.java @@ -25,4 +25,5 @@ public interface Cts { String TYPE = "type"; String TEAM_ID = "teamId"; String IF_FROM_TASK_KEY = "ifFromTaskKey"; + String DEPARTMENT_ID = "departmentId"; } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzHikvisionCompareDataController.java b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzHikvisionCompareDataController.java index 226a82e21..4ec2b88c9 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzHikvisionCompareDataController.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzHikvisionCompareDataController.java @@ -131,4 +131,15 @@ public class XzHikvisionCompareDataController { public Result checkCompareDataException(@ApiIgnore @RequestBody Map param) { return Result.success(xzHikvisionCompareDataService.checkCompareDataException(param)); } + + @ApiOperation(value = "人员/车辆手动校验数据", notes = "人员/车辆手动校验数据", httpMethod = "POST") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"), + @ApiImplicitParam(name = "type", value = "1人员2车辆", paramType = "body", required = true, dataType = "Integer"), + }) + @PostMapping(value = "/manualCompareData") + public Result manualCompareData(@ApiIgnore @RequestBody Map param) { + xzHikvisionCompareDataService.manualCompareData(param); + return Result.ok(); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzHikvisionCompareDataService.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzHikvisionCompareDataService.java index 4b434d300..da1eed3a8 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzHikvisionCompareDataService.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzHikvisionCompareDataService.java @@ -58,4 +58,6 @@ public interface IXzHikvisionCompareDataService extends IService param); + + void manualCompareData(Map param); } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionCompareDataServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionCompareDataServiceImpl.java index 75fd62d2b..32b7f10b0 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionCompareDataServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionCompareDataServiceImpl.java @@ -32,6 +32,7 @@ import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl; import com.zhgd.xmgl.modules.xz.entity.XzHikvisionCompareData; import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionCompareDataMapper; import com.zhgd.xmgl.modules.xz.service.IXzHikvisionCompareDataService; +import com.zhgd.xmgl.task.HikvisionTask; import com.zhgd.xmgl.util.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; @@ -41,10 +42,7 @@ 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; +import java.util.*; /** * @Description: 星纵-海康数据校验失败记录 @@ -58,6 +56,9 @@ import java.util.Map; public class XzHikvisionCompareDataServiceImpl extends ServiceImpl implements IXzHikvisionCompareDataService { @Autowired private ICarInfoService carInfoService; + @Lazy + @Autowired + private HikvisionTask hikvisionTask; @Autowired private XzHikvisionCompareDataMapper xzHikvisionCompareDataMapper; @Autowired @@ -465,4 +466,23 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl param) { + Integer type = MapUtils.getInteger(param, "type"); + String projectSn = MapUtils.getString(param, Cts.PROJECT_SN); + ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(projectSn); + try { + if (Objects.equals(type, 1)) { + //人员 + hikvisionTask.compareHikvisionForEnterpriseEtc(projectInfoBySn); + } else if (Objects.equals(type, 2)) { + //车辆 + hikvisionTask.compareHikvisionForCar(projectInfoBySn); + } + } catch (Exception e) { + log.error("", e); + addExceptionShowIfNull(projectSn); + } + } } diff --git a/src/main/java/com/zhgd/xmgl/task/HikvisionTask.java b/src/main/java/com/zhgd/xmgl/task/HikvisionTask.java index a2de954b7..4cf4df883 100644 --- a/src/main/java/com/zhgd/xmgl/task/HikvisionTask.java +++ b/src/main/java/com/zhgd/xmgl/task/HikvisionTask.java @@ -86,10 +86,10 @@ public class HikvisionTask { /** * 数据校验同步 */ - @SchedulerLock(name = "dataCompare", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5) + @SchedulerLock(name = "compareData", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5) @Scheduled(cron = "0 0 3 * * ?") - @RequestMapping("dataCompare") - public void dataCompare() throws Exception { + @RequestMapping("compareData") + public void compareData() throws Exception { List projects = projectMapper.selectList(new LambdaQueryWrapper().eq(Project::getSyncHikvision, 1)); for (Project project : projects) { try { @@ -104,7 +104,7 @@ public class HikvisionTask { } } - private void compareHikvisionForEnterpriseEtc(Project project) throws Exception { + public void compareHikvisionForEnterpriseEtc(Project project) throws Exception { //对比企业 JSONObject param = new JSONObject(); HikvisionUtil.addPageParamIfAbsent(param); @@ -156,9 +156,11 @@ public class HikvisionTask { if (CollUtil.isEmpty(listJa)) { for (TeamInfo teamInfo : teamList) { xzHikvisionCompareDataService.addCompareDataForTeam(project, teamInfo.getTeamName(), 0, 1, String.valueOf(teamInfo.getId())); + compareHikvisionForWorker(project, String.valueOf(teamInfo.getId()), 1); } for (DepartmentInfo departmentInfo : departmentInfoList) { xzHikvisionCompareDataService.addCompareDataForDepartment(project, departmentInfo.getDepartmentName(), 0, 1, String.valueOf(departmentInfo.getId())); + compareHikvisionForWorker(project, String.valueOf(departmentInfo.getId()), 2); } } else { //isc存在,平台也存在 @@ -171,32 +173,51 @@ public class HikvisionTask { Map myDepartmentMap = departmentInfoList.stream().collect(Collectors.toMap(DepartmentInfo::getDepartmentName, Function.identity(), (o, o2) -> o2)); for (String name : nameSet) { String index; + Integer type = null; if (myTeamMap.containsKey(name) && !iscMap.containsKey(name)) { index = String.valueOf(myTeamMap.get(name).getId()); xzHikvisionCompareDataService.addCompareDataForTeam(project, name, 0, 1, index); + type = 1; } else if (myDepartmentMap.containsKey(name) && !iscMap.containsKey(name)) { index = String.valueOf(myDepartmentMap.get(name).getId()); xzHikvisionCompareDataService.addCompareDataForDepartment(project, name, 0, 1, index); + type = 2; } 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 { + type = 1; + } else if (myTeamMap.containsKey(name) && iscMap.containsKey(name)) { //班组存在和isc存在 index = String.valueOf(myTeamMap.get(name).getId()); + type = 1; + } else { + //部门存在和isc存在 + index = String.valueOf(myDepartmentMap.get(name).getId()); + type = 2; } - compareHikvisionForWorker(project, index); + compareHikvisionForWorker(project, index, type); } } xzHikvisionCompareDataService.addSuccessShow(project.getProjectSn(), "1"); } - private void compareHikvisionForWorker(Project project, String orgIndex) throws Exception { + /** + * @param project + * @param orgIndex + * @param type 1班组 2部门 + * @throws Exception + */ + private void compareHikvisionForWorker(Project project, String orgIndex, Integer type) 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()); + IPage workerPage = workerInfoService.selectWorkerInfoList(new MapBuilder() + .put(Cts.PROJECT_SN, project.getProjectSn()) + .put(type == 1, Cts.TEAM_ID, orgIndex) + .put(type == 2, Cts.DEPARTMENT_ID, orgIndex) + .build()); List workerInfoList = workerPage.getRecords(); JSONObject dataJo = HikvisionUtil.getJSONObjectData(rtJo); JSONArray listJa = dataJo.getJSONArray("list"); @@ -235,7 +256,7 @@ public class HikvisionTask { xzHikvisionCompareDataService.addSuccessShow(project.getProjectSn(), "3"); } - private void compareHikvisionForCar(Project project) throws Exception { + public void compareHikvisionForCar(Project project) throws Exception { JSONObject param = new JSONObject(); HikvisionUtil.addPageParamIfAbsent(param); JSONObject rtJo = HikvisionUtil.getCarList(project, param); diff --git a/src/main/java/com/zhgd/xmgl/util/MapBuilder.java b/src/main/java/com/zhgd/xmgl/util/MapBuilder.java index 087d434a7..5d1225b04 100644 --- a/src/main/java/com/zhgd/xmgl/util/MapBuilder.java +++ b/src/main/java/com/zhgd/xmgl/util/MapBuilder.java @@ -1,7 +1,6 @@ package com.zhgd.xmgl.util; import java.util.HashMap; -import java.util.Map; /** * 一个简单的mapParam构建器 @@ -30,38 +29,6 @@ public class MapBuilder { this.mapParam = mapParam; } - /** - * put方法,返回MapParamBuilder构建器 - * - * @param key - * @param value - * @return - */ - public MapBuilder put(K key, V value) { - mapParam.put(key, value); - return this; - } - - /** - * 删除Key - * - * @param key - * @return - */ - public MapBuilder remove(K key) { - mapParam.remove(key); - return this; - } - - /** - * 返回构建好的map参数 - * - * @return - */ - public HashMap build() { - return mapParam; - } - public static void main(String[] args) { HashMap map = new MapBuilder() .put("key1", "value1") @@ -93,4 +60,50 @@ public class MapBuilder { } + /** + * put方法,返回MapParamBuilder构建器 + * + * @param key + * @param value + * @return + */ + public MapBuilder put(K key, V value) { + mapParam.put(key, value); + return this; + } + + /** + * put方法,返回MapParamBuilder构建器 + * + * @param key + * @param value + * @return + */ + public MapBuilder put(boolean isPut, K key, V value) { + if (isPut) { + mapParam.put(key, value); + } + return this; + } + + /** + * 删除Key + * + * @param key + * @return + */ + public MapBuilder remove(K key) { + mapParam.remove(key); + return this; + } + + /** + * 返回构建好的map参数 + * + * @return + */ + public HashMap build() { + return mapParam; + } + }