using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Metadata;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEA_Core.Enums;
using WIDESEA_DTO;
using WIDESEA_Model.Models;
using WIDESEA_Repository;
using WIDESEAWCS_BasicInfoRepository;
using WIDESEAWCS_Model.Models;
namespace WIDESEA_StoragIntegrationServices
{
public partial class WCSService
{
///
/// 请求入库巷道号
///
///
///
public WebResponseContent RequestEmptyInboundRoadWayNo(RequestTaskDto json)
{
WebResponseContent response = new WebResponseContent();
try
{
var carInfo = _carBodyInfoRepository.QueryFirst(x => x.RFID == json.PVI && x.PalletCode == json.PalletCode);
if (carInfo == null) throw new Exception("未知空撬信息,无法入库");
//{
// Dt_CarBodyInfo _CarBodyInfo = new Dt_CarBodyInfo //测试
// {
// PVI = "J25000660",
// RFID = json.PVI,
// BodyStatus = 0,
// CarType = 1,
// };
//}
var maxGroup = _locationRepository.QueryData(x => x.LocationType == 3 && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == (int)EnableEnum.Enable)
.GroupBy(x => x.RoadwayNo)
.OrderByDescending(g => g.Count()) // 根据每个组的元素数量排序
.ToList(); // 取出数量最多的组
Dictionary result = new Dictionary();
foreach (var item in maxGroup)
{
var number = _taskRepository.QueryData(x => x.TargetAddress == item.Key).Count();
if (item.Count() - number <= 0)
{
continue;
}
result.Add(item.Key, item.Count() - number);
}
string maxRoadwayNo = result.OrderByDescending(x => x.Value).FirstOrDefault().Key; // 数量最多的组的Key
var station = _stationManagerRepository.QueryFirst(x => x.RoadwayNo == maxRoadwayNo && x.stationArea == json.area && x.stationType == 6);
var newtask = new Dt_Task
{
CurrentAddress = json.Position,
Grade = 1,
Roadway = station.Roadway,
TargetAddress = station.Roadway,
//Dispatchertime = DateTime.Now,
NextAddress = station.stationChildCode,
OrderNo = null,
PalletCode = json.PalletCode,
SourceAddress = json.Position,
TaskState = (int)TaskInStatusEnum.InNew,
TaskType = (int)TaskInboundTypeEnum.InTray,
TaskNum = _taskRepository.GetTaskNo().Result,
Creater = "Systeam",
PVI = json.PVI,
};
_unitOfWorkManage.BeginTran();
_taskRepository.AddData(newtask);
//location.LocationStatus = (int)LocationEnum.InStockDisable;
//_locationRepository.UpdateData(location);
_unitOfWorkManage.CommitTran();
response.OK("空撬申请入库成功", data: newtask);
//response.OK(data: maxRoadwayNo);
}
catch (Exception ex)
{
response.Error($"请求巷道号失败:{ex.Message}");
}
return response;
}
}
}