using MES.Service.DB;
|
using MES.Service.Dto.webApi;
|
using MES.Service.Modes;
|
using SqlSugar;
|
|
namespace MES.Service.service;
|
|
public class WomcaaManager : Repository<Womcaa>
|
{
|
//当前类已经继承了 Repository 增、删、查、改的方法
|
|
//这里面写的代码不会给覆盖,如果要重新生成请删除 WomcaaManager.cs
|
|
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":
|
//kyy 2024-09-13 变更
|
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(10)
|
.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)
|
{
|
//string jabs="0";
|
|
//var entity = new Womcaa
|
//{
|
// Erpid = Convert.ToDecimal(dto.Id),
|
// Caa001 = dto.FBillNo,
|
// Caa004 = dto.FBillType,
|
// Caa005 = dto.FConveyDate,
|
// Caa006 = dto.FMaterialId,
|
// Caa009 = dto.FUnitId,
|
// Caa010 = dto.FPlanStartDate,
|
// Caa011 = dto.FPlanFinishDate,
|
// Caa012 = Convert.ToDecimal(dto.FQty),
|
// Caa013 = dto.FBomId,
|
// Caa015 = dto.FSaleOrderNo,
|
// Caa015Head = dto.FSaleOrderEntrySeq,
|
// Caa016 = dto.FDescription,
|
// Caa017 = 0,
|
// Caa018 = Convert.ToDecimal(dto.PLAN_ID),
|
// Caa019 = dto.PLAN_SEQ,
|
// Caa020 = dto.PLAN_NUM,
|
// Caa021 = dto.FWorkShopID,
|
// Fstatus = 0,
|
// Caa022 = Convert.ToDecimal(dto.FQty),
|
// Caa023 = dto.FStatus,
|
// Caa024 = 0,
|
// RoutingId = dto.FRoutingId,
|
// WorkShopId = dto.FREMWorkShopId,
|
// DepotCode = dto.FStockId,
|
// CreateDate = dto.FDate,
|
// WorkGroupId = dto.FWorkGroupId,
|
// PlanId = dto.FPlannerID,
|
// StockInlimith = dto.FStockInLimitH,
|
// StockInlimitl = dto.FStockInLimitL,
|
// Mtono = dto.FMTONO,
|
// Lot = dto.FLot,
|
// CreateType = dto.FCreateType,
|
// SrcBillType = dto.FSrcBillType,
|
// SrcBillNo = dto.FSrcBillNo,
|
// SrcBillentryseq = dto.FSrcBillEntrySeq,
|
// SaleOrderNo = dto.FSaleOrderNo,
|
// SaleOrderEntryseq = dto.FSaleOrderEntrySeq,
|
// ForceCloserid = dto.FForceCloserId,
|
// CloseType = dto.FCloseType,
|
// SrcSplitBillno = dto.FSrcSplitBillNo,
|
// F_ZSXG_KH = dto.F_ZSXG_KH,
|
// F_ZJXF_YHRQ = dto.F_ZJXF_YHRQ,
|
// PrdOrg = dto.erP_SCZZ,
|
// TrustOrg = dto.erP_WTZZ,
|
// TbTime = DateTime.Now,
|
// JaBs = "0"
|
//};
|
|
//if (dto.Type == "5")
|
//{
|
// entity.IsXg = 1;
|
//}
|
//else
|
//{
|
// entity.IsXg = 0;
|
//}
|
|
//if (dto.FStatus == "6" || dto.FStatus == "7")
|
//{
|
// entity.JaBs = "1";
|
// entity.JaTime = DateTime.Now;
|
//}
|
|
var entity = new Womcaa
|
{
|
Erpid = Convert.ToInt32(dto.Id), /// ERPID
|
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, /// BOM版次
|
Caa015 = dto.CAA015, //销售订单号
|
Caa015Head = dto.CAA015_line, //销售订单行号
|
CreateType = dto.FCreateType, /// 生成方式
|
Caa018 = !string.IsNullOrEmpty(dto.PLAN_ID)
|
? Convert.ToInt32(dto.PLAN_ID)
|
: null, /// ERP源单ID
|
Caa019 = dto.PLAN_SEQ, /// ERP源单行号
|
Caa020 = dto.PLAN_NUM, /// ERP源单单号(任务单号)
|
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, /// 生产组织ID
|
TrustOrg = dto.FEnTrustOrgId, /// 委托组织ID
|
Typea = dto.TypeA, /// 单据状态
|
RkOrg = dto.RK_ORG, //入库组织
|
Rcn=dto.RCN, //日产能
|
Cglineid=dto.CG_LINE_ID, //采购订单行id
|
Kh=dto.KH,
|
Khjc=dto.KH_JCZL,
|
Scph=dto.SC_PH,
|
Moldno=dto.MOLd_no,
|
Oldmoldno=dto.Old_mold_no,
|
Jt=dto.JT,
|
Xscn=dto.XS_CN,
|
Sjxs=dto.SJ_xs,
|
Nextgx=dto.NEXT_Gx,
|
Rks=dto.RKS,
|
//沃尔新增
|
// WR_F_SCDD_SCTZD = dto.F_SCDD_SCTZD
|
//WR_F_SCDD_XH = dto.F_SCDD_XH
|
};
|
|
|
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 = Convert.ToDecimal(dto.ID),
|
Cab001 = dto.FBillNo, //单据编号
|
Cab002 = dto.FSeq, //序号
|
Cab003 = dto.FMaterialID, //子项物料编码
|
Cab006 = Convert.ToDecimal(dto.FNeedQty), //需求数量
|
MustQty = Convert.ToDecimal(dto.FMustQty), //应发数量
|
Cab007 = Convert.ToDecimal(dto.FPickedQty), //已领数量
|
PositionNo = dto.FPositionNO, //位置号
|
SupplyOrganization = dto.FChildSupplyOrgId, //供应组织
|
IssuingOrganization = dto.FSupplyOrg, //发料组织
|
OwnerId = dto.FOwnerID, //货主
|
Mtono = dto.FMTONO, //计划跟踪号
|
Lot = dto.FLot, //批号
|
DepotCode = dto.FStockID, //仓库
|
IssueType = dto.FIssueType, //发料方式
|
Cab008 = dto.GY, //工艺
|
Cab009 = dto.FUnitID, //单位
|
SupplyType = dto.FSupplyType, //供应类型
|
Cab012 = Convert.ToDecimal(dto.FStdQty), // 标准用量
|
// Freplacegroup = Convert.ToInt32(dto.FReplaceGroup),
|
UseRate = Convert.ToDecimal(dto.FUseRate), //使用比例
|
MaterialType = dto.FMaterialType, //子项类型
|
Cab014 = Convert.ToInt32(dto.FIsKeyItem), //替代主料
|
Numerator = Convert.ToDecimal(dto.FNumerator), //分子
|
Denominator = Convert.ToDecimal(dto.FDenominator), //分母
|
Pid = Convert.ToDecimal(dto.PID),
|
Eid = Convert.ToDecimal(dto.PID),
|
Scrapqty = Convert.ToDecimal(dto.FFixScrapQty), //固定损耗
|
Scraprate = Convert.ToDecimal(dto.FScrapRate), //变动损耗率
|
Wlsl=dto.WLSL,
|
Khwlbm=dto.KWWLBM,
|
Khwlmc =dto.KHWLMC,
|
Slzz=dto.SLZZ,
|
Slbm=dto.SLBM,
|
Xqbm=dto.XQBM,
|
Xqzz=dto.XQZZ,
|
// 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)
|
{
|
// 删除已有的 Erpid 相关的 Womcab 数据
|
// Db.Deleteable<Womcab>().Where(s => s.Erpid == womcab.Erpid).ExecuteCommand();
|
womcab.Id = entity.Id;
|
}
|
womcabList.Add(womcab);
|
}
|
|
return womcabList;
|
}
|
}
|