using Newtonsoft.Json.Serialization;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.APIEnum;
using WIDESEA_Common.CommonEnum;
using WIDESEA_Common.LocationEnum;
using WIDESEA_Common.OtherEnum;
using WIDESEA_Common.StockEnum;
using WIDESEA_Common.TaskEnum;
using WIDESEA_Common.WareHouseEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_DTO;
using WIDESEA_DTO.ERP;
using WIDESEA_ITaskInfoRepository;
using WIDESEA_ITaskInfoService;
using WIDESEA_Model.Models;
using WIDESEA_Common.OrderEnum;
using System.Diagnostics.Metrics;
using System.Reflection.Metadata;
using WIDESEA_DTO.Task;
using WIDESEA_DTO.Stock;
using SqlSugar;
using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
using WIDESEA_DTO.MES;
namespace WIDESEA_TaskInfoService
{
public partial class TaskService
{
static object lock_out = new object();
///
/// MES自动叫料接口
///
///
public WebResponseContent ReceiveAutoIssue(MESAutoIssueDTO autoIssueDTO)
{
WebResponseContent content = new WebResponseContent();
try
{
//获取对应单据
Dt_OutMESOrder? outMESOrder = _outMESOrderRepository.QueryFirst(x=>x.OutDetailId==autoIssueDTO.OutDetailId);
if (outMESOrder==null)
{
return content.Error($"领料计划{nameof(MESAutoIssueDTO.OutDetailId)}{autoIssueDTO.OutDetailId}不存在");
}
//获取周转位置编号
Dt_AGVStationInfo? stationInfo = _agvStationInfoRepository.QueryFirst(x=>x.MESPointCode==autoIssueDTO.PointCode);
if (stationInfo == null)
{
return content.Error($"领料计划周转位{nameof(MESAutoIssueDTO.PointCode)}{autoIssueDTO.PointCode}不存在");
}
if (autoIssueDTO.IsEmptyPallet>0)
{
return content.Error($"领料计划周转位{nameof(MESAutoIssueDTO.PointCode)}{autoIssueDTO.PointCode}存在空托");
}
Dt_Task? task = BaseDal.QueryData(x => x.OrderNo == outMESOrder.OutMESOrderNo && x.TaskStatus==TaskStatusEnum.CallPending.ObjToInt()).OrderByDescending(x=>x.Grade).ThenBy(x=>x.TaskNum).FirstOrDefault();
//获取任务
if (task==null)
{
return content.Error($"未找到领料计划编号{outMESOrder.ProductOrderNo}可配送任务");
}
task.TaskStatus = TaskStatusEnum.New.ObjToInt();
task.TargetAddress= stationInfo.AGVStationCode;
PushTasksToWCS(new List { task });
return content.OK("叫料成功");
}
catch (Exception ex)
{
content.Error(ex.Message);
}
return content;
}
}
}