From 9c8d50022cd60b6c553c472eeb76eddf312e6a45 Mon Sep 17 00:00:00 2001
From: majian <780924089@qq.com>
Date: Fri, 19 Jul 2024 15:11:53 +0800
Subject: [PATCH] =?UTF-8?q?8=E7=BA=BF=E5=85=A5=E4=B8=AD=E5=82=A8=E4=BB=93?=
=?UTF-8?q?=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Consts/WmsWareHouseConst.cs | 4 +
.../MaterialTransferDistributeYCL2ZCCInput.cs | 41 +++
.../Entity/WmsMaterialTransferD.cs | 9 +
.../Tnb.WarehouseMgr/WareHouseService.cs | 6 +-
.../WmsMaterialTransferService.cs | 302 +++++++++++++-----
5 files changed, 275 insertions(+), 87 deletions(-)
create mode 100644 WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MaterialTransferDistributeYCL2ZCCInput.cs
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs
index cafef67d..61f3b426 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs
@@ -470,6 +470,10 @@
///
public const string ZZCSSX111012 = "32609251845653";
///
+ /// 一楼中储仓入库工位
+ ///
+ public const string ZZCSSX011008 = "32609223625237";
+ ///
/// 料箱id
///
public const string LIAOXIANGID = "26037262680357";
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MaterialTransferDistributeYCL2ZCCInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MaterialTransferDistributeYCL2ZCCInput.cs
new file mode 100644
index 00000000..72524f7f
--- /dev/null
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MaterialTransferDistributeYCL2ZCCInput.cs
@@ -0,0 +1,41 @@
+namespace Tnb.WarehouseMgr.Entities.Dto
+{
+ ///
+ /// 库房业务更新输入参数
+ ///
+ public class MaterialTransferDistributeYCL2ZCCInput
+ {
+ ///
+ /// 组织ID
+ ///
+ public string org_id { get; set; }
+ ///
+ /// 创建用户
+ ///
+ public string create_id { get; set; }
+
+ ///
+ /// 来源单据id
+ ///
+ public string? source_id { get; set; }
+
+ ///
+ /// 载具
+ ///
+ public List? details { get; set; }
+
+ }
+
+ public class MaterialTransferDistributeYCL2ZCCDetailInput
+ {
+ ///
+ /// 载具编码
+ ///
+ public string? carry_code { get; set; }
+
+ ///
+ /// 物料数量
+ ///
+ public decimal qty { get; set; }
+ }
+}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsMaterialTransferD.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsMaterialTransferD.cs
index ccfcfe42..687d5519 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsMaterialTransferD.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsMaterialTransferD.cs
@@ -80,6 +80,15 @@ public partial class WmsMaterialTransferD : BaseEntity
///
public decimal? yzqty { get; set; }
+ ///
+ /// 已下发数量(入库)
+ ///
+ public decimal? yxfqty_rk { get; set; }
+
+ ///
+ /// 已转数量(入库)
+ ///
+ public decimal? yzqty_rk { get; set; }
///
/// 主表ID
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs
index 4a265303..7b7e8877 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs
@@ -2296,7 +2296,7 @@ namespace Tnb.WarehouseMgr
WmsCarryH wmsCarryH = await _db.Queryable().Where(r => r.id == carry.id).FirstAsync();
// 同步料架下的载具位置
- if (wmsCarryH.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID)
+ if (wmsCarryH != null && wmsCarryH.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID)
{
List carrys = _db.Queryable()
.InnerJoin((a, b) => a.membercarry_id == b.id).Where((a, b) => a.carry_id == carry.id).Select((a, b) => b).ToList();
@@ -3119,7 +3119,7 @@ namespace Tnb.WarehouseMgr
List wmsCarryCodes = _db.Queryable().Where(r => r.carry_id == rackid).ToList();
int move_num = 6;
- string[] endlocations = new string[2] { WmsWareHouseConst.ZZCSSX111011, WmsWareHouseConst.ZZCSSX111012 };
+ string[] startlocations = new string[2] { WmsWareHouseConst.ZZCSSX111011, WmsWareHouseConst.ZZCSSX111012 };
BasLocation startLocation = null;
int index = 0;
@@ -3139,7 +3139,7 @@ namespace Tnb.WarehouseMgr
// 每6个重新获取一次起点
if (index % move_num == 0)
{
- startLocation = await _db.Queryable().Where(r => endlocations.Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync();
+ startLocation = await _db.Queryable().Where(r => startlocations.Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync();
}
BasLocation endLocation = endLocations[0];
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs
index 5ebb027f..69f0f1db 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs
@@ -66,6 +66,7 @@ namespace Tnb.WarehouseMgr
private readonly IWmsCarryQueryService _wmsCarryQueryService;
public static SemaphoreSlim s_taskDistributeToZCC = new(1);
+ public static SemaphoreSlim s_taskDistributeYCL2ZCC = new(1);
public WmsMaterialTransferService(
ISqlSugarRepository repository,
@@ -292,7 +293,7 @@ namespace Tnb.WarehouseMgr
///
- /// 按托下发
+ /// 按托下发(到集中供料或外协)
///
///
///
@@ -322,12 +323,12 @@ namespace Tnb.WarehouseMgr
WmsMaterialTransferD wmsMaterialTransferD = await _db.Queryable().FirstAsync(it => it.id == input.source_id);
WmsMaterialTransfer wmsMaterialTransfer = await _db.Queryable().FirstAsync(it => it.id == wmsMaterialTransferD.bill_id);
- if (wmsMaterialTransferD.yxfqty == wmsMaterialTransferD.qty)
+ await s_taskExecuteSemaphore.WaitAsync();
+ if (wmsMaterialTransferD.yxfqty >= wmsMaterialTransferD.qty)
{
throw new AppFriendlyException("已下发数量已达到转库数量", 500);
}
- await s_taskExecuteSemaphore.WaitAsync();
await _db.Ado.BeginTranAsync();
//入库取终点 //出库起点
@@ -432,6 +433,120 @@ namespace Tnb.WarehouseMgr
return await ToApiResult(HttpStatusCode.OK, "成功");
}
+ ///
+ /// PDA操作(8线到中储仓)
+ ///
+ ///
+ ///
+ [HttpPost, NonUnify, AllowAnonymous]
+ public async Task DistributeYCL2ZCC(MaterialTransferDistributeYCL2ZCCInput input)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(input.source_id))
+ {
+ throw new AppFriendlyException("来源单据id不可为空", 500);
+ }
+ if (input.details.Count == 0)
+ {
+ throw new AppFriendlyException("请先扫描料箱", 500);
+ }
+
+ input.details.ForEach(r =>
+ {
+ if (string.IsNullOrEmpty(r.carry_code))
+ {
+ throw new AppFriendlyException($"料箱编码不能为空", 500);
+ }
+ if (r.qty <= 0)
+ {
+ throw new AppFriendlyException($"料箱{r.carry_code}的数量必须大于0", 500);
+ }
+ });
+
+ await s_taskDistributeYCL2ZCC.WaitAsync();
+ WmsMaterialTransferD wmsMaterialTransferD = await _db.Queryable().FirstAsync(it => it.id == input.source_id);
+ WmsMaterialTransfer wmsMaterialTransfer = await _db.Queryable().FirstAsync(it => it.id == wmsMaterialTransferD.bill_id);
+
+ if (wmsMaterialTransferD.yxfqty_rk >= wmsMaterialTransferD.qty)
+ {
+ throw new AppFriendlyException("已下发数量已达到转库数量", 500);
+ }
+
+ decimal qty = input.details.Sum(r => r.qty);
+ if (qty > wmsMaterialTransferD.qty - wmsMaterialTransferD.yxfqty_rk)
+ {
+ throw new AppFriendlyException($"下发数量{qty}已超过可下发数量{wmsMaterialTransferD.qty - wmsMaterialTransferD.yxfqty_rk}", 500);
+ }
+
+ await _db.Ado.BeginTranAsync();
+ //入库取终点 //出库起点
+ InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_ZC_ID, Size = input.details.Count };
+ List endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput);
+ if (endLocations.Count == 0)
+ {
+ Logger.LogWarning("没有可用的入库库位");
+ throw new AppFriendlyException("没有可用的入库库位", 500);
+ }
+
+ if (input.details.Count > endLocations.Count)
+ {
+ throw new AppFriendlyException("可用的入库库位数量少于扫描的料箱数量", 500);
+ }
+
+ int index = 0;
+
+ List wmsCarryHs = await _db.Queryable().Where(r => input.details.Select(x => x.carry_code).Contains(r.carry_code)).ToListAsync();
+
+ foreach (var wmsCarryH in input.details)
+ {
+ BasLocation startLocation = await _db.Queryable().Where(r => r.id == WmsWareHouseConst.ZZCSSX011008).FirstAsync();
+
+ BasLocation endLocation = endLocations[index];
+
+ CommonCreatePretaskInput commonCreatePretaskInput = new CommonCreatePretaskInput();
+ commonCreatePretaskInput.startlocation_id = startLocation.id;
+ commonCreatePretaskInput.endlocation_id = endLocation.id;
+ commonCreatePretaskInput.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID;
+ commonCreatePretaskInput.biz_type = WmsWareHouseConst.BIZTYPE_WMSMATERIALTRANSFER_ID;
+ commonCreatePretaskInput.source_id = input.source_id;
+ commonCreatePretaskInput.carry_id = wmsCarryHs[index].id;
+ commonCreatePretaskInput.carry_code = wmsCarryHs[index].carry_code;
+ commonCreatePretaskInput.isExcuteMission = false;
+
+ Entities.Dto.Outputs.Result res = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput, _db);
+
+ if (res.code != HttpStatusCode.OK)
+ {
+ Logger.LogInformation($@"生成预任务失败");
+ throw new AppFriendlyException($@"生成预任务失败", 500);
+ }
+
+ index++;
+ }
+
+ // 更新子表已下发数量
+ await _db.Updateable().SetColumns(r => r.yxfqty_rk == r.yxfqty_rk + qty).Where(r => r.id == input.source_id).ExecuteCommandAsync();
+
+ await _db.Ado.CommitTranAsync();
+ }
+ catch (Exception ex)
+ {
+ await _db.Ado.RollbackTranAsync();
+ Logger.LogError("【Distribute】" + ex.Message);
+ Logger.LogError("【Distribute】" + ex.StackTrace);
+ return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
+ }
+ finally
+ {
+ _ = s_taskDistributeYCL2ZCC.Release();
+ InvokeGenPretaskExcute();
+ }
+
+ return await ToApiResult(HttpStatusCode.OK, "成功");
+ }
+
+
///
/// 按料架下发(缓存仓)
///
@@ -770,7 +885,6 @@ namespace Tnb.WarehouseMgr
return await ToApiResult(HttpStatusCode.OK, "成功");
}
-
public override async Task ModifyAsync(WareHouseUpInput input)
{
if (input == null)
@@ -788,10 +902,21 @@ namespace Tnb.WarehouseMgr
}
await _db.Ado.BeginTranAsync();
- // 更新已转数量
- bool isOk = await _db.Updateable().SetColumns(it => new WmsMaterialTransferD { yzqty = it.yzqty + wmsCarryCodes.Sum(r => r.codeqty) })
- .Where(it => it.id == input.source_id).ExecuteCommandHasChangeAsync();
-
+ bool isOk = false;
+ // 入库回写入库数量字段
+ if (input.wmsDistaskH.task_type == WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID)
+ {
+ // 更新已转数量(入库)
+ isOk = await _db.Updateable().SetColumns(it => new WmsMaterialTransferD { yzqty_rk = it.yzqty_rk + wmsCarryCodes.Sum(r => r.codeqty) })
+ .Where(it => it.id == input.source_id).ExecuteCommandHasChangeAsync();
+ }
+ else
+ {
+ // 更新已转数量
+ isOk = await _db.Updateable().SetColumns(it => new WmsMaterialTransferD { yzqty = it.yzqty + wmsCarryCodes.Sum(r => r.codeqty) })
+ .Where(it => it.id == input.source_id).ExecuteCommandHasChangeAsync();
+ }
+
// 如果所有明细已完成 更新主表状态为完成
WmsMaterialTransferD wmsMaterialTransferd = await _db.Queryable().Where(r => r.id == input.source_id).SingleAsync();
List wmsMaterialTransferDs = _db.Queryable()
@@ -814,87 +939,96 @@ namespace Tnb.WarehouseMgr
if (input.area_code == "E")
await sign(input);
-
- WmsMaterialTransfer wmsMaterialTransfer = await _db.Queryable().SingleAsync(x => x.id == wmsMaterialTransferd.bill_id);
- List dList = await _db.Queryable().Where(x => x.bill_id == wmsMaterialTransferd.bill_id).OrderBy(x=>x.id).ToListAsync();
- DictionaryDataEntity unitData = await _db.Queryable()
- .LeftJoin((x, y) => x.Id == y.DictionaryTypeId)
- .Where((x, y) => x.EnCode == DictConst.MeasurementUnit && y.EnCode == wmsMaterialTransferd.unit_id)
- .Select((x,y)=>y)
- .FirstAsync();
- List ids = new List();
- ids.Add(wmsMaterialTransfer.create_id);
- ids.Add(WmsWareHouseConst.AdministratorOrgId);
- ids.Add(wmsMaterialTransfer.warehouse_outstock);
- ids.Add(wmsMaterialTransfer.warehouse_instock);
- ids.Add(wmsMaterialTransferd.material_id);
- if (unitData != null)
+ // 其它入库
+ if (input.wmsDistaskH.task_type == WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID)
{
- ids.Add(unitData.Id);
+
}
- List erpExtendFields = await _db.Queryable().Where(x=>ids.Contains(x.table_id)).ToListAsync();
-
- ErpExtendField erpOrg = erpExtendFields.Find(x => x.table_id == (wmsMaterialTransfer.org_id ?? WmsWareHouseConst.AdministratorOrgId));
- string erpCreateId = erpExtendFields.Find(x=>x.table_id==wmsMaterialTransfer.create_id)?.user_id ?? "";
-
- List> requestData = new List>();
- Dictionary erpRequestData = new Dictionary();
- string nowStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- erpRequestData.Add("billmaker",erpCreateId);
- erpRequestData.Add("cdptid","1001A1100000000JRLI1");// 先写死
- erpRequestData.Add("cdptvid","0001A11000000007GGO8");// 先写死
- erpRequestData.Add("corpoid",erpOrg.corpoid);
- erpRequestData.Add("corpvid",erpOrg.corpoid);
- erpRequestData.Add("cothercalbodyoid",erpOrg.pk_org);
- erpRequestData.Add("cotherwhid",erpExtendFields.Find(x=>x.table_id==wmsMaterialTransfer.warehouse_instock)?.cotherwhid ?? "");
- erpRequestData.Add("creationtime",nowStr);
- erpRequestData.Add("creator",erpCreateId);
- erpRequestData.Add("ctrantypeid","0001H11000000000D31W");
- erpRequestData.Add("cwarehouseid",erpExtendFields.Find(x=>x.table_id==wmsMaterialTransfer.warehouse_outstock)?.cotherwhid ?? "");
- erpRequestData.Add("dbilldate",nowStr);
- erpRequestData.Add("dmakedate",nowStr);
- erpRequestData.Add("ntotalnum",wmsCarryCodes.Sum(r => r.codeqty));
- erpRequestData.Add("pk_group",erpOrg.pk_group);
- erpRequestData.Add("pk_org",erpOrg.pk_org);
- erpRequestData.Add("pk_org_v",erpOrg.pk_org_v);
- erpRequestData.Add("vbillcode",wmsMaterialTransfer.bill_code);
- erpRequestData.Add("vtrantypecode","4I-01");//其他出库 先写死
- List> erpRequestDataDetails = new List>();
- erpRequestDataDetails.Add(new Dictionary()
+ // 其它出库
{
- ["cbodytranstypecode"] = "4I-01",
- ["cbodywarehouseid"] = erpExtendFields.Find(x=>x.table_id==wmsMaterialTransfer.warehouse_outstock)?.cotherwhid ?? "",
- ["cmaterialoid"] = erpExtendFields.Find(x=>x.table_id==wmsMaterialTransferd.material_id)?.cmaterialoid ?? "",
- ["cmaterialvid"] = erpExtendFields.Find(x=>x.table_id==wmsMaterialTransferd.material_id)?.cmaterialvid ?? "",
- ["corpoid"] = erpOrg.corpoid,
- ["corpvid"] = erpOrg.corpvid,
- ["crowno"] = wmsMaterialTransferd.lineno,
- ["csourcebillbid"] = wmsMaterialTransferd.erp_line_pk,
- ["csourcebillhid"] = wmsMaterialTransfer.erp_pk,
- ["cunitid"] = erpExtendFields.Find(x=>x.table_id==unitData.Id)?.cunitid ?? "",
- ["cvendorid"] = "",
- ["cvendorvid"] = "",
- ["dbizdate"] = nowStr,
- ["nnum"] = wmsCarryCodes.Sum(r => r.codeqty),
- ["nshouldnum"] = wmsMaterialTransferd.qty,
- ["pk_group"] = erpOrg.pk_group,
- ["pk_org"] = erpOrg.pk_org,
- ["pk_org_v"] = erpOrg.pk_org_v,
- ["vbatchcode"] = wmsMaterialTransferd.code_batch,
- });
- erpRequestData.Add("dtls",erpRequestDataDetails);
- requestData.Add(erpRequestData);
+ WmsMaterialTransfer wmsMaterialTransfer = await _db.Queryable().SingleAsync(x => x.id == wmsMaterialTransferd.bill_id);
+ List dList = await _db.Queryable().Where(x => x.bill_id == wmsMaterialTransferd.bill_id).OrderBy(x => x.id).ToListAsync();
+ DictionaryDataEntity unitData = await _db.Queryable()
+ .LeftJoin((x, y) => x.Id == y.DictionaryTypeId)
+ .Where((x, y) => x.EnCode == DictConst.MeasurementUnit && y.EnCode == wmsMaterialTransferd.unit_id)
+ .Select((x, y) => y)
+ .FirstAsync();
+ List ids = new List();
+ ids.Add(wmsMaterialTransfer.create_id);
+ ids.Add(WmsWareHouseConst.AdministratorOrgId);
+ ids.Add(wmsMaterialTransfer.warehouse_outstock);
+ ids.Add(wmsMaterialTransfer.warehouse_instock);
+ ids.Add(wmsMaterialTransferd.material_id);
+ if (unitData != null)
+ {
+ ids.Add(unitData.Id);
+ }
+ List erpExtendFields = await _db.Queryable().Where(x => ids.Contains(x.table_id)).ToListAsync();
- ThirdWebapiRecord thirdWebapiRecord = new ThirdWebapiRecord();
- thirdWebapiRecord.id = SnowflakeIdHelper.NextId();
- thirdWebapiRecord.third_name = WmsWareHouseConst.BIP;
- thirdWebapiRecord.name = "其它出库";
- thirdWebapiRecord.method = "POST";
- thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN+"uapws/rest/generalout/save";
- thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData);
- thirdWebapiRecord.create_time = DateTime.Now;
+ ErpExtendField erpOrg = erpExtendFields.Find(x => x.table_id == (wmsMaterialTransfer.org_id ?? WmsWareHouseConst.AdministratorOrgId));
+ string erpCreateId = erpExtendFields.Find(x => x.table_id == wmsMaterialTransfer.create_id)?.user_id ?? "";
- await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
+ List> requestData = new List>();
+ Dictionary erpRequestData = new Dictionary();
+ string nowStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+ erpRequestData.Add("billmaker", erpCreateId);
+ erpRequestData.Add("cdptid", "1001A1100000000JRLI1");// 先写死
+ erpRequestData.Add("cdptvid", "0001A11000000007GGO8");// 先写死
+ erpRequestData.Add("corpoid", erpOrg.corpoid);
+ erpRequestData.Add("corpvid", erpOrg.corpoid);
+ erpRequestData.Add("cothercalbodyoid", erpOrg.pk_org);
+ erpRequestData.Add("cotherwhid", erpExtendFields.Find(x => x.table_id == wmsMaterialTransfer.warehouse_instock)?.cotherwhid ?? "");
+ erpRequestData.Add("creationtime", nowStr);
+ erpRequestData.Add("creator", erpCreateId);
+ erpRequestData.Add("ctrantypeid", "0001H11000000000D31W");
+ erpRequestData.Add("cwarehouseid", erpExtendFields.Find(x => x.table_id == wmsMaterialTransfer.warehouse_outstock)?.cotherwhid ?? "");
+ erpRequestData.Add("dbilldate", nowStr);
+ erpRequestData.Add("dmakedate", nowStr);
+ erpRequestData.Add("ntotalnum", wmsCarryCodes.Sum(r => r.codeqty));
+ erpRequestData.Add("pk_group", erpOrg.pk_group);
+ erpRequestData.Add("pk_org", erpOrg.pk_org);
+ erpRequestData.Add("pk_org_v", erpOrg.pk_org_v);
+ erpRequestData.Add("vbillcode", wmsMaterialTransfer.bill_code);
+ erpRequestData.Add("vtrantypecode", "4I-01");//其他出库 先写死
+ List> erpRequestDataDetails = new List>();
+ erpRequestDataDetails.Add(new Dictionary()
+ {
+ ["cbodytranstypecode"] = "4I-01",
+ ["cbodywarehouseid"] = erpExtendFields.Find(x => x.table_id == wmsMaterialTransfer.warehouse_outstock)?.cotherwhid ?? "",
+ ["cmaterialoid"] = erpExtendFields.Find(x => x.table_id == wmsMaterialTransferd.material_id)?.cmaterialoid ?? "",
+ ["cmaterialvid"] = erpExtendFields.Find(x => x.table_id == wmsMaterialTransferd.material_id)?.cmaterialvid ?? "",
+ ["corpoid"] = erpOrg.corpoid,
+ ["corpvid"] = erpOrg.corpvid,
+ ["crowno"] = wmsMaterialTransferd.lineno,
+ ["csourcebillbid"] = wmsMaterialTransferd.erp_line_pk,
+ ["csourcebillhid"] = wmsMaterialTransfer.erp_pk,
+ ["cunitid"] = erpExtendFields.Find(x => x.table_id == unitData.Id)?.cunitid ?? "",
+ ["cvendorid"] = "",
+ ["cvendorvid"] = "",
+ ["dbizdate"] = nowStr,
+ ["nnum"] = wmsCarryCodes.Sum(r => r.codeqty),
+ ["nshouldnum"] = wmsMaterialTransferd.qty,
+ ["pk_group"] = erpOrg.pk_group,
+ ["pk_org"] = erpOrg.pk_org,
+ ["pk_org_v"] = erpOrg.pk_org_v,
+ ["vbatchcode"] = wmsMaterialTransferd.code_batch,
+ });
+ erpRequestData.Add("dtls", erpRequestDataDetails);
+ requestData.Add(erpRequestData);
+
+ ThirdWebapiRecord thirdWebapiRecord = new ThirdWebapiRecord();
+ thirdWebapiRecord.id = SnowflakeIdHelper.NextId();
+ thirdWebapiRecord.third_name = WmsWareHouseConst.BIP;
+ thirdWebapiRecord.name = "其它出库";
+ thirdWebapiRecord.method = "POST";
+ thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/generalout/save";
+ thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData);
+ thirdWebapiRecord.create_time = DateTime.Now;
+
+ await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
+ }
+
+
await _db.Ado.CommitTranAsync();
}