feat(sis):
- 修改人像图片
This commit is contained in:
parent
62b1e1b803
commit
3560c80c41
@ -220,7 +220,7 @@ public interface UnViewAiBoxApi {
|
||||
* @param imageBase64 工服图片base64
|
||||
* @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
|
||||
public Integer addWorkClothes(UvSystemInfo uvSystemInfo, Integer libId, String imageBase64) {
|
||||
public WorkClothesInfo addWorkClothes(UvSystemInfo uvSystemInfo, Integer libId, String imageBase64) {
|
||||
JSONObject params = new JSONObject();
|
||||
params.put("lib_id", libId);
|
||||
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();
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
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.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
@ -10,16 +11,19 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.sis.domain.SisDeviceManage;
|
||||
import org.dromara.sis.domain.bo.SisDeviceManageBo;
|
||||
import org.dromara.sis.mapper.SisDeviceManageMapper;
|
||||
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.res.DoorDeviceAddRes;
|
||||
import org.dromara.sis.service.ISisDeviceManageService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.sis.domain.bo.SisAccessControlBo;
|
||||
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
||||
import org.dromara.sis.domain.SisAccessControl;
|
||||
import org.dromara.sis.mapper.SisAccessControlMapper;
|
||||
import org.dromara.sis.service.ISisAccessControlService;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -38,7 +42,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
||||
|
||||
private final SisAccessControlMapper baseMapper;
|
||||
private final DoorDeviceService doorDeviceService;
|
||||
private final SisDeviceManageMapper sisDeviceManageMapper;
|
||||
private final ISisDeviceManageService sisDeviceManageService;
|
||||
|
||||
/**
|
||||
* 查询门禁设备
|
||||
@ -103,49 +107,51 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertByBo(SisAccessControlBo bo) {
|
||||
SisAccessControl add = MapstructUtils.convert(bo, SisAccessControl.class);
|
||||
validEntityBeforeSave(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;
|
||||
}
|
||||
}
|
||||
|
||||
Assert.notNull(add, "数据处理失败");
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
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){
|
||||
SisDeviceManage device = new SisDeviceManage();
|
||||
SisDeviceManageBo device = new SisDeviceManageBo();
|
||||
device.setId(bo.getDeviceId());
|
||||
device.setAccessControlId(add.getId());
|
||||
sisDeviceManageMapper.updateById(device);
|
||||
sisDeviceManageService.updateByBo(device);
|
||||
}
|
||||
}
|
||||
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.service.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
@ -107,6 +108,7 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertByBo(SisPersonLibImgBo bo) {
|
||||
SisPersonLibImg add = MapstructUtils.convert(bo, SisPersonLibImg.class);
|
||||
Assert.notNull(add, "数据处理失败");
|
||||
@ -116,10 +118,13 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
|
||||
if (flag) {
|
||||
// 获取人像库关联设备Id
|
||||
SisPersonLibVo libVo = sisPersonLibService.queryById(bo.getLibId());
|
||||
Assert.notNull(libVo, "人像库不存在,id=" + bo.getLibId());
|
||||
try {
|
||||
if (libVo.getLibType() == 1L) {
|
||||
Assert.notNull(libVo, "人像库不存在,id=" + bo.getLibId());
|
||||
} else {
|
||||
Assert.notNull(libVo, "工服库不存在,id=" + bo.getLibId());
|
||||
}
|
||||
|
||||
long eqp_id;
|
||||
try {
|
||||
long eqp_lib_id;
|
||||
Integer eqp_lib_img_id;
|
||||
String eqp_lib_img_url = null;
|
||||
@ -129,7 +134,11 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
|
||||
// 查询设备信息
|
||||
SisAccessControlDeviceVo vo = sisAccessControlDeviceService.queryById(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();
|
||||
systemInfo.setAccount(vo.getEqpAccount());
|
||||
@ -144,23 +153,29 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
|
||||
List<SisLibDeviceRefVo> refVo = libDeviceRefService.queryList(refBo);
|
||||
Assert.notNull(refVo, "系统库与设备库关联关系不存在!libId:{},eqpId:{}", bo.getLibId(), eqpId);
|
||||
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());
|
||||
|
||||
// 发起请求获取响应
|
||||
UvModel.AddPersonResult addPersonResult = unViewAiBoxApi.addPerson(systemInfo, addPersonParams);
|
||||
Assert.notNull(addPersonResult, "图片上传宇视盒子失败");
|
||||
eqp_lib_img_id = addPersonResult.getPerson_id();
|
||||
if (libVo.getLibType() == 1) {
|
||||
// 宇视添加人像
|
||||
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());
|
||||
// 发起请求获取响应
|
||||
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人像
|
||||
if (bo.getIsSyncE8()) {
|
||||
// 调用e8人像上传接口
|
||||
@ -184,7 +199,8 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
|
||||
log.info("同步上传照片完成!");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
// 处理异常并重新抛出
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
@ -218,36 +234,42 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
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);
|
||||
boolean del = baseMapper.deleteByIds(ids) > 0;
|
||||
Assert.isTrue(del, "删除失败");
|
||||
|
||||
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 -> {
|
||||
UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo();
|
||||
systemInfo.setAccount(item.getEqpAccount());
|
||||
systemInfo.setPassword(item.getEqpPwd());
|
||||
systemInfo.setIp(item.getEqpIp());
|
||||
systemInfo.setPort(item.getEqpPort());
|
||||
List<AccessControlLibDeviceBo> ls = libDeviceRefService.queryDeviceListByLibIds(refLibIds);
|
||||
Assert.notEmpty(ls, "库与设备关联关系不存在");
|
||||
|
||||
if (item.getEqpLibType() == 1) {
|
||||
Boolean b = unViewAiBoxApi.batchDeletePerson(systemInfo, refImgIds);
|
||||
log.info("删除宇视图片[{}]完成,result={}", refImgIds, b);
|
||||
} else {
|
||||
Boolean b = unViewAiBoxApi.deleteWorkClothes(systemInfo, item.getEqpLibId(), Arrays.stream(refImgIds).toList());
|
||||
log.info("删除宇视服装[{}]完成,result={}", refImgIds, b);
|
||||
}
|
||||
});
|
||||
ls.forEach(item -> {
|
||||
UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo();
|
||||
systemInfo.setAccount(item.getEqpAccount());
|
||||
systemInfo.setPassword(item.getEqpPwd());
|
||||
systemInfo.setIp(item.getEqpIp());
|
||||
systemInfo.setPort(item.getEqpPort());
|
||||
|
||||
Boolean refFlag = libDeviceImgRefService.deleteWithValidByIds(refIds, true);
|
||||
if (!refFlag) return false;
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
Boolean b;
|
||||
if (item.getEqpLibType() == 1) {
|
||||
b = unViewAiBoxApi.batchDeletePerson(systemInfo, refImgIds);
|
||||
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