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(this.Context, MFGFormIdConst.SubSys_ENG.BomBill) as FormMetadata; var bomDatas = BusinessDataServiceHelper.Load(Context, bomIds.Cast<object>().ToArray(), bomMeta.BusinessInfo.GetDynamicObjectType()).ToList(); IBOMSynUpdateService bomSynsUpdateService = MFGServiceFactory.GetService<IBOMSynUpdateService>(this.Context); DynamicObject parameterData = AppServiceContext.ParamService.TryGetUserParam(this.Context, MFGFormIdConst.SubSys_ENG.BomBill, MFGFormIdConst.SubSys_ENG.BomBillParamter); string conSultDate = parameterData.GetDynamicValue<string>("ConSultDate"); //生产用料清单 IOperationResult operationPrdResult = bomSynsUpdateService.SynsUpdatePPBom(this.Context, bomDatas, conSultDate); if (operationPrdResult != null) { result.MergeResult(operationPrdResult); } //委外用料清单 IOperationResult operationSubResult = bomSynsUpdateService.SynsSubUpdatePPBom(this.Context, bomDatas, conSultDate); if (operationSubResult != null) { result.MergeResult(operationSubResult); } //计划用料清单 IOperationResult operationSubPLMResult = bomSynsUpdateService.SynsSubUpdatePLPPBom(this.Context, bomDatas, conSultDate); if (operationSubPLMResult != null) { result.MergeResult(operationSubPLMResult); } return result; } } }
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展变更单,新增一个空操作,并绑定上述服务插件
<4>业务类型配置中或业务类型初始化,更新变更单业务类型模型;
<5>随后即可在变更单流程中配置对应服务操作;
【功能验证】
<1>发起一个变更单流程查看效果
【参考资料】
如何后台调用同步更新计划BOM、用料清单 (kingdee.com)
PLM.二开案例.ECN变更单自动同步更新服务案例
【应用场景】变更单新增操作,自动同步更新制造用料清单【案例演示】变更单新增一个操作,用于自动同步更新制造用料清单【实现步骤】<1>编...
点击下载文档
本文2024-09-23 03:05:06发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-156612.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章