using HH.WCS.ZhongCeJinTan.api; using HH.WCS.ZhongCeJinTan.device; using HH.WCS.ZhongCeJinTan.dispatch; using HH.WCS.ZhongCeJinTan.process; using HH.WCS.ZhongCeJinTan.util; using HH.WCS.ZhongCeJinTan.wms; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Threading.Tasks; using System.Web.Services.Description; using Top.Api; using static HH.WCS.ZhongCeJinTan.api.ApiModel; using static HH.WCS.ZhongCeJinTan.util.Settings; namespace HH.WCS.ZhongCeJinTan.core { internal class TaskCore { public static void OperateTaskStatus(AgvTaskState model) { //var wmsTask = TaskHelper.GetTask(model.task_no); //var db = new SqlHelper().GetInstance(); //LogHelper.Info("OperateTaskStatus--任务信息" + JsonConvert.SerializeObject(wmsTask), "API"); //LogHelper.Info("OperateTaskStatus--参数信息" + JsonConvert.SerializeObject(model), "API"); //if (wmsTask != null) // { // if (model.state <= 7) // { // //有任务号请求 // switch (model.state) // { // case 1: // TaskHelper.Begin(wmsTask,model.forklift_no.ToString()); // //胎面交互 // TaskHelper.TmSafety(wmsTask); // break; // case 3: // TaskHelper.UpdateStatus(wmsTask, "开始取货"); // break; // case 4: // TaskHelper.UpdateStatus(wmsTask, "取货完成"); // LocationHelper.UnLockLoc(wmsTask.S_START_LOC); // TaskProcess.OperateStatus(wmsTask, 4); // break; // case 5: // TaskHelper.UpdateStatus(wmsTask, "开始卸货"); // break; // case 6: // TaskHelper.UpdateStatus(wmsTask, "卸货完成"); // LocationHelper.UnLockLoc(wmsTask.S_END_LOC); // TaskProcess.OperateStatus(wmsTask, 6); // //如果是二段任务则下发立库任务 // var wcsTask = TaskHelper.GetTaskByState("未执行", "wcs", wmsTask.S_OP_CODE,"入库"); // if (wcsTask!=null) // { // LocationHelper.LockLoc(wcsTask.S_START_LOC, "出库锁", 2); // WcsTask.WcsTaskEntity(wcsTask); // } // break; // case 2: // //空托出或者满托出任务完成判断是否要提高入库优先级 // LogHelper.Info($"任务{wmsTask.S_CODE}完成,判断入库优先级", "入库优先级"); // TaskProcess.inPri(wmsTask); // TaskHelper.End(wmsTask); // break; // case 7: // var wcsTask1 = TaskHelper.GetTaskByWorkNo(wmsTask.S_OP_CODE, "wcs"); // if (wcsTask1!=null) // { // //退库任务不通知 // //agv执行通知 wcs取消 // if (wcsTask1.S_B_STATE!="未执行"&& wcsTask1.S_B_STATE != "完成"&& wcsTask1.S_B_STATE != "取消") // { // WcsTask.WcsCallback(wmsTask, model.state, model.forklift_no.ToString()); // } // TaskHelper.Fail(wcsTask1); // TaskProcess.OperateStatus(wcsTask1, 7); // } // TaskHelper.Fail(wmsTask); // TaskProcess.OperateStatus(wmsTask, 7); // //入库或者回库任务取消删除托盘物料 // if (wmsTask.S_TYPE.Contains("入库") || wmsTask.S_TYPE.Contains("回库")) // { // ContainerHelper.delCntr(wmsTask.S_CNTR_CODE); // ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE); // } // //出库取消判断接驳位是否有货,有货需要解绑 // if (!WcsTask.WcsCvstate(wmsTask)) // { // LogHelper.Info($"Wcs立库接驳位无货,解绑货位:{wmsTask.S_START_LOC}", "立库"); // TaskProcess.OperateStatus(wmsTask, 4); // ContainerHelper.delCntr(wmsTask.S_CNTR_CODE); // ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE); // } // break; // } // TaskHelper.AddActionRecord(wmsTask.S_CODE, model.state, model.forklift_no.ToString()); // } // else // { // //安全请求等 // TaskProcess.OperateReq(model.task_no, model.state, model.forklift_no.ToString()); // } //} } public static void addAgvActionState(AgvTaskState model) { var agvAction = new AgvActionState(); agvAction.state = model.state; agvAction.task_no = model.task_no; agvAction.forklift_no = model.forklift_no.ToString(); if (TaskHelper.CreateAgvActionState(agvAction)) { LogHelper.Info("添加agv动作缓存成功信息" + JsonConvert.SerializeObject(agvAction), "agv动作缓存"); } else { LogHelper.Info("添加agv动作缓存失败信息" + JsonConvert.SerializeObject(agvAction), "agv动作缓存"); } } /// /// agv任务分发 /// internal static void Dispatch() { //查询任务 //获取所有未执行的agv任务 var list = TaskHelper.GetTaskListByState("未执行", "agv"); if (list.Count > 0) { list.ForEach(task => { //任务拦截 if (TaskHelper.Intercept()) { TaskProcess.SendTask(task); } }); } } /// /// 立库任务分发 /// internal static void Dispatch1() { //查询任务 //获取所有未执行的wcs任务 var list = TaskHelper.GetWcsTaskListByState("未执行", "wcs","出库"); if (list.Count > 0) { list.ForEach(task => { WcsTask.WcsTaskEntity(task); }); } } } }