using HslCommunication;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using WIDESEA_Common;
using WIDESEA_Common.CutomerModel;
using WIDESEA_Common.Tools;
using WIDESEA_Core.Utilities;
using WIDESEA_Entity.DomainModels;
using WIDESEA_Services;
using WIDESEA_Services.IRepositories;
using WIDESEA_Services.Repositories;
using WIDESEA_Services.Services;
using WIDESEA_WCS.WCSClient;
namespace WIDESEA_WCS.Jobs.ConveyorLine.OutboundArea
{
public partial class OutboundAreaDispatch
{
///
/// 出库区空托盘回库
///
///
///
//public static void ReInboundRequestStationAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, PLCClient client, string barcode)
//{
// try
// {
// //查询任务
// Dt_TaskWCSinfo wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == barcode && r.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString());
// if (null == wcsInfo)
// {
// //当前存在未完成的任务
// wcsInfo = taskWCSinfoRepository.FindFirst(r => OutboundStationLayerNo.Contains(r.wcstask_endPoint));
// if (null != wcsInfo)
// return;
// //申请入库任务
// WebResponseContent content = WMSApi.PostInboundRequstToWMS(barcode);
// if (content.Status)
// {
// WmsTaskInfo wmsTask = JsonConvert.DeserializeObject(content.Data.ToString());
// wcsInfo = CommonFunction.AddWCSEmptyInboundTask(wmsTask, taskWCSinfoRepository);
// taskWCSinfoRepository.Add(wcsInfo, true);
// }
// else
// throw new Exception("入库申请失败:" + content.Message);
// }
// string lineCode = "ReIboundArea";
// if (null != wcsInfo)
// {
// //读取逻辑控制值
// int logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString());
// if ((logicValue == 1 || logicValue == 2))
// {
// WriteTaskInfo.WriteTaskInfoAction(wcsInfo, client, lineCode);
// }
// string rfidResult = client.ReadValue(CLineInfoDBName.W_Line_Barcode.ToString(), lineCode).ToString();
// if (!wcsInfo.wcstask_barcode.Equals(rfidResult))
// return;
// logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString());
// //说明站台已经收到任务数据,等待WCS的启动指令
// if (logicValue == 3)
// {
// //启动任务
// client.WriteValue(CLineInfoDBName.W_Line_Logic.ToString(), lineCode, 1);
// }
// else if (logicValue == 4 || logicValue == 5)
// {
// //提升机执行中
// if (wcsInfo.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString())
// return;
// if (!WriteRGVState(client, true))
// return;
// wcsInfo.wcstask_state = TaskState.TaskState_HoisterExecuting.ToString();
// wcsInfo.wcstask_dispatcherTime = DateTime.Now;
// taskWCSinfoRepository.Update(wcsInfo, true);
// }
// }
// }
// catch (Exception ex)
// {
// WriteLog.Info(ReInboundRequestStationNo).Write($"{ DateTime.Now }回库站台调度失败:{ex.Message}", ReInboundRequestStationNo);
// }
//}
public static void ReInboundRequestStationAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, PLCClient client, Dt_TaskWCSinfo wcsInfo)
{
try
{
string lineCode = "ReIboundArea";
if (null != wcsInfo)
{
//读取逻辑控制值
int logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString());
if ((logicValue == 1 || logicValue == 2))
{
WriteTaskInfo.WriteTaskInfoAction(wcsInfo, client, lineCode);
}
string rfidResult = client.ReadValue(CLineInfoDBName.W_Line_Barcode.ToString(), lineCode).ToString();
if (!wcsInfo.wcstask_barcode.Equals(rfidResult))
return;
logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString());
//说明站台已经收到任务数据,等待WCS的启动指令
if (logicValue == 3)
{
//启动任务
client.WriteValue(CLineInfoDBName.W_Line_Logic.ToString(), lineCode, 1);
}
else if (logicValue == 4 || logicValue == 5)
{
//提升机执行中
if (wcsInfo.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString())
return;
wcsInfo.wcstask_state = TaskState.TaskState_HoisterExecuting.ToString();
wcsInfo.wcstask_dispatcherTime = DateTime.Now;
taskWCSinfoRepository.Update(wcsInfo, true);
}
}
}
catch (Exception ex)
{
WriteLog.Info(ReInboundRequestStationNo).Write($"{ DateTime.Now }回库站台调度失败:{ex.Message}", ReInboundRequestStationNo);
}
}
}
}