wangxinhui
22 小时以前 9ce6731460179c71f0f2c636b2a1598324d5194e
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs
@@ -29,11 +29,54 @@
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();
        /// <summary>
        /// MES自动叫料接口
        /// </summary>
        /// <returns></returns>
        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<Dt_Task> { task });
                return content.OK("叫料成功");
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
    }
}