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