| | |
| | | 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) |
| | | { |
| | |
| | | |
| | | public bool Save(ERPDBCK data) |
| | | { |
| | | var head = MapErpDbckaToDbcka(data.erpDbcka); |
| | | var head = MapErpToMesHead(data.erpDbcka); |
| | | var details = MapErpDbckbToDbckb(data.erpDbckB); |
| | | |
| | | return UseTransaction(db => |
| | |
| | | }) > 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, |
| | |
| | | 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); |
| | |
| | | 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("更新失败"); |
| | | } |
| | | } |
| | | } |