using System;
using HH.WCS.Mobox3.RiDong.dispatch;
using HH.WCS.Mobox3.RiDong.models;
namespace HH.WCS.Mobox3.RiDong.generalMethod;
///
/// agv方法
///
public static class AGVMethod
{
///
/// 安全请求
///
/// 当前任务
/// 状态值
public static void OperateReq(Task task, int state)
{
// 入库
if (task.N_TYPE == 1 || task.N_TYPE == 3)
{
// 读取中间表数据是否为1
var conveyorLinesInfo = AdoSqlMethod.QueryFirst(p => p.LOCATION == task.S_START_LOC);
// 信息交互
if (state == 1101)
{
if (conveyorLinesInfo != null)
{
// 判断中间表入库信号是否为2
if (conveyorLinesInfo.LOADSTATE == 2)
{
conveyorLinesInfo.LOADSTATE = 3;
AdoSqlMethod.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.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.QueryFirst(p => p.LOCATION == task.S_END_LOC);
if (state == 1103)
{
// 表示申请放货
if (conveyorLinesInfo.UNLOADSTATE == 0)
{
conveyorLinesInfo.UNLOADSTATE = 1;
AdoSqlMethod.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.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.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.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);
}
}
}
}