啊鑫
2025-01-22 eb744ecfecc0f1b6d9c0999c65bc740d93e30eda
StandardPda/MES.Service/service/BasicData/MesUnitManager.cs
@@ -43,39 +43,8 @@
    public bool SaveList(List<ErpUnit> units)
    {
        var list = units.Select(GetMesUnit).ToList();
        var groupBy = list.GroupBy(s => s.Type)
            .ToDictionary(g => g.Key, g => g.ToList());
        return UseTransaction(db =>
        {
            foreach (var unitGroup in groupBy)
                switch (unitGroup.Key)
                {
                    case "0":
                        if (!UpdateUnitStatusBatch(db, unitGroup.Value, "A"))
                            throw new NotImplementedException("启用失败");
                        break;
                    case "1":
                        if (!UpdateUnitStatusBatch(db, unitGroup.Value, "B"))
                            throw new NotImplementedException("禁用失败");
                        break;
                    case "3":
                        if (!DeleteUnitBatch(db, unitGroup.Value))
                            throw new NotImplementedException("删除失败");
                        break;
                    case "2":
                    case "4":
                        if (!InsertOrUpdateBatch(db, unitGroup.Value))
                            throw new NotImplementedException("同步失败");
                        break;
                    default:
                        throw new ArgumentNullException(
                            $"type没有{unitGroup.Key}这个类型的参数");
                }
            return 1;
        }) > 0;
        var result = units.Select(Save).ToList();
        return result.All(b => b);
    }
    private bool UpdateUnitStatus(SqlSugarScope db, decimal unitId,
@@ -89,15 +58,6 @@
            return true;
        throw new NotImplementedException(status == "A" ? "启用失败" : "禁用失败");
    }
    private bool InsertUnit(SqlSugarScope db, MesUnit entity)
    {
        var insert = db.Insertable(entity).ExecuteCommand();
        if (insert > 0)
            return true;
        throw new NotImplementedException("插入失败");
    }
    private bool DeleteUnit(SqlSugarScope db, decimal unitId)
@@ -117,108 +77,29 @@
            Fnumber = unit.FNumber,
            Fname = unit.FName,
            Funitgroupid = unit.FUnitGroupId,
            Fconvertdenominator = unit.FConvertDenominator,
            Fcurrentunitid = unit.FCurrentUnitId,
            Fconvertnumerator = unit.FConvertNumerator,
            Fbaseunit = unit.FBaseUnit,
            Froundtype = unit.FRoundType,
            Fprecision = unit.FPrecision,
            Fdescription = unit.FDescription,
            /// <summary>
            /// 接口字段调整:标准版接口新增 ERP单据状态 字段。
            /// </summary>
            /// <remarks>
            /// 修改人:<池南骏>
            /// 修改日期:<2024-12-30>
            /// 修改说明:
            /// - 原代码:空
            /// - 修改后:
            ///FDOCUMENTSTATUS = supplier.FDocumentStatus,
            /// </remarks>
            FDOCUMENTSTATUS = unit.FDocumentStatus,
            Fforbidstatus = unit.FForbidStatus,
            DocumentStatus = unit.FDocumentStatus,
            BaseUomid = unit.BaseUomid,
            RatioToBase = unit.RatioToBase,
            RoundValue = unit.RoundValue,
            CreateDate = DateTime.Now,
            Company = "1000",
            Factory = "1000"
        };
    }
    private bool UpdateUnitStatusBatch(SqlSugarScope db, List<MesUnit> unitList,
        string status)
    {
        var ids = unitList.Select(it => it.Id).ToArray();
        var result = db.Updateable<MesUnit>()
            .SetColumns(s => s.Fforbidstatus == status)
            .Where(s => ids.Contains(s.Id)).ExecuteCommand();
        if (result > 0)
            return true;
        throw new NotImplementedException(status == "A" ? "启用失败" : "禁用失败");
    }
    private bool InsertUnitBatch(SqlSugarScope db, List<MesUnit> unitList)
    {
        var insertRange = db.Insertable(unitList).ExecuteCommand();
        if (insertRange > 0)
            return true;
        throw new NotImplementedException("插入失败");
    }
    private bool DeleteUnitBatch(SqlSugarScope db, List<MesUnit> unitList)
    {
        var ids = unitList.Select(it => it.Id).ToArray();
        var deleteByIds = db.Deleteable<MesUnit>().In(ids).ExecuteCommand();
        return deleteByIds > 0;
    }
    /// <summary>
    /// "插入或更新的方法"调整:修改为先删除再插入。
    /// </summary>
    /// <remarks>
    /// 修改人:池南骏
    /// 修改日期:2024-12-30
    /// 修改说明:`
    /// </remarks>
    
    ///原代码
    //private bool InsertOrUpdate(SqlSugarScope db, MesUnit entity)
    //{
    //    var exists = db.Queryable<MesUnit>().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;
    //}
    ///新代码
    private bool InsertOrUpdate(SqlSugarScope db, MesUnit entity)
    {
        db.Deleteable<MesUnit>()
    .Where(s => s.Id == entity.Id)
    .ExecuteCommand();
            .Where(s => s.Id == entity.Id)
            .ExecuteCommand();
        var insert = db.Insertable(entity).ExecuteCommand();
        return insert > 0;
    }
    private bool InsertOrUpdateBatch(SqlSugarScope db, List<MesUnit> unitList)
    {
        foreach (var entity in unitList)
            if (!InsertOrUpdate(db, entity))
                return false;
        return true;
    }
}