diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmAGVController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmAGVController.cs
index a11082de..a72e418f 100644
--- a/ZR.Admin.WebApi/Controllers/mes/wms/WmAGVController.cs
+++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmAGVController.cs
@@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc;
+using System.ComponentModel;
using ZR.Admin.WebApi.Extensions;
using ZR.Admin.WebApi.Filters;
using ZR.Model.MES.wms;
@@ -126,5 +127,42 @@ namespace ZR.Admin.WebApi.Controllers
return SUCCESS(response);
}
+ ///
+ /// 7 生成 agv 任务号
+ ///
+ ///
+ /// 1 是去 2 是回车
+ ///
+ [HttpGet("generate_agv_task")]
+ [Log(Title = "AGV调度")]
+ public IActionResult GenerateAgvTask(string taskid,int flag)
+ {
+ string msg = "任务调度成功";
+ if(string.IsNullOrEmpty(taskid))
+ {
+
+ return SUCCESS(null);
+ }
+
+ string status = _WmAGVService.GenerateAgvTask(taskid,flag);
+
+ return ToResponse(new ApiResult(200, msg, status));
+ }
+
+ // cancelTask
+ [HttpGet("cancel_agv_task")]
+ public IActionResult CancelAGVTask(string taskId, int flag)
+ {
+ string msg = "取消任务成功";
+ if(string.IsNullOrEmpty(taskId))
+ {
+ return SUCCESS(null);
+ }
+
+ string status = _WmAGVService.CancelAGVTask(taskId, flag);
+ return ToResponse(new ApiResult(200, msg, status));
+
+ }
+
}
}
diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs
index b1aceef2..9368c784 100644
--- a/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs
+++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs
@@ -167,6 +167,7 @@ namespace ZR.Admin.WebApi.Controllers
return SUCCESS(WmOutOrderPlanList);
}
+
///
/// 5 成品出库
///
diff --git a/ZR.Model/MES/wms/AGVtask_third.cs b/ZR.Model/MES/wms/AGVtask_third.cs
new file mode 100644
index 00000000..c7ba6115
--- /dev/null
+++ b/ZR.Model/MES/wms/AGVtask_third.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ZR.Model.MES.wms
+{
+ ///
+ /// 对接agv 第三方
+ ///
+ public class AGVtask_third
+ {
+ public string reqCode { get; set; }
+ public string msg { get; set; }
+
+ public List positionCodePath { get; set; }
+ }
+ public class AGV_location_third
+ {
+ public string positionCode { get; set; }
+ public string type { get; set; }
+ }
+
+ ///
+ /// 生成任务单 第三方 返回值
+ ///
+ public class AGV_task_third
+ {
+
+ public string code { get; set;}
+
+ public string message { get; set;}
+
+ public string reqCode { get;set;}
+
+ public string data { get; set; }
+
+ }
+
+
+ ///
+ /// agv 取消任务
+ ///
+ public class AGVtask_cancel_third
+ {
+ public string reqCode { get; set;}
+ public string forceCancel { get; set;}
+ public string taskCode { get; set; }
+
+ }
+
+
+}
diff --git a/ZR.Model/MES/wms/AgvTask.cs b/ZR.Model/MES/wms/AgvTask.cs
index d5008bcc..bda9651f 100644
--- a/ZR.Model/MES/wms/AgvTask.cs
+++ b/ZR.Model/MES/wms/AgvTask.cs
@@ -40,6 +40,16 @@ namespace ZR.Model.MES.wms
[SugarColumn(ColumnName = "go_end_point")]
public string GoEndPoint { get; set; }
+
+ ///
+ /// 启程
+ ///
+
+ [SugarColumn(ColumnName = "go_task_id")]
+ public string GoTaskId { get; set; }
+
+
+
///
/// 数量
///
@@ -57,6 +67,12 @@ namespace ZR.Model.MES.wms
[SugarColumn(ColumnName = "back_end_point")]
public string BackEndPoint { get; set; }
+ ///
+ /// 回程
+ ///
+ [SugarColumn(ColumnName = "back_task_id")]
+ public string BackTaskId{ get; set; }
+
///
/// 创建人
///
diff --git a/ZR.Model/MES/wms/Dto/AGVtaskDto.cs b/ZR.Model/MES/wms/Dto/AGVtaskDto.cs
index 87e0fea8..d1ef975f 100644
--- a/ZR.Model/MES/wms/Dto/AGVtaskDto.cs
+++ b/ZR.Model/MES/wms/Dto/AGVtaskDto.cs
@@ -77,12 +77,5 @@ namespace ZR.Model.MES.wms.Dto
/// 未上件数
///
public int NoPreviousNumber { get; set; }
-
-
-
-
-
-
-
}
}
diff --git a/ZR.Service/mes/wms/IService/IWmAGVService.cs b/ZR.Service/mes/wms/IService/IWmAGVService.cs
index bb7dbe89..656a2342 100644
--- a/ZR.Service/mes/wms/IService/IWmAGVService.cs
+++ b/ZR.Service/mes/wms/IService/IWmAGVService.cs
@@ -19,5 +19,8 @@ namespace ZR.Service.mes.wms.IService
int DeleteTask(string taskId);
List GetAGV_position_list(AgvLocation location);
+
+ string GenerateAgvTask(string taskid,int flag);
+ string CancelAGVTask(string taskId, int flag);
}
}
diff --git a/ZR.Service/mes/wms/WmAGVService.cs b/ZR.Service/mes/wms/WmAGVService.cs
index f9a4a96d..45ada1d6 100644
--- a/ZR.Service/mes/wms/WmAGVService.cs
+++ b/ZR.Service/mes/wms/WmAGVService.cs
@@ -12,6 +12,9 @@ using ZR.Model.MES.wms.Dto;
using ZR.Service.mes.wms.IService;
using ZR.Model.MES.pro;
using Mapster;
+using Infrastructure;
+using System.Text.Json;
+using System.Threading.Tasks;
namespace ZR.Service.Business
{
@@ -21,7 +24,7 @@ namespace ZR.Service.Business
[AppService(ServiceType = typeof(IWmAGVService), ServiceLifetime = LifeTime.Transient)]
public class WmAGVService : BaseService, IWmAGVService
{
-
+
///
/// 1.获取工单列表
@@ -30,14 +33,14 @@ namespace ZR.Service.Business
///
public List GetList(QueryAGVparam param)
{
- List aGVWorkorderDtos = new List();
+ List aGVWorkorderDtos = new List();
var predicate = Expressionable.Create()
.AndIF(param.year > 0, it => it.Year == param.year)
.AndIF(param.week > 0, it => it.Week == param.week)
.AndIF(param.day > 0, it => it.Date == param.day);
var response = Context.Queryable()
- .Where(it=>it.Remark3=="是")
+ .Where(it => it.Remark3 == "是")
.Where(predicate.ToExpression()).ToList();
foreach (var item in response)
{
@@ -55,7 +58,7 @@ namespace ZR.Service.Business
///
public List QueryAGVTask(string workorder_id)
{
- return Context.Queryable().Where(it => it.FkWorkorderId == workorder_id).OrderBy(it=>it.Sort).ToList();
+ return Context.Queryable().Where(it => it.FkWorkorderId == workorder_id).OrderBy(it => it.Sort).ToList();
}
@@ -70,21 +73,21 @@ namespace ZR.Service.Business
{
int result = 0;
//TODO 1 判断agv小车task是否可以新增
- if(string.IsNullOrEmpty(task.FkWorkorderId))
+ if (string.IsNullOrEmpty(task.FkWorkorderId))
{
return -1;
}
ProWorkorder_v2 workorder = Context.Queryable()
.Where(it => it.Id == task.FkWorkorderId)
.First();
-
- int require_num= workorder.PreviousNumber;
- int all_require_num=Context.Queryable().Where(it => it.FkWorkorderId == workorder.Id).Sum(it => it.Number)??0;
- if(require_num>all_require_num)
+ int require_num = workorder.PreviousNumber;
+ int all_require_num = Context.Queryable().Where(it => it.FkWorkorderId == workorder.Id).Sum(it => it.Number) ?? 0;
+
+ if (require_num > all_require_num)
{
task.Id = SnowFlakeSingle.Instance.NextId().ToString();
- result= Context.Insertable(task).ExecuteCommand();
+ result = Context.Insertable(task).ExecuteCommand();
}
@@ -100,7 +103,7 @@ namespace ZR.Service.Business
///
public int DeleteTask(string taskId)
{
- return Context.Deleteable().Where(it=>it.Id==taskId).ExecuteCommand();
+ return Context.Deleteable().Where(it => it.Id == taskId).ExecuteCommand();
}
@@ -113,12 +116,123 @@ namespace ZR.Service.Business
public List GetAGV_position_list(AgvLocation location)
{
var predicate = Expressionable.Create()
- .AndIF(location.AreaCode>-1, it => it.AreaCode == location.AreaCode)
+ .AndIF(location.AreaCode > -1, it => it.AreaCode == location.AreaCode)
.AndIF(location.Type > -1, it => it.Type == location.Type)
.AndIF(!string.IsNullOrEmpty(location.Coordinate), it => it.Coordinate == location.Coordinate);
- return Context.Queryable().Where(predicate.ToExpression()).ToList();
+ return Context.Queryable().Where(predicate.ToExpression()).ToList();
+ }
+ ///
+ /// 7 生成agv任务
+ ///
+ ///
+ ///
+ public string GenerateAgvTask(string taskid,int flag)
+ {
+ AgvTask agvTask= Context.Queryable().Where(it => it.Id == taskid).First();
+ string url = "http://192.168.60.1:443/rcms/services/rest/hikRpcService/genAgvSchedulingTask";
+ string start_point = "";
+ string end_point = "";
+
+ if (flag==1) {
+ start_point =agvTask.GoStartPoint;
+ end_point = agvTask.GoEndPoint;
+ }
+ else if (flag==2)
+ {
+ start_point = agvTask.BackStartPoint;
+ end_point = agvTask.BackEndPoint;
+
+ }
+ AGVtask_third task = new AGVtask_third();
+ task.reqCode = taskid;
+ task.positionCodePath = new List
+ {
+ new AGV_location_third()
+ {
+ positionCode=start_point,
+ type="00"
+
+ },
+ new AGV_location_third()
+ {
+ positionCode=end_point,
+ type="01"
+
+ }
+ };
+ string postData = JsonSerializer.Serialize(task);
+
+
+
+ string response= HttpHelper.HttpPost(url, postData);
+
+
+
+ AGV_task_third res_data= JsonSerializer.Deserialize(response);
+
+ if(res_data!=null &&res_data.code=="0") {
+
+ if (flag == 1)
+ {
+ Context.Updateable().SetColumns(it => it.GoTaskId == res_data.reqCode)
+ .Where(it => it.Id == agvTask.Id).ExecuteCommand();
+ }
+ else if (flag == 2)
+ {
+ Context.Updateable().SetColumns(it => it.BackTaskId == res_data.reqCode)
+ .Where(it => it.Id == agvTask.Id).ExecuteCommand();
+ }
+
+
+ }
+
+
+ return response;
+ }
+
+
+ ///
+ /// 8.取消agv任务
+ ///
+ ///
+ ///
+ public string CancelAGVTask(string taskId, int flag)
+ {
+ if(flag!=1||flag!=2)
+ {
+ return null;
+ }
+ AgvTask agvTask = Context.Queryable().Where(it => it.Id == taskId).First();
+ if(agvTask!=null)
+ {
+ string task_id = null;
+ if (flag == 1)
+ {
+ //
+ task_id = agvTask.GoTaskId;
+ }else if (flag == 2)
+ {
+ task_id = agvTask.BackTaskId;
+ }
+
+ string url = "http://192.168.60.1:443/rcms/services/rest/hikRpcService/cancelTask";
+ AGVtask_cancel_third req = new AGVtask_cancel_third();
+ req.reqCode = taskId;
+ req.forceCancel = "1";
+ req.taskCode = task_id;
+ string postData= JsonSerializer.Serialize(req);
+
+
+
+
+ string response = HttpHelper.HttpPost(url, postData);
+
+ return response;
+ }
+ return null;
+
}
}
}