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

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

 abp(net core)+easyui+efcore实现仓储管理系统——出库管理之三(五十一)

 
 

我们已经在ABP中实现了如何调用存储过程的方法 ,接下来我们要来实现应用层的具体代码。

六、定义应用层接口

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

using System;
using System.Collections.Generic;
using System.Text;
using Abp.Application.Services;
using ABP.TPLMS.OutStocks.Dto; namespace ABP.TPLMS.OutStocks
{ public interface IOutStockOrderAppService : IAsyncCrudAppService<//定义了CRUD方法
OutStockOrderDto, //用来展示出库单信息
int, //出库单实体的主键
PagedOutStockResultRequestDto, //获取出库单信息的时候用于分页
CreateUpdateOutStockOrderDto, //用于创建出库单信息
CreateUpdateOutStockOrderDto> //用于更新出库单信息
{ /// <summary>
/// 创建单号 /// </summary>
/// <returns></returns> string GetNo();
/// <summary>
/// 保存出库单数据 /// </summary>
/// <param name="iso"></param>
/// <returns></returns>
string Save(OutStockOrderDto iso); /// <summary>
/// 导入货物信息 /// </summary>
/// <param name="ids">导出库货物信息的ID</param>
/// <param name="No">出库单单号</param>
/// <returns></returns>
string ImportInStockDetail(string ids,string No); /// <summary>
/// 批量删除
/// </summary>
/// <param name="ids">出库单ID集合</param>
/// <returns></returns>
bool DeleteById(string ids); } }

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

using System;
using System.Collections.Generic;
using System.Text;
using Abp.Application.Services;
using ABP.TPLMS.OutStocks.Dto; namespace ABP.TPLMS.OutStocks
{ public interface IOutStockOrderDetailAppService : IAsyncCrudAppService<//定义了CRUD方法
OutStockOrderDetailDto, //用来展示出库单明细信息
int, //出库单实体的主键
PagedOutStockDetailResultRequestDto, //获取出库单信息的时候用于分页
CreateUpdateOutStockOrderDetailDto, //用于创建出库单明细信息
CreateUpdateOutStockOrderDetailDto > //用于更新出库单明细信息 { } }

七、实现OutStockOrderAppService

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

using Abp.Application.Services;
using Abp.Application.Services.Dto;
using Abp.Domain.Repositories;
using Abp.Web.Models;
using ABP.TPLMS.Entitys;
using ABP.TPLMS.OutStocks.Dto;
using ABP.TPLMS.IRepositories;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ABP.TPLMS.OutStocks
{
public class OutStockOrderAppService : AsyncCrudAppService<OutStockOrder, OutStockOrderDto,
int, PagedOutStockResultRequestDto,
CreateUpdateOutStockOrderDto, CreateUpdateOutStockOrderDto>,
IOutStockOrderAppService {
IOutStockOrderRepository rep = null;
IOutStockOrderDetailAppService outDetApp=null; public OutStockOrderAppService(IRepository<OutStockOrder, int> repository,
IOutStockOrderRepository isdRepository,IOutStockOrderDetailAppService outodAppser) : base(repository)
{
rep = isdRepository;
outDetApp = outodAppser;
} public override Task<PagedResultDto<OutStockOrderDto>> GetAll
(PagedOutStockResultRequestDto input)
{ return base.GetAll(input);
} [DontWrapResult]
public PagedOutStockOrderResultDto<OutStockOrderDto> GetAllOutStockOrders
(PagedOutStockResultRequestDto input)
{ PagedOutStockOrderResultDto<OutStockOrderDto> outODs =
new PagedOutStockOrderResultDto<OutStockOrderDto>(); var allOrgs=GetAll(input); outODs.Rows = allOrgs.Result.Items;
outODs.Total = allOrgs.Result.TotalCount;
return outODs;
} protected override IQueryable<OutStockOrder> CreateFilteredQuery
(PagedOutStockResultRequestDto 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("ODO");
return no;
} [DontWrapResult]
public string ImportInStockDetail(string ids,string No)
{
try
{ //导入货物信息
rep.ImportInStockOrder(ids, No);
}
catch (Exception ex)
{ throw ex;
} return "OK";
} public string Save(OutStockOrderDto iso)
{ try
{
CreateUpdateOutStockOrderDto order =
ObjectMapper.Map<CreateUpdateOutStockOrderDto>(iso);
foreach (var item in order.OutStockOrderDetail)
{ CreateUpdateOutStockOrderDetailDto outODet =
ObjectMapper.Map<CreateUpdateOutStockOrderDetailDto>(item);
if (outODet.Id > 0)
{
outDetApp.Update(outODet);
}
else
outDetApp.Create(outODet); } order.OutStockOrderDetail = 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 odo = GetEntityByIdAsync(intId).GetAwaiter().GetResult();
PagedOutStockDetailResultRequestDto PagedDetail =
new PagedOutStockDetailResultRequestDto
{ InStockNo = odo.No
}; var isods = outDetApp.GetAll(PagedDetail).GetAwaiter().GetResult(); OutStockOrderDto order = ObjectMapper.Map<OutStockOrderDto>(odo); Delete(order);
}
}
catch (Exception ex)
{
result = false;
throw ex; }
return result; }
} }

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

 using Abp.Application.Services;
using Abp.Application.Services.Dto;
using Abp.Domain.Repositories;
using Abp.Web.Models;
using ABP.TPLMS.Entitys;
using ABP.TPLMS.OutStocks.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.OutStocks
{ public class OutStockOrderDetailAppService : AsyncCrudAppService<OutStockOrderDetail
, OutStockOrderDetailDto, int
, PagedOutStockDetailResultRequestDto,
CreateUpdateOutStockOrderDetailDto, CreateUpdateOutStockOrderDetailDto>
, IOutStockOrderDetailAppService
{
public OutStockOrderDetailAppService( IRepository<OutStockOrderDetail, int> repository)
: base(repository)
{
} protected override IQueryable<OutStockOrderDetail>
CreateFilteredQuery(PagedOutStockDetailResultRequestDto input)
{
var qry = base.CreateFilteredQuery(input)
.Where(t => t.OutStockNo == input.OutStockNo);
return qry;
} } }
 
 

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实现仓储管理系统——使用 WEBAPI实现CURD (十二)

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

随机推荐

  1. hystrix源码小贴士之Servo Publisher

    HystrixServoMetricsPublisher 继承HystrixMetricsPublisher,创建HystrixServoMetricsPublisherCommand.Hystrix ...

  2. Java新特性:数据类型可以扔掉了?

    在很久很久以前,我们写代码时要慎重的考虑变量的数据类型,比如下面这些: 枚举:尽管在 JDK 5 中增加了枚举类型,但是 Class 文件常量池的 CONSTANT_Class_info 类型常量并没 ...

  3. git修改未push和已经push的注释信息

    修改还未push的注释: git commit --amend 修改后保存退出. 刚刚push到远端还没有人其他人下载或改动的: git commit --amend1进入修改页面修改注释信息,修改后 ...

  4. python爬取链家二手房信息,确认过眼神我是买不起的人

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  5. Ubuntu中发生git Connection refused

    今天在提交代码的时候: ssh: connect to host github.com port 22: Connection refused fatal: 无法读取远程仓库. 请确认您有正确的访问权 ...

  6. Vue 组件的基础介绍

    1.组件定义 1.定义组件并引用 2.父组件向子组件传值 3.子组件向父组件传值 # 组件间传值:vuex (https://www.cnblogs.com/xiaonq/p/9697921.html ...

  7. SpringMVC自定义日期转换器

    一.创建自定义日期转换器类 1 public class StringToDateConverter implements Converter<String,Date> { 2 @Over ...

  8. 玩命学JVM(二)—类加载机制

    前言 Java程序运行图: 上一篇玩命学JVM(一)-认识JVM和字节码文件我们简单认识了 JVM 和字节码文件.那JVM是如何使用字节码文件的呢?从上图清晰地可以看到,JVM 通过类加载器完成了这一 ...

  9. DOJO dataGrid 单击单元格选中行

    onCellClick: lang.hitch(this, function(event){ //单元格单击事件 var grid = dijit.byId("__geodisa_grid& ...

  10. 我竟在arm汇编除法算法里找到了leetcode某道题的解法

    今天讲讲arm汇编中除法的底层实现.汇编代码本身比较长了,如需参考请直接拉到文末. 下面我直接把arm的除法算法的汇编代码转译成C语言的代码贴出来,并进行解析. 因为篇幅有限,所以在此只解析无符号整型 ...