using HslCommunication;
|
using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using WIDESEA_Common;
|
using WIDESEA_Core.Utilities;
|
using WIDESEA_Entity.DomainModels;
|
using WIDESEA_Services;
|
using WIDESEA_Services.Repositories;
|
using WIDESEA_WCS.WCSClient;
|
|
namespace WIDESEA_WCS.Jobs.ConveyorLine
|
{
|
public class CheckBarcodeLogic
|
{
|
|
/// <summary>
|
/// 校验托盘码是否一直
|
/// </summary>
|
/// <param name="taskWCSinfoRepository"></param>
|
/// <param name="station"></param>
|
/// <param name="client"></param>
|
public static void DealWithCheckBarcodeLogic(Dt_TaskWCSinfoRepository taskWCSinfoRepository, Dt_StationManager station, PLCClient client)
|
{
|
//读取任务号,找到对应的任务,在进行托盘码的比对
|
OperateResult<UInt32> taskRes = (OperateResult<UInt32>)client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), station.sm_stationNo);
|
if (taskRes.IsSuccess)
|
{
|
UInt32 taskNum = taskRes.Content;
|
Dt_TaskWCSinfo wcsInfo = null;
|
if (station.sm_stationNo == "30301")
|
{
|
wcsInfo = taskWCSinfoRepository.FindFirst(x =>
|
(x.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString() ||
|
x.wcstask_type == TaskType.TaskType_Box_Pallet_Inbound.ToString()) &&
|
x.wcstask_state == TaskState.TaskState_ConveyorLineExecuting.ToString() &&
|
x.wcstask_taskNumber == taskNum);
|
if(wcsInfo == null)
|
{
|
//继续看下是不是测量回库的任务
|
wcsInfo = taskWCSinfoRepository.FindFirst(x =>
|
x.wcstask_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString() &&
|
x.wcstask_state == TaskState.TaskState_Measure_Back_Line_Executing.ToString() &&
|
x.wcstask_taskNumber == taskNum);
|
}
|
}
|
else
|
{
|
wcsInfo = taskWCSinfoRepository.FindFirst(x =>
|
x.wcstask_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString() &&
|
x.wcstask_state == TaskState.TaskState_Measure_Out_Line_Executing.ToString() &&
|
x.wcstask_taskNumber == taskNum);
|
}
|
|
if (wcsInfo != null)
|
{
|
//读取RFID值
|
OperateResult<UInt32> rfidResult1 = (OperateResult<UInt32>)client.ReadValue(CLineInfoDBName.R_Line_RFID_OK.ToString(), station.sm_stationNo);
|
if (rfidResult1.IsSuccess)
|
{
|
if (wcsInfo.wcstask_barcode != rfidResult1.Content.ToString())
|
{
|
//说明托盘不一致,需要在前端进行提示
|
//Console.WriteLine($"::Wanring::检测入库任务在托盘检验站台,入库托盘号:【{wcsInfo.wcstask_barcode}】,与RFID读取到的【{rfidResult1.Content}】,不一致!!");
|
|
//把情报告诉WMS
|
WebResponseContent content = WMSApi.PostRFIDNoMatch(
|
wcsInfo.wcstask_barcode,
|
rfidResult1.Content.ToString(),
|
wcsInfo.wcstask_taskNumber.ToString(),
|
station.sm_stationNo);
|
if (content.Status)
|
{
|
//Console.WriteLine($"已将托盘码不一致的情况上报给你WMS");
|
bool goOn = client.WriteValue(CLineInfoDBName.W_Line_RFID_Done.ToString(), station.sm_stationNo, 1);
|
if (goOn)
|
{
|
wcsInfo.wcstask_backUp_1 = "checked";
|
taskWCSinfoRepository.Update(wcsInfo, true);
|
//Console.WriteLine($"已上报,继续任务!");
|
}
|
}
|
}
|
else
|
{
|
//说明一致,通知线体继续往前走
|
bool goOn = client.WriteValue(CLineInfoDBName.W_Line_RFID_Done.ToString(), station.sm_stationNo, 1);
|
if (goOn)
|
{
|
wcsInfo.wcstask_backUp_1 = "checked";
|
taskWCSinfoRepository.Update(wcsInfo, true);
|
//Console.WriteLine($"任务号:【{wcsInfo.wcstask_taskNumber}】,托盘码:【rfidResult1.Content】对应的任务,与线体检测一至,继续任务");
|
}
|
}
|
}
|
}
|
|
}
|
}
|
|
}
|
}
|