啊鑫
2025-07-07 79e43ccffd15afcd99934ee43b706f6133398079
MES.Service/service/BOM/MesBomMasterManager.cs
@@ -46,47 +46,94 @@
        private bool UpdateData(SqlSugarScope db, MesBomMaster mesMesBom,
            List<MesBomDetail1> mesMesBomDatas1, List<MesBomDetail2> mesMesBomDatas2)
        {
            var decimals1 = mesMesBomDatas1.Select(s => s.Erpid).ToArray();
            var decimals2 = mesMesBomDatas2.Select(s => s.Erpid).ToArray();
            var update = base.DeleteById(mesMesBom.Erpid);
            var insertOrUpdate1 = db
                .Deleteable<MesBomDetail1>().In(decimals1)
                .ExecuteCommand() > 0;
            var insertOrUpdate2 = db
                .Deleteable<MesBomDetail2>().In(decimals2)
                .ExecuteCommand() > 0;
            //删除相同ERPID相同BOM更新类型的单据
            var query = db.Queryable<MesBomMaster>()
              .Where(s => s.Erpid == mesMesBom.Erpid);
            if (update && insertOrUpdate1 && insertOrUpdate2) return true;
            throw new NotImplementedException("更新失败");
            if (mesMesBom.BomUpdateType != "1")
            {
                if (string.IsNullOrEmpty(mesMesBom.BomUpdateType))
                {
                    query = query.Where(s => string.IsNullOrEmpty(s.BomUpdateType));
                }
                else
                {
                    query = query.Where(s => s.BomUpdateType == mesMesBom.BomUpdateType);
                }
                decimal? ID = query.Select(s => s.Id).First();
                var update = base.DeleteById(ID);
                var insertOrUpdate1 = db.Deleteable<MesBomDetail1>()
                   .Where(s => s.Mid == ID)
                   .ExecuteCommand() > 0;
                var insertOrUpdate2 = true;
                if (mesMesBomDatas2.Count > 0)
                {
                    insertOrUpdate2 = db.Deleteable<MesBomDetail2>()
                   .Where(s => s.Mid == ID)
                   .ExecuteCommand() > 0; ;
                    // deleted 为 true 表示有记录被删除
                }
                if (update && insertOrUpdate1 && insertOrUpdate2) return true;
                throw new NotImplementedException("更新失败");
            }
            return true;
        }
        // 插入或更新数据的方法
        private bool SaveOrUpdateData(SqlSugarScope db, MesBomMaster mesMesBom,
            List<MesBomDetail1> mesMesBomDatas1, List<MesBomDetail2> mesMesBomDatas2, string type)
        {
            if (mesMesBom.Erpid != null) base.DeleteById(mesMesBom.Erpid);
            //相同ERPID不同BOM更新类型的单据保留
            var query = db.Queryable<MesBomMaster>()
              .Where(s => s.Erpid == mesMesBom.Erpid);
            if (mesMesBomDatas1.Count > 0)
                db.Deleteable<MesBomDetail1>()
                    .Where(s => s.Erphid == mesMesBom.Erpid).ExecuteCommand();
            if (string.IsNullOrEmpty(mesMesBom.BomUpdateType))
            {
                query = query.Where(s => string.IsNullOrEmpty(s.BomUpdateType));
            }
            else
            {
                query = query.Where(s => s.BomUpdateType == mesMesBom.BomUpdateType);
            }
            if (mesMesBomDatas2.Count > 0)
                db.Deleteable<MesBomDetail2>()
                    .Where(s => s.Erphid == mesMesBom.Erpid).ExecuteCommand();
            decimal? ID = query.Select(s => s.Id).First();
            if (ID != null)
            {
                if (mesMesBom.Erpid != null)
                    db.Deleteable<MesBomMaster>()
                      .Where(s => s.Id == ID)
                      .ExecuteCommand();
                if (mesMesBomDatas1.Count > 0)
                    db.Deleteable<MesBomDetail1>()
                        .Where(s => s.Mid == ID).ExecuteCommand();
                if (mesMesBomDatas2.Count > 0)
                    db.Deleteable<MesBomDetail2>()
                        .Where(s => s.Mid == ID).ExecuteCommand();
            }
            //var orUpdate = base.Insert(mesMesBom);
            //var baOrUpdate = MesBomDetail1Manager.InsertRange(mesMesBomDatas1);
            //if (orUpdate && baOrUpdate) return true;
            var update_res = UseTransaction(db =>
            {
                db.Insertable(mesMesBom).ExecuteCommand();
                //获取主表插入后的主键
                var insertedId = db.Insertable(mesMesBom).ExecuteReturnIdentity();
                for (int i = 0; i < mesMesBomDatas1.Count; i++)
                {
                    var item = mesMesBomDatas1[i];
                    //item.PID = id;
                    item.Mid = insertedId;
                    db.Insertable(item).IgnoreColumns(true).ExecuteCommand();
                }
@@ -94,7 +141,7 @@
                for (int i = 0; i < mesMesBomDatas2.Count; i++)
                {
                    var item = mesMesBomDatas2[i];
                    //item.PID = id;
                    item.Mid = insertedId;
                    db.Insertable(item).IgnoreColumns(true).ExecuteCommand();
                }