abp(net core)+easyui+efcore实现仓储管理系统——ABP WebAPI与EasyUI结合增删改查之九(三十五)

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

abp(net core)+easyui+efcore实现仓储管理系统——建立应用服务(五)html

abp(net core)+easyui+efcore实现仓储管理系统——EasyUI前端页面框架 (十八) 前端

 
 
 
       在上面abp(net core)+easyui+efcore实现仓储管理系统——ABP WebAPI与EasyUI结合增删改查之八(三十四) 文章的学习以后。咱们经过前面的八篇文章已经学习了经过WebAPI接口与控制器去实现新增、删除与修改功能。接下来,咱们要在控制器中实现查询功能。

 

、查询组织信息算法

      1. 在Visual Studio 2017的“解决方案资源管理器”中,右键单击在领域层“ABP.TPLMS.Web.Mvc”项目中的Views\Orgs目录。 找到Index.cshmtl文件,添加一个查询条件相关代码。以下图。json

 

具体代码以下:
浏览器

 <div id="dg-button">
            <form name="searchform" method="post" action="" id="searchform">             

                <label for="Name">组织名称:</label>
                <input name="Name" id="Name" class="easyui-validatebox" data-options="width:200" />
                <label for="Code">组织代码:</label>
                <input name="Code" id="Code" class="easyui-validatebox" data-options="width:150" />
                <label for="CustomCode">海关代码:</label>

                <input name="CustomCode" id="CustomCode" class="easyui-validatebox" data-options="width:100" />
                <a href="#" id="search" class="easyui-linkbutton" data-options="iconCls:'icon-search'" onclick="Search()">查询</a>               
            </form>
        </div>

 

      2.Visual Studio 2017的“解决方案资源管理器”中,右键单击“ABP.TPLMS.Application”项目的 “Orgs”文件夹中,找到Paged OrgResultRequestDto.cs文件,添加查询条件属性。代码以下。
框架

public class PagedOrgResultRequestDto : PagedResultRequestDto
    {

        public string Keyword { get; set; }
        public string OrgName { get; set; }
        public string OrgCode { get; set; }
        public string CustomCode { get; set; }
    }
}

 

      3. 在Visual Studio 2017的“解决方案资源管理器”中,右键单击在领域层“ABP.TPLMS.Web.Mvc”项目中的Controller目录。找到“OrgsController.cs”文件。以下图。ide

 

具体代码以下:
工具

   [DontWrapResult]
        [HttpPost]
        public string List()
        {           

            PagedOrgResultRequestDto paged = new PagedOrgResultRequestDto();
            paged.MaxResultCount = MAX_COUNT;
            paged.OrgName = Request.Form["Name"].ToString();
            paged.OrgCode = Request.Form["Code"].ToString();
            paged.CustomCode = Request.Form["CustomCode"].ToString();

            var userList = _orgAppService.GetAll(paged).GetAwaiter().GetResult().Items;

            int total = userList.Count;
            var json = JsonEasyUI(userList, total);
            return json;
        }

 

     4. Visual Studio 2017的“解决方案资源管理器”中,找到领域层“ABP.TPLMS.Web.Mvc”项目中的wwwroot目录下的view-resources\Orgs文件夹下,找到Index.js文件,在工具栏(toolbar)中添加查询条件。以下图画框处post

 

       5.在Index.js文件添加一个查询方法Search,代码以下。学习

function Search() {
    var _$form = $('form[name=searchform]');
    var params = _$form.serializeFormToObject();
    $('#dgOrg').treegrid({ queryParams: params });
}
     6.在Visual Studio 2017中按F5运行应用程序。

    7.在浏览器中的地址栏中输入“http://localhost:5000/”,而后输入管理员用户名进行登陆。

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

         9. 接下来,咱们要实现根据查询条件进行查询的功能。Visual Studio 2017的“解决方案资源管理器”中,右键单击“ABP.TPLMS.Application”项目的 “Orgs”文件夹中,找到OrgAppService.cs文件。重写CreateFilteredQuery方法。代码以下。关于GetParentOrgs方法,在这里要说明一点,这个方法的具体做用是找到咱们查询到的组织信息的全部上级组织。这个方法经过递归算法来查找条件当前查询条件的组织信息中的第一条的全部上级组织信息。若是这个方法有缺陷,能够自行修正。若是不调用GetParentOrgs方法,会出现什么结果,能够自行试验。

  protected override IQueryable<Org> CreateFilteredQuery(PagedOrgResultRequestDto input)
        {
            var qry= base.CreateFilteredQuery(input)
                .Where(t=>t.Name.Contains(input.OrgName))
                .Where(t => t.BizCode.Contains(input.OrgCode))
                .Where(t => t.CustomCode.Contains(input.CustomCode));

            List<Org> list = qry.ToList<Org>();

            var qry1 = base.CreateFilteredQuery(input);
            List<Org> listParent = new List<Org>();
            GetParentOrgs(listParent, list[0].ParentId, qry1);
            return qry.Union<Org>(listParent);
        }

        private void GetParentOrgs(List<Org> orgs, int ParentId, IQueryable<Org> listOrgs)
        {
            List<Org> liOrgs = listOrgs.Where(x => x.Id == ParentId).ToList();
            if (liOrgs == null || liOrgs .Count <= 0)
            {

                return;
            }
            else
            {
                for (int i = 0; i < liOrgs.Count; i++)
                {
                    var org = liOrgs[i];
                    if (!orgs.Contains(org))
                    {
                        orgs.Add(org);
                    }                    
                   GetParentOrgs(orgs, org.ParentId, listOrgs);
                }
            }
        }

 

      10. 重复上面的第六、七、8步。而后在“组织名称”查询条件中输入“北”,而后点击“查询”按钮,然而查询出全部货物代码中有“北”的货物信息。以下图。

       11.“海关代码”查询条件中输入“1111”,而后点击“查询”按钮,然而查询出全部“海关代码”中有“1111”的相关组织信息。以下图。

      12.“组织代码”查询条件中输入“B”,而后点击“查询”按钮,然而查询出全部“组织代码”中有“B”的相关组织信息。以下图。

相关文章
相关标签/搜索