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”,然后点击“查询”按钮。如下图。

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

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

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

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

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

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

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

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

abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)的更多相关文章

  1. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之四(四十)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  2. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之五(四十一)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  3. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之六(四十二)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  4. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之七(四十三)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  5. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之八(四十四)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  6. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之九(四十五)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  7. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十(四十六)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  8. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十一(四十七)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  9. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十二(四十八)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  10. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之一(三十七)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

随机推荐

  1. Java中继承相关知识点

    继承 1.继承概述 继承是面向对象的三大特征之一.可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法 1.1 继承的格式 格式:public class 子类名 extends ...

  2. linux学习之vi

    vi 删除当前行dd 删除当前行及下面内容 dG 删除第2行到第3行2d 3d 删除指定行,删除第5行  5dd 删除当前行以下3行  d3

  3. NOIP2008普及组

    T2]排座椅 横行相同时列数+1,纵行相同时行数+1. 主要是用桶排序,因为范围太大了,用sort会超时 #include<iostream> #include<cstring> ...

  4. js字符串常用的方法

    1.  charAt( ) 获取指定下标处的字符 let str = 'hello' console.log(str.charAt(0));//h 2.  charCodeAt 获取下标出的字符的Un ...

  5. GreenPlum tidb 性能比较

    主要的需求 针对大体量表的OLAP统计查询,需要找到一个稳定,高性能的大数据数据库,具体使用 数据可以实时的写入和查询,并发的tps不是很高 建立数据仓库,模式上主要采用星星模型.雪花模型,或者宽表 ...

  6. C++ || const_cast 将const变量转为非const

    点击查看代码 #include <iostream> using namespace std; int main() { int a =5; const int* p=&a;//需 ...

  7. raid5+lvm随笔

    1.准备磁盘,先做raid,再做lvm; /dev/sdb  /dev/sdc  /dev/sdd  /dev/sde [root@localhost ~]# mdadm -C -v /dev/md5 ...

  8. WSL终端无法启动

    WSL终端无法启动 1.状态 (1)宿主系统重新启动后,通过菜单项无法启动终端. (2)在powershell中,通过命令:wsl -l -v,查看子系统均为为stopped状态. (3)Powers ...

  9. 禅道 docker 部署

    官方文档:https://hub.docker.com/r/idoop/zentao 1.创建本地目录:mkdir -p /data/zbox 2.启动容器: sudo docker run -itd ...

  10. ESP32 IDF V5.0 编译环境

    方法:环境搭建工具一键安装: 下载链接:https://dl.espressif.com/dl/esp-idf/ 可以选择离线安装方式和在线安装方式,建议:采用离线安装的方式 下载离线安装包之后点击安 ...