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. EAM在不同行业的应用

    EAM在不同行业的应用 EAM从出现至今,已让很多资产密集型企业受益,甚至在一些行业领域里已经是公认的.不可或缺的管理方案,比如电力行业.轨道交通行业等.但由于不同行业或者企业业务类型不同,导致了资产 ...

  2. 在思科三层交换机上配置DHCP,不同网段/VLAN间互通

    摘要: 描述:在三层交换机上配置DHCP,实现DHCP为PC1/PC3分配192.168.1.X网段:实现DHCP为PC2/PC4分配192.168.2.X网段:并且各个PC间要可以互相通信.(文末附 ...

  3. 跟我一起学.NetCore之路由的最佳实现

    前言 路由,这词绝对不陌生,不管在前端还是后端都经常提到,而这节不说其他,就聊.NetCore的路由:在之前的Asp.Net MVC 中,路由算是面试时必问的考点,可见其重要性,它的主要作用是映射UR ...

  4. ES6 常用总结——第二章(字符串的扩展)

    ES6为字符串添加了遍历器接口,使得字符串可以被for...of循环遍历. for (let codePoint of 'foo') { console.log(codePoint)} // &quo ...

  5. .netcore 3.1 C# 微信小程序发送订阅消息

    一.appsettings.json定义小程序配置信息 "WX": { "AppId": "wx88822730803edd44", &qu ...

  6. JVM学习(四)JVM调优

    一.调优命令 Sun JDK监控和故障处理命令有jps.jstat.jmap.jhat.jstack.jinfo jps,JVM Process Status Tool,显示指定系统内所有的HotSp ...

  7. hadoop分布式格式化时出现异常java.net.unknownhostexception

    当搭建好分布式集群后,准备使用命令格式化时 hdfs namenode format 在日志的最后一行出现 java.net.unknownhostexception的异常,通常是你的主机名没有配置好 ...

  8. Spring 集成 RabbitMQ

    pom.xml <dependency> <groupId>org.springframework.amqp</groupId> <artifactId> ...

  9. JAVA并发笔记

    重入锁的特性, 避免死锁, 如果有锁的话, 不用重新加锁, 直接增加锁的次数.. Synchronize, ReentrantLock都是重入锁. 读写锁, ReentrantReadWriteLoc ...

  10. 使用模拟退火算法优化 Hash 函数

    背景 现有个处理股票行情消息的系统,其架构如下: 由于数据量巨大,系统中启动了 15 个线程来消费行情消息.消息分配的策略较为简单:对 symbol 的 hashCode 取模,将消息分配给其中一个线 ...