啊鑫
2025-01-24 bdbfc1045c94e23c74cf9c6f98b0b4f9b0ca0d00
StandardPda/MES.Service/service/BasicData/SysDepartmentManager.cs
@@ -83,40 +83,7 @@
        throw new NotImplementedException("删除失败");
    }
    /// <summary>
    /// "插入或更新部门的方法"调整:修改为先删除再插入
    /// </summary>
    /// <remarks>
    /// 修改人:池南骏
    /// 修改日期:2024-12-31
    /// 修改说明:`
    /// </remarks>
    ///原代码
    // 插入或更新部门的方法
    //private bool InsertOrUpdateDepartment(SqlSugarScope db,
    //    SysDepartment entity)
    //{
    //    var exists = db.Queryable<SysDepartment>().Any(e => e.Id == entity.Id);
    //    if (exists)
    //    {
    //        var update = db.Updateable(entity).ExecuteCommand();
    //        if (update > 0)
    //            return true;
    //    }
    //    else
    //    {
    //        var insert = db.Insertable(entity).ExecuteCommand();
    //        if (insert > 0)
    //            return true;
    //    }
    //    return false;
    //}
    // 将 ErpDepartment 对象转换为 SysDepartment 对象的方法
    ///新代码
    // 插入或更新部门的方法
    private bool InsertOrUpdateDepartment(SqlSugarScope db,
@@ -145,8 +112,7 @@
            CreateDate = DateTime.Now,
            CreateOrg = Convert.ToDecimal(department.FCreateOrgId),
            UseOrg = Convert.ToDecimal(department.FUseOrgId),
            ParentId = Convert.ToDecimal(department.FParentID),
            FDOCUMENTSTATUS = department.FDocumentStatus,
            ParentId = department.FParentID,
            Company = "1000",
            Factory = "1000"
        };
@@ -155,104 +121,7 @@
    // SaveList 方法用于保存多个部门记录,根据类型批量执行不同的操作
    public bool SaveList(List<ErpDepartment> departments)
    {
        var list = new List<SysDepartment>();
        departments.ForEach(s =>
        {
            var entity =
                GetSysDepartment(s); // 将 ErpDepartment 转换为 SysDepartment
            entity.Type = s.Type;
            list.Add(entity);
        });
        var groupBy = list.GroupBy(s => s.Type)
            .ToDictionary(g => g.Key, g => g.ToList());
        return UseTransaction(db =>
        {
            foreach (var departmentGroup in groupBy)
                switch (departmentGroup.Key)
                {
                    case "0":
                        if (!UpdateDepartmentStatusBatch(db,
                                departmentGroup.Value, "A")) // 批量启用部门
                            throw new NotImplementedException("启用失败");
                        break;
                    case "1":
                        if (!UpdateDepartmentStatusBatch(db,
                                departmentGroup.Value, "B")) // 批量禁用部门
                            throw new NotImplementedException("禁用失败");
                        break;
                    //case "2":
                    //    if (!InsertDepartmentBatch(db,
                    //            departmentGroup.Value)) // 批量插入部门
                    //        throw new NotImplementedException("插入失败");
                    //    break;
                    case "3":
                        if (!DeleteDepartmentBatch(db,
                                departmentGroup.Value)) // 批量删除部门
                            throw new NotImplementedException("删除失败");
                        break;
                    case "2":
                    case "4":
                        if (!InsertOrUpdateDepartmentBatch(db,
                                departmentGroup.Value)) // 批量插入或更新部门
                            throw new NotImplementedException("同步失败");
                        break;
                    default:
                        throw new ArgumentNullException(
                            $"type没有{departmentGroup.Key}这个类型的参数");
                }
            return 1;
        }) > 0;
    }
    // 批量更新部门状态的方法
    private bool UpdateDepartmentStatusBatch(SqlSugarScope db,
        List<SysDepartment> departmentList, string status)
    {
        var ids = departmentList.Select(it => it.Id).ToArray();
        var result = db.Updateable<SysDepartment>()
            .SetColumns(s => s.Depextr4 == status)
            .Where(s => ids.Contains(s.Id)).ExecuteCommand();
        if (result > 0)
            return true;
        throw new NotImplementedException(status == "A" ? "启用失败" : "禁用失败");
    }
    // 批量插入部门的方法
    private bool InsertDepartmentBatch(SqlSugarScope db,
        List<SysDepartment> departmentList)
    {
        var insertRange = db.Insertable(departmentList).ExecuteCommand();
        if (insertRange > 0)
            return true;
        throw new NotImplementedException("插入失败");
    }
    // 批量删除部门的方法
    private bool DeleteDepartmentBatch(SqlSugarScope db,
        List<SysDepartment> departmentList)
    {
        var ids = departmentList.Select(it => it.Id).ToArray();
        var deleteByIds =
            db.Deleteable<SysDepartment>().In(ids).ExecuteCommand();
        if (deleteByIds > 0)
            return true;
        throw new NotImplementedException("删除失败");
    }
    // 批量插入或更新部门的方法
    private bool InsertOrUpdateDepartmentBatch(SqlSugarScope db,
        List<SysDepartment> departmentList)
    {
        foreach (var entity in departmentList)
            if (!InsertOrUpdateDepartment(db, entity))
                return false;
        return true;
        var result = departments.Select(Save).ToList();
        return result.All(b => b);
    }
}