refactor(sis): - E8同步

This commit is contained in:
zcxlsm 2025-07-11 17:57:17 +08:00
parent 1beae8d9af
commit 493c0e641f
6 changed files with 59 additions and 67 deletions

View File

@ -116,5 +116,14 @@ public class SisAccessControlController extends BaseController {
return R.ok(sisAccessControlService.queryAcTree()); return R.ok(sisAccessControlService.queryAcTree());
} }
/**
* 同步门禁设备
*
* @return boolean
*/
@GetMapping("/sync")
public R<Boolean> sync() {
return R.ok(sisAccessControlService.syncE8());
}
} }

View File

@ -7,12 +7,15 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
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.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 org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* @author lsm * @author lsm
* @apiNote DoorDeviceController * @apiNote DoorDeviceController
@ -112,4 +115,21 @@ public class DoorDeviceController {
return R.ok(doorDeviceList); return R.ok(doorDeviceList);
} }
} }
/**
* 分页获取授权门信息
*
* @return List<AuthDoorDeviceFindRes>
*/
@PostMapping("/findAuthDoor")
public R<List<AuthDoorDeviceFindRes>> getPageAuthDoorDeviceList() {
log.info("E8接口查询授权门信息");
List<AuthDoorDeviceFindRes> authDoor = doorDeviceService.getPageAuthDoorDeviceList();
if (ObjectUtils.isEmpty(authDoor)) {
return R.fail("E8接口查询授权门信息调用失败");
} else {
return R.ok(authDoor);
}
}
} }

View File

@ -15,6 +15,16 @@ public class AuthDoorDeviceFindRes {
*/ */
private Long id; private Long id;
/**
* 门名称
*/
private String name;
/**
* 设备code
*/
private String deviceNo;
/** /**
* 门禁Id * 门禁Id
*/ */

View File

@ -176,7 +176,7 @@ public class DoorDeviceServiceImpl implements DoorDeviceService {
/** /**
* 分页获取授权门信息 * 分页获取授权门信息
* *
* @return TableDataInfo<AuthDoorDeviceFindRes> * @return List<AuthDoorDeviceFindRes>
*/ */
public List<AuthDoorDeviceFindRes> getPageAuthDoorDeviceList() { public List<AuthDoorDeviceFindRes> getPageAuthDoorDeviceList() {
Map<String, Object> queryDto = new HashMap<>(); Map<String, Object> queryDto = new HashMap<>();

View File

@ -82,4 +82,11 @@ public interface ISisAccessControlService {
*/ */
List<TreeNode<Long>> queryAcTree(); List<TreeNode<Long>> queryAcTree();
/**
* 同步门禁设备
*
* @return Boolean
*/
Boolean syncE8();
} }

View File

@ -15,7 +15,6 @@ import org.dromara.common.core.utils.TreeUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.property.api.RemoteFloorService; import org.dromara.property.api.RemoteFloorService;
import org.dromara.property.api.domain.vo.RemoteFloorVo;
import org.dromara.sis.domain.SisAccessControl; import org.dromara.sis.domain.SisAccessControl;
import org.dromara.sis.domain.SisDeviceBindRef; import org.dromara.sis.domain.SisDeviceBindRef;
import org.dromara.sis.domain.bo.SisAccessControlBo; import org.dromara.sis.domain.bo.SisAccessControlBo;
@ -24,8 +23,6 @@ import org.dromara.sis.domain.vo.SisAccessControlVo;
import org.dromara.sis.domain.vo.SisDeviceManageVo; import org.dromara.sis.domain.vo.SisDeviceManageVo;
import org.dromara.sis.mapper.SisAccessControlMapper; import org.dromara.sis.mapper.SisAccessControlMapper;
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.res.DoorDeviceAddRes;
import org.dromara.sis.service.ISisAccessControlService; import org.dromara.sis.service.ISisAccessControlService;
import org.dromara.sis.service.ISisDeviceBindRefService; import org.dromara.sis.service.ISisDeviceBindRefService;
import org.dromara.sis.service.ISisDeviceManageService; import org.dromara.sis.service.ISisDeviceManageService;
@ -96,12 +93,10 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<SisAccessControl> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<SisAccessControl> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(SisAccessControl::getId); lqw.orderByAsc(SisAccessControl::getId);
// lqw.eq(StringUtils.isNotBlank(bo.getAccessCode()), SisAccessControl::getAccessCode, bo.getAccessCode());
lqw.like(StringUtils.isNotBlank(bo.getAccessName()), SisAccessControl::getAccessName, bo.getAccessName()); lqw.like(StringUtils.isNotBlank(bo.getAccessName()), SisAccessControl::getAccessName, bo.getAccessName());
lqw.eq(StringUtils.isNotBlank(bo.getAccessIp()), SisAccessControl::getAccessIp, bo.getAccessIp()); lqw.eq(StringUtils.isNotBlank(bo.getAccessIp()), SisAccessControl::getAccessIp, bo.getAccessIp());
lqw.eq(bo.getAccessPort() != null, SisAccessControl::getAccessPort, bo.getAccessPort()); lqw.eq(bo.getAccessPort() != null, SisAccessControl::getAccessPort, bo.getAccessPort());
lqw.eq(bo.getAccessType() != null, SisAccessControl::getAccessType, bo.getAccessType()); lqw.eq(bo.getAccessType() != null, SisAccessControl::getAccessType, bo.getAccessType());
// lqw.eq(StringUtils.isNotBlank(bo.getFactoryCode()), SisAccessControl::getFactoryCode, bo.getFactoryCode());
lqw.eq(bo.getControlType() != null, SisAccessControl::getControlType, bo.getControlType()); lqw.eq(bo.getControlType() != null, SisAccessControl::getControlType, bo.getControlType());
lqw.eq(StringUtils.isNotBlank(bo.getControlCode()), SisAccessControl::getControlCode, bo.getControlCode()); lqw.eq(StringUtils.isNotBlank(bo.getControlCode()), SisAccessControl::getControlCode, bo.getControlCode());
lqw.eq(StringUtils.isNotBlank(bo.getOutCode()), SisAccessControl::getOutCode, bo.getOutCode()); lqw.eq(StringUtils.isNotBlank(bo.getOutCode()), SisAccessControl::getOutCode, bo.getOutCode());
@ -123,63 +118,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(SisAccessControlBo bo) { public Boolean insertByBo(SisAccessControlBo bo) {
// 校验楼层是否存在 return true;
RemoteFloorVo remoteFloorVo = remoteFloorService.queryByFloorId(bo.getFloorId());
Assert.notNull(remoteFloorVo, "当前楼层信息不存在。");
// 检验设备是否存在
SisDeviceManageVo sisDeviceManageVo = sisDeviceManageService.queryById(bo.getBindDeviceId());
Assert.notNull(sisDeviceManageVo, "绑定设备不存在。");
SisAccessControl add = MapstructUtils.convert(bo, SisAccessControl.class);
add.setCommunityId(remoteFloorVo.getCommunityId());
add.setBuildingId(remoteFloorVo.getBuildingId());
add.setUnitId(remoteFloorVo.getUnitId());
add.setFloorId(remoteFloorVo.getId());
Assert.notNull(add, "数据处理失败");
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
// 写入关联关系表中
SisDeviceBindRef sisDeviceBindRef = new SisDeviceBindRef();
sisDeviceBindRef.setDeviceId(sisDeviceManageVo.getId());
sisDeviceBindRef.setDeviceIp(sisDeviceManageVo.getDeviceIp());
sisDeviceBindRef.setBindId(add.getId());
sisDeviceBindRef.setControlType(ControlTypeEnum.ACCESS_CONTROL.getCode());
Boolean insert = sisDeviceBindRefService.insert(sisDeviceBindRef);
Assert.isTrue(insert, "写入设备关联表失败!");
// 添加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("");
// 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平台写入完成!");
}
}
return flag;
} }
/** /**
@ -225,10 +164,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) { return true;
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
} }
/** /**
@ -260,4 +196,14 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
} }
return TreeUtils.build(treeNodes, 0L); return TreeUtils.build(treeNodes, 0L);
} }
/**
* 同步门禁设备
*
* @return Boolean
*/
@Override
public Boolean syncE8() {
return true;
}
} }