using HanHe.Message;
using HH.WCS.Mobox3.ZhongCeJinTan.dispatch;
using HH.WCS.ZhongCeJinTan.api;
using HH.WCS.ZhongCeJinTan.process;
using HH.WCS.ZhongCeJinTan.util;
using HH.WCS.ZhongCeJinTan.wms;
using Newtonsoft.Json;
using S7.Net.Types;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Web.Services.Description;
using static HH.WCS.ZhongCeJinTan.api.ApiModel;
using static HH.WCS.ZhongCeJinTan.wms.WcsModel;
namespace HH.WCS.ZhongCeJinTan.dispatch
{
///
/// wcs任务相关
///
internal class WcsTask
{
private static readonly HttpHelper apiHelper = new HttpHelper();
private static readonly string baseUrl = Settings.WcsApiAddres;
///
/// 生成任务
///
///
///
public static bool WcsTaskEntity(WMSTask mst, CntrItemRel Item = null)
{
string Type = "";
string TrayType = "";
string Traycode = mst.S_CNTR_CODE;
var isFu = "0";
var cntr = ContainerHelper.GetCntr(Traycode);
if (cntr!=null)
{
if (cntr.N_DETAIL_COUNT>0)
{
isFu = "1";
}
}
var workFlow = TaskHelper.selectWorkFlowByType(mst.N_TYPE.ToString(), mst.TOOLSTYPE);
if (workFlow != null)
{
if (workFlow.INOROUT.Contains("入库"))
{
Type = "1";
}
if (workFlow.INOROUT.Contains("出库"))
{
Type = "2";
var count = TaskHelper.GetConnectionTask(mst.S_END_LOC);
if (count>=2)
{
return false;
}
}
}
if (mst.S_CNTR_CODE.Contains("KJZ"))
{
TrayType = "KJZ";
}
var interact = new
{
requestPk = mst.S_CODE,//任务号
contNo = Traycode,//托盘号
contType = TrayType,//托盘类型
trkType = Type,//任务类型
trkPrty = mst.N_PRIORITY,//任务优先级
frmPos = mst.S_START_LOC,//起始位置
toPos = mst.S_END_LOC,//目的地
isFull = isFu,//空托 满托
groupNo = Item?.S_ITEM_NAME,//搬送组号
clientCode = "WMS",//操作人
operationTime = DateTime.Now.ToString()//操作时间
};
LogHelper.Info("Wcs立库下发任务 地址信息:" + baseUrl + "receive", "立库下发任务");
LogHelper.Info("Wcs立库下发任务 参数信息:" + JsonConvert.SerializeObject(interact), "立库下发任务");
var result = apiHelper.Post(baseUrl + "receive", JsonConvert.SerializeObject(interact));
LogHelper.Info("Wcs立库下发任务 返回信息:" + JsonConvert.SerializeObject(result), "立库下发任务");
if (!string.IsNullOrEmpty(result))
{
var res = JsonConvert.DeserializeObject(result);
if (res.code == "0")
{
TaskHelper.UpdateStatus(mst, "已推送");
return true;
}
else
{
return false;
}
}
else
{
LogHelper.Info("Wcs立库下发任务 返回信息为空", "立库下发任务");
return false;
}
}
///
/// 取消任务
///
///
public static bool WcsCancellTask(WMSTask mst)
{
var interact = new
{
requestPk = mst.S_CODE,//请求pk
contNo = mst.S_CNTR_CODE,//托盘号
clientCode = "",
reqTime = DateTime.Now.ToString()//操作时间
};
LogHelper.Info("Wcs立库取消任务 地址信息:" + baseUrl + "cancel", "立库取消任务");
LogHelper.Info("Wcs立库取消任务 参数信息:" + JsonConvert.SerializeObject(interact), "立库取消任务");
var result = apiHelper.Post(baseUrl + "cancel", JsonConvert.SerializeObject(interact));
LogHelper.Info("Wcs立库取消任务 返回信息:" + JsonConvert.SerializeObject(result), "立库取消任务");
if (!string.IsNullOrEmpty(result))
{
var res = JsonConvert.DeserializeObject(result);
if (res.code == "0")
{
return true;
}
else
{
return false;
}
}
else {
LogHelper.Info("Wcs立库取消任务 返回信息为空", "立库取消任务");
return false;
}
}
///
/// 输送线是否有货查询
///
///
public static bool WcsCvstate(WMSTask aloneWcsTask)
{
if (!aloneWcsTask.S_TYPE.Contains("出库"))
{
return false;
}
var safety = Settings.safetyLocations.Where(a => a.Area.Contains(aloneWcsTask.S_START_AREA)).FirstOrDefault();
if (safety==null)
{
return false;
}
if (safety.type!=1)
{
return false;
}
var interact = new
{
requestPk = aloneWcsTask.S_CODE,//请求编号
clientCode = "WMS",// 操作人 如WMS/MES等
stnNo = aloneWcsTask.S_START_LOC,//接驳位
reqTime = DateTime.Now.ToString()//操作时间
};
LogHelper.Info("Wcs立库输送线是否有货 地址信息:" + baseUrl + "CV-state", "立库");
LogHelper.Info("Wcs立库输送线是否有货 参数信息:" + JsonConvert.SerializeObject(interact), "立库");
var result = apiHelper.Post(baseUrl + "CV-state", JsonConvert.SerializeObject(interact));
LogHelper.Info("Wcs立库输送线是否有货 返回信息:" + JsonConvert.SerializeObject(result), "立库");
if (!string.IsNullOrEmpty(result))
{
var res = JsonConvert.DeserializeObject(result);
if (res.status == "1")
{
return true;
}
else
{
return false;
}
}
else
{
LogHelper.Info("Wcs立库输送线是否有货 返回信息为空", "立库");
return false;
}
}
///
/// Wcs任务下发
///
///
///
internal static WcsWarningReurn ZcWcsInWorkArea(WcsOperateTaskParme1 model)
{
var result = new WcsWarningReurn();
var newDb = new SqlHelper