|
using Newtonsoft.Json;
|
using System.Web.Http;
|
using static HH.WCS.Mobox3.ZS7412.api.ApiHelper;
|
using static HH.WCS.Mobox3.ZS7412.api.ApiModel;
|
using static HH.WCS.Mobox3.ZS7412.api.OtherModel;
|
using HH.WCS.Mobox3.ZS7412.dispatch;
|
using HH.WCS.Mobox3.ZS7412.wms;
|
using Newtonsoft.Json.Linq;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using HH.WCS.Mobox3.ZS7412.util;
|
using HH.WCS.Mobox3.ZS7412.models;
|
|
namespace HH.WCS.Mobox3.ZS7412.api
|
{
|
/// <summary>
|
/// 第三方调用的接口
|
/// </summary>
|
[RoutePrefix("api")]
|
public class WmsController : System.Web.Http.ApiController
|
{
|
|
/// <summary>
|
/// 创建任务
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
/*[Route("AddTask")]*/
|
public WMSResponse AddTask(AddTaskInfo model)
|
{
|
LogHelper.Info("CreateTask Request:" + JsonConvert.SerializeObject(model), "ZS7412");
|
WMSResponse result = new WMSResponse() {
|
taskNo = model.taskNo,
|
};
|
int car_type = 0;
|
try
|
{
|
var task = wms.WCSHelper.GetTaskBySrcNo(model.taskNo);
|
if (task == null)
|
{
|
var crossLegList = new List<string>();
|
crossLegList.Add("FUB");
|
crossLegList.Add("EMB");
|
|
|
var stowList = new List<string>();
|
stowList.Add("LKZC");
|
stowList.Add("IN");
|
|
if (model.start != null && !model.start.Equals("") && model.end != null && !model.end.Equals(""))
|
{
|
foreach (var item in crossLegList)
|
{
|
if (model.start.Contains(item) || model.end.Contains(item))
|
{
|
car_type = 1;
|
}
|
}
|
foreach (var item in stowList)
|
{
|
if (model.start.Contains(item) || model.end.Contains(item))
|
{
|
car_type = 2;
|
}
|
}
|
}
|
else {
|
result.errCode = 1;
|
result.errMsg = "起点和终点不能为空";
|
}
|
if (car_type == 0) {
|
result.errCode = 1;
|
result.errMsg = "未匹配到相应车型";
|
}
|
|
|
/*if (model.start.Contains("F-ZC-AGV"))
|
{
|
// 2F-ZC-AGV
|
string startStr = model.start.Substring(0,6);
|
string endStr = model.start.Substring(6);
|
TrayStat trayStat = WCSHelper.GetTrayStat(startStr + 1 + "-" + endStr);
|
|
if (trayStat.TRAY_NUM <= 0) {
|
result.errCode = 2;
|
result.errMsg = "创建搬运空托盘任务失败";
|
return result;
|
}
|
|
model.start = startStr + trayStat.TRAY_NUM +"-"+ endStr;
|
trayStat.TRAY_NUM = trayStat.TRAY_NUM - 1;
|
WCSHelper.updateTrayStatNum(trayStat);
|
}*/
|
if (model.end.Contains("F-ZC-AGV")) {
|
string startStr = model.end.Substring(0, 6);
|
string endStr = model.end.Substring(6);
|
model.end = startStr + 1 + "-" + endStr;
|
}
|
|
// 创建任务
|
var wcsTask = new WCSTask
|
{
|
S_OP_CODE = model.taskNo,
|
S_OP_NAME = model.taskType,
|
S_CODE = wms.WCSHelper.GenerateTaskNo(),
|
S_TYPE = model.taskType, // 任务类型
|
N_PRIORITY = int.Parse(model.priority), // 优先级
|
S_START_LOC = model.start, // 起点货位
|
S_END_LOC = model.end, // 终点货位
|
S_SCHEDULE_TYPE = "国自", // 调度类型
|
N_SCHEDULE_TYPE = 2,
|
T_START_TIME = DateTime.Now,
|
S_CNTR_CODE = model.cntrCode,
|
S_EQ_NO = car_type.ToString(),
|
};
|
if (wms.WCSHelper.CreateTask(wcsTask))
|
{
|
result.errCode = 0;
|
result.errMsg = "创建任务成功";
|
}
|
else
|
{
|
result.errCode = 1;
|
result.errMsg = "创建任务失败";
|
}
|
}
|
else
|
{
|
result.errCode = 1;
|
result.errMsg = "任务已存在,不可重复创建";
|
}
|
}
|
catch (Exception ex)
|
{
|
Console.WriteLine(ex.Message);
|
result.errCode = 1;
|
result.errMsg = "创建任务失败";
|
}
|
LogHelper.Info("CreateTask response:" + JsonConvert.SerializeObject(result), "ZS7412");
|
return result;
|
}
|
|
/// <summary>
|
/// 取消任务
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
public WMSResponse CancelTask(CancelTaskInfo model)
|
{
|
LogHelper.Info("CancelTask Request:" + JsonConvert.SerializeObject(model), "ZS7412");
|
WMSResponse result = new WMSResponse();
|
try {
|
var task = wms.WCSHelper.GetTaskBySrcNo(model.taskNo);
|
if (task != null)
|
{
|
int orderId;
|
if (task.N_B_STATE < 3 && int.TryParse(task.S_EQ_TASK_CODE, out orderId))
|
{
|
//修改状态为取消
|
wms.WCSHelper.UpdateStatus(task.S_CODE, "取消");
|
//给车子发送取消请求
|
GZRobot.CancelOrder(orderId);
|
//同时添加一条动作记录
|
wms.WCSHelper.AddActionRecord(task.S_CODE, 7, null, null);
|
result.errCode = 0;
|
result.errMsg = "任务取消,已经发送给小车";
|
}
|
else
|
{
|
result.errCode = 1;
|
result.errMsg = "任务已结束";
|
}
|
}
|
else
|
{
|
result.errCode = 1;
|
result.errMsg = "任务不存在";
|
}
|
}
|
catch (Exception ex)
|
{
|
Console.WriteLine(ex.Message);
|
}
|
LogHelper.Info("CancelTask response:" + JsonConvert.SerializeObject(result), "ZS7412");
|
return result;
|
}
|
|
/// <summary>
|
/// 询问设备是否可放
|
/// </summary>
|
/// <param name="stnNo"></param>
|
/// <returns></returns>
|
public WMSResponse canIn(string stnNo) {
|
WMSResponse result = new WMSResponse();
|
// 询问设备是否可放
|
if (HanAo.CanIn(stnNo))
|
{
|
result.errCode = 0;
|
}
|
else {
|
result.errCode = 1;
|
result.errMsg = "设备不可放";
|
}
|
return result;
|
}
|
|
/// <summary>
|
/// 询问设备是否可取
|
/// </summary>
|
/// <param name="stnNo"></param>
|
/// <returns></returns>
|
public WMSResponse canOut(string stnNo)
|
{
|
WMSResponse result = new WMSResponse();
|
|
//询问设备是否可取
|
if (HanAo.CanOut(stnNo))
|
{
|
result.errCode = 0;
|
}
|
else
|
{
|
result.errCode = 1;
|
result.errMsg = "设备不可取";
|
}
|
return result;
|
}
|
|
public class AddTaskInfo {
|
public string cntrCode { get; set; }
|
public string taskType { get; set; }
|
public string taskNo { get; set; }
|
public string start { get; set; }
|
public string end { get; set; }
|
public string priority { get; set; }
|
}
|
|
public class CancelTaskInfo {
|
public string taskNo { get; set; }
|
}
|
|
public class WMSResponse {
|
public int errCode { get; set; }
|
public string errMsg { get; set; }
|
public string taskNo { get; set; }
|
}
|
}
|
}
|