using HslCommunication;
using System;
using System.Collections.Generic;
using System.Text;
using WIDESEA_Common;
using WIDESEA_Common.LogEnum;
using WIDESEA_Common.TaskEnum;
using WIDESEA_Core.EFDbContext;
using WIDESEA_Core.Utilities;
using WIDESEA_Entity.DomainModels;
using WIDESEA_Services;
using WIDESEA_Services.Repositories;
using WIDESEA_Services.Services;
using WIDESEA_WCS.WCSClient;
namespace WIDESEA_WCS.Jobs.ConveyorLine
{
public class InboundLogic
{
///
/// 处理入库线的相关逻辑,空托入库和实托入库
///
///
///
///
public static void DealWithInboundLogic(Dt_TaskWCSinfoRepository taskWCSinfoRepository, Dt_StationManager station, PLCClient client)
{
OperateResult normalResult = (OperateResult)client.ReadValue(CLineInfoDBName.R_Line_DeviceNormal.ToString(), station.sm_stationNo);
if (normalResult.IsSuccess)
{
bool isNormal = normalResult.Content;
//说明设备工作正常
if (isNormal)
{
//读取逻辑控制值
OperateResult logicResult = (OperateResult)client.ReadValue(CLineInfoDBName.R_Line_Logic_InBound.ToString(), "Inbound");
//读取RFID值
OperateResult rfidResult1 = (OperateResult)client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), station.sm_stationNo);
//线体人工触发的确认信号
OperateResult confirmResult1 = (OperateResult)client.ReadValue(CLineInfoDBName.R_Line_Confirm_OK.ToString(), station.sm_stationNo);
if (logicResult.IsSuccess && rfidResult1.IsSuccess && confirmResult1.IsSuccess)
{
string rfidValue = rfidResult1.Content.ToString();
Int16 logicValue = logicResult.Content;
bool confrimValue = confirmResult1.Content;
WCSService.RfidValue = rfidValue.ToString();
Dt_TaskWCSinfo wcsInfo = null;
//查找任务表中的入库任务
Dt_TaskWCSinfo _inWcsInfo = 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_Assigned.ToString());
if (_inWcsInfo != null)
{
rfidValue = _inWcsInfo.wcstask_barcode;
//查找RFID对应的任务
wcsInfo = taskWCSinfoRepository.FindFirst(x =>
x.wcstask_barcode == rfidValue &&
(x.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString() ||
x.wcstask_type == TaskType.TaskType_Box_Pallet_Inbound.ToString()));
LogRecord.WriteLog(LogEnum.InBound,$"找到一条准备入库的任务,托盘号:【{rfidValue}】,线体按钮触发值:【{confrimValue}】");
}
else
{
//读取任务号值
OperateResult _taskRes = (OperateResult)client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), station.sm_stationNo);
if (_taskRes.IsSuccess)
{
UInt32 tmpNum = _taskRes.Content;
wcsInfo = taskWCSinfoRepository.FindFirst(x =>
x.wcstask_taskNumber == tmpNum &&
(x.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString() ||
x.wcstask_type == TaskType.TaskType_Box_Pallet_Inbound.ToString()));
}
}
if ((logicValue == 1 || logicValue == 2) && wcsInfo != null && confrimValue == true)
{
//这里需要考虑该条任务的入库站台是否 ==> 已经开始了相对应站台的出库测量任务
List tmpList = taskWCSinfoRepository.Find(x =>
x.wcstask_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString() &&
x.wcstask_endLocation == wcsInfo.wcstask_endPoint &&
(x.wcstask_state == TaskState.TaskState_RGV_Received.ToString() ||
x.wcstask_state == TaskState.TaskState_RGV_Finished.ToString()));
if(tmpList.Count != 0)
{
LogRecord.WriteLog(LogEnum.InBound, $"::Wanring::=>托盘号:【{rfidValue}】对应入库任务的目的货位与出库测量任务:【{tmpList[0].wcstask_taskNumber}】发生冲突,向WMS申请新货位");
//说明不能入库原来层的货位,会冲突,在此向WMS申请请求更换其它层货位,恢复原来货位状态
WebResponseContent content = WMSApi.RequstNewLocationIdWhenConflict(wcsInfo.wcstask_barcode);
if (content.Status)
{
LogRecord.WriteLog(LogEnum.InBound, $"托盘号:【{rfidValue}】,向WMS申请新货位【成功】,【目的站台、目的货位已更新】-新货位在其它日志处查看");
Console.WriteLine("成功申请到了新的货位地址,WMS和WCS目的货位已更新,目的站台已更新!");
//直接return,下个调度周期再来发任务
return;
}
else
{
LogRecord.WriteLog(LogEnum.InBound, $"::Error::托盘号:【{rfidValue}】,向WMS申请新货位【失败】,原因:{content.Message}");
}
}
//任务号--入库模式
bool writeTaskNumber = client.WriteValue(CLineInfoDBName.W_Line_TaskNumber_Inbound.ToString(), wcsInfo.wcstask_taskNumber);
//托盘号--入库模式
bool writeBarcode = client.WriteValue(CLineInfoDBName.W_Line_RFID_Inbound.ToString(), wcsInfo.wcstask_barcode);
//起始站台--入库模式
bool writeStartStation = client.WriteValue(CLineInfoDBName.W_Line_StartStation_Inbound.ToString(), wcsInfo.wcstask_startPoint);
//终点站台--入库模式
bool writeEndStation = client.WriteValue(CLineInfoDBName.W_Line_EndStation_Inbound.ToString(), wcsInfo.wcstask_endPoint);
if (writeTaskNumber == true && writeBarcode == true &&
writeStartStation == true && writeEndStation == true)
{
Console.WriteLine($"{DateTime.Now}=>Success => 给站台:【{station.sm_stationNo}】,写到任务号:【{wcsInfo.wcstask_taskNumber}】,托盘号:【{wcsInfo.wcstask_barcode}】,终点:【{wcsInfo.wcstask_endPoint}】");
string str = $"将托盘号:【{wcsInfo.wcstask_barcode}】对应任务信息写给线体【成功】!\n\r " +
$"任务号:{wcsInfo.wcstask_taskNumber} \n\r " +
$"托盘号:{wcsInfo.wcstask_barcode} \n\r " +
$"起始站台:{wcsInfo.wcstask_startPoint} \n\r " +
$"终点站台:{wcsInfo.wcstask_endPoint}";
LogRecord.WriteLog(LogEnum.InBound, str);
}
else
{
Console.WriteLine($"{DateTime.Now}=>::Failed:: => 给站台:【{station.sm_stationNo}】,写到任务号:【{wcsInfo.wcstask_taskNumber}】,托盘号:【{wcsInfo.wcstask_barcode}】,终点:【{wcsInfo.wcstask_endPoint}】");
string str = $"::Error::=>将托盘号:【{wcsInfo.wcstask_barcode}】对应任务信息写给线体【失败】!\n\r " +
$"任务号:{wcsInfo.wcstask_taskNumber} \n\r " +
$"托盘号:{wcsInfo.wcstask_barcode} \n\r " +
$"起始站台:{wcsInfo.wcstask_startPoint} \n\r " +
$"终点站台:{wcsInfo.wcstask_endPoint}";
LogRecord.WriteLog(LogEnum.InBound, str);
}
}
//说明站台已经收到任务数据,等待WCS的启动指令
else if (logicValue == 3 && wcsInfo != null)
{
LogRecord.WriteLog(LogEnum.InBound, "读取到【20101】逻辑值为3,表明任务数据已收到,WCS准备发送启动指令");
//启动任务
bool startTask = client.WriteValue(CLineInfoDBName.W_Line_Logic_InBound.ToString(), 1);
//入空托的时候,默认是托盘号核验一致
bool checkFlag = client.WriteValue(CLineInfoDBName.W_Line_RFID_Done.ToString(), station.sm_stationNo, true);
if (startTask && checkFlag)
{
LogRecord.WriteLog(LogEnum.InBound, "给【20101】写入启动信号【成功】!");
Console.WriteLine($"Success=> 启动任务成功,任务号:【{wcsInfo.wcstask_taskNumber}】");
}
else
{
LogRecord.WriteLog(LogEnum.InBound, "::Error::=> 给【20101】写入启动信号【失败】!");
Console.WriteLine($"{DateTime.Now}=>Failed=> 启动任务失败,任务号:【{wcsInfo.wcstask_taskNumber}】");
}
}
else if (logicValue == 4 || logicValue == 5)
{
//入空托的时候,默认是托盘号核验一致
bool checkFlag = client.WriteValue(CLineInfoDBName.W_Line_RFID_Done.ToString(), station.sm_stationNo, true);
//读取RFID值,防止在logicValue == 3时更新任务状态失败
//是因为出现过写入启动信号,返回值是false,但是线体确又已经收到了启动信号,所以打了这个补丁
OperateResult rfidResult_ = (OperateResult)client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), station.sm_stationNo);
OperateResult taskRes_ = (OperateResult)client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), station.sm_stationNo);
if (rfidResult_.IsSuccess && taskRes_.IsSuccess)
{
UInt32 _rfid = rfidResult_.Content;
UInt32 _tasknum = taskRes_.Content;
Dt_TaskWCSinfo _tmpTask = 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_Assigned.ToString() &&
x.wcstask_taskNumber == _tasknum &&
x.wcstask_barcode == _rfid.ToString());
if (_tmpTask != null)
{
//启动成功后,在此更新任务状态、上报WMS任务状态
WebResponseContent content = WMSApi.PostTaskStateToWMS(rfidValue.ToString(), TaskState.TaskState_ConveyorLineExecuting.ToString());
if (content.Status)
{
wcsInfo.wcstask_state = TaskState.TaskState_ConveyorLineExecuting.ToString();
wcsInfo.wcstask_dispatcherTime = DateTime.Now;
taskWCSinfoRepository.Update(wcsInfo, true);
Console.WriteLine($"{DateTime.Now}=>Success=> 上报WMS更新任务状态成功【TaskState_ConveyorLineExecuting】,任务号:【{wcsInfo.wcstask_taskNumber}】");
LogRecord.WriteLog(LogEnum.InBound, $"::Wanring::=> 将托盘号:【{rfidValue}】对应的任务,上报WMS更新任务状态【成功】!更新为:TaskState_ConveyorLineExecuting,此处为更新补发!!");
}
else
{
Console.WriteLine($"{DateTime.Now}=>Failed=> 上报WMS更新任务状态出错【TaskState_ConveyorLineExecuting】,任务号:【{wcsInfo.wcstask_taskNumber}】,原因:{content.Message}");
LogRecord.WriteLog(LogEnum.InBound, $"::Error::将托盘号:【{rfidValue}】对应的任务,上报WMS更新任务状态【失败】!更新为:TaskState_ConveyorLineExecuting,此处为更新补发!!原因:{content.Message}");
}
}
}
//清除入库模式下发的数据
bool writeTaskNumber = client.WriteValue(CLineInfoDBName.W_Line_TaskNumber_Inbound.ToString(), 0);
bool writeBarcode = client.WriteValue(CLineInfoDBName.W_Line_RFID_Inbound.ToString(), 0);
bool writeStartStation = client.WriteValue(CLineInfoDBName.W_Line_StartStation_Inbound.ToString(), 0);
bool writeEndStation = client.WriteValue(CLineInfoDBName.W_Line_EndStation_Inbound.ToString(), 0);
bool writelogicValue = client.WriteValue(CLineInfoDBName.W_Line_Logic_InBound.ToString(), 0);
if(writeTaskNumber && writeBarcode && writeStartStation && writeEndStation && writelogicValue)
{
LogRecord.WriteLog(LogEnum.InBound, $"清除站台【20101】的任务信息成功!");
}
else
{
LogRecord.WriteLog(LogEnum.InBound, $"::Error::=> 清除站台【20101】的任务信息失败!");
}
}
}
//此处校验空托出库的任务在库存中的托盘码和工位RFID读取到的托盘码是否一致
OperateResult taskRes = (OperateResult)client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), station.sm_stationNo);
if (taskRes.IsSuccess)
{
UInt32 taskNum = taskRes.Content;
//查找任务表中的空托入库任务 、 轴承出库
Dt_TaskWCSinfo emptyOutWcsInfo = taskWCSinfoRepository.FindFirst(x =>
(x.wcstask_type == TaskType.TaskType_Empty_Pallet_Outbound.ToString() ||
x.wcstask_type == TaskType.TaskType_Box_Pallet_Outbound.ToString()) &&
(x.wcstask_state == TaskState.TaskState_Empty_Out_Line_Executing.ToString() ||
x.wcstask_state == TaskState.TaskState_Box_Out_Line_Executing.ToString()) &&
x.wcstask_taskNumber == taskNum);
if (emptyOutWcsInfo != null)
{
//在此完成该空托出库任务
WebResponseContent content = taskWCSinfoRepository.DbContextBeginTransaction(() =>
{
WebResponseContent transContent = new WebResponseContent();
try
{
//上报WMS任务完成
transContent = WMSApi.TellWmsTaskFinished(emptyOutWcsInfo.wcstask_barcode);
if (transContent.Status)
{
//移动任务到历史表
Dt_TaskWCSinfo_HtyRepository taskWCSinfo_HtyRepository = new Dt_TaskWCSinfo_HtyRepository(taskWCSinfoRepository.DbContext);
emptyOutWcsInfo.wcstask_state = TaskState.TaskState_Finished.ToString();
CommonFunction.AddWcsTaskToHistory(emptyOutWcsInfo, taskWCSinfoRepository, taskWCSinfo_HtyRepository);
}
else
{
throw new Exception($"上报WMS任务完成出错,原因:【{transContent.Message}】");
}
transContent.OK();
}
catch(Exception ex)
{
transContent.Error(ex.Message);
}
return transContent;
});
if (!content.Status)
{
Console.WriteLine($"::Error::=> 空托盘任务:【{emptyOutWcsInfo.wcstask_taskNumber}】完成出错,原因:{content.Message}");
}
}
}
}
else
{
Console.WriteLine($"::Error::读取到【20101】站台工作异常!!");
LogRecord.WriteLog(LogEnum.InBound, $"::Error::读取到【20101】站台工作异常!!");
}
}
}
///
/// 当入库任务完成时候的逻辑处理
///
///
///
///
public static void DealWithInboundFinishedLogic(Dt_TaskWCSinfoRepository taskWCSinfoRepository, Dt_TaskRGVinfoRepository taskRGVinfoRepository, Dt_StationManager station, PLCClient client)
{
OperateResult taskRes = (OperateResult)client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), station.sm_stationNo);
OperateResult rfidRes = (OperateResult)client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), station.sm_stationNo);
if (taskRes.IsSuccess && rfidRes.IsSuccess)
{
UInt32 taskNumber = taskRes.Content;
UInt32 rfidValue = rfidRes.Content;
Dt_TaskWCSinfo wcsInfo = taskWCSinfoRepository.FindFirst(x => x.wcstask_taskNumber == taskNumber);
if (wcsInfo != null &&
(wcsInfo.wcstask_state != TaskState.TaskState_ConveyorLineFinish.ToString() &&
wcsInfo.wcstask_state != TaskState.TaskState_RGV_Received.ToString()))
{
//空托和实托的入库
if (wcsInfo.wcstask_type == TaskType.TaskType_Box_Pallet_Inbound.ToString() ||
wcsInfo.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString())
{
OperateResult logicRes = (OperateResult)client.ReadValue(CLineInfoDBName.R_Line_Logic_InBound.ToString(), "Inbound");
if (logicRes.IsSuccess)
{
Int16 logicValue = logicRes.Content;
Console.WriteLine($"在站台:【{station.sm_stationNo}】检测到入库任务到达目的站台,任务号:【{taskNumber}】,托盘号:【{rfidValue}】");
LogRecord.WriteLog(LogEnum.InBound,$"在站台:【{station.sm_stationNo}】检测到入库任务到达目的站台,任务号:【{taskNumber}】,托盘号:【{rfidValue}】");
//检查任务的目的货位的层数是否和站台层数一致
string toLayer = wcsInfo.wcstask_endLocation.Substring(0, 2);
string stationLayer = station.sm_stationNo.Substring(3, 2);
if (toLayer == stationLayer)
{
//到达入库口,在此更新任务状态、上报WMS任务状态
WebResponseContent content = WMSApi.PostTaskStateToWMS(rfidValue.ToString(), TaskState.TaskState_ConveyorLineFinish.ToString());
if (content.Status)
{
wcsInfo.wcstask_state = TaskState.TaskState_ConveyorLineFinish.ToString();
wcsInfo.wcstask_dispatcherTime = DateTime.Now;
taskWCSinfoRepository.Update(wcsInfo, true);
Console.WriteLine($"Success=> 上报WMS更新任务状态成功【TaskState_ConveyorLineFinish】,任务号:【{wcsInfo.wcstask_taskNumber}】");
LogRecord.WriteLog(LogEnum.InBound, $"站台:【{station.sm_stationNo}】检测到入库任务到达目的站台,任务号:【{taskNumber}】,托盘号:【{rfidValue}】,上报WMS更新任务状态成功【TaskState_ConveyorLineFinish】");
Dt_TaskRGVinfo _tmpRgvInfo = taskRGVinfoRepository.FindFirst(x => x.rgvtask_barCode == wcsInfo.wcstask_barcode);
if(_tmpRgvInfo == null)
{
//在此生成RGV任务
Dt_TaskRGVinfo rgvInfo = new Dt_TaskRGVinfo();
rgvInfo.rgvtask_taskId = GetTaskNumber.GetRgvTaskNumber(taskRGVinfoRepository).ToString();
rgvInfo.rgvtask_taskType = RGVTaskType.RgvTaskType_Inbound.ToString();
rgvInfo.rgvtask_taskStatus = RGVTaskState.RgvTaskState_Wait_Send.ToString();
rgvInfo.rgvtask_priorityCode = wcsInfo.wcstask_grade.ToString();
rgvInfo.rgvtask_startNode = station.sm_stationNo;
rgvInfo.rgvtask_endNode = wcsInfo.wcstask_endLocation;
rgvInfo.rgvtask_wcsTaskNumber = wcsInfo.wcstask_taskNumber;
rgvInfo.rgvtask_barCode = wcsInfo.wcstask_barcode;
rgvInfo.rgvtask_msgTime = DateTime.Now;
taskRGVinfoRepository.Add(rgvInfo, true);
Console.WriteLine($"站台:【{station.sm_stationNo}】检测到入库任务到达目的站台,任务号:【{taskNumber}】,托盘号:【{rfidValue}】,上报WMS后,生成了穿梭测对应的入库任务,穿梭车任务为:【{rgvInfo.rgvtask_taskId}】");
LogRecord.WriteLog(LogEnum.InBound, $"站台:【{station.sm_stationNo}】检测到入库任务到达目的站台,任务号:【{taskNumber}】,托盘号:【{rfidValue}】,上报WMS后,生成了穿梭测对应的入库任务");
}
else
{
//说明该托盘对应的RGV任务刚已经添加过了,因为托盘在入库工位停留,穿梭车过来取需要时间
}
}
else
{
Console.WriteLine($"Failed=> 上报WMS更新任务状态出错【TaskState_ConveyorLineExecuting】,任务号:【{wcsInfo.wcstask_taskNumber}】,原因:{content.Message}");
LogRecord.WriteLog(LogEnum.InBound, $"::Error::=> 站台:【{station.sm_stationNo}】检测到入库任务到达目的站台,任务号:【{taskNumber}】,托盘号:【{rfidValue}】,上报WMS更新任务状态失败【TaskState_ConveyorLineFinish】,原因:{content.Message}");
}
}
else
{
Console.WriteLine("::Error::=> 任务的目的货位的层数是否和站台层数不一致!!");
LogRecord.WriteLog(LogEnum.InBound, $"::Error::=> 在站台:【{station.sm_stationNo}】检测到入库任务到达目的站台,任务号:【{taskNumber}】,托盘号:【{rfidValue}】,任务的目的货位的层数是否和站台层数不一致!!");
}
}
}
//测量回库
else if (wcsInfo.wcstask_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString() &&
wcsInfo.wcstask_state == TaskState.TaskState_Measure_Back_Line_Executing.ToString())
{
OperateResult logicRes = (OperateResult)client.ReadValue(CLineInfoDBName.R_Line_Logic_InBound.ToString(), "Inbound");
if (logicRes.IsSuccess)
{
Int16 logicValue = logicRes.Content;
//检查任务的目的货位的层数是否和站台层数一致 050301
string toLayer = wcsInfo.wcstask_endLocation.Substring(0, 2);
string stationLayer = station.sm_stationNo.Substring(3, 2);
if (toLayer == stationLayer)
{
//到达入库口,在此更新任务状态、上报WMS任务状态
WebResponseContent content = WMSApi.PostTaskStateToWMS(rfidValue.ToString(), TaskState.TaskState_Measure_Back_Line_Finished.ToString());
if (content.Status)
{
wcsInfo.wcstask_state = TaskState.TaskState_Measure_Back_Line_Finished.ToString();
wcsInfo.wcstask_dispatcherTime = DateTime.Now;
taskWCSinfoRepository.Update(wcsInfo, true);
Console.WriteLine($"Success=> 上报WMS更新任务状态成功【TaskState_Measure_Back_Line_Finished】,任务号:【{wcsInfo.wcstask_taskNumber}】");
//在此生成RGV任务
Dt_TaskRGVinfo rgvInfo = new Dt_TaskRGVinfo();
rgvInfo.rgvtask_taskId = GetTaskNumber.GetRgvTaskNumber(taskRGVinfoRepository).ToString();
rgvInfo.rgvtask_taskType = RGVTaskType.RgvTaskType_Inbound.ToString();
rgvInfo.rgvtask_taskStatus = RGVTaskState.RgvTaskState_Wait_Send.ToString();
rgvInfo.rgvtask_priorityCode = wcsInfo.wcstask_grade.ToString();
rgvInfo.rgvtask_startNode = station.sm_stationNo;
rgvInfo.rgvtask_endNode = wcsInfo.wcstask_endLocation;
rgvInfo.rgvtask_wcsTaskNumber = wcsInfo.wcstask_taskNumber;
rgvInfo.rgvtask_barCode = wcsInfo.wcstask_barcode;
rgvInfo.rgvtask_msgTime = DateTime.Now;
taskRGVinfoRepository.Add(rgvInfo, true);
}
else
{
Console.WriteLine($"Failed=> 上报WMS更新任务状态出错【TaskState_Measure_Back_Line_Finished】,任务号:【{wcsInfo.wcstask_taskNumber}】,原因:{content.Message}");
}
}
}
}
}
}
//上面已经有了这个逻辑,当初为什么在这里又写了一次? 暂时保留
//if (rfidRes.IsSuccess)
//{
// string rfidValue = rfidRes.Content.ToString();
// Dt_TaskWCSinfo taskWCSinfo = taskWCSinfoRepository.FindFirst(x => x.wcstask_barcode == rfidValue && x.wcstask_state == TaskState.TaskState_Measure_Back_Line_Executing.ToString());
// if(taskWCSinfo != null)
// {
// WebResponseContent content = WMSApi.PostTaskStateToWMS(rfidValue, TaskState.TaskState_Measure_Back_Line_Finished.ToString());
// if (content.Status)
// {
// taskWCSinfo.wcstask_state = TaskState.TaskState_Measure_Back_Line_Finished.ToString();
// taskWCSinfo.wcstask_dispatcherTime = DateTime.Now;
// taskWCSinfoRepository.Update(taskWCSinfo, true);
// //在此生成RGV任务、让轴承回到原来的位置
// Dt_TaskRGVinfo rgvInfo = new Dt_TaskRGVinfo();
// rgvInfo.rgvtask_taskId = GetTaskNumber.GetRgvTaskNumber(taskRGVinfoRepository).ToString();
// rgvInfo.rgvtask_taskType = RGVTaskType.RgvTaskType_Inbound.ToString();
// rgvInfo.rgvtask_taskStatus = RGVTaskState.RgvTaskState_Wait_Send.ToString();
// rgvInfo.rgvtask_priorityCode = taskWCSinfo.wcstask_grade.ToString();
// rgvInfo.rgvtask_startNode = station.sm_stationNo;
// rgvInfo.rgvtask_endNode = taskWCSinfo.wcstask_endLocation;
// rgvInfo.rgvtask_wcsTaskNumber = taskWCSinfo.wcstask_taskNumber;
// rgvInfo.rgvtask_barCode = taskWCSinfo.wcstask_barcode;
// rgvInfo.rgvtask_msgTime = DateTime.Now;
// taskRGVinfoRepository.Add(rgvInfo, true);
// }
// else
// {
// Console.WriteLine($"上报WMS,将测量【回库】任务状态修改为:【TaskState_Measure_Back_Line_Executing】出错,原因:{content.Message}");
// }
// }
//}
}
}
}