iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/WmsContainerService.cs
@@ -1,303 +1,303 @@ using Furion.DatabaseAccessor; using Furion.DatabaseAccessor.Extensions; using Furion.DependencyInjection; using Furion.DynamicApiController; using Furion.FriendlyException; using Admin.NET.Core; using Mapster; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System.Linq.Dynamic.Core; using Microsoft.AspNetCore.Http; using System.Text; using System.Web; //using Furion.DatabaseAccessor; //using Furion.DatabaseAccessor.Extensions; //using Furion.DependencyInjection; //using Furion.DynamicApiController; //using Furion.FriendlyException; //using Admin.NET.Core; //using Mapster; //using Microsoft.AspNetCore.Mvc; //using Microsoft.EntityFrameworkCore; //using System.Linq.Dynamic.Core; //using Microsoft.AspNetCore.Http; //using System.Text; //using System.Web; namespace Admin.NET.Application { /// <summary> /// æçä¿¡æ¯æå¡ /// </summary> [ApiDescriptionSettings("èªå·±çä¸å¡", Name = "WmsContainer", Order = 100)] [Route("api/[Controller]")] public class WmsContainerService : IWmsContainerService, IDynamicApiController, ITransient { private readonly IRepository<WmsContainer,MasterDbContextLocator> _wmsContainerRep; private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep; private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep; private readonly ISysExcelTemplateService _sysExcelTemplateService; private readonly static object _lock = new(); //namespace Admin.NET.Application //{ // /// <summary> // /// æçä¿¡æ¯æå¡ // /// </summary> // [ApiDescriptionSettings("èªå·±çä¸å¡", Name = "WmsContainer", Order = 100)] // [Route("api/[Controller]")] // public class WmsContainerService : IWmsContainerService, IDynamicApiController, ITransient // { // private readonly IRepository<WmsContainer,MasterDbContextLocator> _wmsContainerRep; // private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep; // private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep; // private readonly ISysExcelTemplateService _sysExcelTemplateService; // private readonly static object _lock = new(); /// <summary> /// æé 彿° /// </summary> public WmsContainerService( IRepository<WmsContainer,MasterDbContextLocator> wmsContainerRep ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep ,ISysExcelTemplateService sysExcelTemplateService ) { _wmsContainerRep = wmsContainerRep; _sysDictTypeRep = sysDictTypeRep; _sysDictDataRep = sysDictDataRep; _sysExcelTemplateService = sysExcelTemplateService; } // /// <summary> // /// æé 彿° // /// </summary> // public WmsContainerService( // IRepository<WmsContainer,MasterDbContextLocator> wmsContainerRep // ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep // ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep // ,ISysExcelTemplateService sysExcelTemplateService // ) // { // _wmsContainerRep = wmsContainerRep; // _sysDictTypeRep = sysDictTypeRep; // _sysDictDataRep = sysDictDataRep; // _sysExcelTemplateService = sysExcelTemplateService; // } /// <summary> /// å页æ¥è¯¢æçä¿¡æ¯ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpGet("page")] public async Task<PageResult<WmsContainerOutput>> Page([FromQuery] WmsContainerSearch input) { var wmsContainers = await _wmsContainerRep.DetachedEntities .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%")) .Where(input.ContainerType != null, u => u.ContainerType == input.ContainerType) .Where(input.ContainerStatus != null, u => u.ContainerStatus == input.ContainerStatus) .Where(input.SpecLength != null, u => u.SpecLength == input.SpecLength) .Where(input.SpecWidth != null, u => u.SpecWidth == input.SpecWidth) .Where(input.ContainerCategory != null, u => u.ContainerCategory == input.ContainerCategory) .Where(input.WorkShopType != null, u => u.WorkShopType == input.WorkShopType) .OrderBy(PageInputOrder.OrderBuilder<WmsContainerSearch>(input)) .ProjectToType<WmsContainerOutput>() .ToADPagedListAsync(input.PageNo, input.PageSize); return wmsContainers; } // /// <summary> // /// å页æ¥è¯¢æçä¿¡æ¯ // /// </summary> // /// <param name="input"></param> // /// <returns></returns> // [HttpGet("page")] // public async Task<PageResult<WmsContainerOutput>> Page([FromQuery] WmsContainerSearch input) // { // var wmsContainers = await _wmsContainerRep.DetachedEntities // .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%")) // .Where(input.ContainerType != null, u => u.ContainerType == input.ContainerType) // .Where(input.ContainerStatus != null, u => u.ContainerStatus == input.ContainerStatus) // .Where(input.SpecLength != null, u => u.SpecLength == input.SpecLength) // .Where(input.SpecWidth != null, u => u.SpecWidth == input.SpecWidth) // .Where(input.ContainerCategory != null, u => u.ContainerCategory == input.ContainerCategory) // .Where(input.WorkShopType != null, u => u.WorkShopType == input.WorkShopType) // .OrderBy(PageInputOrder.OrderBuilder<WmsContainerSearch>(input)) // .ProjectToType<WmsContainerOutput>() // .ToADPagedListAsync(input.PageNo, input.PageSize); // return wmsContainers; // } /// <summary> /// ä¸å页æ¥è¯¢æçä¿¡æ¯å表 /// </summary> /// <param name="input">æçä¿¡æ¯æ¥è¯¢åæ°</param> /// <returns>(æçä¿¡æ¯)å®ä¾å表</returns> [HttpGet("listNonPage")] public async Task<List<WmsContainerOutput>> ListNonPageAsync([FromQuery] WmsContainerSearchNonPage input) { var pContainerCode = input.ContainerCode?.Trim() ?? ""; var pContainerType = input.ContainerType; var pContainerStatus = input.ContainerStatus; var pSpecLength = input.SpecLength; var pSpecWidth = input.SpecWidth; var pContainerCategory = input.ContainerCategory; var pWorkShopType = input.WorkShopType; var wmsContainers = await _wmsContainerRep.DetachedEntities .Where(!string.IsNullOrEmpty(pContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{pContainerCode}%")) .Where(pContainerType != null, u => u.ContainerType == pContainerType) .Where(pContainerStatus != null, u => u.ContainerStatus == pContainerStatus) .Where(pSpecLength != null, u => u.SpecLength == pSpecLength) .Where(pSpecWidth != null, u => u.SpecWidth == pSpecWidth) .Where(pContainerCategory != null, u => u.ContainerCategory == pContainerCategory) .Where(pWorkShopType != null, u => u.WorkShopType == pWorkShopType) .OrderBy(PageInputOrder.OrderNonPageBuilder(input)) .ProjectToType<WmsContainerOutput>() .ToListAsync(); return wmsContainers; } // /// <summary> // /// ä¸å页æ¥è¯¢æçä¿¡æ¯å表 // /// </summary> // /// <param name="input">æçä¿¡æ¯æ¥è¯¢åæ°</param> // /// <returns>(æçä¿¡æ¯)å®ä¾å表</returns> // [HttpGet("listNonPage")] // public async Task<List<WmsContainerOutput>> ListNonPageAsync([FromQuery] WmsContainerSearchNonPage input) // { // var pContainerCode = input.ContainerCode?.Trim() ?? ""; // var pContainerType = input.ContainerType; // var pContainerStatus = input.ContainerStatus; // var pSpecLength = input.SpecLength; // var pSpecWidth = input.SpecWidth; // var pContainerCategory = input.ContainerCategory; // var pWorkShopType = input.WorkShopType; // var wmsContainers = await _wmsContainerRep.DetachedEntities // .Where(!string.IsNullOrEmpty(pContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{pContainerCode}%")) // .Where(pContainerType != null, u => u.ContainerType == pContainerType) // .Where(pContainerStatus != null, u => u.ContainerStatus == pContainerStatus) // .Where(pSpecLength != null, u => u.SpecLength == pSpecLength) // .Where(pSpecWidth != null, u => u.SpecWidth == pSpecWidth) // .Where(pContainerCategory != null, u => u.ContainerCategory == pContainerCategory) // .Where(pWorkShopType != null, u => u.WorkShopType == pWorkShopType) // .OrderBy(PageInputOrder.OrderNonPageBuilder(input)) // .ProjectToType<WmsContainerOutput>() // .ToListAsync(); // return wmsContainers; // } /// <summary> /// å¢å æçä¿¡æ¯ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost("add")] public async Task Add(AddWmsContainerInput input) { var isExist = await _wmsContainerRep.AnyAsync(u => u.ContainerCode == input.ContainerCode, false); if (isExist) throw Oops.Oh($"å½åæçå·²åå¨ï¼æ°å¢å¤±è´¥ï¼"); // /// <summary> // /// å¢å æçä¿¡æ¯ // /// </summary> // /// <param name="input"></param> // /// <returns></returns> // [HttpPost("add")] // public async Task Add(AddWmsContainerInput input) // { // var isExist = await _wmsContainerRep.AnyAsync(u => u.ContainerCode == input.ContainerCode, false); // if (isExist) throw Oops.Oh($"å½åæçå·²åå¨ï¼æ°å¢å¤±è´¥ï¼"); var ContainerInfo = input.Adapt<WmsContainer>(); ContainerInfo.ContainerStatus = ContainerStatus.KOUXIAN; ContainerInfo.AssetNo = "N/A"; ContainerInfo.ContainerCategory = ContainerCategory.GZP; ContainerInfo.ErpNo = "N/A"; ContainerInfo.IsVirtually = YesOrNot.N; ContainerInfo.WorkShopType = LesWorkShopType.FAPAOCHEJIAN; await _wmsContainerRep.InsertAsync(ContainerInfo); //string ContainerCode = "ZHONGTONG"; //if (input.SpecLength == 1250) //{ // ContainerCode = "YKA"; //} //else if (input.SpecLength == 1050) //{ // ContainerCode = "YKB"; //} //else if (input.SpecLength == 800) //{ // ContainerCode = "YKC"; //} //var wmsContainerModal = await _wmsContainerRep.DetachedEntities.Where(u => u.ContainerCode.Contains(input.ContainerCode)) // .ProjectToType<WmsContainerOutput>() // .OrderByDescending(u => u.ContainerCode) // .FirstOrDefaultAsync(); //int a = 0; //if (wmsContainerModal != null) //{ // a = Convert.ToInt32(wmsContainerModal.ContainerCode.Substring(wmsContainerModal.ContainerCode.Length - 5)); //} //for (int i = a + 1; i <= a + input.Quantity; i++) //{ // var wmsContainer = input.Adapt<WmsContainer>(); // wmsContainer.AssetNo = "N/A"; // wmsContainer.ErpNo = "N/A"; // wmsContainer.IsVirtually = YesOrNot.N; // wmsContainer.IsDeleted = false;; // wmsContainer.ContainerCode = ContainerCode + i.ToString("00000"); // await _wmsContainerRep.InsertAsync(wmsContainer); //} } // var ContainerInfo = input.Adapt<WmsContainer>(); // ContainerInfo.ContainerStatus = ContainerStatus.KOUXIAN; // ContainerInfo.AssetNo = "N/A"; // ContainerInfo.ContainerCategory = ContainerCategory.GZP; // ContainerInfo.ErpNo = "N/A"; // ContainerInfo.IsVirtually = YesOrNot.N; // ContainerInfo.WorkShopType = LesWorkShopType.FAPAOCHEJIAN; // await _wmsContainerRep.InsertAsync(ContainerInfo); // //string ContainerCode = "ZHONGTONG"; // //if (input.SpecLength == 1250) // //{ // // ContainerCode = "YKA"; // //} // //else if (input.SpecLength == 1050) // //{ // // ContainerCode = "YKB"; // //} // //else if (input.SpecLength == 800) // //{ // // ContainerCode = "YKC"; // //} // //var wmsContainerModal = await _wmsContainerRep.DetachedEntities.Where(u => u.ContainerCode.Contains(input.ContainerCode)) // // .ProjectToType<WmsContainerOutput>() // // .OrderByDescending(u => u.ContainerCode) // // .FirstOrDefaultAsync(); // //int a = 0; // //if (wmsContainerModal != null) // //{ // // a = Convert.ToInt32(wmsContainerModal.ContainerCode.Substring(wmsContainerModal.ContainerCode.Length - 5)); // //} // //for (int i = a + 1; i <= a + input.Quantity; i++) // //{ // // var wmsContainer = input.Adapt<WmsContainer>(); // // wmsContainer.AssetNo = "N/A"; // // wmsContainer.ErpNo = "N/A"; // // wmsContainer.IsVirtually = YesOrNot.N; // // wmsContainer.IsDeleted = false;; // // wmsContainer.ContainerCode = ContainerCode + i.ToString("00000"); // // await _wmsContainerRep.InsertAsync(wmsContainer); // //} // } /// <summary> /// å 餿çä¿¡æ¯ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost("delete")] public async Task Delete(DeleteWmsContainerInput input) { var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(u => u.Id == input.Id); await _wmsContainerRep.DeleteAsync(wmsContainer); } // /// <summary> // /// å 餿çä¿¡æ¯ // /// </summary> // /// <param name="input"></param> // /// <returns></returns> // [HttpPost("delete")] // public async Task Delete(DeleteWmsContainerInput input) // { // var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(u => u.Id == input.Id); // await _wmsContainerRep.DeleteAsync(wmsContainer); // } /// <summary> /// æ´æ°æçä¿¡æ¯ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost("edit")] public async Task Update(UpdateWmsContainerInput input) { var isExist = await _wmsContainerRep.AnyAsync(u => u.Id == input.Id, false); if (!isExist) throw Oops.Oh(ErrorCode.D3000); // /// <summary> // /// æ´æ°æçä¿¡æ¯ // /// </summary> // /// <param name="input"></param> // /// <returns></returns> // [HttpPost("edit")] // public async Task Update(UpdateWmsContainerInput input) // { // var isExist = await _wmsContainerRep.AnyAsync(u => u.Id == input.Id, false); // if (!isExist) throw Oops.Oh(ErrorCode.D3000); var wmsContainer = input.Adapt<WmsContainer>(); await _wmsContainerRep.UpdateAsync(wmsContainer,ignoreNullValues:true); } // var wmsContainer = input.Adapt<WmsContainer>(); // await _wmsContainerRep.UpdateAsync(wmsContainer,ignoreNullValues:true); // } /// <summary> /// è·åæçä¿¡æ¯ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpGet("detail")] public async Task<WmsContainerOutput> Get([FromQuery] QueryeWmsContainerInput input) { return (await _wmsContainerRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsContainerOutput>(); } // /// <summary> // /// è·åæçä¿¡æ¯ // /// </summary> // /// <param name="input"></param> // /// <returns></returns> // [HttpGet("detail")] // public async Task<WmsContainerOutput> Get([FromQuery] QueryeWmsContainerInput input) // { // return (await _wmsContainerRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsContainerOutput>(); // } /// <summary> /// è·åæçä¿¡æ¯å表 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpGet("list")] public async Task<List<WmsContainerOutput>> List([FromQuery] WmsContainerInput input) { return await _wmsContainerRep.DetachedEntities.ProjectToType<WmsContainerOutput>().ToListAsync(); } /// <summary> /// Excel模æ¿å¯¼å ¥æçä¿¡æ¯åè½ /// </summary> /// <param name="file">Excelæ¨¡æ¿æä»¶</param> /// <param name="importExcelType">Excelå¯¼å ¥æ¹å¼</param> /// <returns>å¯¼å ¥çè®°å½æ°</returns> [HttpPost("fromExcel")] public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType) { int size = 200; var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsContainer", "v2"); if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002); var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>(); for (var i = 0; i < keys.Length; i++) { keys[i] = keys[i]?.Trim() ?? string.Empty; } ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object>> data, out string sheetName); List<WmsContainerOutput> wmsContainerList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsContainerOutput> dict); List<Dictionary<string, object>> uniqueKeyValueDictList = wmsContainerList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName); var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsContainer>(keys.ToList(), uniqueKeyValueDictList, size); var selectKeys = keys.ToList(); if(!selectKeys.Contains("Id")) selectKeys.Add("Id"); var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsContainer, WmsContainerOutput>(selectKeys); List<WmsContainer> updates = new(); List<WmsContainer> adds = new(); // /// <summary> // /// è·åæçä¿¡æ¯å表 // /// </summary> // /// <param name="input"></param> // /// <returns></returns> // [HttpGet("list")] // public async Task<List<WmsContainerOutput>> List([FromQuery] WmsContainerInput input) // { // return await _wmsContainerRep.DetachedEntities.ProjectToType<WmsContainerOutput>().ToListAsync(); // } // /// <summary> // /// Excel模æ¿å¯¼å ¥æçä¿¡æ¯åè½ // /// </summary> // /// <param name="file">Excelæ¨¡æ¿æä»¶</param> // /// <param name="importExcelType">Excelå¯¼å ¥æ¹å¼</param> // /// <returns>å¯¼å ¥çè®°å½æ°</returns> // [HttpPost("fromExcel")] // public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType) // { // int size = 200; // var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsContainer", "v2"); // if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002); // var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>(); // for (var i = 0; i < keys.Length; i++) // { // keys[i] = keys[i]?.Trim() ?? string.Empty; // } // ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object>> data, out string sheetName); // List<WmsContainerOutput> wmsContainerList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsContainerOutput> dict); // List<Dictionary<string, object>> uniqueKeyValueDictList = wmsContainerList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName); // var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsContainer>(keys.ToList(), uniqueKeyValueDictList, size); // var selectKeys = keys.ToList(); // if(!selectKeys.Contains("Id")) selectKeys.Add("Id"); // var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsContainer, WmsContainerOutput>(selectKeys); // List<WmsContainer> updates = new(); // List<WmsContainer> adds = new(); lock (_lock) { foreach (var filter in filters) { var wmsContainerExistSubList = _wmsContainerRep.Where(filter).Select(selector).ToList(); wmsContainerExistSubList.ForEach(x => { var k = DataConvertUtil.GetKey(x, keys); if (dict.ContainsKey(k)) dict[k].Id = x.Id; }); } foreach (var wmsContainer in wmsContainerList) { if (wmsContainer.Id > 0) { if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsContainer.Adapt<WmsContainer>()); } else { adds.Add(wmsContainer.Adapt<WmsContainer>()); } } // lock (_lock) // { // foreach (var filter in filters) // { // var wmsContainerExistSubList = _wmsContainerRep.Where(filter).Select(selector).ToList(); // wmsContainerExistSubList.ForEach(x => // { // var k = DataConvertUtil.GetKey(x, keys); // if (dict.ContainsKey(k)) dict[k].Id = x.Id; // }); // } // foreach (var wmsContainer in wmsContainerList) // { // if (wmsContainer.Id > 0) // { // if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsContainer.Adapt<WmsContainer>()); // } // else // { // adds.Add(wmsContainer.Adapt<WmsContainer>()); // } // } if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsContainerRep.Update(x)); // if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsContainerRep.Update(x)); var maxId = _wmsContainerRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault(); adds.ForEach(x => x.Id = ++maxId); Db.GetDbContext().Set<WmsContainer>().AddRange(adds); Db.GetDbContext().SaveChanges(); // var maxId = _wmsContainerRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault(); // adds.ForEach(x => x.Id = ++maxId); // Db.GetDbContext().Set<WmsContainer>().AddRange(adds); // Db.GetDbContext().SaveChanges(); } await Task.CompletedTask; return adds.Count; } // } // await Task.CompletedTask; // return adds.Count; // } /// <summary> /// æ ¹æ®çæ¬ä¸è½½æçä¿¡æ¯çExcelå¯¼å ¥æ¨¡æ¿ /// </summary> /// <param name="version">模æ¿çæ¬</param> /// <returns>ä¸è½½çæ¨¡æ¿æä»¶</returns> [HttpGet("downloadExcelTemplate")] public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version) { var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsContainer", version); if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002); var path = Path.Combine(@"\", excelTemplate.TemplateFileName); Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName); var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}å¯¼å ¥æ¨¡æ¿.xlsx", Encoding.GetEncoding("UTF-8")); return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName }; } /// <summary> /// æ ¹æ®æçä¿¡æ¯æ¥è¯¢åæ°å¯¼åºExcel /// </summary> /// <param name="input">æçä¿¡æ¯æ¥è¯¢åæ°</param> /// <returns>导åºçExcelæä»¶</returns> [HttpGet("toExcel")] public async Task<IActionResult> ToExcelAsync([FromQuery] WmsContainerSearchNonPage input) { var wmsContainerList = await ListNonPageAsync(input); MemoryStream ms = new(); DataConvertUtil.ToExcelData(wmsContainerList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, out List<List<object>> data, out string sheetName); var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsContainer", "v1"); if (excelTemplate != null) { ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms); } else { ExcelUtil.ToExcel(headers, data, sheetName, ms); } ms.Position = 0; var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8")); return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName }; } } } // /// <summary> // /// æ ¹æ®çæ¬ä¸è½½æçä¿¡æ¯çExcelå¯¼å ¥æ¨¡æ¿ // /// </summary> // /// <param name="version">模æ¿çæ¬</param> // /// <returns>ä¸è½½çæ¨¡æ¿æä»¶</returns> // [HttpGet("downloadExcelTemplate")] // public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version) // { // var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsContainer", version); // if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002); // var path = Path.Combine(@"\", excelTemplate.TemplateFileName); // Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName); // var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}å¯¼å ¥æ¨¡æ¿.xlsx", Encoding.GetEncoding("UTF-8")); // return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName }; // } // /// <summary> // /// æ ¹æ®æçä¿¡æ¯æ¥è¯¢åæ°å¯¼åºExcel // /// </summary> // /// <param name="input">æçä¿¡æ¯æ¥è¯¢åæ°</param> // /// <returns>导åºçExcelæä»¶</returns> // [HttpGet("toExcel")] // public async Task<IActionResult> ToExcelAsync([FromQuery] WmsContainerSearchNonPage input) // { // var wmsContainerList = await ListNonPageAsync(input); // MemoryStream ms = new(); // DataConvertUtil.ToExcelData(wmsContainerList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, // out List<List<object>> data, out string sheetName); // var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsContainer", "v1"); // if (excelTemplate != null) // { // ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms); // } // else // { // ExcelUtil.ToExcel(headers, data, sheetName, ms); // } // ms.Position = 0; // var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8")); // return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName }; // } // } //} iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/MaterialSortingService.cs
@@ -1,216 +1,216 @@ using Furion.DatabaseAccessor; using Furion.DependencyInjection; using Furion.DynamicApiController; using Furion.FriendlyException; using Mapster; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System.Linq.Dynamic.Core; using Admin.NET.Core; using Yitter.IdGenerator; using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Mvc.RazorPages; //using Furion.DatabaseAccessor; //using Furion.DependencyInjection; //using Furion.DynamicApiController; //using Furion.FriendlyException; //using Mapster; //using Microsoft.AspNetCore.Authorization; //using Microsoft.AspNetCore.Mvc; //using Microsoft.EntityFrameworkCore; //using System.Linq.Dynamic.Core; //using Admin.NET.Core; //using Yitter.IdGenerator; //using Microsoft.Extensions.Logging; //using Microsoft.AspNetCore.Mvc.RazorPages; namespace Admin.NET.Application { /// <summary> /// ç©æåæ£æå¡ /// </summary> [ApiDescriptionSettings("Pda忣", Name = "MaterialSorting", Order = 100)] [Route("api/[Controller]")] public class MaterialSortingService : IDynamicApiController, ITransient { private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep; private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep; private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep; private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep; private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep; private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep; private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep; private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep; private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep; private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep; private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep; private readonly IRepository<WmsSortOrder, MasterDbContextLocator> _wmsSortOrderRep; private readonly IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> _wmsTakeMaterialOrderRep; //namespace Admin.NET.Application //{ // /// <summary> // /// ç©æåæ£æå¡ // /// </summary> // [ApiDescriptionSettings("Pda忣", Name = "MaterialSorting", Order = 100)] // [Route("api/[Controller]")] // public class MaterialSortingService : IDynamicApiController, ITransient // { // private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep; // private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep; // private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep; // private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep; // private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep; // private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep; // private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep; // private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep; // private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep; // private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep; // private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep; // private readonly IRepository<WmsSortOrder, MasterDbContextLocator> _wmsSortOrderRep; // private readonly IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> _wmsTakeMaterialOrderRep; /// <summary> /// æé 彿° /// </summary> public MaterialSortingService( IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep, IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep, IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep, IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep, IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep, IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep, IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep, IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep, IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep, IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep, IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep, IRepository<WmsSortOrder, MasterDbContextLocator> wmsSortOrderRep, IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> wmsTakeMaterialOrderRep ) { _wmsOrderRep = wmsOrderRep; _wmsOrderDetailsRep = wmsOrderDetailsRep; _wmsTaskRep = wmsTaskRep; _wmsPlaceRep = wmsPlaceRep; _wmsAreaRep = wmsAreaRep; _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep; _wmsMaterialContainerRep = wmsMaterialContainerRep; _wmsContainerRep = wmsContainerRep; _wmsContainerPlaceRep = wmsContainerPlaceRep; _wmsMaterialStockRep = wmsMaterialStockRep; _wmsOrderTypeRep = wmsOrderTypeRep; _wmsSortOrderRep = wmsSortOrderRep; _wmsTakeMaterialOrderRep = wmsTakeMaterialOrderRep; } // /// <summary> // /// æé 彿° // /// </summary> // public MaterialSortingService( // IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep, // IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep, // IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep, // IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep, // IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep, // IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep, // IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep, // IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep, // IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep, // IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep, // IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep, // IRepository<WmsSortOrder, MasterDbContextLocator> wmsSortOrderRep, // IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> wmsTakeMaterialOrderRep // ) // { // _wmsOrderRep = wmsOrderRep; // _wmsOrderDetailsRep = wmsOrderDetailsRep; // _wmsTaskRep = wmsTaskRep; // _wmsPlaceRep = wmsPlaceRep; // _wmsAreaRep = wmsAreaRep; // _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep; // _wmsMaterialContainerRep = wmsMaterialContainerRep; // _wmsContainerRep = wmsContainerRep; // _wmsContainerPlaceRep = wmsContainerPlaceRep; // _wmsMaterialStockRep = wmsMaterialStockRep; // _wmsOrderTypeRep = wmsOrderTypeRep; // _wmsSortOrderRep = wmsSortOrderRep; // _wmsTakeMaterialOrderRep = wmsTakeMaterialOrderRep; // } /// <summary> /// æ«æåæ£æç /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpGet("GetSortInfo")] public async Task<GetSortInfoOutput> GetSortInfo([FromQuery] GetSortInfoInput input) { //æ£æ¥æç var wareContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == input.ContainerCode); if (wareContainer == null) throw Oops.Oh("容å¨ä¿¡æ¯ä¸åå¨!"); if (wareContainer.ContainerStatus == ContainerStatus.JINYONG) throw Oops.Oh("容å¨å·²ç¦ç¨!"); if (wareContainer.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("容å¨å¨åºä½ä¸å¯ä½¿ç¨!"); if (wareContainer.ContainerStatus != ContainerStatus.FENJIAN) throw Oops.Oh("容å¨ä¸åå¨åæ£ä¿¡æ¯!"); // /// <summary> // /// æ«æåæ£æç // /// </summary> // /// <param name="input"></param> // /// <returns></returns> // [HttpGet("GetSortInfo")] // public async Task<GetSortInfoOutput> GetSortInfo([FromQuery] GetSortInfoInput input) // { // //æ£æ¥æç // var wareContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == input.ContainerCode); // if (wareContainer == null) throw Oops.Oh("容å¨ä¿¡æ¯ä¸åå¨!"); // if (wareContainer.ContainerStatus == ContainerStatus.JINYONG) throw Oops.Oh("容å¨å·²ç¦ç¨!"); // if (wareContainer.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("容å¨å¨åºä½ä¸å¯ä½¿ç¨!"); // if (wareContainer.ContainerStatus != ContainerStatus.FENJIAN) throw Oops.Oh("容å¨ä¸åå¨åæ£ä¿¡æ¯!"); //夿æ¯å¦å¨ä»»å¡ä¸ var isExit = await _wmsTaskRep.AnyAsync(n => n.TaskStatus != TaskStatusEnum.WANCHENG && n.ContainerCode == input.ContainerCode); if (isExit) throw Oops.Oh("容å¨å卿ªå®æä»»å¡!"); // //夿æ¯å¦å¨ä»»å¡ä¸ // var isExit = await _wmsTaskRep.AnyAsync(n => n.TaskStatus != TaskStatusEnum.WANCHENG && n.ContainerCode == input.ContainerCode); // if (isExit) throw Oops.Oh("容å¨å卿ªå®æä»»å¡!"); // æ¥è¯¢åæ£è®°å½ var wareSortOrderList = await _wmsSortOrderRep.DetachedEntities .Where(p => p.ContainerCode == input.ContainerCode && p.SortStatus != SortStatusEnum.FENJIANWANCHENG).ToListAsync(); // // æ¥è¯¢åæ£è®°å½ // var wareSortOrderList = await _wmsSortOrderRep.DetachedEntities // .Where(p => p.ContainerCode == input.ContainerCode && p.SortStatus != SortStatusEnum.FENJIANWANCHENG).ToListAsync(); return new GetSortInfoOutput { WmsContainer = wareContainer.Adapt<WmsContainerDto>(), WmsSortOrderList = wareSortOrderList }; } // return new GetSortInfoOutput // { // WmsContainer = wareContainer.Adapt<WmsContainerDto>(), // WmsSortOrderList = wareSortOrderList // }; // } /// <summary> /// åæ£ç¡®è®¤ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost("SortSure")] [UnitOfWork] public async Task SortSure(GetSortInfoOutput input) { if (input.WmsContainer == null || input.WmsSortOrderList.Count == 0) throw Oops.Oh("ä¼ éåæ°å¼å¸¸!"); // /// <summary> // /// åæ£ç¡®è®¤ // /// </summary> // /// <param name="input"></param> // /// <returns></returns> // [HttpPost("SortSure")] // [UnitOfWork] // public async Task SortSure(GetSortInfoOutput input) // { // if (input.WmsContainer == null || input.WmsSortOrderList.Count == 0) throw Oops.Oh("ä¼ éåæ°å¼å¸¸!"); //æ£æ¥æç var wareContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == input.WmsContainer.ContainerCode); if (wareContainer == null) throw Oops.Oh("容å¨ä¿¡æ¯ä¸åå¨!"); if (wareContainer.ContainerStatus == ContainerStatus.JINYONG) throw Oops.Oh("容å¨å·²ç¦ç¨!"); if (wareContainer.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("容å¨å¨åºä½ä¸å¯ä½¿ç¨!"); if (wareContainer.ContainerStatus != ContainerStatus.FENJIAN) throw Oops.Oh("容å¨ä¸åå¨åæ£ä¿¡æ¯!"); // //æ£æ¥æç // var wareContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == input.WmsContainer.ContainerCode); // if (wareContainer == null) throw Oops.Oh("容å¨ä¿¡æ¯ä¸åå¨!"); // if (wareContainer.ContainerStatus == ContainerStatus.JINYONG) throw Oops.Oh("容å¨å·²ç¦ç¨!"); // if (wareContainer.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("容å¨å¨åºä½ä¸å¯ä½¿ç¨!"); // if (wareContainer.ContainerStatus != ContainerStatus.FENJIAN) throw Oops.Oh("容å¨ä¸åå¨åæ£ä¿¡æ¯!"); var wmsMaterialContainers = await _wmsMaterialContainerRep .Where(p => p.ContainerCode == input.WmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync(); foreach (var item in input.WmsSortOrderList) { var wmsMaterialContainerModel = wmsMaterialContainers.FirstOrDefault(p => p.MaterialNo == item.Materialcode); if (wmsMaterialContainerModel != null) { if (wmsMaterialContainerModel.BindQuantity < item.ActualQuantity) throw Oops.Oh("忣ç»çå¼å¸¸!"); wmsMaterialContainerModel.BindQuantity -= item.ActualQuantity; if (wmsMaterialContainerModel.BindQuantity <= 0) { wmsMaterialContainers.Remove(wmsMaterialContainerModel); await _wmsMaterialContainerRep.DeleteAsync(wmsMaterialContainerModel); } else { await _wmsMaterialContainerRep.UpdateAsync(wmsMaterialContainerModel); } } var stockModel = await _wmsMaterialStockRep.FirstOrDefaultAsync(p => p.ContainerCode == wareContainer.ContainerCode && p.MaterialNo == item.Materialcode); if (stockModel != null) { if (stockModel.StockNumber < item.ActualQuantity) throw Oops.Oh("忣åºåå¼å¸¸!"); stockModel.StockNumber -= item.ActualQuantity; if (stockModel.StockNumber <= 0) await _wmsMaterialStockRep.DeleteAsync(stockModel); else await _wmsMaterialStockRep.UpdateAsync(stockModel); } // var wmsMaterialContainers = await _wmsMaterialContainerRep // .Where(p => p.ContainerCode == input.WmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync(); // foreach (var item in input.WmsSortOrderList) // { // var wmsMaterialContainerModel = wmsMaterialContainers.FirstOrDefault(p => p.MaterialNo == item.Materialcode); // if (wmsMaterialContainerModel != null) // { // if (wmsMaterialContainerModel.BindQuantity < item.ActualQuantity) throw Oops.Oh("忣ç»çå¼å¸¸!"); // wmsMaterialContainerModel.BindQuantity -= item.ActualQuantity; // if (wmsMaterialContainerModel.BindQuantity <= 0) // { // wmsMaterialContainers.Remove(wmsMaterialContainerModel); // await _wmsMaterialContainerRep.DeleteAsync(wmsMaterialContainerModel); // } // else // { // await _wmsMaterialContainerRep.UpdateAsync(wmsMaterialContainerModel); // } // } // var stockModel = await _wmsMaterialStockRep.FirstOrDefaultAsync(p => p.ContainerCode == wareContainer.ContainerCode && p.MaterialNo == item.Materialcode); // if (stockModel != null) // { // if (stockModel.StockNumber < item.ActualQuantity) throw Oops.Oh("忣åºåå¼å¸¸!"); // stockModel.StockNumber -= item.ActualQuantity; // if (stockModel.StockNumber <= 0) await _wmsMaterialStockRep.DeleteAsync(stockModel); // else await _wmsMaterialStockRep.UpdateAsync(stockModel); // } // è¿éè¿éè¦æ ¹æ®å®é ä¸åæ°æ¥æ´æ°åæ£ç¶æ var wareSortOrderModel = await _wmsSortOrderRep.FirstOrDefaultAsync(p => p.ContainerCode == wareContainer.ContainerCode && p.SortStatus != SortStatusEnum.FENJIANWANCHENG && p.Materialcode == item.Materialcode); // // è¿éè¿éè¦æ ¹æ®å®é ä¸åæ°æ¥æ´æ°åæ£ç¶æ // var wareSortOrderModel = await _wmsSortOrderRep.FirstOrDefaultAsync(p => p.ContainerCode == wareContainer.ContainerCode // && p.SortStatus != SortStatusEnum.FENJIANWANCHENG && p.Materialcode == item.Materialcode); if (wareSortOrderModel != null) { wareSortOrderModel.ActualQuantity += item.ActualQuantity; // if (wareSortOrderModel != null) // { // wareSortOrderModel.ActualQuantity += item.ActualQuantity; if (wareSortOrderModel.ActualQuantity >= wareSortOrderModel.SortQuantity) { wareSortOrderModel.SortStatus = SortStatusEnum.FENJIANWANCHENG; _wmsSortOrderRep.UpdateNow(wareSortOrderModel); // if (wareSortOrderModel.ActualQuantity >= wareSortOrderModel.SortQuantity) // { // wareSortOrderModel.SortStatus = SortStatusEnum.FENJIANWANCHENG; // _wmsSortOrderRep.UpdateNow(wareSortOrderModel); // 忣å宿å夿åºåºæç»æ¯å¦å®æ } else { wareSortOrderModel.SortStatus = SortStatusEnum.FENJIANZHONG; _wmsSortOrderRep.UpdateNow(wareSortOrderModel); } } } // // 忣å宿å夿åºåºæç»æ¯å¦å®æ // } // else // { // wareSortOrderModel.SortStatus = SortStatusEnum.FENJIANZHONG; // _wmsSortOrderRep.UpdateNow(wareSortOrderModel); // } // } // } var wareSortOrderCount = await _wmsSortOrderRep .Where(p => p.ContainerCode == input.WmsContainer.ContainerCode && p.SortStatus != SortStatusEnum.FENJIANWANCHENG).CountAsync(); // var wareSortOrderCount = await _wmsSortOrderRep // .Where(p => p.ContainerCode == input.WmsContainer.ContainerCode && p.SortStatus != SortStatusEnum.FENJIANWANCHENG).CountAsync(); //æ´æ°æçç¶æï¼åæ£å®æ if (wareSortOrderCount == 0) { if (wmsMaterialContainers.Count == 0) wareContainer.ContainerStatus = ContainerStatus.KOUXIAN; else wareContainer.ContainerStatus = ContainerStatus.ZUPANG; // æ´æ°å®¹å¨ç¶æ await _wmsContainerRep.UpdateAsync(wareContainer); } } // //æ´æ°æçç¶æï¼åæ£å®æ // if (wareSortOrderCount == 0) // { // if (wmsMaterialContainers.Count == 0) wareContainer.ContainerStatus = ContainerStatus.KOUXIAN; // else wareContainer.ContainerStatus = ContainerStatus.ZUPANG; // // æ´æ°å®¹å¨ç¶æ // await _wmsContainerRep.UpdateAsync(wareContainer); // } // } /// <summary> /// pdaåºåºåæ¥è¯¢ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpGet("SortPdaPage")] public async Task<PageResult<SortPdaPageOutput>> SortPdaPage([FromQuery] SortPdaPageInput input) { var wmsTakeMaterialOrder = await _wmsTakeMaterialOrderRep.DetachedEntities .Where(!string.IsNullOrEmpty(input.No), u => EF.Functions.Like(u.NO, $"%{input.No.Trim()}%")) .ProjectToType<SortPdaPageOutput>() .ToADPagedListAsync(input.PageNo, input.PageSize); return wmsTakeMaterialOrder; } // /// <summary> // /// pdaåºåºåæ¥è¯¢ // /// </summary> // /// <param name="input"></param> // /// <returns></returns> // [HttpGet("SortPdaPage")] // public async Task<PageResult<SortPdaPageOutput>> SortPdaPage([FromQuery] SortPdaPageInput input) // { // var wmsTakeMaterialOrder = await _wmsTakeMaterialOrderRep.DetachedEntities // .Where(!string.IsNullOrEmpty(input.No), u => EF.Functions.Like(u.NO, $"%{input.No.Trim()}%")) // .ProjectToType<SortPdaPageOutput>() // .ToADPagedListAsync(input.PageNo, input.PageSize); // return wmsTakeMaterialOrder; // } /// <summary> /// pdaæ ¹æ®åºåºåè·å忣åæç» /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpGet("SortPdaDetailPage")] public async Task<PageResult<SortPdaDetailPageOutput>> SortPdaDetailPage([FromQuery] SortPdaDetailPageInput input) { var wmsTakeMaterialOrder = await _wmsSortOrderRep.DetachedEntities .Where(x=>x.OrderNo ==input.No) .ProjectToType<SortPdaDetailPageOutput>() .ToADPagedListAsync(input.PageNo, input.PageSize); return wmsTakeMaterialOrder; } } } // /// <summary> // /// pdaæ ¹æ®åºåºåè·å忣åæç» // /// </summary> // /// <param name="input"></param> // /// <returns></returns> // [HttpGet("SortPdaDetailPage")] // public async Task<PageResult<SortPdaDetailPageOutput>> SortPdaDetailPage([FromQuery] SortPdaDetailPageInput input) // { // var wmsTakeMaterialOrder = await _wmsSortOrderRep.DetachedEntities // .Where(x=>x.OrderNo ==input.No) // .ProjectToType<SortPdaDetailPageOutput>() // .ToADPagedListAsync(input.PageNo, input.PageSize); // return wmsTakeMaterialOrder; // } // } //} iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/WmsInWarehouseService.cs
@@ -1,317 +1,317 @@ using Furion.DatabaseAccessor; using Furion.DependencyInjection; using Furion.DynamicApiController; using Furion.FriendlyException; using Mapster; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System.Linq.Dynamic.Core; using Admin.NET.Core; using Yitter.IdGenerator; using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Mvc.RazorPages; //using Furion.DatabaseAccessor; //using Furion.DependencyInjection; //using Furion.DynamicApiController; //using Furion.FriendlyException; //using Mapster; //using Microsoft.AspNetCore.Authorization; //using Microsoft.AspNetCore.Mvc; //using Microsoft.EntityFrameworkCore; //using System.Linq.Dynamic.Core; //using Admin.NET.Core; //using Yitter.IdGenerator; //using Microsoft.Extensions.Logging; //using Microsoft.AspNetCore.Mvc.RazorPages; namespace Admin.NET.Application { /// <summary> /// Pdaç©æå ¥åº /// </summary> [ApiDescriptionSettings("Pdaç©æå ¥åº", Name = "WmsInWarehouse", Order = 100)] [Route("api/[Controller]")] public class WmsInWarehouseService : IDynamicApiController, ITransient { private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep; private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep; private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep; private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep; private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep; private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep; private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep; private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep; private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep; private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep; private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep; //namespace Admin.NET.Application //{ // /// <summary> // /// Pdaç©æå ¥åº // /// </summary> // [ApiDescriptionSettings("Pdaç©æå ¥åº", Name = "WmsInWarehouse", Order = 100)] // [Route("api/[Controller]")] // public class WmsInWarehouseService : IDynamicApiController, ITransient // { // private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep; // private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep; // private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep; // private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep; // private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep; // private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep; // private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep; // private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep; // private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep; // private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep; // private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep; /// <summary> /// æé 彿° /// </summary> public WmsInWarehouseService( IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep, IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep, IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep, IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep, IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep, IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep, IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep, IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep, IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep, IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep, IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep ) { _wmsOrderRep = wmsOrderRep; _wmsOrderDetailsRep = wmsOrderDetailsRep; _wmsTaskRep = wmsTaskRep; _wmsPlaceRep = wmsPlaceRep; _wmsAreaRep = wmsAreaRep; _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep; _wmsMaterialContainerRep = wmsMaterialContainerRep; _wmsContainerRep = wmsContainerRep; _wmsContainerPlaceRep = wmsContainerPlaceRep; _wmsMaterialStockRep = wmsMaterialStockRep; _wmsOrderTypeRep = wmsOrderTypeRep; } // /// <summary> // /// æé 彿° // /// </summary> // public WmsInWarehouseService( // IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep, // IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep, // IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep, // IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep, // IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep, // IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep, // IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep, // IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep, // IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep, // IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep, // IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep // ) // { // _wmsOrderRep = wmsOrderRep; // _wmsOrderDetailsRep = wmsOrderDetailsRep; // _wmsTaskRep = wmsTaskRep; // _wmsPlaceRep = wmsPlaceRep; // _wmsAreaRep = wmsAreaRep; // _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep; // _wmsMaterialContainerRep = wmsMaterialContainerRep; // _wmsContainerRep = wmsContainerRep; // _wmsContainerPlaceRep = wmsContainerPlaceRep; // _wmsMaterialStockRep = wmsMaterialStockRep; // _wmsOrderTypeRep = wmsOrderTypeRep; // } /// <summary> /// è·åæç /// </summary> /// <returns></returns> [HttpGet("GetContainer")] [UnifyResult(typeof(GetContainerOutput))] public async Task<object> CheckTray([FromQuery] GetContainerInput input) { var containerModel = await _wmsContainerRep.DetachedEntities.Where(z => z.ContainerCode == input.ContainerCode).FirstOrDefaultAsync(); //妿æçä¸åå¨åæ·»å ä¸ä¸ª if (containerModel == null) { var ContainerInfo = input.Adapt<WmsContainer>(); ContainerInfo.ContainerStatus = ContainerStatus.KOUXIAN; ContainerInfo.AssetNo = "N/A"; ContainerInfo.ContainerCategory = ContainerCategory.GZP; ContainerInfo.ErpNo = "N/A"; ContainerInfo.IsVirtually = YesOrNot.N; ContainerInfo.WorkShopType = LesWorkShopType.FAPAOCHEJIAN; await _wmsContainerRep.InsertNowAsync(ContainerInfo); containerModel = ContainerInfo; } // /// <summary> // /// è·åæç // /// </summary> // /// <returns></returns> // [HttpGet("GetContainer")] // [UnifyResult(typeof(GetContainerOutput))] // public async Task<object> CheckTray([FromQuery] GetContainerInput input) // { // var containerModel = await _wmsContainerRep.DetachedEntities.Where(z => z.ContainerCode == input.ContainerCode).FirstOrDefaultAsync(); // //妿æçä¸åå¨åæ·»å ä¸ä¸ª // if (containerModel == null) { // var ContainerInfo = input.Adapt<WmsContainer>(); // ContainerInfo.ContainerStatus = ContainerStatus.KOUXIAN; // ContainerInfo.AssetNo = "N/A"; // ContainerInfo.ContainerCategory = ContainerCategory.GZP; // ContainerInfo.ErpNo = "N/A"; // ContainerInfo.IsVirtually = YesOrNot.N; // ContainerInfo.WorkShopType = LesWorkShopType.FAPAOCHEJIAN; // await _wmsContainerRep.InsertNowAsync(ContainerInfo); // containerModel = ContainerInfo; // } var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO); if (isExit) return XnRestfulResultProvider.RESTfulMesaage("æçå卿ªå®æä»»å¡!"); // var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO); // if (isExit) return XnRestfulResultProvider.RESTfulMesaage("æçå卿ªå®æä»»å¡!"); isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE); if (isExit) return XnRestfulResultProvider.RESTfulMesaage("æçåå¨åºä½ä¸!"); // isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE); // if (isExit) return XnRestfulResultProvider.RESTfulMesaage("æçåå¨åºä½ä¸!"); var GetContainerOutputModel = new GetContainerOutput() { WmsContainer = containerModel.Adapt<WmsContainerDto>(), ContainerCode = containerModel.ContainerCode, }; //è·åç»çæ°æ® GetContainerOutputModel.WmsMaterials = await _wmsMaterialContainerRep .Where(p => p.ContainerCode == containerModel.ContainerCode && p.BindStatus == CommonStatus.ENABLE) .OrderByDescending(p => p.CreatedTime) .ProjectToType<WmsMaterialContainer>().ToListAsync(); return XnRestfulResultProvider.RESTfulResult(GetContainerOutputModel); } // var GetContainerOutputModel = new GetContainerOutput() // { // WmsContainer = containerModel.Adapt<WmsContainerDto>(), // ContainerCode = containerModel.ContainerCode, // }; // //è·åç»çæ°æ® // GetContainerOutputModel.WmsMaterials = await _wmsMaterialContainerRep // .Where(p => p.ContainerCode == containerModel.ContainerCode && p.BindStatus == CommonStatus.ENABLE) // .OrderByDescending(p => p.CreatedTime) // .ProjectToType<WmsMaterialContainer>().ToListAsync(); // return XnRestfulResultProvider.RESTfulResult(GetContainerOutputModel); // } /// <summary> /// éè¿åæ®å·è·åæç» /// </summary> /// <returns></returns> [HttpGet("PadGetMaterial")] [UnifyResult(typeof(List<PadGetMaterialOutput>))] public async Task<object> PadGetMaterial([FromQuery] PadGetMaterialInput input) { // æ¥è¯¢åæ®å°ç±»æ¯âçäº§å ¥åºâçId var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("çäº§å ¥åº")); //è·å主表 var wmsOrders = await _wmsOrderRep.DetachedEntities .Where(u => u.NO == input.NO && u.OrderStatus == OrderStatusEnum.YIXIAFA && u.OrderLargeCategory == wmsOrderType.Pid && u.OrderSubclass == wmsOrderType.Id) .FirstOrDefaultAsync(); if (wmsOrders == null) return XnRestfulResultProvider.RESTfulMesaage("åæ®ä¸å卿æªä¸å!"); var wmsOrderDetailList =await _wmsOrderDetailsRep.Where(x=>x.OrderId == wmsOrders.Id) .ProjectToType<PadGetMaterialOutput>() .ToADPagedListAsync(input.PageNo, input.PageSize); return XnRestfulResultProvider.RESTfulResult(wmsOrderDetailList); } // /// <summary> // /// éè¿åæ®å·è·åæç» // /// </summary> // /// <returns></returns> // [HttpGet("PadGetMaterial")] // [UnifyResult(typeof(List<PadGetMaterialOutput>))] // public async Task<object> PadGetMaterial([FromQuery] PadGetMaterialInput input) // { // // æ¥è¯¢åæ®å°ç±»æ¯âçäº§å ¥åºâçId // var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("çäº§å ¥åº")); // //è·å主表 // var wmsOrders = await _wmsOrderRep.DetachedEntities // .Where(u => u.NO == input.NO && u.OrderStatus == OrderStatusEnum.YIXIAFA && u.OrderLargeCategory == wmsOrderType.Pid && u.OrderSubclass == wmsOrderType.Id) // .FirstOrDefaultAsync(); // if (wmsOrders == null) return XnRestfulResultProvider.RESTfulMesaage("åæ®ä¸å卿æªä¸å!"); // var wmsOrderDetailList =await _wmsOrderDetailsRep.Where(x=>x.OrderId == wmsOrders.Id) // .ProjectToType<PadGetMaterialOutput>() // .ToADPagedListAsync(input.PageNo, input.PageSize); // return XnRestfulResultProvider.RESTfulResult(wmsOrderDetailList); // } /// <summary> /// æ§è¡ä» æ¶è´§æä½ï¼ç»çï¼ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost("GroupDisk")] [UnitOfWork] public async Task<GroupDiskOutput> GroupDisk(GroupDiskInput input) { //æçä¿¡æ¯ var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus != ContainerStatus.JINYONG); if (containerModel == null) throw Oops.Oh("æçä¿¡æ¯ä¸åå¨!"); // /// <summary> // /// æ§è¡ä» æ¶è´§æä½ï¼ç»çï¼ // /// </summary> // /// <param name="input"></param> // /// <returns></returns> // [HttpPost("GroupDisk")] // [UnitOfWork] // public async Task<GroupDiskOutput> GroupDisk(GroupDiskInput input) // { // //æçä¿¡æ¯ // var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus != ContainerStatus.JINYONG); // if (containerModel == null) throw Oops.Oh("æçä¿¡æ¯ä¸åå¨!"); if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("容å¨åå¨åæ£ä¿¡æ¯!"); // if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("容å¨åå¨åæ£ä¿¡æ¯!"); if (containerModel.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("æçåå¨åºä½ä¸!"); // if (containerModel.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("æçåå¨åºä½ä¸!"); var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO); if (isExit) throw Oops.Oh("æçå卿ªå®æä»»å¡ä¸!"); // var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO); // if (isExit) throw Oops.Oh("æçå卿ªå®æä»»å¡ä¸!"); isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE); if (isExit) throw Oops.Oh("æçåå¨åºä½ä¸!"); // isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE); // if (isExit) throw Oops.Oh("æçåå¨åºä½ä¸!"); //ç»çä¿¡æ¯ var WmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync(); // //ç»çä¿¡æ¯ // var WmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync(); if (WmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(WmsMaterialContainerList); // if (WmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(WmsMaterialContainerList); //ä¿®æ¹æçç¶æ containerModel.ContainerStatus = ContainerStatus.ZUPANG; await _wmsContainerRep.UpdateAsync(containerModel); // //ä¿®æ¹æçç¶æ // containerModel.ContainerStatus = ContainerStatus.ZUPANG; // await _wmsContainerRep.UpdateAsync(containerModel); //ç»çåæ® var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(); if (input.WmsMaterials.Count >0)//æç©æçæ åµ { foreach (var item in input.WmsMaterials) { var bindentranceModel = item.Adapt<WmsMaterialContainer>(); bindentranceModel.MaterialName = item.Materialname; bindentranceModel.MaterialNo = item.Materialcode; bindentranceModel.MaterialId = 4567;//æå® bindentranceModel.ContainerId = containerModel.Id; bindentranceModel.ContainerCode = containerModel.ContainerCode; bindentranceModel.MaterialBatch = "N/A"; bindentranceModel.MaterialSpec = "N/A"; bindentranceModel.BindQuantity = item.Qty; bindentranceModel.BindStatus = CommonStatus.ENABLE; bindentranceModel.OrderNo = orderNo; bindentranceModel.MaterialDensity = "N/A"; bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId(); await _wmsMaterialContainerRep.InsertAsync(bindentranceModel); } } //else//空æå ¥åºçæ åµ //{ // // å建æ°ç»çè®°å½ // var bindentranceModel = new WmsMaterialContainer(); // bindentranceModel.MaterialName = "空æ"; // bindentranceModel.MaterialNo = containerModel.ContainerCode; // bindentranceModel.MaterialId = 55555;//æå® // bindentranceModel.ContainerId = containerModel.Id; // bindentranceModel.ContainerCode = containerModel.ContainerCode; // bindentranceModel.MaterialBatch = "N/A"; // bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth; // bindentranceModel.BindQuantity = 1; // bindentranceModel.BindStatus = CommonStatus.ENABLE; // bindentranceModel.OrderNo = orderNo; // bindentranceModel.MaterialDensity = "N/A"; // bindentranceModel.Id = YitIdHelper.NextId(); // await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel); //} return new GroupDiskOutput() { Containercode = input.ContainerCode, OrderNo = orderNo }; } // //ç»çåæ® // var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(); // if (input.WmsMaterials.Count >0)//æç©æçæ åµ // { // foreach (var item in input.WmsMaterials) // { // var bindentranceModel = item.Adapt<WmsMaterialContainer>(); // bindentranceModel.MaterialName = item.Materialname; // bindentranceModel.MaterialNo = item.Materialcode; // bindentranceModel.MaterialId = 4567;//æå® // bindentranceModel.ContainerId = containerModel.Id; // bindentranceModel.ContainerCode = containerModel.ContainerCode; // bindentranceModel.MaterialBatch = "N/A"; // bindentranceModel.MaterialSpec = "N/A"; // bindentranceModel.BindQuantity = item.Qty; // bindentranceModel.BindStatus = CommonStatus.ENABLE; // bindentranceModel.OrderNo = orderNo; // bindentranceModel.MaterialDensity = "N/A"; // bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId(); // await _wmsMaterialContainerRep.InsertAsync(bindentranceModel); // } // } // //else//空æå ¥åºçæ åµ // //{ // // // å建æ°ç»çè®°å½ // // var bindentranceModel = new WmsMaterialContainer(); // // bindentranceModel.MaterialName = "空æ"; // // bindentranceModel.MaterialNo = containerModel.ContainerCode; // // bindentranceModel.MaterialId = 55555;//æå® // // bindentranceModel.ContainerId = containerModel.Id; // // bindentranceModel.ContainerCode = containerModel.ContainerCode; // // bindentranceModel.MaterialBatch = "N/A"; // // bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth; // // bindentranceModel.BindQuantity = 1; // // bindentranceModel.BindStatus = CommonStatus.ENABLE; // // bindentranceModel.OrderNo = orderNo; // // bindentranceModel.MaterialDensity = "N/A"; // // bindentranceModel.Id = YitIdHelper.NextId(); // // await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel); // //} // return new GroupDiskOutput() // { // Containercode = input.ContainerCode, // OrderNo = orderNo // }; // } /// <summary> /// æäº¤å ¥åº /// </summary> /// <returns></returns> [HttpPost("PdaInWarehouse")] [UnitOfWork] public async Task PdaInWarehouse([FromBody] PdaInWarehouseInput input) { // /// <summary> // /// æäº¤å ¥åº // /// </summary> // /// <returns></returns> // [HttpPost("PdaInWarehouse")] // [UnitOfWork] // public async Task PdaInWarehouse([FromBody] PdaInWarehouseInput input) // { //æ£æ¥æç var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(p => p.ContainerCode == input.ContainerCode && p.ContainerStatus != ContainerStatus.JINYONG); if (containerModel == null) throw Oops.Oh("æçä¸åå¨!"); // //æ£æ¥æç // var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(p => p.ContainerCode == input.ContainerCode && p.ContainerStatus != ContainerStatus.JINYONG); // if (containerModel == null) throw Oops.Oh("æçä¸åå¨!"); if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("容å¨åå¨åæ£ä¿¡æ¯!"); // if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("容å¨åå¨åæ£ä¿¡æ¯!"); var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO); if (isExit) throw Oops.Oh("æçå卿ªå®æä»»å¡ä¸!"); // var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO); // if (isExit) throw Oops.Oh("æçå卿ªå®æä»»å¡ä¸!"); var isInPlace = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus == ContainerStatus.KUWEI); if (isInPlace != null) throw Oops.Oh("æçåå¨åºä½ä¸!"); // var isInPlace = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus == ContainerStatus.KUWEI); // if (isInPlace != null) throw Oops.Oh("æçåå¨åºä½ä¸!"); isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE); if (isExit) throw Oops.Oh("æçåå¨åºä½ä¸!"); // isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE); // if (isExit) throw Oops.Oh("æçåå¨åºä½ä¸!"); //å é¤ç»çä¿¡æ¯ var oldwmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync(); // //å é¤ç»çä¿¡æ¯ // var oldwmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync(); if (oldwmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(oldwmsMaterialContainerList); // if (oldwmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(oldwmsMaterialContainerList); //ç»çåæ®å· var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(); if (input.WmsMaterials!=null || input.WmsMaterials.Count <= 0)//æç©æçæ åµ { foreach (var item in input.WmsMaterials) { var bindentranceModel = item.Adapt<WmsMaterialContainer>(); bindentranceModel.MaterialName = item.Materialname; bindentranceModel.MaterialNo = item.Materialcode; bindentranceModel.MaterialId = 4567; bindentranceModel.ContainerId = containerModel.Id; bindentranceModel.ContainerCode = containerModel.ContainerCode; bindentranceModel.MaterialBatch = "N/A"; bindentranceModel.MaterialSpec = "N/A"; bindentranceModel.BindQuantity = item.Qty; bindentranceModel.BindStatus = CommonStatus.ENABLE; bindentranceModel.OrderNo = orderNo; bindentranceModel.MaterialDensity = "N/A"; bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId(); await _wmsMaterialContainerRep.InsertAsync(bindentranceModel); ////æ´æ¹æç»å ¥åºæ°é //var wmsOrderDetailsModal = await _wmsOrderDetailsRep.FirstOrDefaultAsync(x => x.Id == item.Id); //wmsOrderDetailsModal.InventoryQty += item.Qty; } } //else//空æå ¥åºçæ åµ //{ // // å建æ°ç»çè®°å½ // var bindentranceModel = new WmsMaterialContainer(); // bindentranceModel.MaterialName = "空æ"; // bindentranceModel.MaterialNo = containerModel.ContainerCode; // bindentranceModel.MaterialId = 55555;//æå® // bindentranceModel.ContainerId = containerModel.Id; // bindentranceModel.ContainerCode = containerModel.ContainerCode; // bindentranceModel.MaterialBatch = "N/A";//æ ¹æ®ç©æç è§£æ // bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth; // bindentranceModel.BindQuantity = 1; // bindentranceModel.BindStatus = CommonStatus.ENABLE; // bindentranceModel.OrderNo = orderNo; // bindentranceModel.MaterialDensity = "N/A";//æ ¹æ®ç©æç è§£æ // bindentranceModel.Id = YitIdHelper.NextId(); // await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel); //} // //ç»çåæ®å· // var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(); // if (input.WmsMaterials!=null || input.WmsMaterials.Count <= 0)//æç©æçæ åµ // { // foreach (var item in input.WmsMaterials) // { // var bindentranceModel = item.Adapt<WmsMaterialContainer>(); // bindentranceModel.MaterialName = item.Materialname; // bindentranceModel.MaterialNo = item.Materialcode; // bindentranceModel.MaterialId = 4567; // bindentranceModel.ContainerId = containerModel.Id; // bindentranceModel.ContainerCode = containerModel.ContainerCode; // bindentranceModel.MaterialBatch = "N/A"; // bindentranceModel.MaterialSpec = "N/A"; // bindentranceModel.BindQuantity = item.Qty; // bindentranceModel.BindStatus = CommonStatus.ENABLE; // bindentranceModel.OrderNo = orderNo; // bindentranceModel.MaterialDensity = "N/A"; // bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId(); // await _wmsMaterialContainerRep.InsertAsync(bindentranceModel); // ////æ´æ¹æç»å ¥åºæ°é // //var wmsOrderDetailsModal = await _wmsOrderDetailsRep.FirstOrDefaultAsync(x => x.Id == item.Id); // //wmsOrderDetailsModal.InventoryQty += item.Qty; // } // } // //else//空æå ¥åºçæ åµ // //{ // // // å建æ°ç»çè®°å½ // // var bindentranceModel = new WmsMaterialContainer(); // // bindentranceModel.MaterialName = "空æ"; // // bindentranceModel.MaterialNo = containerModel.ContainerCode; // // bindentranceModel.MaterialId = 55555;//æå® // // bindentranceModel.ContainerId = containerModel.Id; // // bindentranceModel.ContainerCode = containerModel.ContainerCode; // // bindentranceModel.MaterialBatch = "N/A";//æ ¹æ®ç©æç è§£æ // // bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth; // // bindentranceModel.BindQuantity = 1; // // bindentranceModel.BindStatus = CommonStatus.ENABLE; // // bindentranceModel.OrderNo = orderNo; // // bindentranceModel.MaterialDensity = "N/A";//æ ¹æ®ç©æç è§£æ // // bindentranceModel.Id = YitIdHelper.NextId(); // // await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel); // //} ////ä¿®æ¹æçç¶æ //containerModel.ContainerStatus = ContainerStatus.ZUPANG; //await _wmsContainerRep.UpdateAsync(containerModel); //åé å··é var Aisle = 1; // ////ä¿®æ¹æçç¶æ // //containerModel.ContainerStatus = ContainerStatus.ZUPANG; // //await _wmsContainerRep.UpdateAsync(containerModel); // //åé å··é // var Aisle = 1; //ä»»å¡ var takmodel = new WmsTask() { TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(), TaskModel = TaskModel.QUANZIDONG, TaskType = TaskType.RUKU, TaskLevel = 1, TaskStatus = TaskStatusEnum.ZHIXINGZHONG, OrderNo = orderNo, OrderDetailsId = 0, ContainerCode = input.ContainerCode, SourcePlace = "å ¥åºå£",//ç°åºæ åµä¸ºç©º ToPlace = "", //ç®æ ä½ AreaName = "ç»ç¼ç«åº", IsRead = true, //WCSæ¯å¦å¯ä»¥è¯»å SendTimes = 1, //å鿬¡æ° Aisle = Aisle,// æ ¹æ®åºåºidè·åå å·æåæºï¼æµè¯ä½¿ç¨ä¸å· TaskDodeviceStatus = TaskDodeviceStatusEnum.W }; if (input.WmsMaterials == null || input.WmsMaterials.Count <= 0) { takmodel.Description = "空æ"; } else { takmodel.Description = "ç©æ"; }; // //ä»»å¡ // var takmodel = new WmsTask() // { // TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(), // TaskModel = TaskModel.QUANZIDONG, // TaskType = TaskType.RUKU, // TaskLevel = 1, // TaskStatus = TaskStatusEnum.ZHIXINGZHONG, // OrderNo = orderNo, // OrderDetailsId = 0, // ContainerCode = input.ContainerCode, // SourcePlace = "å ¥åºå£",//ç°åºæ åµä¸ºç©º // ToPlace = "", //ç®æ ä½ // AreaName = "ç»ç¼ç«åº", // IsRead = true, //WCSæ¯å¦å¯ä»¥è¯»å // SendTimes = 1, //å鿬¡æ° // Aisle = Aisle,// æ ¹æ®åºåºidè·åå å·æåæºï¼æµè¯ä½¿ç¨ä¸å· // TaskDodeviceStatus = TaskDodeviceStatusEnum.W // }; // if (input.WmsMaterials == null || input.WmsMaterials.Count <= 0) { // takmodel.Description = "空æ"; // } // else // { // takmodel.Description = "ç©æ"; // }; await _wmsTaskRep.InsertAsync(takmodel); } } } // await _wmsTaskRep.InsertAsync(takmodel); // } // } //} iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/WmsStockReturnWarehouseService.cs
@@ -1,317 +1,317 @@ using Furion.DatabaseAccessor; using Furion.DependencyInjection; using Furion.DynamicApiController; using Furion.FriendlyException; using Mapster; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System.Linq.Dynamic.Core; using Admin.NET.Core; using Yitter.IdGenerator; using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Mvc.RazorPages; //using Furion.DatabaseAccessor; //using Furion.DependencyInjection; //using Furion.DynamicApiController; //using Furion.FriendlyException; //using Mapster; //using Microsoft.AspNetCore.Authorization; //using Microsoft.AspNetCore.Mvc; //using Microsoft.EntityFrameworkCore; //using System.Linq.Dynamic.Core; //using Admin.NET.Core; //using Yitter.IdGenerator; //using Microsoft.Extensions.Logging; //using Microsoft.AspNetCore.Mvc.RazorPages; namespace Admin.NET.Application { /// <summary> /// Pdaç©æéåº /// </summary> [ApiDescriptionSettings("Pdaç©æéåº", Name = "WmsStockReturnWarehouse", Order = 100)] [Route("api/[Controller]")] public class WmsStockReturnWarehouseService : IDynamicApiController, ITransient { private readonly IRepository<WmsStockReturnOrder, MasterDbContextLocator> _wmsStockReturnOrderRep; private readonly IRepository<WmsStockReturnOrderDetails, MasterDbContextLocator> _wmsStockReturnOrderDetailsRep; private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep; private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep; private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep; private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep; private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep; private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep; private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep; private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep; private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep; //namespace Admin.NET.Application //{ // /// <summary> // /// Pdaç©æéåº // /// </summary> // [ApiDescriptionSettings("Pdaç©æéåº", Name = "WmsStockReturnWarehouse", Order = 100)] // [Route("api/[Controller]")] // public class WmsStockReturnWarehouseService : IDynamicApiController, ITransient // { // private readonly IRepository<WmsStockReturnOrder, MasterDbContextLocator> _wmsStockReturnOrderRep; // private readonly IRepository<WmsStockReturnOrderDetails, MasterDbContextLocator> _wmsStockReturnOrderDetailsRep; // private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep; // private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep; // private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep; // private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep; // private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep; // private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep; // private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep; // private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep; // private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep; /// <summary> /// æé 彿° /// </summary> public WmsStockReturnWarehouseService( IRepository<WmsStockReturnOrder, MasterDbContextLocator> wmsStockReturnOrderRep, IRepository<WmsStockReturnOrderDetails, MasterDbContextLocator> wmsStockReturnOrderDetailsRep, IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep, IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep, IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep, IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep, IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep, IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep, IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep, IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep, IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep ) { _wmsStockReturnOrderRep = wmsStockReturnOrderRep; _wmsStockReturnOrderDetailsRep = wmsStockReturnOrderDetailsRep; _wmsTaskRep = wmsTaskRep; _wmsPlaceRep = wmsPlaceRep; _wmsAreaRep = wmsAreaRep; _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep; _wmsMaterialContainerRep = wmsMaterialContainerRep; _wmsContainerRep = wmsContainerRep; _wmsContainerPlaceRep = wmsContainerPlaceRep; _wmsMaterialStockRep = wmsMaterialStockRep; _wmsOrderTypeRep = wmsOrderTypeRep; } // /// <summary> // /// æé 彿° // /// </summary> // public WmsStockReturnWarehouseService( // IRepository<WmsStockReturnOrder, MasterDbContextLocator> wmsStockReturnOrderRep, // IRepository<WmsStockReturnOrderDetails, MasterDbContextLocator> wmsStockReturnOrderDetailsRep, // IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep, // IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep, // IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep, // IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep, // IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep, // IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep, // IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep, // IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep, // IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep // ) // { // _wmsStockReturnOrderRep = wmsStockReturnOrderRep; // _wmsStockReturnOrderDetailsRep = wmsStockReturnOrderDetailsRep; // _wmsTaskRep = wmsTaskRep; // _wmsPlaceRep = wmsPlaceRep; // _wmsAreaRep = wmsAreaRep; // _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep; // _wmsMaterialContainerRep = wmsMaterialContainerRep; // _wmsContainerRep = wmsContainerRep; // _wmsContainerPlaceRep = wmsContainerPlaceRep; // _wmsMaterialStockRep = wmsMaterialStockRep; // _wmsOrderTypeRep = wmsOrderTypeRep; // } /// <summary> /// è·åæç /// </summary> /// <returns></returns> [HttpGet("GetContainer")] [UnifyResult(typeof(StockReturnGetContainerOutput))] public async Task<object> CheckTray([FromQuery] StockReturnGetContainerInput input) { var containerModel = await _wmsContainerRep.DetachedEntities.Where(z => z.ContainerCode == input.ContainerCode).FirstOrDefaultAsync(); //妿æçä¸åå¨åæ·»å ä¸ä¸ª if (containerModel == null) { var ContainerInfo = input.Adapt<WmsContainer>(); ContainerInfo.ContainerStatus = ContainerStatus.KOUXIAN; ContainerInfo.AssetNo = "N/A"; ContainerInfo.ContainerCategory = ContainerCategory.GZP; ContainerInfo.ErpNo = "N/A"; ContainerInfo.IsVirtually = YesOrNot.N; ContainerInfo.WorkShopType = LesWorkShopType.FAPAOCHEJIAN; await _wmsContainerRep.InsertNowAsync(ContainerInfo); containerModel = ContainerInfo; } // /// <summary> // /// è·åæç // /// </summary> // /// <returns></returns> // [HttpGet("GetContainer")] // [UnifyResult(typeof(StockReturnGetContainerOutput))] // public async Task<object> CheckTray([FromQuery] StockReturnGetContainerInput input) // { // var containerModel = await _wmsContainerRep.DetachedEntities.Where(z => z.ContainerCode == input.ContainerCode).FirstOrDefaultAsync(); // //妿æçä¸åå¨åæ·»å ä¸ä¸ª // if (containerModel == null) { // var ContainerInfo = input.Adapt<WmsContainer>(); // ContainerInfo.ContainerStatus = ContainerStatus.KOUXIAN; // ContainerInfo.AssetNo = "N/A"; // ContainerInfo.ContainerCategory = ContainerCategory.GZP; // ContainerInfo.ErpNo = "N/A"; // ContainerInfo.IsVirtually = YesOrNot.N; // ContainerInfo.WorkShopType = LesWorkShopType.FAPAOCHEJIAN; // await _wmsContainerRep.InsertNowAsync(ContainerInfo); // containerModel = ContainerInfo; // } var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO); if (isExit) return XnRestfulResultProvider.RESTfulMesaage("æçå卿ªå®æä»»å¡!"); // var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO); // if (isExit) return XnRestfulResultProvider.RESTfulMesaage("æçå卿ªå®æä»»å¡!"); isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE); if (isExit) return XnRestfulResultProvider.RESTfulMesaage("æçåå¨åºä½ä¸!"); // isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE); // if (isExit) return XnRestfulResultProvider.RESTfulMesaage("æçåå¨åºä½ä¸!"); var GetContainerOutputModel = new GetContainerOutput() { WmsContainer = containerModel.Adapt<WmsContainerDto>(), ContainerCode = containerModel.ContainerCode, }; //è·åç»çæ°æ® GetContainerOutputModel.WmsMaterials = await _wmsMaterialContainerRep .Where(p => p.ContainerCode == containerModel.ContainerCode && p.BindStatus == CommonStatus.ENABLE) .OrderByDescending(p => p.CreatedTime) .ProjectToType<WmsMaterialContainer>().ToListAsync(); return XnRestfulResultProvider.RESTfulResult(GetContainerOutputModel); } // var GetContainerOutputModel = new GetContainerOutput() // { // WmsContainer = containerModel.Adapt<WmsContainerDto>(), // ContainerCode = containerModel.ContainerCode, // }; // //è·åç»çæ°æ® // GetContainerOutputModel.WmsMaterials = await _wmsMaterialContainerRep // .Where(p => p.ContainerCode == containerModel.ContainerCode && p.BindStatus == CommonStatus.ENABLE) // .OrderByDescending(p => p.CreatedTime) // .ProjectToType<WmsMaterialContainer>().ToListAsync(); // return XnRestfulResultProvider.RESTfulResult(GetContainerOutputModel); // } /// <summary> /// éè¿åæ®å·è·åæç» /// </summary> /// <returns></returns> [HttpGet("PadGetMaterial")] [UnifyResult(typeof(List<StockReturnPadGetMaterialOutput>))] public async Task<object> PadGetMaterial([FromQuery] StockReturnPadGetMaterialInput input) { // æ¥è¯¢åæ®å°ç±»æ¯âç©æéåºâçId var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("ç©æéåº")); //è·å主表 var wmsOrders = await _wmsStockReturnOrderRep.DetachedEntities .Where(u => u.NO == input.NO && u.OrderStatus == OrderStatusEnum.YIXIAFA && u.OrderLargeCategory == wmsOrderType.Pid && u.OrderSubclass == wmsOrderType.Id) .FirstOrDefaultAsync(); if (wmsOrders == null) return XnRestfulResultProvider.RESTfulMesaage("åæ®ä¸å卿æªä¸å!"); var wmsOrderDetailList =await _wmsStockReturnOrderDetailsRep.Where(x=>x.OrderId == wmsOrders.Id) .ProjectToType<StockReturnPadGetMaterialOutput>() .ToADPagedListAsync(input.PageNo, input.PageSize); return XnRestfulResultProvider.RESTfulResult(wmsOrderDetailList); } // /// <summary> // /// éè¿åæ®å·è·åæç» // /// </summary> // /// <returns></returns> // [HttpGet("PadGetMaterial")] // [UnifyResult(typeof(List<StockReturnPadGetMaterialOutput>))] // public async Task<object> PadGetMaterial([FromQuery] StockReturnPadGetMaterialInput input) // { // // æ¥è¯¢åæ®å°ç±»æ¯âç©æéåºâçId // var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("ç©æéåº")); // //è·å主表 // var wmsOrders = await _wmsStockReturnOrderRep.DetachedEntities // .Where(u => u.NO == input.NO && u.OrderStatus == OrderStatusEnum.YIXIAFA && u.OrderLargeCategory == wmsOrderType.Pid && u.OrderSubclass == wmsOrderType.Id) // .FirstOrDefaultAsync(); // if (wmsOrders == null) return XnRestfulResultProvider.RESTfulMesaage("åæ®ä¸å卿æªä¸å!"); // var wmsOrderDetailList =await _wmsStockReturnOrderDetailsRep.Where(x=>x.OrderId == wmsOrders.Id) // .ProjectToType<StockReturnPadGetMaterialOutput>() // .ToADPagedListAsync(input.PageNo, input.PageSize); // return XnRestfulResultProvider.RESTfulResult(wmsOrderDetailList); // } /// <summary> /// æ§è¡ä» æ¶è´§æä½ï¼ç»çï¼ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost("GroupDisk")] [UnitOfWork] public async Task<StockReturnGroupDiskOutput> GroupDisk(StockReturnGroupDiskInput input) { //æçä¿¡æ¯ var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus != ContainerStatus.JINYONG); if (containerModel == null) throw Oops.Oh("æçä¿¡æ¯ä¸åå¨!"); // /// <summary> // /// æ§è¡ä» æ¶è´§æä½ï¼ç»çï¼ // /// </summary> // /// <param name="input"></param> // /// <returns></returns> // [HttpPost("GroupDisk")] // [UnitOfWork] // public async Task<StockReturnGroupDiskOutput> GroupDisk(StockReturnGroupDiskInput input) // { // //æçä¿¡æ¯ // var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus != ContainerStatus.JINYONG); // if (containerModel == null) throw Oops.Oh("æçä¿¡æ¯ä¸åå¨!"); if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("容å¨åå¨åæ£ä¿¡æ¯!"); // if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("容å¨åå¨åæ£ä¿¡æ¯!"); if (containerModel.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("æçåå¨åºä½ä¸!"); // if (containerModel.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("æçåå¨åºä½ä¸!"); var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO); if (isExit) throw Oops.Oh("æçå卿ªå®æä»»å¡ä¸!"); // var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO); // if (isExit) throw Oops.Oh("æçå卿ªå®æä»»å¡ä¸!"); isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE); if (isExit) throw Oops.Oh("æçåå¨åºä½ä¸!"); // isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE); // if (isExit) throw Oops.Oh("æçåå¨åºä½ä¸!"); //ç»çä¿¡æ¯ var WmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync(); // //ç»çä¿¡æ¯ // var WmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync(); if (WmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(WmsMaterialContainerList); // if (WmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(WmsMaterialContainerList); //ä¿®æ¹æçç¶æ containerModel.ContainerStatus = ContainerStatus.ZUPANG; await _wmsContainerRep.UpdateAsync(containerModel); // //ä¿®æ¹æçç¶æ // containerModel.ContainerStatus = ContainerStatus.ZUPANG; // await _wmsContainerRep.UpdateAsync(containerModel); //ç»çåæ® var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(); if (input.WmsMaterials.Count >0)//æç©æçæ åµ { foreach (var item in input.WmsMaterials) { var bindentranceModel = item.Adapt<WmsMaterialContainer>(); bindentranceModel.MaterialName = item.Materialname; bindentranceModel.MaterialNo = item.Materialcode; bindentranceModel.MaterialId = 4567;//æå® bindentranceModel.ContainerId = containerModel.Id; bindentranceModel.ContainerCode = containerModel.ContainerCode; bindentranceModel.MaterialBatch = "N/A"; bindentranceModel.MaterialSpec = "N/A"; bindentranceModel.BindQuantity = item.Qty; bindentranceModel.BindStatus = CommonStatus.ENABLE; bindentranceModel.OrderNo = orderNo; bindentranceModel.MaterialDensity = "N/A"; bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId(); await _wmsMaterialContainerRep.InsertAsync(bindentranceModel); } } //else//空æå ¥åºçæ åµ //{ // // å建æ°ç»çè®°å½ // var bindentranceModel = new WmsMaterialContainer(); // bindentranceModel.MaterialName = "空æ"; // bindentranceModel.MaterialNo = containerModel.ContainerCode; // bindentranceModel.MaterialId = 55555;//æå® // bindentranceModel.ContainerId = containerModel.Id; // bindentranceModel.ContainerCode = containerModel.ContainerCode; // bindentranceModel.MaterialBatch = "N/A"; // bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth; // bindentranceModel.BindQuantity = 1; // bindentranceModel.BindStatus = CommonStatus.ENABLE; // bindentranceModel.OrderNo = orderNo; // bindentranceModel.MaterialDensity = "N/A"; // bindentranceModel.Id = YitIdHelper.NextId(); // await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel); //} return new StockReturnGroupDiskOutput() { Containercode = input.ContainerCode, OrderNo = orderNo }; } // //ç»çåæ® // var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(); // if (input.WmsMaterials.Count >0)//æç©æçæ åµ // { // foreach (var item in input.WmsMaterials) // { // var bindentranceModel = item.Adapt<WmsMaterialContainer>(); // bindentranceModel.MaterialName = item.Materialname; // bindentranceModel.MaterialNo = item.Materialcode; // bindentranceModel.MaterialId = 4567;//æå® // bindentranceModel.ContainerId = containerModel.Id; // bindentranceModel.ContainerCode = containerModel.ContainerCode; // bindentranceModel.MaterialBatch = "N/A"; // bindentranceModel.MaterialSpec = "N/A"; // bindentranceModel.BindQuantity = item.Qty; // bindentranceModel.BindStatus = CommonStatus.ENABLE; // bindentranceModel.OrderNo = orderNo; // bindentranceModel.MaterialDensity = "N/A"; // bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId(); // await _wmsMaterialContainerRep.InsertAsync(bindentranceModel); // } // } // //else//空æå ¥åºçæ åµ // //{ // // // å建æ°ç»çè®°å½ // // var bindentranceModel = new WmsMaterialContainer(); // // bindentranceModel.MaterialName = "空æ"; // // bindentranceModel.MaterialNo = containerModel.ContainerCode; // // bindentranceModel.MaterialId = 55555;//æå® // // bindentranceModel.ContainerId = containerModel.Id; // // bindentranceModel.ContainerCode = containerModel.ContainerCode; // // bindentranceModel.MaterialBatch = "N/A"; // // bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth; // // bindentranceModel.BindQuantity = 1; // // bindentranceModel.BindStatus = CommonStatus.ENABLE; // // bindentranceModel.OrderNo = orderNo; // // bindentranceModel.MaterialDensity = "N/A"; // // bindentranceModel.Id = YitIdHelper.NextId(); // // await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel); // //} // return new StockReturnGroupDiskOutput() // { // Containercode = input.ContainerCode, // OrderNo = orderNo // }; // } /// <summary> /// æäº¤å ¥åº /// </summary> /// <returns></returns> [HttpPost("PdaInWarehouse")] [UnitOfWork] public async Task PdaInWarehouse([FromBody] StockReturnPdaInWarehouseInput input) { // /// <summary> // /// æäº¤å ¥åº // /// </summary> // /// <returns></returns> // [HttpPost("PdaInWarehouse")] // [UnitOfWork] // public async Task PdaInWarehouse([FromBody] StockReturnPdaInWarehouseInput input) // { //æ£æ¥æç var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(p => p.ContainerCode == input.ContainerCode && p.ContainerStatus != ContainerStatus.JINYONG); if (containerModel == null) throw Oops.Oh("æçä¸åå¨!"); // //æ£æ¥æç // var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(p => p.ContainerCode == input.ContainerCode && p.ContainerStatus != ContainerStatus.JINYONG); // if (containerModel == null) throw Oops.Oh("æçä¸åå¨!"); if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("容å¨åå¨åæ£ä¿¡æ¯!"); // if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("容å¨åå¨åæ£ä¿¡æ¯!"); var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO); if (isExit) throw Oops.Oh("æçå卿ªå®æä»»å¡ä¸!"); // var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO); // if (isExit) throw Oops.Oh("æçå卿ªå®æä»»å¡ä¸!"); var isInPlace = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus == ContainerStatus.KUWEI); if (isInPlace != null) throw Oops.Oh("æçåå¨åºä½ä¸!"); // var isInPlace = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus == ContainerStatus.KUWEI); // if (isInPlace != null) throw Oops.Oh("æçåå¨åºä½ä¸!"); isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE); if (isExit) throw Oops.Oh("æçåå¨åºä½ä¸!"); // isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE); // if (isExit) throw Oops.Oh("æçåå¨åºä½ä¸!"); //å é¤ç»çä¿¡æ¯ var oldwmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync(); // //å é¤ç»çä¿¡æ¯ // var oldwmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync(); if (oldwmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(oldwmsMaterialContainerList); // if (oldwmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(oldwmsMaterialContainerList); //ç»çåæ®å· var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(); if (input.WmsMaterials!=null || input.WmsMaterials.Count <= 0)//æç©æçæ åµ { foreach (var item in input.WmsMaterials) { var bindentranceModel = item.Adapt<WmsMaterialContainer>(); bindentranceModel.MaterialName = item.Materialname; bindentranceModel.MaterialNo = item.Materialcode; bindentranceModel.MaterialId = 4567; bindentranceModel.ContainerId = containerModel.Id; bindentranceModel.ContainerCode = containerModel.ContainerCode; bindentranceModel.MaterialBatch = "N/A"; bindentranceModel.MaterialSpec = "N/A"; bindentranceModel.BindQuantity = item.Qty; bindentranceModel.BindStatus = CommonStatus.ENABLE; bindentranceModel.OrderNo = orderNo; bindentranceModel.MaterialDensity = "N/A"; bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId(); await _wmsMaterialContainerRep.InsertAsync(bindentranceModel); ////æ´æ¹æç»å ¥åºæ°é //var wmsOrderDetailsModal = await _wmsOrderDetailsRep.FirstOrDefaultAsync(x => x.Id == item.Id); //wmsOrderDetailsModal.InventoryQty += item.Qty; } } //else//空æå ¥åºçæ åµ //{ // // å建æ°ç»çè®°å½ // var bindentranceModel = new WmsMaterialContainer(); // bindentranceModel.MaterialName = "空æ"; // bindentranceModel.MaterialNo = containerModel.ContainerCode; // bindentranceModel.MaterialId = 55555;//æå® // bindentranceModel.ContainerId = containerModel.Id; // bindentranceModel.ContainerCode = containerModel.ContainerCode; // bindentranceModel.MaterialBatch = "N/A";//æ ¹æ®ç©æç è§£æ // bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth; // bindentranceModel.BindQuantity = 1; // bindentranceModel.BindStatus = CommonStatus.ENABLE; // bindentranceModel.OrderNo = orderNo; // bindentranceModel.MaterialDensity = "N/A";//æ ¹æ®ç©æç è§£æ // bindentranceModel.Id = YitIdHelper.NextId(); // await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel); //} // //ç»çåæ®å· // var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(); // if (input.WmsMaterials!=null || input.WmsMaterials.Count <= 0)//æç©æçæ åµ // { // foreach (var item in input.WmsMaterials) // { // var bindentranceModel = item.Adapt<WmsMaterialContainer>(); // bindentranceModel.MaterialName = item.Materialname; // bindentranceModel.MaterialNo = item.Materialcode; // bindentranceModel.MaterialId = 4567; // bindentranceModel.ContainerId = containerModel.Id; // bindentranceModel.ContainerCode = containerModel.ContainerCode; // bindentranceModel.MaterialBatch = "N/A"; // bindentranceModel.MaterialSpec = "N/A"; // bindentranceModel.BindQuantity = item.Qty; // bindentranceModel.BindStatus = CommonStatus.ENABLE; // bindentranceModel.OrderNo = orderNo; // bindentranceModel.MaterialDensity = "N/A"; // bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId(); // await _wmsMaterialContainerRep.InsertAsync(bindentranceModel); // ////æ´æ¹æç»å ¥åºæ°é // //var wmsOrderDetailsModal = await _wmsOrderDetailsRep.FirstOrDefaultAsync(x => x.Id == item.Id); // //wmsOrderDetailsModal.InventoryQty += item.Qty; // } // } // //else//空æå ¥åºçæ åµ // //{ // // // å建æ°ç»çè®°å½ // // var bindentranceModel = new WmsMaterialContainer(); // // bindentranceModel.MaterialName = "空æ"; // // bindentranceModel.MaterialNo = containerModel.ContainerCode; // // bindentranceModel.MaterialId = 55555;//æå® // // bindentranceModel.ContainerId = containerModel.Id; // // bindentranceModel.ContainerCode = containerModel.ContainerCode; // // bindentranceModel.MaterialBatch = "N/A";//æ ¹æ®ç©æç è§£æ // // bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth; // // bindentranceModel.BindQuantity = 1; // // bindentranceModel.BindStatus = CommonStatus.ENABLE; // // bindentranceModel.OrderNo = orderNo; // // bindentranceModel.MaterialDensity = "N/A";//æ ¹æ®ç©æç è§£æ // // bindentranceModel.Id = YitIdHelper.NextId(); // // await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel); // //} ////ä¿®æ¹æçç¶æ //containerModel.ContainerStatus = ContainerStatus.ZUPANG; //await _wmsContainerRep.UpdateAsync(containerModel); //åé å··é var Aisle = 1; // ////ä¿®æ¹æçç¶æ // //containerModel.ContainerStatus = ContainerStatus.ZUPANG; // //await _wmsContainerRep.UpdateAsync(containerModel); // //åé å··é // var Aisle = 1; //ä»»å¡ var takmodel = new WmsTask() { TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(), TaskModel = TaskModel.QUANZIDONG, TaskType = TaskType.RUKU, TaskLevel = 1, TaskStatus = TaskStatusEnum.ZHIXINGZHONG, OrderNo = orderNo, OrderDetailsId = 0, ContainerCode = input.ContainerCode, SourcePlace = "å ¥åºå£",//ç°åºæ åµä¸ºç©º ToPlace = "", //ç®æ ä½ AreaName = "ç»ç¼ç«åº", IsRead = true, //WCSæ¯å¦å¯ä»¥è¯»å SendTimes = 1, //å鿬¡æ° Aisle = Aisle,// æ ¹æ®åºåºidè·åå å·æåæºï¼æµè¯ä½¿ç¨ä¸å· TaskDodeviceStatus = TaskDodeviceStatusEnum.W }; if (input.WmsMaterials == null || input.WmsMaterials.Count <= 0) { takmodel.Description = "空æ"; } else { takmodel.Description = "ç©æ"; }; // //ä»»å¡ // var takmodel = new WmsTask() // { // TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(), // TaskModel = TaskModel.QUANZIDONG, // TaskType = TaskType.RUKU, // TaskLevel = 1, // TaskStatus = TaskStatusEnum.ZHIXINGZHONG, // OrderNo = orderNo, // OrderDetailsId = 0, // ContainerCode = input.ContainerCode, // SourcePlace = "å ¥åºå£",//ç°åºæ åµä¸ºç©º // ToPlace = "", //ç®æ ä½ // AreaName = "ç»ç¼ç«åº", // IsRead = true, //WCSæ¯å¦å¯ä»¥è¯»å // SendTimes = 1, //å鿬¡æ° // Aisle = Aisle,// æ ¹æ®åºåºidè·åå å·æåæºï¼æµè¯ä½¿ç¨ä¸å· // TaskDodeviceStatus = TaskDodeviceStatusEnum.W // }; // if (input.WmsMaterials == null || input.WmsMaterials.Count <= 0) { // takmodel.Description = "空æ"; // } // else // { // takmodel.Description = "ç©æ"; // }; await _wmsTaskRep.InsertAsync(takmodel); } } } // await _wmsTaskRep.InsertAsync(takmodel); // } // } //} iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsArea.cs
@@ -4,7 +4,7 @@ /* * @author : åæå¥ * @date : 2024/4/23ä¸å5:33:52 * @date : 2024/4/23ä¸å6:31:24 * @desc : åºåºè¡¨ */ namespace Admin.NET.Core @@ -90,6 +90,51 @@ /// <summary> /// é¶ä»¶çº§ç®¡æ§ /// </summary> [Comment("é¶ä»¶çº§ç®¡æ§")] [Required] public bool IsBarcodeLevelControl { get; set; } /// <summary> /// æ£éªå è¿å åº /// </summary> [Comment("æ£éªå è¿å åº")] [Required] public bool IsFIFO { get; set; } /// <summary> /// é¶ä»¶çº§ç®¡æ§ /// </summary> [Comment("é¶ä»¶çº§ç®¡æ§")] [Required] public bool IsPartLevelControl { get; set; } /// <summary> /// å è®¸æ··æ· /// </summary> [Comment("å 许混æ·")] [Required] public bool IsAllowConfusion { get; set; } /// <summary> /// å 许è´åºå /// </summary> [Comment("å 许è´åºå")] [Required] public bool IsAllowNegativeInventory { get; set; } /// <summary> /// æ¯å¦èæ /// </summary> [Comment("æ¯å¦èæ")] iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsContainer.cs
@@ -1,18 +1,23 @@ using Furion.DatabaseAccessor; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; /* * @author : æ¨çåå * @date : 2024/4/23ä¸å6:42:15 * @desc : 容å¨ä¿¡æ¯è¡¨ */ namespace Admin.NET.Core { /// <summary> /// æçä¿¡æ¯è¡¨ /// 容å¨ä¿¡æ¯è¡¨ /// </summary> [Table("wms_container")] [Comment("æçä¿¡æ¯è¡¨")] public class WmsContainer : DEntityBase //, IEntityTypeBuilder<WmsContainer> [Comment("容å¨ä¿¡æ¯è¡¨")] public class WmsContainer : DEntityBase { /// <summary> /// ç¼å· /// </summary> @@ -21,130 +26,145 @@ [MaxLength(50)] public string ContainerCode { get; set; } /// <summary> /// ç±»å;æ°æ®åå ¸ /// </summary> [Comment("ç±»å")] [Required] public ContainerType ContainerType { get; set; } /// <summary> /// æçç¶æ;æ°æ®åå ¸ /// åç§° /// </summary> [Comment("æçç¶æ")] [Comment("åç§°")] [Required] public ContainerStatus ContainerStatus { get; set; } [MaxLength(50)] public string ContainerName { get; set; } /// <summary> /// ç±»åID /// </summary> [Comment("ç±»åID")] [Required] public long ContainerTypeId { get; set; } /// <summary> /// ç±»ååç§° /// </summary> [Comment("ç±»ååç§°")] [Required] [MaxLength(50)] public string ContainerTypeName { get; set; } /// <summary> /// 容å¨å ³ç³»ID /// </summary> [Comment("容å¨å ³ç³»ID")] public long? PackagingId { get; set; } /// <summary> /// é¿åº¦ /// </summary> [Comment("é¿åº¦")] public decimal SpecLength { get; set; } [Column("SpecLength", TypeName = "decimal(10,3)")] public decimal? SpecLength { get; set; } /// <summary> /// 宽度 /// </summary> [Comment("宽度")] public decimal SpecWidth { get; set; } [Column("SpecWidth", TypeName = "decimal(10,3)")] public decimal? SpecWidth { get; set; } /// <summary> /// é«åº¦ /// </summary> [Comment("é«åº¦")] public decimal SpecHeight { get; set; } [Column("SpecHeight", TypeName = "decimal(10,3)")] public decimal? SpecHeight { get; set; } /// <summary> /// éé¿ /// </summary> [Comment("éé¿")] public decimal LimitLength { get; set; } [Column("LimitLength", TypeName = "decimal(10,3)")] public decimal? LimitLength { get; set; } /// <summary> /// é宽 /// </summary> [Comment("é宽")] public decimal LimitWidth { get; set; } [Column("LimitWidth", TypeName = "decimal(10,3)")] public decimal? LimitWidth { get; set; } /// <summary> /// éé« /// </summary> [Comment("éé«")] public decimal LimitHeight { get; set; } [Column("LimitHeight", TypeName = "decimal(10,3)")] public decimal? LimitHeight { get; set; } /// <summary> /// è½½éä¸é /// </summary> [Comment("è½½éä¸é")] public decimal MaxWeight { get; set; } [Column("MaxWeight", TypeName = "decimal(10,3)")] public decimal? MaxWeight { get; set; } /// <summary> /// ç¶æçId /// ç¶å®¹å¨åç§° /// </summary> [Comment("ç¶æçId")] public long ParentContainerId { get; set; } [Comment("ç¶å®¹å¨åç§°")] [MaxLength(255)] public string ParentContainerName { get; set; } /// <summary> /// èµäº§ç¼å· /// ç¶å®¹å¨Id /// </summary> [Comment("èµäº§ç¼å·")] [Required] [MaxLength(50)] public string AssetNo { get; set; } [Comment("ç¶å®¹å¨Id")] public long? ParentContainerId { get; set; } /// <summary> /// æçåç±» /// </summary> [Comment("æçåç±»")] [Required] public ContainerCategory ContainerCategory { get; set; } = ContainerCategory.TY; /// <summary> /// Erpåå· /// </summary> [Comment("Erpåå·")] [Required] [MaxLength(50)] public string ErpNo { get; set; } /// <summary> /// æ¯å¦èæ;æ°æ®åå ¸ /// æ¯å¦èæ /// </summary> [Comment("æ¯å¦èæ")] [Required] public YesOrNot IsVirtually { get; set; } = YesOrNot.N; public int IsVirtually { get; set; } /// <summary> /// æå±è½¦é´ /// æ¯å¦ç¦ç¨ /// </summary> [Comment("æå±è½¦é´")] [Comment("æ¯å¦ç¦ç¨")] [Required] public LesWorkShopType WorkShopType { get; set; } ///// <summary> ///// ç»è£ 车é´ç©ææçå ³ç³»è¡¨ ///// </summary> //public ICollection<WmsAssembleMaterialContainer> WmsAssembleMaterialContainer { get; set; } public bool IsDisabled { get; set; } ///// <summary> ///// ç©ææçåå²è¡¨ ///// </summary> //public ICollection<WmsAssembleHistoryMaterialContainer> WmsAssembleHistoryMaterialContainer { get; set; } ///// <summary> ///// æå»ºä¸å¯¹å¤çå ³ç³» ///// </summary> ///// <param name="entityBuilder"></param> ///// <param name="dbContext"></param> ///// <param name="dbContextLocator"></param> //public void Configure(EntityTypeBuilder<WmsContainer> entityBuilder, DbContext dbContext, Type dbContextLocator) //{ // entityBuilder.HasMany(x => x.WmsAssembleMaterialContainer) // .WithOne(x => x.WmsContainer) // .HasForeignKey(x => x.ContainerId); // entityBuilder.HasMany(x => x.WmsAssembleHistoryMaterialContainer) // .WithOne(x => x.WmsContainer) // .HasForeignKey(x => x.Id).IsRequired(false); //} } } } iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsContainerType.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,79 @@ using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; /* * @author : åæå¥ * @date : 2024/4/23ä¸å6:36:33 * @desc : 容å¨ç±»å */ namespace Admin.NET.Core { /// <summary> /// 容å¨ç±»å /// </summary> [Table("wms_container_type")] [Comment("容å¨ç±»å")] public class WmsContainerType : DEntityBase { /// <summary> /// ç±»åç¼å· /// </summary> [Comment("ç±»åç¼å·")] [MaxLength(255)] public string TypeCode { get; set; } /// <summary> /// ç±»ååç§° /// </summary> [Comment("ç±»ååç§°")] [MaxLength(255)] public string TypeName { get; set; } /// <summary> /// æ¯å¦åæ¶ /// </summary> [Comment("æ¯å¦åæ¶")] [Required] public bool IsAllowReclaim { get; set; } /// <summary> /// åä½ /// </summary> [Comment("åä½")] [MaxLength(50)] public string Unit { get; set; } /// <summary> /// ä½¿ç¨æé /// </summary> [Comment("ä½¿ç¨æé")] [MaxLength(50)] public string UsagePeriod { get; set; } /// <summary> /// æ¯å¦ç¦ç¨ /// </summary> [Comment("æ¯å¦ç¦ç¨")] [Required] public bool IsDisabled { get; set; } } } iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPlace.cs
@@ -4,7 +4,7 @@ /* * @author : åæå¥ * @date : 2024/4/23ä¸å6:13:28 * @date : 2024/4/23ä¸å6:30:44 * @desc : åºä½è¡¨ */ namespace Admin.NET.Core @@ -32,7 +32,7 @@ /// </summary> [Comment("åºä½åç§°")] [Required] [MaxLength(255)] [MaxLength(50)] public string PlaceName { get; set; } @@ -40,7 +40,7 @@ /// åºä½å«å /// </summary> [Comment("åºä½å«å")] [MaxLength(255)] [MaxLength(50)] public string PlaceAlias { get; set; } @@ -54,19 +54,20 @@ /// <summary> /// åæ¾åä½ /// </summary> [Comment("åæ¾åä½")] [MaxLength(255)] public string StockUnit { get; set; } /// <summary> /// åºä½ç±»ååç§° /// </summary> [Comment("åºä½ç±»ååç§°")] [Required] [MaxLength(50)] public string PlaceTypeName { get; set; } /// <summary> /// åæ¾åä½ /// </summary> [Comment("åæ¾åä½")] [MaxLength(50)] public string StockUnit { get; set; } /// <summary> @@ -76,46 +77,6 @@ [Required] public int PlaceStatus { get; set; } /// <summary> /// æ¡ç çº§ç®¡æ§ /// </summary> [Comment("æ¡ç 级管æ§")] public bool? IsBarcodeLevelControl { get; set; } /// <summary> /// å è®¸æ··æ· /// </summary> [Comment("å 许混æ·")] public bool? IsAllowConfusion { get; set; } /// <summary> /// å 许è´åºå /// </summary> [Comment("å 许è´åºå")] public bool? IsAllowNegativeInventory { get; set; } /// <summary> /// æ£éªå è¿å åº /// </summary> [Comment("æ£éªå è¿å åº")] public bool? IsFIFO { get; set; } /// <summary> /// é¶ä»¶çº§ç®¡æ§ /// </summary> [Comment("é¶ä»¶çº§ç®¡æ§")] public bool? IsPartLevelControl { get; set; } /// <summary> @@ -199,6 +160,15 @@ /// <summary> /// åºåºç¼å· /// </summary> [Comment("åºåºç¼å·")] [Required] [MaxLength(50)] public string AreaCode { get; set; } /// <summary> /// æå¨åºåº /// </summary> [Comment("æå¨åºåº")] @@ -211,7 +181,8 @@ /// åºåºåç§° /// </summary> [Comment("åºåºåç§°")] [MaxLength(255)] [Required] [MaxLength(50)] public string AreaName { get; set; } @@ -317,15 +288,6 @@ [Required] [Column("MaxWeight", TypeName = "decimal(10,3)")] public decimal MaxWeight { get; set; } /// <summary> /// åºä½é«åº¦å±æ§ /// </summary> [Comment("åºä½é«åº¦å±æ§")] [Required] public int HeightLevel { get; set; } /// <summary>