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
|
{
|
|
/// <summary>
|
/// 出库区空托盘回库
|
/// </summary>
|
/// <param name="taskWCSinfoRepository"></param>
|
/// <param name="client"></param>
|
//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<WmsTaskInfo>(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;
|
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);
|
}
|
}
|
|
|
}
|
}
|