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<TN_WM_TASKBLL>().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<OperateResult> errOr = new List<OperateResult>();
|
foreach (string taskNo in arrTask)
|
{
|
or = BLLCreator.Create<TN_WM_TASKBLL>().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<OperateResult> errOr = new List<OperateResult>();
|
foreach (string taskNo in arrTask)
|
{
|
or = BLLCreator.Create<TN_WM_TASKBLL>().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);
|
});
|
}
|
|
/// <summary>
|
/// 获取正在执行中或者未执行的任务
|
/// </summary>
|
/// <param name="trayCode"></param>
|
/// <returns></returns>
|
[HttpGet]
|
public OperateResult GetTaskByTray(string trayCode)
|
{
|
try
|
{
|
return ValidateToken(t =>
|
{
|
List< TN_WM_TASKEntity> trayLocationEntity = BLLCreator.Create<TN_WM_TASKBLL>().GetTaskByTray(trayCode);
|
return OperateResult.Succeed("", trayLocationEntity);
|
});
|
}
|
catch (Exception ex)
|
{
|
return OperateResult.Error(ex.Message.ToString());
|
}
|
}
|
|
#region 完工回报 + ExecuteState
|
|
/// <summary>
|
/// AGV执行情况 完成时调用
|
/// </summary>
|
/// <param name="json">传入的Json数组</param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/4/8</history>
|
[HttpPost]
|
public string ExecuteState(JObject json)
|
{
|
try
|
{
|
var taskNos = json.Value<string>("taskNos");
|
var taskList = taskNos.Split(',').ToList();
|
var taskStateNo = json.Value<int>("stateNo");
|
var executeStates = new List<ExecuteStateDto>();
|
|
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<DapperDAL<TN_WM_TASKEntity>>().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<DapperDAL<TN_WM_TASKEntity>>().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<DapperDAL<TN_WM_TASKEntity>>().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
|
}
|
}
|