diff --git a/src/main/java/com/zhgd/mybatis/DataScopeInterceptor.java b/src/main/java/com/zhgd/mybatis/DataScopeInterceptor.java index 5bef6ecf0..9a6791a0c 100644 --- a/src/main/java/com/zhgd/mybatis/DataScopeInterceptor.java +++ b/src/main/java/com/zhgd/mybatis/DataScopeInterceptor.java @@ -78,6 +78,7 @@ public class DataScopeInterceptor extends JsqlParserSupport implements InnerInte sb.append(".java:"); sb.append(e.getLineNumber()); sb.append(")"); + sb.append(" \r\n "); sb.append(" > "); } } diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 369a830cd..af8ca7daa 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -650,7 +650,7 @@ public class HikvisionCall { for (Project project : projects) { String projectParkCode = null; try { - projectParkCode = getProjectParkCode(project); + projectParkCode = HikvisionUtil.getProjectParkCode(project); } catch (Exception e) { log.error("err:", e); return; @@ -974,8 +974,7 @@ public class HikvisionCall { final String path = ARTEMIS_PATH + "/api/resource/v1/person/single/update"; String host = "https://" + project.getArtemisConfigHost(); String body = getWorkerJson(workerInfo); - String rs = HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); - return rs; + return HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } /** @@ -1099,14 +1098,30 @@ public class HikvisionCall { String msg = ""; String type = "25"; if (success) { - msg = "同步成功,组织名称:" + orgName; - title += "成功"; + JSONObject jo = JSONObject.parseObject(rs); + 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 = "同步失败,组织名称:" + orgName + "。失败原因:上级组织不存在"; + title += "失败"; + success = false; + } else { + msg = "同步失败,组织名称:" + orgName + "。失败原因:下发异常"; + title += "失败"; + success = false; + } + } else { + msg = "同步成功,组织名称:" + orgName; + title += "成功"; + } } else { msg = "同步失败,组织名称:" + orgName + "。失败原因:" + rs; title += "失败"; + success = false; } if (success) { - xzHikvisionCompareDataService.compareRetrySuc(); + xzHikvisionCompareDataService.compareRetrySuccess(); } else { xzHikvisionCompareDataService.compareRetryFail(); } @@ -1172,8 +1187,10 @@ public class HikvisionCall { } if (success) { updateSuccessStatusByNow(workerInfo.getProjectSn(), workerInfo.getId(), type, operate, AsyncHikvision.getSyncTime(), null); + xzHikvisionCompareDataService.compareRetrySuccess(); } else { updateFailStatusByNow(workerInfo.getProjectSn(), workerInfo.getId(), type, operate, AsyncHikvision.getSyncTime(), null); + xzHikvisionCompareDataService.compareRetryFail(); } if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) { noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), msg, title, noticeType); @@ -1577,7 +1594,7 @@ public class HikvisionCall { @NotNull private String getCategoryCode(Project project) throws Exception { //绑定固定的群组 - JSONArray ja = HikvisionUtil.queryCategory(project); + JSONArray ja = HikvisionUtil.getCategoryList(project); return getFixedCarGroupName(ja); } @@ -1804,7 +1821,7 @@ public class HikvisionCall { JSONObject o1 = null; int pageNo = 0; do { - JSONObject jo = HikvisionUtil.getCarInfoListByCarNumber(carNumber, project, ++pageNo); + JSONObject jo = HikvisionUtil.getFixCarListByCarNumber(carNumber, project, ++pageNo); if (HikvisionUtil.isSuccess(jo)) { JSONObject dataJo = HikvisionUtil.getJSONObjectData(jo); total = dataJo.getInteger("total"); @@ -1846,7 +1863,7 @@ public class HikvisionCall { final String ARTEMIS_PATH = "/artemis"; final String path = ARTEMIS_PATH + "/api/pms/v1/parkingSpace/reservations/deletion"; String host = "https://" + project.getArtemisConfigHost(); - JSONArray reservationCarInfoList = getReservationCarInfoList(carInfo.getCarNumber(), project); + JSONArray reservationCarInfoList = HikvisionUtil.getReservationCarInfoDataList(carInfo.getCarNumber(), project); if (CollUtil.isNotEmpty(reservationCarInfoList)) { for (int i = 0; i < reservationCarInfoList.size(); i++) { JSONObject jsonObject = reservationCarInfoList.getJSONObject(i); @@ -1861,38 +1878,6 @@ public class HikvisionCall { } } - /** - * 查询预约记录v2 - * - * @param carNumber - * @param project - */ - public JSONArray getReservationCarInfoList(String carNumber, Project project) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/pms/v2/reserveRecord/page"; - String host = "https://" + project.getArtemisConfigHost(); - HikvisionReservationCarInfo info = getHikvisionReservationCarInfoObj(carNumber, project); - String rs = HikvisionUtil.doPost(host, path, JSON.toJSONString(info), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); - JSONObject jsonObjectData = HikvisionUtil.getJSONObjectData(rs); - return jsonObjectData.getJSONArray("list"); - } - - private HikvisionReservationCarInfo getHikvisionReservationCarInfoObj(String carNumber, Project project) throws Exception { - String projectParkCode = getProjectParkCode(project); - HikvisionReservationCarInfo hikvisionReservationCarInfo = new HikvisionReservationCarInfo(); - hikvisionReservationCarInfo.setParkSyscode(projectParkCode); - hikvisionReservationCarInfo.setPlateNo(carNumber); - hikvisionReservationCarInfo.setResvState(0L); - //hikvisionReservationCarInfo.setResvWay(); - //hikvisionReservationCarInfo.setAllowTimes(); - //hikvisionReservationCarInfo.setIsCharge(); - //hikvisionReservationCarInfo.setStartTime(); - //hikvisionReservationCarInfo.setEndTime(); - hikvisionReservationCarInfo.setPageNo(1L); - hikvisionReservationCarInfo.setPageSize(999L); - return hikvisionReservationCarInfo; - } - /** * 添加组织 * @@ -2164,23 +2149,6 @@ public class HikvisionCall { return jo.getJSONArray("list").size() > 0; } - /** - * 获取停车库列表 - * - * @param project - */ - public JSONArray getParkList(Project project) throws Exception { - if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { - return null; - } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v1/park/parkList"; - String host = "https://" + project.getArtemisConfigHost(); - JSONObject jo = new JSONObject(); - String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); - return HikvisionUtil.getJSONArrayData(rs); - } - private HikvisionOrganization getHikvisionOrganization(Project project) { HikvisionOrganization hikvisionOrganization = new HikvisionOrganization(); hikvisionOrganization.setClientId(null); @@ -2213,7 +2181,7 @@ public class HikvisionCall { */ private void cancelCharge(Project project, CarInfo carInfo) throws Exception { //取消车辆包期 - String parkIndexCode = getProjectParkCode(project); + String parkIndexCode = HikvisionUtil.getProjectParkCode(project); chargeDeletion(project, new ChargeDeletionParam(parkIndexCode, carInfo.getCarNumber())); } @@ -2227,7 +2195,7 @@ public class HikvisionCall { } private ParkReservation getParkReservation(Project project, CarInfo carInfo) throws Exception { - String parkIndexCode = getProjectParkCode(project); + String parkIndexCode = HikvisionUtil.getProjectParkCode(project); WorkerInfo workerInfo = workerInfoMapper.selectById(carInfo.getDriverWorkerId()); ParkReservation parkReservation = new ParkReservation(); parkReservation.setParkSyscode(parkIndexCode); @@ -2245,28 +2213,6 @@ public class HikvisionCall { return parkReservation; } - /** - * 获取项目名称的停车场的parkIndexCode,没有一样名字的就取第一个停车场 - * - * @param project - * @return - */ - public String getProjectParkCode(Project project) throws Exception { - JSONArray parkList = getParkList(project); - if (parkList != null && parkList.size() > 0) { - for (int i = 0; i < parkList.size(); i++) { - JSONObject jo = parkList.getJSONObject(i); - if (Objects.equals(jo.getString("parkName"), project.getProjectName())) { - return jo.getString("parkIndexCode"); - } - } - //没有一样名字的就取第一个停车场 - return parkList.getJSONObject(0).getString("parkIndexCode"); - } else { - throw new OpenPromptException("未查询到停车场信息"); - } - } - public String saveToLocal(String url) { return UrlUtil.saveToLocal(url, basePath, IdUtil.simpleUUID() + ".png"); diff --git a/src/main/java/com/zhgd/xmgl/modules/xz.security/entity/WorkerAccessRecord.java b/src/main/java/com/zhgd/xmgl/modules/xz.security/entity/WorkerAccessRecord.java index af66ef53f..4c567aeb5 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz.security/entity/WorkerAccessRecord.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz.security/entity/WorkerAccessRecord.java @@ -69,4 +69,9 @@ public class WorkerAccessRecord implements Serializable { @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private java.util.Date updateTime; + @ApiModelProperty(value = "准入状态:1允许入场2拒绝入场") + private Integer accessStatus; + @ApiModelProperty(value = "扫码人员的账号名") + private java.lang.String scanQrCoder; + } 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 3670639ba..bda13ebee 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 @@ -139,7 +139,7 @@ public class XzHikvisionCompareDataController { @ApiImplicitParam(name = "type", value = "1人员2车辆", paramType = "body", required = true, dataType = "Integer"), }) @PostMapping(value = "/manualCompareData") - public Result manualCompareData(@ApiIgnore @RequestBody Map param) { + public Result manualCompareData(@ApiIgnore @RequestBody Map param) throws Exception { 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 13545a306..f5b2e4d3c 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 @@ -34,7 +34,7 @@ public interface IXzHikvisionCompareDataService extends IService param); - void manualCompareData(Map param); + void manualCompareData(Map param) throws Exception; void deleteAllCompareData(Project project); } 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 b1f96c3c9..4a166ee12 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 @@ -18,6 +18,7 @@ import com.zhgd.xmgl.async.AsyncHikvision; import com.zhgd.xmgl.async.AsyncXzHikvisionCompareData; import com.zhgd.xmgl.call.HikvisionCall; import com.zhgd.xmgl.constant.Cts; +import com.zhgd.xmgl.modules.basicdata.service.impl.NoticeServiceImpl; import com.zhgd.xmgl.modules.car.entity.CarInfo; import com.zhgd.xmgl.modules.car.service.ICarInfoService; import com.zhgd.xmgl.modules.project.entity.Project; @@ -34,6 +35,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.security.util.SecurityUtils; import com.zhgd.xmgl.task.HikvisionTask; import com.zhgd.xmgl.util.*; import lombok.extern.slf4j.Slf4j; @@ -85,6 +87,9 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl param) { + public void manualCompareData(Map param) throws Exception { String projectSn = MapUtils.getString(param, Cts.PROJECT_SN); - try { - xzHikvisionCompareDataService.manualCompareDataAsync(param, projectSn); - } catch (Exception e) { - log.error("", e); - addExceptionShowIfNull(projectSn); - } + xzHikvisionCompareDataService.manualCompareDataAsync(param, projectSn); } @Async("syncXzHikvisionCompareData") public void manualCompareDataAsync(Map param, String projectSn) throws Exception { - Integer type = MapUtils.getInteger(param, "type"); - ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(projectSn); - if (Objects.equals(type, 1)) { - //人员 - xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper() - .eq(XzHikvisionCompareData::getProjectSn, projectSn) - .ne(XzHikvisionCompareData::getType, 4) - ); - hikvisionTask.compareHikvisionForEnterpriseEtc(projectInfoBySn); - } else if (Objects.equals(type, 2)) { - //车辆 - xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper() - .eq(XzHikvisionCompareData::getProjectSn, projectSn) - .eq(XzHikvisionCompareData::getType, 4) - ); - hikvisionTask.compareHikvisionForCar(projectInfoBySn); + try { + Integer type = MapUtils.getInteger(param, "type"); + ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(projectSn); + if (Objects.equals(type, 1)) { + //人员 + xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper() + .eq(XzHikvisionCompareData::getProjectSn, projectSn) + .ne(XzHikvisionCompareData::getType, 4) + ); + hikvisionTask.compareHikvisionForEnterpriseEtc(projectInfoBySn); + } else if (Objects.equals(type, 2)) { + //车辆 + xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper() + .eq(XzHikvisionCompareData::getProjectSn, projectSn) + .eq(XzHikvisionCompareData::getType, 4) + ); + hikvisionTask.compareHikvisionForCar(projectInfoBySn); + } + } catch (Exception e) { + log.error("", e); + addExceptionShowIfNull(projectSn); + } finally { + // 手动执行比对数据完成 + noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), "手动校验数据完成", "手动校验数据完成", "1"); } } diff --git a/src/main/java/com/zhgd/xmgl/task/HikvisionTask.java b/src/main/java/com/zhgd/xmgl/task/HikvisionTask.java index f7c4a6249..256d9527b 100644 --- a/src/main/java/com/zhgd/xmgl/task/HikvisionTask.java +++ b/src/main/java/com/zhgd/xmgl/task/HikvisionTask.java @@ -276,7 +276,7 @@ public class HikvisionTask { public void compareHikvisionForReservationCar(Project project) throws Exception { JSONObject param = new JSONObject(); HikvisionUtil.addPageParamIfAbsent(param); - JSONArray listJa = hikvisionCall.getReservationCarInfoList(null, project); + JSONArray listJa = HikvisionUtil.getReservationCarInfoDataList(null, project); List carInfoList = carInfoService.selectCarList(new MapBuilder() .put(Cts.PROJECT_SN, project.getProjectSn()) .put(Cts.RESERVATION_TYPE, 1) diff --git a/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java b/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java index c00a15bfa..6dc95e743 100644 --- a/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java +++ b/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java @@ -9,6 +9,8 @@ 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.jeecg.common.execption.OpenPromptException; +import com.zhgd.xmgl.base.HikvisionReservationCarInfo; import com.zhgd.xmgl.modules.project.entity.Project; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -169,10 +171,31 @@ public class HikvisionUtil { return doPostRtObj(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } + /** + * 查询车辆列表v2-固定车辆 + * + * @param carNumber + * @param project + * @param pageNo + * @return + * @throws Exception + */ + public static JSONObject getFixCarListByCarNumber(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("pageNo", pageNo); + jo.put("pageSize", 1000); + return doPostRtObj(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); + } + /** * 查询车辆分类 */ - public static JSONArray queryCategory(Project project) throws Exception { + public static JSONArray getCategoryList(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(); @@ -248,25 +271,84 @@ public class HikvisionUtil { return doPostRtObj(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } + /** + * 获取停车库列表 + * + * @param project + */ + public static JSONArray getParkList(Project project) throws Exception { + if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { + return null; + } + final String ARTEMIS_PATH = "/artemis"; + final String path = ARTEMIS_PATH + "/api/resource/v1/park/parkList"; + String host = "https://" + project.getArtemisConfigHost(); + JSONObject jo = new JSONObject(); + String rs = doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); + return getJSONArrayData(rs); + } /** - * 查询车辆列表v2 + * 获取项目名称的停车场的parkIndexCode,没有一样名字的就取第一个停车场 + * + * @param project + * @return + */ + public static String getProjectParkCode(Project project) throws Exception { + JSONArray parkList = getParkList(project); + if (parkList != null && parkList.size() > 0) { + for (int i = 0; i < parkList.size(); i++) { + JSONObject jo = parkList.getJSONObject(i); + if (Objects.equals(jo.getString("parkName"), project.getProjectName())) { + return jo.getString("parkIndexCode"); + } + } + //没有一样名字的就取第一个停车场 + return parkList.getJSONObject(0).getString("parkIndexCode"); + } else { + throw new OpenPromptException("未查询到停车场信息"); + } + } + + /** + * 查询预约记录v2 * * @param carNumber * @param project - * @param pageNo - * @return - * @throws Exception */ - public static JSONObject getCarInfoListByCarNumber(String carNumber, Project project, Integer pageNo) throws Exception { + public static JSONObject getReservationCarInfoList(String carNumber, Project project) throws Exception { final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v2/vehicle/advance/vehicleList"; + final String path = ARTEMIS_PATH + "/api/pms/v2/reserveRecord/page"; String host = "https://" + project.getArtemisConfigHost(); - JSONObject jo = new JSONObject(); - //模糊查询 - jo.put("plateNo", carNumber); - jo.put("pageNo", pageNo); - jo.put("pageSize", 1000); - return doPostRtObj(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); + HikvisionReservationCarInfo info = getHikvisionReservationCarInfoObj(carNumber, project); + return doPostRtObj(host, path, JSON.toJSONString(info), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); + } + + /** + * 查询预约记录v2 + * + * @param carNumber + * @param project + */ + public static JSONArray getReservationCarInfoDataList(String carNumber, Project project) throws Exception { + JSONObject jo = getReservationCarInfoList(carNumber, project); + return getJSONObjectData(jo).getJSONArray("list"); + } + + + private static HikvisionReservationCarInfo getHikvisionReservationCarInfoObj(String carNumber, Project project) throws Exception { + String projectParkCode = HikvisionUtil.getProjectParkCode(project); + HikvisionReservationCarInfo hikvisionReservationCarInfo = new HikvisionReservationCarInfo(); + hikvisionReservationCarInfo.setParkSyscode(projectParkCode); + hikvisionReservationCarInfo.setPlateNo(carNumber); + hikvisionReservationCarInfo.setResvState(0L); + //hikvisionReservationCarInfo.setResvWay(); + //hikvisionReservationCarInfo.setAllowTimes(); + //hikvisionReservationCarInfo.setIsCharge(); + //hikvisionReservationCarInfo.setStartTime(); + //hikvisionReservationCarInfo.setEndTime(); + hikvisionReservationCarInfo.setPageNo(1L); + hikvisionReservationCarInfo.setPageSize(999L); + return hikvisionReservationCarInfo; } }