bug修复

This commit is contained in:
guoshengxiong 2024-06-04 20:51:51 +08:00
parent 64608c6a9b
commit 37e384bb93
8 changed files with 222 additions and 125 deletions

View File

@ -78,6 +78,7 @@ public class DataScopeInterceptor extends JsqlParserSupport implements InnerInte
sb.append(".java:"); sb.append(".java:");
sb.append(e.getLineNumber()); sb.append(e.getLineNumber());
sb.append(")"); sb.append(")");
sb.append(" \r\n ");
sb.append(" > "); sb.append(" > ");
} }
} }

View File

@ -650,7 +650,7 @@ public class HikvisionCall {
for (Project project : projects) { for (Project project : projects) {
String projectParkCode = null; String projectParkCode = null;
try { try {
projectParkCode = getProjectParkCode(project); projectParkCode = HikvisionUtil.getProjectParkCode(project);
} catch (Exception e) { } catch (Exception e) {
log.error("err:", e); log.error("err:", e);
return; return;
@ -974,8 +974,7 @@ public class HikvisionCall {
final String path = ARTEMIS_PATH + "/api/resource/v1/person/single/update"; final String path = ARTEMIS_PATH + "/api/resource/v1/person/single/update";
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
String body = getWorkerJson(workerInfo); String body = getWorkerJson(workerInfo);
String rs = HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); return HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
return rs;
} }
/** /**
@ -1099,14 +1098,30 @@ public class HikvisionCall {
String msg = ""; String msg = "";
String type = "25"; String type = "25";
if (success) { if (success) {
JSONObject jo = JSONObject.parseObject(rs);
JSONObject dataJo = jo.getJSONObject("data");
Optional<JSONArray> 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; msg = "同步成功,组织名称:" + orgName;
title += "成功"; title += "成功";
}
} else { } else {
msg = "同步失败,组织名称:" + orgName + "。失败原因:" + rs; msg = "同步失败,组织名称:" + orgName + "。失败原因:" + rs;
title += "失败"; title += "失败";
success = false;
} }
if (success) { if (success) {
xzHikvisionCompareDataService.compareRetrySuc(); xzHikvisionCompareDataService.compareRetrySuccess();
} else { } else {
xzHikvisionCompareDataService.compareRetryFail(); xzHikvisionCompareDataService.compareRetryFail();
} }
@ -1172,8 +1187,10 @@ public class HikvisionCall {
} }
if (success) { if (success) {
updateSuccessStatusByNow(workerInfo.getProjectSn(), workerInfo.getId(), type, operate, AsyncHikvision.getSyncTime(), null); updateSuccessStatusByNow(workerInfo.getProjectSn(), workerInfo.getId(), type, operate, AsyncHikvision.getSyncTime(), null);
xzHikvisionCompareDataService.compareRetrySuccess();
} else { } else {
updateFailStatusByNow(workerInfo.getProjectSn(), workerInfo.getId(), type, operate, AsyncHikvision.getSyncTime(), null); updateFailStatusByNow(workerInfo.getProjectSn(), workerInfo.getId(), type, operate, AsyncHikvision.getSyncTime(), null);
xzHikvisionCompareDataService.compareRetryFail();
} }
if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) { if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) {
noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), msg, title, noticeType); noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), msg, title, noticeType);
@ -1577,7 +1594,7 @@ public class HikvisionCall {
@NotNull @NotNull
private String getCategoryCode(Project project) throws Exception { private String getCategoryCode(Project project) throws Exception {
//绑定固定的群组 //绑定固定的群组
JSONArray ja = HikvisionUtil.queryCategory(project); JSONArray ja = HikvisionUtil.getCategoryList(project);
return getFixedCarGroupName(ja); return getFixedCarGroupName(ja);
} }
@ -1804,7 +1821,7 @@ public class HikvisionCall {
JSONObject o1 = null; JSONObject o1 = null;
int pageNo = 0; int pageNo = 0;
do { do {
JSONObject jo = HikvisionUtil.getCarInfoListByCarNumber(carNumber, project, ++pageNo); JSONObject jo = HikvisionUtil.getFixCarListByCarNumber(carNumber, project, ++pageNo);
if (HikvisionUtil.isSuccess(jo)) { if (HikvisionUtil.isSuccess(jo)) {
JSONObject dataJo = HikvisionUtil.getJSONObjectData(jo); JSONObject dataJo = HikvisionUtil.getJSONObjectData(jo);
total = dataJo.getInteger("total"); total = dataJo.getInteger("total");
@ -1846,7 +1863,7 @@ public class HikvisionCall {
final String ARTEMIS_PATH = "/artemis"; final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/parkingSpace/reservations/deletion"; final String path = ARTEMIS_PATH + "/api/pms/v1/parkingSpace/reservations/deletion";
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
JSONArray reservationCarInfoList = getReservationCarInfoList(carInfo.getCarNumber(), project); JSONArray reservationCarInfoList = HikvisionUtil.getReservationCarInfoDataList(carInfo.getCarNumber(), project);
if (CollUtil.isNotEmpty(reservationCarInfoList)) { if (CollUtil.isNotEmpty(reservationCarInfoList)) {
for (int i = 0; i < reservationCarInfoList.size(); i++) { for (int i = 0; i < reservationCarInfoList.size(); i++) {
JSONObject jsonObject = reservationCarInfoList.getJSONObject(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; 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) { private HikvisionOrganization getHikvisionOrganization(Project project) {
HikvisionOrganization hikvisionOrganization = new HikvisionOrganization(); HikvisionOrganization hikvisionOrganization = new HikvisionOrganization();
hikvisionOrganization.setClientId(null); hikvisionOrganization.setClientId(null);
@ -2213,7 +2181,7 @@ public class HikvisionCall {
*/ */
private void cancelCharge(Project project, CarInfo carInfo) throws Exception { 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())); chargeDeletion(project, new ChargeDeletionParam(parkIndexCode, carInfo.getCarNumber()));
} }
@ -2227,7 +2195,7 @@ public class HikvisionCall {
} }
private ParkReservation getParkReservation(Project project, CarInfo carInfo) throws Exception { private ParkReservation getParkReservation(Project project, CarInfo carInfo) throws Exception {
String parkIndexCode = getProjectParkCode(project); String parkIndexCode = HikvisionUtil.getProjectParkCode(project);
WorkerInfo workerInfo = workerInfoMapper.selectById(carInfo.getDriverWorkerId()); WorkerInfo workerInfo = workerInfoMapper.selectById(carInfo.getDriverWorkerId());
ParkReservation parkReservation = new ParkReservation(); ParkReservation parkReservation = new ParkReservation();
parkReservation.setParkSyscode(parkIndexCode); parkReservation.setParkSyscode(parkIndexCode);
@ -2245,28 +2213,6 @@ public class HikvisionCall {
return parkReservation; 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) { public String saveToLocal(String url) {
return UrlUtil.saveToLocal(url, basePath, IdUtil.simpleUUID() + ".png"); return UrlUtil.saveToLocal(url, basePath, IdUtil.simpleUUID() + ".png");

View File

@ -69,4 +69,9 @@ public class WorkerAccessRecord implements Serializable {
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private java.util.Date updateTime; private java.util.Date updateTime;
@ApiModelProperty(value = "准入状态:1允许入场2拒绝入场")
private Integer accessStatus;
@ApiModelProperty(value = "扫码人员的账号名")
private java.lang.String scanQrCoder;
} }

View File

@ -139,7 +139,7 @@ public class XzHikvisionCompareDataController {
@ApiImplicitParam(name = "type", value = "1人员2车辆", paramType = "body", required = true, dataType = "Integer"), @ApiImplicitParam(name = "type", value = "1人员2车辆", paramType = "body", required = true, dataType = "Integer"),
}) })
@PostMapping(value = "/manualCompareData") @PostMapping(value = "/manualCompareData")
public Result manualCompareData(@ApiIgnore @RequestBody Map<String ,Object> param) { public Result manualCompareData(@ApiIgnore @RequestBody Map<String, Object> param) throws Exception {
xzHikvisionCompareDataService.manualCompareData(param); xzHikvisionCompareDataService.manualCompareData(param);
return Result.ok("已在后台校验中"); return Result.ok("已在后台校验中");
} }

View File

@ -34,7 +34,7 @@ public interface IXzHikvisionCompareDataService extends IService<XzHikvisionComp
void compareRetryFail(); void compareRetryFail();
void compareRetrySuc(); void compareRetrySuccess();
void addCompareDataForEnterprise(Project project, String orgName, int existIsc, int existMyPlatform, String uniqueId); void addCompareDataForEnterprise(Project project, String orgName, int existIsc, int existMyPlatform, String uniqueId);
@ -59,7 +59,7 @@ public interface IXzHikvisionCompareDataService extends IService<XzHikvisionComp
JSONObject checkCompareDataException(Map<String, Object> param); JSONObject checkCompareDataException(Map<String, Object> param);
void manualCompareData(Map<String, Object> param); void manualCompareData(Map<String, Object> param) throws Exception;
void deleteAllCompareData(Project project); void deleteAllCompareData(Project project);
} }

View File

@ -18,6 +18,7 @@ import com.zhgd.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.async.AsyncXzHikvisionCompareData; import com.zhgd.xmgl.async.AsyncXzHikvisionCompareData;
import com.zhgd.xmgl.call.HikvisionCall; import com.zhgd.xmgl.call.HikvisionCall;
import com.zhgd.xmgl.constant.Cts; 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.entity.CarInfo;
import com.zhgd.xmgl.modules.car.service.ICarInfoService; import com.zhgd.xmgl.modules.car.service.ICarInfoService;
import com.zhgd.xmgl.modules.project.entity.Project; 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.entity.XzHikvisionCompareData;
import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionCompareDataMapper; import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionCompareDataMapper;
import com.zhgd.xmgl.modules.xz.service.IXzHikvisionCompareDataService; 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.task.HikvisionTask;
import com.zhgd.xmgl.util.*; import com.zhgd.xmgl.util.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -85,6 +87,9 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
private AsyncHikvision asyncHikvision; private AsyncHikvision asyncHikvision;
@Lazy @Lazy
@Autowired @Autowired
private NoticeServiceImpl noticeService;
@Lazy
@Autowired
private HikvisionCall hikvisionCall; private HikvisionCall hikvisionCall;
@Lazy @Lazy
@Autowired @Autowired
@ -320,23 +325,32 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
} }
} }
private void syncCar(XzHikvisionCompareData data) throws Exception { private void syncCar(XzHikvisionCompareData data) throws Exception {
ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(data.getProjectSn()); ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(data.getProjectSn());
CarInfo carInfo = carInfoService.queryById(data.getUniqueId()); CarInfo carInfo = carInfoService.queryById(data.getUniqueId());
Boolean existIsc = null;
if (data.getExistIsc() == 1 && data.getExistMyPlatform() == 0) { if (data.getExistIsc() == 1 && data.getExistMyPlatform() == 0) {
//查询id是否存在平台存在就更新不存在就删除 //查询id是否存在平台存在就更新不存在就删除
if (carInfo != null) { if (carInfo != null) {
//同步海康 //同步海康
asyncHikvision.editCarInfoForHikvision(carInfo, carInfo); asyncHikvision.editCarInfoForHikvision(carInfo, carInfo);
existIsc = true;
} else { } else {
carInfo = new CarInfo(); carInfo = new CarInfo();
carInfo.setCarNumber(data.getCarNumber()); carInfo.setCarNumber(data.getCarNumber());
carInfo.setProjectSn(data.getProjectSn());
asyncHikvision.deleteCarInfoForHikvision(carInfo, false); asyncHikvision.deleteCarInfoForHikvision(carInfo, false);
existIsc = false;
} }
compareRetrySuccess(projectInfoBySn, carInfo, existIsc);
} else if (data.getExistIsc() == 0 && data.getExistMyPlatform() == 1) { } else if (data.getExistIsc() == 0 && data.getExistMyPlatform() == 1) {
//查询id是否存在isc存在就更新不存在就新增 //查询id是否存在isc存在就更新不存在就新增
JSONObject rtJo = HikvisionUtil.getCarInfoListByCarNumber(data.getCarNumber(), projectInfoBySn, 1); JSONObject rtJo;
if (Objects.equals(carInfo.getCarModuleType(), 1)) {
rtJo = HikvisionUtil.getFixCarListByCarNumber(data.getCarNumber(), projectInfoBySn, 1);
} else {
rtJo = HikvisionUtil.getReservationCarInfoList(carInfo.getCarNumber(), projectInfoBySn);
}
if (HikvisionUtil.isSuccess(rtJo)) { if (HikvisionUtil.isSuccess(rtJo)) {
JSONArray list = HikvisionUtil.getJSONObjectData(rtJo).getJSONArray("list"); JSONArray list = HikvisionUtil.getJSONObjectData(rtJo).getJSONArray("list");
if (CollUtil.isEmpty(list)) { if (CollUtil.isEmpty(list)) {
@ -346,12 +360,58 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
//更新 //更新
asyncHikvision.editCarInfoForHikvisionAsync(carInfo, carInfo); asyncHikvision.editCarInfoForHikvisionAsync(carInfo, carInfo);
} }
existIsc = true;
} else { } else {
log.error("校验数据同步海康失败,失败原因:{}", rtJo.toJSONString()); log.error("校验数据同步海康失败,失败原因:{}", rtJo.toJSONString());
existIsc = false;
} }
compareRetrySuccess(projectInfoBySn, carInfo, existIsc);
} }
} }
/**
* @param projectInfoBySn
* @param carInfo
* @param existSuc isc存在车辆就成功反之
* @throws Exception
*/
private void compareRetrySuccess(ProjectInfoExtVo projectInfoBySn, CarInfo carInfo, boolean existSuc) throws Exception {
//验证执行是否成功
JSONArray listJa;
if (carInfo.getCarModuleType() == null) {
JSONObject jo = HikvisionUtil.getFixCarListByCarNumber(carInfo.getCarNumber(), projectInfoBySn, 1);
JSONObject dataJo = HikvisionUtil.getJSONObjectData(jo);
listJa = dataJo.getJSONArray("list");
listJa.addAll(HikvisionUtil.getReservationCarInfoDataList(carInfo.getCarNumber(), projectInfoBySn));
} else if (Objects.equals(carInfo.getCarModuleType(), 1)) {
JSONObject jo = HikvisionUtil.getFixCarListByCarNumber(carInfo.getCarNumber(), projectInfoBySn, 1);
JSONObject dataJo = HikvisionUtil.getJSONObjectData(jo);
listJa = dataJo.getJSONArray("list");
} else {
listJa = HikvisionUtil.getReservationCarInfoDataList(carInfo.getCarNumber(), projectInfoBySn);
}
if (existSuc) {
setExistSuc(listJa);
} else {
setEmptySuc(listJa);
}
}
private void setExistSuc(JSONArray listJa) {
if (CollUtil.isNotEmpty(listJa)) {
this.compareRetrySuccess();
} else {
this.compareRetryFail();
}
}
private void setEmptySuc(JSONArray listJa) {
if (CollUtil.isEmpty(listJa)) {
this.compareRetrySuccess();
} else {
this.compareRetryFail();
}
}
/** /**
* 数据校验重试失败 * 数据校验重试失败
@ -369,7 +429,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
* 数据校验重试成功 * 数据校验重试成功
*/ */
@Override @Override
public void compareRetrySuc() { public void compareRetrySuccess() {
XzHikvisionCompareData data = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, XzHikvisionCompareData.class); XzHikvisionCompareData data = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, XzHikvisionCompareData.class);
if (data != null) { if (data != null) {
xzHikvisionCompareDataMapper.deleteById(data.getId()); xzHikvisionCompareDataMapper.deleteById(data.getId());
@ -485,18 +545,14 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
} }
@Override @Override
public void manualCompareData(Map<String, Object> param) { public void manualCompareData(Map<String, Object> param) throws Exception {
String projectSn = MapUtils.getString(param, Cts.PROJECT_SN); String projectSn = MapUtils.getString(param, Cts.PROJECT_SN);
try {
xzHikvisionCompareDataService.manualCompareDataAsync(param, projectSn); xzHikvisionCompareDataService.manualCompareDataAsync(param, projectSn);
} catch (Exception e) {
log.error("", e);
addExceptionShowIfNull(projectSn);
}
} }
@Async("syncXzHikvisionCompareData") @Async("syncXzHikvisionCompareData")
public void manualCompareDataAsync(Map<String, Object> param, String projectSn) throws Exception { public void manualCompareDataAsync(Map<String, Object> param, String projectSn) throws Exception {
try {
Integer type = MapUtils.getInteger(param, "type"); Integer type = MapUtils.getInteger(param, "type");
ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(projectSn); ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(projectSn);
if (Objects.equals(type, 1)) { if (Objects.equals(type, 1)) {
@ -514,6 +570,13 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
); );
hikvisionTask.compareHikvisionForCar(projectInfoBySn); hikvisionTask.compareHikvisionForCar(projectInfoBySn);
} }
} catch (Exception e) {
log.error("", e);
addExceptionShowIfNull(projectSn);
} finally {
// 手动执行比对数据完成
noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), "手动校验数据完成", "手动校验数据完成", "1");
}
} }
@Override @Override

View File

@ -276,7 +276,7 @@ public class HikvisionTask {
public void compareHikvisionForReservationCar(Project project) throws Exception { public void compareHikvisionForReservationCar(Project project) throws Exception {
JSONObject param = new JSONObject(); JSONObject param = new JSONObject();
HikvisionUtil.addPageParamIfAbsent(param); HikvisionUtil.addPageParamIfAbsent(param);
JSONArray listJa = hikvisionCall.getReservationCarInfoList(null, project); JSONArray listJa = HikvisionUtil.getReservationCarInfoDataList(null, project);
List<CarInfo> carInfoList = carInfoService.selectCarList(new MapBuilder<String, Object>() List<CarInfo> carInfoList = carInfoService.selectCarList(new MapBuilder<String, Object>()
.put(Cts.PROJECT_SN, project.getProjectSn()) .put(Cts.PROJECT_SN, project.getProjectSn())
.put(Cts.RESERVATION_TYPE, 1) .put(Cts.RESERVATION_TYPE, 1)

View File

@ -9,6 +9,8 @@ import com.hikvision.artemis.sdk.Response;
import com.hikvision.artemis.sdk.constant.Constants; import com.hikvision.artemis.sdk.constant.Constants;
import com.hikvision.artemis.sdk.enums.Method; import com.hikvision.artemis.sdk.enums.Method;
import com.zhgd.jeecg.common.execption.OpenAlertException; 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 com.zhgd.xmgl.modules.project.entity.Project;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -169,10 +171,31 @@ public class HikvisionUtil {
return doPostRtObj(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); 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 ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/car/category/search"; final String path = ARTEMIS_PATH + "/api/pms/v1/car/category/search";
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
@ -248,25 +271,84 @@ public class HikvisionUtil {
return doPostRtObj(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); 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 carNumber
* @param project * @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 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(); String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject(); HikvisionReservationCarInfo info = getHikvisionReservationCarInfoObj(carNumber, project);
//模糊查询 return doPostRtObj(host, path, JSON.toJSONString(info), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
jo.put("plateNo", carNumber); }
jo.put("pageNo", pageNo);
jo.put("pageSize", 1000); /**
return doPostRtObj(host, path, jo.toJSONString(), 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;
} }
} }