From 7e7f17c08a0f18d83eb379ddff1689597fecefde Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期五, 06 六月 2025 12:16:55 +0800
Subject: [PATCH] 修改AGV站点、PDA功能优化

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs |  135 +++++++++++++++++++++++++++++++++++---------
 1 files changed, 107 insertions(+), 28 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs"
index 9846deb..83bee59 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs"
@@ -1,6 +1,7 @@
 锘縰sing System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Reflection.Metadata;
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEA_Common;
@@ -20,6 +21,7 @@
         /// <returns></returns>
         public WebResponseContent ShelfOutboundCarry(Dt_Task outTask)
         {
+            //鍒ゆ柇鏄惁涓虹數鑺簱锛岃緟鏂欏簱浜哄伐澶勭悊(绔嬪簱鐩爣鍦板潃杞崲鎴怉GV绔欑偣鍦板潃)
             Dt_CachePoint cachePoint = GetCachePointByStartPoint(outTask.TargetAddress);
 
             Dt_Task task = new()
@@ -34,7 +36,7 @@
                 TargetAddress = cachePoint.PointCode,
                 SourceKey = outTask.TaskId,
                 TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
-                TaskStatus = AGVTaskStatusEnum.AGV_New.ObjToInt(),
+                TaskStatus = AGVTaskStatusEnum.Create.ObjToInt(),
                 TaskType = TaskTypeEnum.AGVCarry.ObjToInt(),
                 CreateDate = DateTime.Now,
                 Creater = App.User.UserId > 0 ? App.User.UserName : "System",
@@ -59,30 +61,49 @@
 
                 Dt_Task task = new Dt_Task()
                 {
-                    CurrentAddress = cachePoint.PointCode,
+                    CurrentAddress = "D02",// cachePoint.PointCode,
                     Grade = 0,
-                    NextAddress = endPoint,
+                    NextAddress = "C01",//endPoint,
                     OrderNo = "",
-                    PalletCode = cachePoint.Remark,
+                    PalletCode = "",//cachePoint.Remark,
                     Roadway = "",
-                    SourceAddress = cachePoint.PointCode,
-                    TargetAddress = endPoint,
+                    SourceAddress = "D02",//cachePoint.PointCode,
+                    TargetAddress = "C01",//endPoint,
                     SourceKey = 0,
                     TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
-                    TaskStatus = AGVTaskStatusEnum.AGV_New.ObjToInt(),
+                    TaskStatus = AGVTaskStatusEnum.Create.ObjToInt(),
                     TaskType = TaskTypeEnum.AGVCarry.ObjToInt(),
                 };
                 cachePoint.PointStatus = LocationStatusEnum.Lock.ObjToInt();
 
+                Db.Ado.BeginTran();
+                #region MyRegion
+                AGVSendTaskModel aGVSendTask = new AGVSendTaskModel
+                {
+                    task_id = task.TaskNum.ToString(),// BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)).ToString(),
+                    src_pos = task.CurrentAddress,// "C01",
+                    site_value_type = 1,
+                    dst_pos = task.NextAddress,// "E14"
+                    src_level=3,
+                };
+                #endregion
+                var response = HttpHelper.Post<WebResponseContent>(AGVurl + "sendTask/", aGVSendTask, "鍙枡浠诲姟涓嬪彂");
+                if (response.Code != 200)
+                {
+                    _unitOfWorkManage.RollbackTran();
+                    return WebResponseContent.Instance.Error($"{response.Message}");
+                }
                 _basicService.CachePointService.Repository.UpdateData(cachePoint);
                 Repository.AddData(task);
+                Db.Ado.CommitTran();
                 return WebResponseContent.Instance.OK();
             }
             catch (Exception ex)
             {
+                Db.Ado.RollbackTran();
                 return WebResponseContent.Instance.Error(ex.Message);
             }
-            
+
         }
 
         /// <summary>
@@ -108,7 +129,7 @@
                     TargetAddress = cachePoint.PointCode,
                     SourceKey = 0,
                     TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
-                    TaskStatus = AGVTaskStatusEnum.AGV_New.ObjToInt(),
+                    TaskStatus = AGVTaskStatusEnum.Create.ObjToInt(),
                     TaskType = TaskTypeEnum.AGVCarry.ObjToInt(),
                 };
                 cachePoint.PointStatus = LocationStatusEnum.Lock.ObjToInt();
@@ -121,8 +142,13 @@
             {
                 return WebResponseContent.Instance.Error(ex.Message);
             }
-}
-
+        }
+        /// <summary>
+        /// 鎼繍
+        /// </summary>
+        /// <param name="startPoint"></param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
         private Dt_CachePoint GetCachePointByStartPoint(string startPoint)
         {
             Dt_AreaRouter areaRouter = _basicService.AreaRouterService.Repository.QueryFirst(x => x.StartArea == startPoint);
@@ -144,7 +170,12 @@
 
             return cachePoint;
         }
-
+        /// <summary>
+        /// 鍙枡
+        /// </summary>
+        /// <param name="endPoint"></param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
         private Dt_CachePoint GetCachePointByEndPoint(string endPoint)
         {
             Dt_AreaRouter areaRouter = _basicService.AreaRouterService.Repository.QueryFirst(x => x.NextArea == endPoint);
@@ -165,30 +196,78 @@
             }
             return cachePoint;
         }
-
+        /// <summary>
+        /// 浠诲姟鐘舵�佷笂鎶�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
         public object AGVTaskFeedBack(AGVTaskFeedBackModel model)
         {
-            Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == Convert.ToInt32(model.Task_id));
+            Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == Convert.ToInt32(model.Task_id));
             if (task == null)
             {
                 return new { code = 404, message = "鏈壘鍒拌浠诲姟!" };
             }
-
-            Dt_CachePoint startCachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == task.SourceAddress);
-            if (startCachePoint != null)
+            switch ((AGVTaskStatusEnum)Enum.Parse(typeof(AGVTaskStatusEnum), model.Task_status))
             {
-                startCachePoint.PointStatus = LocationStatusEnum.Free.ObjToInt();
-                _basicService.CachePointService.Repository.UpdateData(startCachePoint);
+                case AGVTaskStatusEnum.Create:
+                    break;
+                case AGVTaskStatusEnum.Queuing:
+                    task.TaskStatus = AGVTaskStatusEnum.Queuing.ObjToInt();
+                    break;
+                case AGVTaskStatusEnum.Running:
+                    task.TaskStatus = AGVTaskStatusEnum.Running.ObjToInt();
+                    break;
+                case AGVTaskStatusEnum.DoneFetch:
+                    {
+                        task.TaskStatus = AGVTaskStatusEnum.DoneFetch.ObjToInt();
+                        Dt_CachePoint startCachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == task.SourceAddress);
+                        if (startCachePoint != null)
+                        {
+                            startCachePoint.PointStatus = LocationStatusEnum.Free.ObjToInt();
+                            if (startCachePoint.AreaId == 3)//鍒ゆ柇鏄惁涓烘ā缁勭┖鏍堟澘鍖哄煙
+                            {
+                                var qty = (startCachePoint.Remark.ObjToInt() - 1);
+                                if (qty > 0) startCachePoint.PointStatus = LocationStatusEnum.InStock.ObjToInt();
+                                startCachePoint.Remark = qty.ToString();
+                            }
+                            _basicService.CachePointService.Repository.UpdateData(startCachePoint);
+                        }
+                    }
+                    break;
+                case AGVTaskStatusEnum.DonePut:
+                    {
+                        task.TaskStatus = AGVTaskStatusEnum.DonePut.ObjToInt();
+                        Dt_CachePoint endCachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == task.TargetAddress);
+                        if (endCachePoint != null)
+                        {
+                            endCachePoint.PointStatus = LocationStatusEnum.InStock.ObjToInt();
+                            _basicService.CachePointService.Repository.UpdateData(endCachePoint);
+                        }
+                    }
+                    break;
+                case AGVTaskStatusEnum.Finish:
+                    {
+                        task.TaskStatus = AGVTaskStatusEnum.Finish.ObjToInt();
+                        BaseDal.DeleteAndMoveIntoHty(task, /*App.User.UserId == 0 ?*/ OperateType.鑷姩瀹屾垚 /*: OperateType.浜哄伐瀹屾垚*/);
+                        return new { code = 200, message = "鎴愬姛" };
+                    }
+                case AGVTaskStatusEnum.Cancel:
+                    {
+                        task.TaskStatus = AGVTaskStatusEnum.Cancel.ObjToInt();
+                        BaseDal.DeleteAndMoveIntoHty(task, OperateType.鑷姩鍒犻櫎);
+                        return new { code = 200, message = "鎴愬姛" };
+                    }
+                case AGVTaskStatusEnum.Terminate:
+                    task.TaskStatus = AGVTaskStatusEnum.Terminate.ObjToInt();
+                    break;
+                case AGVTaskStatusEnum.Error:
+                    task.TaskStatus = AGVTaskStatusEnum.Error.ObjToInt();
+                    break;
+                default:
+                    return new { code = 404, message = "鏈畾涔変换鍔$被鍨�!" };
             }
-
-            Dt_CachePoint endCachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == task.TargetAddress);
-            if (endCachePoint != null)
-            {
-                endCachePoint.PointStatus = LocationStatusEnum.InStock.ObjToInt();
-                _basicService.CachePointService.Repository.UpdateData(endCachePoint);
-            }
-            BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
-
+            BaseDal.UpdateData(task);
             return new { code = 200, message = "鎴愬姛" };
         }
     }

--
Gitblit v1.9.3