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. Infor EAM:注重行业属性,实现对轨道交通线性资产的可视化管理

    Infor EAM:注重行业属性,实现对轨道交通线性资产的可视化管理 企业得利,一要开源,二要节流.而企业资产管理的目的,也正是从资产的角度出发,一方面通过相关资源与活动的合理安排提高设备可利用率.增 ...

  2. hystrix文档翻译之运维

    hystrix不仅用作工程可靠性还可以用来运维. 这里将会分享一个拥有100+Hystrix命令,40+线程池,每天有100亿次线程请求,2000亿次信号量请求的系统是如何使用hystrix运维的.这 ...

  3. 企业项目实战 .Net Core + Vue/Angular 分库分表日志系统三 | 控制反转搭配简单业务

    教程预览 01 | 前言 02 | 简单的分库分表设计 03 | 控制反转搭配简单业务 04 | 强化设计方案 05 | 完善业务自动创建数据库 06 | 最终篇-通过AOP自动连接数据库-完成日志业 ...

  4. Oracle学习(十四)分表分区

    一.前言 大数据量的查询,不仅查询速度非常慢,而且还会导致数据库经常宕机,在尝试添加索引及查询方式修改后,还有没有更有效的解决方案呢? 分库.分表.分区这些概念咱就应该了解一下. 二.分表 假如一个大 ...

  5. leetcode1558题解【贪心】

    leetcode1558.得到目标数组的最少函数调用次数 题目链接 算法 贪心 时间复杂度O(nlogN),N为数组中最大的那个数. 1.题意就是给定一个函数,该函数有两种功能,一种就是将数组中的所有 ...

  6. 小伙伴想学Jenkins自动构建发布项目,我:安排上了!!

    写在前面 趁着十一长假,很多小伙伴都在悄悄学习,有些是为了能够顺利通过面试,进入大厂升职加薪.有些则是为了进一步巩固和提高自己的专业技能,希望有朝一日能过成为互联网架构师乃至技术专家.这不,就有小伙伴 ...

  7. matlab中卷积convolution与filter用法

    转自:https://blog.csdn.net/dkcgx/article/details/46652021 转自:https://blog.csdn.net/Reborn_Lee/article/ ...

  8. 如何快速构建React组件库

    前言 俗话说:"麻雀虽小,五脏俱全",搭建一个组件库,知之非难,行之不易,涉及到的技术方方面面,犹如海面风平浪静,实则暗礁险滩,处处惊险- 目前团队内已经有较为成熟的 Vue 技术 ...

  9. Azure Media Player Logo隐藏和 视频字幕样式

    <style type="text/css"> /**hide mediaplayer logo*/ .amp-default-skin .amp-content-ti ...

  10. linux网卡驱动程序架构

    以cs89x0网卡驱动为例: