diff --git a/src/main/java/com/zhgd/xmgl/base/ParkReservation.java b/src/main/java/com/zhgd/xmgl/base/ParkReservation.java new file mode 100644 index 000000000..894144f7d --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/base/ParkReservation.java @@ -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; + +} diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index cb0e597d6..90657431d 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -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> faceList = new ArrayList<>(); HashMap 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 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 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 list = new ArrayList(); + 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 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 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(); + 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().eq(Project::getProjectSn, "B717CB992D054A878FDAFB4A5C169947")); + getOrg(project); + return null; + } + + @GetMapping("/getPark") + public Result getParkList() { + Project project = projectMapper.selectOne(new LambdaQueryWrapper().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; + } + + } diff --git a/src/main/java/com/zhgd/xmgl/modules/car/entity/CarInfo.java b/src/main/java/com/zhgd/xmgl/modules/car/entity/CarInfo.java index d877539cb..d665e54b1 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/entity/CarInfo.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/entity/CarInfo.java @@ -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; + + } diff --git a/src/main/java/com/zhgd/xmgl/modules/car/mapper/CarInfoMapper.java b/src/main/java/com/zhgd/xmgl/modules/car/mapper/CarInfoMapper.java index a0fde027f..c6ff2d97b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/mapper/CarInfoMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/mapper/CarInfoMapper.java @@ -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 { - List selectCarList(Page page, @Param("param")Map map); + List selectCarList(Page page, @Param("param") Map map); List> selectCarTypeCount(Map map); + + String getCarTypeName(CarInfo carInfo); } 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 420bb6631..5950e59c7 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 @@ -16,10 +16,17 @@ + + diff --git a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java index b84190e4c..33b238219 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java @@ -354,7 +354,7 @@ public class ProjectServiceImpl extends ServiceImpl impl redisRepository.del("projectInfoBySn:" + projectEntity.getProjectSn()); //同步海康 - asyncHikvision.editProjectForHikvision(project); + asyncHikvision.editProjectForHikvision(projectEntity); } @Override diff --git a/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java b/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java index 81a19e9ef..7eff65814 100644 --- a/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java +++ b/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java @@ -32,6 +32,7 @@ public class HikvisionUtil { public static String doPost(String host, String path, String body, Map querys, String appKey, String appSecret) { log.info("HikvisionUtil#doPost.url:{}", host + path); + log.info("HikvisionUtil#doPost.body:{}", body); String responseStr = null; try { Map headers = new HashMap(); diff --git a/src/main/java/com/zhgd/xmgl/util/PathUtil.java b/src/main/java/com/zhgd/xmgl/util/PathUtil.java index 993433ef4..1e995ba07 100644 --- a/src/main/java/com/zhgd/xmgl/util/PathUtil.java +++ b/src/main/java/com/zhgd/xmgl/util/PathUtil.java @@ -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")); } }