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 的接口。代码如下。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Abp.Application.Services;
  5. using ABP.TPLMS.InStocks.Dto;
  6.  
  7. namespace ABP.TPLMS.InStocks
  8. {
  9.  
  10. public interface IInStockOrderAppService : IAsyncCrudAppService<//定义了CRUD方法
  11. InStockOrderDto, //用来展示入库单信息
  12. int, //Org实体的主键
  13. PagedInStockResultRequestDto, //获取入库单信息的时候用于分页
  14. CreateUpdateInStockOrderDto, //用于创建入库单信息
  15. CreateUpdateInStockOrderDto> //用于更新入库单信息
  16. {
  17.  
  18. /// <summary>
  19. /// 创建入库单号
  20. /// </summary>
  21. /// <returns></returns>
  22. string GetNo();
  23.  
  24. /// <summary>
  25. /// 保存入库单数据
  26. /// </summary>
  27. /// <param name="iso"></param>
  28. /// <returns></returns>
  29. string Save(InStockOrderDto iso);
  30.  
  31. /// <summary>
  32. /// 导入货物信息
  33. /// </summary>
  34. /// <param name="ids">导入货物信息的ID</param>
  35. /// <param name="No">入库单单号</param>
  36. /// <returns></returns>
  37. string ImportCargo(string ids,string No);
  38.  
  39. /// <summary>
  40. /// 批量删除
  41. /// </summary>
  42. /// <param name="ids">入库单ID集合</param>
  43. /// <returns></returns>
  44. bool DeleteById(string ids);
  45.  
  46. }
  47.  
  48. }

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

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Abp.Application.Services;
  5. using ABP.TPLMS.InStocks.Dto;
  6.  
  7. namespace ABP.TPLMS.InStocks
  8. {
  9.  
  10. public interface IInStockOrderDetailAppService : IAsyncCrudAppService<//定义了CRUD方法
  11.  
  12. InStockOrderDetailDto, //用来展示入库单明细信息
  13. int, //Org实体的主键
  14. PagedInStockDetailResultRequestDto, //获取入库单信息的时候用于分页
  15. CreateUpdateInStockOrderDetailDto, //用于创建入库单明细信息
  16. CreateUpdateInStockOrderDetailDto > //用于更新入库单明细信息
  17. {
  18.  
  19. }
  20. }

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

  1. using Abp.Application.Services;
  2. using ABP.TPLMS.InStocks.Dto;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Text;
  6.  
  7. namespace ABP.TPLMS.InStocks
  8.  
  9. {
  10.  
  11. public interface IInStockOrderDetailLocAppService :IAsyncCrudAppService<//定义了CRUD方法
  12. InStockOrderDetailLocDto, //用来展示入库单中的库位信息
  13. int, //实体的主键
  14. PagedInStockDetailLocResultRequestDto, //获取入库单库位信息的时候用于分页
  15. CreateUpdateInStockOrderDetailLocDto, //用于创建入库单库位信息
  16. CreateUpdateInStockOrderDetailLocDto> //用于更新入库单库位信息
  17.  
  18. {
  19.  
  20. }
  21. }

、实现应用层接口

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

  1. using Abp.Application.Services;
  2. using Abp.Application.Services.Dto;
  3. using Abp.Domain.Repositories;
  4. using Abp.Web.Models;
  5. using ABP.TPLMS.Entitys;
  6. using ABP.TPLMS.InStocks.Dto;
  7. using ABP.TPLMS.IRepositories;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13.  
  14. namespace ABP.TPLMS.InStocks
  15. {
  16.  
  17. public class InStockOrderAppService : AsyncCrudAppService<InStockOrder, InStockOrderDto, int, PagedInStockResultRequestDto,
  18. CreateUpdateInStockOrderDto, CreateUpdateInStockOrderDto>, IInStockOrderAppService
  19. {
  20.  
  21. IInStockOrderRepository rep = null;
  22. IInStockOrderDetailAppService isodApp=null;
  23. IInStockOrderDetailLocAppService isodLocApp = null;
  24. public InStockOrderAppService(IRepository<InStockOrder, int> repository,
  25. IInStockOrderRepository isdRepository,IInStockOrderDetailAppService isodAppSer
  26. ,IInStockOrderDetailLocAppService isodLocAppSer)
  27. : base(repository)
  28. {
  29.  
  30. rep = isdRepository;
  31. isodApp = isodAppSer;
  32. isodLocApp = isodLocAppSer;
  33.  
  34. }
  35.  
  36. public override Task<PagedResultDto<InStockOrderDto>> GetAll(PagedInStockResultRequestDto input)
  37. {
  38.  
  39. return base.GetAll(input);
  40. }
  41.  
  42. [DontWrapResult]
  43. public PagedInStockOrderResultDto<InStockOrderDto> GetAllInStockOrders(PagedInStockResultRequestDto input)
  44. {
  45. PagedInStockOrderResultDto<InStockOrderDto> inSOs = new PagedInStockOrderResultDto<InStockOrderDto>();
  46.  
  47. var allOrgs=GetAll(input);
  48. inSOs.Rows = allOrgs.Result.Items;
  49. inSOs.Total = allOrgs.Result.TotalCount;
  50. return inSOs;
  51. }
  52.  
  53. protected override IQueryable<InStockOrder> CreateFilteredQuery(PagedInStockResultRequestDto input)
  54. {
  55.  
  56. var qry= base.CreateFilteredQuery(input)
  57. .Where(t=>t.OwnerName.Contains(input.OwnerName==null?string.Empty:input.OwnerName))
  58. .Where(t => t.No.Contains(input.No == null ? string.Empty : input.No))
  59.  
  60. .Where(t => t.CreationTime>input.BeginTime)
  61. .Where(t => t.CreationTime<input.EndTime);
  62. return qry;
  63.  
  64. }
  65.  
  66. [DontWrapResult]
  67. public string GetNo()
  68. {
  69.  
  70. string no = rep.GetNo("GDE");
  71. return no;
  72. }
  73.  
  74. [DontWrapResult]
  75. public string ImportCargo(string ids,string No)
  76. {
  77.  
  78. try
  79. {
  80.  
  81. //导入货物信息
  82. rep.ImportCargo(ids, No);
  83. }
  84.  
  85. catch (Exception ex)
  86. {
  87. throw ex;
  88. }
  89.  
  90. return "OK";
  91. }
  92.  
  93. public string Save(InStockOrderDto iso)
  94. {
  95.  
  96. try
  97. {
  98.  
  99. CreateUpdateInStockOrderDto order = ObjectMapper.Map<CreateUpdateInStockOrderDto>(iso);
  100. foreach (var item in order.InStockOrderDetail)
  101. {
  102. CreateUpdateInStockOrderDetailDto isod = ObjectMapper.Map<CreateUpdateInStockOrderDetailDto>(item);
  103. isodApp.Update(isod);
  104. }
  105.  
  106. order.InStockOrderDetail = null;
  107. order.Status = ;
  108.  
  109. Update(order);
  110. }
  111. catch (Exception ex)
  112. {
  113. throw ex;
  114.  
  115. }
  116. return "OK";
  117. }
  118.  
  119. public bool DeleteById(string Ids)
  120. {
  121. var idList = Ids.Split(',');
  122. bool result = true;
  123. try
  124. {
  125.  
  126. foreach (var id in idList)
  127. {
  128. int.TryParse(id, out int intId);
  129. var iso = GetEntityByIdAsync(intId).GetAwaiter().GetResult();
  130. PagedInStockDetailResultRequestDto PagedDetail = new PagedInStockDetailResultRequestDto
  131. {
  132. InStockNo = iso.No
  133. };
  134.  
  135. var isods = isodApp.GetAll(PagedDetail).GetAwaiter().GetResult();
  136. foreach (var dod in isods.Items)
  137. {
  138.  
  139. PagedInStockDetailLocResultRequestDto PagedLoc = new PagedInStockDetailLocResultRequestDto
  140. {
  141. InStockOrderDetailId = dod.Id
  142. };
  143.  
  144. var isodLocs = isodLocApp.GetAll(PagedLoc).GetAwaiter().GetResult();
  145. foreach (var loc in isodLocs.Items)
  146. {
  147. isodLocApp.Delete(loc);
  148. }
  149. isodApp.Delete(dod);
  150. }
  151.  
  152. InStockOrderDto order = ObjectMapper.Map<InStockOrderDto>(iso);
  153. Delete(order);
  154. }
  155. }
  156. catch (Exception ex)
  157. {
  158. result = false;
  159. throw ex;
  160. }
  161. return result;
  162. }
  163. }
  164. }

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

  1. using Abp.Application.Services;
  2. using Abp.Application.Services.Dto;
  3. using Abp.Domain.Repositories;
  4. using Abp.Web.Models;
  5. using ABP.TPLMS.Entitys;
  6. using ABP.TPLMS.InStocks.Dto;
  7. using ABP.TPLMS.IRepositories;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Data;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14.  
  15. namespace ABP.TPLMS.InStocks
  16. {
  17.  
  18. public class InStockOrderDetailAppService : AsyncCrudAppService<InStockOrderDetail
    , InStockOrderDetailDto, int , PagedInStockDetailResultRequestDto,
  19. CreateUpdateInStockOrderDetailDto, CreateUpdateInStockOrderDetailDto>
    , IInStockOrderDetailAppService
  20. {
  21.  
  22. public InStockOrderDetailAppService( IRepository<InStockOrderDetail, int> repository)
  23. : base(repository)
  24. {
  25.  
  26. }
  27.  
  28. protected override IQueryable<InStockOrderDetail> CreateFilteredQuery(
    PagedInStockDetailResultRequestDto input)
  29. {
  30.  
  31. var qry = base.CreateFilteredQuery(input)
  32. .Where(t => t.InStockNo == input.InStockNo);
  33. return qry;
  34. }
  35. }
  36. }

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

  1. using Abp.Application.Services;
  2. using Abp.Application.Services.Dto;
  3. using Abp.Domain.Repositories;
  4. using Abp.Web.Models;
  5. using ABP.TPLMS.Entitys;
  6. using ABP.TPLMS.InStocks.Dto;
  7. using ABP.TPLMS.IRepositories;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Data;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14.  
  15. namespace ABP.TPLMS.InStocks
  16. {
  17.  
  18. public class InStockOrderDetailLocAppService : AsyncCrudAppService<InStockOrderDetailLoc
    , InStockOrderDetailLocDto, int, PagedInStockDetailLocResultRequestDto,
    CreateUpdateInStockOrderDetailLocDto, CreateUpdateInStockOrderDetailLocDto>
    , IInStockOrderDetailLocAppService
  19. {
  20.  
  21. public InStockOrderDetailLocAppService( IRepository<InStockOrderDetailLoc, int> repository)
  22. : base(repository)
  23. {
  24.  
  25. }
  26.  
  27. protected override IQueryable<InStockOrderDetailLoc> CreateFilteredQuery(
    PagedInStockDetailLocResultRequestDto input)
  28. {
  29.  
  30. var qry = base.CreateFilteredQuery(input)
  31. .Where(t => t.InStockOrderDetailId == input.InStockOrderDetailId);
  32. return qry;
  33.  
  34. }
  35. }
  36. }

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实现仓储管理系统——出库管理之一(四十九)

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

随机推荐

  1. LeetCode Day 1

    目录 1.TwoSum 2.AddTwoNumbers 4.FindMedianSortedArrays 1.TwoSum 给定一个整数数组nums和一个目标值 target,请你在该数组中找出和为目 ...

  2. timber|stain|compensate|

    N-UNCOUNT 木材;原木;树木:林木Timber is wood that is used for building houses and making furniture. You can a ...

  3. win10安装3DMAX失败,怎么强力卸载删除注册表并重新安装

    一些搞设计的朋友在win10系统下安装3DMAX失败或提示已安装,也有时候想重新安装3DMAX的时候会出现本电脑windows系统已安装3DMAX,你要是不留意直接安装3DMAX,只会安装3DMAX的 ...

  4. mysql表关联问题(第一卷:外键1对多之1)

    表关联的问题在开发中是必不可少的,现在我先简单的谈谈我的学习经验.先来说一下外键一对多的问题. 步骤1:准备数据: (1)设计模拟场景: 一个游戏为了测试游戏的运行情况,招来了一批用户来试玩,现需要录 ...

  5. springdatajpa 认识以及使用方式

    1.spingdatajpa是什么? Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套JPA应用框架(即上述的:JPA的实现产品),可使开发者用极简 ...

  6. js mvvm:闲来无事,实现一个只具最基本数据双向绑定的mvvm

    近期项目内用knockoutjs. 想模拟实现数据双向绑定的基本功能. 只具有最基本的功能,且很多细节未曾考虑,也未优化精简. 能想到的缺少的模块 1事件监听,自定义访问器事件 2模版 3父子级 编码 ...

  7. 关于使用gitlab协同开发提交代码步骤

    记录使用gitlab协同开发时从自己的分支向master分支提交代码的步骤: 环境:安装了git和TortoiseGit(git的可视化工具) 1.首先切换到自己的分支(如果不在自己的分支) 2.gi ...

  8. JavaScript对象的几种创建方式与优缺点

    JavaScript中常见的几种创建对象的方式有:Object构造函数模式.对象字面量模式.工厂模式.自定义构造函数模式.构造函数加原型组合模式:他们各自有各自的优缺点和使用场景. 1. Object ...

  9. Numpy入门(三):Numpy概率模块和线性代数模块

    Numpy中经常使用到的两个模块是概率模块和线性代数模块,random 和 linalg 两个模块. 概率模块 产生二项分布的随机数:np.random.binomial(n,p,size=-),其中 ...

  10. python爬取许多图片的代码

    from bs4 import BeautifulSoup import requests import os os.makedirs('./img/', exist_ok=True) URL = & ...