qx
czw
2025-06-18 9862f9e1237c3d360cb4fb5547d8b11e33578d39
HH.WCS.QingXiNongfu/wms/TaskHelper.cs
@@ -1,11 +1,14 @@
using HH.WCS.QingXigongchang.process;
using HH.WCS.QingXigongchang.dispatch;
using HH.WCS.QingXigongchang.process;
using HH.WCS.QingXigongchang.util;
using Newtonsoft.Json;
using NLog.Fluent;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace HH.WCS.QingXigongchang.wms
{
@@ -86,6 +89,10 @@
        {
            var fromLoc = LocationHelper.GetLoc(from);
            var endLoc = LocationHelper.GetLoc(to);
            //NDCHelper.ChangeParam(taskNo, agvsite, 2);
            //NDCHelper.ChangeParam(taskNo, 2, 6);
            if (fromLoc.S_AREA_CODE == "YWLRGDD")
            {
                //查询任务表  要求是只能生成两个任务 起点库区为YWLRGDD  hh_plg  2025年6月9日 
@@ -123,6 +130,12 @@
                        return false;
                    }
                }
                if (!taskType.Contains("成品满框-入库"))
                    if (endLoc.N_CURRENT_NUM >= endLayer || fromLoc.N_CURRENT_NUM < startLayer)
                    {
                        LogHelper.Info($"CreateTransport-  CreateTask Error" + $"起点数量{fromLoc.N_CURRENT_NUM}<{startLayer}或者{endLoc.N_CURRENT_NUM}>={endLayer} ");
                        return false;
                    }
            }
            WMSTask wmsTask = new WMSTask()
            {
@@ -146,6 +159,8 @@
            };
            LogHelper.Info($"CreateTransport-  CreateTask" + $"{JsonConvert.SerializeObject(wmsTask)}");
            LogHelper.Info($"CreateTransport-  CreateTask {wmsTask.S_TASK_NO} 起点:{JsonConvert.SerializeObject(from)}");
            LogHelper.Info($"CreateTransport-  CreateTask {wmsTask.S_TASK_NO} 终点:{JsonConvert.SerializeObject(to)}");
            return CreateTask(wmsTask, lockLoc);
        }
        internal static string GetDeptName(string taskType)
@@ -227,37 +242,48 @@
        internal static void End(WMSTask task)
        {
            var db = new SqlHelper<WMSTask>().GetInstance();
            if (task != null)
            {
                task.S_B_STATE = "完成";
                task.T_END_TIME = DateTime.Now;
                db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE, it.T_END_TIME }).ExecuteCommand();
            }
            //plg 2025年6月13日 10:42:24
            if (task.S_END_LAREA == "YWLWJJB" && task.S_START_LAREA != "YWLRGDD")
            {
                var model = db.Queryable<Location>().Where(a => a.S_LOC_CODE == task.S_TWO_END_LOC).First();
                //先解锁终点 在锁定
                //db.Ado.BeginTran();
                //try
                //{
                //    model.S_LOCK_STATE = "无";
                //    var res = db.Updateable(model).UpdateColumns(it => new { it.S_LOCK_STATE }).ExecuteCommand() > 0;
                //    LogHelper.Info(task.S_TWO_END_LOC + "LockLoc:锁结果" + res);
                //    db.Ado.CommitTran();
                //}
                //catch (Exception ex)
                //{
                //    db.Ado.RollbackTran();
                //    LogHelper.Info("CreateTask 失败 " + ex.Message);
                //}
                if (model != null)
                {
                    //先解锁终点 在锁定
                    db.Ado.BeginTran();
                    try
                    {
                        model.S_LOCK_STATE = "无";
                        var res = db.Updateable(model).UpdateColumns(it => new { it.S_LOCK_STATE }).ExecuteCommand() > 0;
                        LogHelper.Info(task.S_TWO_END_LOC + "LockLoc:锁结果" + res);
                        db.Ado.CommitTran();
                    }
                    catch (Exception ex)
                    {
                        db.Ado.RollbackTran();
                        LogHelper.Info("CreateTask 失败 " + ex.Message);
                    }
                    LogHelper.Info(task.S_TWO_END_LOC + "二段任务 开始。 ");
                    var b = TaskProcess.CreateTransport(task.S_SRC_NO, task.S_END_LOC, task.S_TWO_END_LOC, "原物料搬运-纸箱", task.S_CNTRS.Split(',').ToList(), task.N_START_LAYER, 1, task.N_CNTR_COUNT, task.N_PRIORITY);
                    //if (b)
                    //{
                    //    if (task != null)
                    //    {
                    //        task.S_B_STATE = "完成";
                    //        task.T_END_TIME = DateTime.Now;
                    //        db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE, it.T_END_TIME }).ExecuteCommand();
                    //    }
                    //}
                }
            }
            if (task != null)
            {
                task.S_B_STATE = "完成";
                task.T_END_TIME = DateTime.Now;
                db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE, it.T_END_TIME }).ExecuteCommand();
            }
        }
        internal static void Fail(WMSTask task)
        {