| | |
| | | .SetColumns(s => s.Isdeparture == isDeparture) |
| | | .Where(s => s.Fcode == staffId) |
| | | .ExecuteCommand(); |
| | | |
| | | |
| | | return true; |
| | | } |
| | | |
| | |
| | | private bool InsertOrUpdateStaff(SqlSugarScope db, SysUser sysUser, |
| | | MesStaff entity) |
| | | { |
| | | var exists = db.Queryable<SysUser>().Any(u => u.Fcode == sysUser.Fcode); |
| | | if (exists) |
| | | try |
| | | { |
| | | var updateUser = db.Updateable<SysUser>() |
| | | .SetColumns(s => s.Fname == sysUser.Fname) |
| | | .SetColumns(s => s.Departmentid == sysUser.Departmentid) // 更新部门信息 |
| | | .SetColumns(s => s.Isdeparture == sysUser.Isdeparture) // 更新离职状态 |
| | | .Where(s => s.Fcode == sysUser.Fcode) |
| | | .ExecuteCommand(); |
| | | if (updateUser > 0) |
| | | var exists = db.Queryable<SysUser>().Any(u => u.Fcode == sysUser.Fcode); |
| | | if (exists) |
| | | { |
| | | var updateStaff = db.Updateable(entity).ExecuteCommand(); |
| | | if (updateStaff > 0) |
| | | return true; |
| | | // 用户已存在,执行更新操作 |
| | | var updateUser = db.Updateable<SysUser>() |
| | | .SetColumns(s => s.Fname == sysUser.Fname) |
| | | .SetColumns(s => s.Departmentid == sysUser.Departmentid) // 更新部门信息 |
| | | .SetColumns(s => s.Isdeparture == sysUser.Isdeparture) // 更新离职状态 |
| | | .Where(s => s.Fcode == sysUser.Fcode) |
| | | .ExecuteCommand(); |
| | | if (updateUser > 0) |
| | | { |
| | | // 检查 MesStaff 是否已存在 |
| | | var staffExists = db.Queryable<MesStaff>().Any(s => s.StaffNo == entity.StaffNo); |
| | | if (staffExists) |
| | | { |
| | | // 员工已存在,执行更新 |
| | | var updateStaff = db.Updateable(entity) |
| | | .Where(s => s.StaffNo == entity.StaffNo) |
| | | .ExecuteCommand(); |
| | | if (updateStaff > 0) |
| | | return true; |
| | | throw new NotImplementedException( |
| | | $"MES_STAFF表更新失败:员工 {entity.StaffNo}({entity.StaffName})"); |
| | | } |
| | | else |
| | | { |
| | | // 员工不存在,执行插入 |
| | | var insertStaff = db.Insertable(entity).ExecuteCommand(); |
| | | if (insertStaff > 0) |
| | | return true; |
| | | throw new NotImplementedException( |
| | | $"MES_STAFF表插入失败:员工 {entity.StaffNo}({entity.StaffName})"); |
| | | } |
| | | } |
| | | throw new NotImplementedException( |
| | | $"SYS_USER表更新失败:用户 {sysUser.Fcode}({sysUser.Fname})"); |
| | | } |
| | | else |
| | | { |
| | | // 用户不存在,执行插入操作 |
| | | var insertUser = db.Insertable(sysUser).ExecuteCommand(); |
| | | if (insertUser > 0) |
| | | { |
| | | var insertStaff = db.Insertable(entity).ExecuteCommand(); |
| | | if (insertStaff > 0) |
| | | return true; |
| | | throw new NotImplementedException( |
| | | $"MES_STAFF表插入失败:员工 {entity.StaffNo}({entity.StaffName})"); |
| | | } |
| | | throw new NotImplementedException( |
| | | $"SYS_USER表插入失败:用户 {sysUser.Fcode}({sysUser.Fname})"); |
| | | } |
| | | } |
| | | else |
| | | catch (Exception ex) |
| | | { |
| | | var insertUser = db.Insertable(sysUser).ExecuteCommand(); |
| | | if (insertUser > 0) |
| | | { |
| | | var insertStaff = db.Insertable(entity).ExecuteCommand(); |
| | | if (insertStaff > 0) |
| | | return true; |
| | | } |
| | | // 捕获并抛出详细的异常信息 |
| | | throw new NotImplementedException( |
| | | $"员工 {entity.StaffNo}({entity.StaffName}) 同步失败:{ex.Message}", ex); |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | // 删除员工的方法 |
| | |
| | | DepartmentName = staff.FPostDept, |
| | | PositionName = staff.FPost, |
| | | PhoneNumber = staff.FMobile, |
| | | Remark = staff.FDescription, |
| | | // 将 "None" 字符串转换为 null,避免数据库约束问题 |
| | | Remark = staff.FDescription == "None" ? null : staff.FDescription, |
| | | FforbidStatus = staff.FForbidStatus |
| | | }; |
| | | |
| | |
| | | { |
| | | // 如果 FForbidStatus='B',则 Isdeparture=1,否则为0 |
| | | var isDeparture = staff.FForbidStatus == "B" ? 1 : 0; |
| | | |
| | | |
| | | return new SysUser |
| | | { |
| | | //Sid = Convert.ToDecimal(staff.Id), |
| | |
| | | .SetColumns(s => s.Isdeparture == isDeparture) |
| | | .Where(s => ids.Contains(s.Fcode)) |
| | | .ExecuteCommand(); |
| | | |
| | | |
| | | return true; |
| | | } |
| | | |
| | |
| | | { |
| | | foreach (var sysUser in userList) |
| | | { |
| | | var entity = staffList.First(s => s.StaffNo == sysUser.Fcode); |
| | | if (!InsertOrUpdateStaff(db, sysUser, entity)) return false; |
| | | try |
| | | { |
| | | var entity = staffList.First(s => s.StaffNo == sysUser.Fcode); |
| | | if (!InsertOrUpdateStaff(db, sysUser, entity)) |
| | | { |
| | | throw new NotImplementedException( |
| | | $"同步失败:员工编号 {entity.StaffNo}({entity.StaffName}) 更新或插入操作失败"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | // 抛出详细的异常信息,包含员工编号和具体错误 |
| | | throw new NotImplementedException( |
| | | $"同步失败:员工编号 {sysUser.Fcode}({sysUser.Fname}) 处理异常 - {ex.Message}", ex); |
| | | } |
| | | } |
| | | |
| | | return true; |