| | |
| | | using AngleSharp.Dom; |
| | | using Castle.Core.Resource; |
| | | using DnsClient; |
| | | using MES.Service.DB; |
| | | using MES.Service.DB; |
| | | using MES.Service.Dto.webApi; |
| | | using MES.Service.Modes; |
| | | using SqlSugar; |
| | | using System.Xml.Linq; |
| | | |
| | | namespace MES.Service.service.BasicData; |
| | | |
| | |
| | | { |
| | | var entity = GetMesStaff(unit); // 将 ErpStaff 转换为 MesStaff |
| | | var sysUser = GetUser(unit); // 获取 SysUser 实例 |
| | | var mesStaffPositionLink = GetMesStaffPositionLink(unit); // 获取 MesStaffPositionLink 实例 |
| | | var mesStaffPositionLink = |
| | | GetMesStaffPositionLink(unit); // 获取 MesStaffPositionLink 实例 |
| | | |
| | | return UseTransaction(db => |
| | | { |
| | |
| | | break; |
| | | case "2": |
| | | case "4": |
| | | if (InsertOrUpdateStaff(db, sysUser, entity, mesStaffPositionLink)) // 插入或更新员工 |
| | | if (InsertOrUpdateStaff(db, sysUser, entity, |
| | | mesStaffPositionLink)) // 插入或更新员工 |
| | | return 1; |
| | | break; |
| | | case "3": |
| | |
| | | /// 新代码 |
| | | // 插入或更新员工的方法 |
| | | /// <summary> |
| | | /// 接口字段调整:修改参数,新增List<MesStaffPositionLink>的参数 |
| | | /// 接口字段调整:修改参数,新增List<MesStaffPositionLink>的参数 |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 修改人:池南骏 |
| | | /// 修改日期:2024-12-25 ——》 2025-01-05 二次修改 |
| | | /// 修改说明:为了应为一个员工多岗位的情况 |
| | | /// 修改人:池南骏 |
| | | /// 修改日期:2024-12-25 ——》 2025-01-05 二次修改 |
| | | /// 修改说明:为了应为一个员工多岗位的情况 |
| | | /// </remarks> |
| | | private bool InsertOrUpdateStaff(SqlSugarScope db, SysUser sysUser, |
| | | MesStaff entity, List<MesStaffPositionLink> mesStaffPositionLink) |
| | |
| | | |
| | | |
| | | db.Deleteable<MesStaff>() |
| | | .Where(s => s.Id == entity.Id ) |
| | | .Where(s => s.Id == entity.Id) |
| | | .ExecuteCommand(); |
| | | |
| | | var insertStaff = db.Insertable(entity).IgnoreColumns(true).ExecuteCommand(); |
| | | var insertStaff = |
| | | db.Insertable(entity).IgnoreColumns(true).ExecuteCommand(); |
| | | |
| | | |
| | | var insertPosition = 1; |
| | |
| | | { |
| | | //先删除,再新增 |
| | | db.Deleteable<MesStaffPositionLink>() |
| | | .Where(s => mesStaffPositionLink.Any(m => m.StaffId == s.StaffId)) |
| | | .ExecuteCommand(); |
| | | .Where(s => |
| | | mesStaffPositionLink.Any(m => m.StaffId == s.StaffId)) |
| | | .ExecuteCommand(); |
| | | |
| | | |
| | | //批量插入时,忽略空字段 |
| | | insertPosition = db.Insertable(mesStaffPositionLink).PageSize(1) |
| | | .IgnoreColumnsNull().ExecuteCommand(); |
| | | .IgnoreColumnsNull().ExecuteCommand(); |
| | | } |
| | | |
| | | |
| | | return (insertStaff > 0 && insertPosition >0); |
| | | |
| | | return insertStaff > 0 && insertPosition > 0; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | var deleteStaff = |
| | | db.Deleteable<MesStaff>() |
| | | .Where(s => s.Id == entity.Id && s.PositionCode == entity.PositionCode) |
| | | .ExecuteCommand(); |
| | | .Where(s => |
| | | s.Id == entity.Id && |
| | | s.PositionCode == entity.PositionCode) |
| | | .ExecuteCommand(); |
| | | |
| | | //删除对应员工岗位信息关联表 池南骏 2025-01-02 |
| | | var insertPosition = db.Deleteable<MesStaffPositionLink>() |
| | | .Where(s => s.StaffId == entity.Id) |
| | | .ExecuteCommand(); |
| | | .Where(s => s.StaffId == entity.Id) |
| | | .ExecuteCommand(); |
| | | |
| | | if (deleteStaff > 0) |
| | | return true; |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 接口字段调整:根据json格式,在MesStaffPositionLink<List>中存入数据。 |
| | | /// 接口字段调整:根据json格式,在MesStaffPositionLink<List>中存入数据。 |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 修改人:池南骏 |
| | | /// 修改日期:2025-01-02 ——》 2025-01-05 二次修改 |
| | | /// 修改说明: |
| | | /// - 新增代码 |
| | | /// 修改人:池南骏 |
| | | /// 修改日期:2025-01-02 ——》 2025-01-05 二次修改 |
| | | /// 修改说明: |
| | | /// - 新增代码 |
| | | /// </remarks> |
| | | private List<MesStaffPositionLink> GetMesStaffPositionLink(ErpStaff staff) |
| | | { |
| | | List<MesStaffPositionLink> staffDetails = new List<MesStaffPositionLink>(); |
| | | List<MesStaffPositionLink> staffDetails = new(); |
| | | |
| | | if (staff.ErpStaffDetails != null && staff.ErpStaffDetails.Count > 0) |
| | | { |
| | | staffDetails = staff.ErpStaffDetails.Select(staffDetail => new MesStaffPositionLink |
| | | { |
| | | StaffId = Convert.ToDecimal(staff.Id), |
| | | PositionId = string.IsNullOrEmpty(staffDetail.fPostId.ToString()) ? null : Convert.ToDecimal(staffDetail.fPostId), |
| | | FPostDeptId = string.IsNullOrEmpty(staffDetail.fPostDeptid.ToString()) ? null : Convert.ToDecimal(staffDetail.fPostDeptid), |
| | | FStaffStartDate = string.IsNullOrEmpty(staffDetail.fStaffStartDate.ToString()) ? null : DateTime.ParseExact(staffDetail.fStaffStartDate, "yyyy-MM-dd HH:mm:ss", null) |
| | | |
| | | }).ToList(); |
| | | } |
| | | staffDetails = staff.ErpStaffDetails.Select(staffDetail => |
| | | new MesStaffPositionLink |
| | | { |
| | | StaffId = Convert.ToDecimal(staff.Id), |
| | | PositionId = |
| | | string.IsNullOrEmpty(staffDetail.fPostId.ToString()) |
| | | ? null |
| | | : Convert.ToDecimal(staffDetail.fPostId), |
| | | FPostDeptId = |
| | | string.IsNullOrEmpty(staffDetail.fPostDeptid.ToString()) |
| | | ? null |
| | | : Convert.ToDecimal(staffDetail.fPostDeptid), |
| | | FStaffStartDate = |
| | | string.IsNullOrEmpty(staffDetail.fStaffStartDate |
| | | .ToString()) |
| | | ? null |
| | | : DateTime.ParseExact(staffDetail.fStaffStartDate, |
| | | "yyyy-MM-dd HH:mm:ss", null) |
| | | }).ToList(); |
| | | //postIds.AddRange(links); |
| | | |
| | | return staffDetails; |
| | |
| | | { |
| | | //获取当前用户使用组织对应的组织名称 |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | string organize = db.Queryable<Organize>() |
| | | .Where(it => it.Id == Convert.ToDecimal(staff.FUseOrgId)) // 使用 Where 方法根据单个 ID 查询 |
| | | .Select(it => it.Fname) // 选择 Fname 属性 |
| | | .Single(); // 使用 Single 因为我们期望只有一个匹配项 |
| | | var organize = db.Queryable<Organize>() |
| | | .Where(it => |
| | | it.Id == |
| | | Convert.ToDecimal(staff.FUseOrgId)) // 使用 Where 方法根据单个 ID 查询 |
| | | .Select(it => it.Fname) // 选择 Fname 属性 |
| | | .Single(); // 使用 Single 因为我们期望只有一个匹配项 |
| | | |
| | | //string organizeName = organize.f; |
| | | |
| | |
| | | sysUser.Type = s.Type; |
| | | userList.Add(sysUser); |
| | | |
| | | var mesStaffPositionLink = GetMesStaffPositionLink(s); // 获取 SysUser 实例 |
| | | var mesStaffPositionLink = |
| | | GetMesStaffPositionLink(s); // 获取 SysUser 实例 |
| | | mesStaffPositionLinkList.AddRange(mesStaffPositionLink); |
| | | }); |
| | | |
| | |
| | | case "2": |
| | | case "4": |
| | | if (!InsertOrUpdateBatch(db, userList, |
| | | staffGroup.Value, mesStaffPositionLinkList)) // 批量插入或更新员工 |
| | | staffGroup.Value, |
| | | mesStaffPositionLinkList)) // 批量插入或更新员工 |
| | | throw new NotImplementedException("同步失败"); |
| | | break; |
| | | default: |
| | |
| | | |
| | | // 批量插入或更新员工的方法 |
| | | private bool InsertOrUpdateBatch(SqlSugarScope db, List<SysUser> userList, |
| | | List<MesStaff> staffList, List<MesStaffPositionLink> mesStaffPositionLink) |
| | | List<MesStaff> staffList, |
| | | List<MesStaffPositionLink> mesStaffPositionLink) |
| | | { |
| | | foreach (var sysUser in userList) |
| | | { |
| | | var entity = staffList.First(s => s.Id == sysUser.Sid); |
| | | if (!InsertOrUpdateStaff(db, sysUser, entity, mesStaffPositionLink)) return false; |
| | | if (!InsertOrUpdateStaff(db, sysUser, entity, mesStaffPositionLink)) |
| | | return false; |
| | | } |
| | | |
| | | return true; |