using 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 { /// /// 立库出库AGV搬运 /// /// /// 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 = outTask.TaskNum, 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(); } /// /// 叫料 /// /// /// public WebResponseContent CallMateriel(string endPoint) { 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(); } /// /// 物料搬运 /// /// /// public WebResponseContent MaterielCarry(string startPoint) { 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(); } 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.人工完成); //BaseDal.DeleteData(task); return new { code = 200, message = "成功" }; } } }