杨张扬
9 天以前 3909fbf77ad4ebc0dde600ff82710d959f74b5f4
wms/WCSHelper.cs
@@ -1,4 +1,6 @@
using HH.WCS.Mobox3.DoubleCoin.util;
using HH.WCS.Mobox3.DoubleCoin.models;
using HH.WCS.Mobox3.DoubleCoin.process;
using HH.WCS.Mobox3.DoubleCoin.util;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
@@ -13,12 +15,12 @@
            var date = DateTime.Now.ToString("yyMMdd");
            return $"TN{date}{id.ToString().PadLeft(4, '0')}";
        }
        internal static bool UpdateStatus(TN_Task task, string status)
        internal static bool UpdateStatus(TN_Task task, string status)
        {
            var res = false;
            var db = new SqlHelper<TN_Task>().GetInstance();
            task.S_B_STATE = status;
            res = db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE }).ExecuteCommand()>0;
            res = db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE }).ExecuteCommand() > 0;
            return res;
        }
        internal static bool UpdateStatus(TN_Task task) {
@@ -36,7 +38,7 @@
            db.Updateable(task).UpdateColumns(it => new { it.S_EQ_TASK_CODE, it.T_MODIFY }).ExecuteCommand();
            return res;
        }
        internal static TN_Task GetTask(string no) {
            var db = new SqlHelper<TN_Task>().GetInstance();
            var task = db.Queryable<TN_Task>().Where(a => a.S_CODE == no).First();
@@ -56,7 +58,7 @@
        /// <param name="cntrInfo">容器编码</param>
        /// <param name="spec">物料规格</param>
        /// <returns></returns>
        internal static bool CreateTask(string from, string to, string taskType, int pri, string cntrInfo,string spec = "")
        internal static bool CreateTask(string from, string to, string taskType, int pri, string cntrInfo, string spec = "")
        {
            var fromLoc = LocationHelper.GetLocation(from);
            var endLoc = LocationHelper.GetLocation(to);
@@ -95,7 +97,7 @@
        }
        internal static bool CreateTask(string from, string to, string taskType, int pri, string cntrInfo, out string taskNo, string spec = "" )
        internal static bool CreateTask(string from, string to, string taskType, int pri, string cntrInfo, out string taskNo, string spec = "")
        {
            var fromLoc = LocationHelper.GetLocation(from);
            var endLoc = LocationHelper.GetLocation(to);
@@ -180,20 +182,16 @@
            return db.Queryable<TN_Task_Action>().Count(a => a.S_TASK_CODE == no && a.N_ACTION_CODE == code) > 0;
        }
        internal static void Begin(TN_Task task, string forklift_no)
        internal static void Begin(TN_Task task, string forklift_no)
        {
            var db = new SqlHelper<TN_Task>().GetInstance();
            if (task != null)
            if (task != null)
            {
                if (task.N_B_STATE == 1)
                {
                    task.N_B_STATE = 2;
                    task.S_B_STATE = TN_Task.GetStateStr(task.N_B_STATE);
                    task.T_START_TIME = System.DateTime.Now;
                    task.S_EQ_NO = forklift_no;
                    db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_START_TIME, it.S_EQ_NO }).ExecuteCommand();
                }
                task.N_B_STATE = 2;
                task.S_B_STATE = TN_Task.GetStateStr(task.N_B_STATE);
                task.T_START_TIME = System.DateTime.Now;
                task.S_EQ_NO = forklift_no;
                db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_START_TIME, it.S_EQ_NO }).ExecuteCommand();
            }
        }
        internal static void End(TN_Task task) {
@@ -233,6 +231,68 @@
            var db = new SqlHelper<object>().GetInstance();
            return db.Queryable<TN_Task>().Where(a => a.N_B_STATE == 0 && (a.S_B_STATE == "等待" || a.S_B_STATE == "待推送")).ToList();
        }
        public static void CancleTaskInfo(TN_Task tN_Task)
        {
            var HJ = Settings.Areas[1];
            if (tN_Task.S_END_AREA == HJ || tN_Task.S_TYPE.Contains("满托下线入库"))//终点是满托缓存库区
            {
                LogHelper.Info($"取消任务: {tN_Task.S_CODE} 终点是满托缓存库区: {tN_Task.S_END_AREA}");
                TaskProcess.CacheBitCancelUpdate(tN_Task);//异常处理
            }
            else if (tN_Task.S_START_AREA == HJ || tN_Task.S_TYPE.Contains("满托出库上线"))//起点是满托缓存库区
            {
                LogHelper.Info($"取消任务: {tN_Task.S_CODE} 起点是满托缓存库区: {tN_Task.S_START_AREA}");
                if (!WCSHelper.CheckActionRecordExist(tN_Task.S_CODE, 4))//未取货完成
                {
                    WCSHelper.Fail(tN_Task);//任务状态改成错误
                    LogHelper.Info($"取消任务: {tN_Task.S_CODE} 未取货完成,任务状态改成错误");
                }
                else
                {
                    WCSHelper.End(tN_Task);//任务状态改成结束
                    LocationHelper.BindingLoc(tN_Task.S_END_LOC, tN_Task.S_CNTR_CODE.Split(',').ToList());// 绑定终点容器货位
                    LogHelper.Info($"取消任务: {tN_Task.S_CODE} 取货完成,任务状态改成结束,绑定终点容器货位");
                }
                LocationHelper.UnLockLoc(tN_Task.S_END_LOC);
                LocationHelper.UnLockLoc(tN_Task.S_START_LOC);//解锁起点终点
            }
            else
            {
                LogHelper.Info($"取消任务: {tN_Task.S_CODE} 起点终点都不是满托缓存库区: {tN_Task.S_START_AREA}  {tN_Task.S_END_AREA}");
                if (!WCSHelper.CheckActionRecordExist(tN_Task.S_CODE, 4))//未取货完成
                {
                    WCSHelper.Fail(tN_Task);//任务状态改成错误
                    var db = new SqlHelper<object>().GetInstance();
                    var cginfo = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == tN_Task.S_CNTR_CODE);
                    if (cginfo != null)
                    {
                        db.Deleteable<TN_InventoryM>().Where(it => it.S_ID == cginfo.S_ID || it.RFID == tN_Task.S_CNTR_CODE).ExecuteCommand();
                    }
                    else
                    {
                        db.Deleteable<TN_InventoryM>().Where(it => it.RFID == tN_Task.S_CNTR_CODE).ExecuteCommand();
                    }
                    LogHelper.Info($"取消任务: {tN_Task.S_CODE} 未取货完成,任务状态改成错误,删除改容器号的所有库存{tN_Task.S_CNTR_CODE}");
                }
                else
                {
                    WCSHelper.End(tN_Task);//任务状态改成结束
                    LocationHelper.BindingLoc(tN_Task.S_END_LOC, tN_Task.S_CNTR_CODE.Split(',').ToList());
                    LogHelper.Info($"取消任务: {tN_Task.S_CODE} 未取货完成,任务状态改成结束,绑定终点容器货位");
                }
                LocationHelper.UnLockLoc(tN_Task.S_END_LOC);
                LocationHelper.UnLockLoc(tN_Task.S_START_LOC);//解锁起点终点
            }
        }
    }
    public class CreateTasks