feat(sis):
- 修改人像图片
This commit is contained in:
parent
62b1e1b803
commit
3560c80c41
@ -220,7 +220,7 @@ public interface UnViewAiBoxApi {
|
|||||||
* @param imageBase64 工服图片base64
|
* @param imageBase64 工服图片base64
|
||||||
* @return 返回工服的人员id
|
* @return 返回工服的人员id
|
||||||
*/
|
*/
|
||||||
Integer addWorkClothes(UvSystemInfo systemInfo, Integer libId, String imageBase64);
|
WorkClothesInfo addWorkClothes(UvSystemInfo systemInfo, Integer libId, String imageBase64);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -218,11 +218,11 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi {
|
|||||||
|
|
||||||
/*--------------------------------------------------------------------工服 ---------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------工服 ---------------------------------------------------------------------------*/
|
||||||
@Override
|
@Override
|
||||||
public Integer addWorkClothes(UvSystemInfo uvSystemInfo, Integer libId, String imageBase64) {
|
public WorkClothesInfo addWorkClothes(UvSystemInfo uvSystemInfo, Integer libId, String imageBase64) {
|
||||||
JSONObject params = new JSONObject();
|
JSONObject params = new JSONObject();
|
||||||
params.put("lib_id", libId);
|
params.put("lib_id", libId);
|
||||||
params.put("image_base64", imageBase64);
|
params.put("image_base64", imageBase64);
|
||||||
UniViewResult<Integer> request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.WORK_CLOTHES_ADD, params, Integer.class);
|
UniViewResult<WorkClothesInfo> request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.WORK_CLOTHES_ADD, params, WorkClothesInfo.class);
|
||||||
return request.result();
|
return request.result();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package org.dromara.sis.service.impl;
|
package org.dromara.sis.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.lang.Assert;
|
||||||
import org.dromara.common.core.utils.MapstructUtils;
|
import org.dromara.common.core.utils.MapstructUtils;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
@ -10,16 +11,19 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.sis.domain.SisDeviceManage;
|
import org.dromara.sis.domain.SisDeviceManage;
|
||||||
|
import org.dromara.sis.domain.bo.SisDeviceManageBo;
|
||||||
import org.dromara.sis.mapper.SisDeviceManageMapper;
|
import org.dromara.sis.mapper.SisDeviceManageMapper;
|
||||||
import org.dromara.sis.sdk.e8.DoorDeviceService;
|
import org.dromara.sis.sdk.e8.DoorDeviceService;
|
||||||
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceAddReq;
|
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceAddReq;
|
||||||
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceAddRes;
|
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceAddRes;
|
||||||
|
import org.dromara.sis.service.ISisDeviceManageService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.dromara.sis.domain.bo.SisAccessControlBo;
|
import org.dromara.sis.domain.bo.SisAccessControlBo;
|
||||||
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
||||||
import org.dromara.sis.domain.SisAccessControl;
|
import org.dromara.sis.domain.SisAccessControl;
|
||||||
import org.dromara.sis.mapper.SisAccessControlMapper;
|
import org.dromara.sis.mapper.SisAccessControlMapper;
|
||||||
import org.dromara.sis.service.ISisAccessControlService;
|
import org.dromara.sis.service.ISisAccessControlService;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -38,7 +42,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
|||||||
|
|
||||||
private final SisAccessControlMapper baseMapper;
|
private final SisAccessControlMapper baseMapper;
|
||||||
private final DoorDeviceService doorDeviceService;
|
private final DoorDeviceService doorDeviceService;
|
||||||
private final SisDeviceManageMapper sisDeviceManageMapper;
|
private final ISisDeviceManageService sisDeviceManageService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询门禁设备
|
* 查询门禁设备
|
||||||
@ -103,49 +107,51 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
|||||||
* @return 是否新增成功
|
* @return 是否新增成功
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean insertByBo(SisAccessControlBo bo) {
|
public Boolean insertByBo(SisAccessControlBo bo) {
|
||||||
SisAccessControl add = MapstructUtils.convert(bo, SisAccessControl.class);
|
SisAccessControl add = MapstructUtils.convert(bo, SisAccessControl.class);
|
||||||
validEntityBeforeSave(add);
|
Assert.notNull(add, "数据处理失败");
|
||||||
|
|
||||||
// 添加E8门禁设备
|
|
||||||
if (add.getControlType() == 2L){
|
|
||||||
DoorDeviceAddReq e8DoorReq = new DoorDeviceAddReq();
|
|
||||||
// 设备类型
|
|
||||||
e8DoorReq.setType(add.getAccessType());
|
|
||||||
// 设备名称
|
|
||||||
e8DoorReq.setName(add.getAccessName());
|
|
||||||
// 通讯类型
|
|
||||||
e8DoorReq.setCommType(0);
|
|
||||||
// cpuid
|
|
||||||
e8DoorReq.setCpuID(add.getFactoryCode());
|
|
||||||
// ip
|
|
||||||
e8DoorReq.setIp(add.getAccessIp());
|
|
||||||
// 端口
|
|
||||||
e8DoorReq.setPort(add.getAccessPort());
|
|
||||||
// 网关ip
|
|
||||||
e8DoorReq.setGatewayIP("");
|
|
||||||
// 子网掩码
|
|
||||||
e8DoorReq.setNetMask("255.255.255.0");
|
|
||||||
|
|
||||||
DoorDeviceAddRes e8DoorRes = doorDeviceService.addDoorDevice(e8DoorReq);
|
|
||||||
|
|
||||||
if (e8DoorRes != null) {
|
|
||||||
add.setOutCode(e8DoorRes.getId().toString());
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
if (flag) {
|
if (flag) {
|
||||||
bo.setId(add.getId());
|
// 添加E8门禁设备
|
||||||
|
if (add.getControlType() == 2L){
|
||||||
|
log.info("开始同步写入E8门禁");
|
||||||
|
DoorDeviceAddReq e8DoorReq = new DoorDeviceAddReq();
|
||||||
|
// 设备类型
|
||||||
|
e8DoorReq.setType(add.getAccessType());
|
||||||
|
// 设备名称
|
||||||
|
e8DoorReq.setName(add.getAccessName());
|
||||||
|
// 通讯类型
|
||||||
|
e8DoorReq.setCommType(0);
|
||||||
|
// cpuid
|
||||||
|
e8DoorReq.setCpuID(add.getFactoryCode());
|
||||||
|
// ip
|
||||||
|
e8DoorReq.setIp(add.getAccessIp());
|
||||||
|
// 端口
|
||||||
|
e8DoorReq.setPort(add.getAccessPort());
|
||||||
|
// 网关ip
|
||||||
|
e8DoorReq.setGatewayIP("");
|
||||||
|
// 子网掩码
|
||||||
|
e8DoorReq.setNetMask("255.255.255.0");
|
||||||
|
|
||||||
|
DoorDeviceAddRes e8DoorRes = doorDeviceService.addDoorDevice(e8DoorReq);
|
||||||
|
Assert.notNull(e8DoorRes, "写入E8平台失败");
|
||||||
|
|
||||||
|
log.info("E8平台写入成功,将返回值:{},回写到{}门禁中!",e8DoorRes.getId(),add.getAccessName());
|
||||||
|
SisAccessControlBo wbBo = new SisAccessControlBo();
|
||||||
|
wbBo.setId(add.getId());
|
||||||
|
wbBo.setOutCode(e8DoorRes.getId().toString());
|
||||||
|
Boolean update = this.updateByBo(wbBo);
|
||||||
|
Assert.isTrue(update, "外部编码回写失败");
|
||||||
|
log.info("E8平台写入完成!");
|
||||||
|
}
|
||||||
|
|
||||||
// 判断是否绑定摄像头
|
// 判断是否绑定摄像头
|
||||||
if (bo.getDeviceId() != null){
|
if (bo.getDeviceId() != null){
|
||||||
SisDeviceManage device = new SisDeviceManage();
|
SisDeviceManageBo device = new SisDeviceManageBo();
|
||||||
device.setId(bo.getDeviceId());
|
device.setId(bo.getDeviceId());
|
||||||
device.setAccessControlId(add.getId());
|
device.setAccessControlId(add.getId());
|
||||||
sisDeviceManageMapper.updateById(device);
|
sisDeviceManageService.updateByBo(device);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return flag;
|
return flag;
|
||||||
|
@ -22,6 +22,7 @@ import org.dromara.sis.sdk.unview.UnViewAiBoxApi;
|
|||||||
import org.dromara.sis.sdk.unview.model.UvModel;
|
import org.dromara.sis.sdk.unview.model.UvModel;
|
||||||
import org.dromara.sis.service.*;
|
import org.dromara.sis.service.*;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
@ -107,6 +108,7 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
|
|||||||
* @return 是否新增成功
|
* @return 是否新增成功
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean insertByBo(SisPersonLibImgBo bo) {
|
public Boolean insertByBo(SisPersonLibImgBo bo) {
|
||||||
SisPersonLibImg add = MapstructUtils.convert(bo, SisPersonLibImg.class);
|
SisPersonLibImg add = MapstructUtils.convert(bo, SisPersonLibImg.class);
|
||||||
Assert.notNull(add, "数据处理失败");
|
Assert.notNull(add, "数据处理失败");
|
||||||
@ -116,10 +118,13 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
|
|||||||
if (flag) {
|
if (flag) {
|
||||||
// 获取人像库关联设备Id
|
// 获取人像库关联设备Id
|
||||||
SisPersonLibVo libVo = sisPersonLibService.queryById(bo.getLibId());
|
SisPersonLibVo libVo = sisPersonLibService.queryById(bo.getLibId());
|
||||||
Assert.notNull(libVo, "人像库不存在,id=" + bo.getLibId());
|
if (libVo.getLibType() == 1L) {
|
||||||
try {
|
Assert.notNull(libVo, "人像库不存在,id=" + bo.getLibId());
|
||||||
|
} else {
|
||||||
|
Assert.notNull(libVo, "工服库不存在,id=" + bo.getLibId());
|
||||||
|
}
|
||||||
|
|
||||||
long eqp_id;
|
try {
|
||||||
long eqp_lib_id;
|
long eqp_lib_id;
|
||||||
Integer eqp_lib_img_id;
|
Integer eqp_lib_img_id;
|
||||||
String eqp_lib_img_url = null;
|
String eqp_lib_img_url = null;
|
||||||
@ -129,7 +134,11 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
|
|||||||
// 查询设备信息
|
// 查询设备信息
|
||||||
SisAccessControlDeviceVo vo = sisAccessControlDeviceService.queryById(eqpId);
|
SisAccessControlDeviceVo vo = sisAccessControlDeviceService.queryById(eqpId);
|
||||||
Assert.notNull(vo, "门禁控制设备不存在,id=" + eqpId);
|
Assert.notNull(vo, "门禁控制设备不存在,id=" + eqpId);
|
||||||
log.info("准备写入{}门禁设备人像库", vo.getEqpNo());
|
if (libVo.getLibType() == 1) {
|
||||||
|
log.info("准备写入{}门禁设备人像库", vo.getEqpNo());
|
||||||
|
} else {
|
||||||
|
log.info("准备写入{}门禁设备工服库", vo.getEqpNo());
|
||||||
|
}
|
||||||
|
|
||||||
UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo();
|
UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo();
|
||||||
systemInfo.setAccount(vo.getEqpAccount());
|
systemInfo.setAccount(vo.getEqpAccount());
|
||||||
@ -144,23 +153,29 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
|
|||||||
List<SisLibDeviceRefVo> refVo = libDeviceRefService.queryList(refBo);
|
List<SisLibDeviceRefVo> refVo = libDeviceRefService.queryList(refBo);
|
||||||
Assert.notNull(refVo, "系统库与设备库关联关系不存在!libId:{},eqpId:{}", bo.getLibId(), eqpId);
|
Assert.notNull(refVo, "系统库与设备库关联关系不存在!libId:{},eqpId:{}", bo.getLibId(), eqpId);
|
||||||
eqp_lib_id = refVo.get(0).getEqpLibId();
|
eqp_lib_id = refVo.get(0).getEqpLibId();
|
||||||
// 宇视添加人像
|
|
||||||
UvModel.AddPersonParams addPersonParams = new UvModel.AddPersonParams();
|
|
||||||
addPersonParams.setPerson_name(bo.getImgName());
|
|
||||||
addPersonParams.setImage_base64(Base64.getEncoder().encodeToString(imageByte));
|
|
||||||
addPersonParams.setLib_id(Math.toIntExact(eqp_lib_id));
|
|
||||||
addPersonParams.setSex(bo.getSex());
|
|
||||||
addPersonParams.setEmail(bo.getEmail());
|
|
||||||
addPersonParams.setTel(bo.getTel());
|
|
||||||
addPersonParams.setCertificate_type(bo.getCertificateType());
|
|
||||||
addPersonParams.setCertificate_no(bo.getCertificateNo());
|
|
||||||
addPersonParams.setBirth_date(bo.getBirthDate());
|
|
||||||
|
|
||||||
// 发起请求获取响应
|
if (libVo.getLibType() == 1) {
|
||||||
UvModel.AddPersonResult addPersonResult = unViewAiBoxApi.addPerson(systemInfo, addPersonParams);
|
// 宇视添加人像
|
||||||
Assert.notNull(addPersonResult, "图片上传宇视盒子失败");
|
UvModel.AddPersonParams addPersonParams = new UvModel.AddPersonParams();
|
||||||
eqp_lib_img_id = addPersonResult.getPerson_id();
|
addPersonParams.setPerson_name(bo.getImgName());
|
||||||
|
addPersonParams.setImage_base64(Base64.getEncoder().encodeToString(imageByte));
|
||||||
|
addPersonParams.setLib_id(Math.toIntExact(eqp_lib_id));
|
||||||
|
addPersonParams.setSex(bo.getSex());
|
||||||
|
addPersonParams.setEmail(bo.getEmail());
|
||||||
|
addPersonParams.setTel(bo.getTel());
|
||||||
|
addPersonParams.setCertificate_type(bo.getCertificateType());
|
||||||
|
addPersonParams.setCertificate_no(bo.getCertificateNo());
|
||||||
|
addPersonParams.setBirth_date(bo.getBirthDate());
|
||||||
|
// 发起请求获取响应
|
||||||
|
UvModel.AddPersonResult addResult = unViewAiBoxApi.addPerson(systemInfo, addPersonParams);
|
||||||
|
eqp_lib_img_id = addResult.getPerson_id();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
UvModel.WorkClothesInfo addResult = unViewAiBoxApi.addWorkClothes(systemInfo, Math.toIntExact(eqp_lib_id), Base64.getEncoder().encodeToString(imageByte));
|
||||||
|
eqp_lib_img_id = addResult.getWorkclothes_id();
|
||||||
|
}
|
||||||
|
Assert.notNull(eqp_lib_img_id, "图片上传宇视盒子失败");
|
||||||
|
log.info("图片上传宇视盒子完成,eqp_lib_img_id = {}", eqp_lib_img_id);
|
||||||
// TODO 新增E8人像
|
// TODO 新增E8人像
|
||||||
if (bo.getIsSyncE8()) {
|
if (bo.getIsSyncE8()) {
|
||||||
// 调用e8人像上传接口
|
// 调用e8人像上传接口
|
||||||
@ -184,7 +199,8 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
|
|||||||
log.info("同步上传照片完成!");
|
log.info("同步上传照片完成!");
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return false;
|
// 处理异常并重新抛出
|
||||||
|
throw new RuntimeException(e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return flag;
|
return flag;
|
||||||
@ -218,36 +234,42 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
|
|||||||
* @return 是否删除成功
|
* @return 是否删除成功
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||||
if (isValid) {
|
boolean del = baseMapper.deleteByIds(ids) > 0;
|
||||||
//TODO 做一些业务上的校验,判断是否需要校验
|
Assert.isTrue(del, "删除失败");
|
||||||
List<SisLibDeviceImgRefVo> list = libDeviceImgRefService.queryListByImgIds(ids);
|
|
||||||
if (list.isEmpty()) return false;
|
|
||||||
Collection<Long> refIds = list.stream().map(SisLibDeviceImgRefVo::getId).toList();
|
|
||||||
Collection<Long> refLibIds = list.stream().map(SisLibDeviceImgRefVo::getEqpLibId).toList();
|
|
||||||
Integer[] refImgIds = list.stream().map(SisLibDeviceImgRefVo::getEqpLibImgId).map(Long::intValue).toArray(Integer[]::new);
|
|
||||||
|
|
||||||
List<AccessControlLibDeviceBo> ls = libDeviceRefService.queryDeviceListByLibIds(refLibIds);
|
List<SisLibDeviceImgRefVo> list = libDeviceImgRefService.queryListByImgIds(ids);
|
||||||
|
Assert.notEmpty(list, "图片关联关系不存在");
|
||||||
|
Collection<Long> refIds = list.stream().map(SisLibDeviceImgRefVo::getId).toList();
|
||||||
|
Collection<Long> refLibIds = list.stream().map(SisLibDeviceImgRefVo::getLibId).toList();
|
||||||
|
Integer[] refImgIds = list.stream().map(SisLibDeviceImgRefVo::getEqpLibImgId).map(Long::intValue).toArray(Integer[]::new);
|
||||||
|
|
||||||
ls.forEach(item -> {
|
List<AccessControlLibDeviceBo> ls = libDeviceRefService.queryDeviceListByLibIds(refLibIds);
|
||||||
UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo();
|
Assert.notEmpty(ls, "库与设备关联关系不存在");
|
||||||
systemInfo.setAccount(item.getEqpAccount());
|
|
||||||
systemInfo.setPassword(item.getEqpPwd());
|
|
||||||
systemInfo.setIp(item.getEqpIp());
|
|
||||||
systemInfo.setPort(item.getEqpPort());
|
|
||||||
|
|
||||||
if (item.getEqpLibType() == 1) {
|
ls.forEach(item -> {
|
||||||
Boolean b = unViewAiBoxApi.batchDeletePerson(systemInfo, refImgIds);
|
UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo();
|
||||||
log.info("删除宇视图片[{}]完成,result={}", refImgIds, b);
|
systemInfo.setAccount(item.getEqpAccount());
|
||||||
} else {
|
systemInfo.setPassword(item.getEqpPwd());
|
||||||
Boolean b = unViewAiBoxApi.deleteWorkClothes(systemInfo, item.getEqpLibId(), Arrays.stream(refImgIds).toList());
|
systemInfo.setIp(item.getEqpIp());
|
||||||
log.info("删除宇视服装[{}]完成,result={}", refImgIds, b);
|
systemInfo.setPort(item.getEqpPort());
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
Boolean refFlag = libDeviceImgRefService.deleteWithValidByIds(refIds, true);
|
Boolean b;
|
||||||
if (!refFlag) return false;
|
if (item.getEqpLibType() == 1) {
|
||||||
}
|
b = unViewAiBoxApi.batchDeletePerson(systemInfo, refImgIds);
|
||||||
return baseMapper.deleteByIds(ids) > 0;
|
log.info("删除宇视图片[{}]完成,result={}", refImgIds, b);
|
||||||
|
} else {
|
||||||
|
b = unViewAiBoxApi.deleteWorkClothes(systemInfo, item.getEqpLibId(), Arrays.stream(refImgIds).toList());
|
||||||
|
log.info("删除宇视服装[{}]完成,result={}", refImgIds, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.isTrue(b, "删除图片失败");
|
||||||
|
});
|
||||||
|
|
||||||
|
Boolean refFlag = libDeviceImgRefService.deleteWithValidByIds(refIds, true);
|
||||||
|
Assert.isTrue(refFlag, "删除图片关联关系失败");
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user