agv配料

This commit is contained in:
qianhao.xu
2024-04-29 18:50:44 +08:00
parent 96bb0fa527
commit 4a66ac854e
7 changed files with 232 additions and 6 deletions

View File

@@ -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
/// </summary>
/// <returns></returns>
[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
/// </summary>
/// <returns></returns>
[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);
}
/// <summary>
/// 分页查询 配料任务
/// </summary>
/// <param name="queryParams"></param>
/// <returns></returns>
[HttpPost("getIngredientTask")]
public IActionResult GetIngredientTask([FromBody] IngredientTaskQueryDto queryTask)
{
if (queryTask == null)
{
return SUCCESS(null);
}
List<MmIngredientTask> response = materialInputService.GetIngredientTask(queryTask);
return SUCCESS(response);
}
/// <summary>
/// 获取配料任务详情
/// </summary>
/// <param name="taskId"></param>
/// <returns></returns>
[HttpGet("getIngredientTask_son")]
public IActionResult GetIngredientTaskSon(string taskId)
{
if (string.IsNullOrEmpty(taskId))
{
return SUCCESS(null);
}
List<MmIngredientTask> response = materialInputService.GetIngredientTaskSon(taskId);
return SUCCESS(response);
}
/// <summary>
/// 获取车间上料终点
/// </summary>
/// <returns></returns>
[HttpGet("getfabgopoints")]
public IActionResult Getfabgopoints()
{
string[] response = materialInputService.Getfabgopoints();
return SUCCESS(response);
}
/// <summary>
/// agv从仓库到车间 进料
/// </summary>
/// <param name="start_point"></param>
/// <param name="end_point"></param>
/// <returns></returns>
[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);
}
/// <summary>
/// 紧急停止agv
/// </summary>
/// <param name="reqCode"></param>
/// <returns></returns>
[HttpGet("emergency_stop_agv")]
public IActionResult EmergencyStopAgv(string reqCode)
{
if(string.IsNullOrEmpty(reqCode))
{
SUCCESS(null);
}
var response = materialInputService.EmergencyStopAgv(reqCode);
return SUCCESS(response);
}
/// <summary>
///
/// </summary>
/// <returns></returns>
[HttpPost("agv_final_task")]
public IActionResult AgvFinalTask()
{
return null;
}
}
}

View File

@@ -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; }
}
}

View File

@@ -28,7 +28,7 @@ namespace ZR.Model.MES.mm
/// 配料任务id
/// </summary>
[SugarColumn(IsPrimaryKey = true, IsIdentity = false, ColumnName = "task_id")]
public long TaskId { get; set; }
public string TaskId { get; set; }
/// <summary>
/// 工单id

View File

@@ -16,6 +16,8 @@ namespace ZR.Model.MES.wms
public string taskTyp { get; set; }
public List<AGV_location_third> positionCodePath { get; set; }
public string podDir { get; set; }
public string priority { get; set; }
}
public class AGV_location_third
{

View File

@@ -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<ProWorkorder_v2> Getworkorderlist(DateTime datetimespan);
int Generatetask(IngredientTaskDto task,string name);
List<MmIngredientTask> GetIngredientTask(IngredientTaskQueryDto queryParams);
List<MmIngredientTask> GetIngredientTaskSon(string taskId);
string[] Getfabgopoints();
string AGV_schedule(string start_point, string end_point);
string EmergencyStopAgv(string reqCode);
}
}

View File

@@ -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
}
/// <summary>
/// 获取配料任务
/// </summary>
/// <param name="queryParams"></param>
/// <returns></returns>
public List<MmIngredientTask> GetIngredientTask(IngredientTaskQueryDto queryParams)
{
// 获取当天的开始时间
DateTime startOfDay = queryParams.datetimespan.Date;
// 获取当天的结束时间
DateTime endOfDay = startOfDay.AddDays(1).AddTicks(-1);
return Context.Queryable<MmIngredientTask>()
.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();
}
/// <summary>
/// 获取配料任务(son) 详细情况
/// </summary>
/// <param name="taskId"></param>
/// <returns></returns>
public List<MmIngredientTask> GetIngredientTaskSon(string taskId)
{
return Context.Queryable<MmIngredientTask>().Where(it => it.TaskId == taskId).ToList();
}
/// <summary>
/// 获取车间上料终点
/// </summary>
/// <returns></returns>
public string[] Getfabgopoints()
{
return Context.Queryable<MmAgvLocation>().Where(it => it.AreaCode == 3).Where(it => it.Status == 0)
.Select(it => it.Coordinate).ToArray();
}
/// <summary>
/// agv从仓库到车间 进料
/// </summary>
/// <param name="start_point"></param>
/// <param name="end_point"></param>
/// <returns></returns>
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<AGV_location_third>
{
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;
}
/// <summary>
/// 紧急终止AGV
/// </summary>
/// <param name="reqCode"></param>
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;
}
}
}