From 4a66ac854e0e9f7d609d62e5d3cb0c0517d99f8e Mon Sep 17 00:00:00 2001 From: "qianhao.xu" Date: Mon, 29 Apr 2024 18:50:44 +0800 Subject: [PATCH] =?UTF-8?q?agv=E9=85=8D=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/mm/MaterialInputController.cs | 102 ++++++++++++++- ZR.Model/MES/mm/Dto/IngredientTaskDto.cs | 4 + .../MES}/mm/MmFkWorkorderIngredient.cs | 0 ZR.Model/MES/mm/MmIngredientTask.cs | 2 +- ZR.Model/MES/wms/AGVtask_third.cs | 2 + .../mes/mm/IService/IMaterialInputService.cs | 12 ++ ZR.Service/mes/mm/MaterialInputService.cs | 116 +++++++++++++++++- 7 files changed, 232 insertions(+), 6 deletions(-) rename {ZR.Service/mes => ZR.Model/MES}/mm/MmFkWorkorderIngredient.cs (100%) diff --git a/ZR.Admin.WebApi/Controllers/mes/mm/MaterialInputController.cs b/ZR.Admin.WebApi/Controllers/mes/mm/MaterialInputController.cs index 7d6e9ce1..8e7f8bbe 100644 --- a/ZR.Admin.WebApi/Controllers/mes/mm/MaterialInputController.cs +++ b/ZR.Admin.WebApi/Controllers/mes/mm/MaterialInputController.cs @@ -1,6 +1,8 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using ZR.Admin.WebApi.Extensions; +using ZR.Model; +using ZR.Model.MES.mm; using ZR.Model.MES.mm.Dto; using ZR.Service.mes.mm; using ZR.Service.mes.mm.IService; @@ -50,9 +52,9 @@ namespace ZR.Admin.WebApi.Controllers.mes.mm /// /// [HttpPost("getworkorderlist")] - public IActionResult Getworkorderlist([FromBody] WorkorderqueryDto query) + public IActionResult Getworkorderlist([FromBody] WorkorderqueryDto query) { - if(query == null|| query.datetimespan==null) + if (query == null || query.datetimespan == null) { SUCCESS(null); } @@ -66,14 +68,106 @@ namespace ZR.Admin.WebApi.Controllers.mes.mm /// /// [HttpPost("generatetask")] - public IActionResult Generatetask([FromBody] IngredientTaskDto task) + public IActionResult Generatetask([FromBody] IngredientTaskDto task) { - if(task==null||task.workorders==null|| task.workorders.Count==0) + if (task == null || task.workorders == null || task.workorders.Count == 0) { return SUCCESS(null); } int res = materialInputService.Generatetask(task, HttpContext.GetName()); return SUCCESS(res); } + + /// + /// 分页查询 配料任务 + /// + /// + /// + [HttpPost("getIngredientTask")] + public IActionResult GetIngredientTask([FromBody] IngredientTaskQueryDto queryTask) + { + if (queryTask == null) + { + return SUCCESS(null); + } + + List response = materialInputService.GetIngredientTask(queryTask); + + return SUCCESS(response); + } + + + /// + /// 获取配料任务详情 + /// + /// + /// + [HttpGet("getIngredientTask_son")] + public IActionResult GetIngredientTaskSon(string taskId) + { + if (string.IsNullOrEmpty(taskId)) + { + return SUCCESS(null); + } + List response = materialInputService.GetIngredientTaskSon(taskId); + return SUCCESS(response); + } + + /// + /// 获取车间上料终点 + /// + /// + [HttpGet("getfabgopoints")] + public IActionResult Getfabgopoints() + { + string[] response = materialInputService.Getfabgopoints(); + + return SUCCESS(response); + } + + /// + /// agv从仓库到车间 进料 + /// + /// + /// + /// + [HttpGet("go_workshop")] + public IActionResult GoWorkshop(string start_point, string end_point) + { + if (string.IsNullOrEmpty(start_point) || string.IsNullOrEmpty(end_point)) + { + SUCCESS(null); + } + var response = materialInputService.AGV_schedule(start_point, end_point); + + return SUCCESS(response); + } + /// + /// 紧急停止agv + /// + /// + /// + [HttpGet("emergency_stop_agv")] + public IActionResult EmergencyStopAgv(string reqCode) + { + if(string.IsNullOrEmpty(reqCode)) + { + SUCCESS(null); + } + + var response = materialInputService.EmergencyStopAgv(reqCode); + return SUCCESS(response); + } + + /// + /// + /// + /// + [HttpPost("agv_final_task")] + public IActionResult AgvFinalTask() + { + return null; + } + } } \ No newline at end of file diff --git a/ZR.Model/MES/mm/Dto/IngredientTaskDto.cs b/ZR.Model/MES/mm/Dto/IngredientTaskDto.cs index f400cb67..72c04664 100644 --- a/ZR.Model/MES/mm/Dto/IngredientTaskDto.cs +++ b/ZR.Model/MES/mm/Dto/IngredientTaskDto.cs @@ -21,4 +21,8 @@ namespace ZR.Model.MES.mm.Dto public int previousNumber { set; get; } public int previousNumbered { set; get; } } + public class IngredientTaskQueryDto : PagerInfo + { + public DateTime datetimespan { set; get; } + } } diff --git a/ZR.Service/mes/mm/MmFkWorkorderIngredient.cs b/ZR.Model/MES/mm/MmFkWorkorderIngredient.cs similarity index 100% rename from ZR.Service/mes/mm/MmFkWorkorderIngredient.cs rename to ZR.Model/MES/mm/MmFkWorkorderIngredient.cs diff --git a/ZR.Model/MES/mm/MmIngredientTask.cs b/ZR.Model/MES/mm/MmIngredientTask.cs index af056847..bf9f0f26 100644 --- a/ZR.Model/MES/mm/MmIngredientTask.cs +++ b/ZR.Model/MES/mm/MmIngredientTask.cs @@ -28,7 +28,7 @@ namespace ZR.Model.MES.mm /// 配料任务id /// [SugarColumn(IsPrimaryKey = true, IsIdentity = false, ColumnName = "task_id")] - public long TaskId { get; set; } + public string TaskId { get; set; } /// /// 工单id diff --git a/ZR.Model/MES/wms/AGVtask_third.cs b/ZR.Model/MES/wms/AGVtask_third.cs index 7f3e97c9..79892b1a 100644 --- a/ZR.Model/MES/wms/AGVtask_third.cs +++ b/ZR.Model/MES/wms/AGVtask_third.cs @@ -16,6 +16,8 @@ namespace ZR.Model.MES.wms public string taskTyp { get; set; } public List positionCodePath { get; set; } + public string podDir { get; set; } + public string priority { get; set; } } public class AGV_location_third { diff --git a/ZR.Service/mes/mm/IService/IMaterialInputService.cs b/ZR.Service/mes/mm/IService/IMaterialInputService.cs index aec9c747..649e114b 100644 --- a/ZR.Service/mes/mm/IService/IMaterialInputService.cs +++ b/ZR.Service/mes/mm/IService/IMaterialInputService.cs @@ -4,6 +4,8 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using ZR.Model; +using ZR.Model.MES.mm; using ZR.Model.MES.mm.Dto; using ZR.Model.MES.pro; @@ -17,5 +19,15 @@ namespace ZR.Service.mes.mm.IService List Getworkorderlist(DateTime datetimespan); int Generatetask(IngredientTaskDto task,string name); + + List GetIngredientTask(IngredientTaskQueryDto queryParams); + + List GetIngredientTaskSon(string taskId); + + string[] Getfabgopoints(); + + string AGV_schedule(string start_point, string end_point); + string EmergencyStopAgv(string reqCode); + } } diff --git a/ZR.Service/mes/mm/MaterialInputService.cs b/ZR.Service/mes/mm/MaterialInputService.cs index 2d63b86e..6b7ff3f8 100644 --- a/ZR.Service/mes/mm/MaterialInputService.cs +++ b/ZR.Service/mes/mm/MaterialInputService.cs @@ -17,6 +17,10 @@ using static System.Runtime.InteropServices.JavaScript.JSType; using ZR.Model.MES.mm.Dto; using SqlSugar; using Microsoft.Extensions.Hosting; +using ZR.Model; +using ZR.Model.MES.wms; +using System.Text.Json; +using Infrastructure; namespace ZR.Service.mes.mm { @@ -153,7 +157,7 @@ namespace ZR.Service.mes.mm MmIngredientTask ingredientTask = new MmIngredientTask(); ingredientTask.AgvPosition = task.agv_position; - ingredientTask.TaskId = taskid; + ingredientTask.TaskId = taskid.ToString(); ingredientTask.Workorder = item.workorder; ingredientTask.Partnumber = item.partnumber; ingredientTask.PreviousNumber = item.previousNumber; @@ -171,6 +175,116 @@ namespace ZR.Service.mes.mm } + + /// + /// 获取配料任务 + /// + /// + /// + public List GetIngredientTask(IngredientTaskQueryDto queryParams) + { + // 获取当天的开始时间 + DateTime startOfDay = queryParams.datetimespan.Date; + // 获取当天的结束时间 + DateTime endOfDay = startOfDay.AddDays(1).AddTicks(-1); + return Context.Queryable() + .Where(it => it.CreatedTime > startOfDay && it.CreatedTime < endOfDay) + .GroupBy(it => it.TaskId) + .Select(it => new MmIngredientTask() + { + TaskId = it.TaskId, + AgvPosition = SqlFunc.AggregateMax(it.AgvPosition), + CreatedTime = SqlFunc.AggregateMax(it.CreatedTime) + }) + .ToList(); + + + } + + /// + /// 获取配料任务(son) 详细情况 + /// + /// + /// + public List GetIngredientTaskSon(string taskId) + { + return Context.Queryable().Where(it => it.TaskId == taskId).ToList(); + } + + /// + /// 获取车间上料终点 + /// + /// + public string[] Getfabgopoints() + { + return Context.Queryable().Where(it => it.AreaCode == 3).Where(it => it.Status == 0) + .Select(it => it.Coordinate).ToArray(); + + } + + + + /// + /// agv从仓库到车间 进料 + /// + /// + /// + /// + public string AGV_schedule(string start_point, string end_point) + { + string url = "https://192.168.60.1:443/rcms/services/rest/hikRpcService/genAgvSchedulingTask"; + AGVtask_third task = new AGVtask_third(); + task.reqCode = SnowFlakeSingle.Instance.NextId().ToString(); + task.taskTyp = "F01"; + task.positionCodePath = new List + { + new AGV_location_third() + { + positionCode=start_point, + type="00" + + }, + new AGV_location_third() + { + positionCode=end_point, + type="00" + + } + }; + task.podDir = "0"; + task.priority = "1"; + + string postData = JsonSerializer.Serialize(task); + string response = HttpHelper.HttpPost(url, postData); + + + return response; + + } + + + /// + /// 紧急终止AGV + /// + /// + public string EmergencyStopAgv(string reqCode) + { + string url = "https://192.168.60.1:443/rcms/services/rest/hikRpcService/cancelTask"; + AGVtask_cancel_third req = new AGVtask_cancel_third(); + req.reqCode = SnowFlakeSingle.Instance.NextId().ToString(); + req.forceCancel = "0"; + req.taskCode = reqCode; + string postData = JsonSerializer.Serialize(req); + + + + + string response = HttpHelper.HttpPost(url, postData); + + return response; + + + } } }