啊鑫
2025-01-22 eb744ecfecc0f1b6d9c0999c65bc740d93e30eda
StandardPda/MES.Service/service/BasicData/MesStaffManager.cs
@@ -1,11 +1,7 @@
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;
@@ -16,7 +12,8 @@
    {
        var entity = GetMesStaff(unit); // 将 ErpStaff 转换为 MesStaff
        var sysUser = GetUser(unit); // 获取 SysUser 实例
        var mesStaffPositionLink = GetMesStaffPositionLink(unit); // 获取 MesStaffPositionLink 实例
        var mesStaffPositionLink =
            GetMesStaffPositionLink(unit); // 获取 MesStaffPositionLink 实例
        return UseTransaction(db =>
        {
@@ -32,7 +29,8 @@
                    break;
                case "2":
                case "4":
                    if (InsertOrUpdateStaff(db, sysUser, entity, mesStaffPositionLink)) // 插入或更新员工
                    if (InsertOrUpdateStaff(db, sysUser, entity,
                            mesStaffPositionLink)) // 插入或更新员工
                        return 1;
                    break;
                case "3":
@@ -131,7 +129,8 @@
            .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;
@@ -139,7 +138,8 @@
        {
            //先删除,再新增
            db.Deleteable<MesStaffPositionLink>()
        .Where(s => mesStaffPositionLink.Any(m => m.StaffId == s.StaffId))
                .Where(s =>
                    mesStaffPositionLink.Any(m => m.StaffId == s.StaffId))
        .ExecuteCommand();
@@ -149,7 +149,7 @@
        }
       
        return (insertStaff > 0 && insertPosition >0);
        return insertStaff > 0 && insertPosition > 0;
    }
    /// <summary>
@@ -188,7 +188,9 @@
        {
            var deleteStaff =
                db.Deleteable<MesStaff>()
            .Where(s => s.Id == entity.Id && s.PositionCode == entity.PositionCode)
                    .Where(s =>
                        s.Id == entity.Id &&
                        s.PositionCode == entity.PositionCode)
            .ExecuteCommand();
            //删除对应员工岗位信息关联表 池南骏 2025-01-02
@@ -254,19 +256,28 @@
    /// </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
            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)
                    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;
@@ -277,8 +288,10 @@
    {
        //获取当前用户使用组织对应的组织名称
        var db = SqlSugarHelper.GetInstance();
        string organize = db.Queryable<Organize>()
            .Where(it => it.Id == Convert.ToDecimal(staff.FUseOrgId)) // 使用 Where 方法根据单个 ID 查询
        var organize = db.Queryable<Organize>()
            .Where(it =>
                it.Id ==
                Convert.ToDecimal(staff.FUseOrgId)) // 使用 Where 方法根据单个 ID 查询
            .Select(it => it.Fname)         // 选择 Fname 属性
            .Single();                      // 使用 Single 因为我们期望只有一个匹配项
@@ -329,7 +342,8 @@
            sysUser.Type = s.Type;
            userList.Add(sysUser);
            var mesStaffPositionLink = GetMesStaffPositionLink(s); // 获取 SysUser 实例
            var mesStaffPositionLink =
                GetMesStaffPositionLink(s); // 获取 SysUser 实例
            mesStaffPositionLinkList.AddRange(mesStaffPositionLink);
        });
@@ -358,7 +372,8 @@
                    case "2":
                    case "4":
                        if (!InsertOrUpdateBatch(db, userList,
                                staffGroup.Value, mesStaffPositionLinkList)) // 批量插入或更新员工
                                staffGroup.Value,
                                mesStaffPositionLinkList)) // 批量插入或更新员工
                            throw new NotImplementedException("同步失败");
                        break;
                    default:
@@ -419,12 +434,14 @@
    // 批量插入或更新员工的方法
    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;