using HH.WMS.BLL;
using HH.WMS.BLL.Basic;
using HH.WMS.BLL.External;
using HH.WMS.BLL.Pda;
using HH.WMS.Common;
using HH.WMS.Common.External;
using HH.WMS.Common.Response;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.Dto;
using HH.WMS.Entitys.Entitys;
using HH.WMS.Entitys.Entitys.Mes;
using HH.WMS.Entitys.External;
using HH.WMS.WebApi.App_Start;
using HH.WMS.WebApi.Areas.Common.Controllers;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace HH.WMS.WebApi.Controllers
{
///
/// 贵轮项目接口
///
public class GLWmsApiController : BaseController
{
#region 入作业区 + GLInWorkArea
///
/// 入作业区所有接口
///
///
[HttpPost]
public string InWorkArea(dynamic jsonData)
{
var logPara = LogType.LogPara("入作业区");
Log.Detail(logPara, "GLInWorkArea:入作业区传递参数:" + jsonData.ToString());
List inWorkAreaEntitys = JsonConvert.DeserializeObject>(jsonData.ToString());
//调用入作业区方法
var result = BLLCreator.Create().InWorkArea(inWorkAreaEntitys);
return JsonConvert.SerializeObject(result);
}
#endregion
#region 出作业区 + GLOutWorkArea
///
/// 出作业区所有接口
///
///
[HttpPost]
public string OutWorkArea(dynamic jsonData)
{
var logPara = LogType.LogPara("出作业区");
Log.Detail(logPara, "GLOutWorkArea:出作业区传递参数:" + jsonData.ToString());
List OutWorkAreaEntitys = JsonConvert.DeserializeObject>(jsonData.ToString());
foreach (var entity in OutWorkAreaEntitys)
{
//物料编码不为空时 才组织Data
if (!string.IsNullOrEmpty(entity.itemCode))
{
var item = BLLCreator.Create().GetItem(entity.itemCode);
List DataList = new List();
DataList.Add(new OutWorkDataEntity
{
ItemCode = entity.itemCode,
ItemName = item == null ? "" : item.CN_S_ITEM_NAME,
ItemState = "合格"
});
entity.Data = DataList;
}
}
//调用出作业区方法
var result = BLLCreator.Create().OutWorkArea(OutWorkAreaEntitys);
return JsonConvert.SerializeObject(result);
}
#endregion
#region 完工回报 + GLExecuteState
///
/// AGV执行情况 完成时调用
///
/// 传入的Json数组
///
[HttpPost]
public string ExecuteState(ExecuteStateDto data)
{
var result = WmsApiBLLRoute.ExecuteState(data);
try
{
var logPara = LogType.LogPara("完工回报");
Log.Detail(logPara, "GLExecuteState:完工回报:" + JsonConvert.SerializeObject(data));
//判断是否需要做进一步操作
TN_WM_TASKEntity comTask = BLLCreator.Create>().GetSingleEntity(new { CN_S_TASK_NO = data.taskNo });
if (comTask != null)
{
#region 反馈MES
if (comTask.CN_S_STATE == Constants.State_Completed)
{
TN_WM_B_TRAY_ITEM_MSTEntity trayItem = BLLCreator.Create>().GetSingleEntity(new { CN_S_TRAY_CODE = comTask.CN_S_TRAY_CODE });
AGV_Storage_Information mesModel = new AGV_Storage_Information();
mesModel.TaskNo = comTask.CN_S_TASK_NO;
mesModel.LoadNo = "";
if (trayItem != null)
{
mesModel.MaterielCode = trayItem.CN_S_ITEM_CODE;
mesModel.MaterielName = trayItem.CN_S_ITEM_NAME;
mesModel.Quantity = trayItem.CN_F_QUANTITY;
}
mesModel.StorageTime = comTask.CN_T_END;
mesModel.LocationName = comTask.CN_S_END_BIT;
mesModel.HasBeenReceived = "";
mesModel.Lock = 0;
OperateResult or = BLLCreator.CreateMiddleDapper().Add(mesModel);
Log.Detail(logPara, "GLExecuteState:任务号:" + comTask.CN_S_TASK_NO + " 反馈MES结果:" + JsonConvert.SerializeObject(or));
if (!or.Success)
{
Log.Detail(logPara, "GLExecuteState:反馈MES失败:" + JsonConvert.SerializeObject(or));
}
}
#endregion
}
}
catch (Exception ex)
{
Log.Detail(LogType.LogPara("完工回报接口反馈状态"), "接口反馈状态返回结果:" + ex.Message + ex.StackTrace);
}
return result;
}
#endregion
#region 叠托反馈
///
/// 叠托反馈
///
///
[HttpPost]
public ReturnResult SetLocationTray(JObject obj)
{
ReturnResultCount rc = new ReturnResultCount();
try
{
var locationCode = obj.Value("locationCode");
var logPara = LogType.LogPara("叠托反馈");
Log.Detail(logPara, "SetLocationTray:叠托反馈传参:" + locationCode);
OperateResult or = BLLCreator.Create().SetLocationTray(locationCode);
if (or.Success)
{
rc.success = true;
rc.errMsg = "";
}
else
{
rc.success = false;
rc.errMsg = or.Msg;
}
return rc;
}
catch (Exception ex)
{
Log.Info("SetLocationTray异常:====>", ex.Message + ex.StackTrace);
rc.success = false;
rc.errMsg = ex.Message + ex.StackTrace;
return rc;
}
}
#endregion
#region 获取叠托数
///
/// 获取叠托数
///
///
[HttpPost]
public ReturnResultCount GetLocationTrayCount(JObject obj)
{
ReturnResultCount rc = new ReturnResultCount();
try
{
var locationCode = obj.Value("locationCode");
var logPara = LogType.LogPara("获取叠托数");
Log.Detail(logPara, "GetLocationTrayCount:获取叠托数传参:" + locationCode);
if (string.IsNullOrEmpty(locationCode))
{
rc.success = false;
rc.errMsg = "参数有误!";
}
else
{
List traylocationList = BLLCreator.Create>().GetList(new { CN_S_LOCATION_CODE = locationCode });
rc.success = true;
rc.trayCount = traylocationList.Count.ToString();
}
return rc;
}
catch (Exception ex)
{
Log.Info("GetLocationTrayCount异常:====>", ex.Message + ex.StackTrace);
rc.success = false;
rc.errMsg = ex.Message + ex.StackTrace;
return rc;
}
}
#endregion
#region 返回参数实体
public class ReturnResult
{
public bool success { get; set; }
public string errMsg { get; set; }
}
public class ReturnResultCount : ReturnResult
{
//托盘数量
public string trayCount { get; set; }
}
#endregion
}
}