海波 张
4 天以前 30b008a25cc30a32f1e2fdee4a34ae71146e990e
wms/TaskHelper.cs
@@ -1,4 +1,5 @@
using HH.WCS.ZhongCeJinTan.api;
using HH.WCS.ZhongCeJinTan.core;
using HH.WCS.ZhongCeJinTan.device;
using HH.WCS.ZhongCeJinTan.dispatch;
using HH.WCS.ZhongCeJinTan.util;
@@ -12,6 +13,7 @@
using System.Threading.Tasks;
using System.Web.Services.Description;
using System.Xml.Linq;
using Top.Api;
using static HH.WCS.ZhongCeJinTan.util.Settings;
using static HH.WCS.ZhongCeJinTan.wms.WcsModel;
@@ -64,7 +66,7 @@
        internal static WmsWork GetWmsWork(string no) {
            var db = new SqlHelper<WmsWork>().GetInstance();
            return db.Queryable<WmsWork>().Where(it => it.S_CODE == no).First();
            return db.Queryable<WmsWork>().Where(it => it.S_CODE == no).OrderByDescending(b=>b.T_CREATE).First();
        }
      
@@ -425,7 +427,7 @@
                    LogHelper.Info($"任务{task1.S_CODE},{task2.S_CODE}创建成功", "任务");
                    var db = new SqlHelper<object>().GetInstance();
                    db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand();
                    LogHelper.Info($"回报{task1.S_OP_CODE}", "回报Mes任务");
                    TaskHelper.opMesTask(task1, 0);
                }
                else
@@ -597,16 +599,48 @@
                var cntrItem = ContainerHelper.GetCntrItem(task.S_CNTR_CODE);
                if (cntrItem == null)
                {
                    LogHelper.Info($"任务{task.S_CODE}没查到容器物料{task.S_CNTR_CODE}", "上下架记录");
                    LogHelper.Info($"任务{task.S_CODE}没查到容器物料{task.S_CNTR_CODE}", "回报Mes任务");
                    return false;
                }
                var work = TaskHelper.GetWmsWork(task.S_OP_CODE);
                if (work == null) {
                    LogHelper.Info($"任务{task.S_CODE}没查到作业{task.S_OP_CODE}", "回报Mes任务");
                    return false;
                }
                var endArea = "";
                if (LocationHelper.GetErroArea(task.S_END_AREA))
                {
                    if (task.S_TYPE.Contains("出库"))
                    {
                        endArea = task.S_END_LOC;
                    }
                    else {
                        endArea = task.S_END_AREA;
                    }
                }
                else {
                    if (task.S_TYPE.Contains("出库"))
                    {
                        endArea = task.S_END_LOC;
                    }
                    else {
                        endArea = work.S_END_AREA;
                    }
                }
                var interact = new
                {
                    taskNo = task.S_OP_CODE,//任务号
                    updater = "WMS",// 操作人 如WMS/MES等
                    endStock = task.S_END_LOC,//终点
                    endStock = endArea,//终点
                    taskStatus = state,//0:初始状态,1:进行中,2:完成,3:任务取消
                    updateTime = DateTime.Now.ToString(),//操作时间
                    TurnCardNum  = cntrItem.TurnCardNum,//周转卡号
@@ -650,6 +684,17 @@
            
            return ac;
        }
        internal static WcsSafety GetWcsSafety(string taskNo, string action)
        {
            var db = new SqlHelper<WcsSafety>().GetInstance();
            var ac = db.Queryable<WcsSafety>().Where(a => a.TaskNo == taskNo && a.Sign.ToString() == action).First();
            return ac;
        }
        /// <summary>
        /// 任务拦截
@@ -798,6 +843,22 @@
                LocationHelper.LockLoc(task.S_END_LOC, "出库锁", 2);
            }
            if (task.S_SCHEDULE_TYPE.Contains("agv"))
            {
                if (LocationHelper.GetErroArea(task.S_END_AREA))
                {
                    db.Deleteable<Container>().Where(it => it.S_CODE == task.S_CNTR_CODE).ExecuteCommand();
                    db.Deleteable<LocCntrRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand();
                    db.Deleteable<CntrItemRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand();
                }
                else
                {
                    TaskHelper.opMesTask(task, 2);
                }
            }
            if (task.S_TYPE.Contains("出库") && task.S_SCHEDULE_TYPE.Contains("agv"))
            {
                var location = db.Queryable<Location>().Where(a => a.S_CODE == task.S_END_LOC).First();
@@ -807,15 +868,6 @@
                db.Deleteable<LocCntrRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand();
                db.Deleteable<CntrItemRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand();
            }
            if (LocationHelper.GetErroArea(task.S_END_AREA)) {
                db.Deleteable<Container>().Where(it => it.S_CODE == task.S_CNTR_CODE).ExecuteCommand();
                db.Deleteable<LocCntrRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand();
                db.Deleteable<CntrItemRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand();
            }
        }
@@ -835,6 +887,14 @@
        internal static bool CreateTask(WMSTask wmsTask) {
            var db = new SqlHelper<WMSTask>().GetInstance();
             var task = db.Queryable<WMSTask>().Where(a => a.S_CODE == wmsTask.S_CODE).First();
            if (task!=null)
            {
                return false;
            }
            return db.Insertable(wmsTask).ExecuteCommand() > 0;
        }
@@ -884,6 +944,8 @@
            return db.Queryable<WorkFlow>().Where(a => a.FLOWCODE == flowCode && a.TOOLSTYPE == type).First();
        }
        //根据流程编号和起点库区查找作业流程
        public static WorkFlow selectWorkFlowByStratArea(string flowCode, string startArea)
        {
@@ -891,6 +953,14 @@
            return db.Queryable<WorkFlow>().Where(a => a.FLOWCODE == flowCode && a.STARTAREA==startArea).First();
        }
        //根据流程编号和终点库区查找作业流程
        public static WorkFlow selectWorkFlowByEndArea(string flowCode, string endArea)
        {
            var db = new SqlHelper<WorkFlow>().GetInstance();
            return db.Queryable<WorkFlow>().Where(a => a.FLOWCODE == flowCode && a.ENDAREA == endArea).First();
        }
        /// <summary>
        /// 根据任务状态获取agv任务
        /// </summary>