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
{
///
/// 第三方调用的接口
///
[RoutePrefix("api")]
public class WmsController : System.Web.Http.ApiController
{
///
/// 创建任务
///
///
///
/*[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();
crossLegList.Add("FUB");
crossLegList.Add("EMB");
var stowList = new List();
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;
}
///
/// 取消任务
///
///
///
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;
}
///
/// 询问设备是否可放
///
///
///
public WMSResponse canIn(string stnNo) {
WMSResponse result = new WMSResponse();
// 询问设备是否可放
if (HanAo.CanIn(stnNo))
{
result.errCode = 0;
}
else {
result.errCode = 1;
result.errMsg = "设备不可放";
}
return result;
}
///
/// 询问设备是否可取
///
///
///
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; }
}
}
}