abp(net core)+easyui+efcore實作倉儲管理系統目錄
abp(net core)+easyui+efcore實作倉儲管理系統——ABP總體介紹(一) abp(net core)+easyui+efcore實作倉儲管理系統——解決方案介紹(二) abp(net core)+easyui+efcore實作倉儲管理系統——領域層創建物體(三) abp(net core)+easyui+efcore實作倉儲管理系統——定義倉儲并實作 (四) abp(net core)+easyui+efcore實作倉儲管理系統——創建應用服務(五) abp(net core)+easyui+efcore實作倉儲管理系統——展現層實作增刪改查之控制器(六) abp(net core)+easyui+efcore實作倉儲管理系統——展現層實作增刪改查之串列視圖(七) abp(net core)+easyui+efcore實作倉儲管理系統——展現層實作增刪改查之增刪改視圖(八) abp(net core)+easyui+efcore實作倉儲管理系統——展現層實作增刪改查之選單與測驗(九) abp(net core)+easyui+efcore實作倉儲管理系統——使用 WEBAPI實作CURD (十一)abp(net core)+easyui+efcore實作倉儲管理系統——EasyUI前端頁面框架 (十八)
abp(net core)+easyui+efcore實作倉儲管理系統——EasyUI之貨物管理一 (十九) abp(net core)+easyui+efcore實作倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之一(二十七) abp(net core)+easyui+efcore實作倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之三(二十九) abp(net core)+easyui+efcore實作倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之八(三十四) abp(net core)+easyui+efcore實作倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之十(三十六) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之一(三十七) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之二(三十八) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之三存盤程序(三十九) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之四(四十) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之五(四十一) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之六(四十二) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之七(四十三) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之八(四十四) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之九(四十五) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之十(四十六)abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之十一(四十七)
在上面文章abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之十一(四十七) 的學習之后,我們已經實作了入庫單前端的關于實作庫位的功能,今天我們來學習如何在后臺實作添加庫位的功能,接上文,
6. 在Visual Studio 2017的“解決方案資源管理器”中,左鍵單擊“ABP.TPLMS.Application”專案,打開“InStocks\Dto”檔案夾,找到InStockOrderDto與CreateUpdateInStockOrderDto兩個類,分別添加一行代碼,代碼如下,
public List<InStockOrderDetailLocDto> InStockOrderDetailLoc { get; set; }
7. 在Visual Studio 2017的“解決方案資源管理器”中,右鍵單擊在領域層“ABP.TPLMS.Web.Mvc”專案中的Controller目錄, 找到InStockController.cs檔案中輸入如下代碼,通過建構式注入對應的服務類實體,
namespace ABP.TPLMS.Web.Controllers { public class InStockController : TPLMSControllerBase { private readonly IInStockOrderAppService _inSOAppService; private readonly IInStockOrderDetailAppService _inSODAppService; private readonly IInStockOrderDetailLocAppService _inSODLAppService; private const int MAX_COUNT = 1000; public InStockController(IInStockOrderAppService InSOAppService,IInStockOrderDetailAppService InSODAppService, IInStockOrderDetailLocAppService InSODLAppService) { _inSOAppService = InSOAppService; _inSODAppService = InSODAppService; _inSODLAppService = InSODLAppService; } //省略見前文 [HttpPost] [DisableValidation] public string Update(InStockOrderDto iso) { string result = "NO"; List<InStockOrderDetailDto> list = new List<InStockOrderDetailDto>(); List<InStockOrderDetailLocDto> listLoc = new List<InStockOrderDetailLocDto>(); try { string head = Request.Form["postdata"]; if (!string.IsNullOrEmpty(head)) { //把json字串轉換成物件 iso = JsonHelper.Instance.Deserialize<InStockOrderDto>(head); } list = GetDetailDtos(); listLoc = GetDetailLocDtos(); if (iso == null) { return "沒有表頭!"; } iso.InStockOrderDetail = list; iso.InStockOrderDetailLoc = listLoc; result = _inSOAppService.Save(iso); } catch { } if (result == "OK") { return "更新成功!"; } else return "更新失敗!"; } private List<InStockOrderDetailDto> GetDetailDtos() { List<InStockOrderDetailDto> list = new List<InStockOrderDetailDto>(); string deleted = Request.Form["deleted"]; string inserted = Request.Form["inserted"]; string updated = Request.Form["updated"]; // TODO: Add update logic here if (!string.IsNullOrEmpty(deleted)) { //把json字串轉換成物件 List<InStockOrderDetailDto> listDeleted = JsonHelper.Instance.Deserialize<List<InStockOrderDetailDto>>(deleted); //TODO 下面就可以根據轉換后的物件進行相應的操作了 if (listDeleted != null && listDeleted.Count > 0) { list.AddRange(listDeleted.ToArray()); } } if (!string.IsNullOrEmpty(inserted)) { //把json字串轉換成物件 List<InStockOrderDetailDto> listInserted = JsonHelper.Instance.Deserialize<List<InStockOrderDetailDto>>(inserted); if (listInserted != null && listInserted.Count > 0) { list.AddRange(listInserted.ToArray()); } } if (!string.IsNullOrEmpty(updated)) { //把json字串轉換成物件 List<InStockOrderDetailDto> listUpdated = JsonHelper.Instance.Deserialize<List<InStockOrderDetailDto>>(updated); if (listUpdated != null && listUpdated.Count > 0) { list.AddRange(listUpdated.ToArray()); } } return list; } private List<InStockOrderDetailLocDto> GetDetailLocDtos() { List<InStockOrderDetailLocDto> listLoc = new List<InStockOrderDetailLocDto>(); string locDel = Request.Form["locsDeleted"]; string locIns = Request.Form["locsInserted"]; string locUpd = Request.Form["locsUpdated"]; // TODO: Add update logic here if (!string.IsNullOrEmpty(locDel)) { //把json字串轉換成物件 List<InStockOrderDetailLocDto> listLocDeleted = JsonHelper.Instance.Deserialize<List<InStockOrderDetailLocDto>>(locDel); //TODO 下面就可以根據轉換后的物件進行相應的操作了 if (listLocDeleted != null && listLocDeleted.Count > 0) { listLoc.AddRange(listLocDeleted.ToArray()); } } if (!string.IsNullOrEmpty(locIns)) { //把json字串轉換成物件 List<InStockOrderDetailLocDto> listLocInserted = JsonHelper.Instance.Deserialize<List<InStockOrderDetailLocDto>>(locIns); if (listLocInserted != null && listLocInserted.Count > 0) { listLoc.AddRange(listLocInserted.ToArray()); } } if (!string.IsNullOrEmpty(locUpd)) { //把json字串轉換成物件 List<InStockOrderDetailLocDto> listLocUpdated = JsonHelper.Instance.Deserialize<List<InStockOrderDetailLocDto>>(locUpd); if (listLocUpdated != null && listLocUpdated.Count > 0) { listLoc.AddRange(listLocUpdated.ToArray()); } } return listLoc; } [DontWrapResult] public string GetLocs(string Id) { int inodId; int.TryParse(Id, out inodId); PagedInStockDetailLocResultRequestDto paged = new PagedInStockDetailLocResultRequestDto(); paged.MaxResultCount = MAX_COUNT; paged.InStockOrderDetailId = inodId; var iodlList = _inSODLAppService.GetAll(paged).GetAwaiter().GetResult().Items; ; var json = JsonEasyUI(iodlList); return json; } } }
8.在Visual Studio 2017的“解決方案資源管理器”中,右鍵單擊在領域層“ABP.TPLMS.Application”專案中的InStocks目錄, 找到InStockOrderAppService.cs檔案中的Save方法,修改如下,
public string Save(InStockOrderDto iso) { try { CreateUpdateInStockOrderDto order = ObjectMapper.Map<CreateUpdateInStockOrderDto>(iso); foreach (var item in order.InStockOrderDetail) { CreateUpdateInStockOrderDetailDto isod = ObjectMapper.Map<CreateUpdateInStockOrderDetailDto>(item); if (isod.Id > 0) { isodApp.Update(isod); } else isodApp.Create(isod); } foreach (var loc in iso.InStockOrderDetailLoc) { CreateUpdateInStockOrderDetailLocDto isodLoc = ObjectMapper.Map<CreateUpdateInStockOrderDetailLocDto>(loc); if (isodLoc.Id > 0) { isodLocApp.Update(isodLoc); } else isodLocApp.Create(isodLoc); } order.InStockOrderDetail = null; order.InStockOrderDetail = null; order.Status = 1 ; Update(order); } catch (Exception ex) { throw ex; } return "OK"; }
9.在Visual Studio 2017的按F5運行,在主界面的選單中,選擇“Business->入庫管理”選單項,瀏覽器中呈現一個組織資訊串列與五個按鈕,
10.在“入庫單管理”串列中選擇一條入庫單記錄,然后點擊“修改”按鈕,彈出一個入庫單修改界面,在界面中選擇“入庫單明細”,選中一條入庫單明細,如下圖,

11.選中序號為1的庫位資訊,我們發現庫位這個單元格的資料不可見,如下圖,

12. 在單元格上,點擊滑鼠右鍵,在彈出選單中選擇“查看元素”,如下圖,

13.在修改文本框的樣式,添加顏色,單元格中的數字立即可見,如下圖,

14.我們找到“easyui-1.8\themes\bootstrap\easyui.css”檔案,找到1879行,在這個樣式中添加顏色(“color:#100”),如下圖,

15.使用滑鼠左鍵點擊“添加庫位”按鈕,如下圖,

16.對于入庫單的庫位資訊進行修改完成之后,點擊“保存”按鈕,彈出一個“您確認要修改嗎?”對話框,點擊對話框中的“確定”按鈕,然后會出現修改入庫單界面,如下圖,

17.如果修改成功,會有一個“更新成功”的提示資訊,同時更新入庫單管理串列,如下圖,
最后,我發現一個bug,偶爾出現,或是在第一次點保存按鈕時出現,我暫時沒找到原因,如果有知道如何解決的請留言,具體情況如下面三張圖,圖1,我添加了一條庫位資訊,點擊保存按鈕,見圖2,實際上并沒有把這個庫位資訊的資料傳遞到后臺,最后的結果如圖3,

圖1

圖2

圖3
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/30438.html
標籤:.NET Core
上一篇:基于 abp vNext 和 .NET Core 開發博客專案 - 給專案瘦身,讓它跑起來
下一篇:微服務框架 ketchup 介紹
