电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

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

来源:金蝶云社区作者:金蝶2024-09-237

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

问题描述:

解决方案:

二开方案如下:

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

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

问题描述:解决方案:二开方案如下:using Kingdee.BOS.Core.DynamicForm.PlugIn;using Kingdee.BOS.Util;using Kingdee.K3.Core.MFG.Entit...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信