hao
2025-06-04 d7bf5fce0a442c858d02675a2c71a8af49937ae2
StandardInterface/MES.Service/service/DbckaManager.cs
@@ -5,10 +5,11 @@
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace MES.Service.service
{
    public class DbckaManager : Repository<Dbcka>
    public class DbckaManager : Repository<MesInvItemDbsq>
    {
        public bool SaveList(List<ERPDBCK> list)
        {
@@ -18,7 +19,7 @@
        public bool Save(ERPDBCK data)
        {
            var head = MapErpDbckaToDbcka(data.erpDbcka);
            var head = MapErpToMesHead(data.erpDbcka);
            var details = MapErpDbckbToDbckb(data.erpDbckB);
            return UseTransaction(db =>
@@ -37,12 +38,12 @@
            }) > 0;
        }
        private Dbcka MapErpDbckaToDbcka(ErpDBCKA dto)
        private MesInvItemDbsq MapErpToMesHead(ErpDBCKA dto)
        {
            var entity = new Dbcka
            var entity = new MesInvItemDbsq
            {
                Billno = dto.billno,
                DjLx = dto.dj_lx,
                BillNo = dto.billno,
                Djlx = dto.dj_lx,
                DbLx1 = dto.db_lx1,
                DbFx = dto.db_fx,
                DbLx = dto.db_lx,
@@ -50,43 +51,51 @@
                DjZt = dto.dj_zt,
                SqBm = dto.sq_bm,
                SqZz = dto.sq_zz,
                SqTime = DateTime.TryParse(dto.sq_time, out var d) ? d : null,
                SqTime = dto.sq_time,
                DcHz = dto.dc_hz,
                Bz = dto.bz,
                Type = dto.type,
                Remark = dto.bz,
                Erpid = dto.erpid,
                CreateDate = DateTime.Now
                CreateDate = DateTime.Now,
                CreateBy = "System"
            };
            var single = base.GetSingle(it => it.Erpid == entity.Erpid);
            if (single != null) entity.Id = single.Id;
            //    var single = base.GetSingle(it => it.Erpid == entity.Erpid);
            /* if (single != null && single.Id.HasValue)
                 entity.Id = single.Id.Value;*/
            var single = Db.Queryable<MesInvItemDbsq>()
               .Where(it => it.Erpid == entity.Erpid)
               .First();
            if (single != null)
                entity.Id = single.Id;
            return entity;
        }
        private List<Dbckb> MapErpDbckbToDbckb(List<ErpDBCKB> list)
        private List<MesInvItemDbsqItems> MapErpDbckbToDbckb(List<ErpDBCKB> list)
        {
            var result = new List<Dbckb>();
            var result = new List<MesInvItemDbsqItems>();
            foreach (var dto in list)
            {
                var item = new Dbckb
                var item = new MesInvItemDbsqItems
                {
                    Itemid = dto.itemid,
                    Unit = dto.unit,
                    Quantity = decimal.TryParse(dto.quantity, out var qty) ? qty : null,
                    ItemId = Convert.ToDecimal(dto.itemid),
                    ItemUnit = Convert.ToDecimal(dto.unit),
                    SqNum = decimal.TryParse(dto.quantity, out var qty) ? qty : 0,
                    DcOrg = dto.dc_org,
                    DcDepot = dto.dc_depot,
                    DrOrg = dto.dr_org,
                    DrDepot = dto.dr_depot,
                    DcHz = dto.dc_hz,
                    DrHz = dto.dr_hz,
                    Bz = dto.bz,
                    Remark = dto.bz,
                    Erpid = dto.erpid,
                    Eid = dto.eid
                    Eid = dto.eid,
                };
                var existing = Db.Queryable<Dbckb>().Where(s => s.Erpid == item.Erpid).Single();
                var existing = Db.Queryable<MesInvItemDbsqItems>().Where(s => s.Erpid == item.Erpid).Single();
                if (existing != null) item.Id = existing.Id;
                result.Add(item);
@@ -95,37 +104,42 @@
            return result;
        }
        private bool SaveOrUpdateData(SqlSugarScope db, Dbcka head, List<Dbckb> details)
        private bool SaveOrUpdateData(SqlSugarScope db, MesInvItemDbsq head, List<MesInvItemDbsqItems> details)
        {
            if (head.Id != null)
                base.DeleteById(head.Id);
            db.Deleteable<Dbckb>()
            db.Deleteable<MesInvItemDbsqItems>()
              .Where(d => d.Eid == head.Erpid)
              .ExecuteCommand();
            var insertedHead = db.Insertable(head)
                .IgnoreColumns(true)
                .ExecuteReturnEntity();
                .ExecuteReturnIdentity();
            if (insertedHead <= 0)
                throw new Exception("主表插入失败,未返回ID");
            foreach (var item in details)
                item.Pid = Convert.ToDecimal(insertedHead.Id);
            var success = db.Insertable(details)
                .PageSize(10)
                .IgnoreColumnsNull()
                .ExecuteCommand() > 0;
            return insertedHead.Id != null && success;
            if (insertedHead >= 0 && success) return true;
            throw new NotImplementedException("插入或更新失败");
        }
        private bool UpdateData(SqlSugarScope db, Dbcka head, List<Dbckb> details)
        private bool UpdateData(SqlSugarScope db, MesInvItemDbsq head, List<MesInvItemDbsqItems> details)
        {
            var ids = details.Select(d => d.Id).ToArray();
            var deletedHead = base.DeleteById(head.Id);
            var deletedDetails = db.Deleteable<Dbckb>().In(ids).ExecuteCommand() > 0;
            var deletedDetails = db.Deleteable<MesInvItemDbsqItems>().In(ids).ExecuteCommand() > 0;
            return deletedHead && deletedDetails;
            if (deletedHead && deletedDetails) return true;
            throw new NotImplementedException("更新失败");
        }
    }
}