bug修复

This commit is contained in:
guo 2024-02-28 14:02:07 +08:00
parent 2c47db34f5
commit 294db15d20
12 changed files with 406 additions and 179 deletions

View File

@ -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();
}
}
}

View File

@ -5,6 +5,7 @@ import com.zhgd.xmgl.call.HousingDataCall;
import com.zhgd.xmgl.call.WkServiceuCall; import com.zhgd.xmgl.call.WkServiceuCall;
import com.zhgd.xmgl.modules.basicdata.entity.Notice; import com.zhgd.xmgl.modules.basicdata.entity.Notice;
import com.zhgd.xmgl.modules.basicdata.service.INoticeService; 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.ProjectEnterprise;
import com.zhgd.xmgl.modules.project.entity.ProjectUfaceConfig; import com.zhgd.xmgl.modules.project.entity.ProjectUfaceConfig;
import com.zhgd.xmgl.modules.project.service.IProjectUfaceConfigService; 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();
//}
}
} }

View File

@ -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;
}

View File

@ -1,19 +1,27 @@
package com.zhgd.xmgl.call; package com.zhgd.xmgl.call;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject; 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.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig; 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.modules.worker.entity.WorkerInfo;
import com.zhgd.xmgl.util.Base64Util; import com.zhgd.xmgl.util.Base64Util;
import com.zhgd.xmgl.util.HikvisionUtil; import com.zhgd.xmgl.util.HikvisionUtil;
import com.zhgd.xmgl.util.PathUtil; import com.zhgd.xmgl.util.PathUtil;
import lombok.extern.slf4j.Slf4j; 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.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.Map;
@Slf4j @Slf4j
@Component @Component
@ -21,6 +29,9 @@ public class HikvisionCall {
@Value("${upload.image.url.prefix:}") @Value("${upload.image.url.prefix:}")
private String imageUrlPrefix; private String imageUrlPrefix;
@Autowired
private ProjectMapper projectMapper;
public static String GetCameraPreviewURL() { public static String GetCameraPreviewURL() {
/** /**
@ -68,37 +79,18 @@ public class HikvisionCall {
} }
public void addWorkerForHikvision(WorkerInfo workerInfo) { public void addWorkerForHikvision(WorkerInfo workerInfo) {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, workerInfo.getProjectSn()));
/** if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
* STEP1设置平台参数根据实际情况,设置host appkey appsecret 三个参数. return;
*/ }
ArtemisConfig.host = "127.0.0.1:443"; // 平台的ip端口
ArtemisConfig.appKey = "29180881"; // 密钥appkey
ArtemisConfig.appSecret = "XO0wCAYGi4KV70ybjznx";// 密钥appSecret
/**
* STEP2设置OpenAPI接口的上下文
*/
final String ARTEMIS_PATH = "/artemis"; 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());
}
/** private String getWorkerJson(WorkerInfo workerInfo) {
* STEP3设置接口的URI地址
*/
final String previewURLsApi = ARTEMIS_PATH + "/api/resource/v2/person/single/add";
Map<String, String> path = new HashMap<String, String>(2) {
{
put("https://", previewURLsApi);//根据现场环境部署确认是http还是https
}
};
/**
* STEP4设置参数提交方式
*/
String contentType = "application/json";
/**
* STEP5组装请求参数
*/
JSONObject jsonBody = new JSONObject(); JSONObject jsonBody = new JSONObject();
jsonBody.put("personId", workerInfo.getId()); jsonBody.put("personId", workerInfo.getId());
jsonBody.put("personName", workerInfo.getWorkerName()); jsonBody.put("personName", workerInfo.getWorkerName());
@ -116,69 +108,135 @@ public class HikvisionCall {
faceList.add(faceMap); faceList.add(faceMap);
jsonBody.put("faces", faceList); jsonBody.put("faces", faceList);
String body = jsonBody.toJSONString(); String body = jsonBody.toJSONString();
/** return body;
* STEP6调用接口
*/
String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数
log.info("海康rs:{}", result);
} }
public void editWorkerForHikvision(WorkerInfo workerInfo) { public void editWorkerForHikvision(WorkerInfo workerInfo) {
/** Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, workerInfo.getProjectSn()));
* STEP1设置平台参数根据实际情况,设置host appkey appsecret 三个参数. if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
*/ return;
ArtemisConfig.host = "127.0.0.1:443"; // 平台的ip端口 }
ArtemisConfig.appKey = "29180881"; // 密钥appkey
ArtemisConfig.appSecret = "XO0wCAYGi4KV70ybjznx";// 密钥appSecret
/**
* STEP2设置OpenAPI接口的上下文
*/
final String ARTEMIS_PATH = "/artemis"; final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/person/single/update";
/** String host = "https://" + project.getArtemisConfigHost();
* STEP3设置接口的URI地址 String body = getWorkerJson(workerInfo);
*/ HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
final String previewURLsApi = ARTEMIS_PATH + "/api/resource/v1/person/single/update";
Map<String, String> path = new HashMap<String, String>(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<HashMap<String, String>> faceList = new ArrayList<>();
HashMap<String, String> 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);
} }
public void deleteWorkerForHikvision(WorkerInfo workerInfo) {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().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<Project>().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<Project>().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<Project>().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());
}
} }

View File

@ -2,8 +2,8 @@ package com.zhgd.xmgl.modules.basicdata.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.jeecg.common.api.vo.Result; 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.BaseModule;
import com.zhgd.xmgl.modules.basicdata.entity.dto.ModuleListPageDto;
import com.zhgd.xmgl.modules.basicdata.service.IBaseModuleService; import com.zhgd.xmgl.modules.basicdata.service.IBaseModuleService;
import com.zhgd.xmgl.util.MessageUtil; import com.zhgd.xmgl.util.MessageUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -13,10 +13,7 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -177,5 +174,12 @@ public class BaseModuleController {
return result; return result;
} }
/**
* 复制模块和菜单copy一份模块系统版本
*/
@GetMapping("copyModuleAndMenu")
public void copyModuleAndMenu() {
baseModuleService.copyModuleAndMenu();
}
} }

View File

@ -25,4 +25,6 @@ public interface IBaseModuleService extends IService<BaseModule> {
List<BaseModule> getModuleList(Map<String, Object> map); List<BaseModule> getModuleList(Map<String, Object> map);
Page<BaseModule> getModuleListByPage(ModuleListPageDto dto); Page<BaseModule> getModuleListByPage(ModuleListPageDto dto);
void copyModuleAndMenu();
} }

View File

@ -1,13 +1,17 @@
package com.zhgd.xmgl.modules.basicdata.service.impl; 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.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.BaseModule;
import com.zhgd.xmgl.modules.basicdata.entity.CompanyConfig; 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.BaseModuleMapper;
import com.zhgd.xmgl.modules.basicdata.mapper.CompanyConfigMapper; 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 com.zhgd.xmgl.modules.basicdata.service.IBaseModuleService;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -16,6 +20,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/** /**
* @Description: 模块 * @Description: 模块
@ -29,7 +35,11 @@ public class BaseModuleServiceImpl extends ServiceImpl<BaseModuleMapper, BaseMod
@Autowired @Autowired
private BaseModuleMapper baseModuleMapper; private BaseModuleMapper baseModuleMapper;
@Autowired @Autowired
private BaseMenuMapper baseMenuMapper;
@Autowired
private CompanyConfigMapper companyConfigMapper; private CompanyConfigMapper companyConfigMapper;
@Autowired
private IBaseAuthorityService baseAuthorityService;
@Override @Override
public List<BaseModule> getCompanyModuleList(Map<String, Object> map) { public List<BaseModule> getCompanyModuleList(Map<String, Object> map) {
@ -75,4 +85,26 @@ public class BaseModuleServiceImpl extends ServiceImpl<BaseModuleMapper, BaseMod
} }
return baseModuleMapper.getModuleListByPage(page, dto); return baseModuleMapper.getModuleListByPage(page, dto);
} }
@Override
public void copyModuleAndMenu() {
List<BaseModule> baseModules = baseModuleMapper.selectList(new LambdaQueryWrapper<BaseModule>().eq(BaseModule::getStyleType, 1));
List<BaseMenu> baseMenus = baseMenuMapper.selectList(new LambdaQueryWrapper<BaseMenu>().in(BaseMenu::getModuleId, baseModules.stream().map(BaseModule::getModuleId).collect(Collectors.toList())));
Map<Long, List<BaseMenu>> moduleIdMap = baseMenus.stream().collect(Collectors.groupingBy(BaseMenu::getModuleId));
for (BaseModule baseModule : baseModules) {
List<BaseMenu> 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");
}
}
}
}
} }

View File

@ -91,18 +91,8 @@ public class CarInfoController {
@ApiImplicitParam(name = "id", value = "车辆黑白名单管理ID", paramType = "body", required = true, dataType = "Integer") @ApiImplicitParam(name = "id", value = "车辆黑白名单管理ID", paramType = "body", required = true, dataType = "Integer")
@PostMapping(value = "/delete") @PostMapping(value = "/delete")
public Result<CarInfo> delete(@RequestBody Map<String,Object> map) { public Result<CarInfo> delete(@RequestBody Map<String,Object> map) {
Result<CarInfo> result = new Result<CarInfo>(); carInfoService.delete(map);
CarInfo carInfo = carInfoService.getById(MapUtils.getString(map,"id")); return Result.ok();
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;
} }

View File

@ -24,4 +24,6 @@ public interface ICarInfoService extends IService<CarInfo> {
void deleteProjectCarData(String projectSn); void deleteProjectCarData(String projectSn);
Map<String, Object> selectCarTypeCount(Map<String, Object> map); Map<String, Object> selectCarTypeCount(Map<String, Object> map);
void delete(Map<String, Object> map);
} }

View File

@ -4,8 +4,11 @@ import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.execption.OpenAlertException;
import com.zhgd.jeecg.common.mybatis.EntityMap; 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.entity.*;
import com.zhgd.xmgl.modules.car.mapper.*; import com.zhgd.xmgl.modules.car.mapper.*;
import com.zhgd.xmgl.modules.car.service.ICarInfoService; 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.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap; import java.util.HashMap;
@ -26,7 +27,7 @@ import java.util.Map;
/** /**
* @Description: 车辆黑白名单管理 * @Description: 车辆黑白名单管理
* @author pds * @author pds
* @date 2020-09-29 * @date 2020-09-29
* @version V1.0 * @version V1.0
*/ */
@Service @Service
@ -48,22 +49,26 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
private CarWashCurrentDataMapper carWashCurrentDataMapper; private CarWashCurrentDataMapper carWashCurrentDataMapper;
@Autowired @Autowired
private WorkerInfoMapper workerInfoMapper; private WorkerInfoMapper workerInfoMapper;
@Autowired
private AsyncWorker asyncWorker;
@Autowired
private AsyncHikvision asyncHikvision;
@Override @Override
public IPage<EntityMap> selectCarList(Map<String, Object> map) { public IPage<EntityMap> selectCarList(Map<String, Object> map) {
int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString()); int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString());
int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).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"); map.remove("isBlack");
} }
Page<EntityMap> page = new Page<>(pageNo, pageSize); Page<EntityMap> page = new Page<>(pageNo, pageSize);
List<EntityMap> list=carInfoMapper.selectCarList(page, map); List<EntityMap> list = carInfoMapper.selectCarList(page, map);
if(list!=null&&list.size()>0){ if (list != null && list.size() > 0) {
for(EntityMap entityMap:list){ for (EntityMap entityMap : list) {
String workerName=workerInfoMapper.selectCarDriverNameByWorkerId(MapUtils.getString(entityMap,"driverWorkerId")); String workerName = workerInfoMapper.selectCarDriverNameByWorkerId(MapUtils.getString(entityMap, "driverWorkerId"));
entityMap.put("driver_worker_name",workerName); entityMap.put("driver_worker_name", workerName);
if (StringUtils.isBlank(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"); String addTime = MapUtils.getString(entityMap, "addTime");
if (StringUtils.isNotBlank(addTime)) { if (StringUtils.isNotBlank(addTime)) {
@ -77,84 +82,103 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
@Override @Override
public void addCarInfo(CarInfo carInfo) { public void addCarInfo(CarInfo carInfo) {
QueryWrapper<CarInfo> queryWrapper=new QueryWrapper<>(); QueryWrapper<CarInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(CarInfo::getProjectSn,carInfo.getProjectSn()) queryWrapper.lambda().eq(CarInfo::getProjectSn, carInfo.getProjectSn())
.eq(CarInfo::getCarNumber,carInfo.getCarNumber()); .eq(CarInfo::getCarNumber, carInfo.getCarNumber());
int count=carInfoMapper.selectCount(queryWrapper); int count = carInfoMapper.selectCount(queryWrapper);
if(count>0){ if (count > 0) {
throw new OpenAlertException(MessageUtil.get("carNumberExistErr")); throw new OpenAlertException(MessageUtil.get("carNumberExistErr"));
} }
carInfoMapper.insert(carInfo); carInfoMapper.insert(carInfo);
//同步海康
asyncHikvision.addCarInfoForHikvision(carInfo);
} }
@Override @Override
public void editCarInfo(CarInfo carInfo) { public void editCarInfo(CarInfo carInfo) {
QueryWrapper<CarInfo> queryWrapper=new QueryWrapper<>(); QueryWrapper<CarInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(CarInfo::getProjectSn,carInfo.getProjectSn()) queryWrapper.lambda().eq(CarInfo::getProjectSn, carInfo.getProjectSn())
.eq(CarInfo::getCarNumber,carInfo.getCarNumber()) .eq(CarInfo::getCarNumber, carInfo.getCarNumber())
.ne(CarInfo::getId,carInfo.getId()); .ne(CarInfo::getId, carInfo.getId());
int count=carInfoMapper.selectCount(queryWrapper); int count = carInfoMapper.selectCount(queryWrapper);
if(count>0){ if (count > 0) {
throw new OpenAlertException(MessageUtil.get("carNumberExistErr")); throw new OpenAlertException(MessageUtil.get("carNumberExistErr"));
} }
carInfoMapper.updateById(carInfo); carInfoMapper.updateById(carInfo);
//同步海康
asyncHikvision.editCarInfoForHikvision(carInfo);
} }
@Override @Override
public void deleteProjectCarData(String projectSn) { public void deleteProjectCarData(String projectSn) {
//删除车辆黑白名单 //删除车辆黑白名单
QueryWrapper<CarInfo> queryWrapper=new QueryWrapper<>(); QueryWrapper<CarInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(CarInfo::getProjectSn,projectSn); queryWrapper.lambda().eq(CarInfo::getProjectSn, projectSn);
carInfoMapper.delete(queryWrapper); carInfoMapper.delete(queryWrapper);
//删除车辆相机 //删除车辆相机
QueryWrapper<CarCamera> queryWrapper2=new QueryWrapper<>(); QueryWrapper<CarCamera> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.lambda().eq(CarCamera::getProjectSn,projectSn); queryWrapper2.lambda().eq(CarCamera::getProjectSn, projectSn);
carCameraMapper.delete(queryWrapper2); carCameraMapper.delete(queryWrapper2);
//删除车辆进出闸门 //删除车辆进出闸门
QueryWrapper<CarPassGate> queryWrapper3=new QueryWrapper<>(); QueryWrapper<CarPassGate> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.lambda().eq(CarPassGate::getProjectSn,projectSn); queryWrapper3.lambda().eq(CarPassGate::getProjectSn, projectSn);
carPassGateMapper.delete(queryWrapper3); carPassGateMapper.delete(queryWrapper3);
//删除车辆通行记录 //删除车辆通行记录
QueryWrapper<CarPassRecord> queryWrapper4=new QueryWrapper<>(); QueryWrapper<CarPassRecord> queryWrapper4 = new QueryWrapper<>();
queryWrapper4.lambda().eq(CarPassRecord::getProjectSn,projectSn); queryWrapper4.lambda().eq(CarPassRecord::getProjectSn, projectSn);
carPassRecordMapper.delete(queryWrapper4); carPassRecordMapper.delete(queryWrapper4);
//删除车辆类型 //删除车辆类型
QueryWrapper<CarType> queryWrapper5=new QueryWrapper<>(); QueryWrapper<CarType> queryWrapper5 = new QueryWrapper<>();
queryWrapper5.lambda().eq(CarType::getProjectSn,projectSn); queryWrapper5.lambda().eq(CarType::getProjectSn, projectSn);
carTypeMapper.delete(queryWrapper5); carTypeMapper.delete(queryWrapper5);
//删除车辆冲洗设备 //删除车辆冲洗设备
QueryWrapper<CarWashDev> queryWrapper6=new QueryWrapper<>(); QueryWrapper<CarWashDev> queryWrapper6 = new QueryWrapper<>();
queryWrapper6.lambda().eq(CarWashDev::getProjectSn,projectSn); queryWrapper6.lambda().eq(CarWashDev::getProjectSn, projectSn);
carWashDevMapper.delete(queryWrapper6); carWashDevMapper.delete(queryWrapper6);
//删除车辆冲洗实时数据 //删除车辆冲洗实时数据
QueryWrapper<CarWashCurrentData> queryWrapper7=new QueryWrapper<>(); QueryWrapper<CarWashCurrentData> queryWrapper7 = new QueryWrapper<>();
queryWrapper7.lambda().eq(CarWashCurrentData::getProjectSn,projectSn); queryWrapper7.lambda().eq(CarWashCurrentData::getProjectSn, projectSn);
carWashCurrentDataMapper.delete(queryWrapper7); carWashCurrentDataMapper.delete(queryWrapper7);
} }
@Override @Override
public Map<String, Object> selectCarTypeCount(Map<String, Object> map) { public Map<String, Object> selectCarTypeCount(Map<String, Object> map) {
Map<String, Object> data=new HashMap<>(); Map<String, Object> data = new HashMap<>();
//查询项目下各种车辆类型的车辆数黑名单和白名单数 //查询项目下各种车辆类型的车辆数黑名单和白名单数
List<Map<String, Object>> list=carInfoMapper.selectCarTypeCount(map); List<Map<String, Object>> list = carInfoMapper.selectCarTypeCount(map);
//总数 //总数
Integer totalCar=0; Integer totalCar = 0;
//白名单车辆总数 //白名单车辆总数
Integer totalBlackNum=0; Integer totalBlackNum = 0;
//黑名单车辆总数 //黑名单车辆总数
Integer totalWhiteNum=0; Integer totalWhiteNum = 0;
if(list!=null&&list.size()>0){ if (list != null && list.size() > 0) {
for (Map<String, Object> carData:list){ for (Map<String, Object> carData : list) {
totalCar=totalCar+MapUtils.getInteger(carData,"carTypeNum",0); totalCar = totalCar + MapUtils.getInteger(carData, "carTypeNum", 0);
totalBlackNum=totalBlackNum+MapUtils.getInteger(carData,"blackNum",0); totalBlackNum = totalBlackNum + MapUtils.getInteger(carData, "blackNum", 0);
totalWhiteNum=totalWhiteNum+MapUtils.getInteger(carData,"whiteNum",0); totalWhiteNum = totalWhiteNum + MapUtils.getInteger(carData, "whiteNum", 0);
} }
} }
data.put("totalCar",totalCar); data.put("totalCar", totalCar);
data.put("totalBlackNum",totalBlackNum); data.put("totalBlackNum", totalBlackNum);
data.put("totalWhiteNum",totalWhiteNum); data.put("totalWhiteNum", totalWhiteNum);
data.put("list",list); data.put("list", list);
return data; return data;
} }
@Override
public void delete(Map<String, Object> 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);
}
} }

View File

@ -310,6 +310,16 @@ public class Project implements Serializable {
@JsonIgnore @JsonIgnore
@ApiModelProperty(value = "是否同步到海康") @ApiModelProperty(value = "是否同步到海康")
private Integer syncHikvision; 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 * runde平台token

View File

@ -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.api.vo.Result;
import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.async.AsyncJiLianDa; import com.zhgd.xmgl.async.AsyncJiLianDa;
import com.zhgd.xmgl.async.AsyncWorker; import com.zhgd.xmgl.async.AsyncWorker;
import com.zhgd.xmgl.modules.basicdata.entity.Company; import com.zhgd.xmgl.modules.basicdata.entity.Company;
@ -117,6 +118,8 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
@Autowired @Autowired
private AsyncWorker asyncWorker; private AsyncWorker asyncWorker;
@Autowired @Autowired
private AsyncHikvision asyncHikvision;
@Autowired
private IWorkerPhotoFeaturesService workerPhotoFeaturesService; private IWorkerPhotoFeaturesService workerPhotoFeaturesService;
@Autowired @Autowired
private GovtOpenApiService govtOpenApiService; private GovtOpenApiService govtOpenApiService;
@ -313,7 +316,7 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
.eq(WorkerInfoDelete::getIdCard, workerInfo.getIdCard()) .eq(WorkerInfoDelete::getIdCard, workerInfo.getIdCard())
); );
//同步海康 //同步海康
asyncWorker.editWorkerForHikvision(workerInfo); asyncHikvision.addWorkerForHikvision(workerInfo);
return workerInfo; return workerInfo;
} }
@ -372,6 +375,8 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
} }
asyncJiLianDa.saveWorkerInfo(workerInfo); asyncJiLianDa.saveWorkerInfo(workerInfo);
//同步海康
asyncHikvision.editWorkerForHikvision(workerInfo);
return workerInfo; return workerInfo;
} }
@ -403,6 +408,10 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
WorkerInfoDelete entity = new WorkerInfoDelete(); WorkerInfoDelete entity = new WorkerInfoDelete();
BeanUtil.copyProperties(workerInfo, entity); BeanUtil.copyProperties(workerInfo, entity);
workerInfoDeleteMapper.insert(entity); workerInfoDeleteMapper.insert(entity);
//同步海康
asyncHikvision.deleteWorkerForHikvision(workerInfo);
} }
private void checkExistAccount(String id) { private void checkExistAccount(String id) {