物料清单勾选了跳层,用料清单在展开到子件的同时,怎么清楚看到是哪个半成品展开的?

问题描述:
解决方案:
二开方案如下:
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Util;
using Kingdee.K3.Core.MFG.EntityHelper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS;
using Kingdee.K3.MFG.App;
using Kingdee.K3.Core.BD;
using Kingdee.K3.Core.BD.ServiceArgs;
using Kingdee.K3.Core.MFG.EnumConst;
namespace EK.Kingdee.K3.MFG.PRD.App.ServicePlugIn
{
[Description("生产订单计划确认跳层携带上一层的物料编码拼接至用料清单子项分录")]
public class PPBomGetTopMtrlNumber : AbstractOperationServicePlugIn
{
public override void BeginOperationTransaction(global::Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeginOperationTransactionArgs e)
{
base.BeginOperationTransaction(e);
if (e.DataEntitys.IsEmpty()) return;
var ppbomEntryDatas = from datatity in e.DataEntitys
from row in datatity.GetDynamicObjectItemValue<DynamicObjectCollection>("PPBomEntry")
select row;
if (ppbomEntryDatas.IsEmpty()) return;
List<string> bomEntryIds = new List<string>();
//找到上级父项的BOM分录内码
foreach (DynamicObject entryData in ppbomEntryDatas)
{
string pathEntryId = entryData.GetDynamicValue<string>(CONST_PRD_PPBOM.CONST_FEntity.ORM_PathEntryID);
if (pathEntryId.IsNullOrEmptyOrWhiteSpace()) continue; //不存在BOM展开路径,意味着非物料清单携带
List<string> pathEntryIds = pathEntryId.Split(',').ToList();
if (pathEntryIds.Count() == 1) continue;//存在展开路径,但是分割出来只有一个,说明只存在自身,非虚拟键和跳层件展开
bomEntryIds.AddRange(pathEntryIds);
}
if (bomEntryIds.IsEmpty()) return;
//获取上级BOM中的物料编码
List<long> cBomEntryIds = bomEntryIds.Select(s => Convert.ToInt64(s)).ToList();
string sql = string.Format(@"SELECT T.FENTRYID AS BOMENTRYID,TM.FMATERIALID AS MTRLID,TM.FNUMBER AS MTRLNUMBER FROM T_ENG_BOMCHILD T INNER JOIN {0} T1 ON T.FENTRYID=T1.FID
INNER JOIN T_BD_MATERIAL TM ON T.FMATERIALID=TM.FMATERIALID", StringUtils.GetSqlWithCardinality(bomEntryIds.Distinct().Count(), "@BOMENTRYID", 1));
List<SqlParam> paramLists = new List<SqlParam>();
paramLists.Add(new SqlParam("@BOMENTRYID", KDDbType.udt_inttable, bomEntryIds.Distinct().ToArray()));
DynamicObjectCollection objs = AppServiceContext.DbUtils.ExecuteDynamicObject(this
物料清单勾选了跳层,用料清单在展开到子件的同时,怎么清楚看到是哪个半成品展开的?
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



