From 0f403387ed56797c267e7da72187b9bc8282280b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=AD=A3=E6=98=93?= Date: Thu, 6 Feb 2025 09:09:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=99=E6=9E=B6=E5=8A=9F=E8=83=BD=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E4=BA=AE=E7=81=AF=E7=9C=8B=E6=9D=BF=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PBL/BigScreenController.cs | 11 ++- .../PBL/StoragelocationController.cs | 38 ++++++++++ .../PBL/Dto/BIgScreenDtoLightPickupDto.cs | 49 +++++++++---- DOAN.Model/PBL/Dto/CommonDto.cs | 15 ++++ DOAN.Service/PBL/BigScreenService.cs | 73 +++++++++++++++---- .../PBL/IService/IBigScreenService.cs | 11 ++- .../PBL/IService/IStoragelocationService.cs | 19 +++++ DOAN.Service/PBL/StoragelocationService.cs | 36 +++++++++ 8 files changed, 219 insertions(+), 33 deletions(-) create mode 100644 DOAN.Model/PBL/Dto/CommonDto.cs diff --git a/DOAN.Admin.WebApi/Controllers/PBL/BigScreenController.cs b/DOAN.Admin.WebApi/Controllers/PBL/BigScreenController.cs index c00886d..fa950c7 100644 --- a/DOAN.Admin.WebApi/Controllers/PBL/BigScreenController.cs +++ b/DOAN.Admin.WebApi/Controllers/PBL/BigScreenController.cs @@ -17,8 +17,15 @@ public class BigScreenController : BaseController { this._BigScreenService = _BigScreenService; } - - + + //TODO 综合查询料架情况 + [HttpGet("SearchBigScreenInformation")] + public IActionResult SearchBigScreenInformation() + { + var response = _BigScreenService.SearchBigScreenInformation(); + return SUCCESS(response); + } + //TODO 查询料架灯 亮和灭 情况 [HttpGet("searchShelfLightInfomation")] public IActionResult SearchShelfLightInfomation() diff --git a/DOAN.Admin.WebApi/Controllers/PBL/StoragelocationController.cs b/DOAN.Admin.WebApi/Controllers/PBL/StoragelocationController.cs index 77193e0..9111360 100644 --- a/DOAN.Admin.WebApi/Controllers/PBL/StoragelocationController.cs +++ b/DOAN.Admin.WebApi/Controllers/PBL/StoragelocationController.cs @@ -113,5 +113,43 @@ namespace DOAN.Admin.WebApi.Controllers.PBL return ToResponse(_StoragelocationService.Delete(idArr)); } + + + /// + /// 获取料架下拉数据 + /// + /// + [HttpGet("GetRackCodeOptions")] + [AllowAnonymous] + public IActionResult GetRackCodeOptions() + { + var response = _StoragelocationService.GetRackCodeOptions(); + return SUCCESS(response); + } + + /// + /// 获取BOM中的零件号下拉 + /// + /// + [HttpGet("GetPartNumberOptions")] + [AllowAnonymous] + public IActionResult GetPartNumberOptions() + { + var response = _StoragelocationService.GetPartNumberOptions(); + return SUCCESS(response); + } + + /// + /// 修改料架的零件号 + /// + /// + [HttpGet("UpdateRackPartNumber")] + [AllowAnonymous] + public IActionResult UpdateRackPartNumber(string rackCode, int layerNum, string partnumber) + { + var response = _StoragelocationService.UpdateRackPartNumber(rackCode,layerNum,partnumber); + return SUCCESS(response); + } + } } \ No newline at end of file diff --git a/DOAN.Model/PBL/Dto/BIgScreenDtoLightPickupDto.cs b/DOAN.Model/PBL/Dto/BIgScreenDtoLightPickupDto.cs index 3d5c016..21423d8 100644 --- a/DOAN.Model/PBL/Dto/BIgScreenDtoLightPickupDto.cs +++ b/DOAN.Model/PBL/Dto/BIgScreenDtoLightPickupDto.cs @@ -1,11 +1,30 @@ namespace DOAN.Model.PBL.Dto; +/// +/// 综合料架信息 +/// +public class BigScreenDto +{ + // 标题 + public string Title { get; set; } + // 料架号 + public string RackCode { get; set; } + // 箱子数组 + public LayerObject[] LayerObjectArray { get; set; } + // 是否亮灯 + public bool IsLight { get; set; } + // 料架是否使用 + public bool IsInUse { get; set; } + // 是否缺料 + public bool IsFeedingMaterial { get; set; } +} + public class BIgScreenDtoLightPickupDto { //料架号 public string RackCode { get; set; } - // + // public LayerObject[] LayerObjectArray { get; set; } //是否亮灯 @@ -17,7 +36,7 @@ public class BigSreeenDtoFeedingMaterial //料架号 public string RackCode { get; set; } - // + // public LayerFeedingMaterialObject[] LayerObjectArray { get; set; } //是否补料 @@ -26,20 +45,22 @@ public class BigSreeenDtoFeedingMaterial public class LayerObject { + // 零件号 + public string Partnumber { get; set; } // 层号 public int LayerNum { get; set; } - - // 零件号 - public string Partnumber { get; set; } - // 最大容量 public int MaxCapacity { get; set; } - - // 箱子数 - public int? PackageNum { get; set; } - + // 当前箱子数 + public int PackageNum { get; set; } //是否亮灯 - public bool isLight { get; set; } + public bool IsLight { get; set; } + // 最低安全库存 + public int AlarmNum { get; set; } + // 是否启用报警 + public int IsLackAlarm { get; set; } + //是否缺料 + public bool IsFeedingMaterial { get; set; } } public class LayerFeedingMaterialObject @@ -47,15 +68,15 @@ public class LayerFeedingMaterialObject // 层号 public int LayerNum { get; set; } - // 零件号 + // 零件号 public string Partnumber { get; set; } // 最大容量 public int MaxCapacity { get; set; } - // 箱子数 + // 箱子数 public int? PackageNum { get; set; } //是否亮灯 public bool isFeedingMaterial { get; set; } -} \ No newline at end of file +} diff --git a/DOAN.Model/PBL/Dto/CommonDto.cs b/DOAN.Model/PBL/Dto/CommonDto.cs new file mode 100644 index 0000000..777bf20 --- /dev/null +++ b/DOAN.Model/PBL/Dto/CommonDto.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DOAN.Model.PBL.Dto +{ + public class SelectOptionsDto + { + public string Key { get; set; } + public string Label { get; set; } + public string Value { get; set; } + } +} diff --git a/DOAN.Service/PBL/BigScreenService.cs b/DOAN.Service/PBL/BigScreenService.cs index bb4f215..adbb806 100644 --- a/DOAN.Service/PBL/BigScreenService.cs +++ b/DOAN.Service/PBL/BigScreenService.cs @@ -9,7 +9,7 @@ namespace DOAN.Service.PBL; public class BigScreenService : BaseService, IBigScreenService { /// - /// 查询料架灯 亮和灭 情况 + /// 查询料架灯 亮和灭 情况 (功能迁移至SearchBigScreenInfomation,新增最低安全库存等功能) /// /// public List SearchShelfLightInfomation() @@ -17,7 +17,10 @@ public class BigScreenService : BaseService, IBigScreenService var result = new List(); // 1 查询所有料架 - var RackCodeArray = Context.Queryable().GroupBy(it => it.RackCode).Select(it => it.RackCode) + var RackCodeArray = Context + .Queryable() + .GroupBy(it => it.RackCode) + .Select(it => it.RackCode) .ToArray(); var DataSoure = Context.Queryable().ToList(); @@ -37,8 +40,8 @@ public class BigScreenService : BaseService, IBigScreenService LayerObject.LayerNum = LayerSheelfList[j].LayerNum; LayerObject.Partnumber = LayerSheelfList[j].Partnumber; LayerObject.MaxCapacity = LayerSheelfList[j].MaxCapacity; - LayerObject.PackageNum = LayerSheelfList[j].PackageNum; - LayerObject.isLight = LayerSheelfList[j].IsLight == 1 ? true : false; + LayerObject.PackageNum = LayerSheelfList[j].PackageNum ?? 0; + LayerObject.IsLight = LayerSheelfList[j].IsLight == 1 ? true : false; LayerObjectfArray[j] = LayerObject; } @@ -57,18 +60,21 @@ public class BigScreenService : BaseService, IBigScreenService result.Add(RackCodeObject); } - return result.OrderBy(it => it.RackCode).ToList(); } - - - + /// + /// (功能迁移至SearchBigScreenInfomation,新增最低安全库存等功能) + /// + /// public List SearchfeedingMaterialInfomation() { var result = new List(); // 1 查询所有料架 - var RackCodeArray = Context.Queryable().GroupBy(it => it.RackCode).Select(it => it.RackCode) + var RackCodeArray = Context + .Queryable() + .GroupBy(it => it.RackCode) + .Select(it => it.RackCode) .ToArray(); var DataSoure = Context.Queryable().ToList(); @@ -89,7 +95,8 @@ public class BigScreenService : BaseService, IBigScreenService LayerObject.Partnumber = LayerSheelfList[j].Partnumber; LayerObject.MaxCapacity = LayerSheelfList[j].MaxCapacity; LayerObject.PackageNum = LayerSheelfList[j].PackageNum; - LayerObject.isFeedingMaterial = LayerSheelfList[j].PackageNum <= 2 ? true : false; + LayerObject.isFeedingMaterial = + LayerSheelfList[j].PackageNum <= 2 ? true : false; LayerObjectfArray[j] = LayerObject; } @@ -108,9 +115,47 @@ public class BigScreenService : BaseService, IBigScreenService result.Add(RackCodeObject); } - return result.OrderBy(it => it.RackCode).ToList(); - } - -} \ No newline at end of file + /// + /// 看板综合信息查询 + /// + /// + public List SearchBigScreenInformation() + { + // 一次性获取所有数据并按RackCode分组 + var rackGroups = Context.Queryable() + .ToList() + .GroupBy(sl => sl.RackCode) + .OrderBy(g => g.Key); + + var result = new List(); + + foreach (var group in rackGroups) + { + var layers = group.ToList(); + var layerObjects = layers.Select(layer => new LayerObject + { + LayerNum = layer.LayerNum, + Partnumber = layer.Partnumber, + MaxCapacity = layer.MaxCapacity, + AlarmNum = layer.AlarmNum ?? 2, // 确认默认值 + PackageNum = layer.PackageNum ?? 0, + IsLight = layer.IsLight == 1, + IsFeedingMaterial = (layer.PackageNum ?? 0) <= (layer.AlarmNum ?? 2) && layer.IsLackAlarm == 1 + }).ToArray(); + var rackDto = new BigScreenDto + { + Title = group.Key, + RackCode = group.Key, + IsLight = layers.Any(l => l.IsLight == 1), + IsInUse = layers.Any(l => l.IsLackAlarm == 1), + IsFeedingMaterial = layers.Any(l => (l.PackageNum ?? 0) <= (l.AlarmNum ?? 2) && l.IsLackAlarm == 1), + LayerObjectArray = layerObjects + }; + result.Add(rackDto); + } + + return result; + } +} diff --git a/DOAN.Service/PBL/IService/IBigScreenService.cs b/DOAN.Service/PBL/IService/IBigScreenService.cs index 05e9a9a..7b27224 100644 --- a/DOAN.Service/PBL/IService/IBigScreenService.cs +++ b/DOAN.Service/PBL/IService/IBigScreenService.cs @@ -5,8 +5,13 @@ namespace DOAN.Service.PBL.IService; public interface IBigScreenService : IBaseService { - List SearchShelfLightInfomation(); + /// + /// ѯϼصĻϢ + /// + /// + List SearchBigScreenInformation(); - List SearchfeedingMaterialInfomation(); + List SearchShelfLightInfomation(); -} \ No newline at end of file + List SearchfeedingMaterialInfomation(); +} diff --git a/DOAN.Service/PBL/IService/IStoragelocationService.cs b/DOAN.Service/PBL/IService/IStoragelocationService.cs index c362667..fac9f5f 100644 --- a/DOAN.Service/PBL/IService/IStoragelocationService.cs +++ b/DOAN.Service/PBL/IService/IStoragelocationService.cs @@ -8,6 +8,19 @@ namespace DOAN.Service.PBL.IService /// public interface IStoragelocationService : IBaseService { + /// + /// 获取料架下拉数据 + /// + /// + List GetRackCodeOptions(); + /// + /// 获取BOM中的零件号下拉 + /// + /// + List GetPartNumberOptions(); + + + PagedInfo GetList(StoragelocationQueryDto parm); Storagelocation GetInfo(int Id); @@ -22,5 +35,11 @@ namespace DOAN.Service.PBL.IService /// /// List GetPartNumberList(); + + /// + /// 修改料架的零件号 + /// + /// + int UpdateRackPartNumber(string rackCode,int layerNum,string partnumber); } } diff --git a/DOAN.Service/PBL/StoragelocationService.cs b/DOAN.Service/PBL/StoragelocationService.cs index 46dcfef..f19561d 100644 --- a/DOAN.Service/PBL/StoragelocationService.cs +++ b/DOAN.Service/PBL/StoragelocationService.cs @@ -96,6 +96,42 @@ namespace DOAN.Service.PBL return predicate; } + public List GetRackCodeOptions() + { + var response = Queryable() + .GroupBy(it => it.RackCode) + .OrderBy(it => it.RackCode) + .Select(it => new SelectOptionsDto() + { + Key = SqlFunc.AggregateMax(it.Id).ToString(), + Label = SqlFunc.AggregateMax(it.RackCode), + Value = SqlFunc.AggregateMax(it.RackCode) + }) + .OrderBy(it => it.Key) + .ToList(); + return response; + } + public List GetPartNumberOptions() + { + var response = Context.Queryable() + .Select(it => new SelectOptionsDto() + { + Key = it.Id.ToString(), + Label = it.Productname + it.Productcode + " " + it.MirrorshellName + it.MirrorshellCode, + Value = it.MirrorshellCode + }) + .OrderBy(it => it.Key) + .ToList(); + return response; + } + + public int UpdateRackPartNumber(string rackCode, int layerNum, string partnumber) + { + return Context.Updateable() + .SetColumns(it => it.Partnumber == partnumber ) + .Where(it => it.RackCode == rackCode && it.LayerNum == layerNum) + .ExecuteCommand(); + } } } \ No newline at end of file