using HH.WCS.Mobox3.Template.dispatch;
using HH.WCS.Mobox3.Template.process;
using HH.WCS.Mobox3.Template.wms;
using System;
using System.Collections.Generic;
using System.Linq;
using static HH.WCS.Mobox3.Template.api.ApiModel;
namespace HH.WCS.Mobox3.Template.core {
internal class WCSCore {
public static void OperateAgvTaskStatus(AgvTaskState model) {
if (string.IsNullOrEmpty(model.No)) {
//无任务号请求(交管)
//DeviceProcess.Traffic(model.ForkliftNo, model.LockNo, model.State==1023);
}
else {
var TN_Task = WCSHelper.GetTask(model.No);
if (TN_Task != null) {
if (model.State <= 7) {
//有任务号请求
switch (model.State) {
case 1:
WCSHelper.Begin(TN_Task);
break;
#region MyRegion
case 3:
WCSHelper.UpdateStatus(TN_Task, "开始取货");
break;
case 4:
WCSHelper.UpdateStatus(TN_Task, "取货完成");
TaskProcess.OperateStatus(TN_Task, 4);
break;
case 5:
WCSHelper.UpdateStatus(TN_Task, "开始卸货");
break;
case 6:
WCSHelper.UpdateStatus(TN_Task, "卸货完成");
TaskProcess.OperateStatus(TN_Task, 6);
break;
#endregion
case 2:
WCSHelper.End(TN_Task);
break;
case 7:
TaskProcess.OperateStatus(TN_Task, 7);
WCSHelper.Fail(TN_Task);
break;
}
WCSHelper.AddActionRecord(model.No, model.State, model.ForkliftNo, model.ExtData);
//调用第三方接口(如果有)TaskProcess.ReportStatus
}
else {
//安全请求等
TaskProcess.OperateReq(model.No, model.State, model.ForkliftNo, model.ExtData);
}
}
}
}
///
/// 任务分发,根据调度类型发给不同的调度系统
///
internal static void Dispatch() {
//查询任务
//获取所有等待的任务
var list = WCSHelper.GetWaitingTaskList();
if (list.Count > 0) {
list.ForEach(task => {
if (!TaskProcess.Intercept(task)) {
//使用自定义任务推送
TaskProcess.SendTask(task);
}
});
}
}
///
/// 杭奥堆垛机信号反馈
///
///
internal static void OperateHATaskStatus(HanAo.TaskStateInfoModel model) {
var wcsTask = WCSHelper.GetTask(model.requestPk);
if (wcsTask != null) {
if (model.code == "0") {
//
if (wcsTask.S_TYPE == "堆垛机入库") {
//终点托盘绑定
if (LocationHelper.BindingLoc(wcsTask.S_END_LOC, new List { wcsTask.S_CNTR_CODE })) {
//修改托盘状态为可用,增加库存量表,后面分拣出可以计算到
ContainerHelper.Enable(wcsTask.S_CNTR_CODE, wcsTask.S_END_LOC);
}
}
else if (wcsTask.S_TYPE == "堆垛机出库") {
//起点托盘解绑
LocationHelper.UnBindingLoc(wcsTask.S_START_LOC, new List { wcsTask.S_CNTR_CODE });
}
//标记任务完成
//标记作业完成
wcsTask.N_B_STATE = 3;
WCSHelper.UpdateStatus(wcsTask);
var wmsTask = WMSHelper.GetWmsTask(wcsTask.S_OP_CODE);
if (wmsTask != null) {
wmsTask.N_B_STATE = 2;
WMSHelper.UpdateTaskState(wmsTask);
}
}
}
}
}
}