加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

Asp.Net Zero通用打印实现

发布时间:2020-12-16 06:28:16 所属栏目:asp.Net 来源:网络整理
导读:Asp.Net Zero是一款非常优秀的web框架,可以用来快速构建业务系统。框架满足了业务系统所需的大部分通用功能,但是系统必须的打印报表功能一直没有实现。下面给大家介绍如何在zero中集成打印功能,可实现模板设计、套打、批量打

Asp.Net Zero是一款非常优秀的web框架,可以用来快速构建业务系统。框架满足了业务系统所需的大部分通用功能,但是系统必须的打印报表功能一直没有实现。下面给大家介绍如何在zero中集成打印功能,可实现模板设计、套打、批量打印、指令打印、条码/二维码打印等等。

首先需要设计一套灵活用于系统的打印业务,业务设计如下:

首先在core层中新增Prints文件夹,prints中新建PrintTemplate

    public class PrintTemplate : Entity<int>,ISoftDelete,IMustHaveTenant
    {
        public int TenantId { get; set; }

        public bool IsDeleted { get; set; }

        /// <summary>
        /// 模块
        /// </summary>
        [StringLength(50)]
        public string AppServiceName { get; set; }

        /// <summary>
        /// 模板名称
        /// </summary>
        [StringLength(50)]
        public string TemplateName { get; set; }

        /// <summary>
        /// 默认模板
        /// </summary>
        public bool Defaule { get; set; }

        /// <summary>
        /// 模板内容
        /// </summary>
        public string TemplateContent { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        [StringLength(100)]
        public string Remark { get; set; }
    }

PrintTemplate创建后,添加IPrintTemplateManager领域服务方便接口调用:

    public interface IPrintTemplateManager: IDomainService
    {
        Task<List<string>> GetTemplates(string serviceName);

        Task<string> Print(string serviceName,string name);
    }

?Print是选择打印模板后获取模板内容,这里可以单次直接获取模板列表和内容,但是可能业务发展后,打印模板会有很多,所以分步获取更加高效。

?GetTemplates是获取当前模块打印列表,只有模板名称没有内容。

?数据库迁移后在Application.Shared层中添加IPrintManagerAppService接口

    public interface IPrintManagerAppService: IApplicationService
    {
        Task CreateOrUpdatePrint(CreateOrEditPrintInput input);

        Task DeletePrint(EntityDto<int> input);

        Task<PagedResultDto<CreateOrEditPrintInput>> GetPrints(GetPrintInput input);
        
    }

?打印模板是根据业务模块,也就是abp的应用服务进行分类,在报表页面需要获取当前模块所有打印模板列表:

     result.PrintTemplates = await _printTemplateManager.GetTemplates("SomeoneAppService");

选择打印模板后获取模板内容并打印:

        public async Task<string> Print(string templateName)
        {
            return await _printTemplateManager.Print("PurchaseManagerAppService",templateName);
        }

接口实现发布后,在angular中新增打印管理模块,用于统一管理模板,该模块应该由开发人员进行维护。

模板设计如下,可以根据需求设计其他样式模板:

?总结:到这里打印业务已经实现,最后需要在angular中集成打印控件才能开始打印。

?打印控件实现方式:https://www.cnblogs.com/william-xu/p/11098562.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读