From 0ea4a390d09679425cf3ad217a38a9e717641c95 Mon Sep 17 00:00:00 2001
From: wankeda <Administrator@DESKTOP-HAU3ST3>
Date: 星期一, 14 四月 2025 16:23:12 +0800
Subject: [PATCH] 增加串行库位任务下发机制防呆

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/JobsPart/SendAgvTask.cs |  230 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 223 insertions(+), 7 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/JobsPart/SendAgvTask.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/JobsPart/SendAgvTask.cs"
index 62a8970..507d21e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/JobsPart/SendAgvTask.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/JobsPart/SendAgvTask.cs"
@@ -30,10 +30,226 @@
         {
             try
             {
+
                 List<Dt_Task> agvtasks = _taskService.GetTasks();
                 foreach (Dt_Task agvtask in agvtasks)
                 {
-                    if (agvtask != null)
+                    bool text = true;
+                    bool text1 = true;
+                    bool text2 = true;
+                    bool text3 = true;
+                    Thread.Sleep(500);
+                    Dt_CachePoint CachePointSO = _cachePointRepository.QueryFirst(x => x.PointCode == agvtask.SourceAddress);//鏌ヨ璧风偣
+                    Dt_CachePoint CachePoint = _cachePointRepository.QueryFirst(x => x.PointCode == agvtask.TargetAddress && x.PointCode.Contains("鎴愬搧搴�"));//|| x.PointCode.Contains("鍘熸潗鏂欏簱")) && x.Remark != null 
+
+                    Dt_CachePoint dt_CachePoint = _cachePointRepository.QueryFirst(x => x.PointCode == agvtask.TargetAddress && x.Remark != null);//鏌ヨ缁堢偣
+                    Dt_CachePoint CachePointYCl = _cachePointRepository.QueryFirst(x => x.PointCode == agvtask.SourceAddress && x.Remark != null && x.PointCode.Contains("鍘熸潗鏂欏簱"));
+                    if (CachePoint != null && CachePointSO != null)
+                    {
+                        var pointnames = _cachePointRepository.QueryData(x => x.Remark == CachePoint.Remark && x.Remark != "0").ToList();
+                        foreach (var item in pointnames)
+                        {
+                            var a = CachePoint.Depth.ObjToInt();
+                            var b = item.Depth.ObjToInt();
+                            if (a > b)
+                            {
+                                Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.TargetAddress == item.PointCode);
+                                if (dt_Task != null)
+                                {
+                                    text = false;
+                                    continue;
+                                }
+                            }
+                        }
+                        if (CachePointSO.Remark != null)
+                        {
+                            var pointname = _cachePointRepository.QueryData(x => x.Remark == CachePointSO.Remark && x.Remark != "0").ToList();
+                            foreach (var item1 in pointname)
+                            {
+                                var c = CachePointSO.Depth.ObjToInt();
+                                var d = item1.Depth.ObjToInt();
+                                if (c > d)
+                                {
+                                    Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.SourceAddress == item1.PointCode);
+                                    if (dt_Task != null)
+                                    {
+                                        text1 = false;
+                                        continue;
+                                    }
+                                }
+                            }
+                        }
+                        if (text == true && text1 == true)
+                        {
+                            AGVTaskPend pend = new AGVTaskPend();
+                            //pend.requestType = pend.requestType;
+                            //pend.accessId = pend.accessId;
+                            //pend.requestId = pend.requestId;
+                            Pend data = new Pend();
+                            TaskPend taskPend = new TaskPend();
+                            {
+                                taskPend.taskNo = agvtask.TaskNum.ToString();
+                                taskPend.taskType = "MV";
+                                DateTime date = DateTime.Now;
+                                taskPend.taskDate = date.ToString("yyyy-MM-dd HH:mm:ss");
+                                taskPend.taskState = "00";
+                                taskPend.priority = "1";
+                                taskPend.wareCode = "W01";
+                                taskPend.docNo = "";
+                                taskPend.sku = "";
+                                taskPend.uom = "";
+                                taskPend.qty = 0;
+                                taskPend.trace = "";
+                                taskPend.fmLoc = agvtask.SourceAddress.ToString();
+                                taskPend.toLoc = agvtask.TargetAddress.ToString();
+                                taskPend.udf01 = "";
+                                taskPend.udf02 = "";
+                            }
+                            data.detail.Add(taskPend);
+                            pend.data = data;
+
+                            var time = new DateTimeOffset(DateTime.Now);
+                            long timestampStr = time.ToUnixTimeMilliseconds();//鏃堕棿鎴�
+                            string appkeystr = "appsalt=" + AGVopenApi.appsalt + "&appkey=" + AGVopenApi.appkey;
+                            string appkeyEcrypt = GetMD5Hex(appkeystr);
+                            string origin = appkeyEcrypt + "&appsecret=" + AGVopenApi.appsecret + "&timestamp=" + timestampStr + "&uniquestr=" + timestampStr;
+                            string signstr = GetMD5Hex(origin);
+                            Dictionary<string, string> headers = new Dictionary<string, string>()
+                                {
+                                    {"appkey",AGVopenApi.appkey },
+                                    {"timestamp",timestampStr.ToString() },
+                                    {"sign",signstr }
+                                };
+                            string posy = JsonConvert.SerializeObject(pend);
+                            var respone = HttpHelper.Post(url, posy, headers: headers);
+                            var res = JsonConvert.DeserializeObject<WebResponseContent>(respone);
+                            if (res.Code == 200)
+                            {
+                                agvtask.Dispatchertime = DateTime.Now;
+                                agvtask.TaskStatus = AGVTaskStatusEnum.AGV_SendOut.ObjToInt();
+                                _taskService.UpdateData(agvtask);
+                                Thread.Sleep(1000);
+                                WriteLog.GetLog("鏃犱汉鍙夎溅浠诲姟涓嬪彂").Write("浠诲姟鍙凤細" + agvtask.TaskNum, "鏃犱汉鍙夎溅浠诲姟涓嬪彂");
+                            }
+                            else
+                            {
+                                //_unitOfWorkManage.RollbackTran();
+                                content = WebResponseContent.Instance.Error($"{res.Message}");
+                                WriteLog.GetLog("鏃犱汉鍙夎溅浠诲姟涓嬪彂澶辫触").Write("浠诲姟鍙凤細" + agvtask.TaskNum + '\n' + "澶辫触淇℃伅" + res.Message, "鏃犱汉鍙夎溅浠诲姟涓嬪彂澶辫触");
+                            }
+                        }
+                    }
+                    else if (CachePointYCl != null && dt_CachePoint != null)
+                    {
+                        var pointnames = _cachePointRepository.QueryData(x => x.Remark == CachePointYCl.Remark).ToList();
+                        foreach (var item in pointnames)
+                        {
+                            var a = CachePointYCl.Depth.ObjToInt();
+                            var b = item.Depth.ObjToInt();
+                            if (a > b)
+                            {
+                                Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.SourceAddress == item.PointCode);
+                                if (dt_Task != null)
+                                {
+                                    text2 = false;
+                                    continue;
+                                }
+                            }
+                        }
+                        var pointname = _cachePointRepository.QueryData(x => x.Remark == dt_CachePoint.Remark).ToList();
+                        foreach (var item1 in pointname)
+                        {
+                            var c = dt_CachePoint.Depth.ObjToInt();
+                            var d = item1.Depth.ObjToInt();
+                            if (c > d)
+                            {
+                                Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.TargetAddress == item1.PointCode);
+                                if (dt_Task != null)
+                                {
+                                    text3 = false;
+                                    continue;
+                                }
+                            }
+                        }
+                        if (text2 == true && text3 == true)
+                        {
+                            AGVTaskPend pend = new AGVTaskPend();
+                            //pend.requestType = pend.requestType;
+                            //pend.accessId = pend.accessId;
+                            //pend.requestId = pend.requestId;
+                            Pend data = new Pend();
+                            TaskPend taskPend = new TaskPend();
+                            {
+                                taskPend.taskNo = agvtask.TaskNum.ToString();
+                                taskPend.taskType = "MV";
+                                DateTime date = DateTime.Now;
+                                taskPend.taskDate = date.ToString("yyyy-MM-dd HH:mm:ss");
+                                taskPend.taskState = "00";
+                                taskPend.priority = "1";
+                                taskPend.wareCode = "W01";
+                                taskPend.docNo = "";
+                                taskPend.sku = "";
+                                taskPend.uom = "";
+                                taskPend.qty = 0;
+                                taskPend.trace = "";
+                                taskPend.fmLoc = agvtask.SourceAddress.ToString();
+                                taskPend.toLoc = agvtask.TargetAddress.ToString();
+                                taskPend.udf01 = "";
+                                taskPend.udf02 = "";
+                            }
+                            data.detail.Add(taskPend);
+                            pend.data = data;
+
+                            var time = new DateTimeOffset(DateTime.Now);
+                            long timestampStr = time.ToUnixTimeMilliseconds();//鏃堕棿鎴�
+                            string appkeystr = "appsalt=" + AGVopenApi.appsalt + "&appkey=" + AGVopenApi.appkey;
+                            string appkeyEcrypt = GetMD5Hex(appkeystr);
+                            string origin = appkeyEcrypt + "&appsecret=" + AGVopenApi.appsecret + "&timestamp=" + timestampStr + "&uniquestr=" + timestampStr;
+                            string signstr = GetMD5Hex(origin);
+                            Dictionary<string, string> headers = new Dictionary<string, string>()
+                                {
+                                    {"appkey",AGVopenApi.appkey },
+                                    {"timestamp",timestampStr.ToString() },
+                                    {"sign",signstr }
+                                };
+                            string posy = JsonConvert.SerializeObject(pend);
+                            var respone = HttpHelper.Post(url, posy, headers: headers);
+                            var res = JsonConvert.DeserializeObject<WebResponseContent>(respone);
+                            if (res.Code == 200)
+                            {
+                                agvtask.Dispatchertime = DateTime.Now;
+                                agvtask.TaskStatus = AGVTaskStatusEnum.AGV_SendOut.ObjToInt();
+                                _taskService.UpdateData(agvtask);
+                                Thread.Sleep(1000);
+                                WriteLog.GetLog("鏃犱汉鍙夎溅浠诲姟涓嬪彂").Write("浠诲姟鍙凤細" + agvtask.TaskNum, "鏃犱汉鍙夎溅浠诲姟涓嬪彂");
+                            }
+                            else
+                            {
+                                //_unitOfWorkManage.RollbackTran();
+                                content = WebResponseContent.Instance.Error($"{res.Message}");
+                                WriteLog.GetLog("鏃犱汉鍙夎溅浠诲姟涓嬪彂澶辫触").Write("浠诲姟鍙凤細" + agvtask.TaskNum + '\n' + "澶辫触淇℃伅" + res.Message, "鏃犱汉鍙夎溅浠诲姟涓嬪彂澶辫触");
+                            }
+                        }
+                    }
+                    //if (dt_CachePoint != null)
+                    //{
+                    //    var pointname = _cachePointRepository.QueryData(x => x.Remark == dt_CachePoint.Remark).ToList();
+                    //    foreach (var item in pointname)
+                    //    {
+                    //        var a = dt_CachePoint.Depth.ObjToInt();
+                    //        var b = item.Depth.ObjToInt();
+                    //        if (b > a)
+                    //        {
+                    //            //Dt_CachePoint c = _cachePointRepository.QueryFirst(x => x.PointCode == item.PointCode && x.PointStatus == 0);
+                    //            Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.TargetAddress == item.PointCode);
+                    //            if (dt_Task != null)
+                    //            {
+                    //                continue;
+                    //            }
+                    //        }
+                    //    }
+                    //}
+                    else
                     {
                         AGVTaskPend pend = new AGVTaskPend();
                         //pend.requestType = pend.requestType;
@@ -69,11 +285,11 @@
                         string origin = appkeyEcrypt + "&appsecret=" + AGVopenApi.appsecret + "&timestamp=" + timestampStr + "&uniquestr=" + timestampStr;
                         string signstr = GetMD5Hex(origin);
                         Dictionary<string, string> headers = new Dictionary<string, string>()
-                    {
-                        {"appkey",AGVopenApi.appkey },
-                        {"timestamp",timestampStr.ToString() },
-                        {"sign",signstr }
-                    };
+                                {
+                                    {"appkey",AGVopenApi.appkey },
+                                    {"timestamp",timestampStr.ToString() },
+                                    {"sign",signstr }
+                                };
                         string posy = JsonConvert.SerializeObject(pend);
                         var respone = HttpHelper.Post(url, posy, headers: headers);
                         var res = JsonConvert.DeserializeObject<WebResponseContent>(respone);
@@ -93,7 +309,7 @@
                         }
                     }
                 }
-       
+
             }
             catch (Exception ex)
             {

--
Gitblit v1.9.3