From c020f31a67fc5aa5644511bddff075f7ecc85234 Mon Sep 17 00:00:00 2001
From: qinchulong <qinchulong@hnkhzn.com>
Date: 星期二, 27 五月 2025 15:35:27 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/HuaYiZhongHeng/ZhongHeLiTiKu

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs |  195 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 195 insertions(+), 0 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"
new file mode 100644
index 0000000..9846deb
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs"
@@ -0,0 +1,195 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common;
+using WIDESEA_Core;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_TaskInfoService
+{
+    public partial class TaskService
+    {
+        /// <summary>
+        /// 绔嬪簱鍑哄簱AGV鎼繍
+        /// </summary>
+        /// <param name="outTask"></param>
+        /// <returns></returns>
+        public WebResponseContent ShelfOutboundCarry(Dt_Task outTask)
+        {
+            Dt_CachePoint cachePoint = GetCachePointByStartPoint(outTask.TargetAddress);
+
+            Dt_Task task = new()
+            {
+                CurrentAddress = outTask.TargetAddress,
+                Grade = 0,
+                NextAddress = cachePoint.PointCode,
+                OrderNo = outTask.OrderNo,
+                PalletCode = outTask.PalletCode + "-AGV",
+                Roadway = "",
+                SourceAddress = outTask.TargetAddress,
+                TargetAddress = cachePoint.PointCode,
+                SourceKey = outTask.TaskId,
+                TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                TaskStatus = AGVTaskStatusEnum.AGV_New.ObjToInt(),
+                TaskType = TaskTypeEnum.AGVCarry.ObjToInt(),
+                CreateDate = DateTime.Now,
+                Creater = App.User.UserId > 0 ? App.User.UserName : "System",
+            };
+            cachePoint.PointStatus = LocationStatusEnum.Lock.ObjToInt();
+
+            _basicService.CachePointService.Repository.UpdateData(cachePoint);
+            Repository.AddData(task);
+            return WebResponseContent.Instance.OK();
+        }
+
+        /// <summary>
+        /// 鍙枡
+        /// </summary>
+        /// <param name="endPoint"></param>
+        /// <returns></returns>
+        public WebResponseContent CallMateriel(string endPoint)
+        {
+            try
+            {
+                Dt_CachePoint cachePoint = GetCachePointByEndPoint(endPoint);
+
+                Dt_Task task = new Dt_Task()
+                {
+                    CurrentAddress = cachePoint.PointCode,
+                    Grade = 0,
+                    NextAddress = endPoint,
+                    OrderNo = "",
+                    PalletCode = cachePoint.Remark,
+                    Roadway = "",
+                    SourceAddress = cachePoint.PointCode,
+                    TargetAddress = endPoint,
+                    SourceKey = 0,
+                    TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                    TaskStatus = AGVTaskStatusEnum.AGV_New.ObjToInt(),
+                    TaskType = TaskTypeEnum.AGVCarry.ObjToInt(),
+                };
+                cachePoint.PointStatus = LocationStatusEnum.Lock.ObjToInt();
+
+                _basicService.CachePointService.Repository.UpdateData(cachePoint);
+                Repository.AddData(task);
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+            
+        }
+
+        /// <summary>
+        /// 鐗╂枡鎼繍
+        /// </summary>
+        /// <param name="startPoint"></param>
+        /// <returns></returns>
+        public WebResponseContent MaterielCarry(string startPoint)
+        {
+            try
+            {
+                Dt_CachePoint cachePoint = GetCachePointByStartPoint(startPoint);
+
+                Dt_Task task = new()
+                {
+                    CurrentAddress = startPoint,
+                    Grade = 0,
+                    NextAddress = cachePoint.PointCode,
+                    OrderNo = "",
+                    PalletCode = startPoint + "-AGV",
+                    Roadway = "",
+                    SourceAddress = startPoint,
+                    TargetAddress = cachePoint.PointCode,
+                    SourceKey = 0,
+                    TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                    TaskStatus = AGVTaskStatusEnum.AGV_New.ObjToInt(),
+                    TaskType = TaskTypeEnum.AGVCarry.ObjToInt(),
+                };
+                cachePoint.PointStatus = LocationStatusEnum.Lock.ObjToInt();
+
+                _basicService.CachePointService.Repository.UpdateData(cachePoint);
+                Repository.AddData(task);
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+}
+
+        private Dt_CachePoint GetCachePointByStartPoint(string startPoint)
+        {
+            Dt_AreaRouter areaRouter = _basicService.AreaRouterService.Repository.QueryFirst(x => x.StartArea == startPoint);
+            if (areaRouter == null)
+            {
+                throw new Exception("鏈壘鍒拌矾鐢变俊鎭�!");
+            }
+            Dt_AreaInfo areaInfo = _basicService.AreaInfoService.Repository.QueryFirst(x => x.AreaCode == areaRouter.NextArea);
+            if (areaInfo == null)
+            {
+                throw new Exception("鏈壘鍒颁笅涓�鍖哄煙淇℃伅!");
+            }
+
+            Dt_CachePoint? cachePoint = _basicService.CachePointService.AssignCachePoint(areaInfo.Id);
+            if (cachePoint == null)
+            {
+                throw new Exception("鏈壘鍒扮┖闂茬紦瀛樼偣!");
+            }
+
+            return cachePoint;
+        }
+
+        private Dt_CachePoint GetCachePointByEndPoint(string endPoint)
+        {
+            Dt_AreaRouter areaRouter = _basicService.AreaRouterService.Repository.QueryFirst(x => x.NextArea == endPoint);
+            if (areaRouter == null)
+            {
+                throw new Exception("鏈壘鍒拌矾鐢变俊鎭�!");
+            }
+            Dt_AreaInfo areaInfo = _basicService.AreaInfoService.Repository.QueryFirst(x => x.AreaCode == areaRouter.StartArea);
+            if (areaInfo == null)
+            {
+                throw new Exception("鏈壘鍒拌捣鐐圭紦瀛樺尯鍩熶俊鎭�!");
+            }
+
+            Dt_CachePoint? cachePoint = _basicService.CachePointService.GetIbStockCachePoint(areaInfo.Id);
+            if (cachePoint == null)
+            {
+                throw new Exception("鏈壘鍒版湁璐х紦瀛樼偣!");
+            }
+            return cachePoint;
+        }
+
+        public object AGVTaskFeedBack(AGVTaskFeedBackModel model)
+        {
+            Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == 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)
+            {
+                startCachePoint.PointStatus = LocationStatusEnum.Free.ObjToInt();
+                _basicService.CachePointService.Repository.UpdateData(startCachePoint);
+            }
+
+            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.浜哄伐瀹屾垚);
+
+            return new { code = 200, message = "鎴愬姛" };
+        }
+    }
+}

--
Gitblit v1.9.3