| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading;
 
- using WCS.Data;
 
- using WCS.Data.Models;
 
- using WCS.Data.Utils;
 
- using WCS.PLC;
 
- namespace WCS.Workflow
 
- {
 
-     public class AgvWorkflow
 
-     {
 
-         private static int _agvRun = 0;
 
-         public static void AgvRun()
 
-         {
 
-             if (Interlocked.Exchange(ref _agvRun, 1) == 0)
 
-             {
 
-                 Thread.Sleep(10000);
 
-                 //熟化架缓冲区广电检测生成AGV任务
 
-                 AgvCallMaturingRack();
 
-                 //生产线AGV申请WMS生成出库任务
 
-                 AgvCallOutTask();
 
-                 //生产线AGV申请WMS生成退料入库任务
 
-                 AgvCallBackInTask();
 
-                 Interlocked.Exchange(ref _agvRun, 0);
 
-             }
 
-         }
 
-         private static int _agvUpdateStatus = 0;
 
-         public static void AgvUpdateStatus()
 
-         {
 
-             if (Interlocked.Exchange(ref _agvUpdateStatus, 1) == 0)
 
-             {
 
-                 Thread.Sleep(1000);
 
-                 //发送任务给AGV
 
-                 SendTaskToAgv();
 
-                 //无AGV模式WCS标识AGV任务完成
 
-                 FinishAgvTaskAgvStatus();
 
-                 //标识agv任务Wcs完成状态
 
-                 FinishAgvTaskWcsStatus();
 
-                 Interlocked.Exchange(ref _agvUpdateStatus, 0);
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 生产线根据光电信号自动生成AGV任务
 
-         /// </summary>
 
-         public static void AgvCallMaturingRack()
 
-         {
 
-             try
 
-             {
 
-                 foreach (var item in Current.AgvCachePostionSet)
 
-                 {
 
-                     try
 
-                     {
 
-                         //if (item.WorkshopNo == "4")
 
-                         //{
 
-                         //    if (item.CachePosNo.Contains("Empty04")) continue;
 
-                         //}
 
-                         //if (item.CachePosNo.Contains("Pvc_5_Empty")) continue;
 
-                         int task_type = item.CachePosNo.Contains("Empty") ? 3 : 4;
 
-                         #region 检测光电创建AGV任务
 
-                         if (Current.SysSets.Any(t => t.SET_ID == item.Workshop && t.SET_VALUE == "0"))
 
-                         {
 
-                             if (item.CachePH_Status == false && task_type == 3)
 
-                             {
 
-                                 if (!Current.AgvTaskSet.Any(v => v.Task_PosidTo == item.CachePosNo))
 
-                                 {
 
-                                     //创建AGV任务
 
-                                     var agvtask = new Middle_AGVTask()
 
-                                     {
 
-                                         Task_Type = task_type,
 
-                                         Task_Whid = Current.PvchouseputongCh,
 
-                                         Task_WorkshopNo = item.WorkshopNo,
 
-                                         Task_ProLineNo = item.ProLineNo,
 
-                                         Task_PosidFrom = item.ConvPostionNo,
 
-                                         Task_PosidTo = item.CachePosNo,
 
-                                         Task_CreateDate = DateTime.Now,
 
-                                         Task_CreateUser = "wcs",
 
-                                         Task_UpdateUser = "wcs",
 
-                                         Task_UpdateDate = DateTime.Now
 
-                                     };
 
-                                     SugarBase.DB.Insertable(agvtask).ExecuteCommand();
 
-                                 }
 
-                             }
 
-                         }
 
-                         #endregion;
 
-                         #region 创建半成品入库AGV任务
 
-                         if (task_type == 4)
 
-                         {
 
-                             //查询半成品熟化架任务
 
-                             var task = Current.TaskSet.Where(v => v.TASK_POSIDFROM == item.CachePosNo && v.TASK_WKSTATUS <= 1).OrderBy(v => v.TASK_ADDDATETIME).ToList().FirstOrDefault();
 
-                             if (task == null) continue;
 
-                             #region 避开指定车间出入库高峰期
 
-                             //查询指定车间已下发给WCS的AGV任务列表
 
-                             var agvtaskSet = Current.AgvTaskSet.Where(v => v.Task_WorkshopNo == item.WorkshopNo &&
 
-                                                                     v.Task_WcsStatus > 0 && v.Task_WcsStatus != 4 && v.Task_WcsStatus != 99 && v.Task_WcsStatus != 106).ToList();
 
-                             if (item.WorkshopNo == "4")
 
-                             {
 
-                                 //检测是否存在出库任务
 
-                                 if (Current.TaskSet.Any(v => agvtaskSet.Any(t => t.Task_Id.ToString() == v.TASK_ITEM8) &&
 
-                                                         v.TASK_WKSTATUS > 1 && v.TASK_WKSTATUS != 5 && v.TASK_WKSTATUS != 6 && v.TASK_WKSTATUS != 99 && v.TASK_WKSTATUS != 106 &&
 
-                                                         v.TASK_COMTYPE == 2 && v.TASK_POSIDNEXT != "1070" && v.TASK_POSIDNEXT != "1071" && v.TASK_POSIDNEXT != "1072"))
 
-                                 {
 
-                                     //存在已经执行中的WCS出库任务
 
-                                     if (item.WorkshopNo != "18")
 
-                                     {
 
-                                         string msg = string.Format("车间[{0}]半成品入库条码[{1}]稍等,为避开高峰期出库任务完成后执行。", item.WorkshopNo, task.TASK_BOXBARCODE);
 
-                                         BaseWorkflow.AddLedErrorMsg(item.ConvPostionNo, msg, 0);
 
-                                         LogMessageHelper.RecordLogMessage(msg);
 
-                                         continue;
 
-                                     }
 
-                                 }
 
-                             }
 
-                             else if (item.WorkshopNo == "5")
 
-                             {
 
-                                 //检测是否存在出库任务
 
-                                 if (Current.TaskSet.Any(v => agvtaskSet.Any(t => t.Task_Id.ToString() == v.TASK_ITEM8) &&
 
-                                                         v.TASK_WKSTATUS > 1 && v.TASK_WKSTATUS != 5 && v.TASK_WKSTATUS != 6 && v.TASK_WKSTATUS != 99 && v.TASK_WKSTATUS != 106 &&
 
-                                                         v.TASK_COMTYPE == 2 && v.TASK_POSIDNEXT != "1070" && v.TASK_POSIDNEXT != "1071" && v.TASK_POSIDNEXT != "1072" && v.TASK_POSIDNEXT != "1085"))
 
-                                 {
 
-                                     //存在已经执行中的WCS出库任务
 
-                                     if (item.WorkshopNo != "18")
 
-                                     {
 
-                                         string msg = string.Format("车间[{0}]半成品入库条码[{1}]稍等,为避开高峰期出库任务完成后执行。", item.WorkshopNo, task.TASK_BOXBARCODE);
 
-                                         BaseWorkflow.AddLedErrorMsg(item.ConvPostionNo, msg, 0);
 
-                                         LogMessageHelper.RecordLogMessage(msg);
 
-                                         continue;
 
-                                     }
 
-                                 }
 
-                             }
 
-                             #endregion;
 
-                             var agvtaskitem = Current.AgvTaskSet.OrderBy(v => v.Task_UpdateDate).FirstOrDefault(v => v.Task_PosidFrom == item.CachePosNo);
 
-                             if (item.CachePH_Status)
 
-                             {
 
-                                 if (agvtaskitem == null)
 
-                                 {
 
-                                     #region 创建AGV任务
 
-                                     var workshopNo = string.Format("Agv_{0}#", item.WorkshopNo);
 
-                                     int wcsStatus = 1;
 
-                                     //if (Current.SysSets.FirstOrDefault(v => v.SET_ID == workshopNo).SET_VALUE.Trim() == "0")
 
-                                     //{
 
-                                     //    wcsStatus = 1;
 
-                                     //}
 
-                                     var agvtasks = SugarBase.DB.Queryable<Middle_AGVTask>().Where(v => v.Task_PosidFrom == item.ConvPostionNo && v.Task_WcsStatus != 4 && v.Task_WcsStatus != 99 && v.Task_WcsStatus != 106).ToList();
 
-                                     if (agvtasks.Any(v => !string.IsNullOrWhiteSpace(v.Task_No)))
 
-                                     {
 
-                                         continue;
 
-                                     }
 
-                                     //创建AGV任务
 
-                                     var agvtask = new Middle_AGVTask()
 
-                                     {
 
-                                         Task_No = task.TASK_WMSNO,
 
-                                         Task_BreakTrayNo = task.TASK_BOXBARCODE,
 
-                                         Task_Type = task_type,
 
-                                         Task_Whid = Current.PvchouseputongCh,
 
-                                         Task_WorkshopNo = item.WorkshopNo,
 
-                                         Task_ProLineNo = item.ProLineNo,
 
-                                         Task_PosidFrom = item.CachePosNo,
 
-                                         Task_PosidTo = item.ConvPostionNo,
 
-                                         Task_WcsStatus = wcsStatus,
 
-                                         Task_CreateDate = DateTime.Now,
 
-                                         Task_CreateUser = "wcs",
 
-                                         Task_UpdateUser = "wcs",
 
-                                         Task_UpdateDate = DateTime.Now
 
-                                     };
 
-                                     string result = TryCachHelper.TryTranExecute((db) =>
 
-                                     {
 
-                                         int task_id = db.Insertable(agvtask).ExecuteReturnIdentity();
 
-                                         if (task_id <= 0)
 
-                                         {
 
-                                             throw new Exception(string.Format("WCS任务[{0}]添加agv任务失败", task_id));
 
-                                         }
 
-                                         string task_idStr = task_id.ToString();
 
-                                         //修改任务的状态
 
-                                         db.Updateable<WCS_TASK>(it => new WCS_TASK() { TASK_WKSTATUS = 10, TASK_EDITUSERNO = "WCS", TASK_ITEM8 = task_idStr, TASK_EDITDATETIME = DateTime.Now })
 
-                                                     .Where(it => it.TASK_NO == task.TASK_NO)
 
-                                                     .ExecuteCommand();
 
-                                         //添加修改明细
 
-                                         string msg = string.Format("任务[{0}]已下发AGV", task.TASK_NO);
 
-                                         CommonData.AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDTO, msg);
 
-                                     });
 
-                                     #endregion;
 
-                                 }
 
-                                 else
 
-                                 {
 
-                                     #region 修改AGV任务状态
 
-                                     if (agvtaskitem.Task_WcsStatus == 0 && agvtaskitem.Task_AgvStatus == 0)
 
-                                     {
 
-                                         string result = TryCachHelper.TryTranExecute((db) =>
 
-                                         {
 
-                                             db.Updateable<Middle_AGVTask>(it => new Middle_AGVTask()
 
-                                             {
 
-                                                 Task_WcsStatus = 1,
 
-                                                 Task_UpdateUser = "wcs",
 
-                                                 Task_UpdateDate = DateTime.Now
 
-                                             }).Where(it => it.Task_Id == agvtaskitem.Task_Id).ExecuteCommand();
 
-                                             string task_idStr = agvtaskitem.Task_Id.ToString();
 
-                                             //修改任务的状态
 
-                                             db.Updateable<WCS_TASK>(it => new WCS_TASK() { TASK_WKSTATUS = 10, TASK_EDITUSERNO = "WCS", TASK_ITEM8 = task_idStr, TASK_EDITDATETIME = DateTime.Now })
 
-                                                         .Where(it => it.TASK_NO == task.TASK_NO)
 
-                                                         .ExecuteCommand();
 
-                                             //添加修改明细
 
-                                             string msg = string.Format("任务[{0}]已下发AGV", task.TASK_NO);
 
-                                             CommonData.AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDTO, msg);
 
-                                         });
 
-                                         if (string.IsNullOrWhiteSpace(result))
 
-                                         {
 
-                                             LogMessageHelper.RecordLogMessage(string.Format("agvId[{0}]是agv错误插入的任务,WCS修改该任务的状态成功。", agvtaskitem.Task_Id));
 
-                                         }
 
-                                     }
 
-                                     #endregion;
 
-                                 }
 
-                             }
 
-                             else
 
-                             {
 
-                                 #region 修改AGV任务状态
 
-                                 if (agvtaskitem != null && agvtaskitem.Task_WcsStatus == 0 && agvtaskitem.Task_AgvStatus == 0)
 
-                                 {
 
-                                     string result = TryCachHelper.TryTranExecute((db) =>
 
-                                     {
 
-                                         db.Updateable<Middle_AGVTask>(it => new Middle_AGVTask()
 
-                                         {
 
-                                             Task_WcsStatus = 1,
 
-                                             Task_UpdateUser = "wcs",
 
-                                             Task_UpdateDate = DateTime.Now
 
-                                         }).Where(it => it.Task_Id == agvtaskitem.Task_Id).ExecuteCommand();
 
-                                         string task_idStr = agvtaskitem.Task_Id.ToString();
 
-                                         //修改任务的状态
 
-                                         db.Updateable<WCS_TASK>(it => new WCS_TASK() { TASK_WKSTATUS = 10, TASK_EDITUSERNO = "WCS", TASK_ITEM8 = task_idStr, TASK_EDITDATETIME = DateTime.Now })
 
-                                                     .Where(it => it.TASK_NO == task.TASK_NO)
 
-                                                     .ExecuteCommand();
 
-                                         //添加修改明细
 
-                                         string msg = string.Format("任务[{0}]已下发AGV", task.TASK_NO);
 
-                                         CommonData.AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDTO, msg);
 
-                                     });
 
-                                     if (string.IsNullOrWhiteSpace(result))
 
-                                     {
 
-                                         LogMessageHelper.RecordLogMessage(string.Format("agvId[{0}]是agv错误插入的任务,WCS修改该任务的状态成功。", agvtaskitem.Task_Id));
 
-                                     }
 
-                                 }
 
-                                 #endregion;
 
-                             }
 
-                         }
 
-                         //if (item.CachePH_Status && task_type == 4)
 
-                         //{
 
-                         //    //查询半成品熟化架任务
 
-                         //    var task = Current.TaskSet.Where(v => v.TASK_POSIDFROM == item.CachePosNo && v.TASK_WKSTATUS <= 1).OrderBy(v => v.TASK_ADDDATETIME).ToList().FirstOrDefault();
 
-                         //    if (task != null)
 
-                         //    {
 
-                                 
 
-                         //        #region 创建AGV任务,修改WCS任务状态
 
-                              
 
-                                 
 
-                         //        else 
 
-                         //        #endregion;
 
-                         //    }
 
-                         //}
 
-                         #endregion;
 
-                     }
 
-                     catch (Exception ex)
 
-                     {
 
-                         LogMessageHelper.RecordLogMessage(ex);
 
-                     }
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 LogMessageHelper.RecordLogMessage(ex);
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 生产线AGV申请WMS生成出库任务
 
-         /// </summary>
 
-         public static void AgvCallOutTask()
 
-         {
 
-             try
 
-             {
 
-                 //查询AGV呼叫任务,申请生成WMS出库任务
 
-                 var agvTasks = Current.AgvTaskSet.Where(v => (v.Task_WcsStatus == 5 || v.Task_WcsStatus==0) && (v.Task_Type == 1 || v.Task_Type == 3)).OrderBy(v => v.Task_CreateDate).ToList();
 
-                 foreach (var item in agvTasks)
 
-                 {
 
-                     try
 
-                     {
 
-                         //if (item.Task_Type == 1 && (item.Task_WorkshopNo == "5" || item.Task_WorkshopNo == "6" || item.Task_WorkshopNo == "7"))
 
-                         //{
 
-                         //    continue;
 
-                         //}
 
-                         if (!SugarBase.DB.Queryable<WCS_TASK>().Any(v => v.TASK_ITEM8 == item.Task_Id.ToString()))
 
-                         {
 
-                             var param = new GetOutTaskParam();
 
-                             param.OutId = item.Task_Id.ToString();
 
-                             param.OutEndPostion = item.Task_PosidTo;
 
-                             int tasktype = 0;
 
-                             if (item.Task_Type == 1)
 
-                             {
 
-                                 tasktype = 1;
 
-                             }
 
-                             else if (item.Task_Type == 3)
 
-                             {
 
-                                 tasktype = 2;
 
-                             }
 
-                             param.OutType = tasktype;
 
-                             param.WareHouseId = Current.Pvchouseputong;
 
-                             if (item.Task_Type == 1 && item.Task_WorkshopNo != "18")
 
-                             {
 
-                                 param.Memo1 = "1";
 
-                             }
 
-                             BaseWorkflow.GetOutTask(param);
 
-                             //调用WMS接口生成出库任务
 
-                             //ThreadHelper.TaskThread(BaseWorkflow.GetOutTask, param, 2000);
 
-                         }
 
-                     }
 
-                     catch (Exception ex)
 
-                     {
 
-                         LogMessageHelper.RecordLogMessage(ex);
 
-                     }
 
-                 }
 
-                 //查询18车间的空熟化架入库任务
 
-                 var agvTaskItems = Current.AgvTaskSet.Where(v => v.Task_WcsStatus == 0 && v.Task_Type == 4 && v.Task_WorkshopNo=="18").OrderBy(v => v.Task_CreateDate).ToList();
 
-                 foreach (var item in agvTaskItems)
 
-                 {
 
-                     SugarBase.DB.Updateable<Middle_AGVTask>(it => new Middle_AGVTask() { Task_WcsStatus = 1, Task_UpdateUser = "wcs", Task_UpdateDate = DateTime.Now })
 
-                                .Where(it => it.Task_Id == item.Task_Id)
 
-                                .ExecuteCommand();
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 LogMessageHelper.RecordLogMessage(ex);
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 生产线AGV申请WMS生成退料入库任务
 
-         /// </summary>
 
-         public static void AgvCallBackInTask()
 
-         {
 
-             try
 
-             {
 
-                 //查询AGV呼叫任务,申请生成WMS出库任务
 
-                 var agvTasks = Current.AgvTaskSet.Where(v => v.Task_WcsStatus == 0 && v.Task_Type == 2 && v.Task_WorkshopNo.Trim() != "18").OrderBy(v => v.Task_CreateDate).ToList();
 
-                 foreach (var item in agvTasks)
 
-                 {
 
-                     if (item.Task_WorkshopNo.Trim() == "18")
 
-                     {
 
-                     }
 
-                     else
 
-                     {
 
-                         if (!Current.TaskSet.Any(v => v.TASK_ITEM8 == item.Task_Id.ToString()))
 
-                            // if (!Current.TaskSet.Any(v => v.TASK_POSIDTO == item.Task_PosidFrom))
 
-                         {
 
-                             var param = new GetOutTaskParam()
 
-                             {
 
-                                 OutId = item.Task_Id.ToString(),
 
-                                 OutEndPostion = item.Task_PosidFrom,
 
-                                 OutType = item.Task_Type == 2 ? 2 : 0,
 
-                                 WareHouseId = Current.Pvchouseputong
 
-                             };
 
-                             //调用WMS接口生成出库任务
 
-                             ThreadHelper.TaskThread(BaseWorkflow.GetOutTask, param, 2000);
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 LogMessageHelper.RecordLogMessage(ex);
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 半成品熟化架入库
 
-         /// </summary>
 
-         //public static void AgvCallFullInTask()
 
-         //{
 
-         //    try
 
-         //    {
 
-         //        //查询AGV呼叫任务,申请生成WMS出库任务
 
-         //        var agvTasks = Current.AgvTaskSet.Where(v => v.Task_WcsStatus == 0 && v.Task_Type == 4).OrderBy(v => v.Task_CreateDate).ToList();
 
-         //        foreach (var item in agvTasks)
 
-         //        {
 
-         //            if (!Current.TaskSet.Any(v => v.TASK_POSIDFROM == item.Task_PosidFrom))
 
-         //            {
 
-         //                var param = new GetInTaskParam();
 
-         //                param.ContainerBarCode = string.Empty;
 
-         //                param.ContainerType = 1;
 
-         //                param.MatBarCode = string.Empty;
 
-         //                param.WareHouseId = Current.Pvchouseputong;
 
-         //                param.EquipmentNo = item.Task_PosidFrom;
 
-         //                param.EndPostion = "srm";
 
-         //                ThreadHelper.TaskThread(BaseWorkflow.GetWcsInTask, param, 3000);
 
-         //            }
 
-         //        }
 
-         //    }
 
-         //    catch (Exception ex)
 
-         //    {
 
-         //        LogMessageHelper.RecordLogMessage(ex);
 
-         //    }
 
-         //}
 
-         /// <summary>
 
-         /// 发送任务给AGV
 
-         /// </summary>
 
-         public static void SendTaskToAgv()
 
-         {
 
-             try
 
-             {
 
-                 var outPosNoList_4_5 = new List<string>() { "1097", "1104" };//4#,5#
 
-                 var tasks = SugarBase.DB.Queryable<WCS_TASK>().Where(v => outPosNoList_4_5.Contains(v.TASK_POSIDCUR)).ToList();
 
-                 var outPosNoList_6_7 = new List<string>() { "1107", "1112", "1199" };//6#,7#,18#
 
-                 var tasktemps = SugarBase.DB.Queryable<WCS_TASK>().Where(v => outPosNoList_6_7.Contains(v.TASK_POSIDCUR)).ToList();
 
-                 tasks.AddRange(tasktemps);
 
-                 foreach (var item in tasks)
 
-                 {
 
-                     try
 
-                     {
 
-                         Thread.Sleep(100);
 
-                         int agv_taskid = 0;
 
-                         if (!string.IsNullOrWhiteSpace(item.TASK_ITEM8))
 
-                         {
 
-                             agv_taskid = Convert.ToInt32(item.TASK_ITEM8);
 
-                         }
 
-                         if (agv_taskid == 0) continue;
 
-                         var agvtask = SugarBase.DB.Queryable<Middle_AGVTask>().First(v => v.Task_Id == agv_taskid);
 
-                         if (agvtask != null && agvtask.Task_AgvStatus == 0 && (agvtask.Task_WcsStatus == 0 || agvtask.Task_WcsStatus == 5))
 
-                         {
 
-                             string task_no = item.TASK_NO.ToString();
 
-                             int wcsStatus = 5;
 
-                             if (Current.SysSets.FirstOrDefault(v => v.SET_ID == agvtask.Task_Workshop).SET_VALUE.Trim() == "0")
 
-                             {
 
-                                 wcsStatus = 1;
 
-                                 //任务下发给AGV
 
-                                 SugarBase.DB.Updateable<Middle_AGVTask>(it => new Middle_AGVTask()
 
-                                 {
 
-                                     Task_No = item.TASK_WMSNO,
 
-                                     Task_WcsStatus = wcsStatus,
 
-                                     Task_BreakTrayNo = item.TASK_BOXBARCODE,
 
-                                     Task_BreakBarCode_1 = item.TASK_ITEM9,
 
-                                     Task_BreakBarCode_2 = item.TASK_ITEM10,
 
-                                     Task_UpdateUser = "wcs",
 
-                                     Task_UpdateDate = DateTime.Now,
 
-                                     Task_Remark = task_no
 
-                                 })
 
-                                 .Where(it => it.Task_Id == agv_taskid)
 
-                                 .ExecuteCommand();
 
-                             }
 
-                         }
 
-                     }
 
-                     catch (Exception ex)
 
-                     {
 
-                         LogMessageHelper.RecordLogMessage(ex);
 
-                     }
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 LogMessageHelper.RecordLogMessage(ex);
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 无AGV模式WCS标识AGV任务完成
 
-         /// </summary>
 
-         private static void FinishAgvTaskAgvStatus()
 
-         {
 
-             try
 
-             {
 
-                 var syssets = Current.SysSets.Where(v => v.SET_TYPE == "AgvDisable").ToList();
 
-                 var agvtask = Current.AgvTaskSet.Where(v => v.Task_AgvStatus < 99 && v.Task_WcsStatus < 99 && syssets.Any(t => t.SET_ID == v.Task_Workshop && t.SET_VALUE.Trim() == "1")).ToList();
 
-                 foreach (var item in agvtask)
 
-                 {
 
-                     try
 
-                     {
 
-                         if (string.IsNullOrWhiteSpace(item.Task_No)) continue;
 
-                         if (string.IsNullOrWhiteSpace(item.Task_BreakTrayNo)) continue;
 
-                         if (item.Task_Type == 1 | item.Task_Type == 3)
 
-                         {
 
-                             var routeitem = Current.EquRouteSet.SingleOrDefault(v => v.ROUTE_SONPOS == item.Task_PosidTo.Trim());
 
-                             var task = Current.TaskSet.FirstOrDefault(v => v.TASK_WMSNO == item.Task_No && v.TASK_POSIDNEXT == routeitem.ROUTE_STARTPOS);
 
-                             if (task != null)
 
-                             {
 
-                                 //标识agv任务agv完成状态
 
-                                 SugarBase.DB.Updateable<Middle_AGVTask>(it => new Middle_AGVTask()
 
-                                 {
 
-                                     Task_AgvStatus = 99,
 
-                                     Task_UpdateUser = "wcs",
 
-                                     Task_UpdateDate = DateTime.Now
 
-                                 })
 
-                                 .Where(it => it.Task_Id == item.Task_Id)
 
-                                 .ExecuteCommand();
 
-                             }
 
-                         }
 
-                         else
 
-                         {
 
-                             if (Current.TaskSet.Any(v => v.TASK_BOXBARCODE == item.Task_BreakTrayNo && v.TASK_WMSNO == item.Task_No && v.TASK_WKSTATUS == 2))
 
-                             {
 
-                                 //标识agv任务agv完成状态
 
-                                 SugarBase.DB.Updateable<Middle_AGVTask>(it => new Middle_AGVTask()
 
-                                 {
 
-                                     Task_AgvStatus = 99,
 
-                                     Task_UpdateUser = "wcs",
 
-                                     Task_UpdateDate = DateTime.Now
 
-                                 })
 
-                                 .Where(it => it.Task_Id == item.Task_Id)
 
-                                 .ExecuteCommand();
 
-                             }
 
-                         }
 
-                     }
 
-                     catch (Exception ex)
 
-                     {
 
-                         LogMessageHelper.RecordLogMessage(ex);
 
-                     }
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 LogMessageHelper.RecordLogMessage(ex);
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 标识agv任务Wcs完成状态
 
-         /// </summary>
 
-         public static void FinishAgvTaskWcsStatus()
 
-         {
 
-             try
 
-             {
 
-                 var agvTasks = Current.AgvTaskSet.Where(v => (v.Task_AgvStatus == 99 || v.Task_AgvStatus == 106) && v.Task_WcsStatus < 99).ToList();
 
-                 foreach (var item in agvTasks)
 
-                 {
 
-                     try
 
-                     {
 
-                         var wcstask = Current.TaskSet.FirstOrDefault(v => v.TASK_WMSNO == item.Task_No);
 
-                         if ((!string.IsNullOrWhiteSpace(item.Task_BreakBarCode_1)) &&
 
-                             (!string.IsNullOrWhiteSpace(item.Task_BreakTrayNo)))
 
-                         {
 
-                             //检查是否生成了退料入库任务
 
-                             if (!Current.TaskSet.Any(v => v.TASK_BOXBARCODE == item.Task_BreakTrayNo && v.TASK_COMTYPE == 1)) continue;
 
-                             string result = TryCachHelper.TryTranExecute((db) =>
 
-                             {
 
-                                 //标识agv任务Wcs完成状态
 
-                                 db.Updateable<Middle_AGVTask>(it => new Middle_AGVTask()
 
-                                 {
 
-                                     Task_WcsStatus = item.Task_AgvStatus,
 
-                                     Task_UpdateUser = "wcs",
 
-                                     Task_UpdateDate = DateTime.Now
 
-                                 })
 
-                                 .Where(it => it.Task_Id == item.Task_Id)
 
-                                 .ExecuteCommand();
 
-                                 //标识wcs状态
 
-                                 if (wcstask != null && wcstask.TASK_COMTYPE == 1 && wcstask.TASK_WKSTATUS == 10)
 
-                                 {
 
-                                     db.Updateable<WCS_TASK>(it => new WCS_TASK()
 
-                                     {
 
-                                         TASK_WKSTATUS = 12,
 
-                                         TASK_EDITUSERNO = "wcs",
 
-                                         TASK_EDITDATETIME = DateTime.Now
 
-                                     })
 
-                                       .Where(it => it.TASK_NO == wcstask.TASK_NO)
 
-                                       .ExecuteCommand();
 
-                                     //添加任务明细
 
-                                     string msg = string.Format("入库任务[{0}]AGV完成", wcstask.TASK_NO);
 
-                                     CommonData.AddWCS_TASK_DTL(db, wcstask.TASK_NO, wcstask.TASK_NO, wcstask.TASK_POSIDCUR, wcstask.TASK_POSIDCUR, msg);
 
-                                 }
 
-                             });
 
-                         }
 
-                         else
 
-                         {
 
-                             string result = TryCachHelper.TryTranExecute((db) =>
 
-                             {
 
-                                 //标识agv任务Wcs完成状态
 
-                                 db.Updateable<Middle_AGVTask>(it => new Middle_AGVTask()
 
-                                 {
 
-                                     Task_WcsStatus = item.Task_AgvStatus,
 
-                                     Task_UpdateUser = "wcs",
 
-                                     Task_UpdateDate = DateTime.Now
 
-                                 })
 
-                                  .Where(it => it.Task_Id == item.Task_Id)
 
-                                  .ExecuteCommand();
 
-                                 //标识wcs状态
 
-                                 if (wcstask != null && wcstask.TASK_COMTYPE == 1)
 
-                                 {
 
-                                     db.Updateable<WCS_TASK>(it => new WCS_TASK()
 
-                                     {
 
-                                         TASK_WKSTATUS = 12,
 
-                                         TASK_EDITUSERNO = "wcs",
 
-                                         TASK_EDITDATETIME = DateTime.Now
 
-                                     })
 
-                                       .Where(it => it.TASK_NO == wcstask.TASK_NO)
 
-                                       .ExecuteCommand();
 
-                                     //添加任务明细
 
-                                     string msg = string.Format("入库任务[{0}]AGV完成", wcstask.TASK_NO);
 
-                                     CommonData.AddWCS_TASK_DTL(db, wcstask.TASK_NO, wcstask.TASK_NO, wcstask.TASK_POSIDCUR, wcstask.TASK_POSIDCUR, msg);
 
-                                 }
 
-                             });
 
-                         }
 
-                     }
 
-                     catch (Exception ex)
 
-                     {
 
-                         LogMessageHelper.RecordLogMessage(ex);
 
-                     }
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 LogMessageHelper.RecordLogMessage(ex);
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |