From 294db15d205243184cf4b3443195d8e4bd27093b Mon Sep 17 00:00:00 2001 From: guo Date: Wed, 28 Feb 2024 14:02:07 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/xmgl/async/AsyncHikvision.java | 90 +++++++ .../java/com/zhgd/xmgl/async/AsyncWorker.java | 22 +- .../com/zhgd/xmgl/base/HikvisionCarInfo.java | 26 ++ .../com/zhgd/xmgl/call/HikvisionCall.java | 238 +++++++++++------- .../controller/BaseModuleController.java | 14 +- .../basicdata/service/IBaseModuleService.java | 2 + .../service/impl/BaseModuleServiceImpl.java | 34 ++- .../car/controller/CarInfoController.java | 14 +- .../modules/car/service/ICarInfoService.java | 2 + .../car/service/impl/CarInfoServiceImpl.java | 122 +++++---- .../xmgl/modules/project/entity/Project.java | 10 + .../service/impl/WorkerInfoServiceImpl.java | 11 +- 12 files changed, 406 insertions(+), 179 deletions(-) create mode 100644 src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java create mode 100644 src/main/java/com/zhgd/xmgl/base/HikvisionCarInfo.java diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java new file mode 100644 index 000000000..9e203e199 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java @@ -0,0 +1,90 @@ +package com.zhgd.xmgl.async; + +import com.zhgd.xmgl.call.HikvisionCall; +import com.zhgd.xmgl.call.HousingDataCall; +import com.zhgd.xmgl.call.WkServiceuCall; +import com.zhgd.xmgl.modules.basicdata.service.INoticeService; +import com.zhgd.xmgl.modules.car.entity.CarInfo; +import com.zhgd.xmgl.modules.project.service.IProjectUfaceConfigService; +import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; +import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class AsyncHikvision { + @Autowired + private WorkerInfoMapper workerInfoMapper; + @Autowired + private HousingDataCall housingDataCall; + @Autowired + private INoticeService noticeService; + @Autowired + private IProjectUfaceConfigService projectUfaceConfigService; + @Autowired + private WkServiceuCall wkServiceuCall; + @Autowired + HikvisionCall hikvisionCall; + + /** + * 添加劳务人员-海康 + * + * @param workerInfo + */ + @Async + public void addWorkerForHikvision(WorkerInfo workerInfo) { + try { + hikvisionCall.addWorkerForHikvision(workerInfo); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Async + public void editWorkerForHikvision(WorkerInfo workerInfo) { + try { + hikvisionCall.editWorkerForHikvision(workerInfo); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Async + public void deleteWorkerForHikvision(WorkerInfo workerInfo) { + try { + hikvisionCall.deleteWorkerForHikvision(workerInfo); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Async + public void addCarInfoForHikvision(CarInfo carInfo) { + try { + hikvisionCall.addCarInfoForHikvision(carInfo); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Async + public void editCarInfoForHikvision(CarInfo carInfo) { + try { + hikvisionCall.editCarInfoForHikvision(carInfo); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Async + public void deleteCarInfoForHikvision(CarInfo carInfo) { + try { + hikvisionCall.deleteCarInfoForHikvision(carInfo); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncWorker.java b/src/main/java/com/zhgd/xmgl/async/AsyncWorker.java index d7c24e3e6..e4a7b6dd5 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncWorker.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncWorker.java @@ -5,6 +5,7 @@ import com.zhgd.xmgl.call.HousingDataCall; import com.zhgd.xmgl.call.WkServiceuCall; import com.zhgd.xmgl.modules.basicdata.entity.Notice; import com.zhgd.xmgl.modules.basicdata.service.INoticeService; +import com.zhgd.xmgl.modules.car.entity.CarInfo; import com.zhgd.xmgl.modules.project.entity.ProjectEnterprise; import com.zhgd.xmgl.modules.project.entity.ProjectUfaceConfig; import com.zhgd.xmgl.modules.project.service.IProjectUfaceConfigService; @@ -210,25 +211,4 @@ public class AsyncWorker { } } - /** - * 添加劳务人员-海康 - * - * @param workerInfo - */ - @Async - public void addWorkerForHikvision(WorkerInfo workerInfo) { - //try { - // hikvisionCall.addWorkerForHikvision(workerInfo); - //} catch (Exception e) { - // e.printStackTrace(); - //} - } - - public void editWorkerForHikvision(WorkerInfo workerInfo) { - //try { - // hikvisionCall.editWorkerForHikvision(workerInfo); - //} catch (Exception e) { - // e.printStackTrace(); - //} - } } diff --git a/src/main/java/com/zhgd/xmgl/base/HikvisionCarInfo.java b/src/main/java/com/zhgd/xmgl/base/HikvisionCarInfo.java new file mode 100644 index 000000000..7c93cd4f6 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/base/HikvisionCarInfo.java @@ -0,0 +1,26 @@ +package com.zhgd.xmgl.base; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class HikvisionCarInfo { + + @JsonProperty("clientId") + private Long clientId; + @JsonProperty("plateNo") + private String plateNo; + @JsonProperty("personId") + private String personId; + @JsonProperty("plateType") + private String plateType; + @JsonProperty("plateColor") + private String plateColor; + @JsonProperty("vehicleType") + private String vehicleType; + @JsonProperty("vehicleColor") + private String vehicleColor; + @JsonProperty("description") + private String description; + +} diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index b93906022..52682bf29 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -1,19 +1,27 @@ package com.zhgd.xmgl.call; +import cn.hutool.core.bean.BeanUtil; 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.hikvision.artemis.sdk.ArtemisHttpUtil; import com.hikvision.artemis.sdk.config.ArtemisConfig; +import com.zhgd.xmgl.base.HikvisionCarInfo; +import com.zhgd.xmgl.modules.car.entity.CarInfo; +import com.zhgd.xmgl.modules.project.entity.Project; +import com.zhgd.xmgl.modules.project.mapper.ProjectMapper; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.util.Base64Util; import com.zhgd.xmgl.util.HikvisionUtil; import com.zhgd.xmgl.util.PathUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; +import java.util.*; @Slf4j @Component @@ -21,6 +29,9 @@ public class HikvisionCall { @Value("${upload.image.url.prefix:}") private String imageUrlPrefix; + @Autowired + private ProjectMapper projectMapper; + public static String GetCameraPreviewURL() { /** @@ -68,37 +79,18 @@ public class HikvisionCall { } public void addWorkerForHikvision(WorkerInfo workerInfo) { - - /** - * STEP1:设置平台参数,根据实际情况,设置host appkey appsecret 三个参数. - */ - ArtemisConfig.host = "127.0.0.1:443"; // 平台的ip端口 - ArtemisConfig.appKey = "29180881"; // 密钥appkey - ArtemisConfig.appSecret = "XO0wCAYGi4KV70ybjznx";// 密钥appSecret - - /** - * STEP2:设置OpenAPI接口的上下文 - */ + Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getProjectSn, workerInfo.getProjectSn())); + if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { + return; + } final String ARTEMIS_PATH = "/artemis"; + final String path = ARTEMIS_PATH + "/api/resource/v2/person/single/add"; + String host = "https://" + project.getArtemisConfigHost(); + String body = getWorkerJson(workerInfo); + HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); + } - /** - * STEP3:设置接口的URI地址 - */ - final String previewURLsApi = ARTEMIS_PATH + "/api/resource/v2/person/single/add"; - Map path = new HashMap(2) { - { - put("https://", previewURLsApi);//根据现场环境部署确认是http还是https - } - }; - - /** - * STEP4:设置参数提交方式 - */ - String contentType = "application/json"; - - /** - * STEP5:组装请求参数 - */ + private String getWorkerJson(WorkerInfo workerInfo) { JSONObject jsonBody = new JSONObject(); jsonBody.put("personId", workerInfo.getId()); jsonBody.put("personName", workerInfo.getWorkerName()); @@ -116,69 +108,135 @@ public class HikvisionCall { faceList.add(faceMap); jsonBody.put("faces", faceList); String body = jsonBody.toJSONString(); - /** - * STEP6:调用接口 - */ - String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 - log.info("海康rs:{}", result); + return body; } + public void editWorkerForHikvision(WorkerInfo workerInfo) { - /** - * STEP1:设置平台参数,根据实际情况,设置host appkey appsecret 三个参数. - */ - ArtemisConfig.host = "127.0.0.1:443"; // 平台的ip端口 - ArtemisConfig.appKey = "29180881"; // 密钥appkey - ArtemisConfig.appSecret = "XO0wCAYGi4KV70ybjznx";// 密钥appSecret - - /** - * STEP2:设置OpenAPI接口的上下文 - */ + Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getProjectSn, workerInfo.getProjectSn())); + if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { + return; + } final String ARTEMIS_PATH = "/artemis"; - - /** - * STEP3:设置接口的URI地址 - */ - final String previewURLsApi = ARTEMIS_PATH + "/api/resource/v1/person/single/update"; - Map path = new HashMap(2) { - { - put("https://", previewURLsApi);//根据现场环境部署确认是http还是https - } - }; - - /** - * STEP4:设置参数提交方式 - */ - String contentType = "application/json"; - - /** - * STEP5:组装请求参数 - */ - JSONObject jsonBody = new JSONObject(); - jsonBody.put("personId", workerInfo.getId()); - jsonBody.put("personName", workerInfo.getWorkerName()); - jsonBody.put("gender", workerInfo.getSex()); - jsonBody.put("orgIndexCode", "todo");//todo - jsonBody.put("birthday", workerInfo.getBirthday()); - jsonBody.put("phoneNo", workerInfo.getPhoneNumber()); - jsonBody.put("email", workerInfo.getPersonMail()); - jsonBody.put("certificateType", "111"); - jsonBody.put("certificateNo", workerInfo.getIdCard()); - jsonBody.put("jobNo", workerInfo.getPersonSn()); - ArrayList> faceList = new ArrayList<>(); - HashMap faceMap = new HashMap<>(); - faceMap.put("faceData", Base64Util.convertFileToBase64(PathUtil.reviseSlash(imageUrlPrefix + "/" + workerInfo.getFieldAcquisitionUrl()))); - faceList.add(faceMap); - jsonBody.put("faces", faceList); - String body = jsonBody.toJSONString(); - /** - * STEP6:调用接口 - */ - String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 - //HikvisionUtil.doPost("https://"+previewURLsApi,) - log.info("海康rs:{}", result); - + final String path = ARTEMIS_PATH + "/api/resource/v1/person/single/update"; + String host = "https://" + project.getArtemisConfigHost(); + String body = getWorkerJson(workerInfo); + HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } + public void deleteWorkerForHikvision(WorkerInfo workerInfo) { + Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getProjectSn, workerInfo.getProjectSn())); + if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { + return; + } + final String ARTEMIS_PATH = "/artemis"; + final String path = ARTEMIS_PATH + "/api/resource/v1/person/batch/delete"; + String host = "https://" + project.getArtemisConfigHost(); + JSONObject jsonBody = new JSONObject(); + jsonBody.put("personIds", Arrays.asList(workerInfo.getId())); + String body = jsonBody.toJSONString(); + HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); + } + + public void addCarInfoForHikvision(CarInfo carInfo) { + Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getProjectSn, carInfo.getProjectSn())); + if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { + return; + } + final String ARTEMIS_PATH = "/artemis"; + 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()); + } + + private HikvisionCarInfo getHikvisionCarInfo(CarInfo carInfo) { + HikvisionCarInfo hikvisionCarInfo = new HikvisionCarInfo(); + hikvisionCarInfo.setClientId(carInfo.getId()); + hikvisionCarInfo.setPlateNo(carInfo.getCarNumber()); + hikvisionCarInfo.setPersonId(carInfo.getDriverName()); + hikvisionCarInfo.setPlateType(null); + hikvisionCarInfo.setPlateColor(null); + hikvisionCarInfo.setVehicleType(null); + hikvisionCarInfo.setVehicleColor(getVehicleColor(carInfo.getCarColor())); + hikvisionCarInfo.setDescription(null); + return hikvisionCarInfo; + } + + private String getVehicleColor(String carColor) { + 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 "6"; + case "蓝色": + return "7"; + case "黄色": + return "8"; + case "绿色": + return "9"; + case "棕色": + return "10"; + case "粉色": + return "11"; + case "紫色": + return "12"; + case "深灰": + return "13"; + case "杏色": + return "14"; + case "未识别的车辆颜色": + return "255"; + default: + return null; + } + } + + public void editCarInfoForHikvision(CarInfo carInfo) { + Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getProjectSn, carInfo.getProjectSn())); + if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { + return; + } + final String ARTEMIS_PATH = "/artemis"; + 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()); + } + + public void deleteCarInfoForHikvision(CarInfo carInfo) { + Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getProjectSn, carInfo.getProjectSn())); + if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { + return; + } + final String ARTEMIS_PATH = "/artemis"; + final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/single/update"; + String host = "https://" + project.getArtemisConfigHost(); + JSONObject jo = new JSONObject(); + JsonArray array = new JsonArray(); + String body = array.toString(); + array.add(carInfo.getId()); + jo.put("vehicleIds", array); + HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/BaseModuleController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/BaseModuleController.java index 499caf5a5..7d9f2742e 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/BaseModuleController.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/BaseModuleController.java @@ -2,8 +2,8 @@ package com.zhgd.xmgl.modules.basicdata.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zhgd.jeecg.common.api.vo.Result; -import com.zhgd.xmgl.modules.basicdata.entity.dto.ModuleListPageDto; import com.zhgd.xmgl.modules.basicdata.entity.BaseModule; +import com.zhgd.xmgl.modules.basicdata.entity.dto.ModuleListPageDto; import com.zhgd.xmgl.modules.basicdata.service.IBaseModuleService; import com.zhgd.xmgl.util.MessageUtil; import io.swagger.annotations.Api; @@ -13,10 +13,7 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; -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 java.util.List; import java.util.Map; @@ -177,5 +174,12 @@ public class BaseModuleController { return result; } + /** + * 复制模块和菜单(copy一份模块系统版本) + */ + @GetMapping("copyModuleAndMenu") + public void copyModuleAndMenu() { + baseModuleService.copyModuleAndMenu(); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/IBaseModuleService.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/IBaseModuleService.java index cf9335a38..15343b8dd 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/IBaseModuleService.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/IBaseModuleService.java @@ -25,4 +25,6 @@ public interface IBaseModuleService extends IService { List getModuleList(Map map); Page getModuleListByPage(ModuleListPageDto dto); + + void copyModuleAndMenu(); } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/BaseModuleServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/BaseModuleServiceImpl.java index a1fd23336..f348537de 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/BaseModuleServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/BaseModuleServiceImpl.java @@ -1,13 +1,17 @@ package com.zhgd.xmgl.modules.basicdata.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.zhgd.xmgl.modules.basicdata.entity.dto.ModuleListPageDto; +import com.zhgd.xmgl.modules.basicdata.entity.BaseMenu; import com.zhgd.xmgl.modules.basicdata.entity.BaseModule; import com.zhgd.xmgl.modules.basicdata.entity.CompanyConfig; +import com.zhgd.xmgl.modules.basicdata.entity.dto.ModuleListPageDto; +import com.zhgd.xmgl.modules.basicdata.mapper.BaseMenuMapper; import com.zhgd.xmgl.modules.basicdata.mapper.BaseModuleMapper; import com.zhgd.xmgl.modules.basicdata.mapper.CompanyConfigMapper; +import com.zhgd.xmgl.modules.basicdata.service.IBaseAuthorityService; import com.zhgd.xmgl.modules.basicdata.service.IBaseModuleService; import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -16,6 +20,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @Description: 模块 @@ -29,7 +35,11 @@ public class BaseModuleServiceImpl extends ServiceImpl getCompanyModuleList(Map map) { @@ -75,4 +85,26 @@ public class BaseModuleServiceImpl extends ServiceImpl baseModules = baseModuleMapper.selectList(new LambdaQueryWrapper().eq(BaseModule::getStyleType, 1)); + List baseMenus = baseMenuMapper.selectList(new LambdaQueryWrapper().in(BaseMenu::getModuleId, baseModules.stream().map(BaseModule::getModuleId).collect(Collectors.toList()))); + Map> moduleIdMap = baseMenus.stream().collect(Collectors.groupingBy(BaseMenu::getModuleId)); + for (BaseModule baseModule : baseModules) { + List baseMenuList = moduleIdMap.get(baseModule.getModuleId()); + baseModule.setStyleType(7); + baseModule.setModuleId(null); + baseModuleMapper.insert(baseModule); + if (baseMenuList != null) { + for (BaseMenu baseMenu : baseMenuList) { + baseMenu.setMenuId(null); + baseMenu.setModuleId(baseModule.getModuleId()); + baseMenuMapper.insert(baseMenu); + // 同步权限表里的信息 + baseAuthorityService.saveOrUpdateAuthority(baseMenu.getMenuId(), "menu"); + } + } + } + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/car/controller/CarInfoController.java b/src/main/java/com/zhgd/xmgl/modules/car/controller/CarInfoController.java index c0df73d1b..9891665b1 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/controller/CarInfoController.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/controller/CarInfoController.java @@ -91,18 +91,8 @@ public class CarInfoController { @ApiImplicitParam(name = "id", value = "车辆黑白名单管理ID", paramType = "body", required = true, dataType = "Integer") @PostMapping(value = "/delete") public Result delete(@RequestBody Map map) { - Result result = new Result(); - CarInfo carInfo = carInfoService.getById(MapUtils.getString(map,"id")); - if(carInfo==null) { - result.error500(MessageUtil.get("notFindErr")); - }else { - boolean ok = carInfoService.removeById(MapUtils.getString(map,"id")); - if(ok) { - result.successMsg(MessageUtil.get("deleteSucess")); - } - } - - return result; + carInfoService.delete(map); + return Result.ok(); } 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 7e271c56a..7a606c377 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 @@ -24,4 +24,6 @@ public interface ICarInfoService extends IService { void deleteProjectCarData(String projectSn); Map selectCarTypeCount(Map map); + + void delete(Map map); } 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 3f3149b6e..aac5ec5a4 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 @@ -4,8 +4,11 @@ import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.mybatis.EntityMap; +import com.zhgd.xmgl.async.AsyncHikvision; +import com.zhgd.xmgl.async.AsyncWorker; import com.zhgd.xmgl.modules.car.entity.*; import com.zhgd.xmgl.modules.car.mapper.*; import com.zhgd.xmgl.modules.car.service.ICarInfoService; @@ -15,8 +18,6 @@ import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; @@ -26,7 +27,7 @@ import java.util.Map; /** * @Description: 车辆黑白名单管理 * @author: pds - * @date: 2020-09-29 + * @date: 2020-09-29 * @version: V1.0 */ @Service @@ -48,22 +49,26 @@ public class CarInfoServiceImpl extends ServiceImpl impl private CarWashCurrentDataMapper carWashCurrentDataMapper; @Autowired private WorkerInfoMapper workerInfoMapper; + @Autowired + private AsyncWorker asyncWorker; + @Autowired + private AsyncHikvision asyncHikvision; @Override public IPage selectCarList(Map map) { int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString()); int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).toString()); - if(StringUtils.isEmpty(MapUtils.getString(map,"isBlack"))){ + if (StringUtils.isEmpty(MapUtils.getString(map, "isBlack"))) { map.remove("isBlack"); } Page page = new Page<>(pageNo, pageSize); - List list=carInfoMapper.selectCarList(page, map); - if(list!=null&&list.size()>0){ - for(EntityMap entityMap:list){ - String workerName=workerInfoMapper.selectCarDriverNameByWorkerId(MapUtils.getString(entityMap,"driverWorkerId")); - entityMap.put("driver_worker_name",workerName); + List list = carInfoMapper.selectCarList(page, map); + if (list != null && list.size() > 0) { + for (EntityMap entityMap : list) { + String workerName = workerInfoMapper.selectCarDriverNameByWorkerId(MapUtils.getString(entityMap, "driverWorkerId")); + entityMap.put("driver_worker_name", workerName); if (StringUtils.isBlank(workerName)) { - entityMap.put("driver_worker_name",MapUtils.getString(entityMap,"driverName")); + entityMap.put("driver_worker_name", MapUtils.getString(entityMap, "driverName")); } String addTime = MapUtils.getString(entityMap, "addTime"); if (StringUtils.isNotBlank(addTime)) { @@ -77,84 +82,103 @@ public class CarInfoServiceImpl extends ServiceImpl impl @Override public void addCarInfo(CarInfo carInfo) { - QueryWrapper queryWrapper=new QueryWrapper<>(); - queryWrapper.lambda().eq(CarInfo::getProjectSn,carInfo.getProjectSn()) - .eq(CarInfo::getCarNumber,carInfo.getCarNumber()); - int count=carInfoMapper.selectCount(queryWrapper); - if(count>0){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(CarInfo::getProjectSn, carInfo.getProjectSn()) + .eq(CarInfo::getCarNumber, carInfo.getCarNumber()); + int count = carInfoMapper.selectCount(queryWrapper); + if (count > 0) { throw new OpenAlertException(MessageUtil.get("carNumberExistErr")); } carInfoMapper.insert(carInfo); + + //同步海康 + asyncHikvision.addCarInfoForHikvision(carInfo); } @Override public void editCarInfo(CarInfo carInfo) { - QueryWrapper queryWrapper=new QueryWrapper<>(); - queryWrapper.lambda().eq(CarInfo::getProjectSn,carInfo.getProjectSn()) - .eq(CarInfo::getCarNumber,carInfo.getCarNumber()) - .ne(CarInfo::getId,carInfo.getId()); - int count=carInfoMapper.selectCount(queryWrapper); - if(count>0){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(CarInfo::getProjectSn, carInfo.getProjectSn()) + .eq(CarInfo::getCarNumber, carInfo.getCarNumber()) + .ne(CarInfo::getId, carInfo.getId()); + int count = carInfoMapper.selectCount(queryWrapper); + if (count > 0) { throw new OpenAlertException(MessageUtil.get("carNumberExistErr")); } carInfoMapper.updateById(carInfo); + + //同步海康 + asyncHikvision.editCarInfoForHikvision(carInfo); } @Override public void deleteProjectCarData(String projectSn) { //删除车辆黑白名单 - QueryWrapper queryWrapper=new QueryWrapper<>(); - queryWrapper.lambda().eq(CarInfo::getProjectSn,projectSn); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(CarInfo::getProjectSn, projectSn); carInfoMapper.delete(queryWrapper); //删除车辆相机 - QueryWrapper queryWrapper2=new QueryWrapper<>(); - queryWrapper2.lambda().eq(CarCamera::getProjectSn,projectSn); + QueryWrapper queryWrapper2 = new QueryWrapper<>(); + queryWrapper2.lambda().eq(CarCamera::getProjectSn, projectSn); carCameraMapper.delete(queryWrapper2); //删除车辆进出闸门 - QueryWrapper queryWrapper3=new QueryWrapper<>(); - queryWrapper3.lambda().eq(CarPassGate::getProjectSn,projectSn); + QueryWrapper queryWrapper3 = new QueryWrapper<>(); + queryWrapper3.lambda().eq(CarPassGate::getProjectSn, projectSn); carPassGateMapper.delete(queryWrapper3); //删除车辆通行记录 - QueryWrapper queryWrapper4=new QueryWrapper<>(); - queryWrapper4.lambda().eq(CarPassRecord::getProjectSn,projectSn); + QueryWrapper queryWrapper4 = new QueryWrapper<>(); + queryWrapper4.lambda().eq(CarPassRecord::getProjectSn, projectSn); carPassRecordMapper.delete(queryWrapper4); //删除车辆类型 - QueryWrapper queryWrapper5=new QueryWrapper<>(); - queryWrapper5.lambda().eq(CarType::getProjectSn,projectSn); + QueryWrapper queryWrapper5 = new QueryWrapper<>(); + queryWrapper5.lambda().eq(CarType::getProjectSn, projectSn); carTypeMapper.delete(queryWrapper5); //删除车辆冲洗设备 - QueryWrapper queryWrapper6=new QueryWrapper<>(); - queryWrapper6.lambda().eq(CarWashDev::getProjectSn,projectSn); + QueryWrapper queryWrapper6 = new QueryWrapper<>(); + queryWrapper6.lambda().eq(CarWashDev::getProjectSn, projectSn); carWashDevMapper.delete(queryWrapper6); //删除车辆冲洗实时数据 - QueryWrapper queryWrapper7=new QueryWrapper<>(); - queryWrapper7.lambda().eq(CarWashCurrentData::getProjectSn,projectSn); + QueryWrapper queryWrapper7 = new QueryWrapper<>(); + queryWrapper7.lambda().eq(CarWashCurrentData::getProjectSn, projectSn); carWashCurrentDataMapper.delete(queryWrapper7); } @Override public Map selectCarTypeCount(Map map) { - Map data=new HashMap<>(); + Map data = new HashMap<>(); //查询项目下各种车辆类型的车辆数、黑名单和白名单数 - List> list=carInfoMapper.selectCarTypeCount(map); + List> list = carInfoMapper.selectCarTypeCount(map); //总数 - Integer totalCar=0; + Integer totalCar = 0; //白名单车辆总数 - Integer totalBlackNum=0; + Integer totalBlackNum = 0; //黑名单车辆总数 - Integer totalWhiteNum=0; - if(list!=null&&list.size()>0){ - for (Map carData:list){ - totalCar=totalCar+MapUtils.getInteger(carData,"carTypeNum",0); - totalBlackNum=totalBlackNum+MapUtils.getInteger(carData,"blackNum",0); - totalWhiteNum=totalWhiteNum+MapUtils.getInteger(carData,"whiteNum",0); + Integer totalWhiteNum = 0; + if (list != null && list.size() > 0) { + for (Map carData : list) { + totalCar = totalCar + MapUtils.getInteger(carData, "carTypeNum", 0); + totalBlackNum = totalBlackNum + MapUtils.getInteger(carData, "blackNum", 0); + totalWhiteNum = totalWhiteNum + MapUtils.getInteger(carData, "whiteNum", 0); } } - data.put("totalCar",totalCar); - data.put("totalBlackNum",totalBlackNum); - data.put("totalWhiteNum",totalWhiteNum); - data.put("list",list); + data.put("totalCar", totalCar); + data.put("totalBlackNum", totalBlackNum); + data.put("totalWhiteNum", totalWhiteNum); + data.put("list", list); return data; } + + @Override + public void delete(Map map) { + CarInfo carInfo = getById(MapUtils.getString(map, "id")); + if (carInfo == null) { + throw new OpenAlertException(MessageUtil.get("notFindErr")); + } + String id = MapUtils.getString(map, "id"); + carInfoMapper.deleteById(id); + + //同步海康 + asyncHikvision.deleteCarInfoForHikvision(carInfo); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java b/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java index 75918d7fe..09d96e606 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java @@ -310,6 +310,16 @@ public class Project implements Serializable { @JsonIgnore @ApiModelProperty(value = "是否同步到海康") private Integer syncHikvision; + @JsonIgnore + @ApiModelProperty(value = "海康host") + private String artemisConfigHost; + @JsonIgnore + @ApiModelProperty(value = "海康appKey") + private String artemisConfigAppKey; + @JsonIgnore + @ApiModelProperty(value = "海康appSecret") + private String artemisConfigAppSecret; + /** * runde平台token diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java index 90516e67d..60be99c21 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java @@ -19,6 +19,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.mybatis.EntityMap; +import com.zhgd.xmgl.async.AsyncHikvision; import com.zhgd.xmgl.async.AsyncJiLianDa; import com.zhgd.xmgl.async.AsyncWorker; import com.zhgd.xmgl.modules.basicdata.entity.Company; @@ -117,6 +118,8 @@ public class WorkerInfoServiceImpl extends ServiceImpl