abp(net core)+easyui+efcore实现仓储管理系统——入库管理之四(四十)
abp(net core)+easyui+efcore实现仓储管理系统目录
abp(net core)+easyui+efcore实现仓储管理系统——EasyUI前端页面框架 (十八)
abp(net core)+easyui+efcore实现仓储管理系统——ABP WebAPI与EasyUI结合增删改查之八(三十四)
在上一篇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 = ;
- 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;
- }
- }
- }
abp(net core)+easyui+efcore实现仓储管理系统——入库管理之四(四十)的更多相关文章
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之六(四十二)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之八(四十四)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之五(四十一)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之七(四十三)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之九(四十五)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十(四十六)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十一(四十七)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十二(四十八)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- abp(net core)+easyui+efcore实现仓储管理系统——出库管理之一(四十九)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
随机推荐
- LeetCode Day 1
目录 1.TwoSum 2.AddTwoNumbers 4.FindMedianSortedArrays 1.TwoSum 给定一个整数数组nums和一个目标值 target,请你在该数组中找出和为目 ...
- timber|stain|compensate|
N-UNCOUNT 木材;原木;树木:林木Timber is wood that is used for building houses and making furniture. You can a ...
- win10安装3DMAX失败,怎么强力卸载删除注册表并重新安装
一些搞设计的朋友在win10系统下安装3DMAX失败或提示已安装,也有时候想重新安装3DMAX的时候会出现本电脑windows系统已安装3DMAX,你要是不留意直接安装3DMAX,只会安装3DMAX的 ...
- mysql表关联问题(第一卷:外键1对多之1)
表关联的问题在开发中是必不可少的,现在我先简单的谈谈我的学习经验.先来说一下外键一对多的问题. 步骤1:准备数据: (1)设计模拟场景: 一个游戏为了测试游戏的运行情况,招来了一批用户来试玩,现需要录 ...
- springdatajpa 认识以及使用方式
1.spingdatajpa是什么? Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套JPA应用框架(即上述的:JPA的实现产品),可使开发者用极简 ...
- js mvvm:闲来无事,实现一个只具最基本数据双向绑定的mvvm
近期项目内用knockoutjs. 想模拟实现数据双向绑定的基本功能. 只具有最基本的功能,且很多细节未曾考虑,也未优化精简. 能想到的缺少的模块 1事件监听,自定义访问器事件 2模版 3父子级 编码 ...
- 关于使用gitlab协同开发提交代码步骤
记录使用gitlab协同开发时从自己的分支向master分支提交代码的步骤: 环境:安装了git和TortoiseGit(git的可视化工具) 1.首先切换到自己的分支(如果不在自己的分支) 2.gi ...
- JavaScript对象的几种创建方式与优缺点
JavaScript中常见的几种创建对象的方式有:Object构造函数模式.对象字面量模式.工厂模式.自定义构造函数模式.构造函数加原型组合模式:他们各自有各自的优缺点和使用场景. 1. Object ...
- Numpy入门(三):Numpy概率模块和线性代数模块
Numpy中经常使用到的两个模块是概率模块和线性代数模块,random 和 linalg 两个模块. 概率模块 产生二项分布的随机数:np.random.binomial(n,p,size=-),其中 ...
- python爬取许多图片的代码
from bs4 import BeautifulSoup import requests import os os.makedirs('./img/', exist_ok=True) URL = & ...