2024-11-22 15:31:46 +08:00
|
|
|
|
using Epost.BLL;
|
|
|
|
|
using Epost.Common;
|
|
|
|
|
using Epost.Model;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
2024-12-03 10:55:54 +08:00
|
|
|
|
using System.Configuration;
|
2024-11-22 15:31:46 +08:00
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Net;
|
|
|
|
|
using System.Net.Http;
|
|
|
|
|
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-03 10:55:54 +08:00
|
|
|
|
[RoutePrefix("api/TaskAPI")]//WMS=>WCS
|
2024-11-22 15:31:46 +08:00
|
|
|
|
public class TaskAPIController : ApiController
|
|
|
|
|
{
|
|
|
|
|
InboundOrdersBLL inOrderBLL = new InboundOrdersBLL();
|
|
|
|
|
PalletinfoBLL palletBLL = new PalletinfoBLL();
|
|
|
|
|
Sys_operate_logBLL logBLL = new Sys_operate_logBLL();
|
2024-12-03 10:55:54 +08:00
|
|
|
|
|
|
|
|
|
HttpHelper http = new HttpHelper();
|
|
|
|
|
AgvHelper agv = new AgvHelper();
|
|
|
|
|
string bindCtnrAndBinUrl = ConfigurationManager.AppSettings["bindCtnrAndBinUrl"];
|
|
|
|
|
[Route("agvPutTask")]//WMS=>WCS生成任务接口
|
2024-11-22 15:31:46 +08:00
|
|
|
|
[HttpPost]
|
2024-12-02 13:53:56 +08:00
|
|
|
|
public RetMesModel agvPutTask([FromBody] TaskModel model)
|
2024-11-22 15:31:46 +08:00
|
|
|
|
{
|
2024-12-02 13:53:56 +08:00
|
|
|
|
RetMesModel retMes = new RetMesModel();
|
|
|
|
|
ResponseModel response = new ResponseModel();
|
2024-11-22 15:31:46 +08:00
|
|
|
|
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";
|
|
|
|
|
}
|
2024-12-02 13:53:56 +08:00
|
|
|
|
response.returnnode = res;
|
|
|
|
|
retMes.Response = response;
|
|
|
|
|
string resinfo = JsonHelper.SerializeObject(retMes) ;
|
2024-11-27 10:39:18 +08:00
|
|
|
|
logBLL.InsertLog("生成任务单", "agvPutTask", "/api/TaskAPI/agvPutTask", JsonHelper.SerializeObject(model), resinfo, 0, res.returnDesc, DateTime.Now);
|
2024-12-02 13:53:56 +08:00
|
|
|
|
return retMes;
|
2024-11-22 15:31:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-11-27 10:39:18 +08:00
|
|
|
|
|
2024-12-03 10:55:54 +08:00
|
|
|
|
[Route("agvCancleTask")]//WMS=>WCS取消任务
|
2024-11-27 10:39:18 +08:00
|
|
|
|
[HttpPost]
|
2024-12-02 13:53:56 +08:00
|
|
|
|
public RetMesModel agvCancleTask([FromBody]AgvCancleModel model)
|
2024-11-27 10:39:18 +08:00
|
|
|
|
{
|
2024-12-02 13:53:56 +08:00
|
|
|
|
RetMesModel retMes = new RetMesModel();
|
|
|
|
|
ResponseModel response = new ResponseModel();
|
2024-11-27 10:39:18 +08:00
|
|
|
|
ReturnRes res = new ReturnRes();
|
|
|
|
|
try
|
|
|
|
|
{
|
2024-11-28 11:35:38 +08:00
|
|
|
|
LogHelper.WriteLogInfo("agvCancleTask请求报文" + JsonHelper.SerializeObject(model));
|
2024-11-27 10:39:18 +08:00
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
2024-12-03 10:55:54 +08:00
|
|
|
|
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";
|
|
|
|
|
}
|
2024-11-27 10:39:18 +08:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
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";
|
|
|
|
|
}
|
2024-12-02 13:53:56 +08:00
|
|
|
|
response.returnnode = res;
|
|
|
|
|
retMes.Response = response;
|
|
|
|
|
string resinfo = JsonHelper.SerializeObject(retMes) ;
|
2024-12-03 10:55:54 +08:00
|
|
|
|
logBLL.InsertLog("WMS=>WCS取消任务接口", "agvCancleTask", "/api/TaskAPI/agvCancleTask", JsonHelper.SerializeObject(model), resinfo, 0, res.returnDesc, DateTime.Now);
|
2024-12-02 13:53:56 +08:00
|
|
|
|
return retMes;
|
2024-11-27 10:39:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-12-03 10:55:54 +08:00
|
|
|
|
[Route("agvBindPodAndBerth")]//WMS=>WCS绑定解绑
|
2024-11-27 10:39:18 +08:00
|
|
|
|
[HttpPost]
|
2024-12-02 13:53:56 +08:00
|
|
|
|
public RetMesModel agvBindPodAndBerth([FromBody] agvBindPodModel model)
|
2024-11-27 10:39:18 +08:00
|
|
|
|
{
|
2024-12-02 13:53:56 +08:00
|
|
|
|
RetMesModel retMes = new RetMesModel();
|
|
|
|
|
ResponseModel response = new ResponseModel();
|
2024-11-27 10:39:18 +08:00
|
|
|
|
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
|
|
|
|
|
{
|
2024-12-03 10:55:54 +08:00
|
|
|
|
bindCtnrAndBinReq reqModel = new bindCtnrAndBinReq();
|
|
|
|
|
reqModel.reqCode = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
|
|
|
|
|
reqModel.ctnrTyp = "1";//agv提供
|
|
|
|
|
reqModel.indBind = item.indBind;
|
2024-12-05 14:36:37 +08:00
|
|
|
|
string type = string.Empty;
|
|
|
|
|
string agvloc = inOrderBLL.GetLocation(" and wmsloc = '" + item.positionCode + "'",out type );
|
2024-12-03 10:55:54 +08:00
|
|
|
|
reqModel.stgBinCode = agvloc;
|
|
|
|
|
if (item.indBind == "1")
|
|
|
|
|
{
|
|
|
|
|
reqModel.ctnrCode = agvloc;
|
|
|
|
|
}
|
|
|
|
|
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")
|
|
|
|
|
{
|
2024-11-22 15:31:46 +08:00
|
|
|
|
|
2024-12-03 10:55:54 +08:00
|
|
|
|
res.returnCode = "0000";
|
|
|
|
|
res.returnDesc = "绑定/解绑成功!";
|
|
|
|
|
res.returnFlag = "1";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
res.returnCode = "0000";
|
|
|
|
|
res.returnDesc = "绑定/解绑失败!";
|
|
|
|
|
res.returnFlag = "1";
|
|
|
|
|
}
|
2024-11-22 15:31:46 +08:00
|
|
|
|
|
2024-12-03 10:55:54 +08:00
|
|
|
|
}
|
2024-11-27 10:39:18 +08:00
|
|
|
|
|
|
|
|
|
|
2024-12-03 10:55:54 +08:00
|
|
|
|
}
|
2024-11-27 10:39:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
2024-12-03 10:55:54 +08:00
|
|
|
|
}
|
2024-11-27 10:39:18 +08:00
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogHelper.WriteLogInfo("agvBindPodAndBerth异常:" + ex.ToString(), LogHelper.Log_Type.ERROR);
|
|
|
|
|
res.returnDesc = "请求接口异常!";
|
|
|
|
|
res.returnCode = "0001";
|
|
|
|
|
res.returnFlag = "0";
|
|
|
|
|
}
|
2024-12-02 13:53:56 +08:00
|
|
|
|
|
|
|
|
|
response.returnnode = res;
|
|
|
|
|
retMes.Response = response;
|
|
|
|
|
string resinfo = JsonHelper.SerializeObject(retMes);
|
2024-12-03 10:55:54 +08:00
|
|
|
|
logBLL.InsertLog("WMS=>WCS绑定解绑接口", "agvBindPodAndBerth", "/api/TaskAPI/agvBindPodAndBerth", JsonHelper.SerializeObject(model), resinfo, 0, res.returnDesc, DateTime.Now);
|
2024-12-02 13:53:56 +08:00
|
|
|
|
return retMes;
|
2024-11-27 10:39:18 +08:00
|
|
|
|
}
|
2024-11-22 15:31:46 +08:00
|
|
|
|
}
|
|
|
|
|
}
|