abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)

 Abp(net core)+easyui+efcore实现仓储管理系统目录

 

      有了前一篇文章(abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级(六十) ),对于模块管理的升级过程中解决升级中出现的问题的一些经验。我们对组织管理这个模块进行升级。

一、添加Profile定义文件

   1. 在Visual Studio 2022的“解决方案资源管理器”中,右键单击“ABP.TPLMS.Application”项目,使用鼠标左键展开“Orgs” > “Dto”文件夹

  2. 使用鼠标右键单击“Dto”文件夹,然后选择“添加” > “类”。 将类命名为 OrgMapProfile,然后选择“添加”。代码如下。

using ABP.TPLMS.Authorization.Users;

using ABP.TPLMS.Entitys;
using ABP.TPLMS.Users.Dto;
using AutoMapper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ABP.TPLMS.Orgs.Dto
{

    public class OrgMapProfile:Profile
    {

        public OrgMapProfile()

        {

            CreateMap<OrgDto, Org>();
            CreateMap<OrgDto, CreateUpdateOrgDto>();
           CreateMap<CreateUpdateOrgDto, Org>(); 

        }
    }
}

 

二、修改OrgAppService类

   3.在Visual Studio 2022的“解决方案资源管理器”中,在“Orgs”文件夹中找到OrgAppService.cs文件,双击在文本编辑器中打开,修改代码如下。

using Abp.Application.Services;
using Abp.Application.Services.Dto;
using Abp.Domain.Repositories;
using Abp.Web.Models;
using ABP.TPLMS.Entitys;
using ABP.TPLMS.Modules.Dto;
using ABP.TPLMS.Orgs.Dto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ABP.TPLMS.Orgs
{
    public class OrgAppService : AsyncCrudAppService<Org, OrgDto, int, PagedOrgResultRequestDto,
                            CreateUpdateOrgDto, CreateUpdateOrgDto>, IOrgAppService
 
    {
        public OrgAppService(IRepository<Org, int> repository)
            : base(repository)
        {
 
        }
        [DontWrapResult]
        public  PagedOrgResultDto<OrgDto> GetAllOrgs(PagedOrgResultRequestDto input)
        {
            PagedOrgResultDto<OrgDto> orgs = new PagedOrgResultDto<OrgDto>();
            input.SkipCount = 0;//这里需要进行参数传递
            input.MaxResultCount= 1000;          
            var allOrgs=GetAllAsync(input);           

            IReadOnlyList<OrgDto> result = AddParentOrgs(input, allOrgs.Result.Items).AsReadOnly();
            orgs.Rows = result;
            orgs.Total = result.Count;
            return orgs;
        }
        private List<OrgDto> AddParentOrgs(PagedOrgResultRequestDto input,IReadOnlyList<OrgDto> list)
        {
            List<OrgDto> result = new List<OrgDto>();
            if (list == null)
                return result;
            var qry1 = base.CreateFilteredQuery(input);
            List<Org> listParent = new List<Org>();
            GetParentOrgs(listParent, list[0].ParentId, qry1);
          
            foreach (var item in listParent)
            {
                result.Add(ObjectMapper.Map<OrgDto>(item));
            }
            result.AddRange(list.ToArray());
            return result;
        }
 

        protected override IQueryable<Org> CreateFilteredQuery(PagedOrgResultRequestDto input)
        {

            var qry = base.CreateFilteredQuery(input)
                .Where(t => t.Name.Contains(input.OrgName == null ? string.Empty : input.OrgName))

                .Where(t => t.BizCode.Contains(input.OrgCode == null ? string.Empty : input.OrgCode))

                .Where(t => t.CustomCode.Contains(input.CustomCode == null ? string.Empty : input.CustomCode));

            return qry;
        }
        private void GetParentOrgs(List<Org> orgs, int ParentId, IQueryable<Org> listOrgs)
        {

            List<Org> drs = listOrgs.Where(x => x.Id == ParentId).ToList();
            if (drs == null || drs.Count <= 0)
            {
                return;
            }
            else
            {
                for (int i = 0; i < drs.Count; i++)
                {
                    var dr = drs[i];
                    if (!orgs.Contains(dr))
                    {
                        orgs.Add(dr);
                    }                   
                    GetParentOrgs(orgs, dr.ParentId, listOrgs);
                }
            }
        }
    }
}

4. 上面代码中需要特别注意的一点,是GetAllOrgs方法中的input.SkipCount=0这一行代码,如果将这一行代码注释掉,在进行条件查询时,会报错。在组织管理页面的海关代码中输入“2011”,然后点击“查询”按钮。如下图。 abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)

5.Visual Studio 2022会弹出一个用记未处理的异常,错误信息,如下图。

 abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)

    6.在Visual Studio 2022的解决方案资源管理器中,将刚才注释掉的那一条代码“input.SkipCount=0”,还原。按F5运行应用程序。

   7.在浏览器中的登录页面中输入管理员用户名和密码进行登录。

   8.在主界面的菜单中,选择“Business->组织管理”菜单项,浏览器中呈现一个组织信息列表与四个按钮。组织信息能正常显示。如下图。 abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)

  9. 在“组织管理”列表页面的海关代码输入框中输入“2011”,然后点击“查询”按钮。如下图。 abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)

 

10.这一次程序运行正常,查询出了结果,结果如下图。

abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)

11.在“组织管理”列表页面中使用鼠标点击“添加”按钮,弹出“添加组织信息”界面。如下图。

 abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)

12.在“添加组织信息”中填写完信息,然后点击“保存”按钮,将新添加的组织信息保存到数据库。如下图。

abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)

 

 

 

 

原文链接:https://www.cnblogs.com/chillsrc/p/17323288.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一) - Python技术站

(0)
上一篇 2023年4月22日
下一篇 2023年4月22日

相关文章

  • ASP.NET MVC实现区域或城市选择

    当我们需要实现区域或城市选择的功能时,可以使用 ASP.NET MVC 框架来实现。下面是详细的攻略: 步骤1:创建数据库 在 SQL Server 中创建一个名为“City”的数据库,并添加以下表: Province 表 列名 数据类型 Id int Name nvarchar(50) City 表 列名 数据类型 Id int Name nvarchar…

    C# 2023年5月12日
    00
  • 轻松学习C#的异常处理

    下面我将详细讲解如何轻松学习C#的异常处理,包括以下几点: 一、异常处理概述 在编写程序时,不可避免地会遇到各种错误,比如输入错误、内存不足、文件不存在等等,这些错误我们称之为异常。当程序出现异常时,如果不进行处理,程序将会无法正常运行,甚至会出现崩溃的情况。因此,异常处理十分重要。 C#中的异常处理主要通过try-catch-finally语句实现。其中,…

    C# 2023年5月15日
    00
  • asp.net中gridview的查询、分页、编辑更新、删除的实例代码

    下面我会详细讲解如何在 ASP.NET 中使用 GridView 控件实现数据的查询、分页、编辑更新和删除操作。 1. GridView 的基本使用 GridView 控件是 ASP.NET 中用于展示数据的常用控件之一,通常用于展示数据列表。它可以从数据源中获取数据并将数据呈现为表格形式,在网页中显示出来。GridView 控件支持分页、排序和编辑更新等功…

    C# 2023年5月31日
    00
  • 深入理解C#的数组

    深入理解C#的数组 C#的数组是一种非常常用的数据结构,它可以有效地存储和操作一组数据。在本文中,我们将深入探讨C#的数组,包括其定义、初始化、访问、遍历和应用等方面。 数组的定义 在C#中,可以使用以下方式定义数组: // 1.声明一个数组变量 int[] numbers; // 2.声明并初始化一个数组 int[] numbers = new int[5…

    C# 2023年6月7日
    00
  • ASP.NET Core 中的Main方法详解

    下面是关于“ASP.NET Core 中的 Main 方法详解”的完整攻略。 Main 方法详解 在 ASP.NET Core 中,Main 方法是整个应用程序的入口点,它是在应用程序启动时第一个被调用的方法。Main 方法由运行时负责调用,你可以在其中执行一些初始化的工作,比如配置、依赖注入等。 Main 方法的签名如下: public static vo…

    C# 2023年5月31日
    00
  • C# 微信支付 wx.chooseWXPay 签名错误的解决方法

    针对“C#微信支付wx.chooseWXPay签名错误的解决方法”,我给出以下完整攻略: 1. 概述 在微信支付中,使用wx.chooseWXPay接口进行支付时,需要传递签名数据,并且签名数据必须和微信后台生成的一致,否则会造成签名错误。本文主要讲解在C#中如何生成微信支付所需的签名,并介绍常见的签名错误及其解决方法。 2. 签名生成方法 在C#中生成微信…

    C# 2023年5月15日
    00
  • 详解c# Emit技术

    当我们需要在C#中动态生成IL代码时,C# Emit技术就变得非常有用了。本文将详细介绍C# Emit技术,并提供两个示例来帮助您更好地理解它。 C# Emit技术 C# Emit技术是.NET框架提供的一项功能强大的动态代码生成技术。通过它,我们可以使用C#代码动态地生成并编译IL代码,实现很多与程序运行时生成代码有关的场景。 C# Emit技术一般用于以…

    C# 2023年5月15日
    00
  • c#实现sunday算法实例

    当需要在一个字符串中查找某个子串时,Sunday 算法是一种常用的实现方式。该算法的基本思想是:尽量减少一位地移动匹配串和主串。如果匹配不成功,那么从主串的下一个字符开始,继续进行匹配。 以下是使用 C# 实现 Sunday 算法的完整攻略: 1. 首先了解 Sunday 算法的基本实现流程 查看匹配串中当前访问的字符是否与主串中对应的位置相同。 如果相同,…

    C# 2023年6月6日
    00
合作推广
合作推广
分享本页
返回顶部