欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-22 09:43:02
在上一篇abp(net core)+easyui+efcore实现仓储管理系统——入库管理之三存储过程(三十九) 文章中我们学习了如何在ABP中调用存储过程并创建相关的类。接下来我们要来实现调用存储过程,同时实现服务类的编写。 ......

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实现仓储管理系统——展现层实现增删改查之控制器(六)
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实现仓储管理系统——菜单-上 (十六)

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

abp(net core)+easyui+efcore实现仓储管理系统——easyui之货物管理一 (十九)
abp(net core)+easyui+efcore实现仓储管理系统——abp webapi与easyui结合增删改查之一(二十七)
abp(net core)+easyui+efcore实现仓储管理系统——abp webapi与easyui结合增删改查之三(二十九)

abp(net core)+easyui+efcore实现仓储管理系统——abp webapi与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(net core)+easyui+efcore实现仓储管理系统——入库管理之三存储过程(三十九) 文章中我们学习了如何在abp中调用存储过程并创建相关的类。接下来我们要来实现调用存储过程,同时实现应用层。

 

、定义应用层接口

      1 visual studio 2017的“解决方案资源管理器”中,鼠标右键单击“instocks”文件夹,然后选择“添加” > “新建项”,在弹出对话框中选择“接口”。为应用服务定义一个名为 iinstockorderappservice 的接口。代码如下。

using system;
using system.collections.generic;
using system.text;
using abp.application.services;
using abp.tplms.instocks.dto; 

namespace abp.tplms.instocks
{

  public  interface iinstockorderappservice : iasynccrudappservice<//定义了crud方法
             instockorderdto, //用来展示入库单信息
             int, //org实体的主键
             pagedinstockresultrequestdto, //获取入库单信息的时候用于分页
             createupdateinstockorderdto, //用于创建入库单信息
             createupdateinstockorderdto> //用于更新入库单信息
    {

        /// <summary>
        /// 创建入库单号
        /// </summary>
        /// <returns></returns>
        string getno();

        /// <summary>
        /// 保存入库单数据
        /// </summary>
        /// <param name="iso"></param>
        /// <returns></returns>
        string save(instockorderdto iso);

        /// <summary>
        /// 导入货物信息
        /// </summary>
        /// <param name="ids">导入货物信息的id</param>
        /// <param name="no">入库单单号</param>
        /// <returns></returns>
        string importcargo(string ids,string no);

        /// <summary>
        /// 批量删除
        /// </summary>
        /// <param name="ids">入库单id集合</param>
        /// <returns></returns>
        bool deletebyid(string ids);

    }

}

    2.在visual studio 2017的“解决方案资源管理器”中,鼠标右键单击“instocks”文件夹,然后选择“添加” > “新建项”,在弹出对话框中选择“接口”。为应用服务定义一个名为 iinstockorderdetailappservice 的接口。代码如下。

using system;
using system.collections.generic;
using system.text;
using abp.application.services;
using abp.tplms.instocks.dto;

 

namespace abp.tplms.instocks
{

  public  interface iinstockorderdetailappservice : iasynccrudappservice<//定义了crud方法

             instockorderdetaildto, //用来展示入库单明细信息
             int, //org实体的主键
             pagedinstockdetailresultrequestdto, //获取入库单信息的时候用于分页
             createupdateinstockorderdetaildto, //用于创建入库单明细信息
              createupdateinstockorderdetaildto > //用于更新入库单明细信息
    {

    }
}

 

 
     3. visual studio 2017的“解决方案资源管理器”中,鼠标右键单击“instocks”文件夹,然后选择“添加” > “新建项”,在弹出对话框中选择“接口”。为应用服务定义一个名为 iinstockorderdetaillocappservice 的接口。代码如下。

 

using abp.application.services;
using abp.tplms.instocks.dto;
using system;
using system.collections.generic;
using system.text; 

namespace abp.tplms.instocks

{

    public interface iinstockorderdetaillocappservice :iasynccrudappservice<//定义了crud方法
             instockorderdetaillocdto, //用来展示入库单中的库位信息
             int, //实体的主键
             pagedinstockdetaillocresultrequestdto, //获取入库单库位信息的时候用于分页
             createupdateinstockorderdetaillocdto, //用于创建入库单库位信息
             createupdateinstockorderdetaillocdto> //用于更新入库单库位信息

    {

    }
}

 

 

、实现应用层接口

4.在visual studio 2017的“解决方案资源管理器”中,右键单击“instocks”文件夹,然后选择“添加” > “新建项”,在弹出对话框中选择“类”。为应用服务定义一个名为 instockorderappservice 的服务类,实现iinstockorderappservice接口中的方法特别注意在构造函数中定义iinstockorderrepository 接口,方便注入代码如下

using abp.application.services;
using abp.application.services.dto;
using abp.domain.repositories;
using abp.web.models;
using abp.tplms.entitys;
using abp.tplms.instocks.dto;
using abp.tplms.irepositories;
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks; 

namespace abp.tplms.instocks
{

    public class instockorderappservice : asynccrudappservice<instockorder, instockorderdto, int, pagedinstockresultrequestdto,
                            createupdateinstockorderdto, createupdateinstockorderdto>, iinstockorderappservice
    {

        iinstockorderrepository rep = null;
        iinstockorderdetailappservice isodapp=null;
        iinstockorderdetaillocappservice isodlocapp = null;
        public instockorderappservice(irepository<instockorder, int> repository,
            iinstockorderrepository isdrepository,iinstockorderdetailappservice isodappser
            ,iinstockorderdetaillocappservice isodlocappser)
            : base(repository)
        {

            rep = isdrepository;
            isodapp = isodappser;
            isodlocapp = isodlocappser;

        }    

        public override task<pagedresultdto<instockorderdto>> getall(pagedinstockresultrequestdto input)
        {                 

            return base.getall(input);      
  }

        [dontwrapresult]
        public pagedinstockorderresultdto<instockorderdto> getallinstockorders(pagedinstockresultrequestdto input)
        {
            pagedinstockorderresultdto<instockorderdto> insos = new pagedinstockorderresultdto<instockorderdto>();          

            var allorgs=getall(input);
            insos.rows = allorgs.result.items;
            insos.total = allorgs.result.totalcount;
            return insos;
        }      

        protected override iqueryable<instockorder> createfilteredquery(pagedinstockresultrequestdto input)
        {

            var qry= base.createfilteredquery(input)
                .where(t=>t.ownername.contains(input.ownername==null?string.empty:input.ownername))
                 .where(t => t.no.contains(input.no == null ? string.empty : input.no))

                .where(t => t.creationtime>input.begintime)
                .where(t => t.creationtime<input.endtime);
            return qry;

        }

        [dontwrapresult]
        public string getno()
        {

            string no = rep.getno("gde");
            return no;
        }

        [dontwrapresult]
        public string importcargo(string ids,string no)
        {

            try
            {             

                //导入货物信息
                rep.importcargo(ids, no);
            }

            catch (exception ex)
            {
                throw ex;
            }

            return "ok";
        } 

        public string save(instockorderdto iso)
        {

            try
            {

                createupdateinstockorderdto order = objectmapper.map<createupdateinstockorderdto>(iso);
                foreach (var item in order.instockorderdetail)
                {
                    createupdateinstockorderdetaildto isod = objectmapper.map<createupdateinstockorderdetaildto>(item);
                    isodapp.update(isod);
                }

                order.instockorderdetail = null;
                order.status = 1 ;              

                update(order);
            }
            catch (exception ex)
            {
                throw ex;

            }
            return "ok";
        } 

        public bool deletebyid(string ids)
        {
            var idlist = ids.split(',');
            bool result = true;
            try
            {     

            foreach (var id in idlist)
            {
                int.tryparse(id, out int intid);
                var iso = getentitybyidasync(intid).getawaiter().getresult();
                pagedinstockdetailresultrequestdto pageddetail = new pagedinstockdetailresultrequestdto
                {
                    instockno = iso.no
                };

                var isods = isodapp.getall(pageddetail).getawaiter().getresult();
                foreach (var dod in isods.items)
                {

                    pagedinstockdetaillocresultrequestdto pagedloc = new pagedinstockdetaillocresultrequestdto
                    {
                        instockorderdetailid = dod.id
                    };

                    var isodlocs = isodlocapp.getall(pagedloc).getawaiter().getresult();
                    foreach (var loc in isodlocs.items)
                    {
                        isodlocapp.delete(loc);
                    }
                    isodapp.delete(dod);
                }

                instockorderdto order = objectmapper.map<instockorderdto>(iso);
                delete(order);
            }
            }
            catch (exception ex)
            {
                result = false;
                throw ex;
            }
            return result;
        }
    }
}

     5.visual studio 2017的“解决方案资源管理器”中,右键单击“instocks”文件夹,然后选择“添加” > “新建项”,在弹出对话框中选择“类”。为应用服务定义一个名为 instockorderdetailappservice 的服务类,实现iinstockorderdetailappservice接口。代码如下

using abp.application.services;
using abp.application.services.dto;
using abp.domain.repositories;
using abp.web.models;
using abp.tplms.entitys;
using abp.tplms.instocks.dto;
using abp.tplms.irepositories;
using system;
using system.collections.generic;
using system.data;
using system.linq;
using system.text;
using system.threading.tasks;
 

namespace abp.tplms.instocks
{

    public class instockorderdetailappservice : asynccrudappservice<instockorderdetail
, instockorderdetaildto, int , pagedinstockdetailresultrequestdto, createupdateinstockorderdetaildto, createupdateinstockorderdetaildto>
, iinstockorderdetailappservice { public instockorderdetailappservice( irepository<instockorderdetail, int> repository) : base(repository) { } protected override iqueryable<instockorderdetail> createfilteredquery(
pagedinstockdetailresultrequestdto input) { var qry = base.createfilteredquery(input) .where(t => t.instockno == input.instockno); return qry; } } }
   6.在visual studio 2017的“解决方案资源管理器”中,右键单击“instocks”文件夹,然后选择“添加” > “新建项”,在弹出对话框中选择“类”。为应用服务定义一个名为 instockorderdetaillocappservice 的服务类,实现iinstockorderdetaillocappservice接口。代码如下
using abp.application.services;
using abp.application.services.dto;
using abp.domain.repositories;
using abp.web.models;
using abp.tplms.entitys;
using abp.tplms.instocks.dto;
using abp.tplms.irepositories;
using system;
using system.collections.generic;
using system.data;
using system.linq;
using system.text;
using system.threading.tasks; 

namespace abp.tplms.instocks
{

    public class instockorderdetaillocappservice : asynccrudappservice<instockorderdetailloc
, instockorderdetaillocdto, int, pagedinstockdetaillocresultrequestdto,
createupdateinstockorderdetaillocdto, createupdateinstockorderdetaillocdto>
, iinstockorderdetaillocappservice { public instockorderdetaillocappservice( irepository<instockorderdetailloc, int> repository) : base(repository) { } protected override iqueryable<instockorderdetailloc> createfilteredquery(
pagedinstockdetaillocresultrequestdto input) { var qry = base.createfilteredquery(input) .where(t => t.instockorderdetailid == input.instockorderdetailid); return qry; } } }