二开案例.服务插件.单据编号生成二维码

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.服务插件.单据编号生成二维码

【应用场景】

将单据编号创建成二维码图片,方便扫码。


【案例演示】

采购订单,单据保存的时候,将单据编号创建成二维码图片,列表查询显示单据编号的二维码。


【实现步骤】

<1>编写服务插件,代码如下。

using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
using System.IO;
using System.Text;
using ThoughtWorks.QRCode.Codec;
namespace Jac.XkDemo.BOS.App.PlugIn
{
    /// <summary>
    /// 【服务插件】单据编号生成二维码
    /// </summary>
    [Description("【服务插件】单据编号生成二维码"), HotUpdate]
    public class ConvertBillNoToQrCodeOperationServicePlugIn : AbstractOperationServicePlugIn
    {
        public override void BeginOperationTransaction(BeginOperationTransactionArgs e)
        {
            base.BeginOperationTransaction(e);
            foreach (var dataEntity in e.DataEntitys)
            {
                var billNo = (string) dataEntity["BillNo"];
                if (!string.IsNullOrWhiteSpace(billNo))
                {
                    dataEntity["F_Jac_Image"] = GetQrCode(billNo);
                }
            }
        }
        /// <summary>
        /// 生成二维码图片
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static byte[] GetQrCode(string data)
        {
            var imgFileName = Guid.NewGuid().ToString().Replace("-", "") + ".webp";
            var encoder = new QRCodeEncoder();
            encoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //编码方法(注意:BYTE能支持中文,ALPHA_NUMERIC扫描出来的都是数字)
            encoder.QRCodeScale = 4; //大小(值越大生成的二维码图片像素越高)
            encoder.QRCodeVersion = 0; //版本(注意:设置为0主要是防止编码的字符串太长时发生错误)
            encoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; //错误效验、错误更正(有4个等级)
            var bp = encoder.Encode(data, Encoding.GetEncoding("UTF-8"));
            var imgFilePath = AppDomain.CurrentDomain.BaseDirectory + "TempfilePath/" + imgFileName;
            bp.Save(imgFilePath);
            var imgBytes = File.ReadAllBytes(imgFilePath);
            File.Delete(imgFilePath);
            return imgBytes;
        }
    }
}


<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<3>BOSIDE扩展采购订单,新增图片字段,注册服务插件,保存元数据,开发完毕。


【功能验证】

<1>登录业务站点,打开采购订单新增界面,保存单据,此时会将单据编号自动生成二维码,并存储到图片字段上。

---------------------------------------------------------------------------------------------------------













【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.服务插件.单据编号生成二维码

【应用场景】将单据编号创建成二维码图片,方便扫码。【案例演示】采购订单,单据保存的时候,将单据编号创建成二维码图片,列表查询显示单...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息