diff --git a/ZR.Admin.WebApi/Controllers/BaseController.cs b/ZR.Admin.WebApi/Controllers/BaseController.cs index e202e809..5aa0e5f6 100644 --- a/ZR.Admin.WebApi/Controllers/BaseController.cs +++ b/ZR.Admin.WebApi/Controllers/BaseController.cs @@ -202,5 +202,8 @@ namespace ZR.Admin.WebApi.Controllers return (sFileName, fullPath); } + + + } } diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmMaterialController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmMaterialController.cs index 5f9e3545..6cab4e03 100644 --- a/ZR.Admin.WebApi/Controllers/mes/wms/WmMaterialController.cs +++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmMaterialController.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Mvc; +using System.Collections.Generic; using ZR.Admin.WebApi.Extensions; using ZR.Admin.WebApi.Filters; using ZR.Model.MES.wms; @@ -116,6 +117,68 @@ namespace ZR.Admin.WebApi.Controllers return SUCCESS(nowProduction); } + [HttpGet("download_template")] + [Log(Title = "下载物料清单模版", BusinessType = BusinessType.EXPORT, IsSaveRequestData = true, IsSaveResponseData = false)] + [AllowAnonymous] //不需要授权 就可以访问 + public IActionResult DownloadTemplate() + { + (string, string) result = DownloadImportTemplate("物料清单模版");//返回文件名和路径 + return ExportExcel(result.Item2, result.Item1); + } + + + [HttpGet("importData")] + [Log(Title = "物料清单批量导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false, IsSaveResponseData = true)] + [AllowAnonymous] //不需要授权 就可以访问 + public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile, bool updateSupport) + { + + //1.0 读取excel 文件 保存在指定位置 + IWebHostEnvironment webHostEnvironment = (IWebHostEnvironment)App.ServiceProvider.GetService(typeof(IWebHostEnvironment)); + string sFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + formFile.FileName; + string target = Path.Combine(webHostEnvironment.WebRootPath, "wmmaterial", sFileName); + if (!Directory.Exists(Path.Combine(webHostEnvironment.WebRootPath, "wmmaterial"))) + { + // 如果目录不存在就创建 + Directory.CreateDirectory(Path.Combine(webHostEnvironment.WebRootPath, "wmmaterial")); + + } + //2.0 解析 excel + + + using (var stream = formFile.OpenReadStream()) + { + FileStream targetFileStream = new FileStream(target, FileMode.Create, FileAccess.Write); + + byte[] buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0) + { + targetFileStream.Write(buffer, 0, bytesRead); + } + + + //IWorkbook workbook = new XSSFWorkbook(stream); + //ISheet sheet = workbook.GetSheetAt(0); // 读取第一个工作表 + + //for (int i = 0; i <= sheet.LastRowNum; i++) + //{ + // IRow row = sheet.GetRow(i); + // if (row != null) + // { + // for (int j = 0; j < row.LastCellNum; j++) + // { + // Console.Write(row.GetCell(j) + "\t"); + // } + // Console.WriteLine(); + // } + //} + + } + + + return null; + } diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs index a2fd9413..d6e8284e 100644 --- a/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs +++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs @@ -203,7 +203,7 @@ namespace ZR.Admin.WebApi.Controllers return SUCCESS(null); } - (int, int) data = _WmOutOrderService.DoMaterialOut(doMaterialOut, HttpContext.GetName()); + (int, int) data = _WmOutOrderService.DoMaterialOut(doMaterialOut, "HttpContext.GetName()"); return SUCCESS(data); } @@ -233,13 +233,13 @@ namespace ZR.Admin.WebApi.Controllers /// 出库单号 /// [HttpGet("checkProductionOut")] - public IActionResult CheckProductionOut( string parnumber,string production_packcode = "", string shipment_num = "") + public IActionResult CheckProductionOut( string partnumber,string production_packcode = "", string shipment_num = "") { - if(string.IsNullOrEmpty(parnumber)) { + if(string.IsNullOrEmpty(partnumber)) { return ToResponse(new ApiResult(200, "请选择物料号", false)); } string msg = ""; - msg = _WmOutOrderService.CheckProductionOut(parnumber,production_packcode, shipment_num); + msg = _WmOutOrderService.CheckProductionOut(partnumber, production_packcode, shipment_num); if(msg !="ok") { return ToResponse(new ApiResult(200, msg, false)); @@ -247,9 +247,7 @@ namespace ZR.Admin.WebApi.Controllers else { return ToResponse(new ApiResult(200, msg, true)); - } - - + } } } diff --git a/ZR.Admin.WebApi/wwwroot/ImportTemplate/物料清单模版.xls b/ZR.Admin.WebApi/wwwroot/ImportTemplate/物料清单模版.xls new file mode 100644 index 00000000..8fa7b1c3 Binary files /dev/null and b/ZR.Admin.WebApi/wwwroot/ImportTemplate/物料清单模版.xls differ diff --git a/ZR.Admin.WebApi/wwwroot/ImportTemplate/物料清单模版.xlsx b/ZR.Admin.WebApi/wwwroot/ImportTemplate/物料清单模版.xlsx new file mode 100644 index 00000000..a5e75782 Binary files /dev/null and b/ZR.Admin.WebApi/wwwroot/ImportTemplate/物料清单模版.xlsx differ diff --git a/ZR.Service/mes/wms/WmOutOrderService.cs b/ZR.Service/mes/wms/WmOutOrderService.cs index 9608d4f6..3f7df174 100644 --- a/ZR.Service/mes/wms/WmOutOrderService.cs +++ b/ZR.Service/mes/wms/WmOutOrderService.cs @@ -448,40 +448,38 @@ namespace ZR.Service.mes.wms { //TODO 保证 同一出货单下 同一物料下最早批次 // 取出同一出货单下 同一物料下 未满箱的最早批次 - WmOutOrderPlan plan_item =Context.Queryable() + string short_patch = item.Split("_")[0]; + WmOutOrderPlan plan_item = Context.Queryable() .Where(it => it.FkOutOrderId == shipnumber) - .Where(it => it.Patchcode == item).First(); - var plan_earliest = Context.Queryable() + .Where(it => it.Patchcode.Contains(short_patch)).First(); + if (plan_item != null) + { + var plan_earliest = Context.Queryable() .Where(it => it.FkOutOrderId == shipnumber) - .Where(it=>it.MaterialCode== plan_item.MaterialCode) - .Where(it=>it.PackageNum>it.ReceivedPackNum) - .OrderBy(it=>it.Outorder) + .Where(it => it.MaterialCode == plan_item.MaterialCode) + .Where(it => it.PackageNum > it.ReceivedPackNum) + .OrderBy(it => it.Outorder) .First(); - //已经出库完成,没有可以出库的了 - if(plan_earliest != null) - { - return (100, 100); - } - if (plan_earliest.Id == plan_earliest.Id) - { - - // TODO 每次出库要出库计划累加 - - Context.Updateable() - .SetColumns(it => it.ReceivedPackNum == it.ReceivedPackNum + 1) - .Where(it => it.FkOutOrderId == shipnumber) - .Where(it => it.Patchcode == item) - .ExecuteCommand(); - - - - - - - UseTran2(() => + //已经出库完成,没有可以出库的了 + if (plan_earliest == null) { + return (100, 100); + } + if (plan_earliest.Id == plan_earliest.Id) + { + + // TODO 每次出库要出库计划累加 + + Context.Updateable() + .SetColumns(it => it.ReceivedPackNum == it.ReceivedPackNum + 1) + .Where(it => it.FkOutOrderId == shipnumber) + .Where(it => it.Patchcode == item) + .ExecuteCommand(); + + WmGoodsOutRecord record = new WmGoodsOutRecord(); record.Id = SnowFlakeSingle.Instance.NextId().ToString(); + WmGoodsNowProduction nowProduction = Context.Queryable() .Where(it => it.PackageCodeClient == item).First(); @@ -507,13 +505,14 @@ namespace ZR.Service.mes.wms } - }); + } + else + { + // 不在最早批次内 + return (200, 200); + + } - } - else - { - // 不在最早批次内 - return (200, 200); }