371 lines
18 KiB
C#
371 lines
18 KiB
C#
using Epost.BLL;
|
||
using Epost.Common;
|
||
using Epost.Model;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Configuration;
|
||
using System.Data;
|
||
using System.Linq;
|
||
using System.Net;
|
||
using System.Net.Http;
|
||
using System.Web.Http;
|
||
using static System.Net.WebRequestMethods;
|
||
|
||
namespace Epost.DPS.Controllers
|
||
{
|
||
[RoutePrefix("api/TaskAPI")]//WMS=>WCS
|
||
public class TaskAPIController : ApiController
|
||
{
|
||
InboundOrdersBLL inOrderBLL = new InboundOrdersBLL();
|
||
PalletinfoBLL palletBLL = new PalletinfoBLL();
|
||
Sys_operate_logBLL logBLL = new Sys_operate_logBLL();
|
||
|
||
HttpHelper http = new HttpHelper();
|
||
AgvHelper agv = new AgvHelper();
|
||
string bindCtnrAndBinUrl = ConfigurationManager.AppSettings["bindCtnrAndBinUrl"];
|
||
[Route("agvPutTask")]//WMS=>WCS生成任务接口
|
||
[HttpPost]
|
||
public RetMesModel agvPutTask([FromBody] TaskModel model)
|
||
{
|
||
RetMesModel retMes = new RetMesModel();
|
||
ResponseModel response = new ResponseModel();
|
||
ReturnRes res = new ReturnRes();
|
||
try
|
||
{
|
||
LogHelper.WriteLogInfo("请求报文" + JsonHelper.SerializeObject(model));
|
||
|
||
if (model.data.header.Any())
|
||
{
|
||
foreach (TaskHeader item in model.data.header)
|
||
{
|
||
if (string.IsNullOrEmpty(item.wmsDocNo) || string.IsNullOrEmpty(item.taskType))
|
||
{
|
||
res.returnDesc = "请求参数错误!";
|
||
res.returnCode = "0001";
|
||
res.returnFlag = "0";
|
||
}
|
||
else
|
||
{
|
||
DataTable orderdt = inOrderBLL.GetOrdersList(item.wmsDocNo);
|
||
if (orderdt != null && orderdt.Rows.Count > 0)
|
||
{
|
||
res.returnDesc = "订单已存在!";
|
||
res.returnCode = "0001";
|
||
res.returnFlag = "0";
|
||
}
|
||
else
|
||
{
|
||
#region datatable创建
|
||
DataTable dataTable = new DataTable();
|
||
dataTable.TableName = "InboundOrders";
|
||
dataTable.Columns.Add(new DataColumn("wmsDocNo", typeof(string)));
|
||
dataTable.Columns.Add(new DataColumn("groupTaskId", typeof(string)));
|
||
dataTable.Columns.Add(new DataColumn("palletId", typeof(string)));
|
||
dataTable.Columns.Add(new DataColumn("spositionCode", typeof(string)));
|
||
dataTable.Columns.Add(new DataColumn("dpositionCode", typeof(string)));
|
||
dataTable.Columns.Add(new DataColumn("priority", typeof(string)));
|
||
dataTable.Columns.Add(new DataColumn("taskType", typeof(string)));
|
||
dataTable.Columns.Add(new DataColumn("userId", typeof(string)));
|
||
dataTable.Columns.Add(new DataColumn("userName", typeof(string)));
|
||
dataTable.Columns.Add(new DataColumn("notes", typeof(string)));
|
||
dataTable.Columns.Add(new DataColumn("warehouseId", typeof(string)));
|
||
dataTable.Columns.Add(new DataColumn("addtime", typeof(DateTime)));
|
||
dataTable.Columns.Add(new DataColumn("state", typeof(int)));
|
||
#endregion
|
||
if (item.details.Any())
|
||
{
|
||
foreach (TaskDetail detail in item.details)
|
||
{
|
||
#region datatable
|
||
DataRow dataRow = dataTable.NewRow();
|
||
dataRow["wmsDocNo"] = item.wmsDocNo;
|
||
dataRow["groupTaskId"] = detail.groupTaskId;
|
||
dataRow["palletId"] = detail.palletId;
|
||
dataRow["spositionCode"] = detail.spositionCode;
|
||
dataRow["dpositionCode"] = detail.dpositionCode;
|
||
dataRow["priority"] = item.priority;
|
||
dataRow["taskType"] = item.taskType;
|
||
dataRow["userId"] = item.userId;
|
||
dataRow["userName"] = item.userName;
|
||
dataRow["notes"] = detail.notes;
|
||
dataRow["warehouseId"] = item.warehouseId;
|
||
dataRow["addtime"] = DateTime.Now.ToString();
|
||
dataRow["state"] = "0";
|
||
dataTable.Rows.Add(dataRow);
|
||
#endregion
|
||
}
|
||
}
|
||
#region Dictionary
|
||
Dictionary<string, string> diclist = new Dictionary<string, string>();
|
||
diclist.Add("wmsDocNo", "wmsDocNo");
|
||
diclist.Add("groupTaskId", "groupTaskId");
|
||
diclist.Add("palletId", "palletId");
|
||
diclist.Add("spositionCode", "spositionCode");
|
||
diclist.Add("dpositionCode", "dpositionCode");
|
||
diclist.Add("priority", "priority");
|
||
diclist.Add("taskType", "taskType");
|
||
diclist.Add("userId", "userId");
|
||
diclist.Add("userName", "userName");
|
||
diclist.Add("notes", "notes");
|
||
diclist.Add("warehouseId", "warehouseId");
|
||
diclist.Add("addtime", "addtime");
|
||
diclist.Add("state", "state");
|
||
#endregion
|
||
bool bo = inOrderBLL.InsertOrder(dataTable, diclist);
|
||
if (bo)
|
||
{
|
||
//添加托盘明细
|
||
InsertPallet(item);
|
||
res.returnCode = "0000";
|
||
res.returnDesc = "成功!";
|
||
res.returnFlag = "1";
|
||
}
|
||
else
|
||
{
|
||
res.returnCode = "0001";
|
||
res.returnDesc = "请求失败,请重试!";
|
||
res.returnFlag = "0";
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
|
||
}
|
||
}
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteLogInfo("agvPutTask异常:" + ex.ToString(), LogHelper.Log_Type.ERROR);
|
||
res.returnDesc = "请求接口异常!";
|
||
res.returnCode = "0001";
|
||
res.returnFlag = "0";
|
||
}
|
||
response.returnnode = res;
|
||
retMes.Response = response;
|
||
string resinfo = JsonHelper.SerializeObject(retMes) ;
|
||
logBLL.InsertLog("生成任务单", "agvPutTask", "/api/TaskAPI/agvPutTask", JsonHelper.SerializeObject(model), resinfo, 0, res.returnDesc, DateTime.Now);
|
||
return retMes;
|
||
}
|
||
|
||
#region 添加托盘明细
|
||
public bool InsertPallet(TaskHeader item)
|
||
{
|
||
try
|
||
{
|
||
#region datatable创建
|
||
DataTable dataTable2 = new DataTable();
|
||
dataTable2.TableName = "Palletinfo";
|
||
dataTable2.Columns.Add(new DataColumn("wmsDocNo", typeof(string)));
|
||
dataTable2.Columns.Add(new DataColumn("groupTaskId", typeof(string)));
|
||
dataTable2.Columns.Add(new DataColumn("palletId", typeof(string)));
|
||
dataTable2.Columns.Add(new DataColumn("sku", typeof(string)));
|
||
dataTable2.Columns.Add(new DataColumn("skuDescr1", typeof(string)));
|
||
dataTable2.Columns.Add(new DataColumn("qty", typeof(string)));
|
||
dataTable2.Columns.Add(new DataColumn("taskType", typeof(string)));
|
||
dataTable2.Columns.Add(new DataColumn("notes", typeof(string)));
|
||
dataTable2.Columns.Add(new DataColumn("addtime", typeof(DateTime)));
|
||
|
||
#endregion
|
||
if (item.details2.Any())
|
||
{
|
||
foreach (TaskDetails2 detail in item.details2)
|
||
{
|
||
#region datatable
|
||
DataRow dataRow1 = dataTable2.NewRow();
|
||
dataRow1["wmsDocNo"] = item.wmsDocNo;
|
||
dataRow1["groupTaskId"] = detail.groupTaskId;
|
||
dataRow1["palletId"] = detail.palletId;
|
||
dataRow1["sku"] = detail.sku;
|
||
dataRow1["skuDescr1"] = detail.skuDescr1;
|
||
dataRow1["qty"] = detail.qty;
|
||
dataRow1["notes"] = item.notes;
|
||
dataRow1["taskType"] = item.taskType;
|
||
dataRow1["addtime"] = DateTime.Now.ToString();
|
||
|
||
dataTable2.Rows.Add(dataRow1);
|
||
#endregion
|
||
}
|
||
}
|
||
#region Dictionary
|
||
Dictionary<string, string> diclist1 = new Dictionary<string, string>();
|
||
diclist1.Add("wmsDocNo", "wmsDocNo");
|
||
diclist1.Add("groupTaskId", "groupTaskId");
|
||
diclist1.Add("palletId", "palletId");
|
||
diclist1.Add("sku", "sku");
|
||
diclist1.Add("skuDescr1", "skuDescr1");
|
||
diclist1.Add("qty", "qty");
|
||
diclist1.Add("notes", "notes");
|
||
diclist1.Add("taskType", "taskType");
|
||
diclist1.Add("addtime", "addtime");
|
||
|
||
#endregion
|
||
bool bo = palletBLL.InsertPallet(dataTable2, diclist1);
|
||
LogHelper.WriteLogInfo(item.wmsDocNo + "添加托盘明细:" + bo);
|
||
return true;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteLogInfo("添加托盘明细异常:" + ex.ToString(), LogHelper.Log_Type.ERROR);
|
||
return false;
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
|
||
|
||
|
||
[Route("agvCancleTask")]//WMS=>WCS取消任务
|
||
[HttpPost]
|
||
public RetMesModel agvCancleTask([FromBody]AgvCancleModel model)
|
||
{
|
||
RetMesModel retMes = new RetMesModel();
|
||
ResponseModel response = new ResponseModel();
|
||
ReturnRes res = new ReturnRes();
|
||
try
|
||
{
|
||
LogHelper.WriteLogInfo("agvCancleTask请求报文" + JsonHelper.SerializeObject(model));
|
||
|
||
if (model.data.header.Any())
|
||
{
|
||
foreach (CancleHeader item in model.data.header)
|
||
{
|
||
if (string.IsNullOrEmpty(item.groupTaskId) || string.IsNullOrEmpty(item.palletId))
|
||
{
|
||
res.returnDesc = "请求参数错误!";
|
||
res.returnCode = "0001";
|
||
res.returnFlag = "0";
|
||
}
|
||
else
|
||
{
|
||
DataTable orderdt = inOrderBLL.GetInOrderList(" and groupTaskId='"+item.groupTaskId+ "' and palletId='"+ item.palletId + "' and state=0");
|
||
if (orderdt != null && orderdt.Rows.Count > 0)
|
||
{
|
||
|
||
|
||
bool bo= inOrderBLL.UpInOrderList(orderdt.Rows[0]["id"].ToString(), "88", "");
|
||
if (bo)
|
||
{
|
||
res.returnCode = "0000";
|
||
res.returnDesc = "成功!";
|
||
res.returnFlag = "1";
|
||
}
|
||
else {
|
||
res.returnCode = "0001";
|
||
res.returnDesc = "取消失败!!";
|
||
res.returnFlag = "0";
|
||
}
|
||
|
||
}
|
||
else {
|
||
res.returnDesc = "订单不存在/订单已执行!";
|
||
res.returnCode = "0001";
|
||
res.returnFlag = "0";
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
|
||
}
|
||
}
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteLogInfo("agvCancleTask异常:" + ex.ToString(), LogHelper.Log_Type.ERROR);
|
||
res.returnDesc = "请求接口异常!";
|
||
res.returnCode = "0001";
|
||
res.returnFlag = "0";
|
||
}
|
||
response.returnnode = res;
|
||
retMes.Response = response;
|
||
string resinfo = JsonHelper.SerializeObject(retMes) ;
|
||
logBLL.InsertLog("WMS=>WCS取消任务接口", "agvCancleTask", "/api/TaskAPI/agvCancleTask", JsonHelper.SerializeObject(model), resinfo, 0, res.returnDesc, DateTime.Now);
|
||
return retMes;
|
||
}
|
||
|
||
|
||
|
||
[Route("agvBindPodAndBerth")]//WMS=>WCS绑定解绑
|
||
[HttpPost]
|
||
public RetMesModel agvBindPodAndBerth([FromBody] agvBindPodModel model)
|
||
{
|
||
RetMesModel retMes = new RetMesModel();
|
||
ResponseModel response = new ResponseModel();
|
||
ReturnRes res = new ReturnRes();
|
||
try
|
||
{
|
||
LogHelper.WriteLogInfo("请求报文" + JsonHelper.SerializeObject(model));
|
||
|
||
if (model.data.header.Any())
|
||
{
|
||
foreach (agvBindHeader item in model.data.header)
|
||
{
|
||
if (string.IsNullOrEmpty(item.indBind) || string.IsNullOrEmpty(item.palletId) || string.IsNullOrEmpty(item.positionCode))
|
||
{
|
||
res.returnDesc = "请求参数错误!";
|
||
res.returnCode = "0001";
|
||
res.returnFlag = "0";
|
||
}
|
||
else
|
||
{
|
||
bindCtnrAndBinReq reqModel = new bindCtnrAndBinReq();
|
||
reqModel.reqCode = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
|
||
reqModel.ctnrTyp = "1";//agv提供
|
||
reqModel.indBind = item.indBind;
|
||
string type = string.Empty;
|
||
string agvloc = inOrderBLL.GetLocation(" and wmsloc = '" + item.positionCode + "'",out type );
|
||
reqModel.stgBinCode = agvloc;
|
||
if (item.indBind == "1")
|
||
{
|
||
reqModel.ctnrCode = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
|
||
}
|
||
string reqstr = JsonHelper.SerializeObject(reqModel);
|
||
string resultStr = http.HttpPost_Old(bindCtnrAndBinUrl, reqstr);
|
||
//string resultStr = "{\"code\":\"0\",\"data\":\"\",\"interrupt\":false,\"reqCode\":\"66ee6\"}";
|
||
logBLL.InsertLog("WCS->AGV绑定解绑", "bindCtnrAndBin", bindCtnrAndBinUrl, reqstr, resultStr, 0, "", DateTime.Now);
|
||
if (!string.IsNullOrEmpty(resultStr))
|
||
{
|
||
bindCtnrAndBinResponse resModel = JsonHelper.DeserializeObject<bindCtnrAndBinResponse>(resultStr);
|
||
if (resModel.code == "0")
|
||
{
|
||
|
||
res.returnCode = "0000";
|
||
res.returnDesc = "绑定/解绑成功!";
|
||
res.returnFlag = "1";
|
||
}
|
||
else
|
||
{
|
||
res.returnCode = "0000";
|
||
res.returnDesc = "绑定/解绑失败!";
|
||
res.returnFlag = "1";
|
||
}
|
||
|
||
}
|
||
|
||
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteLogInfo("agvBindPodAndBerth异常:" + ex.ToString(), LogHelper.Log_Type.ERROR);
|
||
res.returnDesc = "请求接口异常!";
|
||
res.returnCode = "0001";
|
||
res.returnFlag = "0";
|
||
}
|
||
|
||
response.returnnode = res;
|
||
retMes.Response = response;
|
||
string resinfo = JsonHelper.SerializeObject(retMes);
|
||
logBLL.InsertLog("WMS=>WCS绑定解绑接口", "agvBindPodAndBerth", "/api/TaskAPI/agvBindPodAndBerth", JsonHelper.SerializeObject(model), resinfo, 0, res.returnDesc, DateTime.Now);
|
||
return retMes;
|
||
}
|
||
}
|
||
}
|