using MES.Service.DB;
|
using MES.Service.Dto.webApi;
|
using MES.Service.Modes;
|
using SqlSugar;
|
|
namespace MES.Service.service;
|
|
public class WomcaaManager : Repository<Womcaa>
|
{
|
private readonly WomcabManager _womcabManager = new();
|
|
public bool SaveList(List<ErpWOM> rohIns)
|
{
|
var result = rohIns.Select(Save).ToList();
|
return result.All(b => b);
|
}
|
|
public bool Save(ErpWOM wom)
|
{
|
var womErpCaa = wom.ErpCaa;
|
var mesWomcaa = MapErpCAAtoWomcaa(womErpCaa);
|
var mesWomcabs =
|
MapErpCABtoWomcab(wom.ErpCabs);
|
|
return UseTransaction(db =>
|
{
|
switch (womErpCaa.Type)
|
{
|
case "3":
|
return UpdateData(db, mesWomcaa, mesWomcabs) ? 1 : 0;
|
case "2":
|
case "4":
|
case "5":
|
return SaveOrUpdateData(db, mesWomcaa, mesWomcabs)
|
? 1
|
: 0;
|
default:
|
throw new NotImplementedException(
|
$"type类型为{womErpCaa.Type}的不存在");
|
}
|
}) > 0;
|
}
|
|
private bool SaveOrUpdateData(SqlSugarScope db, Womcaa mesWomcaa,
|
List<Womcab> mesWomcabs)
|
{
|
if (mesWomcaa.Id != null) base.DeleteById(mesWomcaa.Id);
|
|
if (mesWomcabs.Count > 0)
|
db.Deleteable<Womcab>()
|
.Where(s => s.Eid == mesWomcaa.Erpid).ExecuteCommand();
|
|
var orUpdate = db.Insertable(mesWomcaa)
|
.IgnoreColumns(true).ExecuteCommand() > 0;
|
|
var baOrUpdate = db.Insertable(mesWomcabs).PageSize(1)
|
.IgnoreColumnsNull()
|
.ExecuteCommand() > 0;
|
|
if (orUpdate && baOrUpdate) return true;
|
throw new NotImplementedException("更新失败");
|
}
|
|
private bool UpdateData(SqlSugarScope db, Womcaa mesWomcaa,
|
List<Womcab> mesWomcabs)
|
{
|
var decimals = mesWomcabs.Select(s => s.Id).ToArray();
|
var update = base.DeleteById(mesWomcaa.Id);
|
var insertOrUpdate = db
|
.Deleteable<Womcab>().In(decimals)
|
.ExecuteCommand() > 0;
|
|
if (update && insertOrUpdate) return true;
|
throw new NotImplementedException("更新失败");
|
}
|
|
private Womcaa MapErpCAAtoWomcaa(ErpCAA dto)
|
{
|
var entity = new Womcaa
|
{
|
Erpid = Convert.ToInt64(dto.Id),
|
Caa001 = dto.FBillNo,
|
Caa021 = dto.FWorkShopID,
|
RoutingId = dto.FRoutingId,
|
WorkShopId = dto.FREMWorkShopId,
|
DepotCode = dto.FStockId,
|
CreateDate = dto.FDate,
|
Caa004 = dto.FBillType,
|
Caa023 = dto.FStatus,
|
Caa006 = dto.FMaterialId,
|
Caa009 = dto.FUnitId,
|
Caa012 = !string.IsNullOrEmpty(dto.FQty)
|
? Convert.ToDecimal(dto.FQty)
|
: null,
|
WorkGroupId = dto.FWorkGroupId,
|
PlanId = dto.FPlannerID,
|
Caa010 = dto.FPlanStartDate,
|
Caa011 = dto.FPlanFinishDate,
|
Caa005 = dto.FConveyDate,
|
StockInlimith = dto.FStockInLimitH,
|
StockInlimitl = dto.FStockInLimitL,
|
Mtono = dto.FMTONO,
|
Lot = dto.FLot,
|
Caa013 = dto.FBomId,
|
|
CreateType = dto.FCreateType,
|
Caa018 = !string.IsNullOrEmpty(dto.PLAN_ID)
|
? Convert.ToInt64(dto.PLAN_ID)
|
: null,
|
Caa019 = !string.IsNullOrEmpty(dto.PLAN_SEQ)
|
? Convert.ToInt64(dto.PLAN_SEQ)
|
: null,
|
Caa020 = dto.PLAN_NUM,
|
SrcBillType = dto.FSrcBillType,
|
SrcBillNo = dto.FSrcBillNo,
|
SrcBillentryseq = dto.FSrcBillEntrySeq,
|
SaleOrderNo = dto.FSaleOrderNo,
|
SaleOrderEntryseq = dto.FSaleOrderEntrySeq,
|
ForceCloserid = dto.FForceCloserId,
|
CloseType = dto.FCloseType,
|
SrcSplitBillno = dto.FSrcSplitBillNo,
|
Caa016 = dto.FDescription,
|
//BTBZ = dto.BTBZ,
|
PrdOrg = dto.FPrdOrgId,
|
TrustOrg = dto.FEnTrustOrgId
|
//Typea = dto.TypeA
|
};
|
|
|
var single = base.GetSingle(it => it.Erpid == entity.Erpid);
|
if (single != null) entity.Id = single.Id;
|
|
return entity;
|
}
|
|
private List<Womcab> MapErpCABtoWomcab(List<ErpCAB> dtoList)
|
{
|
var womcabList = new List<Womcab>();
|
|
foreach (var dto in dtoList)
|
{
|
var womcab = new Womcab
|
{
|
Erpid = !string.IsNullOrEmpty(dto.ID)
|
? Convert.ToDecimal(dto.ID)
|
: throw new Exception("子表id不允许为空"),
|
Cab001 = dto.FBillNo,
|
Cab002 = dto.FSeq,
|
Cab003 = dto.FMaterialID,
|
Cab006 = !string.IsNullOrEmpty(dto.FNeedQty)
|
? Convert.ToDecimal(dto.FNeedQty)
|
: null,
|
MustQty = !string.IsNullOrEmpty(dto.FMustQty)
|
? Convert.ToDecimal(dto.FMustQty)
|
: null,
|
Cab007 = !string.IsNullOrEmpty(dto.FPickedQty)
|
? Convert.ToDecimal(dto.FPickedQty)
|
: null,
|
PositionNo = dto.FPositionNO,
|
SupplyOrganization = dto.FChildSupplyOrgId,
|
IssuingOrganization = dto.FSupplyOrg,
|
OwnerId = dto.FOwnerID,
|
Mtono = dto.FMTONO,
|
Lot = dto.FLot,
|
DepotCode = dto.FStockID,
|
IssueType = dto.FIssueType,
|
Cab009 = dto.FUnitID,
|
SupplyType = dto.FSupplyType,
|
Cab012 = !string.IsNullOrEmpty(dto.FStdQty)
|
? Convert.ToDecimal(dto.FStdQty)
|
: null,
|
FreplaceGroup = !string.IsNullOrEmpty(dto.FReplaceGroup)
|
? Convert.ToInt64(dto.FReplaceGroup)
|
: null,
|
UseRate = !string.IsNullOrEmpty(dto.FUseRate)
|
? Convert.ToDecimal(dto.FUseRate)
|
: null,
|
MaterialType = dto.FMaterialType,
|
Cab014 = !string.IsNullOrEmpty(dto.FIsKeyItem)
|
? Convert.ToInt64(dto.FIsKeyItem)
|
: null,
|
Numerator = !string.IsNullOrEmpty(dto.FNumerator)
|
? Convert.ToDecimal(dto.FNumerator)
|
: null,
|
Denominator = !string.IsNullOrEmpty(dto.FDenominator)
|
? Convert.ToDecimal(dto.FDenominator)
|
: null,
|
Pid = !string.IsNullOrEmpty(dto.FID)
|
? Convert.ToDecimal(dto.FID)
|
: throw new Exception("父id不允许为空"),
|
Eid = !string.IsNullOrEmpty(dto.FID)
|
? Convert.ToDecimal(dto.FID)
|
: throw new Exception("父id不允许为空"),
|
Scrapqty = !string.IsNullOrEmpty(dto.FFixScrapQty)
|
? Convert.ToDecimal(dto.FFixScrapQty)
|
: null,
|
Scraprate = !string.IsNullOrEmpty(dto.FScrapRate)
|
? Convert.ToDecimal(dto.FScrapRate)
|
: null,
|
TypeB = dto.TypeB
|
// WR_F_XIFG_Base_qtr = dto.F_XIFG_Base_qtr,
|
// WR_F_XIFG_Base_83g = dto.F_XIFG_Base_83g
|
};
|
|
var entity = Db.Queryable<Womcab>()
|
.Where(s => s.Erpid == womcab.Erpid).Single();
|
if (entity != null) womcab.Id = entity.Id;
|
|
womcabList.Add(womcab);
|
}
|
|
return womcabList;
|
}
|
}
|