Files
T-DAS/Epost.TestToolsWeb/Controllers/AgvTaskApiController.cs

173 lines
7.6 KiB
C#
Raw Normal View History

2024-11-23 20:47:14 +08:00
using Epost.BLL;
using Epost.Common;
2024-11-22 15:31:46 +08:00
using Epost.DAL.Cache;
using Epost.Model;
using System;
using System.Collections.Generic;
2024-12-03 10:55:54 +08:00
using System.Configuration;
using System.Data;
2024-11-22 15:31:46 +08:00
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Helpers;
using System.Web.Http;
2024-12-03 10:55:54 +08:00
using static System.Net.WebRequestMethods;
2024-11-22 15:31:46 +08:00
namespace Epost.DPS.Controllers
{
2024-12-06 13:19:43 +08:00
[RoutePrefix("service/rest/agvCallbackService")]//agv=>WCS
2024-11-22 15:31:46 +08:00
public class AgvTaskApiController : ApiController
{
2024-12-03 10:55:54 +08:00
Sys_operate_logBLL logBLL = new Sys_operate_logBLL();
2024-11-23 20:47:14 +08:00
InboundOrdersBLL inboundBLL = new InboundOrdersBLL();
2024-12-03 10:55:54 +08:00
string agvCallbackUrl = ConfigurationManager.AppSettings["agvCallbackUrl"];
string agvexTaskUrl = ConfigurationManager.AppSettings["agvexTaskUrl"];
HttpHelper http = new HttpHelper();
AgvHelper agv = new AgvHelper();
2024-12-25 10:15:41 +08:00
AgvLogInfoBLL logbll = new AgvLogInfoBLL();
2024-11-22 15:31:46 +08:00
[Route("agvCallback")]
[HttpPost]
2024-12-03 10:55:54 +08:00
public AgvResultModel agvCallback([FromBody] agvCallbackModel data)
2024-11-22 15:31:46 +08:00
{
AgvResultModel retModel = new AgvResultModel();
try
{
2024-12-03 10:55:54 +08:00
LogHelper.WriteLogInfo("agvCallback请求报文" + JsonHelper.SerializeObject(data));
2024-11-23 20:47:14 +08:00
string state = string.Empty;
if (data.method == "start")
{
2024-11-27 18:33:35 +08:00
state = "2";//任务开始启动
2024-11-23 20:47:14 +08:00
}
2024-12-03 10:55:54 +08:00
else if (data.method == "outbin")
{
2024-11-27 18:33:35 +08:00
state = "3";//走出储位
2024-11-23 20:47:14 +08:00
}
else if (data.method == "end")
{
2024-11-27 18:33:35 +08:00
state = "4";
2024-11-23 20:47:14 +08:00
//更新任务已完成
2024-12-25 10:15:41 +08:00
wms_callback(data);
2024-11-23 20:47:14 +08:00
}
2024-12-03 10:55:54 +08:00
else if (data.method == "cancel")
{
2024-11-27 10:39:18 +08:00
state = "88";
2024-12-25 10:15:41 +08:00
wms_callback(data);
2024-11-27 10:39:18 +08:00
}
2024-11-23 20:47:14 +08:00
else { }
2024-11-22 15:31:46 +08:00
2024-12-03 10:55:54 +08:00
inboundBLL.UpInOrderListByAgvid(data.taskCode, state);
2024-11-22 15:31:46 +08:00
retModel.message = "成功!";
retModel.code = "0";
2024-11-23 20:47:14 +08:00
retModel.reqCode = data.reqCode;
2024-11-22 15:31:46 +08:00
}
catch (Exception ex)
{
2024-12-03 10:55:54 +08:00
LogHelper.WriteLogInfo("agvCallback异常" + ex.ToString(), LogHelper.Log_Type.ERROR);
2024-11-22 15:31:46 +08:00
retModel.message = "请求接口异常!";
retModel.code = "-1";
2024-11-23 20:47:14 +08:00
retModel.reqCode = data.reqCode;
2024-11-22 15:31:46 +08:00
}
2024-12-03 10:55:54 +08:00
string resinfo = JsonHelper.SerializeObject(retModel);
logBLL.InsertLog("AGV上报WCS", "agvCallback", "/api/AgvTaskApi/agvCallback", JsonHelper.SerializeObject(data), resinfo, 0, "", DateTime.Now);
return retModel;
}
2024-12-25 10:15:41 +08:00
public void wms_callback(agvCallbackModel data)
{
DataTable dt = inboundBLL.GetInOrderList(" and agvid ='" + data.taskCode + "'");
if (dt != null && dt.Rows.Count > 0)
{
wmsCallbackModel backModel = new wmsCallbackModel();
List<callbackHeader> list = new List<callbackHeader>();
callbackHeader headModel = new callbackHeader();
headModel.warehouseId = dt.Rows[0]["warehouseId"].ToString();
headModel.groupTaskId = dt.Rows[0]["groupTaskId"].ToString();
headModel.wmsDocNo = dt.Rows[0]["wmsDocNo"].ToString();
headModel.currentPositionCode = data.currentPositionCode;
headModel.robotCode = data.robotCode;
headModel.taskCode = data.taskCode;
headModel.method = data.method;
headModel.reqCode = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
headModel.reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
callback back = new callback();
list.Add(headModel);
back.header = list;
backModel.data = back;
string reqstr = JsonHelper.SerializeObject(backModel);
LogHelper.WriteLogInfo("WCS->WMS任务执行通知请求" + reqstr + "===" + agvCallbackUrl);
string resultStr = http.HttpPost_Old(agvCallbackUrl, reqstr);
LogHelper.WriteLogInfo("WCS->WMS任务执行通知返回" + resultStr);
logBLL.InsertLog("WCS->WMS任务执行通知", "agvCallback", agvCallbackUrl, reqstr, resultStr, 0, "", DateTime.Now);
}
}
2024-12-03 10:55:54 +08:00
[Route("warnCallback")]
[HttpPost]
public AgvResultModel warnCallback([FromBody]warnCallbackReq data)
{
AgvResultModel retModel = new AgvResultModel();
try
{
LogHelper.WriteLogInfo("warnCallback请求报文" + JsonHelper.SerializeObject(data));
//DataTable dt = inboundBLL.GetInOrderList(" and agvid ='" + data.taskCode + "'");
//if (dt != null && dt.Rows.Count > 0)
//{
agvexTaskReq backModel = new agvexTaskReq();
agvexTaskData taskdata = new agvexTaskData();
List<agvexTaskList> taskList = new List<agvexTaskList>();
agvexTaskHeader agvexHeader = new agvexTaskHeader();
List<agvexTaskHeader> headerlist = new List<agvexTaskHeader>();
2024-12-25 10:15:41 +08:00
List<warnCallbackData> datalist = data.data;
string reqcode = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
2024-12-03 10:55:54 +08:00
if (datalist.Any())
{
foreach (warnCallbackData item in datalist)
{
agvexTaskList agvextmodel = new agvexTaskList();
agvextmodel.robotCode = item.robotCode;
agvextmodel.taskCode = item.taskCode;
agvextmodel.beginDate = item.beginDate;
agvextmodel.warnContent = item.warnContent;
taskList.Add(agvextmodel);
2024-12-25 10:15:41 +08:00
logbll.insertAgvLogInfo(reqcode, item.beginDate, item.robotCode, item.beginDate, item.warnContent, item.taskCode);
2024-12-03 10:55:54 +08:00
}
}
agvexHeader.list = taskList;
agvexHeader.clientCode = data.clientCode;
2024-12-25 10:15:41 +08:00
agvexHeader.reqCode = reqcode;
2024-12-03 10:55:54 +08:00
agvexHeader.reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
headerlist.Add(agvexHeader);
taskdata.header = headerlist;
backModel.data = taskdata;
2024-12-25 10:15:41 +08:00
2024-12-03 10:55:54 +08:00
string reqstr = JsonHelper.SerializeObject(backModel);
LogHelper.WriteLogInfo("WCS->WMS告警通知请求" + reqstr + "===" + agvexTaskUrl);
string resultStr = http.HttpPost_Old(agvexTaskUrl, reqstr);
LogHelper.WriteLogInfo("WCS->WMS告警通知返回" + resultStr);
logBLL.InsertLog("WCS->WMS告警通知", "warnCallback", agvexTaskUrl, reqstr, resultStr, 0, "", DateTime.Now);
2024-11-23 20:47:14 +08:00
2024-12-03 10:55:54 +08:00
// }
retModel.message = "成功!";
retModel.code = "0";
retModel.reqCode = data.reqCode;
}
catch (Exception ex)
{
LogHelper.WriteLogInfo("agvPutTask异常" + ex.ToString(), LogHelper.Log_Type.ERROR);
retModel.message = "请求接口异常!";
retModel.code = "-1";
retModel.reqCode = data.reqCode;
}
string resinfo = JsonHelper.SerializeObject(retModel);
logBLL.InsertLog("AGV上报WCS", "agvCallback", "/api/AgvTaskApi/agvCallback", JsonHelper.SerializeObject(data), resinfo, 0, "", DateTime.Now);
2024-11-22 15:31:46 +08:00
return retModel;
}
}
}