lss
2025-06-26 011d17bc8df981ba31e895873ab0e4a17da8288f
HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/WCSHelper.cs
@@ -1,6 +1,7 @@
using HH.WCS.JiaTong.util;
using System;
using System.Collections.Generic;
using System.IdentityModel.Protocols.WSTrust;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -19,7 +20,9 @@
        {
            var res = false;
            var db = new SqlHelper<WCSTask>().GetInstance();
            task.S_B_STATE = status;
            db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE }).ExecuteCommand();
            return res;
        }
@@ -56,11 +59,16 @@
            var task = db.Queryable<WCSTask>().Where(a => a.S_CODE.Trim() == no).First();
            return task;
        }
        /// <summary>
        /// 根据起点货位未完成的任务
        /// </summary>
        /// <param name="loc"></param>
        /// <returns></returns>
        internal static WCSTask GetTaskByStartloc(string loc)
        {
            var db = new SqlHelper<WCSTask>().GetInstance();
            var task = db.Queryable<WCSTask>().Where(a => a.S_START_LOC.Trim() == loc && a.S_B_STATE.Trim() != "完成").First();
            string[] statue = new string[] { "完成", "取消", "错误" };
            var task = db.Queryable<WCSTask>().Where(a => a.S_START_LOC.Trim() == loc && !statue.Contains(a.S_B_STATE.Trim())).First();
            return task;
        }
        /// <summary>
@@ -71,7 +79,7 @@
        internal static List<WCSTask> GetTaskBycntrcode(string no)
        {
            var db = new SqlHelper<WCSTask>().GetInstance();
            var task = db.Queryable<WCSTask>().Where(a => a.S_CNTR_CODE.Trim() == no && a.S_B_STATE.Trim() == "完成" ).ToList();
            var task = db.Queryable<WCSTask>().Where(a => a.S_CNTR_CODE.Trim() == no && a.S_B_STATE.Trim() == "完成").ToList();
            return task;
        }
        internal static WCSTask GetTaskBySrcNo(string no)
@@ -166,6 +174,7 @@
        internal static bool AddActionRecord(string no, int state, string forkliftNo, string extData)
        {
            var db = new SqlHelper<TaskAction>().GetInstance();
            var action = new TaskAction()
            {
                N_ACTION_CODE = state,
@@ -181,7 +190,7 @@
            var db = new SqlHelper<TaskAction>().GetInstance();
            return db.Queryable<TaskAction>().Count(a => a.S_TASK_CODE == no && a.N_ACTION_CODE == code) > 0;
        }
        internal static void Begin(WCSTask task)
        internal static void Begin(WCSTask task, string agvno)
        {
            var db = new SqlHelper<WCSTask>().GetInstance();
            if (task != null)
@@ -191,8 +200,24 @@
                    task.N_B_STATE = 2;
                    task.S_B_STATE = WCSTask.GetStateStr(task.N_B_STATE);
                    task.T_START_TIME = DateTime.Now;
                    db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_START_TIME }).ExecuteCommand();
                    task.S_WORKSHOP_NO = agvno;
                    db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.S_WORKSHOP_NO }).ExecuteCommand();
                }
            }
        }
        internal static void UpdateAgvNo(WCSTask task, string agvno)
        {
            var db = new SqlHelper<WCSTask>().GetInstance();
            if (task != null)
            {
                task.T_START_TIME = DateTime.Now;
                task.S_WORKSHOP_NO = agvno;
                db.Updateable(task).UpdateColumns(it => new { it.T_START_TIME, it.S_WORKSHOP_NO }).ExecuteCommand();
            }
        }
@@ -220,13 +245,57 @@
        }
        internal static bool CreateTask(WCSTask TN_Task)
        {
            var db = new SqlHelper<WCSTask>().GetInstance();
            try
            {
                var db = new SqlHelper<WCSTask>().GetInstance();
                return db.Insertable(TN_Task).ExecuteCommand() > 0;
                bool res = false;
                LogHelper.Info($"任务:{TN_Task.S_CODE}开始创建");
                db.BeginTran();
                res = db.Insertable(TN_Task).ExecuteCommand() > 0;
                if (res)
                {
                    var Startmodel = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == TN_Task.S_START_LOC).First();
                    var Endmodel = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == TN_Task.S_END_LOC).First();
                    if (Startmodel != null && Startmodel.S_LOCK_STATE.Trim() == "无")
                    {
                        Startmodel.N_LOCK_STATE = 2;
                        Startmodel.S_LOCK_STATE = Location.GetLockStateStr(2);
                        res = db.Updateable(Startmodel).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand() > 0;
                    }
                    else
                    {
                        LogHelper.Info($"任务:{TN_Task.S_CODE}生成失败,起点货位不可用");
                        db.RollbackTran();
                        return false;
                    }
                    if (Endmodel != null && Endmodel.S_LOCK_STATE.Trim() == "无")
                    {
                        Endmodel.N_LOCK_STATE = 1;
                        Endmodel.S_LOCK_STATE = Location.GetLockStateStr(1);
                        res = db.Updateable(Endmodel).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand() > 0;
                    }
                    if (res)
                    {
                        LogHelper.Info($"锁定货位成功");
                        db.CommitTran();
                    }
                    else
                    {
                        LogHelper.Info($"锁定货位失败");
                        db.RollbackTran();
                    }
                }
                else
                {
                    LogHelper.Info($"任务:{TN_Task.S_CODE}生成失败");
                    db.RollbackTran();
                }
                return res;
            }
            catch (Exception ex)
            {
                db.RollbackTran();
                Console.WriteLine(ex.Message);
                throw;
            }