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
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run
This commit is contained in:
commit
6ea6c79341
@ -27,7 +27,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
* 前端访问路由地址为:/sis/authRecord
|
* 前端访问路由地址为:/sis/authRecord
|
||||||
*
|
*
|
||||||
* @author lsm
|
* @author lsm
|
||||||
* @date 2025-06-28
|
* @since 2025-06-28
|
||||||
*/
|
*/
|
||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@ -75,7 +75,7 @@ public class SisAuthRecordController extends BaseController {
|
|||||||
@SaCheckPermission("sis:authRecord:add")
|
@SaCheckPermission("sis:authRecord:add")
|
||||||
@Log(title = "授权记录", businessType = BusinessType.INSERT)
|
@Log(title = "授权记录", businessType = BusinessType.INSERT)
|
||||||
@RepeatSubmit()
|
@RepeatSubmit()
|
||||||
@PostMapping()
|
@PostMapping("/add")
|
||||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody SisAuthRecordBo bo) {
|
public R<Void> add(@Validated(AddGroup.class) @RequestBody SisAuthRecordBo bo) {
|
||||||
return toAjax(sisAuthRecordService.insertByBo(bo));
|
return toAjax(sisAuthRecordService.insertByBo(bo));
|
||||||
}
|
}
|
||||||
|
@ -35,9 +35,9 @@ public class VoucherControlController {
|
|||||||
public R<Boolean> issueVoucher(@RequestBody IssueVoucherReq req) {
|
public R<Boolean> issueVoucher(@RequestBody IssueVoucherReq req) {
|
||||||
log.info("E8发行凭证入参:{}", req);
|
log.info("E8发行凭证入参:{}", req);
|
||||||
|
|
||||||
Boolean flag = voucherControlService.issueVoucher(req);
|
Long flag = voucherControlService.issueVoucher(req);
|
||||||
|
|
||||||
if (flag) {
|
if (flag != null) {
|
||||||
return R.ok();
|
return R.ok();
|
||||||
} else {
|
} else {
|
||||||
return R.fail("E8发行凭证,调用失败!");
|
return R.fail("E8发行凭证,调用失败!");
|
||||||
|
@ -28,19 +28,24 @@ public class SisAuthRecord extends TenantEntity {
|
|||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 人像id
|
* 图像库id
|
||||||
|
*/
|
||||||
|
private Long libId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片id
|
||||||
*/
|
*/
|
||||||
private Long imgId;
|
private Long imgId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 门禁id
|
* 门禁id
|
||||||
*/
|
*/
|
||||||
private String acId;
|
private Long acId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备id
|
* 设备id
|
||||||
*/
|
*/
|
||||||
private String eqbId;
|
private Long eqbId;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -52,9 +52,4 @@ public class SisLibDeviceImgRef extends TenantEntity {
|
|||||||
*/
|
*/
|
||||||
private Long eqpLibImgId;
|
private Long eqpLibImgId;
|
||||||
|
|
||||||
/**
|
|
||||||
* e8图片地址
|
|
||||||
*/
|
|
||||||
private String eqpLibImgUrl;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -29,22 +29,20 @@ public class SisAuthRecordBo extends BaseEntity {
|
|||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 人像id
|
* 图像库Id
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "图像id不能为空", groups = {AddGroup.class, EditGroup.class})
|
@NotNull(message = "图像库Id不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
private Long imgId;
|
private Long libId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图像id列表
|
||||||
|
*/
|
||||||
|
@NotNull(message = "图像id列表不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
|
private List<Long> imgIds;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 门禁id列表
|
* 门禁id列表
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "门禁id列表能为空", groups = {AddGroup.class, EditGroup.class})
|
@NotNull(message = "门禁id列表能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
private List<Long> acIds;
|
private List<Long> acIds;
|
||||||
|
|
||||||
/**
|
|
||||||
* 设备id列表
|
|
||||||
*/
|
|
||||||
@NotNull(message = "设备id列表不能为空", groups = {AddGroup.class, EditGroup.class})
|
|
||||||
private List<Long> eqbIds;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -56,9 +56,4 @@ public class SisLibDeviceImgRefBo extends BaseEntity {
|
|||||||
@NotNull(message = "设备库图片id不能为空", groups = { AddGroup.class, EditGroup.class })
|
@NotNull(message = "设备库图片id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private Long eqpLibImgId;
|
private Long eqpLibImgId;
|
||||||
|
|
||||||
/**
|
|
||||||
* e8图片地址
|
|
||||||
*/
|
|
||||||
private String eqpLibImgUrl;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,12 @@ public class SisAuthRecordVo implements Serializable {
|
|||||||
@ExcelProperty(value = "主键id")
|
@ExcelProperty(value = "主键id")
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图像库Id
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "图像库Id")
|
||||||
|
private Long libId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 人像id
|
* 人像id
|
||||||
*/
|
*/
|
||||||
@ -38,16 +44,16 @@ public class SisAuthRecordVo implements Serializable {
|
|||||||
private Long imgId;
|
private Long imgId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 门禁id列表
|
* 门禁id
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "门禁id列表")
|
@ExcelProperty(value = "门禁id")
|
||||||
private List<Long> acIds;
|
private Long acId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备id列表
|
* 设备id
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "设备id列表")
|
@ExcelProperty(value = "设备id")
|
||||||
private List<Long> eqbIds;
|
private Long eqbId;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -60,10 +60,4 @@ public class SisLibDeviceImgRefVo implements Serializable {
|
|||||||
@ExcelProperty(value = "设备库图片id")
|
@ExcelProperty(value = "设备库图片id")
|
||||||
private Long eqpLibImgId;
|
private Long eqpLibImgId;
|
||||||
|
|
||||||
/**
|
|
||||||
* e8图片地址
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "e8图片地址")
|
|
||||||
private String eqpLibImgUrl;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,10 +3,13 @@ package org.dromara.sis.sdk.e8;
|
|||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
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.DoorDeviceAddReq;
|
||||||
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceUpdateReq;
|
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.DoorDeviceAddRes;
|
||||||
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceFindRes;
|
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceFindRes;
|
||||||
import org.dromara.sis.sdk.e8.domain.QueryDto;
|
import org.dromara.sis.sdk.e8.domain.QueryDto;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author lsm
|
* @author lsm
|
||||||
* @apiNote DoorDeviceService
|
* @apiNote DoorDeviceService
|
||||||
@ -53,4 +56,11 @@ public interface DoorDeviceService {
|
|||||||
* @return Boolean
|
* @return Boolean
|
||||||
*/
|
*/
|
||||||
Boolean deleteDoorDevice(Integer id);
|
Boolean deleteDoorDevice(Integer id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页获取授权门信息
|
||||||
|
*
|
||||||
|
* @return TableDataInfo<AuthDoorDeviceFindRes>
|
||||||
|
*/
|
||||||
|
List<AuthDoorDeviceFindRes> getPageAuthDoorDeviceList();
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ public interface VoucherControlService {
|
|||||||
* @param req 凭证数据
|
* @param req 凭证数据
|
||||||
* @return Boolean
|
* @return Boolean
|
||||||
*/
|
*/
|
||||||
Boolean issueVoucher(IssueVoucherReq req);
|
Long issueVoucher(IssueVoucherReq req);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 操作凭证
|
* 操作凭证
|
||||||
|
@ -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;
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
@ -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.DoorDeviceAddReq;
|
||||||
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceFindReq;
|
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.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.DoorDeviceAddRes;
|
||||||
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceFindRes;
|
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceFindRes;
|
||||||
import org.dromara.sis.sdk.e8.domain.QueryDto;
|
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 org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
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_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_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 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;
|
private final E8ApiUtil e8ApiUtil;
|
||||||
@ -170,4 +173,34 @@ public class DoorDeviceServiceImpl implements DoorDeviceService {
|
|||||||
return apiResp.getSuccess();
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package org.dromara.sis.sdk.e8.impl;
|
package org.dromara.sis.sdk.e8.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.sis.sdk.e8.VoucherControlService;
|
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.ChangeCardReq;
|
||||||
import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq;
|
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.req.OperateVoucherReq;
|
||||||
|
import org.dromara.sis.sdk.e8.domain.voucher.res.IssueVoucherRes;
|
||||||
import org.dromara.sis.sdk.e8.utils.E8ApiUtil;
|
import org.dromara.sis.sdk.e8.utils.E8ApiUtil;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@ -37,16 +39,21 @@ public class VoucherControlServiceImpl implements VoucherControlService {
|
|||||||
* @return 是否成功
|
* @return 是否成功
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Boolean issueVoucher(IssueVoucherReq req) {
|
public Long issueVoucher(IssueVoucherReq req) {
|
||||||
// 封装入参
|
// 封装入参
|
||||||
Map<String, Object> params = BeanUtil.beanToMap(req);
|
Map<String, Object> params = BeanUtil.beanToMap(req);
|
||||||
|
|
||||||
// 调用API
|
// 调用API
|
||||||
ApiResp apiResp = e8ApiUtil.doPost(params, ISSUANCE_VOUCHER);
|
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();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -13,7 +13,7 @@ import java.util.List;
|
|||||||
* 门禁设备Service接口
|
* 门禁设备Service接口
|
||||||
*
|
*
|
||||||
* @author lxj
|
* @author lxj
|
||||||
* @date 2025-06-25
|
* @since 2025-06-25
|
||||||
*/
|
*/
|
||||||
public interface ISisAccessControlService {
|
public interface ISisAccessControlService {
|
||||||
|
|
||||||
@ -66,4 +66,12 @@ public interface ISisAccessControlService {
|
|||||||
* @return 是否删除成功
|
* @return 是否删除成功
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据查询列表
|
||||||
|
*
|
||||||
|
* @param ids 门禁id
|
||||||
|
* @return 列表
|
||||||
|
*/
|
||||||
|
List<SisAccessControlVo> queryListByIds(Collection<Long> ids);
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ import java.util.List;
|
|||||||
* 人像信息Service接口
|
* 人像信息Service接口
|
||||||
*
|
*
|
||||||
* @author mocheng
|
* @author mocheng
|
||||||
* @date 2025-06-24
|
* @since 2025-06-24
|
||||||
*/
|
*/
|
||||||
public interface ISisPersonLibImgService {
|
public interface ISisPersonLibImgService {
|
||||||
|
|
||||||
@ -65,4 +65,12 @@ public interface ISisPersonLibImgService {
|
|||||||
* @return 是否删除成功
|
* @return 是否删除成功
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据查询列表
|
||||||
|
*
|
||||||
|
* @param ids 图片id
|
||||||
|
* @return 列表
|
||||||
|
*/
|
||||||
|
List<SisPersonLibImgVo> queryListByIds(Collection<Long> ids);
|
||||||
}
|
}
|
||||||
|
@ -140,7 +140,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
|||||||
// 通讯类型
|
// 通讯类型
|
||||||
e8DoorReq.setCommType(0);
|
e8DoorReq.setCommType(0);
|
||||||
// cpuid
|
// cpuid
|
||||||
e8DoorReq.setCpuID(add.getFactoryCode());
|
e8DoorReq.setCpuID("");
|
||||||
// ip
|
// ip
|
||||||
e8DoorReq.setIp(add.getAccessIp());
|
e8DoorReq.setIp(add.getAccessIp());
|
||||||
// 端口
|
// 端口
|
||||||
@ -207,4 +207,15 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
|||||||
}
|
}
|
||||||
return baseMapper.deleteByIds(ids) > 0;
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据查询列表
|
||||||
|
*
|
||||||
|
* @param ids 门禁id
|
||||||
|
* @return 列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<SisAccessControlVo> queryListByIds(Collection<Long> ids){
|
||||||
|
return baseMapper.selectVoByIds(ids);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ package org.dromara.sis.service.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.lang.Assert;
|
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.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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 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.bo.SisEEightRefBo;
|
||||||
import org.dromara.sis.domain.bo.SisLibDeviceImgRefBo;
|
import org.dromara.sis.domain.bo.SisLibDeviceImgRefBo;
|
||||||
import org.dromara.sis.domain.bo.SisLibDeviceRefBo;
|
import org.dromara.sis.domain.bo.SisLibDeviceRefBo;
|
||||||
import org.dromara.sis.domain.vo.*;
|
import org.dromara.sis.domain.vo.*;
|
||||||
import org.dromara.sis.sdk.e8.AccessControlService;
|
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.VoucherControlService;
|
||||||
import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq;
|
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.e8.domain.voucher.req.IssueVoucherReq;
|
||||||
import org.dromara.sis.sdk.unview.UnViewAiBoxApi;
|
import org.dromara.sis.sdk.unview.UnViewAiBoxApi;
|
||||||
import org.dromara.sis.sdk.unview.model.UvModel;
|
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.Files;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 授权记录Service业务层处理
|
* 授权记录Service业务层处理
|
||||||
@ -43,9 +46,11 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
|||||||
|
|
||||||
private final UnViewAiBoxApi unViewAiBoxApi;
|
private final UnViewAiBoxApi unViewAiBoxApi;
|
||||||
private final SisAuthRecordMapper baseMapper;
|
private final SisAuthRecordMapper baseMapper;
|
||||||
private final VoucherControlService vouchService;
|
private final VoucherControlService e8VouchService;
|
||||||
|
private final DoorDeviceService e8DoorDeviceService;
|
||||||
private final ISisPersonLibService sisPersonLibService;
|
private final ISisPersonLibService sisPersonLibService;
|
||||||
private final AccessControlService accessControlService;
|
private final ISisEEightRefService sisEEightRefService;
|
||||||
|
private final AccessControlService e8AccessControlService;
|
||||||
private final ISisPersonLibImgService sisPersonLibImgService;
|
private final ISisPersonLibImgService sisPersonLibImgService;
|
||||||
private final ISisLibDeviceRefService sisLibDeviceRefService;
|
private final ISisLibDeviceRefService sisLibDeviceRefService;
|
||||||
private final ISisAccessControlService sisAccessControlService;
|
private final ISisAccessControlService sisAccessControlService;
|
||||||
@ -60,14 +65,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public SisAuthRecordVo queryById(Long id) {
|
public SisAuthRecordVo queryById(Long id) {
|
||||||
SisAuthRecord sisAuthRecord = baseMapper.selectById(id);
|
return baseMapper.selectVoById(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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -79,7 +77,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public TableDataInfo<SisAuthRecordVo> queryPageList(SisAuthRecordBo bo, PageQuery pageQuery) {
|
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);
|
Page<SisAuthRecordVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
@ -100,7 +98,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
|||||||
Map<String, Object> params = bo.getParams();
|
Map<String, Object> params = bo.getParams();
|
||||||
LambdaQueryWrapper<SisAuthRecord> lqw = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<SisAuthRecord> lqw = Wrappers.lambdaQuery();
|
||||||
lqw.orderByAsc(SisAuthRecord::getId);
|
lqw.orderByAsc(SisAuthRecord::getId);
|
||||||
lqw.eq(bo.getImgId() != null, SisAuthRecord::getImgId, bo.getImgId());
|
lqw.eq(bo.getLibId() != null, SisAuthRecord::getLibId, bo.getLibId());
|
||||||
return lqw;
|
return lqw;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,32 +111,49 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean insertByBo(SisAuthRecordBo bo) {
|
public Boolean insertByBo(SisAuthRecordBo bo) {
|
||||||
SisAuthRecord add = MapstructUtils.convert(bo, SisAuthRecord.class);
|
List<SisLibDeviceRefVo> refVos = sisLibDeviceRefService.queryByLibIds(Collections.singleton(bo.getLibId()));
|
||||||
Assert.notNull(add, "数据处理失败");
|
Assert.notEmpty(refVos, "图像库与设备关联关系不存在");
|
||||||
add.setAcId(StringUtils.join(bo.getAcIds(), ","));
|
List<Long> eqpIds = refVos.stream().map(SisLibDeviceRefVo::getEqpId).toList();
|
||||||
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());
|
|
||||||
|
|
||||||
|
|
||||||
try {
|
boolean flag = false;
|
||||||
long eqp_lib_id;
|
log.info("开始写入授权记录,图片:{}、门禁:{}、设备:{}", bo.getImgIds(), bo.getAcIds(), eqpIds);
|
||||||
Integer eqp_lib_img_id;
|
for (Long imgId : bo.getImgIds()) {
|
||||||
String eqp_lib_img_url;
|
for (Long acId : bo.getAcIds()) {
|
||||||
byte[] imageByte = Files.readAllBytes(Paths.get(imgVo.getImgUrl()));
|
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);
|
SisAccessControlDeviceVo vo = sisAccessControlDeviceService.queryById(eqpId);
|
||||||
Assert.notNull(vo, "门禁控制设备不存在,id=" + 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();
|
UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo();
|
||||||
systemInfo.setAccount(vo.getEqpAccount());
|
systemInfo.setAccount(vo.getEqpAccount());
|
||||||
@ -179,59 +194,88 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
|||||||
|
|
||||||
SisLibDeviceImgRefBo ref = new SisLibDeviceImgRefBo();
|
SisLibDeviceImgRefBo ref = new SisLibDeviceImgRefBo();
|
||||||
ref.setLibId(libVo.getId());
|
ref.setLibId(libVo.getId());
|
||||||
ref.setImgId(add.getId());
|
ref.setImgId(imgVo.getId());
|
||||||
ref.setEqpId(eqpId);
|
ref.setEqpId(eqpId);
|
||||||
ref.setEqpLibId(eqp_lib_id);
|
ref.setEqpLibId(eqp_lib_id);
|
||||||
ref.setEqpLibImgId(eqp_lib_img_id.longValue());
|
ref.setEqpLibImgId(eqp_lib_img_id.longValue());
|
||||||
Boolean insert = sisLibDeviceImgRefService.insertByBo(ref);
|
Boolean insert = sisLibDeviceImgRefService.insertByBo(ref);
|
||||||
Assert.isTrue(insert, "写入图片关联关系表失败!");
|
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;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ import org.dromara.sis.domain.vo.SisEEightRefVo;
|
|||||||
import org.dromara.sis.domain.SisEEightRef;
|
import org.dromara.sis.domain.SisEEightRef;
|
||||||
import org.dromara.sis.mapper.SisEEightRefMapper;
|
import org.dromara.sis.mapper.SisEEightRefMapper;
|
||||||
import org.dromara.sis.service.ISisEEightRefService;
|
import org.dromara.sis.service.ISisEEightRefService;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -25,7 +26,7 @@ import java.util.Collection;
|
|||||||
* E8平台对应关系Service业务层处理
|
* E8平台对应关系Service业务层处理
|
||||||
*
|
*
|
||||||
* @author lsm
|
* @author lsm
|
||||||
* @date 2025-06-29
|
* @since 2025-06-29
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@ -97,14 +98,11 @@ public class SisEEightRefServiceImpl implements ISisEEightRefService {
|
|||||||
* @return 是否新增成功
|
* @return 是否新增成功
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean insertByBo(SisEEightRefBo bo) {
|
public Boolean insertByBo(SisEEightRefBo bo) {
|
||||||
SisEEightRef add = MapstructUtils.convert(bo, SisEEightRef.class);
|
SisEEightRef add = MapstructUtils.convert(bo, SisEEightRef.class);
|
||||||
validEntityBeforeSave(add);
|
add.setAcId(StringUtils.join(bo.getAcIds(), ","));
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
return baseMapper.insert(add) > 0;
|
||||||
if (flag) {
|
|
||||||
bo.setId(add.getId());
|
|
||||||
}
|
|
||||||
return flag;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -173,4 +173,15 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询列表
|
||||||
|
*
|
||||||
|
* @param Ids 图片id
|
||||||
|
* @return 列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<SisPersonLibImgVo> queryListByIds(Collection<Long> Ids) {
|
||||||
|
return baseMapper.selectVoByIds(Ids);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user