diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index ac80a6dc6..4d6eb4e35 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -1002,15 +1002,22 @@ public class HikvisionCall { JSONObject jo = JSONObject.parseObject(rs); String code = jo.getString("code"); if (callSuc) { - JSONObject dataJo = jo.getJSONObject("data"); - Optional fOp = Optional.ofNullable(dataJo).map(o -> o.getJSONArray("failures")); - if (fOp.isPresent() && fOp.get().size() != 0) { - if ("0x00052102".equals(fOp.get().getJSONObject(0).getString("code"))) { - msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车辆绑定的人员在isc不存在"; - title += "失败"; + Object data = jo.get("data"); + if (data instanceof JSONObject) { + JSONObject dataJo = jo.getJSONObject("data"); + Optional fOp = Optional.ofNullable(dataJo).map(o -> o.getJSONArray("failures")); + if (fOp.isPresent() && fOp.get().size() != 0) { + if ("0x00052102".equals(fOp.get().getJSONObject(0).getString("code"))) { + msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车辆绑定的人员在isc不存在"; + title += "失败"; + } else { + msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常"; + title += "失败"; + } } else { - msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常"; - title += "失败"; + msg = "同步成功,车牌号码:" + carInfo.getCarNumber(); + title += "成功"; + success = true; } } else { msg = "同步成功,车牌号码:" + carInfo.getCarNumber(); @@ -1426,9 +1433,6 @@ public class HikvisionCall { if (carInfo.getIsBlack() == 0) { handleAlarmCar(project, carInfo); } - //根据车牌号删除车辆 - JSONObject oldCarInfo = searchCarInfoByCarNumberFromHttp(carInfo.getCarNumber(), project); - cancelCharge(project, carInfo); if (Objects.equals(carInfo.getCarModuleType(), 1)) { //删除预约车辆 @@ -1570,8 +1574,7 @@ public class HikvisionCall { private String getRemoteCarIdByCarNumber(String carNumber, Project project) throws Exception { JSONObject oldCarInfo = searchCarInfoByCarNumberFromHttp(carNumber, project); - - return oldCarInfo.getString("vehicleId"); + return oldCarInfo == null ? null : oldCarInfo.getString("vehicleId"); } @@ -1583,14 +1586,14 @@ public class HikvisionCall { * @throws Exception */ private void saveBindCategory(CarInfo carInfo, Project project) throws Exception { - String categoryCode = getCategoryCode(project, carInfo); + String categoryCode = getCategoryCode(project); saveCarCategoryBind(project, categoryCode, carInfo.getHikvisionVehicleId(), carInfo); } @NotNull - private String getCategoryCode(Project project, CarInfo carInfo) throws Exception { + private String getCategoryCode(Project project) throws Exception { //绑定固定的群组 - JSONArray ja = HikvisionUtil.categorySearch(project); + JSONArray ja = HikvisionUtil.queryCategory(project); return getFixedCarGroupName(ja); } @@ -1622,7 +1625,7 @@ public class HikvisionCall { 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())); + return HikvisionUtil.doPostRtObj(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } private HikvisionCarInfo getHikvisionCarInfo(CarInfo carInfo) { @@ -1765,8 +1768,8 @@ public class HikvisionCall { * @throws Exception */ private void bindCarOrNot(Project project, int operation, CarInfo carInfo) throws Exception { - String categoryCode = getCategoryCode(project, carInfo); - carCategoryBindOrNotFromHttp(project, operation, categoryCode, carInfo.getHikvisionVehicleId(), carInfo); + String categoryCode = getCategoryCode(project); + bindOrNotCarCategory(project, operation, categoryCode, carInfo); } /** @@ -2318,8 +2321,8 @@ public class HikvisionCall { * @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); + bindOrNotCarCategory(project, 2, categoryCode, carInfo); + bindOrNotCarCategory(project, 1, categoryCode, carInfo); } /** @@ -2328,21 +2331,16 @@ public class HikvisionCall { * @param project * @param operation 绑定操作类型,1绑定、2解绑 * @param categoryCode 车辆分类标识 - * @param vehicleIds * @param carInfo */ - public void carCategoryBindOrNotFromHttp(Project project, Integer operation, String categoryCode, String vehicleIds, CarInfo carInfo) throws Exception { - if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { - return; - } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/pms/v1/car/categoryBind"; - String host = "https://" + project.getArtemisConfigHost(); - JSONObject jo = new JSONObject(); - jo.put("vehicleIds", vehicleIds); - jo.put("operation", operation); - jo.put("categoryCode", categoryCode); - String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); + public void bindOrNotCarCategory(Project project, Integer operation, String categoryCode, CarInfo carInfo) throws Exception { + String carId = this.getRemoteCarIdByCarNumber(carInfo.getCarNumber(), project); + JSONObject param = new JSONObject(); + param.put("vehicleIds", carId == null ? carInfo.getId() : carId); + param.put("operation", operation); + param.put("categoryCode", categoryCode); + JSONObject jo = HikvisionUtil.bindCarCategory(project, param); + String rs = jo.toJSONString(); if (Objects.equals(operation, 1)) { sendNoticeAndSetStatusForCarInfo("绑定" + FIXED_CAR_GROUP_NAME + "到海康isc", rs, carInfo, 5, 1); } else if (Objects.equals(operation, 2)) { diff --git a/src/main/java/com/zhgd/xmgl/modules/car/mapper/xml/CarInfoMapper.xml b/src/main/java/com/zhgd/xmgl/modules/car/mapper/xml/CarInfoMapper.xml index 0bc3f5221..34cd4dde7 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/mapper/xml/CarInfoMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/car/mapper/xml/CarInfoMapper.xml @@ -3,9 +3,9 @@ SELECT if(t.car_module_type = 1 or t.car_module_type = 2, wi.id_card, - t.outside_driver_id_card) as outsideDriverIdCard, + t.outside_driver_id_card) as outside_driver_id_card, if(t.car_module_type = 1 or t.car_module_type = 2, wi.worker_name, - t.driver_worker_name) as driverWorkerName, + t.driver_worker_name) as driver_worker_name, t.*, b.car_type_name, ei.enterprise_name diff --git a/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java b/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java index 34b2315a6..85ebe50b3 100644 --- a/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java +++ b/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java @@ -170,7 +170,7 @@ public class HikvisionUtil { /** * 查询车辆分类 */ - public static JSONArray categorySearch(Project project) throws Exception { + public static JSONArray queryCategory(Project project) throws Exception { final String ARTEMIS_PATH = "/artemis"; final String path = ARTEMIS_PATH + "/api/pms/v1/car/category/search"; String host = "https://" + project.getArtemisConfigHost(); @@ -178,4 +178,22 @@ public class HikvisionUtil { String rs = doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); return getJSONArrayData(rs); } + + /** + * 车辆群组绑定 + * + * @param project + * @param param + * @return + * @throws Exception + */ + public static JSONObject bindCarCategory(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/pms/v1/car/categoryBind"; + String host = "https://" + project.getArtemisConfigHost(); + return doPostRtObj(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); + } }