首页 > 其他分享 > abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)

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

时间:2023-04-16 14:55:44浏览次数:39  
标签:core easyui abp efcore using input net

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

abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三)  abp(net core)+easyui+efcore实现仓储管理系统——定义仓储并实现 (四) abp(net core)+easyui+efcore实现仓储管理系统——创建应用服务(五) abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十一) abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理一 (十九) abp(net core)+easyui+efcore实现仓储管理系统——ABP WebAPI与EasyUI结合增删改查之一(二十七) abp(net core)+easyui+efcore实现仓储管理系统——入库管理之一(三十七) abp(net core)+easyui+efcore实现仓储管理系统——出库管理之一(四十九) abp(net core)+easyui+efcore实现仓储管理系统——ABP升级7.3上(五十八)

 

      有了前一篇文章(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”,然后点击“查询”按钮。如下图。

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

 

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

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

   8.在主界面的菜单中,选择“Business->组织管理”菜单项,浏览器中呈现一个组织信息列表与四个按钮。组织信息能正常显示。如下图。

  9. 在“组织管理”列表页面的海关代码输入框中输入“2011”,然后点击“查询”按钮。如下图。

 

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

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

 

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

 

 

 

 

标签:core,easyui,abp,efcore,using,input,net
From: https://www.cnblogs.com/chillsrc/p/17323288.html

相关文章

  • CentOS Linux release 7.9.2009 (Core)
    #####################今天给10年的机器重装了CentOSLinuxrelease7.9.2009(Core)  systemctlset-defaultmulti-user.target   [root@a8-cloud-dba-db08~]#cat/etc/yum.repos.d/CentOS-Base.repo#CentOS-Base.repo##Themirrorsystemusestheco......
  • EF Core配置
    DbContext中只需要一个构造函数点击查看代码 publicDemoDbContext(DbContextOptionsoptions):base(options){}项目文件配置api项目引用dbcontxt所在项目时,去掉dbcontext所在项目的项目文件中的<PrivateAssets>all</PrivateAssets>否则会因为无法引......
  • Nvidia Tensor Core-MMA PTX编程入门
    1PTX(ParallelThreadExecution)PTX是什么,Nvidia官方描述为alow-levelparallelthreadexecutionvirtualmachineandinstructionsetarchitecture(ISA),直面意思是低级并行线程执行虚拟机和指令集架构。怎么理解其直面意思,有两个方法。一个方法是借鉴LLVM,熟悉LLV......
  • 用Abp实现找回密码和密码强制过期策略
    @目录重置密码找回密码发送验证码校验验证码发送重置密码链接创建接口密码强制过期策略改写接口Vue网页端开发重置密码页面忘记密码控件密码过期提示项目地址用户找回密码,确切地说是重置密码,为了保证用户账号安全,原始密码将不再以明文的方式找回,而是通过短信或者邮件的方式发送一......
  • 在.NET Core 6.0中,你可以使用自定义 Middleware 来限制 Swagger/index.html 的访问,当
    创建一个自定义Middleware类,例如SwaggerNotFoundMiddleware:publicclassSwaggerNotFoundMiddleware{privatereadonlyRequestDelegate_next;publicSwaggerNotFoundMiddleware(RequestDelegatenext){_next=next;}publicasyncT......
  • Failed to read artifact descriptor for com.fasterxml.jackson.core:jackson-databi
    http://stackoverflow.com/questions/42386730/issue-with-maxmind-dependency<dependency><groupId>com.maxmind.geoip2</groupId><artifactId>geoip2</artifactId><version>2.8.0</version>......
  • ASP.NET Core MVC 从入门到精通之路由
    随着技术的发展,ASP.NETCoreMVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NETCoreMVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NETCoreMVC系统开发的人员。 经过前几篇文章的讲解,初步了解ASP.NETCor......
  • #yyds干货盘点#【愚公系列】2023年04月 .NET CORE工具案例-.NET Core使用PaddleOCRSha
    (文章目录)前言PaddleOCRSharp是一个基于百度飞桨PaddleOCR的C++代码修改并封装的.NET的OCR工具类库。包含文本识别、文本检测、基于文本检测结果的统计分析的表格识别功能,同时针对小图识别不准的情况下,做了优化,提高识别准确率。包含总模型仅8.6M的超轻量级中文OCR,单模型支持中......
  • PdfSharpCore是MIT开源协议
    PdfSharpCore是MIT开源协议,不过他依赖Sixlabors.Fonts和Sixlabors.ImageSharp库,Sixlabors已经修改了协议,https://sixlabors.com/pricing/上面的说明是:IfyouareconsuminganySixLaborslibrariesasaDirectPackageDependencyforusageinClosedSourcesoftwareinthe......
  • macOS 13.4Beta 2 OpenCore 0.9.2双引导分区原版黑苹果镜像
    镜像特点文章原地址:http://www.imacosx.cn/113041.html(转载请注明出处)完全由黑果魏叔官方制作,针对各种机型进行默认配置,让黑苹果安装不再困难。系统镜像设置为双引导分区,全面去除clover引导分区(如有需要,可以自行直接替换opencore分区文件为clover引导文件)备注:此镜像仅适用与16g优盘......