77范文网 - 专业文章范例文档资料分享平台

操作插件示例代码(4)

来源:网络收集 时间:2019-02-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

案例–采购调价表审核时自动生效

代码来源

Kingdee.K3.SCM.App.Pur.ServicePlugIn.PAT.Audit

需求背景

采购调价表执行审核操作时,需要同步执行生效处理;

实现方案

在处理操作前,先明确要求加载采购调价表的某些关键字段,后面处理数据时,需要用到。

在操作前(事务内),先调用采购调价表的生效操作,自动生效,如果失败,则抛出错误。 如果采购调价表生效成功,则继续执行审核操作。

在此过程中,有几处需要用到Context属性,如加载采购调价表元数据、调用采购调价表的生效操作、记录错误日志等;

关键字

加载元数据状态转换写日志

示例代码

C#

using System;

using System.Collections.Generic; using System.Linq; using System.Text;

using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Contracts; using Kingdee.BOS.App;

using Kingdee.BOS.Core.Metadata;

using Kingdee.BOS.Orm.Metadata.DataEntity; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.Validation; using Kingdee.BOS.Core.Log; using Kingdee.BOS; using System.Data;

using Kingdee.BOS.App.Data; using Kingdee.K3.Core.SCM; using Kingdee.BOS.ServiceHelper;

namespace Kingdee.K3.SCM.App.Pur.ServicePlugIn.PAT {

publicclassAudit : AbstractOperationServicePlugIn {

publicoverridevoid OnPreparePropertys(PreparePropertysEventArgs e) {

e.FieldKeys.Add(\);

e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\);

e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\);

base.OnPreparePropertys(e); }

publicoverridevoid EndOperationTransaction(EndOperationTransactionArgs e) {

ISaveService service = ServiceHelper.GetService(); ISetStatusService setStatusService =

Kingdee.BOS.Contracts.ServiceFactory.GetSetStatusService(this.Context);

IMetaDataService metaService = ServiceHelper.GetService(); ILogService logService = ServiceHelper.GetService();

FormMetadata meta = (FormMetadata)metaService.Load(this.Context, SCMFormIdConst.PUR_PAT);

BusinessInfo info = meta.BusinessInfo;

List> kvp = newList>(); foreach (DynamicObject item in e.DataEntitys) {

long fid = Convert.ToInt64(item[\]);

DynamicObject dyOrg = item[\] asDynamicObject; long orgId = dyOrg == null ? 0 : Convert.ToInt64(dyOrg[\]); bool isEffectWithoutClick =

Convert.ToBoolean(SystemParameterServiceHelper.GetParamter(this.Context, orgId, 0, SCMFormIdConst.PUR_PurchaseParameter, \));

if (isEffectWithoutClick) {

kvp.Add(newKeyValuePair(fid, \)); } }

if (kvp.Count > 0) {

IOperationResult result = setStatusService.SetBillStatus(

this.Context, info, kvp, null, \);

if (!result.IsSuccess) {

StringBuilder sb = newStringBuilder();

foreach (ValidationErrorInfo errorInfo in result.ValidationErrors) {

sb.Append(errorInfo.Message); sb.Append(\); LogObject logObj = newLogObject() {

Description = errorInfo.Message,

Environment = OperatingEnvironment.BizOperate, OperateName = \调价表生效失败\,

ObjectTypeId = K3.Core.SCM.SCMFormIdConst.PUR_PriceCategory };

logService.WriteLog(this.Context, logObj); }

thrownewKDException(\,\调价表生效失败。原因如下:调价表的\ + sb); } } } } }

FormOperation

当前执行的操作。

语法

属性定义 C# publicFormOperation FormOperation { get; privateset; } 备注

操作插件,可以基于此属性,判断出正在执行的操作类型,从而做出相应的处理。

案例 - 销售订单保存不做信用检查

代码来源

Kingdee.K3.SCM.App.Credit.Core.AppBusinessService.UpdateCreditAmount

需求背景

销售订单提交、关闭时,需要进行信用检查,更新客户信用额度;

实现方案

定制一个通用的信用检查、额度更新服务,供销售订单及其子类单据调用,可能会被配置到保存、提交、关闭、审核等各种操作上。

需要用到FormOperation属性,判断当前操作类型,如果被配置保存操作上,则强制忽略检查。

此示例代码,来自于服务端服务(AbstractAppBusinessService),但FormOperation用法相同。

关键字 操作类型

示例代码 C#

using System;

using System.Collections.Generic; using System.Linq; using System.Text;

using Kingdee.BOS; using Kingdee.BOS.Util;

using Kingdee.BOS.Core.DynamicForm;

using Kingdee.K3.Core.SCM;

namespace Kingdee.K3.SCM.App.Credit.Core.AppBusinessService {

publicclassUpdateCreditAmount : AbstractAppBusinessService {

publicoverridevoid PreparePropertys(List fieldKeys) {

base.PreparePropertys(fieldKeys); // 无关逻辑,代码略去 }

publicoverridevoid DoActionBatch(AppBusinessServiceArgs e) {

//初始化变量及有效性检查

if (!InitialVariable(e)) return;

// 无关逻辑,代码略去 base.DoActionBatch(e); }

///

///初始化变量当发现不需要再执行服务时直接return false ///

///

privatebool InitialVariable(AppBusinessServiceArgs e) {

// 无关逻辑,代码略去

return ValidateData(e); }

privatebool ValidateData(AppBusinessServiceArgs e) {

//保存且不是变更调用不做信用检查和更新

if (e.FormOperation.Id.EqualsIgnoreCase(OperationNumber.Save)) { returnfalse; }

// 无关逻辑,代码略去

returntrue;

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作插件示例代码(4)在线全文阅读。

操作插件示例代码(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/483187.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: