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