using MES.Service.DB; using MES.Service.Dto.webApi; using MES.Service.Modes; using SqlSugar; namespace MES.Service.service.BasicData; public class MesStaffManager : Repository { // Save 方法用于保存单个员工记录,根据类型执行不同的操作 public bool Save(ErpStaff unit) { var entity = GetMesStaff(unit); // 将 ErpStaff 转换为 MesStaff var sysUser = GetUser(unit); // 获取 SysUser 实例 return UseTransaction(db => { switch (unit.Type) { case "2": case "4": if (InsertOrUpdateStaff(db, sysUser, entity)) // 插入或更新员工 return 1; break; case "3": if (DeleteStaff(db, sysUser, entity)) // 删除员工 return 1; break; default: throw new ArgumentNullException( $"type没有{unit.Type}这个类型的参数"); } throw new NotImplementedException("操作失败"); }) > 0; } // 更新员工状态的方法 private bool UpdateStaffStatus(SqlSugarScope db, decimal staffId, string status) { var result = db.Updateable() .SetColumns(s => s.FforbidStatus == status) .Where(s => s.Id == staffId).ExecuteCommand(); if (result > 0) return true; throw new NotImplementedException(status == "A" ? "启用失败" : "禁用失败"); } // 插入或更新员工的方法 /// /// 接口字段调整:修改参数,新增List的参数 /// /// /// 修改人:池南骏 /// 修改日期:2024-12-25 ——》 2025-01-05 二次修改 /// 修改说明:为了应为一个员工多岗位的情况 /// private bool InsertOrUpdateStaff(SqlSugarScope db, SysUser sysUser, MesStaff entity) { var exists = db.Queryable().Any(u => u.Sid == sysUser.Sid); if (!exists) { db.Insertable(sysUser).ExecuteCommand(); } db.Deleteable() .Where(s => s.Id == entity.Id) .ExecuteCommand(); var insertStaff = db.Insertable(entity).IgnoreColumns(true).ExecuteCommand(); return insertStaff > 0; } /// /// "删除员工的方法"调整:调整传入参数,将id改为MesStaff类,删除使用id和PositionCode作为判断依据 /// /// /// 修改人:池南骏 /// 修改日期:2024-12-30 /// 修改说明:` /// private bool DeleteStaff(SqlSugarScope db, SysUser sysUser, MesStaff entity) { var deleteUser = db.Deleteable() .Where(s => s.Sid == sysUser.Sid).ExecuteCommand(); if (deleteUser > 0) { var deleteStaff = db.Deleteable() .Where(s => s.Id == entity.Id && s.PositionCode == entity.PositionCode) .ExecuteCommand(); if (deleteStaff > 0) return true; } throw new NotImplementedException("反审核失败"); } // 将 ErpStaff 对象转换为 MesStaff 对象的方法 private MesStaff GetMesStaff(ErpStaff staff) { var entity = new MesStaff { Id = Convert.ToDecimal(staff.Id), StaffNo = staff.FStaffNumber, StaffName = staff.FName, PositionCode = staff.FPostId, KeyPosts = staff.KeyPosts, StartDate = staff.FStaffStartDate != null ? DateTime.ParseExact(staff.FStaffStartDate, "yyyy-MM-dd HH:mm:ss", null) : null, SeparationTime = staff.SeparationTime != null ? DateTime.ParseExact(staff.SeparationTime, "yyyy-MM-dd HH:mm:ss", null) : null, FforbidStatus = staff.FforbidStatus, DepartmentName = staff.DepartmentName, UseOrg = staff.FUseOrgId, Remark = staff.Remark }; return entity; } // 将 ErpStaff 对象转换为 SysUser 对象的方法 private SysUser GetUser(ErpStaff staff) { return new SysUser { Sid = Convert.ToDecimal(staff.Id), Fcode = staff.FStaffNumber, Fname = staff.FName, Fpassword = "8+()./,", // 初始密码 123456 Lever = 0, Fcompany = "1000", Ffactory = "1000", DelFlag = 0, Dev = 0, Tet = 0, Prd = 1, Ismanager = 0, Isacq = 0, ExpField9 = "1020", QmUser = 0, Status = 0, Isdeparture = 0, CheckFlag = 0, ExpFiel12 = 0, FirstLogin = 0, CreateDate = DateTime.Now, PswEditTime = DateTime.Now }; } // SaveList 方法用于保存多个员工记录,根据类型批量执行不同的操作 public bool SaveList(List departments) { var result = departments.Select(Save).ToList(); return result.All(b => b); } }