using System;
using System.Collections.Generic;
using System.Text;
using WIDESEA_Common;
using WIDESEA_Common.TaskEnum;
using WIDESEA_Common.Tools;
using WIDESEA_Entity.DomainModels;
using WIDESEA_Services.IRepositories;
using WIDESEA_WCS.WCSClient;
namespace WIDESEA_WCS.Jobs.ConveyorLine.OutboundArea
{
public partial class OutboundAreaDispatch
{
///
/// 出库前移库到
///
///
///
///
public static void OutboundMoveAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
{
try
{
string rgvTaskType = RGVTaskType.RgvTaskType_Move.ToString();
List inboundWaitMoveTask = taskWCSinfoRepository.Find(r => r.wcstask_state == TaskState.TaskState_InboundWaitMove.ToString());
if (null != inboundWaitMoveTask)
{
//将缓存位的移入目的地
foreach (var item in inboundWaitMoveTask)
{
Dt_TaskRGVinfo rgvTask = GetRGVTask(taskRGVinfoRepository, item, rgvTaskType);
taskRGVinfoRepository.Add(rgvTask, true);
item.wcstask_state = TaskState.TaskState_InboundMoveExecuting.ToString();
taskWCSinfoRepository.Update(item, x => x.wcstask_state, true);
}
}
List outboundWaitMoveTask = taskWCSinfoRepository.Find(r => r.wcstask_state == TaskState.TaskState_Assigned.ToString());
if (null != outboundWaitMoveTask)
{
//将缓存位的移入目的地
foreach (var item in outboundWaitMoveTask)
{
//当前层已经有移库任务了
Dt_TaskWCSinfo task = taskWCSinfoRepository.FindFirst(r => OutboundStationLayerNo.Contains(r.wcstask_startPoint) &&
(r.wcstask_state == TaskState.TaskState_OutboundMoveExecuting.ToString() || r.wcstask_state == TaskState.TaskState_OutboundMoveFinished.ToString()));
if (null != task)
continue;
Dt_TaskRGVinfo rgvTask = GetRGVTask(taskRGVinfoRepository, item, rgvTaskType);
taskRGVinfoRepository.Add(rgvTask, true);
item.wcstask_state = TaskState.TaskState_OutboundMoveExecuting.ToString();
taskWCSinfoRepository.Update(item, x => x.wcstask_state, true);
}
}
}
catch (Exception ex)
{
WriteLog.Info("OutboundArea").Write($"{ DateTime.Now }出库区域调度失败:{ex.Message}", "OutboundArea");
}
}
}
}