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

PLM.二开案例.ECN变更单自动同步更新服务案例

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

PLM.二开案例.ECN变更单自动同步更新服务案例

【应用场景】

变更单新增操作,自动同步更新制造用料清单


【案例演示】

变更单新增一个操作,用于自动同步更新制造用料清单


【实现步骤】

<1>编写服务插件

你可能需要以下引用

代码示例:

using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.K3.Core.MFG;
using Kingdee.K3.Core.MFG.EntityHelper;
using Kingdee.K3.MFG.App;
using Kingdee.K3.MFG.Contracts;
using Kingdee.K3.MFG.Contracts.ENG;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Xml.Serialization;

namespace ISV.MFGSync.Common.BusinessEntity
{
    [Description("插件示例:ECN自动同步更新")]
    public class ECNSyncMFGService : AbstractOperationServicePlugIn
    {
        public override void OnPreparePropertys(PreparePropertysEventArgs e)
        {
            e.FieldKeys.Add("FSyncContext");
            e.FieldKeys.Add("FIsERPSynSuccess");
            base.OnPreparePropertys(e);
        }

        public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
        {
            var allSyncBomIds = new List<long>();
            foreach (var row in e.SelectedRows)
            {
                var data = row.DataEntity;
                if (!Convert.ToBoolean(data["IsERPSynSuccess"])) continue; //判断ECN是否下推
                if (data["SyncContext"] == null || data["SyncContext"] == DBNull.Value) continue; //获取已下推的数据列表,没有则跳过
                /*
                 * ECN变更单下推后,将对应的制造物料清单内码以XML的形式序列化在了FSyncContext字段上
                 * 可反序列化出来直接使用
                 */
                var syncxml = data["SyncContext"].ToString();
                var serializer = new XmlSerializer(typeof(HashSet<long>));
                try
                {
                    using (StringReader reader = new StringReader(syncxml))
                    {
                        allSyncBomIds.AddRange((HashSet<long>)serializer.Deserialize(reader));
                    }
                }
                catch (InvalidOperationException)
                {  //历史版本数据存在类型不一致的情况,按需处理 
                }
            }
            if (allSyncBomIds.Any())
            {
                var result = BomSyncUpdate(allSyncBomIds);
                if (result != null)
                {
                    this.OperationResult.MergeResult(result);
                }
            }
        }

        private IOperationResult BomSyncUpdate(List<long> bomIds)
        {

            IOperationResult result = new OperationResult();
            FormMetadata bomMeta = MetaDataServiceHelper.Load

PLM.二开案例.ECN变更单自动同步更新服务案例

【应用场景】变更单新增操作,自动同步更新制造用料清单【案例演示】变更单新增一个操作,用于自动同步更新制造用料清单【实现步骤】<1>编...
点击下载文档文档为doc格式

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

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