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);
            }
        }
        /// 
        /// 生产线根据光电信号自动生成AGV任务
        /// 
        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().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(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(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(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(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(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);
            }
        }
        /// 
        /// 生产线AGV申请WMS生成出库任务
        /// 
        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().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(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);
            }
        }
        /// 
        /// 生产线AGV申请WMS生成退料入库任务
        /// 
        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);
            }
        }
        /// 
        /// 半成品熟化架入库
        /// 
        //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);
        //    }
        //}
        /// 
        /// 发送任务给AGV
        /// 
        public static void SendTaskToAgv()
        {
            try
            {
                var outPosNoList_4_5 = new List() { "1097", "1104" };//4#,5#
                var tasks = SugarBase.DB.Queryable().Where(v => outPosNoList_4_5.Contains(v.TASK_POSIDCUR)).ToList();
                var outPosNoList_6_7 = new List() { "1107", "1112", "1199" };//6#,7#,18#
                var tasktemps = SugarBase.DB.Queryable().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().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(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);
            }
        }
        /// 
        /// 无AGV模式WCS标识AGV任务完成
        /// 
        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(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(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);
            }
        }
        /// 
        /// 标识agv任务Wcs完成状态
        /// 
        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(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(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(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(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);
            }
        }
    }
}