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-27 16:54:02 +08:00
bool istrue = true ;
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-27 16:54:02 +08:00
DataTable logdt = logbll . getAgvLogList ( " and robotCode='" + item . robotCode + "' and warnContent='" + item . warnContent + "' and addtime>dateadd(minute,-10,GETDATE())" ) ;
if ( logdt ! = null & & logdt . Rows . Count > 0 )
{
istrue = false ;
}
else {
logbll . insertAgvLogInfo ( reqcode , item . beginDate , item . robotCode , item . beginDate , item . warnContent , item . taskCode ) ;
}
2024-12-03 10:55:54 +08:00
}
}
2024-12-27 16:54:02 +08:00
if ( istrue ) {
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-27 16:54:02 +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 ;
}
}
}