diff --git a/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs b/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs index 3ac55f66..52d0f5e5 100644 --- a/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs +++ b/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs @@ -298,7 +298,7 @@ namespace Tnb.QcMgr #region 质检结论不合格, 需要记录暂控时间区间,并且记录载具信息 if (CheckTaskInput.result == "no")//质检结论不合格,记录暂控时间 { - if(CheckTaskInput.startEndTime==null || CheckTaskInput.startEndTime.Length <= 1) + if (CheckTaskInput.startEndTime == null || CheckTaskInput.startEndTime.Length <= 1) { throw Oops.Bah("不合格时,请选择时间区间"); } @@ -406,9 +406,10 @@ namespace Tnb.QcMgr mesCheckdCallbackUpinput.maintableid = QcCheckExecH.extras; mesCheckdCallbackUpinput.check_conclusion = dic.Where(p => p.Key == CheckTaskInput.result).Any() ? dic.Where(p => p.Key == CheckTaskInput.result).First().Value : 0; await _wmsPurchaseService.MesCheckdPurchaseCallback(mesCheckdCallbackUpinput); - }else if (QcCheckExecH.checktype == WmsWareHouseConst.LINGBUJIANZUIZHONGJIANYAN_ID) + } + else if (QcCheckExecH.checktype == WmsWareHouseConst.LINGBUJIANZUIZHONGJIANYAN_ID) { - PrdReport prdReport = await db.Queryable().SingleAsync(x=>x.id==QcCheckExecH.report_id); + PrdReport prdReport = await db.Queryable().SingleAsync(x => x.id == QcCheckExecH.report_id); decimal pqty = prdReport.reported_qty.Value - rqty; if (rqty > Decimal.Parse(QcCheckExecH.checknum)) { @@ -422,204 +423,207 @@ namespace Tnb.QcMgr .SetColumns(x => x.is_check == isCheck) .Where(x => x.carry_code == prdReport.material_box_code) .ExecuteCommandAsync(); - + await _prdMoTaskService.ReportInstock(new CheckCompleteInput() { report_id = QcCheckExecH.report_id, pqty = pqty, rqty = rqty, check_result = ((EnumCheckConclusion)dic[CheckTaskInput.result]).ToString(), - },prdReport,db); - } - }else if (QcCheckExecH.checktype == WmsWareHouseConst.XUNJIAN_ID || QcCheckExecH.checktype == WmsWareHouseConst.SHOUJIAN_ID || QcCheckExecH.checktype == WmsWareHouseConst.MOJIAN_ID ) - { - PrdMoTask prdMoTask = await db.Queryable().Where(x => x.mo_task_code == QcCheckExecH.mo_task_code && x.id != null).FirstAsync(); - if (CheckTaskInput.result == "no") - { - string pauseReason = QcCheckExecH.checktype == WmsWareHouseConst.XUNJIAN_ID ? "巡检不合格" : QcCheckExecH.checktype == WmsWareHouseConst.SHOUJIAN_ID ? "首检不合格" : "末检不合格"; - await _prdMoTaskService.PrdTaskRelease2(new PrdTaskReleaseUpInput() - { - TaskIds = NPOI.Util.Arrays.AsList(prdMoTask.id), - Behavior = "Pause", - PauseReeson = pauseReason - }, db); - - #region 没看懂逻辑,暂时注释 - //await _prdMoTaskService.SelfTestScrapped2(new SelfTestScrappedInput() - //{ - // mo_task_id = prdMoTask.id, - // scrap_qty = rqty, - // remark = "抽样不合格报废", - // categoryItems = new List() - // { - // new SelfTestScrappedInputItem() - // { - // category_id = "25574005966629", - // items = new List() - // { - // new defectItem() - // { - // defective_item = "抽样不合格报废", - // defective_item_qty = rqty - // } - // } - // } - // } - //}, db); - #endregion - - //载具需要在中储仓和暂存仓才需要暂控 - List prdReports = await db.Queryable().LeftJoin((a, b) => a.material_box_code == b.carry_code).LeftJoin((a, b, c) => b.location_id == c.id).LeftJoin((a, b, c, d) => c.wh_id == d.id).Where((a, b, c, d) => a.mo_task_id == prdMoTask.id && a.create_time >= CheckTaskInput.startEndTime[0].TimeStampToDateTime() && a.create_time <= CheckTaskInput.startEndTime[1].TimeStampToDateTime() && (c.wh_id == WmsWareHouseConst.WAREHOUSE_ZC_ID || c.wh_id == WmsWareHouseConst.WAREHOUSE_ZCC_ID)).ToListAsync(); - if (prdReports != null) - { - var carryCodes = prdReports.Select(r => r.material_box_code).Distinct().ToList(); - if (carryCodes != null && carryCodes.Count > 0) - { - await db.Updateable() - .SetColumns(x => x.is_check == ((int)EnumCheckConclusion.暂控).ToString()) - .SetColumns(x => x.carry_status == "6")//把料架状态改为退料状态,会自动触发把料架上的子载具从二楼暂存仓退回一楼中储仓任务 - .Where(x => carryCodes.Contains(x.carry_code)) - .ExecuteCommandAsync(); - - #region 记录被暂控的载具信息 - //var qcCheckExecCarrys = new List(); - //foreach(var carryCode in carryCodes) - //{ - // var wmsCarryH = await db.Queryable().Where(r => r.carry_code == carryCode).FirstAsync(); - // if (wmsCarryH == null) - // continue; - - // WmsCarryCode wmsCarryCode = await db.Queryable().FirstAsync(x => x.carry_id == wmsCarryH.id); - // BasLocation basLocation = await db.Queryable().Where(r => r.location_code == wmsCarryH.location_code).FirstAsync(); - // WmsCarryMat wmsCarryMat = await db.Queryable().Where(r => r.carry_id == wmsCarryH.id).FirstAsync(); - - // var qcCheckExecCarry = new QcCheckExecCarry() - // { - // qc_check_exec_id = QcCheckExecH.id, - // carry_id = wmsCarryH.id, - // carry_code = wmsCarryH.carry_code, - // warehouse_id = basLocation != null ? basLocation.wh_id : "", - // qty = wmsCarryCode != null ? wmsCarryCode.codeqty.ToString() : "", - // status = wmsCarryH.is_check, - // location_id = basLocation != null ? basLocation.id : "", - // location_code = basLocation != null ? basLocation.location_code : "", - // material_id= wmsCarryMat?.material_id, - // create_id = _userManager.UserId, - // create_time = DateTime.Now - // }; - // qcCheckExecCarrys.Add(qcCheckExecCarry); - //} - //_ = await db.Insertable(qcCheckExecCarrys).ExecuteCommandAsync(); - #endregion - - #region 记录暂控处理单主/子表信息 - - if (carryCodes != null && carryCodes.Count > 0) - { - - var basMaterial = await db.Queryable().Where(r => r.id == prdMoTask.material_id).FirstAsync(); - string outWHid = ""; string inWHid = ""; - if (basMaterial.category_id.Contains("DGJCJ") || basMaterial.category_id.Contains("ZSJ")) - { - outWHid = WmsWareHouseConst.WAREHOUSE_ZC_ID; - inWHid = "中储不合格品仓id"; - } - else if (basMaterial.category_id.Contains("CGJCJ")) - { - outWHid = WmsWareHouseConst.WAREHOUSE_HCC_ID; - inWHid = "长管不合格品仓id"; - } - - var carryIds = await db.Queryable().Where(r => carryCodes.Contains(r.carry_code)).Select(r => r.id).ToListAsync(); - var wmsCarryCodes = await db.Queryable().Where(r => carryIds.Contains(r.carry_id) && r.material_id == QcCheckExecH.materialid).ToListAsync(); - var codeQty = wmsCarryCodes == null ? 0 : wmsCarryCodes.Sum(r => r.codeqty); - var qcTempControlH = new QcTempControlH() - { - id = SnowflakeIdHelper.NextId(), - bill_code = await _billRullService.GetBillNumber(CodeTemplateConst.QCCONTROLTEMP_CODE), - source_code = QcCheckExecH.bill_code, - pro_task_code = QcCheckExecH.mo_task_code, - out_warehouse_id = outWHid, - in_warehouse_id = inWHid, - material_id = QcCheckExecH.materialid, - material_code = basMaterial.code, - control_lx_qty = carryCodes.Count.ToString(), - control_qty = codeQty.ToString(), - result = "暂控", - loger_id = _userManager.UserId, - confirmer_id = "", - status = ((int)EnumTempControlStatus.待确认).ToString(), - called_box_qty = "0", - called_qty = "0", - leave_call_box_qty = carryCodes.Count.ToString(), - leave_call_qty = codeQty.ToString(), - create_id = _userManager.UserId, - create_time = DateTime.Now, - }; - - await db.Insertable(qcTempControlH).ExecuteCommandAsync(); - - var qcTempControlDs = new List(); - foreach (var carryCode in carryCodes) - { - var wmsCarryH = await db.Queryable().Where(r => r.carry_code == carryCode).FirstAsync(); - if (wmsCarryH == null) - continue; - - WmsCarryCode wmsCarryCode = await db.Queryable().FirstAsync(x => x.carry_id == wmsCarryH.id); - BasLocation basLocation = await db.Queryable().Where(r => r.location_code == wmsCarryH.location_code).FirstAsync(); - if (basLocation == null) - throw Oops.Bah($"未找到编号为{wmsCarryH.location_code}的库位"); - WmsCarryMat wmsCarryMat = await db.Queryable().Where(r => r.carry_id == wmsCarryH.id).FirstAsync(); - BasWarehouse basWarehouse = await db.Queryable().Where(r => r.id == basLocation.wh_id).FirstAsync(); - var _prdReports = prdReports.Where(r => r.material_box_code == carryCode).First(); - var qcTempConD = new QcTempControlD() - { - bill_id = qcTempControlH.id, - carry_id = wmsCarryH.id, - carry_code = carryCode, - warehouse_id = basLocation?.wh_id, - warehouse_code = basWarehouse.whcode, - location_code = basLocation?.location_code, - location_id = basLocation?.id, - qty = wmsCarryCode?.codeqty.ToString(), - submiter = _prdReports == null ? null : _prdReports.create_id, - maker_id = "", - create_id = _userManager.UserId, - create_time = DateTime.Now, - check_status = "暂控", - call_status = "未呼叫" - }; - qcTempControlDs.Add(qcTempConD); - } - await db.Insertable(qcTempControlDs).ExecuteCommandAsync(); - } - #endregion - } - } - else - { - //末检自动完工 - if (QcCheckExecH.checktype == WmsWareHouseConst.MOJIAN_ID) - { - await _prdMoTaskService.PrdTaskRelease2(new PrdTaskReleaseUpInput() - { - TaskIds = NPOI.Util.Arrays.AsList(prdMoTask.id), - Behavior = "Compled", - },db); - } + }, prdReport, db); } } + else if (QcCheckExecH.checktype == WmsWareHouseConst.XUNJIAN_ID || QcCheckExecH.checktype == WmsWareHouseConst.SHOUJIAN_ID || QcCheckExecH.checktype == WmsWareHouseConst.MOJIAN_ID) + { + PrdMoTask prdMoTask = await db.Queryable().Where(x => x.mo_task_code == QcCheckExecH.mo_task_code && x.id != null).FirstAsync(); + if (CheckTaskInput.result == "no") + { + string pauseReason = QcCheckExecH.checktype == WmsWareHouseConst.XUNJIAN_ID ? "巡检不合格" : QcCheckExecH.checktype == WmsWareHouseConst.SHOUJIAN_ID ? "首检不合格" : "末检不合格"; + await _prdMoTaskService.PrdTaskRelease2(new PrdTaskReleaseUpInput() + { + TaskIds = NPOI.Util.Arrays.AsList(prdMoTask.id), + Behavior = "Pause", + PauseReeson = pauseReason + }, db); - await db.Ado.CommitTranAsync(); + #region 没看懂逻辑,暂时注释 + //await _prdMoTaskService.SelfTestScrapped2(new SelfTestScrappedInput() + //{ + // mo_task_id = prdMoTask.id, + // scrap_qty = rqty, + // remark = "抽样不合格报废", + // categoryItems = new List() + // { + // new SelfTestScrappedInputItem() + // { + // category_id = "25574005966629", + // items = new List() + // { + // new defectItem() + // { + // defective_item = "抽样不合格报废", + // defective_item_qty = rqty + // } + // } + // } + // } + //}, db); + #endregion + + //载具需要在中储仓和暂存仓才需要暂控 + List prdReports = await db.Queryable().LeftJoin((a, b) => a.material_box_code == b.carry_code).LeftJoin((a, b, c) => b.location_id == c.id).LeftJoin((a, b, c, d) => c.wh_id == d.id).Where((a, b, c, d) => a.mo_task_id == prdMoTask.id && a.create_time >= CheckTaskInput.startEndTime[0].TimeStampToDateTime() && a.create_time <= CheckTaskInput.startEndTime[1].TimeStampToDateTime() && (c.wh_id == WmsWareHouseConst.WAREHOUSE_ZC_ID || c.wh_id == WmsWareHouseConst.WAREHOUSE_ZCC_ID)).ToListAsync(); + if (prdReports != null) + { + var carryCodes = prdReports.Select(r => r.material_box_code).Distinct().ToList(); + if (carryCodes != null && carryCodes.Count > 0) + { + await db.Updateable() + .SetColumns(x => x.is_check == ((int)EnumCheckConclusion.暂控).ToString()) + .SetColumns(x => x.carry_status == "6")//把料架状态改为退料状态,会自动触发把料架上的子载具从二楼暂存仓退回一楼中储仓任务 + .Where(x => carryCodes.Contains(x.carry_code)) + .ExecuteCommandAsync(); + + #region 记录被暂控的载具信息 + //var qcCheckExecCarrys = new List(); + //foreach(var carryCode in carryCodes) + //{ + // var wmsCarryH = await db.Queryable().Where(r => r.carry_code == carryCode).FirstAsync(); + // if (wmsCarryH == null) + // continue; + + // WmsCarryCode wmsCarryCode = await db.Queryable().FirstAsync(x => x.carry_id == wmsCarryH.id); + // BasLocation basLocation = await db.Queryable().Where(r => r.location_code == wmsCarryH.location_code).FirstAsync(); + // WmsCarryMat wmsCarryMat = await db.Queryable().Where(r => r.carry_id == wmsCarryH.id).FirstAsync(); + + // var qcCheckExecCarry = new QcCheckExecCarry() + // { + // qc_check_exec_id = QcCheckExecH.id, + // carry_id = wmsCarryH.id, + // carry_code = wmsCarryH.carry_code, + // warehouse_id = basLocation != null ? basLocation.wh_id : "", + // qty = wmsCarryCode != null ? wmsCarryCode.codeqty.ToString() : "", + // status = wmsCarryH.is_check, + // location_id = basLocation != null ? basLocation.id : "", + // location_code = basLocation != null ? basLocation.location_code : "", + // material_id= wmsCarryMat?.material_id, + // create_id = _userManager.UserId, + // create_time = DateTime.Now + // }; + // qcCheckExecCarrys.Add(qcCheckExecCarry); + //} + //_ = await db.Insertable(qcCheckExecCarrys).ExecuteCommandAsync(); + #endregion + + #region 记录暂控处理单主/子表信息 + + if (carryCodes != null && carryCodes.Count > 0) + { + + var basMaterial = await db.Queryable().Where(r => r.id == prdMoTask.material_id).FirstAsync(); + string outWHid = ""; string inWHid = ""; + if (basMaterial.category_id.Contains("DGJCJ") || basMaterial.category_id.Contains("ZSJ")) + { + outWHid = WmsWareHouseConst.WAREHOUSE_ZC_ID; + inWHid = "中储不合格品仓id"; + } + else if (basMaterial.category_id.Contains("CGJCJ")) + { + outWHid = WmsWareHouseConst.WAREHOUSE_HCC_ID; + inWHid = "长管不合格品仓id"; + } + + var carryIds = await db.Queryable().Where(r => carryCodes.Contains(r.carry_code)).Select(r => r.id).ToListAsync(); + var wmsCarryCodes = await db.Queryable().Where(r => carryIds.Contains(r.carry_id) && r.material_id == QcCheckExecH.materialid).ToListAsync(); + var codeQty = wmsCarryCodes == null ? 0 : wmsCarryCodes.Sum(r => r.codeqty); + var qcTempControlH = new QcTempControlH() + { + id = SnowflakeIdHelper.NextId(), + bill_code = await _billRullService.GetBillNumber(CodeTemplateConst.QCCONTROLTEMP_CODE), + source_code = QcCheckExecH.bill_code, + pro_task_code = QcCheckExecH.mo_task_code, + out_warehouse_id = outWHid, + in_warehouse_id = inWHid, + material_id = QcCheckExecH.materialid, + material_code = basMaterial.code, + control_lx_qty = carryCodes.Count.ToString(), + control_qty = codeQty.ToString(), + result = "暂控", + loger_id = _userManager.UserId, + confirmer_id = "", + status = ((int)EnumTempControlStatus.待确认).ToString(), + called_box_qty = "0", + called_qty = "0", + leave_call_box_qty = carryCodes.Count.ToString(), + leave_call_qty = codeQty.ToString(), + create_id = _userManager.UserId, + create_time = DateTime.Now, + }; + + await db.Insertable(qcTempControlH).ExecuteCommandAsync(); + + var qcTempControlDs = new List(); + foreach (var carryCode in carryCodes) + { + var wmsCarryH = await db.Queryable().Where(r => r.carry_code == carryCode).FirstAsync(); + if (wmsCarryH == null) + continue; + + WmsCarryCode wmsCarryCode = await db.Queryable().FirstAsync(x => x.carry_id == wmsCarryH.id); + BasLocation basLocation = await db.Queryable().Where(r => r.location_code == wmsCarryH.location_code).FirstAsync(); + if (basLocation == null) + throw Oops.Bah($"未找到编号为{wmsCarryH.location_code}的库位"); + WmsCarryMat wmsCarryMat = await db.Queryable().Where(r => r.carry_id == wmsCarryH.id).FirstAsync(); + BasWarehouse basWarehouse = await db.Queryable().Where(r => r.id == basLocation.wh_id).FirstAsync(); + var _prdReports = prdReports.Where(r => r.material_box_code == carryCode).First(); + var qcTempConD = new QcTempControlD() + { + bill_id = qcTempControlH.id, + carry_id = wmsCarryH.id, + carry_code = carryCode, + warehouse_id = basLocation?.wh_id, + warehouse_code = basWarehouse.whcode, + location_code = basLocation?.location_code, + location_id = basLocation?.id, + qty = wmsCarryCode?.codeqty.ToString(), + submiter = _prdReports == null ? null : _prdReports.create_id, + maker_id = "", + create_id = _userManager.UserId, + create_time = DateTime.Now, + check_status = "暂控", + call_status = "未呼叫" + }; + qcTempControlDs.Add(qcTempConD); + } + await db.Insertable(qcTempControlDs).ExecuteCommandAsync(); + } + #endregion + } + } + else + { + //末检自动完工 + if (QcCheckExecH.checktype == WmsWareHouseConst.MOJIAN_ID) + { + await _prdMoTaskService.PrdTaskRelease2(new PrdTaskReleaseUpInput() + { + TaskIds = NPOI.Util.Arrays.AsList(prdMoTask.id), + Behavior = "Compled", + }, db); + } + } + } + + await db.Ado.CommitTranAsync(); + } } catch (Exception e) { await db.Ado.RollbackTranAsync(); - JNPF.Logging.Log.Error(e.Message,e); - throw Oops.Oh("执行失败:"+e.Message); + JNPF.Logging.Log.Error(e.Message, e); + throw Oops.Oh("执行失败:" + e.Message); } - finally{ + finally + { prdreportSemaphore.Release(); } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TransferInstockHListInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TransferInstockHListInput.cs index 86acf6a5..3165f03b 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TransferInstockHListInput.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TransferInstockHListInput.cs @@ -10,4 +10,142 @@ namespace Tnb.WarehouseMgr.Entities.Dto.Inputs { public string? id { get; set; } } + + public class TransferInstockDListOutput + { + public string id { get; set; } + + ///  +     /// 所属组织 +     ///  + public string? org_id { get; set; } + + ///  +     /// 入库单ID +     ///  + public string? bill_id { get; set; } + + ///  +     /// 执行状态 +     ///  + public string? status { get; set; } + + ///  +     /// 物品ID +     ///  + public string? material_id { get; set; } + + ///  +     /// 物品代码 +     ///  + public string? material_code { get; set; } + + ///  +     /// 单位ID +     ///  + public string? unit_id { get; set; } + + ///  +     /// 单位代码 +     ///  + public string? unit_code { get; set; } + + ///  +     /// 入库需求数量 +     ///  + public decimal? pr_qty { get; set; } + + ///  +     /// 已下发数量 +     ///  + public decimal? xf_qty { get; set; } + + ///  +     /// 实际入库数量 +     ///  + public decimal? qty { get; set; } + + ///  +     /// 流程任务Id +     ///  + public string? f_flowtaskid { get; set; } + + ///  +     /// 流程引擎Id +     ///  + public string? f_flowid { get; set; } + + ///  +     /// 规格型号 +     ///  + public string? material_desc { get; set; } + + ///  +     /// 创建用户 +     ///  + public string? create_id { get; set; } + + ///  +     /// 创建时间 +     ///  + public DateTime? create_time { get; set; } + + ///  +     /// 修改用户 +     ///  + public string? modify_id { get; set; } + + ///  +     /// 修改时间 +     ///  + public DateTime? modify_time { get; set; } + + ///  +     /// 批号 +     ///  + public string? pi_code { get; set; } + + /// + /// 库存地点 + /// + public string? stock_location { get; set; } + + /// + /// erp_line_pk + /// + public string? erp_line_pk { get; set; } + + /// + /// 行号 + /// + public string? lineno { get; set; } + + /// + /// 物料名称 + /// + public string? material_name { get; set; } + /// + /// 辅助属性 + /// + public string auxprop { get; set; } + /// + /// 辅助属性 供应商 + /// + public string auxprop_gys { get; set; } + /// + /// 辅助属性 小批号 + /// + public string auxprop_xph { get; set; } + public string udi_code { get; set; } + + /// + /// 物料规格 + /// + public string? material_specification { get; set; } + + /// + /// 物料型号(箱号) + /// + public string? material_standard { get; set; } + } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/TransferInstockHService.cs b/WarehouseMgr/Tnb.WarehouseMgr/TransferInstockHService.cs index 6bef965b..b65b77eb 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/TransferInstockHService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/TransferInstockHService.cs @@ -20,6 +20,7 @@ using Newtonsoft.Json.Linq; using NPOI.SS.Formula.Functions; using Senparc.Weixin.MP.AdvancedAPIs.Card; using SqlSugar; +using Tnb.BasicData.Entities; using Tnb.EquipMgr; using Tnb.EquipMgr.Entities; using Tnb.WarehouseMgr.Entities; @@ -75,7 +76,39 @@ namespace Tnb.WarehouseMgr var data = JsonConvert.DeserializeObject(json); JArray mainTable = data.list; - ISugarQueryable wmsTransferInstockDs = _db.Queryable().Where(r => mainTable.Select(r => r["id"].ToString()).ToList().Contains(r.bill_id)); + var wmsTransferInstockDs = _db.Queryable().LeftJoin((a, b) => a.material_id == b.id).Where((a, b) => mainTable.Select(r => r["id"].ToString()).ToList().Contains(a.bill_id)).Select((a, b) => new TransferInstockDListOutput + { + id = a.id, + org_id = a.org_id, + bill_id = a.bill_id, + status = a.status, + material_id = a.material_id, + material_code = a.material_code, + unit_id = a.unit_id, + unit_code = a.unit_code, + pr_qty = a.pr_qty, + xf_qty = a.xf_qty, + qty = a.qty, + f_flowid = a.f_flowid, + f_flowtaskid = a.f_flowtaskid, + material_desc = a.material_desc, + create_id = a.create_id, + create_time = a.create_time, + modify_id = a.modify_id, + modify_time = a.modify_time, + pi_code = a.pi_code, + stock_location = a.stock_location, + erp_line_pk = a.erp_line_pk, + lineno = a.lineno, + material_name = a.material_name, + auxprop = a.auxprop, + auxprop_gys = a.auxprop_gys, + auxprop_xph = a.auxprop_xph, + udi_code = a.udi_code, + material_specification = b.material_specification, + material_standard = b.material_standard + + }); foreach (JObject wmsTransferInstockH in mainTable) {