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

371 lines
18 KiB
C#
Raw Normal View History

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
}
}