|
|
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<MesInvItemMoves>
|
{
|
private readonly FbsDbBManager _dbBManager = new();
|
|
public bool SaveList(List<ErpDb> 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<MesInvItemMoveItems> fbsdbb)
|
{
|
if (fbsdba.Id != null)
|
{
|
base.DeleteById(fbsdba.Id);
|
}
|
|
if (fbsdbb.Count > 0)
|
{
|
db.Deleteable<MesInvItemMoveItems>().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<MesInvItemMoveItems> mesDbB)
|
{
|
var decimals = mesDbB.Select(s => s.Id).ToArray();
|
var update = base.DeleteById(mesDbA.Id);
|
var insertOrUpdate = db.Deleteable<MesInvItemMoveItems>().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<MesInvItemMoveItems> FbsDbB(List<FbsDbB> dtoList,string billno)
|
{
|
var dbList = new List<MesInvItemMoveItems>();
|
|
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<MesInvItemMoveItems>().Where(s => s.ErpId == entitys.ErpId).Single();
|
if (entity != null)
|
{
|
entitys.Id = entity.Id;
|
}
|
|
dbList.Add(entitys);
|
}
|
|
return dbList;
|
}
|
}
|