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 { if (autoIssueDTO == null) { return content.Error("传入信息不能为空"); } //获取对应单据 Dt_OutMESOrder? outMESOrder = _outboundRepository.OutMESOrderRepository.QueryFirst(x=>x.OutDetailId==autoIssueDTO.OutDetailId); if (outMESOrder==null) { return content.Error($"领料计划{nameof(MESAutoIssueDTO.OutDetailId)}{autoIssueDTO.OutDetailId}不存在"); } if (outMESOrder.OutMESOrderStatus==OutOrderStatusEnum.关闭.ObjToInt()) { return content.Error($"领料计划{nameof(MESAutoIssueDTO.OutDetailId)}{outMESOrder.ProductOrderNo}工单已关闭"); } //获取周转位置编号 Dt_AGVStationInfo? stationInfo = _basicRepository.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; } public WebResponseContent ReceiveManualIssue(MESManualIssueDTO manualIssueDTO) { WebResponseContent content = new WebResponseContent(); try { if (manualIssueDTO == null) { return content.Error("传入信息不能为空"); } //获取对应单据 Dt_OutMESOrder? outMESOrder = _outboundRepository.OutMESOrderRepository.QueryFirst(x => x.OutDetailId == manualIssueDTO.OutDetailId); if (outMESOrder == null) { return content.Error($"领料计划{nameof(MESAutoIssueDTO.OutDetailId)}{manualIssueDTO.OutDetailId}不存在"); } if (outMESOrder.OutMESOrderStatus == OutOrderStatusEnum.关闭.ObjToInt()) { return content.Error($"领料计划{nameof(MESAutoIssueDTO.OutDetailId)}{outMESOrder.ProductOrderNo}工单已关闭"); } //获取周转位置编号 Dt_AGVStationInfo? stationInfo = _basicRepository.AGVStationInfoRepository.QueryFirst(x => x.MESPointCode == manualIssueDTO.PointCode); if (stationInfo == null) { return content.Error($"领料计划周转位{nameof(MESAutoIssueDTO.PointCode)}{manualIssueDTO.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; } public WebResponseContent ReceiveReturnIssue(List returnIssueDTOs) { WebResponseContent content = new WebResponseContent(); try { if (returnIssueDTOs==null || returnIssueDTOs.Count<=0) { return content.Error("传入信息不能为空"); } //获取所有AGV点位 List aGVStationInfos= _basicRepository.AGVStationInfoRepository.QueryData(x => !string.IsNullOrEmpty(x.MESPointCode)); MESReturnIssueDTO? returnIssueDTO = returnIssueDTOs.FirstOrDefault(x=> !aGVStationInfos.Select(x=>x.MESPointCode).Contains(x.PointCode)); if (returnIssueDTO != null) { return content.Error($"周转位{nameof(MESReturnIssueDTO.PointCode)}{returnIssueDTO.PointCode}不存在"); } content.OK("呼叫成功"); } catch (Exception ex) { content.Error(ex.Message); } return content; } } }