修复用户绑定设备逻辑以确保原子操作

调整FactoryUserServiceImpl中用户与考勤设备绑定的逻辑。在异常情况下,现在会清除用户绑定的设备,并且在最终块中重新尝试绑定操作,确保数据库状态与实际业务流程一致。
This commit is contained in:
furongxin 2024-09-11 10:15:35 +08:00
parent c4b5279167
commit e2c650a7fd

View File

@ -101,7 +101,7 @@ public class FactoryUserServiceImpl implements FactoryUserService{
usersExtDO.setUserId(user.getId());
usersExtDO.setDeptId(deptDO.getId());
usersExtDO.setAttendanceMachineNos(convertList(attendanceMachineDOS, AttendanceMachineDO::getDeviceNo));
usersExtService.createUsers(usersExtDO);
// usersExtService.createUsers(usersExtDO);
// 工厂用户添加到GPS定位系统中
adminUserService.gpsIncrementalSynchronizationOfUsers(user);
try {
@ -118,12 +118,21 @@ public class FactoryUserServiceImpl implements FactoryUserService{
// 发送指令至 考勤设备 下发员工
websocketService.sendSn(machineDO.getDeviceNo(), addUserVO, 1);
// 下发成功则设置 用户绑定设备
usersExtDO.setAttendanceMachineNos(convertList(attendanceMachineDOS, AttendanceMachineDO::getDeviceNo));
}
} catch (Exception ex) {
// 手动回滚
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// 下发失败则清空 用户绑定设备
usersExtDO.setAttendanceMachineNos(null);
return ex.getMessage();
}finally {
usersExtService.createUsers(usersExtDO);
}
return null;