sjz
5 天以前 6761b0ed84fd7a03400b557244d0835f671dad94
MES.Service/service/BasicData/SysDepartmentManager.cs
@@ -1,4 +1,5 @@
using MES.Service.DB;
using Castle.Core.Resource;
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using SqlSugar;
@@ -31,7 +32,7 @@
                        return 1;
                    break;
                case "3":
                    if (DeleteDepartment(db, entity.Id)) // 删除部门
                    if (UpdateDepartmentStatus(db, entity.Id, "B")) // 禁用部门
                        return 1;
                    break;
                case "4":
@@ -39,8 +40,7 @@
                        return 1;
                    break;
                default:
                    throw new ArgumentNullException(
                        $"type没有{department.Type}这个类型的参数");
                    throw new ArgumentNullException($"type没有{department.Type}这个类型的参数");
            }
            throw new NotImplementedException("操作失败");
@@ -48,59 +48,56 @@
    }
    // 更新部门状态的方法
    private bool UpdateDepartmentStatus(SqlSugarScope db, decimal departmentId,
        string status)
    private bool UpdateDepartmentStatus(SqlSugarScope db, decimal departmentId,string status)
    {
        var result = db.Updateable<SysDepartment>()
            .SetColumns(s => s.Depextr4 == status)
            .Where(s => s.Id == departmentId).ExecuteCommand();
        if (result > 0)
            return true;
        throw new NotImplementedException(status == "A" ? "启用失败" : "禁用失败");
        var result = db.Updateable<SysDepartment>().SetColumns(s => s.Depextr4 == status).Where(s => s.Id == departmentId).ExecuteCommand();
        return true;
    }
    // 插入新部门的方法
    private bool InsertDepartment(SqlSugarScope db, SysDepartment entity)
    {
        var insert = db.Insertable(entity).ExecuteCommand();
        if (insert > 0)
            return true;
        throw new NotImplementedException("插入失败");
    }
    // 删除部门的方法
    private bool DeleteDepartment(SqlSugarScope db, decimal departmentId)
    {
        var deleteById = db.Deleteable<SysDepartment>().In(departmentId)
            .ExecuteCommand();
        if (deleteById > 0)
            return true;
        throw new NotImplementedException("删除失败");
    }
    // 插入或更新部门的方法
    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;
            var result = db.Updateable<SysDepartment>().ExecuteCommand();
            return true;
        }
        else
        {
            var insert = db.Insertable(entity).ExecuteCommand();
            if (insert > 0)
            {
                return true;
            }
            else
            {
                throw new NotImplementedException("插入失败");
            }
        }
    }
        return false;
    // 插入或更新部门的方法
    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();
            return true;
        }
        else
        {
            var insert = db.Insertable(entity).ExecuteCommand();
            if (insert > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
    // 将 ErpDepartment 对象转换为 SysDepartment 对象的方法
@@ -128,50 +125,37 @@
    // 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 list = departments.Select(GetSysDepartment).ToList();
        var groupBy = list.GroupBy(s => s.Type)
            .ToDictionary(g => g.Key, g => g.ToList());
        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")) // 批量启用部门
                        if (!UpdateDepartmentStatusBatch(db,departmentGroup.Value, "A")) // 批量启用部门
                            throw new NotImplementedException("启用失败");
                        break;
                    case "1":
                        if (!UpdateDepartmentStatusBatch(db,
                                departmentGroup.Value, "B")) // 批量禁用部门
                        if (!UpdateDepartmentStatusBatch(db,departmentGroup.Value, "B")) // 批量禁用部门
                            throw new NotImplementedException("禁用失败");
                        break;
                    case "2":
                        if (!InsertDepartmentBatch(db,
                                departmentGroup.Value)) // 批量插入部门
                        if (!InsertDepartmentBatch(db,departmentGroup.Value)) // 批量插入部门
                            throw new NotImplementedException("插入失败");
                        break;
                    case "3":
                        if (!DeleteDepartmentBatch(db,
                                departmentGroup.Value)) // 批量删除部门
                        if (!UpdateDepartmentStatusBatch(db, departmentGroup.Value, "B")) // 批量禁用部门
                            throw new NotImplementedException("删除失败");
                        break;
                    case "4":
                        if (!InsertOrUpdateDepartmentBatch(db,
                                departmentGroup.Value)) // 批量插入或更新部门
                        if (!InsertOrUpdateDepartmentBatch(db,departmentGroup.Value)) // 批量插入或更新部门
                            throw new NotImplementedException("同步失败");
                        break;
                    default:
                        throw new ArgumentNullException(
                            $"type没有{departmentGroup.Key}这个类型的参数");
                        throw new ArgumentNullException($"type没有{departmentGroup.Key}这个类型的参数");
                }
            return 1;
@@ -179,52 +163,36 @@
    }
    // 批量更新部门状态的方法
    private bool UpdateDepartmentStatusBatch(SqlSugarScope db,
        List<SysDepartment> departmentList, string status)
    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" ? "启用失败" : "禁用失败");
        var result = db.Updateable<SysDepartment>().SetColumns(s => s.Depextr4 == status).Where(s => ids.Contains(s.Id)).ExecuteCommand();
        return true;
    }
    // 批量插入部门的方法
    private bool InsertDepartmentBatch(SqlSugarScope db,
        List<SysDepartment> departmentList)
    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("删除失败");
        foreach (var entity in departmentList)
        {
            if (!InsertDepartment(db, entity))
            {
                return false;
            }
        }
        return true;
    }
    // 批量插入或更新部门的方法
    private bool InsertOrUpdateDepartmentBatch(SqlSugarScope db,
        List<SysDepartment> departmentList)
    private bool InsertOrUpdateDepartmentBatch(SqlSugarScope db,List<SysDepartment> departmentList)
    {
        foreach (var entity in departmentList)
        {
            if (!InsertOrUpdateDepartment(db, entity))
            {
                return false;
            }
        }
        return true;
    }
}