using HH.WMS.BLL; using HH.WMS.BLL.Basic; using HH.WMS.BLL.External; using HH.WMS.BLL.SysMgr; using HH.WMS.Common; using HH.WMS.Common.External; using HH.WMS.Common.Response; using HH.WMS.DAL; using HH.WMS.Entitys; using HH.WMS.Entitys.Common; using HH.WMS.Entitys.Dto; using HH.WMS.Utils; using HH.WMS.WebApi.App_Start; using HH.WMS.WebApi.Areas.Common.Controllers; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; namespace HH.WMS.WebApi.Areas.TaskMgr.Controllers { public class TaskController : BaseController { [HttpPost] public OperateResult GetList(SearchModel searchModel) { try { return ValidateToken(searchModel.TokenId, t => { var result = BLLCreator.Create().GetList(searchModel); return result; }); } catch (Exception ex) { return OperateResult.Error(ex.Message); } } [HttpGet] public OperateResult StartTask(string taskNos) { return ValidateToken(t => { OperateResult or; int successQty = 0; string[] arrTask = taskNos.Split(','); List errOr = new List(); foreach (string taskNo in arrTask) { or = BLLCreator.Create().StartTask(taskNo,t); if (or.Success) successQty++; else errOr.Add(or); } if (successQty == arrTask.Length) return OperateResult.Succeed(); else if (successQty == 0) return OperateResult.Error(errOr[0].Msg); else return OperateResult.Warning(errOr[0].Msg); }); } [HttpGet] public OperateResult EndTask(string taskNos) { return ValidateToken(t => { OperateResult or; int successQty = 0; string[] arrTask = taskNos.Split(','); List errOr = new List(); foreach (string taskNo in arrTask) { or = BLLCreator.Create().EndTask(taskNo,t); if (or.Success) successQty++; else errOr.Add(or); } if (successQty == arrTask.Length) return OperateResult.Succeed(); else if (successQty == 0) return OperateResult.Error(errOr[0].Msg); else return OperateResult.Warning(errOr[0].Msg); }); } /// /// 获取正在执行中或者未执行的任务 /// /// /// [HttpGet] public OperateResult GetTaskByTray(string trayCode) { try { return ValidateToken(t => { List< TN_WM_TASKEntity> trayLocationEntity = BLLCreator.Create().GetTaskByTray(trayCode); return OperateResult.Succeed("", trayLocationEntity); }); } catch (Exception ex) { return OperateResult.Error(ex.Message.ToString()); } } #region 完工回报 + ExecuteState /// /// AGV执行情况 完成时调用 /// /// 传入的Json数组 /// /// [HanHe(lt)] CREATED 2018/4/8 [HttpPost] public string ExecuteState(JObject json) { try { var taskNos = json.Value("taskNos"); var taskList = taskNos.Split(',').ToList(); var taskStateNo = json.Value("stateNo"); var executeStates = new List(); foreach (var taskNo in taskList) { executeStates.Add(new ExecuteStateDto { taskNo = taskNo, stateNo = taskStateNo }); } var result = WmsApiBLLRoute.ExecuteState(executeStates); try { var projectCode = System.Configuration.ConfigurationManager.AppSettings["projectCode"].ToString(); if (result.IndexOf("true") > 0 && executeStates[0].stateNo == 2 && projectCode == ProjectCodes.JuXingHaiNing) { var logPara = LogType.LogPara("调用巨星WMS接口反馈状态"); HH.WMS.Common.Log.Detail(logPara, "result:" + result + ",data.stateNo" + executeStates[0].stateNo.ToString() + ",projectCode:" + projectCode); HH.WMS.Common.Log.Detail(logPara, "调用巨星WebService反馈状态"); //更新是否传递给巨星任务完成 TN_WM_TASKEntity transportTask = DALCreator.Create>().GetSingleEntity(new { CN_S_TASK_NO = executeStates[0].taskNo }); string jxWebUrl = string.Empty; try { jxWebUrl = System.Configuration.ConfigurationManager.AppSettings["jxWebUrl"].ToString(); } catch (Exception ep) { HH.WMS.Common.Log.Detail(logPara, "异常:获取webconfig中jxWebUrl配置异常!"); return result; } WebServiceAgent jxAgent = new WebServiceAgent(jxWebUrl); object[] para = { "GreatStar", "HNWSRFID", transportTask.CN_S_TRAY_CODE, transportTask.CN_S_END_BIT, "", "hh" }; object returnObject = jxAgent.Invoke("SetAGVJobStatus", para); string returnFromJuxing = returnObject.ToString(); Log.Detail(logPara, "returnFromJuxing:" + returnObject.ToString()); //调用巨星接口回报托盘所入货位及库区 if (string.IsNullOrEmpty(returnFromJuxing)) { DALCreator.Create>().Update(new { CN_S_EXT1 = "Y" }, new { CN_S_TASK_NO = executeStates[0].taskNo }, null); HH.WMS.Common.Log.Detail(logPara, "调用巨星WMS反馈状态返回结果:" + "调用成功"); } else { DALCreator.Create>().Update(new { CN_S_EXT1 = "NeedSync" }, new { CN_S_TASK_NO = executeStates[0].taskNo }, null); HH.WMS.Common.Log.Detail(logPara, "调用巨星WMS反馈状态返回结果:" + returnFromJuxing); } } } catch (Exception ex) { HH.WMS.Common.Log.Detail(LogType.LogPara("调用巨星WMS接口反馈状态"), "调用巨星WMS反馈状态返回结果:" + ex.Message + ex.StackTrace); } return result; } catch (Exception ex) { return JsonConvert.SerializeObject(new { Success = false, Msg = ex.Message }); } } #endregion } }