dengjunjie
2025-06-09 217a65fe8eb2612b7d61e9ce5f450e76bfc318f6
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs
@@ -49,6 +49,61 @@
        }
        /// <summary>
        /// è´§ä½ç»‘定
        /// </summary>
        /// <param name="qty"></param>
        /// <param name="Point"></param>
        /// <returns></returns>
        public WebResponseContent Bind(string qty, string point)
        {
            try
            {
                if (Repository.QueryFirst(x => x.SourceAddress == point &&
                x.TaskStatus < AGVTaskStatusEnum.DoneFetch.ObjToInt() ||
                x.TargetAddress == point) != null)
                    throw new Exception($"站点【{point}】存在任务!");
                Dt_CachePoint? cachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == point);
                if (cachePoint == null) throw new Exception("未找到缓存点!");
                if (cachePoint.AreaId != 4) throw new Exception("当前缓存点区域无绑定权限!");
                cachePoint.PointStatus = LocationStatusEnum.InStock.ObjToInt();
                cachePoint.Remark = qty;
                cachePoint.Modifier = App.User.UserName;
                _basicService.CachePointService.Repository.UpdateData(cachePoint);
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// é‡Šæ”¾ç¼“存点
        /// </summary>
        /// <param name="point"></param>
        /// <returns></returns>
        public WebResponseContent AcrossFloorCallMat(string point)
        {
            try
            {
                if (Repository.QueryFirst(x => x.SourceAddress == point &&
                x.TaskStatus < AGVTaskStatusEnum.DoneFetch.ObjToInt() ||
                x.TargetAddress == point) != null)
                    throw new Exception($"站点【{point}】存在任务!");
                Dt_CachePoint? cachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == point);
                if (cachePoint == null) throw new Exception("未找到缓存点!");
                if (cachePoint.AreaId != 2 && cachePoint.AreaId != 5 && cachePoint.AreaId != 8)
                    throw new Exception("当前缓存点区域无释放权限!");
                cachePoint.PointStatus = LocationStatusEnum.Free.ObjToInt();
                _basicService.CachePointService.Repository.UpdateData(cachePoint);
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// å«æ–™
        /// </summary>
        /// <param name="endPoint"></param>
@@ -57,6 +112,11 @@
        {
            try
            {
                if (Repository.QueryFirst(x => x.SourceAddress == endPoint &&
                x.TaskStatus < AGVTaskStatusEnum.DoneFetch.ObjToInt() ||
                x.TargetAddress == endPoint) != null)
                    throw new Exception($"站点【{endPoint}】存在任务!");
                Dt_CachePoint cachePoint = GetCachePointByEndPoint(endPoint);
                Dt_Task task = new Dt_Task()
@@ -78,7 +138,7 @@
                Db.Ado.BeginTran();
                var response = SendAGVTask(task, cachePoint);
                if (response.Status)
                if (!response.Status)
                {
                    _unitOfWorkManage.RollbackTran();
                    return WebResponseContent.Instance.Error($"{response.Message}");
@@ -105,6 +165,11 @@
        {
            try
            {
                if (Repository.QueryFirst(x => x.SourceAddress == startPoint &&
                x.TaskStatus < AGVTaskStatusEnum.DoneFetch.ObjToInt() ||
                x.TargetAddress == startPoint) != null)
                    throw new Exception($"站点【{startPoint}】存在任务!");
                Dt_CachePoint cachePoint = GetCachePointByStartPoint(startPoint);
                Dt_Task task = new()
@@ -124,12 +189,21 @@
                };
                cachePoint.PointStatus = LocationStatusEnum.Lock.ObjToInt();
                Db.Ado.BeginTran();
                var response = SendAGVTask(task, cachePoint);
                if (!response.Status)
                {
                    _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);
            }
        }
@@ -219,6 +293,8 @@
            {
                return new { code = 404, message = "未找到该任务!" };
            }
            if (task.TaskStatus == ((AGVTaskStatusEnum)Enum.Parse(typeof(AGVTaskStatusEnum), model.Task_status)).ObjToInt())
                return new { code = 200, message = "成功" };
            switch ((AGVTaskStatusEnum)Enum.Parse(typeof(AGVTaskStatusEnum), model.Task_status))
            {
                case AGVTaskStatusEnum.Create:
@@ -265,6 +341,12 @@
                    }
                case AGVTaskStatusEnum.Cancel:
                    {
                        if (task.TaskStatus < AGVTaskStatusEnum.DoneFetch.ObjToInt())
                        {
                            Dt_CachePoint startCachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == task.SourceAddress);
                            startCachePoint.PointStatus = LocationStatusEnum.InStock.ObjToInt();
                            _basicService.CachePointService.Repository.UpdateData(startCachePoint);
                        }
                        task.TaskStatus = AGVTaskStatusEnum.Cancel.ObjToInt();
                        BaseDal.DeleteAndMoveIntoHty(task, OperateType.自动删除);
                        return new { code = 200, message = "成功" };