diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java index b874c86a6..275906e0b 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java @@ -139,14 +139,18 @@ public class AsyncHikvision { public void addCarInfoForHikvision(CarInfo carInfo) { 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(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)); + if (carInfo.getIsBlack() == 1) { + deleteCarInfoForHikvision(carInfo, true); + } else { + 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(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)); + } + xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now)); + asyncHikvision.addCarInfoForHikvisionAsyc(carInfo, now); } - xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(carInfo.getIsBlack() == 1 ? 1 : 3).setWhoId(carInfo.getId()).setCreateDate(now)); - asyncHikvision.addCarInfoForHikvisionAsyc(carInfo, now); } @Async("carInfoExecutor") @@ -196,14 +200,18 @@ 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(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)); + if (carInfo.getIsBlack() == 1) { + deleteCarInfoForHikvision(carInfo, true); + } else { + if (Objects.equals(carInfo.getCarModuleType(), 1)) { + 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)); + } + xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now)); + asyncHikvision.editCarInfoForHikvisionAsync(carInfo, old, now); } - xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(carInfo.getIsBlack() == 1 ? 1 : 3).setWhoId(carInfo.getId()).setCreateDate(now)); - asyncHikvision.editCarInfoForHikvisionAsync(carInfo, old, now); } @Async("carInfoExecutor") @@ -217,20 +225,20 @@ public class AsyncHikvision { } } - public void deleteCarInfoForHikvision(CarInfo carInfo) { + public void deleteCarInfoForHikvision(CarInfo carInfo, boolean isSetBlack) { Date now = new Date(); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(4).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now)); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(5).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now)); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now)); - xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now)); - asyncHikvision.deleteCarInfoForHikvisionAsync(carInfo, now); + xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(isSetBlack ? 1 : 3).setWhoId(carInfo.getId()).setCreateDate(now)); + asyncHikvision.deleteCarInfoForHikvisionAsync(carInfo, now, isSetBlack); } @Async("carInfoExecutor") - public void deleteCarInfoForHikvisionAsync(CarInfo carInfo, Date now) { + public void deleteCarInfoForHikvisionAsync(CarInfo carInfo, Date now, boolean isSetBlack) { try { ThreadLocalUtil.addInKey("now", now); - hikvisionCall.deleteCarInfoForHikvision(carInfo); + hikvisionCall.deleteCarInfoForHikvision(carInfo, isSetBlack); } catch (Exception e) { log.error("海康:", e); sendNoticeForCar(carInfo, e, "删除"); diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 58583e491..afbdae558 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -881,7 +881,7 @@ public class HikvisionCall { // deleteWorkerFromHttp(deleteWorker, project); // } String rs = doAddWorkerFromHttp(workerInfo, project); - sendNoticeForWorker("添加人员到海康isc", rs, workerInfo, 1, 1); + sendNoticeAndSetStatusForWorker("添加人员到海康isc", rs, workerInfo, 1, 1); } public String doAddWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { @@ -944,7 +944,7 @@ public class HikvisionCall { public void editWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { String rs = doEditWorkerFromHttp(workerInfo, project); - sendNoticeForWorker("更新人员到海康isc", rs, workerInfo, 1, 2); + sendNoticeAndSetStatusForWorker("更新人员到海康isc", rs, workerInfo, 1, 2); } public String doEditWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { @@ -966,7 +966,7 @@ public class HikvisionCall { String fieldAcquisitionUrl = workerInfo.getFieldAcquisitionUrl(); if (StringUtils.isNotBlank(fieldAcquisitionUrl)) { String rs = doAddWorkerFace(workerInfo, project); - sendNoticeForWorker("添加人员照片到海康isc", rs, workerInfo, 2, 1); + sendNoticeAndSetStatusForWorker("添加人员照片到海康isc", rs, workerInfo, 2, 1); } } @@ -981,12 +981,12 @@ public class HikvisionCall { return rs; } - private void sendNoticeForCarInfo(String title, String rs, CarInfo carInfo, Integer type, Integer operate) { + private void sendNoticeAndSetStatusForCarInfo(String title, String rs, CarInfo carInfo, Integer type, Integer operate) { boolean callSuc = HikvisionUtil.isSuccess(rs); - sendNoticeForCarInfo(title, rs, carInfo, type, operate, callSuc); + sendNoticeAndSetStatusForCarInfo(title, rs, carInfo, type, operate, callSuc); } - public void sendNoticeForCarInfo(String title, String rs, CarInfo carInfo, Integer type, Integer operate, boolean callSuc) { + public void sendNoticeAndSetStatusForCarInfo(String title, String rs, CarInfo carInfo, Integer type, Integer operate, boolean callSuc) { String msg; boolean success = false; if (callSuc) { @@ -1013,7 +1013,7 @@ public class HikvisionCall { } else if (Objects.equals(code, "0x02e33400")) { msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车辆属于黑名单内不能下发预约车"; title += "失败"; - } else if (Objects.equals(code, "0x00072003")) { + } else if (Objects.equals(code, "0x00072003")) { msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车牌格式不正确!"; title += "失败"; } else { @@ -1056,7 +1056,7 @@ public class HikvisionCall { } } - private void sendNoticeForWorker(String title, String rs, WorkerInfo workerInfo, int type, int operate) { + private void sendNoticeAndSetStatusForWorker(String title, String rs, WorkerInfo workerInfo, int type, int operate) { boolean callSuc = HikvisionUtil.isSuccess(rs); String msg = ""; String noticeType = "23"; @@ -1121,7 +1121,7 @@ public class HikvisionCall { } } - public void updateAllFailStatusIfNullByNow(String projectSn, Long whoId, Integer type, Date now) { + public void updateAllFailStatusIfNullByNow(String projectSn, Long whoId, Integer bigType, Date now) { xzHikvisionSyncMapper.update(null, new LambdaUpdateWrapper() .set(XzHikvisionSync::getIsSuccess, 0) .isNull(XzHikvisionSync::getIsSuccess) @@ -1129,7 +1129,7 @@ public class HikvisionCall { .eq(XzHikvisionSync::getWhoId, whoId) .eq(XzHikvisionSync::getCreateDate, now) ); - updateTotalStatus(projectSn, whoId, type, now); + updateTotalStatus(projectSn, whoId, bigType, now); } public void updateFailStatusByNow(String projectSn, Long whoId, Integer type, Date now, String deviceSn) { @@ -1172,7 +1172,7 @@ public class HikvisionCall { updateTotalStatus(projectSn, whoId, type, now); } - private void updateTotalStatus(String projectSn, Long whoId, Integer type, Date now) { + private void updateTotalStatus(String projectSn, Long whoId, Integer bigType, Date now) { List xzHikvisionSyncs = xzHikvisionSyncMapper.selectList(new LambdaQueryWrapper() .eq(XzHikvisionSync::getProjectSn, projectSn) .eq(XzHikvisionSync::getWhoId, whoId) @@ -1188,7 +1188,7 @@ public class HikvisionCall { } else { sendSuccessStatus = 3; } - if (type >= 4) { + if (bigType >= 4) { carInfoMapper.update(null, new LambdaUpdateWrapper() .eq(CarInfo::getId, whoId) .set(CarInfo::getSendSuccessStatus, sendSuccessStatus) @@ -1218,7 +1218,7 @@ public class HikvisionCall { jo.put("faceId", workerFaceId); jo.put("faceData", Base64Util.convertFileToBase64(PathUtil.reviseSlash(basePath + "/" + workerInfo.getFieldAcquisitionUrl()))); String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); - sendNoticeForWorker("更新人员照片到海康isc", rs, workerInfo, 2, 2); + sendNoticeAndSetStatusForWorker("更新人员照片到海康isc", rs, workerInfo, 2, 2); } else { addWorkerFace(workerInfo, project); } @@ -1241,7 +1241,7 @@ public class HikvisionCall { public void deleteWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { String rs = doDeleteWorkerFromHttp(workerInfo, project); - sendNoticeForWorker("删除人员到海康isc", rs, workerInfo, 1, 3); + sendNoticeAndSetStatusForWorker("删除人员到海康isc", rs, workerInfo, 1, 3); } public String doDeleteWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { @@ -1260,7 +1260,7 @@ public class HikvisionCall { if (CollUtil.isNotEmpty(workerFaceIds)) { for (String workerFaceId : workerFaceIds) { JSONObject rsJo = sendDeleteWorkerFace(project, workerFaceId); - sendNoticeForWorker("删除人员图片到海康isc", rsJo.toJSONString(), workerInfo, 2, 3); + sendNoticeAndSetStatusForWorker("删除人员图片到海康isc", rsJo.toJSONString(), workerInfo, 2, 3); } } } @@ -1369,7 +1369,6 @@ public class HikvisionCall { return; } if (carInfo.getIsBlack() == 0) { - //车辆布防 handleAlarmCar(project, carInfo); } @@ -1384,15 +1383,10 @@ public class HikvisionCall { deleteFixedCarForHikvision(carInfo, project); saveReservationCar(project, carInfo); } - - if (carInfo.getIsBlack() == 1) { - //车辆布防 - handleAlarmCar(project, carInfo); - } } /** - * 车辆布防 + * 车辆取消布防/布防 * * @param project * @param carInfo @@ -1416,20 +1410,20 @@ public class HikvisionCall { addJo.put("driverPhone", c.getDriverTelephone()); addJo.put("plateNo", carInfo.getCarNumber()); JSONObject rs = addAlarmCarForHttp(project, addJo); - sendNoticeForCarInfo("车辆布防(黑名单)到海康isc", rs.toJSONString(), carInfo, 7, null); + sendNoticeAndSetStatusForCarInfo("车辆布防(黑名单)到海康isc", rs.toJSONString(), carInfo, 7, null); } else { - sendNoticeForCarInfo("车辆取消布防(取消黑名单)到海康isc", null, carInfo, 7, null, true); + sendNoticeAndSetStatusForCarInfo("车辆取消布防(取消黑名单)到海康isc", null, carInfo, 7, null, true); } } else { if (carInfo.getIsBlack() == 1) { - sendNoticeForCarInfo("车辆布防(黑名单)到海康isc", null, carInfo, 7, null, true); + sendNoticeAndSetStatusForCarInfo("车辆布防(黑名单)到海康isc", null, carInfo, 7, null, true); } else { JSONObject joOne = listJa.getJSONObject(0); String alarmSyscode = joOne.getString("alarmSyscode"); JSONObject deleteJo = new JSONObject(); deleteJo.put("alarmSyscodes", alarmSyscode); JSONObject rs = this.deletionAlarmCarForHttp(project, deleteJo); - sendNoticeForCarInfo("车辆取消布防(取消黑名单)到海康isc", rs.toJSONString(), carInfo, 7, null); + sendNoticeAndSetStatusForCarInfo("车辆取消布防(取消黑名单)到海康isc", rs.toJSONString(), carInfo, 7, null); } } } else { @@ -1442,9 +1436,9 @@ public class HikvisionCall { private void failAlarmNotice(CarInfo carInfo) { if (carInfo.getIsBlack() == 1) { - sendNoticeForCarInfo("车辆布防(黑名单)到海康isc", new JSONObject().toJSONString(), carInfo, 7, null, false); + sendNoticeAndSetStatusForCarInfo("车辆布防(黑名单)到海康isc", new JSONObject().toJSONString(), carInfo, 7, null, false); } else { - sendNoticeForCarInfo("车辆取消布防(取消黑名单)到海康isc", new JSONObject().toJSONString(), carInfo, 7, null, false); + sendNoticeAndSetStatusForCarInfo("车辆取消布防(取消黑名单)到海康isc", new JSONObject().toJSONString(), carInfo, 7, null, false); } } @@ -1550,7 +1544,7 @@ public class HikvisionCall { ArrayList list = new ArrayList<>(); list.add(hikvisionCarInfo); String rs = HikvisionUtil.doPost(host, path, JSON.toJSONString(list), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); - sendNoticeForCarInfo("添加车辆白名单到海康isc", rs, carInfo, 4, 1); + sendNoticeAndSetStatusForCarInfo("添加车辆白名单到海康isc", rs, carInfo, 4, 1); } /** @@ -1683,7 +1677,7 @@ public class HikvisionCall { } if (!Objects.equals(carInfo.getCarNumber(), old.getCarNumber())) { //删除旧的车辆数据 - deleteCarInfoForHikvision(old); + deleteCarInfoForHikvision(old, false); } saveCarInfoFromHikvision(carInfo); } @@ -1701,7 +1695,7 @@ public class HikvisionCall { String host = "https://" + project.getArtemisConfigHost(); HikvisionCarInfo hikvisionCarInfo = getHikvisionCarInfo(carInfo); String rs = HikvisionUtil.doPost(host, path, JSON.toJSONString(hikvisionCarInfo), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); - sendNoticeForCarInfo("更新车辆白名单到海康isc", rs, carInfo, 4, 2); + sendNoticeAndSetStatusForCarInfo("更新车辆白名单到海康isc", rs, carInfo, 4, 2); } /** @@ -1739,8 +1733,9 @@ public class HikvisionCall { * 删除车辆 * * @param carInfo + * @param isSetBlack */ - public void deleteCarInfoForHikvision(CarInfo carInfo) throws Exception { + public void deleteCarInfoForHikvision(CarInfo carInfo, boolean isSetBlack) throws Exception { Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getProjectSn, carInfo.getProjectSn())); if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return; @@ -1751,7 +1746,7 @@ public class HikvisionCall { deleteReservationCarFromHttp(carInfo, project); CarInfo c = new CarInfo(); BeanUtil.copyProperties(carInfo, c); - c.setIsBlack(0); + c.setIsBlack(isSetBlack ? 1 : 0); handleAlarmCar(project, c); } @@ -1761,7 +1756,9 @@ public class HikvisionCall { if (oldCarInfo != null) { log.info("海康存在车辆,车牌号:{}", oldCarInfo.getString("plateNo")); String rs = deleteCarInfoByIdFromHttp(oldCarInfo.getString("vehicleId"), project); - sendNoticeForCarInfo("删除车辆白名单到海康isc", rs, carInfo, 4, 3); + sendNoticeAndSetStatusForCarInfo("删除车辆白名单到海康isc", rs, carInfo, 4, 3); + } else { + sendNoticeAndSetStatusForCarInfo("删除车辆白名单到海康isc", null, carInfo, 4, 3, true); } } @@ -1812,19 +1809,17 @@ public class HikvisionCall { final String path = ARTEMIS_PATH + "/api/pms/v1/parkingSpace/reservations/deletion"; String host = "https://" + project.getArtemisConfigHost(); JSONArray reservationCarInfoList = getReservationCarInfoList(carInfo, project); - if (reservationCarInfoList != null) { + if (CollUtil.isNotEmpty(reservationCarInfoList)) { for (int i = 0; i < reservationCarInfoList.size(); i++) { JSONObject jsonObject = reservationCarInfoList.getJSONObject(i); String reserveOrderNo = jsonObject.getString("reserveOrderNo"); JSONObject jsonObject1 = new JSONObject(); jsonObject1.put("reserveOrderNo", reserveOrderNo); String rs = HikvisionUtil.doPost(host, path, jsonObject1.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); - JSONObject rsJo = JSON.parseObject(rs); - String code = rsJo.getString("code"); - sendNoticeForCarInfo("取消车位预约到海康isc", rs, carInfo, 6, 3); + sendNoticeAndSetStatusForCarInfo("取消车位预约到海康isc", rs, carInfo, 6, 3); } } else { - updateSuccessStatusByNow(carInfo.getProjectSn(), carInfo.getId(), 6, 3, ThreadLocalUtil.getNotNull().getDate("now"), null); + sendNoticeAndSetStatusForCarInfo("取消车位预约到海康isc", null, carInfo, 6, 3, true); } } @@ -2201,7 +2196,7 @@ public class HikvisionCall { String host = "https://" + project.getArtemisConfigHost(); ParkReservation parkReservation = getParkReservation(project, carInfo); String rs = HikvisionUtil.doPost(host, path, JSON.toJSONString(parkReservation), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); - sendNoticeForCarInfo("添加预约车辆到海康isc", rs, carInfo, 6, 1); + sendNoticeAndSetStatusForCarInfo("添加预约车辆到海康isc", rs, carInfo, 6, 1); } private ParkReservation getParkReservation(Project project, CarInfo carInfo) throws Exception { @@ -2314,9 +2309,9 @@ public class HikvisionCall { jo.put("categoryCode", categoryCode); String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); if (Objects.equals(operation, 1)) { - sendNoticeForCarInfo("绑定" + FIXED_CAR_GROUP_NAME + "到海康isc", rs, carInfo, 5, 1); + sendNoticeAndSetStatusForCarInfo("绑定" + FIXED_CAR_GROUP_NAME + "到海康isc", rs, carInfo, 5, 1); } else if (Objects.equals(operation, 2)) { - sendNoticeForCarInfo("解绑" + FIXED_CAR_GROUP_NAME + "到海康isc", rs, carInfo, 5, 3); + sendNoticeAndSetStatusForCarInfo("解绑" + FIXED_CAR_GROUP_NAME + "到海康isc", rs, carInfo, 5, 3); } } diff --git a/src/main/java/com/zhgd/xmgl/modules/car/service/ICarInfoService.java b/src/main/java/com/zhgd/xmgl/modules/car/service/ICarInfoService.java index 622f94f42..c370304ee 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/service/ICarInfoService.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/service/ICarInfoService.java @@ -23,7 +23,7 @@ public interface ICarInfoService extends IService { void addCarInfo(CarInfo carInfo); - void deleteOrUpdateCar(Project project, CarInfo carInfo); + void deleteOrUpdateCar(Project project, CarInfo car, boolean mustUpdate); void editCarInfo(CarInfo carInfo); diff --git a/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java index 027ba8d06..5d0e01fbe 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java @@ -88,9 +88,9 @@ public class CarInfoServiceImpl extends ServiceImpl impl QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(CarInfo::getProjectSn, c.getProjectSn()) .eq(CarInfo::getCarNumber, c.getCarNumber()); - CarInfo carInfo = carInfoMapper.selectOne(queryWrapper); - if (carInfo != null) { - if (Objects.equals(carInfo.getCarModuleType(), 1)) { + CarInfo old = carInfoMapper.selectOne(queryWrapper); + if (old != null) { + if (Objects.equals(old.getCarModuleType(), 1)) { throw new OpenAlertException("该车辆已添加,请勿重复添加!"); } addCarInfoForApprovalFlowIf(c); @@ -99,12 +99,24 @@ public class CarInfoServiceImpl extends ServiceImpl impl if (project == null) { return; } - if (DateUtil.compare(carInfo.getReserveStartTime(), now) < 0 && DateUtil.compare(carInfo.getReserveEndTime(), now) > 0) { - log.info("车辆在有效期内,不需要更新,车牌号:{}", c.getCarNumber()); - asyncHikvision.handleAlarmCarForHikvision(carInfo); - return; + carInfoMapper.update(null, new LambdaUpdateWrapper() + .set(CarInfo::getIsBlack, c.getIsBlack()) + .eq(CarInfo::getId, old.getId()) + ); + old.setIsBlack(c.getIsBlack()); + if (c.getIsBlack() == 1) { + asyncHikvision.deleteCarInfoForHikvision(old, true); + } else { + if (old.getIsBlack() == 1) { + deleteOrUpdateCar(project, old, true); + } else { + if (DateUtil.compare(old.getReserveStartTime(), now) < 0 && DateUtil.compare(old.getReserveEndTime(), now) > 0) { + log.info("车辆在有效期内,不需要更新,车牌号:{}", c.getCarNumber()); + } else { + deleteOrUpdateCar(project, old, false); + } + } } - deleteOrUpdateCar(project, carInfo); } else { carInfoMapper.insert(c); addCarInfoForApprovalFlowIf(c); @@ -128,6 +140,7 @@ public class CarInfoServiceImpl extends ServiceImpl impl if (isReservationType(c)) { CarInfoApprovalFlow flow = new CarInfoApprovalFlow(); BeanUtil.copyProperties(c, flow); + flow.setIsBlack(0); carInfoApprovalFlowMapper.insert(flow); } } @@ -137,9 +150,10 @@ public class CarInfoServiceImpl extends ServiceImpl impl * * @param project * @param car + * @param mustUpdate */ @Override - public void deleteOrUpdateCar(Project project, CarInfo car) { + public void deleteOrUpdateCar(Project project, CarInfo car, boolean mustUpdate) { log.info("删除/更新过期或未来的车辆,并下发新的预约时间的车辆到海康,车牌号:{}", car.getCarNumber()); CarInfoApprovalFlow fit = carInfoApprovalFlowMapper.selectOne(new LambdaQueryWrapper() .eq(CarInfoApprovalFlow::getCarNumber, car.getCarNumber()) @@ -150,7 +164,7 @@ public class CarInfoServiceImpl extends ServiceImpl impl ); if (fit != null) { boolean notEqTime = DateUtil.compare(car.getReserveStartTime(), fit.getReserveStartTime()) != 0 || DateUtil.compare(car.getReserveEndTime(), fit.getReserveEndTime()) != 0; - if (notEqTime) { + if (notEqTime || mustUpdate) { car.setReserveEndTime(fit.getReserveEndTime()); car.setReserveStartTime(fit.getReserveStartTime()); this.editCarInfo(car); @@ -276,14 +290,14 @@ public class CarInfoServiceImpl extends ServiceImpl impl } else { deleteFromApprovalFlowIf(carInfo); Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getSyncHikvision, 1)); - deleteOrUpdateCar(project, carInfo); + deleteOrUpdateCar(project, carInfo, false); } } private void deleteCar(CarInfo carInfo) { carInfoMapper.deleteById(carInfo.getId()); //同步海康 - asyncHikvision.deleteCarInfoForHikvision(carInfo); + asyncHikvision.deleteCarInfoForHikvision(carInfo, false); } private void deleteFromApprovalFlowIf(CarInfo carInfo) { 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 802cbc4bf..0817d69e9 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 @@ -193,7 +193,7 @@ public class XzHikvisionSyncServiceImpl extends ServiceImpl() - .lt(CarInfoApprovalFlow::getReserveEndTime, DateUtil.now())); + .lt(CarInfoApprovalFlow::getReserveEndTime, DateUtil.now()) + .eq(CarInfoApprovalFlow::getIsBlack, 0) + ); List projects = projectMapper.selectList(new LambdaQueryWrapper().eq(Project::getSyncHikvision, 1)); for (Project project : projects) { //过期或者未来车 List cars = carInfoMapper.selectList(new LambdaQueryWrapper() .ne(CarInfo::getCarModuleType, 1) + .eq(CarInfo::getIsBlack, 0) .eq(CarInfo::getProjectSn, project.getProjectSn()) .and(w -> w.lt(CarInfo::getReserveEndTime, DateUtil.now()).or().gt(CarInfo::getReserveStartTime, DateUtil.now())) ); @@ -54,7 +57,7 @@ public class CarInfoTask { return; } for (CarInfo carInfo : cars) { - carInfoService.deleteOrUpdateCar(project, carInfo); + carInfoService.deleteOrUpdateCar(project, carInfo, false); } } diff --git a/src/main/java/com/zhgd/xmgl/task/ExamTask.java b/src/main/java/com/zhgd/xmgl/task/ExamTask.java index 18007dd2f..906cb4375 100644 --- a/src/main/java/com/zhgd/xmgl/task/ExamTask.java +++ b/src/main/java/com/zhgd/xmgl/task/ExamTask.java @@ -90,7 +90,7 @@ public class ExamTask { carInfoService.removeByIds(carInfos.stream().map(c -> c.getId()).collect(Collectors.toSet())); for (CarInfo carInfo : carInfos) { //同步海康 - asyncHikvision.deleteCarInfoForHikvision(carInfo); + asyncHikvision.deleteCarInfoForHikvision(carInfo, false); } } }