bug修复

This commit is contained in:
guo 2024-03-05 09:37:46 +08:00
parent 0fa8c91a18
commit 78c2785be3
8 changed files with 217 additions and 45 deletions

View File

@ -0,0 +1,27 @@
package com.zhgd.xmgl.base;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class ParkReservation {
@JsonProperty("parkSyscode")
private String parkSyscode;
@JsonProperty("plateNo")
private String plateNo;
@JsonProperty("phoneNo")
private String phoneNo;
@JsonProperty("owner")
private String owner;
@JsonProperty("allowTimes")
private Long allowTimes;
@JsonProperty("isCharge")
private String isCharge;
@JsonProperty("resvWay")
private String resvWay;
@JsonProperty("startTime")
private String startTime;
@JsonProperty("endTime")
private String endTime;
}

View File

@ -1,23 +1,21 @@
package com.zhgd.xmgl.call;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.xmgl.base.HikvisionCarInfo;
import com.zhgd.xmgl.base.HikvisionEventsPictureRq;
import com.zhgd.xmgl.base.HikvisionOrganization;
import com.zhgd.xmgl.base.SubscribeEventQo;
import com.zhgd.xmgl.base.*;
import com.zhgd.xmgl.modules.basicdata.entity.HikvisionRequestRetry;
import com.zhgd.xmgl.modules.basicdata.mapper.HikvisionRequestRetryMapper;
import com.zhgd.xmgl.modules.car.entity.CarInfo;
import com.zhgd.xmgl.modules.car.entity.CarPassRecord;
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.project.entity.Project;
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
import com.zhgd.xmgl.modules.worker.entity.DepartmentInfo;
@ -36,10 +34,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.util.*;
@ -50,6 +45,8 @@ import java.util.*;
public class HikvisionCall {
@Value("${upload.image.url.prefix:}")
private String imageUrlPrefix;
@Value("${basePath:}")
private String basePath;
@Autowired
@Lazy
private ProjectMapper projectMapper;
@ -65,6 +62,12 @@ public class HikvisionCall {
@Autowired
@Lazy
private HikvisionRequestRetryMapper hikvisionRequestRetryMapper;
@Autowired
@Lazy
private CarTypeMapper carTypeMapper;
@Autowired
@Lazy
private CarInfoMapper carInfoMapper;
/**
* 海康请求失败重试定时
@ -109,7 +112,7 @@ public class HikvisionCall {
jsonBody.put("jobNo", workerInfo.getPersonSn());
ArrayList<HashMap<String, String>> faceList = new ArrayList<>();
HashMap<String, String> faceMap = new HashMap<>();
faceMap.put("faceData", Base64Util.convertFileToBase64(PathUtil.reviseSlash(imageUrlPrefix + "/" + workerInfo.getFieldAcquisitionUrl())));
faceMap.put("faceData", Base64Util.convertFileToBase64(PathUtil.reviseSlash(basePath + "/" + workerInfo.getFieldAcquisitionUrl())));
faceList.add(faceMap);
jsonBody.put("faces", faceList);
String body = jsonBody.toJSONString();
@ -161,7 +164,7 @@ public class HikvisionCall {
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("personId", workerInfo.getId());
jo.put("faceData", Base64Util.convertFileToBase64(PathUtil.reviseSlash(imageUrlPrefix + "/" + workerInfo.getFieldAcquisitionUrl())));
jo.put("faceData", Base64Util.convertFileToBase64(PathUtil.reviseSlash(basePath + "/" + workerInfo.getFieldAcquisitionUrl())));
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
@ -250,25 +253,63 @@ public class HikvisionCall {
final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/batch/add";
String host = "https://" + project.getArtemisConfigHost();
HikvisionCarInfo hikvisionCarInfo = getHikvisionCarInfo(carInfo);
JsonArray array = new JsonArray();
array.add(BeanUtil.toBean(hikvisionCarInfo, JsonObject.class));
String body = array.toString();
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
ArrayList<HikvisionCarInfo> list = new ArrayList<>();
list.add(hikvisionCarInfo);
HikvisionUtil.doPost(host, path, JSON.toJSONString(list), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
private HikvisionCarInfo getHikvisionCarInfo(CarInfo carInfo) {
HikvisionCarInfo hikvisionCarInfo = new HikvisionCarInfo();
hikvisionCarInfo.setClientId(carInfo.getId());
hikvisionCarInfo.setPlateNo(carInfo.getCarNumber());
hikvisionCarInfo.setPersonId(carInfo.getDriverName());
hikvisionCarInfo.setPersonId(carInfo.getDriverWorkerId());
hikvisionCarInfo.setPlateType(null);
hikvisionCarInfo.setPlateColor(null);
hikvisionCarInfo.setVehicleType(null);
hikvisionCarInfo.setPlateColor(getPlateColor(carInfo));
hikvisionCarInfo.setVehicleType(getVehicleType(carInfo));
hikvisionCarInfo.setVehicleColor(getVehicleColor(carInfo.getCarColor()));
hikvisionCarInfo.setDescription(null);
return hikvisionCarInfo;
}
private String getPlateColor(CarInfo carInfo) {
String carColor = carInfo.getCarColor();
if (StringUtils.isBlank(carColor)) {
return null;
}
switch (carColor) {
case "蓝色":
return "0";
case "黄色":
return "1";
case "白色":
return "2";
case "黑色":
return "3";
case "绿色":
return "4";
case "民航黑色":
return "5";
case "其他颜色":
return "255";
}
return null;
}
private String getVehicleType(CarInfo carInfo) {
String carTypeName = carInfoMapper.getCarTypeName(carInfo);
switch (carTypeName) {
case "其他车":
return "0";
case "小型车":
return "1";
case "大型车":
return "2";
case "摩托车":
return "3";
}
return null;
}
private String getVehicleColor(String carColor) {
if (StringUtils.isBlank(carColor)) {
return null;
@ -325,10 +366,9 @@ public class HikvisionCall {
final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/single/update";
String host = "https://" + project.getArtemisConfigHost();
HikvisionCarInfo hikvisionCarInfo = getHikvisionCarInfo(carInfo);
JsonArray array = new JsonArray();
array.add(BeanUtil.toBean(hikvisionCarInfo, JsonObject.class));
String body = array.toString();
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
ArrayList<HikvisionCarInfo> list = new ArrayList<>();
list.add(hikvisionCarInfo);
HikvisionUtil.doPost(host, path, JSON.toJSONString(list), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
/**
@ -491,9 +531,9 @@ public class HikvisionCall {
final String path = ARTEMIS_PATH + "/api/resource/v1/org/batch/add";
String host = "https://" + project.getArtemisConfigHost();
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(enterpriseInfo);
JsonArray array = new JsonArray();
array.add(BeanUtil.toBean(hikvisionOrganization, JsonObject.class));
String body = array.toString();
ArrayList<HikvisionOrganization> list = new ArrayList<HikvisionOrganization>();
list.add(hikvisionOrganization);
String body = JSON.toJSONString(list);
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
@ -557,10 +597,9 @@ public class HikvisionCall {
final String path = ARTEMIS_PATH + "/api/resource/v1/org/batch/add";
String host = "https://" + project.getArtemisConfigHost();
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(teamInfo);
JsonArray array = new JsonArray();
array.add(BeanUtil.toBean(hikvisionOrganization, JsonObject.class));
String body = array.toString();
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
ArrayList<HikvisionOrganization> list = new ArrayList<>();
list.add(hikvisionOrganization);
HikvisionUtil.doPost(host, path, JSON.toJSONString(list), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
private HikvisionOrganization getHikvisionOrganization(TeamInfo teamInfo) {
@ -621,10 +660,9 @@ public class HikvisionCall {
final String path = ARTEMIS_PATH + "/api/resource/v1/org/batch/add";
String host = "https://" + project.getArtemisConfigHost();
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(departmentInfo);
JsonArray array = new JsonArray();
array.add(BeanUtil.toBean(hikvisionOrganization, JsonObject.class));
String body = array.toString();
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
ArrayList<HikvisionOrganization> list = new ArrayList<>();
list.add(hikvisionOrganization);
HikvisionUtil.doPost(host, path, JSON.toJSONString(list), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
private HikvisionOrganization getHikvisionOrganization(DepartmentInfo departmentInfo) {
@ -681,21 +719,101 @@ public class HikvisionCall {
return;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/single/update";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/batch/add";
String host = "https://" + project.getArtemisConfigHost();
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(project);
JsonArray array = new JsonArray();
array.add(BeanUtil.toBean(hikvisionOrganization, JsonObject.class));
String body = array.toString();
List l = new ArrayList<HikvisionOrganization>();
l.add(hikvisionOrganization);
HikvisionUtil.doPost(host, path, JSONArray.toJSONString(l), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
/**
* 获取组织列表
*
* @param project
*/
public void getOrg(Project project) {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/org/orgList";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("pageNo", 1);
jo.put("pageSize", 100);
String body = jo.toJSONString();
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
/**
* 获取停车库列表
*
* @param project
*/
public void getParkList(Project project) {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/park/parkList";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
private HikvisionOrganization getHikvisionOrganization(Project project) {
HikvisionOrganization hikvisionOrganization = new HikvisionOrganization();
hikvisionOrganization.setClientId(null);
hikvisionOrganization.setOrgIndexCode(project.getProjectSn());
hikvisionOrganization.setOrgName(project.getProjectName());
hikvisionOrganization.setParentIndexCode(null);
hikvisionOrganization.setParentIndexCode("root000000");
return hikvisionOrganization;
}
@GetMapping("/getOrg")
public Result getOrg() {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, "B717CB992D054A878FDAFB4A5C169947"));
getOrg(project);
return null;
}
@GetMapping("/getPark")
public Result getParkList() {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, "B717CB992D054A878FDAFB4A5C169947"));
getParkList(project);
return null;
}
/**
* 预约车辆
*
* @param project
*/
public void save(Project project) {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v2/parkingSpace/reservations/addition";
String host = "https://" + project.getArtemisConfigHost();
ParkReservation parkReservation = getParkReservation(project);
HikvisionUtil.doPost(host, path, JSON.toJSONString(parkReservation), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
private ParkReservation getParkReservation(Project project) {
ParkReservation parkReservation = new ParkReservation();
parkReservation.setParkSyscode(null);
//parkReservation.setPlateNo();
//parkReservation.setPhoneNo();
//parkReservation.setOwner();
//parkReservation.setAllowTimes();
//parkReservation.setIsCharge();
//parkReservation.setResvWay();
//parkReservation.setStartTime();
//parkReservation.setEndTime();
return parkReservation;
}
}

View File

@ -14,6 +14,7 @@ import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: 车辆黑白名单管理
@ -30,7 +31,7 @@ public class CarInfo implements Serializable {
/**
* 项目车辆信息表
*/
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "项目车辆信息表")
private java.lang.Long id;
@ -98,4 +99,19 @@ public class CarInfo implements Serializable {
@ApiModelProperty(value = "报警推送人")
private java.lang.String alarmPushWorkerId;
@ApiModelProperty(value = "是否预约车辆")
private Boolean isReserveCar;
@ApiModelProperty(value = "预约开始时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date reserveStartTime;
@ApiModelProperty(value = "预约结束时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date reserveEndTime;
}

View File

@ -13,13 +13,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 车辆黑白名单管理
* @author pds
* @date 2020-09-29
* @date 2020-09-29
* @version V1.0
*/
@Mapper
public interface CarInfoMapper extends BaseMapper<CarInfo> {
List<EntityMap> selectCarList(Page<EntityMap> page, @Param("param")Map<String, Object> map);
List<EntityMap> selectCarList(Page<EntityMap> page, @Param("param") Map<String, Object> map);
List<Map<String, Object>> selectCarTypeCount(Map<String, Object> map);
String getCarTypeName(CarInfo carInfo);
}

View File

@ -16,10 +16,17 @@
</select>
<select id="selectCarTypeCount" resultType="java.util.Map">
SELECT b.car_type_name carTypeName,COUNT(1) carTypeNum,
IFNULL(SUM((CASE WHEN a.is_black=1 THEN 1 ELSE 0 END)),0) blackNum,
IFNULL(SUM((CASE WHEN a.is_black=0 THEN 1 ELSE 0 END)),0) whiteNum
IFNULL(SUM((CASE WHEN a.is_black=1 THEN 1 ELSE 0 END)),0) blackNum,
IFNULL(SUM((CASE WHEN a.is_black=0 THEN 1 ELSE 0 END)),0) whiteNum
FROM car_info a INNER JOIN car_type b ON (a.car_type=b.id and a.project_sn=b.project_sn)
WHERE a.project_sn=#{projectSn}
group by a.car_type
</select>
<select id="getCarTypeName" resultType="java.lang.String">
select ct.car_type_name
from car_info ci
inner join car_type ct on ci.car_type = ct.id
where ci.id=#{id}
</select>
</mapper>

View File

@ -354,7 +354,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
redisRepository.del("projectInfoBySn:" + projectEntity.getProjectSn());
//同步海康
asyncHikvision.editProjectForHikvision(project);
asyncHikvision.editProjectForHikvision(projectEntity);
}
@Override

View File

@ -32,6 +32,7 @@ public class HikvisionUtil {
public static String doPost(String host, String path, String body, Map<String, String> querys, String appKey, String appSecret) {
log.info("HikvisionUtil#doPost.url:{}", host + path);
log.info("HikvisionUtil#doPost.body:{}", body);
String responseStr = null;
try {
Map<String, String> headers = new HashMap();

View File

@ -16,5 +16,6 @@ public class PathUtil {
System.out.println(reviseSlash("/homefoo//"));
System.out.println(reviseSlash("http://192.168.34.221:19111/xmgl/weight/weighInfo/getNewestWeighInfo"));
System.out.println(reviseSlash("http://192.168.34.221:19111/xmgl//weight/weighInfo/getNewestWeighInfo"));
System.out.println(reviseSlash("http://192.168.34.221:9111/image//65e5733735f013f4cc322278.jpg"));
}
}