using System;
|
using HH.WCS.Mobox3.RiDong.dispatch;
|
using HH.WCS.Mobox3.RiDong.models;
|
|
namespace HH.WCS.Mobox3.RiDong.generalMethod;
|
|
/// <summary>
|
/// agv方法
|
/// </summary>
|
public static class AGVMethod
|
{
|
/// <summary>
|
/// 安全请求
|
/// </summary>
|
/// <param name="task">当前任务</param>
|
/// <param name="state">状态值</param>
|
public static void OperateReq(Task task, int state)
|
{
|
// 入库
|
if (task.N_TYPE == 1 || task.N_TYPE == 3)
|
{
|
// 读取中间表数据是否为1
|
var conveyorLinesInfo = AdoSqlMethod<ConveyorLinesInfo>.QueryFirst(p => p.LOCATION == task.S_START_LOC);
|
|
// 信息交互
|
if (state == 1101)
|
{
|
if (conveyorLinesInfo != null)
|
{
|
// 判断中间表入库信号是否为2
|
if (conveyorLinesInfo.LOADSTATE == 2)
|
{
|
conveyorLinesInfo.LOADSTATE = 3;
|
AdoSqlMethod<ConveyorLinesInfo>.UpdateFirst(conveyorLinesInfo, p => new { p.LOADSTATE });
|
}
|
// 可取
|
else if (conveyorLinesInfo.LOADSTATE == 4)
|
{
|
// 调用车取货
|
NDCHelper.ChangeParam(task.S_CODE, 1, 6);
|
}
|
}
|
}
|
else if (state == 1102)
|
{
|
// 取货完成,修改当前线体为5
|
conveyorLinesInfo.LOADSTATE = 5;
|
AdoSqlMethod<ConveyorLinesInfo>.UpdateFirst(conveyorLinesInfo, p => new { p.LOADSTATE });
|
}
|
}
|
// 出库
|
else if (task.N_TYPE == 2 || task.N_TYPE == 4 || task.N_TYPE == 5 || task.N_TYPE == 7)
|
{
|
// 读取中间表数据
|
var conveyorLinesInfo = AdoSqlMethod<ConveyorLinesInfo>.QueryFirst(p => p.LOCATION == task.S_END_LOC);
|
|
if (state == 1103)
|
{
|
// 表示申请放货
|
if (conveyorLinesInfo.UNLOADSTATE == 0)
|
{
|
conveyorLinesInfo.UNLOADSTATE = 1;
|
AdoSqlMethod<ConveyorLinesInfo>.UpdateFirst(conveyorLinesInfo, p => new { p.UNLOADSTATE });
|
}
|
// 输送线允许放货
|
else if (conveyorLinesInfo.UNLOADSTATE == 2)
|
{
|
// 让agv放货
|
NDCHelper.ChangeParam(task.S_CODE, 1, 6);
|
}
|
}
|
else if (state == 1104)
|
{
|
// 修改任务
|
var pipeTask = AdoSqlMethod<Task>.QueryFirst(p => p.N_B_STATE == 0 && p.S_OP_CODE == task.S_OP_CODE && p.N_SCHEDULE_TYPE == 1);
|
|
if (pipeTask != null)
|
{
|
// 修改任务为推送状态
|
pipeTask.N_B_STATE = 1;
|
pipeTask.S_B_STATE = "已推送";
|
pipeTask.T_START_TIME = DateTime.Now;
|
AdoSqlMethod<Task>.UpdateFirst(pipeTask, p => new { p.N_B_STATE, p.S_B_STATE, p.T_START_TIME });
|
|
conveyorLinesInfo.UNLOADSTATE = 3;
|
conveyorLinesInfo.BARCODE = pipeTask.S_CNTR_CODE;
|
AdoSqlMethod<ConveyorLinesInfo>.UpdateFirst(conveyorLinesInfo, p => new { p.UNLOADSTATE, p.BARCODE });
|
}
|
}
|
}
|
else if (task.N_TYPE == 6)
|
{
|
if (state == 1103)
|
{
|
// 让agv放货
|
NDCHelper.ChangeParam(task.S_CODE, 1, 6);
|
}
|
}
|
}
|
}
|