using HH.WCS.Mobox3.pinggao.api; using HH.WCS.Mobox3.pinggao.dispatch; using HH.WCS.Mobox3.pinggao.process; using HH.WCS.Mobox3.pinggao.util; using HH.WCS.Mobox3.pinggao.wms; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using static HH.WCS.Mobox3.pinggao.api.ApiModel; namespace HH.WCS.Mobox3.pinggao.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 ) {//&& !WCSHelper.CheckActionRecordExist(model.No,model.State //有任务号请求 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); //if (TN_Task.N_TYPE == 2) //{ // WMSHelper.DeleteChange(TN_Task); //} break; case 5: WCSHelper.UpdateStatus(TN_Task, "开始卸货"); break; case 6: WCSHelper.UpdateStatus(TN_Task, "卸货完成"); TaskProcess.OperateStatus(TN_Task, 6); if (TN_Task.N_TYPE == 1&&TN_Task.S_TYPE!= "回库") { WMSHelper.AddChange(TN_Task); WMSHelper.QsDeleteChange(TN_Task); } break; #endregion case 2: WCSHelper.End(TN_Task); LogHelper.Info("任務完成" + TN_Task.N_TYPE); if (TN_Task.N_TYPE == 1) { WmsSpaHelper.AddMaterOrder(TN_Task.S_BS_NO, TN_Task.S_CNTR_CODE); } //sendsencondtask(TN_Task); WMSHelper.End(TN_Task); //出库任务完成 修改配盘单状态为完成 if (TN_Task.N_TYPE == 2&&TN_Task.S_TYPE!="出库空托盘") { WMSHelper.EndTn(TN_Task.S_CNTR_CODE); } break; case 7: if (TN_Task.N_B_STATE!=3) { TaskProcess.OperateStatus(TN_Task, 7); WCSHelper.Fail(TN_Task); WMSHelper.Fail(TN_Task); } //sendsencondtask(TN_Task); //WMSHelper.End(TN_Task); break; } WCSHelper.AddActionRecord(model.No, model.State, model.ForkliftNo, model.ExtData); //调用第三方接口(如果有)TaskProcess.ReportStatus TaskProcess.ThirdReportStatus(TN_Task, model.State, model.ForkliftNo); TaskProcess.UpdateAgvNo(TN_Task, model.ForkliftNo); //DeviceProcess.TaskState(TN_Task,model.State); } else { //安全请求等 TaskProcess.OperateReq( TN_Task, model.State, model.ForkliftNo, model.ExtData); } } } } private static void sendsencondtask(WCSTask task) { var db = new SqlHelper().GetInstance(); var optask = db.Queryable().Where(a => a.S_CODE == task.S_OP_CODE).First(); if (task.S_END_LOC != optask.S_END_LOC) { optask.N_B_STATE = 0; optask.S_B_STATE = "等待"; WMSHelper.UpdateTaskState(optask); } } //public static bool SendCd() //{ // var result = false; // var dic = new Dictionary(); // var dic1 = new Dictionary(); // dic.Add("ExtDeviceNo", "1"); // //判断 // var res = NDC.OrderAdd(99, dic, dic1); // if (res != null && (res.Res.ErrCode == 0 || res.Res.ErrCode == 50009)) // { // result = true; // } // return result; //} /// /// 任务分发,根据调度类型发给不同的调度系统 /// 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 Dispatch1() { //查询任务 //获取所有等待的任务 TaskProcess.SendCd(); } internal static void DSCZ() { //查询任务 //获取所有等待的任务 TaskProcess.SendCZ(); } /// /// 杭奥堆垛机信号反馈 /// /// internal static void OperateHATaskStatus(HanAo.TaskStateInfoModel model) { var wcsTask = WCSHelper.GetTask(model.requestPk); if (wcsTask != null) { var start=LocationHelper.GetLoc(wcsTask.S_START_LOC); var end = LocationHelper.GetLoc(wcsTask.S_END_LOC); if (model.code == "0") { 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); } sendsencondtask(wcsTask); } } } } }