Merge branch 'master' of http://47.109.37.87:3000/by2025/SmartParks
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
15683799673 2025-06-29 18:30:05 +08:00
commit 6ea6c79341
20 changed files with 292 additions and 133 deletions

View File

@ -27,7 +27,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
* 前端访问路由地址为:/sis/authRecord
*
* @author lsm
* @date 2025-06-28
* @since 2025-06-28
*/
@Validated
@RequiredArgsConstructor
@ -75,7 +75,7 @@ public class SisAuthRecordController extends BaseController {
@SaCheckPermission("sis:authRecord:add")
@Log(title = "授权记录", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
@PostMapping("/add")
public R<Void> add(@Validated(AddGroup.class) @RequestBody SisAuthRecordBo bo) {
return toAjax(sisAuthRecordService.insertByBo(bo));
}

View File

@ -35,9 +35,9 @@ public class VoucherControlController {
public R<Boolean> issueVoucher(@RequestBody IssueVoucherReq req) {
log.info("E8发行凭证入参{}", req);
Boolean flag = voucherControlService.issueVoucher(req);
Long flag = voucherControlService.issueVoucher(req);
if (flag) {
if (flag != null) {
return R.ok();
} else {
return R.fail("E8发行凭证调用失败");

View File

@ -28,19 +28,24 @@ public class SisAuthRecord extends TenantEntity {
private Long id;
/**
* 人像id
* 图像库id
*/
private Long libId;
/**
* 图片id
*/
private Long imgId;
/**
* 门禁id
*/
private String acId;
private Long acId;
/**
* 设备id
*/
private String eqbId;
private Long eqbId;
}

View File

@ -52,9 +52,4 @@ public class SisLibDeviceImgRef extends TenantEntity {
*/
private Long eqpLibImgId;
/**
* e8图片地址
*/
private String eqpLibImgUrl;
}

View File

@ -29,22 +29,20 @@ public class SisAuthRecordBo extends BaseEntity {
private Long id;
/**
* 人像id
* 图像库Id
*/
@NotNull(message = "图像id不能为空", groups = {AddGroup.class, EditGroup.class})
private Long imgId;
@NotNull(message = "图像库Id不能为空", groups = {AddGroup.class, EditGroup.class})
private Long libId;
/**
* 图像id列表
*/
@NotNull(message = "图像id列表不能为空", groups = {AddGroup.class, EditGroup.class})
private List<Long> imgIds;
/**
* 门禁id列表
*/
@NotNull(message = "门禁id列表能为空", groups = {AddGroup.class, EditGroup.class})
private List<Long> acIds;
/**
* 设备id列表
*/
@NotNull(message = "设备id列表不能为空", groups = {AddGroup.class, EditGroup.class})
private List<Long> eqbIds;
}

View File

@ -56,9 +56,4 @@ public class SisLibDeviceImgRefBo extends BaseEntity {
@NotNull(message = "设备库图片id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long eqpLibImgId;
/**
* e8图片地址
*/
private String eqpLibImgUrl;
}

View File

@ -31,6 +31,12 @@ public class SisAuthRecordVo implements Serializable {
@ExcelProperty(value = "主键id")
private Long id;
/**
* 图像库Id
*/
@ExcelProperty(value = "图像库Id")
private Long libId;
/**
* 人像id
*/
@ -38,16 +44,16 @@ public class SisAuthRecordVo implements Serializable {
private Long imgId;
/**
* 门禁id列表
* 门禁id
*/
@ExcelProperty(value = "门禁id列表")
private List<Long> acIds;
@ExcelProperty(value = "门禁id")
private Long acId;
/**
* 设备id列表
* 设备id
*/
@ExcelProperty(value = "设备id列表")
private List<Long> eqbIds;
@ExcelProperty(value = "设备id")
private Long eqbId;
}

View File

@ -60,10 +60,4 @@ public class SisLibDeviceImgRefVo implements Serializable {
@ExcelProperty(value = "设备库图片id")
private Long eqpLibImgId;
/**
* e8图片地址
*/
@ExcelProperty(value = "e8图片地址")
private String eqpLibImgUrl;
}

View File

@ -3,10 +3,13 @@ package org.dromara.sis.sdk.e8;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceAddReq;
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceUpdateReq;
import org.dromara.sis.sdk.e8.domain.door.res.AuthDoorDeviceFindRes;
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceAddRes;
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceFindRes;
import org.dromara.sis.sdk.e8.domain.QueryDto;
import java.util.List;
/**
* @author lsm
* @apiNote DoorDeviceService
@ -53,4 +56,11 @@ public interface DoorDeviceService {
* @return Boolean
*/
Boolean deleteDoorDevice(Integer id);
/**
* 分页获取授权门信息
*
* @return TableDataInfo<AuthDoorDeviceFindRes>
*/
List<AuthDoorDeviceFindRes> getPageAuthDoorDeviceList();
}

View File

@ -17,7 +17,7 @@ public interface VoucherControlService {
* @param req 凭证数据
* @return Boolean
*/
Boolean issueVoucher(IssueVoucherReq req);
Long issueVoucher(IssueVoucherReq req);
/**
* 操作凭证

View File

@ -0,0 +1,22 @@
package org.dromara.sis.sdk.e8.domain.door.res;
import lombok.Data;
/**
* @author lsm
* @apiNote AuthDoorDeviceFindRes
* @since 2025/6/29
*/
@Data
public class AuthDoorDeviceFindRes {
/**
* id
*/
private Long id;
/**
* deviceId
*/
private Long deviceId;
}

View File

@ -0,0 +1,14 @@
package org.dromara.sis.sdk.e8.domain.voucher.res;
import lombok.Data;
/**
* @author lsm
* @apiNote IssueVoucherRes
* @since 2025/6/29
*/
@Data
public class IssueVoucherRes {
private Long id;
}

View File

@ -11,6 +11,7 @@ import org.dromara.sis.sdk.e8.domain.ApiResp;
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceAddReq;
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceFindReq;
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceUpdateReq;
import org.dromara.sis.sdk.e8.domain.door.res.AuthDoorDeviceFindRes;
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceAddRes;
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceFindRes;
import org.dromara.sis.sdk.e8.domain.QueryDto;
@ -18,6 +19,7 @@ import org.dromara.sis.sdk.e8.utils.E8ApiUtil;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -35,6 +37,7 @@ public class DoorDeviceServiceImpl implements DoorDeviceService {
private final static String DOOR_DEVICE_CREATE = "/api/E8Door/man-device-info";
private final static String DOOR_DEVICE_UPDATE = "/api/E8Door/man-device-info/{id}/update";
private final static String DOOR_DEVICE_DELETE = "/api/E8Door/man-device-info/{id}";
private final static String AUTH_DOOR_DEVICE_GET_LIST = "/api/E8Door/man-auth-info/get-page-list-auth-data";
private final E8ApiUtil e8ApiUtil;
@ -170,4 +173,34 @@ public class DoorDeviceServiceImpl implements DoorDeviceService {
return apiResp.getSuccess();
}
/**
* 分页获取授权门信息
*
* @return TableDataInfo<AuthDoorDeviceFindRes>
*/
public List<AuthDoorDeviceFindRes> getPageAuthDoorDeviceList() {
Map<String, Object> queryDto = new HashMap<>();
queryDto.put("type", -1);
queryDto.put("matchString", "");
// 创建一个参数映射用于存储API请求所需的参数
Map<String, Object> params = new HashMap<>();
params.put("PageIndex", 1);
params.put("MaxResultCount", 100000);
params.put("QueryDto", queryDto);
ApiResp apiResp = e8ApiUtil.doPost(params, AUTH_DOOR_DEVICE_GET_LIST);
// 如果API调用不成功则返回null
if (!apiResp.getSuccess()) {
log.error("分页获取授权门信息失败 errorMsg:{}", apiResp);
// 如果响应不成功则返回null
return null;
}
// 将API响应结果转换为Map对象以便后续处理
Map<String, Object> result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() {
}, false);
// 返回list
return JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), AuthDoorDeviceFindRes.class);
}
}

View File

@ -1,6 +1,7 @@
package org.dromara.sis.sdk.e8.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sis.sdk.e8.VoucherControlService;
@ -8,6 +9,7 @@ import org.dromara.sis.sdk.e8.domain.ApiResp;
import org.dromara.sis.sdk.e8.domain.voucher.req.ChangeCardReq;
import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq;
import org.dromara.sis.sdk.e8.domain.voucher.req.OperateVoucherReq;
import org.dromara.sis.sdk.e8.domain.voucher.res.IssueVoucherRes;
import org.dromara.sis.sdk.e8.utils.E8ApiUtil;
import org.springframework.stereotype.Service;
@ -37,16 +39,21 @@ public class VoucherControlServiceImpl implements VoucherControlService {
* @return 是否成功
*/
@Override
public Boolean issueVoucher(IssueVoucherReq req) {
public Long issueVoucher(IssueVoucherReq req) {
// 封装入参
Map<String, Object> params = BeanUtil.beanToMap(req);
// 调用API
ApiResp apiResp = e8ApiUtil.doPost(params, ISSUANCE_VOUCHER);
if (!apiResp.getSuccess()) log.error("E8发行凭证失败errorMsg{}", apiResp);
if (!apiResp.getSuccess()) {
log.error("E8发行凭证失败errorMsg{}", apiResp);
return null;
}
return apiResp.getSuccess();
IssueVoucherRes res = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), IssueVoucherRes.class);
return res.getId();
}
/**

View File

@ -13,7 +13,7 @@ import java.util.List;
* 门禁设备Service接口
*
* @author lxj
* @date 2025-06-25
* @since 2025-06-25
*/
public interface ISisAccessControlService {
@ -66,4 +66,12 @@ public interface ISisAccessControlService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 根据查询列表
*
* @param ids 门禁id
* @return 列表
*/
List<SisAccessControlVo> queryListByIds(Collection<Long> ids);
}

View File

@ -12,7 +12,7 @@ import java.util.List;
* 人像信息Service接口
*
* @author mocheng
* @date 2025-06-24
* @since 2025-06-24
*/
public interface ISisPersonLibImgService {
@ -65,4 +65,12 @@ public interface ISisPersonLibImgService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 根据查询列表
*
* @param ids 图片id
* @return 列表
*/
List<SisPersonLibImgVo> queryListByIds(Collection<Long> ids);
}

View File

@ -140,7 +140,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
// 通讯类型
e8DoorReq.setCommType(0);
// cpuid
e8DoorReq.setCpuID(add.getFactoryCode());
e8DoorReq.setCpuID("");
// ip
e8DoorReq.setIp(add.getAccessIp());
// 端口
@ -207,4 +207,15 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 根据查询列表
*
* @param ids 门禁id
* @return 列表
*/
@Override
public List<SisAccessControlVo> queryListByIds(Collection<Long> ids){
return baseMapper.selectVoByIds(ids);
}
}

View File

@ -2,7 +2,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;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -10,12 +9,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sis.domain.bo.SisEEightRefBo;
import org.dromara.sis.domain.bo.SisLibDeviceImgRefBo;
import org.dromara.sis.domain.bo.SisLibDeviceRefBo;
import org.dromara.sis.domain.vo.*;
import org.dromara.sis.sdk.e8.AccessControlService;
import org.dromara.sis.sdk.e8.DoorDeviceService;
import org.dromara.sis.sdk.e8.VoucherControlService;
import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq;
import org.dromara.sis.sdk.e8.domain.door.res.AuthDoorDeviceFindRes;
import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq;
import org.dromara.sis.sdk.unview.UnViewAiBoxApi;
import org.dromara.sis.sdk.unview.model.UvModel;
@ -29,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
import java.util.stream.Collectors;
/**
* 授权记录Service业务层处理
@ -43,9 +46,11 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
private final UnViewAiBoxApi unViewAiBoxApi;
private final SisAuthRecordMapper baseMapper;
private final VoucherControlService vouchService;
private final VoucherControlService e8VouchService;
private final DoorDeviceService e8DoorDeviceService;
private final ISisPersonLibService sisPersonLibService;
private final AccessControlService accessControlService;
private final ISisEEightRefService sisEEightRefService;
private final AccessControlService e8AccessControlService;
private final ISisPersonLibImgService sisPersonLibImgService;
private final ISisLibDeviceRefService sisLibDeviceRefService;
private final ISisAccessControlService sisAccessControlService;
@ -60,14 +65,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
*/
@Override
public SisAuthRecordVo queryById(Long id) {
SisAuthRecord sisAuthRecord = baseMapper.selectById(id);
if (sisAuthRecord == null) return null;
List<Long> acIds = Arrays.stream(sisAuthRecord.getAcId().split(",")).map(Long::parseLong).toList();
List<Long> eqbIds = Arrays.stream(sisAuthRecord.getEqbId().split(",")).map(Long::parseLong).toList();
SisAuthRecordVo vo = MapstructUtils.convert(sisAuthRecord, SisAuthRecordVo.class);
vo.setAcIds(acIds);
vo.setEqbIds(eqbIds);
return vo;
return baseMapper.selectVoById(id);
}
/**
@ -79,7 +77,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
*/
@Override
public TableDataInfo<SisAuthRecordVo> queryPageList(SisAuthRecordBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<SisAuthRecord> lqw = buildQueryWrapper(bo);
LambdaQueryWrapper<SisAuthRecord> lqw = Wrappers.lambdaQuery();
Page<SisAuthRecordVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
@ -100,7 +98,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<SisAuthRecord> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(SisAuthRecord::getId);
lqw.eq(bo.getImgId() != null, SisAuthRecord::getImgId, bo.getImgId());
lqw.eq(bo.getLibId() != null, SisAuthRecord::getLibId, bo.getLibId());
return lqw;
}
@ -113,32 +111,49 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(SisAuthRecordBo bo) {
SisAuthRecord add = MapstructUtils.convert(bo, SisAuthRecord.class);
Assert.notNull(add, "数据处理失败");
add.setAcId(StringUtils.join(bo.getAcIds(), ","));
add.setEqbId(StringUtils.join(bo.getEqbIds(), ","));
boolean flag = baseMapper.insert(add) > 0;
log.info("图片{},开始对{}门禁授权,下发{}设备照片", add.getImgId(), bo.getAcIds(), bo.getEqbIds());
if (flag) {
SisPersonLibImgVo imgVo = sisPersonLibImgService.queryById(bo.getImgId());
Assert.notNull(imgVo, "图片不存在id=" + bo.getImgId());
SisPersonLibVo libVo = sisPersonLibService.queryById(imgVo.getLibId());
Assert.notNull(libVo, "图像库不存在id=" + imgVo.getLibId());
List<SisLibDeviceRefVo> refVos = sisLibDeviceRefService.queryByLibIds(Collections.singleton(bo.getLibId()));
Assert.notEmpty(refVos, "图像库与设备关联关系不存在");
List<Long> eqpIds = refVos.stream().map(SisLibDeviceRefVo::getEqpId).toList();
try {
long eqp_lib_id;
Integer eqp_lib_img_id;
String eqp_lib_img_url;
byte[] imageByte = Files.readAllBytes(Paths.get(imgVo.getImgUrl()));
boolean flag = false;
log.info("开始写入授权记录,图片:{}、门禁:{}、设备:{}", bo.getImgIds(), bo.getAcIds(), eqpIds);
for (Long imgId : bo.getImgIds()) {
for (Long acId : bo.getAcIds()) {
for (Long eqpId : eqpIds) {
SisAuthRecord add = MapstructUtils.convert(bo, SisAuthRecord.class);
Assert.notNull(add, "数据处理失败");
add.setAcId(acId);
add.setImgId(imgId);
add.setEqbId(eqpId);
flag = baseMapper.insert(add) > 0;
Assert.isTrue(flag, "授权记录写入失败");
}
}
}
log.info("授权记录写入完成");
SisPersonLibVo libVo = sisPersonLibService.queryById(bo.getLibId());
Assert.notNull(libVo, "图像库不存在id=" + (bo.getLibId()));
List<SisPersonLibImgVo> imgList = sisPersonLibImgService.queryListByIds(bo.getImgIds());
Assert.notEmpty(imgList, "图片不存在");
List<SisAccessControlVo> acList = sisAccessControlService.queryListByIds(bo.getAcIds());
Assert.notEmpty(acList, "门禁设备不存在!");
try {
log.info("开始对宇视盒子下发照片,图片:{}、设备:{}", bo.getImgIds(), eqpIds);
for (SisPersonLibImgVo imgVo : imgList) {
for (Long eqpId : eqpIds) {
long eqp_lib_id;
Integer eqp_lib_img_id;
byte[] imageByte = Files.readAllBytes(Paths.get(imgVo.getImgUrl()));
// TODO 图片开始下发到宇视盒子
log.info("图片开始下发到宇视盒子");
for (Long eqpId : bo.getEqbIds()) {
SisAccessControlDeviceVo vo = sisAccessControlDeviceService.queryById(eqpId);
Assert.notNull(vo, "门禁控制设备不存在id=" + eqpId);
log.info(libVo.getLibType() == 1 ? "准备写入门禁设备code={}" : "准备写入工服设备code={}", vo.getEqpNo());
log.info(libVo.getLibType() == 1 ? "准备写入人像设备code={}" : "准备写入工服设备code={}", vo.getEqpNo());
UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo();
systemInfo.setAccount(vo.getEqpAccount());
@ -179,59 +194,88 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
SisLibDeviceImgRefBo ref = new SisLibDeviceImgRefBo();
ref.setLibId(libVo.getId());
ref.setImgId(add.getId());
ref.setImgId(imgVo.getId());
ref.setEqpId(eqpId);
ref.setEqpLibId(eqp_lib_id);
ref.setEqpLibImgId(eqp_lib_img_id.longValue());
Boolean insert = sisLibDeviceImgRefService.insertByBo(ref);
Assert.isTrue(insert, "写入图片关联关系表失败!");
}
log.info("图片开始下发完成!");
// TODO 对门禁设备授权
log.info("图片开始对门禁设备授权");
for (Long acId : bo.getAcIds()) {
SisAccessControlVo acVo = sisAccessControlService.queryById(acId);
Assert.notNull(acVo, "门禁设备不存在");
// TODO 阶段调试E8人脸设备非E8人脸设备不处理
if (acVo.getControlType() == 1 || acVo.getAccessType() == 2) continue;
log.info("照片上传E8平台id=" + bo.getImgId());
String url = vouchService.uploadFace(imageByte);
Assert.notNull(url, "图片上传E8平台失败");
eqp_lib_img_url = url;
log.info("E8平台发行凭证");
IssueVoucherReq req = new IssueVoucherReq();
req.setCardType(34);
req.setVoucherType(70);
// TODO 临时默认人员
req.setPersonID(539696740646981L);
req.setTxtData(eqp_lib_img_url);
Boolean issue = vouchService.issueVoucher(req);
Assert.isTrue(issue, "E8平台发行凭证失败");
log.info("E8平台授权");
CustomerAuthAddReq authReq = new CustomerAuthAddReq();
authReq.setAuthType(0);
authReq.setScheduleId(1L);
authReq.setPersonIds(Collections.singletonList(539696740646981L));
authReq.setStartTime("2025-06-25 11: 23: 39");
authReq.setEndTime("2025-07-25 11: 23: 39");
CustomerAuthAddReq.AuthGroupData authGroupData = new CustomerAuthAddReq.AuthGroupData();
authGroupData.setId(Long.parseLong(acVo.getOutCode()));
authGroupData.setType(1);
authReq.setAuthData(List.of(authGroupData));
Boolean auth = accessControlService.addCustomerAuth(authReq);
Assert.isTrue(auth, "E8平台授权失败");
}
log.info("门禁设备授权完成");
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
log.info("图片开始下发完成!");
log.info("开始写入E8平台图片{}、门禁:{}", bo.getImgIds(), bo.getAcIds());
for (SisPersonLibImgVo imgVo : imgList) {
byte[] imageByte = Files.readAllBytes(Paths.get(imgVo.getImgUrl()));
log.info("E8平台上传图片{}", imgVo.getId());
String url = e8VouchService.uploadFace(imageByte);
Assert.notNull(url, "E8平台上传图片失败");
log.info("E8平台上传图片完成!");
log.info("E8平台发行凭证");
IssueVoucherReq req = new IssueVoucherReq();
// 34普通用户卡
req.setCardType(34);
// 70人脸凭证
req.setVoucherType(70);
// TODO 临时默认人员
req.setPersonID(539696740646981L);
req.setTxtData(url);
Long vId = e8VouchService.issueVoucher(req);
Assert.notNull(vId, "E8平台发行凭证失败");
log.info("E8平台发行凭证完成!");
log.info("E8平台授权凭证");
// E8平台授权门列表
List<AuthDoorDeviceFindRes> authDoor = e8DoorDeviceService.getPageAuthDoorDeviceList();
Map<Long, AuthDoorDeviceFindRes> authDoorMap = authDoor.stream()
.collect(Collectors.toMap(AuthDoorDeviceFindRes::getDeviceId, authDoorRes -> authDoorRes));
List<CustomerAuthAddReq.AuthGroupData> authList = acList.stream()
.filter(acVo -> acVo.getControlType() != 1 && acVo.getAccessType() != 2)
.map(acVo -> {
CustomerAuthAddReq.AuthGroupData door = new CustomerAuthAddReq.AuthGroupData();
door.setType(0);
door.setGatewayType(1);
Long id = Long.parseLong(acVo.getOutCode());
door.setId(id);
// 如果 authDoorMap 中存在对应的 deviceId则更新 id
AuthDoorDeviceFindRes authDoorRes = authDoorMap.get(id);
if (authDoorRes != null) {
door.setId(authDoorRes.getId());
}
return door;
}).toList();
CustomerAuthAddReq authReq = new CustomerAuthAddReq();
authReq.setAuthType(0);
authReq.setScheduleId(1L);
authReq.setPersonIds(Collections.singletonList(539696740646981L));
authReq.setStartTime("2025-06-25 11: 23: 39");
authReq.setEndTime("2025-07-25 11: 23: 39");
authReq.setAuthData(authList);
Boolean auth = e8AccessControlService.addCustomerAuth(authReq);
Assert.isTrue(auth, "E8平台授权失败");
log.info("E8平台授权完成!");
SisEEightRefBo ref = new SisEEightRefBo();
ref.setUserId(1L);
ref.setRemoteImgUrl(url);
ref.setRemoteVoucherId(vId);
ref.setAcIds(bo.getAcIds());
ref.setRemoteUserId(539696740646981L);
ref.setImgId(imgVo.getId());
Boolean insert = sisEEightRefService.insertByBo(ref);
Assert.isTrue(insert, "写入E8关联关系表失败!");
}
log.info("写入E8平台完成!");
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
return flag;
}

View File

@ -15,6 +15,7 @@ import org.dromara.sis.domain.vo.SisEEightRefVo;
import org.dromara.sis.domain.SisEEightRef;
import org.dromara.sis.mapper.SisEEightRefMapper;
import org.dromara.sis.service.ISisEEightRefService;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
@ -25,7 +26,7 @@ import java.util.Collection;
* E8平台对应关系Service业务层处理
*
* @author lsm
* @date 2025-06-29
* @since 2025-06-29
*/
@Slf4j
@RequiredArgsConstructor
@ -97,14 +98,11 @@ public class SisEEightRefServiceImpl implements ISisEEightRefService {
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(SisEEightRefBo bo) {
SisEEightRef add = MapstructUtils.convert(bo, SisEEightRef.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
add.setAcId(StringUtils.join(bo.getAcIds(), ","));
return baseMapper.insert(add) > 0;
}
/**

View File

@ -173,4 +173,15 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
return true;
}
/**
* 查询列表
*
* @param Ids 图片id
* @return 列表
*/
@Override
public List<SisPersonLibImgVo> queryListByIds(Collection<Long> Ids) {
return baseMapper.selectVoByIds(Ids);
}
}