附件明细保存附件时,校验当前附件是否与此单据已上传的附件有重名

【应用场景】
附件明细保存附件时,校验当前附件是否与此单据已上传的附件有重名。
【注意事项】
1、该二开方案只能干涉到附件明细保存附件。
2、快传和批量新增上传附件二开干预会对标准逻辑影响较大,会影响后续升级。
3、预计v9版本标准产品会有重名校验功能,该方案只针对v9以下版本。
【案例演示】
附件明细保存附件时,校验当前附件是否与此单据已上传的附件有重名。
如果有重名就给出提示,并取消保存。
【实现步骤】
<1>编写表单插件和服务插件,代码如下。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Attachment;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.List.PlugIn.Args;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Util;
namespace DemoPlugin
{
[Description("附件明细插件扩展"), HotUpdate]
public class AttachmentBillPlugInExt : AbstractBillPlugIn
{
public override void BeforeDoOperation(BeforeDoOperationEventArgs e)
{
base.BeforeDoOperation(e);
if (e.Operation.FormOperation.Operation.EqualsIgnoreCase("Save"))
{
var attachmentKey = GetAttachmentKey();
object attachmentName;
this.Model.DataObject.TryGetValue("AttachmentName", out attachmentName);
if (!string.IsNullOrWhiteSpace(attachmentKey.BillType)
&& !string.IsNullOrWhiteSpace(attachmentKey.BillInterID)
&& !attachmentName.IsNullOrEmptyOrWhiteSpace())
{
var sql = "SELECT 1 FROM T_BAS_ATTACHMENT WHERE FBILLTYPE = @FBILLTYPE AND FINTERID = @FINTERID AND FATTACHMENTNAME = @NAME";
var param = new SqlParam[]
{
new SqlParam(@"FBILLTYPE", KDDbType.String, attachmentKey.BillType),
new SqlParam(@"FINTERID", KDDbType.String, attachmentKey.BillInterID),
new SqlParam(@"NAME", KDDbType.String, attachmentName),
};
附件明细保存附件时,校验当前附件是否与此单据已上传的附件有重名
【应用场景】附件明细保存附件时,校验当前附件是否与此单据已上传的附件有重名。【注意事项】1、该二开方案只能干涉到附件明细保存附件。2...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



