Files
T-DAS/Epost.TestToolsWeb/Controllers/TaskAPIController.cs
2024-12-12 18:27:10 +08:00

371 lines
18 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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