pblbackend/DOAN.Service/PBL/BigScreenService.cs

162 lines
6.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using DOAN.Model.PBL;
using DOAN.Model.PBL.Dto;
using DOAN.Service.PBL.IService;
using Infrastructure.Attribute;
namespace DOAN.Service.PBL;
[AppService(ServiceType = typeof(IBigScreenService), ServiceLifetime = LifeTime.Transient)]
public class BigScreenService : BaseService<Storagelocation>, IBigScreenService
{
/// <summary>
/// 查询料架灯 亮和灭 情况 (功能迁移至SearchBigScreenInfomation新增最低安全库存等功能)
/// </summary>
/// <returns></returns>
public List<BIgScreenDtoLightPickupDto> SearchShelfLightInfomation()
{
var result = new List<BIgScreenDtoLightPickupDto>();
// 1 查询所有料架
var RackCodeArray = Context
.Queryable<Storagelocation>()
.GroupBy(it => it.RackCode)
.Select(it => it.RackCode)
.ToArray();
var DataSoure = Context.Queryable<Storagelocation>().ToList();
//2 查询每个料架层
for (var i = 0; i < RackCodeArray.Length; i++)
{
var RackCodeObject = new BIgScreenDtoLightPickupDto();
RackCodeObject.RackCode = RackCodeArray[i];
var LayerSheelfList = DataSoure.Where(it => it.RackCode == RackCodeArray[i]).ToList();
var LayerObjectfArray = new LayerObject[LayerSheelfList.Count];
if (LayerSheelfList != null && LayerSheelfList.Count > 0)
{
for (var j = 0; j < LayerSheelfList.Count; j++)
{
var LayerObject = new LayerObject();
LayerObject.LayerNum = LayerSheelfList[j].LayerNum;
LayerObject.Partnumber = LayerSheelfList[j].Partnumber;
LayerObject.MaxCapacity = LayerSheelfList[j].MaxCapacity;
LayerObject.PackageNum = LayerSheelfList[j].PackageNum ?? 0;
LayerObject.IsLight = LayerSheelfList[j].IsLight == 1 ? true : false;
LayerObjectfArray[j] = LayerObject;
}
for (var j = 0; j < LayerSheelfList.Count; j++)
{
RackCodeObject.isLight = false;
if (LayerSheelfList[j].IsLight == 1)
{
RackCodeObject.isLight = true;
break;
}
}
}
RackCodeObject.LayerObjectArray = LayerObjectfArray;
result.Add(RackCodeObject);
}
return result.OrderBy(it => it.RackCode).ToList();
}
/// <summary>
/// (功能迁移至SearchBigScreenInfomation新增最低安全库存等功能)
/// </summary>
/// <returns></returns>
public List<BigSreeenDtoFeedingMaterial> SearchfeedingMaterialInfomation()
{
var result = new List<BigSreeenDtoFeedingMaterial>();
// 1 查询所有料架
var RackCodeArray = Context
.Queryable<Storagelocation>()
.GroupBy(it => it.RackCode)
.Select(it => it.RackCode)
.ToArray();
var DataSoure = Context.Queryable<Storagelocation>().ToList();
//2 查询每个料架层
for (var i = 0; i < RackCodeArray.Length; i++)
{
var RackCodeObject = new BigSreeenDtoFeedingMaterial();
RackCodeObject.RackCode = RackCodeArray[i];
var LayerSheelfList = DataSoure.Where(it => it.RackCode == RackCodeArray[i]).ToList();
var LayerObjectfArray = new LayerFeedingMaterialObject[LayerSheelfList.Count];
if (LayerSheelfList != null && LayerSheelfList.Count > 0)
{
for (var j = 0; j < LayerSheelfList.Count; j++)
{
var LayerObject = new LayerFeedingMaterialObject();
LayerObject.LayerNum = LayerSheelfList[j].LayerNum;
LayerObject.Partnumber = LayerSheelfList[j].Partnumber;
LayerObject.MaxCapacity = LayerSheelfList[j].MaxCapacity;
LayerObject.PackageNum = LayerSheelfList[j].PackageNum;
LayerObject.isFeedingMaterial =
LayerSheelfList[j].PackageNum <= 2 ? true : false;
LayerObjectfArray[j] = LayerObject;
}
for (var j = 0; j < LayerSheelfList.Count; j++)
{
RackCodeObject.isFeedingMaterial = false;
if (LayerSheelfList[j].PackageNum <= 2)
{
RackCodeObject.isFeedingMaterial = true;
break;
}
}
}
RackCodeObject.LayerObjectArray = LayerObjectfArray;
result.Add(RackCodeObject);
}
return result.OrderBy(it => it.RackCode).ToList();
}
/// <summary>
/// 看板综合信息查询
/// </summary>
/// <returns></returns>
public List<BigScreenDto> SearchBigScreenInformation()
{
// 一次性获取所有数据并按RackCode分组
var rackGroups = Context.Queryable<Storagelocation>()
.ToList()
.GroupBy(sl => sl.RackCode)
.OrderBy(g => g.Key);
var result = new List<BigScreenDto>();
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;
}
}