From 6949d5ff4408b33d3915df5bb3c914f9a3346a94 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Tue, 14 May 2024 15:46:15 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E8=BD=A6=E8=BE=86bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/xmgl/async/AsyncHikvision.java | 4 +- .../com/zhgd/xmgl/call/HikvisionCall.java | 211 ++++++++++++------ .../zhgd/xmgl/modules/car/entity/CarInfo.java | 4 + .../impl/XzHikvisionSyncServiceImpl.java | 2 +- 4 files changed, 146 insertions(+), 75 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java index 0d9f2f245..0869abe54 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java @@ -156,7 +156,7 @@ public class AsyncHikvision { public void addCarInfoForHikvisionAsyc(CarInfo carInfo, Date now) { try { ThreadLocalUtil.addInKey("now", now); - hikvisionCall.addCarInfoFromHikvision(carInfo); + hikvisionCall.saveCarInfoFromHikvision(carInfo); } catch (Exception e) { log.error("海康:", e); sendNoticeForCar(carInfo, e, "添加"); @@ -182,7 +182,7 @@ public class AsyncHikvision { public void editCarInfoForHikvision(CarInfo carInfo, CarInfo old) { Date now = new Date(); if (Objects.equals(carInfo.getCarModuleType(), 1)) { - xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(4).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now)); + xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(4).setOperate(2).setWhoId(carInfo.getId()).setCreateDate(now)); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(5).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now)); } else if (Objects.equals(carInfo.getCarModuleType(), 2) || Objects.equals(carInfo.getCarModuleType(), 3)) { xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now)); diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 54dfea388..4531b5b54 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -10,7 +10,6 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.execption.OpenPromptException; import com.zhgd.redis.lock.RedisRepository; @@ -25,15 +24,11 @@ import com.zhgd.xmgl.modules.car.mapper.CarInfoMapper; import com.zhgd.xmgl.modules.car.mapper.CarPassRecordMapper; import com.zhgd.xmgl.modules.car.mapper.CarTypeMapper; import com.zhgd.xmgl.modules.car.service.impl.CarPassRecordServiceImpl; -import com.zhgd.xmgl.modules.frontier.entity.FrontierProtectionDev; -import com.zhgd.xmgl.modules.frontier.entity.FrontierProtectionDevAlarm; import com.zhgd.xmgl.modules.frontier.service.FrontierProtectionDevService; import com.zhgd.xmgl.modules.frontier.service.IFrontierProtectionDevAlarmService; import com.zhgd.xmgl.modules.project.entity.Project; import com.zhgd.xmgl.modules.project.entity.ProjectVideoConfig; import com.zhgd.xmgl.modules.project.mapper.ProjectMapper; -import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord; -import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareRecord; import com.zhgd.xmgl.modules.video.service.IAiAnalyseHardWareAlarmRecordService; import com.zhgd.xmgl.modules.video.service.IAiAnalyseHardWareRecordService; import com.zhgd.xmgl.modules.worker.entity.*; @@ -56,6 +51,7 @@ import lombok.extern.slf4j.Slf4j; import net.javacrumbs.shedlock.core.SchedulerLock; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; @@ -139,6 +135,7 @@ public class HikvisionCall { @Autowired private FrontierProtectionDevService frontierProtectionDevService; + /** * 获取图片 * @@ -1039,29 +1036,19 @@ public class HikvisionCall { } } - private void setSuccess(String projectSn, Long whoId, Integer type, Integer operate, String deviceSn) { - XzHikvisionSync xzHikvisionSync = xzHikvisionSyncMapper.selectOne(new LambdaQueryWrapper() - .eq(XzHikvisionSync::getProjectSn, projectSn) - .eq(XzHikvisionSync::getWhoId, whoId) - .eq(XzHikvisionSync::getType, type) - .eq(XzHikvisionSync::getOperate, operate) - .eq(StringUtils.isNotBlank(deviceSn), XzHikvisionSync::getDeviceSn, deviceSn) - .orderByDesc(XzHikvisionSync::getCreateDate) - .last("limit 1") - ); - xzHikvisionSync.setIsSuccess(1); - xzHikvisionSyncMapper.updateById(xzHikvisionSync); - } - private void setSuccessByNow(String projectSn, Long whoId, Integer type, Integer operate, Date now, String deviceSn) { - XzHikvisionSync xzHikvisionSync = xzHikvisionSyncMapper.selectOne(new LambdaQueryWrapper() + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(XzHikvisionSync::getProjectSn, projectSn) .eq(XzHikvisionSync::getWhoId, whoId) .eq(XzHikvisionSync::getType, type) - .eq(XzHikvisionSync::getOperate, operate) .eq(XzHikvisionSync::getCreateDate, now) - .eq(StringUtils.isNotBlank(deviceSn), XzHikvisionSync::getDeviceSn, deviceSn) - ); + .eq(StringUtils.isNotBlank(deviceSn), XzHikvisionSync::getDeviceSn, deviceSn); + if (operate == 3) { + queryWrapper.eq(XzHikvisionSync::getOperate, operate); + } else { + queryWrapper.ne(XzHikvisionSync::getOperate, 3); + } + XzHikvisionSync xzHikvisionSync = xzHikvisionSyncMapper.selectOne(queryWrapper); if (xzHikvisionSync == null) { return; } @@ -1281,39 +1268,75 @@ public class HikvisionCall { } /** - * 添加车辆 + * 保存车辆 * * @param carInfo */ - public void addCarInfoFromHikvision(CarInfo carInfo) throws Exception { - deleteCarInfoForHikvision(carInfo); + public void saveCarInfoFromHikvision(CarInfo carInfo) throws Exception { Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getProjectSn, carInfo.getProjectSn())); if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return; } + cancelCharge(project, carInfo); if (Objects.equals(carInfo.getCarModuleType(), 1)) { - addFixedCar(carInfo, project); + //删除预约车辆 + deleteReservationCarFromHttp(carInfo, project); + saveFixedCar(carInfo, project); + saveBindCategory(carInfo, project); } else if (Objects.equals(carInfo.getCarModuleType(), 2) || Objects.equals(carInfo.getCarModuleType(), 3)) { - reservationCar(project, carInfo); + bindCarOrNot(project, 2, carInfo); + deleteFixedCarForHikvision(carInfo, project); + saveReservationCar(project, carInfo); } } - private void addFixedCar(CarInfo carInfo, Project project) throws Exception { - //固定车 - addCarInfoFromHikvision(carInfo, project); + /** + * 保存固定车 + * + * @param carInfo + * @param project + * @throws Exception + */ + private void saveFixedCar(CarInfo carInfo, Project project) throws Exception { + //根据车牌号删除车辆 + JSONObject oldCarInfo = searchCarInfoByCarNumberFromHttp(carInfo.getCarNumber(), project); + if (oldCarInfo != null) { + log.info("查询到海康车辆,车牌号:{}", oldCarInfo.getString("plateNo")); + carInfo.setHikvisionVehicleId(oldCarInfo.getString("vehicleId")); + editCarInfoFromHttp(carInfo, project); + } else { + log.info("未查询到海康车辆,车牌号:{}", oldCarInfo.getString("plateNo")); + //固定车 + addCarInfoFromHttp(carInfo, project); + } + } + + /** + * 保存绑定群组关系 + * + * @param carInfo + * @param project + * @throws Exception + */ + private void saveBindCategory(CarInfo carInfo, Project project) throws Exception { + String categoryCode = getCategoryCode(project, carInfo); + saveCarCategoryBind(project, categoryCode, String.valueOf(carInfo.getId()), carInfo); + } + + @NotNull + private String getCategoryCode(Project project, CarInfo carInfo) throws Exception { //绑定固定的群组 JSONArray ja = categorySearch(project); String categoryCode = getFixedCarGroupName(ja); if (StringUtils.isBlank(categoryCode)) { + log.error("获取固定车的categoryCode失败:车牌号:{}", carInfo.getCarNumber()); throw new OpenPromptException("获取固定车的categoryCode失败"); } - if (StringUtils.isNotBlank(categoryCode)) { - carCategoryBindOrNot(project, 1, categoryCode, String.valueOf(carInfo.getId()), carInfo); - } + return categoryCode; } - public void addCarInfoFromHikvision(CarInfo carInfo, Project project) throws Exception { + public void addCarInfoFromHttp(CarInfo carInfo, Project project) throws Exception { final String ARTEMIS_PATH = "/artemis"; final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/batch/add"; String host = "https://" + project.getArtemisConfigHost(); @@ -1324,12 +1347,21 @@ public class HikvisionCall { sendNoticeForCarInfo("添加车辆白名单到海康isc", rs, carInfo, 4, 1); } + /** + * 查询车辆列表v2 + * + * @param carNumber + * @param project + * @param pageNo + * @return + * @throws Exception + */ private JSONObject getCarInfoListFromHttp(String carNumber, Project project, Integer pageNo) throws Exception { 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("plateNo", carNumber); + jo.put("plateNo", carNumber);//模糊查询 jo.put("pageNo", pageNo); jo.put("pageSize", 1000); return JSONObject.parseObject(HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())); @@ -1337,7 +1369,7 @@ public class HikvisionCall { private HikvisionCarInfo getHikvisionCarInfo(CarInfo carInfo) { HikvisionCarInfo hikvisionCarInfo = new HikvisionCarInfo(); - hikvisionCarInfo.setVehicleId(String.valueOf(carInfo.getId())); + hikvisionCarInfo.setVehicleId(carInfo.getHikvisionVehicleId()); hikvisionCarInfo.setPlateNo(carInfo.getCarNumber()); String[] driverList = StringUtils.split(carInfo.getDriverWorkerId(), ","); if (driverList != null && driverList.length > 0) { @@ -1443,12 +1475,20 @@ public class HikvisionCall { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return; } - deleteCarInfoForHikvision(carInfo); - //先删除再新增 - deleteCarInfoForHikvision(old); - addCarInfoFromHikvision(carInfo); + if (!Objects.equals(carInfo.getCarNumber(), old.getCarNumber())) { + //删除旧的车辆数据 + deleteCarInfoForHikvision(old); + } + saveCarInfoFromHikvision(carInfo); } + /** + * 修改车辆 + * + * @param carInfo + * @param project + * @throws Exception + */ private void editCarInfoFromHttp(CarInfo carInfo, Project project) throws Exception { final String ARTEMIS_PATH = "/artemis"; final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/single/update"; @@ -1458,13 +1498,17 @@ public class HikvisionCall { sendNoticeForCarInfo("更新车辆白名单到海康isc", rs, carInfo, 4, 2); } + /** + * 绑定/解绑车辆群组 + * + * @param project + * @param operation 绑定操作类型,1绑定、2解绑 + * @param carInfo + * @throws Exception + */ private void bindCarOrNot(Project project, int operation, CarInfo carInfo) throws Exception { - JSONArray ja = categorySearch(project); - String categoryCode = getFixedCarGroupName(ja); - if (StringUtils.isBlank(categoryCode)) { - throw new OpenPromptException("获取固定车的categoryCode失败"); - } - carCategoryBindOrNot(project, operation, categoryCode, String.valueOf(carInfo.getId()), carInfo); + String categoryCode = getCategoryCode(project, carInfo); + carCategoryBindOrNotFromHttp(project, operation, categoryCode, String.valueOf(carInfo.getId()), carInfo); } /** @@ -1495,30 +1539,34 @@ public class HikvisionCall { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return; } + cancelCharge(project, carInfo); bindCarOrNot(project, 2, carInfo); - deleteCarInfoForHikvision(carInfo, project); - //根据车牌号删除车辆 - JSONObject oldCarInfo = getOldCarInfoFromHikvision(carInfo, project); - if (oldCarInfo != null) { - log.info("海康存在以前添加的车辆,车牌号:{}", oldCarInfo.getString("plateNo")); - deleteCarInfoFromHttp(oldCarInfo.getString("vehicleId"), project); - } - deleteReservationCarInfo(carInfo, project); + deleteFixedCarForHikvision(carInfo, project); + deleteReservationCarFromHttp(carInfo, project); } - private JSONObject getOldCarInfoFromHikvision(CarInfo carInfo, Project project) throws Exception { + private void deleteFixedCarForHikvision(CarInfo carInfo, Project project) throws Exception { + //根据车牌号删除车辆 + JSONObject oldCarInfo = searchCarInfoByCarNumberFromHttp(carInfo.getCarNumber(), project); + if (oldCarInfo != null) { + log.info("海康存在以前添加的车辆,车牌号:{}", oldCarInfo.getString("plateNo")); + deleteCarInfoByIdFromHttp(oldCarInfo.getString("vehicleId"), project); + } + } + + private JSONObject searchCarInfoByCarNumberFromHttp(String carNumber, Project project) throws Exception { long total = 0; JSONObject o1 = null; int pageNo = 1; do { - JSONObject jo = getCarInfoListFromHttp(carInfo.getCarNumber(), project, pageNo++); + JSONObject jo = getCarInfoListFromHttp(carNumber, project, pageNo++); if (HikvisionUtil.isSuccess(jo)) { JSONObject dataJo = HikvisionUtil.getJSONObjectData(jo); total = dataJo.getInteger("total"); JSONArray listJa = dataJo.getJSONArray("list"); Optional plateNoOpt = listJa.stream().filter(o -> { JSONObject j = (JSONObject) o; - return carInfo.getCarNumber().equals(j.getString("plateNo")); + return carNumber.equals(j.getString("plateNo")); }).findFirst(); if (plateNoOpt.isPresent()) { o1 = (JSONObject) plateNoOpt.get(); @@ -1530,12 +1578,7 @@ public class HikvisionCall { return o1; } - private void deleteCarInfoForHikvision(CarInfo carInfo, Project project) throws Exception { - String rs = deleteCarInfoFromHttp(String.valueOf(carInfo.getId()), project); - sendNoticeForCarInfo("删除车辆白名单到海康isc", rs, carInfo, 4, 3); - } - - private String deleteCarInfoFromHttp(String carId, Project project) throws Exception { + private String deleteCarInfoByIdFromHttp(String carId, Project project) throws Exception { final String ARTEMIS_PATH = "/artemis"; final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/batch/delete"; String host = "https://" + project.getArtemisConfigHost(); @@ -1553,7 +1596,7 @@ public class HikvisionCall { * @param carInfo * @param project */ - private void deleteReservationCarInfo(CarInfo carInfo, Project project) throws Exception { + private void deleteReservationCarFromHttp(CarInfo carInfo, Project project) throws Exception { final String ARTEMIS_PATH = "/artemis"; final String path = ARTEMIS_PATH + "/api/pms/v1/parkingSpace/reservations/deletion"; String host = "https://" + project.getArtemisConfigHost(); @@ -1917,19 +1960,29 @@ public class HikvisionCall { /** - * 预约车辆 + * 保存预约车辆 * * @param project * @param carInfo */ - public void reservationCar(Project project, CarInfo carInfo) throws Exception { + public void saveReservationCar(Project project, CarInfo carInfo) throws Exception { //删除预约车辆 - deleteReservationCarInfo(carInfo, project); + deleteReservationCarFromHttp(carInfo, project); + //临时车辆预约 + reservationCarFromHttp(project, carInfo); + } + + /** + * 取消车辆包期 + * + * @param project + * @param carInfo + * @throws Exception + */ + private void cancelCharge(Project project, CarInfo carInfo) throws Exception { //取消车辆包期 String parkIndexCode = getProjectParkCode(project); chargeDeletion(project, new ChargeDeletionParam(parkIndexCode, carInfo.getCarNumber())); - //临时车辆预约 - reservationCarFromHttp(project, carInfo); } private void reservationCarFromHttp(Project project, CarInfo carInfo) throws Exception { @@ -2026,7 +2079,21 @@ public class HikvisionCall { } /** - * 车辆群组管理 + * 保存车辆群组绑定关系 + * + * @param project + * @param categoryCode + * @param vehicleIds + * @param carInfo + * @throws Exception + */ + public void saveCarCategoryBind(Project project, String categoryCode, String vehicleIds, CarInfo carInfo) throws Exception { + carCategoryBindOrNotFromHttp(project, 2, categoryCode, vehicleIds, carInfo); + carCategoryBindOrNotFromHttp(project, 1, categoryCode, vehicleIds, carInfo); + } + + /** + * 车辆群组管理,解绑使用 * * @param project * @param operation 绑定操作类型,1绑定、2解绑 @@ -2034,7 +2101,7 @@ public class HikvisionCall { * @param vehicleIds * @param carInfo */ - public void carCategoryBindOrNot(Project project, Integer operation, String categoryCode, String vehicleIds, CarInfo carInfo) throws Exception { + public void carCategoryBindOrNotFromHttp(Project project, Integer operation, String categoryCode, String vehicleIds, CarInfo carInfo) throws Exception { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return; } diff --git a/src/main/java/com/zhgd/xmgl/modules/car/entity/CarInfo.java b/src/main/java/com/zhgd/xmgl/modules/car/entity/CarInfo.java index f3f1876de..5c25b1f85 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/entity/CarInfo.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/entity/CarInfo.java @@ -139,4 +139,8 @@ public class CarInfo implements Serializable { @ApiModelProperty(value = "流程参与人") private List userIds; + @TableField(exist = false) + @ApiModelProperty(value = "海康车辆id") + private String hikvisionVehicleId; + } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionSyncServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionSyncServiceImpl.java index d0b5b817d..6510c1e01 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionSyncServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionSyncServiceImpl.java @@ -196,7 +196,7 @@ public class XzHikvisionSyncServiceImpl extends ServiceImpl Date: Tue, 14 May 2024 16:03:54 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E8=BD=A6=E8=BE=86bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/WisdomSiteApplication.java | 1 - src/main/java/com/zhgd/xmgl/config/AsyncConfig.java | 7 +++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/WisdomSiteApplication.java b/src/main/java/com/WisdomSiteApplication.java index 0d013108a..f3ba5e5ff 100644 --- a/src/main/java/com/WisdomSiteApplication.java +++ b/src/main/java/com/WisdomSiteApplication.java @@ -41,7 +41,6 @@ public class WisdomSiteApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(WisdomSiteApplication.class, args); - SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_INHERITABLETHREADLOCAL); } @Bean diff --git a/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java b/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java index eb660a4c1..1036576dc 100644 --- a/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java +++ b/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java @@ -1,9 +1,11 @@ package com.zhgd.xmgl.config; +import org.springframework.beans.factory.InitializingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.security.core.context.SecurityContextHolder; import java.util.concurrent.ThreadPoolExecutor; @@ -28,6 +30,11 @@ public class AsyncConfig { */ private int queueCapacity = 200; + @Bean + public InitializingBean initializingBean() { + return () -> SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_INHERITABLETHREADLOCAL); + } + /** * 默认情况下,在创建了线程池后,线程池中的线程数为0,当有任务来之后,就会创建一个线程去执行任务, * 当线程池中的线程数目达到corePoolSize后,就会把到达的任务放到缓存队列当中; From 6b691e7c125dea3fba09d361f57db514713727ca Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Tue, 14 May 2024 16:31:27 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E8=BD=A6=E8=BE=86bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/zhgd/xmgl/call/HikvisionCall.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 4531b5b54..13e74c4ab 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -1301,11 +1301,12 @@ public class HikvisionCall { //根据车牌号删除车辆 JSONObject oldCarInfo = searchCarInfoByCarNumberFromHttp(carInfo.getCarNumber(), project); if (oldCarInfo != null) { - log.info("查询到海康车辆,车牌号:{}", oldCarInfo.getString("plateNo")); + log.info("查询到海康车辆,车牌号:{}", carInfo.getCarNumber()); + ; carInfo.setHikvisionVehicleId(oldCarInfo.getString("vehicleId")); editCarInfoFromHttp(carInfo, project); } else { - log.info("未查询到海康车辆,车牌号:{}", oldCarInfo.getString("plateNo")); + log.info("未查询到海康车辆,车牌号:{}", carInfo.getCarNumber()); //固定车 addCarInfoFromHttp(carInfo, project); } From 2d7eb91987b3405294886dd4569d2ae1cd1a1032 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Tue, 14 May 2024 16:32:36 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E8=BD=A6=E8=BE=86bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/zhgd/xmgl/call/HikvisionCall.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 13e74c4ab..e1c7be5e1 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -1302,7 +1302,6 @@ public class HikvisionCall { JSONObject oldCarInfo = searchCarInfoByCarNumberFromHttp(carInfo.getCarNumber(), project); if (oldCarInfo != null) { log.info("查询到海康车辆,车牌号:{}", carInfo.getCarNumber()); - ; carInfo.setHikvisionVehicleId(oldCarInfo.getString("vehicleId")); editCarInfoFromHttp(carInfo, project); } else { From c25f8fcad96a8da4a3155d83f30e0f8161c62854 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Tue, 14 May 2024 17:23:05 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E8=BD=A6=E8=BE=86bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/xmgl/call/HikvisionCall.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index e1c7be5e1..07cd79951 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -953,14 +953,24 @@ public class HikvisionCall { if (success) { msg = "同步成功,车牌号码:" + carInfo.getCarNumber(); title += "成功"; - setSuccessByNow(carInfo.getProjectSn(), carInfo.getId(), type, operate, ThreadLocalUtil.getNotNull().getDate("now"), null); + updateSuccessStatusByNow(carInfo.getProjectSn(), carInfo.getId(), type, operate, ThreadLocalUtil.getNotNull().getDate("now"), null); } else { JSONObject jo = JSONObject.parseObject(rs); String code = jo.getString("code"); if (Objects.equals(code, "0x00072202")) { msg = "同步成功,车牌号码:" + carInfo.getCarNumber(); title += "成功"; - setSuccessByNow(carInfo.getProjectSn(), carInfo.getId(), type, operate, ThreadLocalUtil.getNotNull().getDate("now"), null); + updateSuccessStatusByNow(carInfo.getProjectSn(), carInfo.getId(), type, operate, ThreadLocalUtil.getNotNull().getDate("now"), null); + } else if (Objects.equals(code, "0x02e33900")) { + String msg1 = jo.getString("msg"); + if (Objects.equals(msg1, "reservation record not existed or overdued!")) { + msg = "同步成功,车牌号码:" + carInfo.getCarNumber(); + title += "成功"; + updateSuccessStatusByNow(carInfo.getProjectSn(), carInfo.getId(), type, operate, ThreadLocalUtil.getNotNull().getDate("now"), null); + } else { + msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常"; + title += "失败"; + } } else { msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常"; title += "失败"; @@ -1000,7 +1010,7 @@ public class HikvisionCall { String msg = ""; String noticeType = "23"; if (success) { - setSuccessByNow(workerInfo.getProjectSn(), workerInfo.getId(), type, operate, ThreadLocalUtil.getNotNull().getDate("now"), null); + updateSuccessStatusByNow(workerInfo.getProjectSn(), workerInfo.getId(), type, operate, ThreadLocalUtil.getNotNull().getDate("now"), null); msg = "同步成功,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard(); title += "成功"; } else { @@ -1022,7 +1032,7 @@ public class HikvisionCall { title += "失败"; } else if (Objects.equals(msg1, "PersonId Already In Db")) { //成功 - setSuccessByNow(workerInfo.getProjectSn(), workerInfo.getId(), type, operate, ThreadLocalUtil.getNotNull().getDate("now"), null); + updateSuccessStatusByNow(workerInfo.getProjectSn(), workerInfo.getId(), type, operate, ThreadLocalUtil.getNotNull().getDate("now"), null); msg = "同步成功,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard(); title += "成功"; } @@ -1036,7 +1046,7 @@ public class HikvisionCall { } } - private void setSuccessByNow(String projectSn, Long whoId, Integer type, Integer operate, Date now, String deviceSn) { + private void updateSuccessStatusByNow(String projectSn, Long whoId, Integer type, Integer operate, Date now, String deviceSn) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(XzHikvisionSync::getProjectSn, projectSn) .eq(XzHikvisionSync::getWhoId, whoId) @@ -1549,8 +1559,9 @@ public class HikvisionCall { //根据车牌号删除车辆 JSONObject oldCarInfo = searchCarInfoByCarNumberFromHttp(carInfo.getCarNumber(), project); if (oldCarInfo != null) { - log.info("海康存在以前添加的车辆,车牌号:{}", oldCarInfo.getString("plateNo")); - deleteCarInfoByIdFromHttp(oldCarInfo.getString("vehicleId"), project); + log.info("海康存在车辆,车牌号:{}", oldCarInfo.getString("plateNo")); + String rs = deleteCarInfoByIdFromHttp(oldCarInfo.getString("vehicleId"), project); + sendNoticeForCarInfo("删除车辆白名单到海康isc", rs, carInfo, 4, 3); } } @@ -2328,7 +2339,7 @@ public class HikvisionCall { String code = sdRs.getString("code"); if (Objects.equals(code, "0x15403007")) { //已存在权限,下发成功 - setSuccessByNow(workerInfo.getProjectSn(), workerInfo.getId(), 3, i == 0 ? 1 : 3, ThreadLocalUtil.getNotNull().getDate("now"), devSn); + updateSuccessStatusByNow(workerInfo.getProjectSn(), workerInfo.getId(), 3, i == 0 ? 1 : 3, ThreadLocalUtil.getNotNull().getDate("now"), devSn); sucSb.append(workerInfo.getWorkerName() + "," + dev.getDevName() + ";"); return; } @@ -2342,7 +2353,7 @@ public class HikvisionCall { JSONObject sdRsJo = HikvisionUtil.getJSONObjectData(sdRs); Integer downloadResult = sdRsJo.getJSONObject("resourceDownloadResult").getInteger("downloadResult"); if (downloadResult == 0) { - setSuccessByNow(workerInfo.getProjectSn(), workerInfo.getId(), 3, i == 0 ? 1 : 3, ThreadLocalUtil.getNotNull().getDate("now"), devSn); + updateSuccessStatusByNow(workerInfo.getProjectSn(), workerInfo.getId(), 3, i == 0 ? 1 : 3, ThreadLocalUtil.getNotNull().getDate("now"), devSn); sucSb.append(workerInfo.getWorkerName() + "," + dev.getDevName() + ";"); } else { log.error(workerInfo.getWorkerName() + "," + dev.getDevName() + ",fail:" + sdRsJo.toJSONString());