using MES.Service.DB; using MES.Service.Dto.webApi; using MES.Service.Dto.webApi.FbsDb; using MES.Service.Modes; using MES.Service.Modes.FBSDB; using MES.Service.service.BasicData; using SqlSugar; namespace MES.Service.service.FBSDB; public class FbsDbManager:Repository { private readonly FbsDbBManager _dbBManager = new(); public bool SaveList(List dbs) { var result = dbs.Select(Save).ToList(); return result.All(b => b); } public bool Save(ErpDb dbs) { var dba = dbs.erpDbcka; var mesDbA = FbaDbA(dba); var mesDbB = FbsDbB(dbs.erpDbckB,dba.FBillNo); return UseTransaction(db => { switch (dba.Type) { case "3": return DeleteData(db, mesDbA, mesDbB) ? 1 : 0; case "1": case "2": case "4": case "5": return SaveOrUpdateData(db, mesDbA, mesDbB) ? 1 : 0; default: throw new NotImplementedException($"type没有{dba.Type}这个类型"); } }) > 0; } // 插入或更新数据的方法 private bool SaveOrUpdateData(SqlSugarScope db, MesInvItemMoves fbsdba, List fbsdbb) { if (fbsdba.Id != null) { base.DeleteById(fbsdba.Id); } if (fbsdbb.Count > 0) { db.Deleteable().Where(s => s.ItemMoveId == fbsdba.Erpid).ExecuteCommand(); } var orUpdate = base.Insert(fbsdba); var baOrUpdate = _dbBManager.InsertRange(fbsdbb); if (orUpdate && baOrUpdate) { return true; } throw new NotImplementedException("插入或更新失败"); } private bool DeleteData(SqlSugarScope db, MesInvItemMoves mesDbA, List mesDbB) { var decimals = mesDbB.Select(s => s.Id).ToArray(); var update = base.DeleteById(mesDbA.Id); var insertOrUpdate = db.Deleteable().In(decimals).ExecuteCommand() > 0; if (update && insertOrUpdate) { return true; } throw new NotImplementedException("删除失败"); } private MesInvItemMoves FbaDbA(FbsDbA dto) { var entity = new MesInvItemMoves { Erpid = Convert.ToDecimal(dto.Erpid), BillNo = dto.FBillNo, CreateBy = dto.FCreateBy, CreateDate = dto.FDate != null ? DateTime.ParseExact(dto.FDate, "yyyy-MM-dd HH:mm:ss", null) : null, Status = 1, Remark = dto.FRemarks, BillTypeId = 300, TransactionNo = 302, SapStatus = 0, Factory = "1000", Company = "1000", Ts =0, DbStatus="未调拨", FBillTypeId=dto.FBillTypeID, FDocumentStatus=dto.FDocumentStatus, FTransferDirect=dto.FTransferDirect, FTransType=dto.FTRANSTYPE, FBusinessType=dto.FBusinessType, FOwnerTypeIdHead=dto.FOwnerTypeIdHead, FOwnerTypeInIdHead=dto.FOwnerTypeInIdHead, FAppOrgId=Convert.ToDecimal(dto.FAPPORGID) }; var single = base.GetSingle(it => it.Erpid == entity.Erpid); if (single != null) { entity.Id = single.Id; } return entity; } private List FbsDbB(List dtoList,string billno) { var dbList = new List(); foreach (var dto in dtoList) { var entitys = new MesInvItemMoveItems { ErpId = Convert.ToDecimal(dto.erpid), ItemMoveId = Convert.ToDecimal(dto.eid), ItemId =Convert.ToDecimal(dto.FMATERIALID), ItemUnit = Convert.ToDecimal(dto.FUNITID), SqNum = Convert.ToDecimal(dto.FQty), Remark = dto.FNote, BillNo = billno, MoveIn = 0, MoveOut = 0, CreateDate = DateTime.Now, IsTb = 0, FOwnerTypeId = dto.FOwnerTypeId, FOwnerId = dto.FOwnerId, FStockId = dto.FStockId, FOwnerTypeInId = dto.FOwnerTypeInId, FOwnerInId = dto.FOwnerInId, FStockInId = dto.FStockInId, FStockOrgId = Convert.ToDecimal(dto.FStockOrgId), FStockOrgInId = Convert.ToDecimal(dto.FStockOrgInId), FLot=dto.FLot, FMtono=dto.FMtoNo }; var entity = Db.Queryable().Where(s => s.ErpId == entitys.ErpId).Single(); if (entity != null) { entitys.Id = entity.Id; } dbList.Add(entitys); } return dbList; } }