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
|
{
|
/// <summary>
|
/// 请求入库巷道号
|
/// </summary>
|
/// <param name="json"></param>
|
/// <returns></returns>
|
public WebResponseContent RequestInboundRoadWayNo(RequestTaskDto json)
|
{
|
WebResponseContent response = new WebResponseContent();
|
try
|
{
|
//屏蔽MES
|
if (json.Position == "EL01RB")
|
{
|
//焊装提升机
|
HZPassTZ(json);
|
}
|
else
|
{
|
///涂装提升机
|
TZPassZZ(json);
|
}
|
|
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,
|
// };
|
//}
|
|
List<Dt_RoadWay> roadWays = new List<Dt_RoadWay>();
|
if (carInfo.CarType == 1)
|
{
|
roadWays = _roadWayRepository.QueryData(x => x.WirteCar == 1);
|
}
|
else if (carInfo.CarType == 2)
|
{
|
roadWays = _roadWayRepository.QueryData(x => x.WirteCar == 2);
|
}
|
|
var maxGroup = _locationRepository.QueryData(x => (x.LocationType == carInfo.CarType || x.LocationType == 3) && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == (int)EnableEnum.Enable)
|
.GroupBy(x => x.RoadwayNo)
|
.OrderByDescending(g => g.Count()) // 根据每个组的元素数量排序
|
.ToList(); // 取出数量最多的组
|
|
Dictionary<string, int> result = new Dictionary<string, int>();
|
foreach (var item in maxGroup)
|
{
|
var number = _taskRepository.QueryData(x => x.TargetAddress == item.Key).Count();
|
result.Add(item.Key, item.Count() - number);
|
}
|
|
string maxRoadwayNo = result.OrderByDescending(x => x.Value).FirstOrDefault().Key; // 数量最多的组的Key
|
|
var stationList = _stationManagerRepository.QueryData(x => x.RoadwayNo == maxRoadwayNo && x.stationArea == json.area && x.stationType == 1);
|
|
Dt_StationManager station = null;
|
|
if (stationList.Count > 1)
|
{
|
var task = _taskRepository.QueryData(x => x.Roadway == stationList.FirstOrDefault().Roadway).OrderByDescending(x => x.CreateDate).FirstOrDefault();
|
if (task != null) station = stationList.Where(x => x.stationChildCode != task.NextAddress && x.stationChildCode != task.CurrentAddress).FirstOrDefault();
|
else station = stationList.FirstOrDefault();
|
}
|
else
|
{
|
station = stationList.FirstOrDefault();
|
}
|
|
//var location = _taskService.RequestLocation(station.RoadwayNo, carInfo.CarType);
|
//if (location == null)
|
//{
|
// return response.Error("无法获取货位信息或库位已满");
|
//}
|
|
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.Inbound,
|
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;
|
}
|
}
|
}
|