修复用户绑定设备逻辑以确保原子操作
调整FactoryUserServiceImpl中用户与考勤设备绑定的逻辑。在异常情况下,现在会清除用户绑定的设备,并且在最终块中重新尝试绑定操作,确保数据库状态与实际业务流程一致。
This commit is contained in:
parent
c4b5279167
commit
e2c650a7fd
@ -101,7 +101,7 @@ public class FactoryUserServiceImpl implements FactoryUserService{
|
|||||||
usersExtDO.setUserId(user.getId());
|
usersExtDO.setUserId(user.getId());
|
||||||
usersExtDO.setDeptId(deptDO.getId());
|
usersExtDO.setDeptId(deptDO.getId());
|
||||||
usersExtDO.setAttendanceMachineNos(convertList(attendanceMachineDOS, AttendanceMachineDO::getDeviceNo));
|
usersExtDO.setAttendanceMachineNos(convertList(attendanceMachineDOS, AttendanceMachineDO::getDeviceNo));
|
||||||
usersExtService.createUsers(usersExtDO);
|
// usersExtService.createUsers(usersExtDO);
|
||||||
// 工厂用户添加到GPS定位系统中
|
// 工厂用户添加到GPS定位系统中
|
||||||
adminUserService.gpsIncrementalSynchronizationOfUsers(user);
|
adminUserService.gpsIncrementalSynchronizationOfUsers(user);
|
||||||
try {
|
try {
|
||||||
@ -118,12 +118,21 @@ public class FactoryUserServiceImpl implements FactoryUserService{
|
|||||||
|
|
||||||
// 发送指令至 考勤设备 下发员工
|
// 发送指令至 考勤设备 下发员工
|
||||||
websocketService.sendSn(machineDO.getDeviceNo(), addUserVO, 1);
|
websocketService.sendSn(machineDO.getDeviceNo(), addUserVO, 1);
|
||||||
|
|
||||||
|
// 下发成功则设置 用户绑定设备
|
||||||
|
usersExtDO.setAttendanceMachineNos(convertList(attendanceMachineDOS, AttendanceMachineDO::getDeviceNo));
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
|
|
||||||
// 手动回滚
|
// 手动回滚
|
||||||
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
|
||||||
|
// 下发失败则清空 用户绑定设备
|
||||||
|
usersExtDO.setAttendanceMachineNos(null);
|
||||||
return ex.getMessage();
|
return ex.getMessage();
|
||||||
|
}finally {
|
||||||
|
|
||||||
|
usersExtService.createUsers(usersExtDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
Loading…
Reference in New Issue
Block a user