using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using yunneiWCS.EnumDefine;
|
using System.ServiceModel;
|
using yunneiWCS.ORM;
|
using yunneiWCS.DataAccess;
|
using yunneiWCS.ExtendFunction;
|
|
namespace yunneiWCS.SystemInteraction.tianyong
|
{
|
public class TianYongSystem
|
{
|
/// <summary>机器人上料 安全交互信号
|
///
|
/// </summary>
|
/// <param name="station">站点号</param>
|
/// <param name="OutOrIn">1=进2=出</param>
|
/// <param name="taskId">任务id</param>
|
/// <returns></returns>
|
public static bool safetySignal(string station, int OutOrIn, string agvTaskNo, string remark)
|
{
|
bool res = false;
|
|
//放开代码 【EditBy shaocx,2023-10-13】
|
/*
|
//注意:暂时写为true,以后要修改为正式的 【EditBy shaocx,2022-03-18】!!!!
|
res = true;
|
remark = "【注意:本次是模拟天永返回TRUE】" + remark;
|
return res;
|
//*/
|
|
try
|
{
|
var materialCode = "";
|
using (dbmodel mod = new dbmodel())
|
{
|
task sf = mod.task.FirstOrDefault(x => x.AgvTaskNo == agvTaskNo);
|
int quantity = 0;
|
if (sf != null)
|
{
|
if (sf.taskType == (int)taskType.缸体上线 || sf.taskType == (int)taskType.缸体下线直接去上线点)
|
{
|
VproductStock stock = mod.VproductStock.FirstOrDefault(x => x.positionName == sf.toPlace);
|
if (stock != null)
|
{
|
quantity = (int)stock.quantity;
|
}
|
}
|
materialCode = sf.materialCode;
|
}
|
else
|
{
|
WZ.Useful.Commons.LogTextHelper.WriteLine("TianYongSystem", "safetySignal", "根据AgvTaskNo:" + agvTaskNo + "获取任务为NULL");
|
return false;
|
}
|
int taskId = (int)sf.taskId;
|
using (yunneiWCS.tianyong.AutoServiceSoapClient ty = new yunneiWCS.tianyong.AutoServiceSoapClient())
|
{
|
res = ty.safetySignal(station, OutOrIn, taskId, quantity, materialCode);
|
}
|
if (res)
|
{
|
remark = "推送成功," + remark;
|
sf.isSendTotianyong = 1;
|
sf.isSendTotianyongName = "是";
|
sf.SendTotianyongTime = DateTime.Now;
|
sf.SendTotianyongRemark = remark;
|
|
}
|
else
|
{
|
remark = "推送失败," + remark;
|
sf.isSendTotianyong = 0;
|
sf.isSendTotianyongName = "否";
|
sf.SendTotianyongTime = DateTime.Now;
|
sf.SendTotianyongRemark = remark;
|
}
|
|
TianYongLogHandler.AddTianYongLog(mod, sf, remark, res, "safetySignal", station, OutOrIn.ToString(), taskId.ToString(), quantity.ToString(), materialCode);
|
|
var res_SaveChanges = mod.SaveChanges();
|
if (res_SaveChanges > 0)
|
{
|
|
}
|
else
|
{
|
throw new Exception("更新数据失败");
|
}
|
|
Form1.agvInfo = "agv上下料:返回信息:" + res;
|
string resString = res == true ? "允许" : "不允许";
|
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "safetySignal", "收到安全信号站点号:" +
|
station + " 1=进2=出:" + OutOrIn + " 任务ID:" + taskId + " 数量:" + quantity + " 物料编码:" + materialCode + " 天永返回状态:" + resString);
|
|
}
|
|
}
|
catch (Exception ex)
|
{
|
WZ.Useful.Commons.LogTextHelper.WriteLine("TianYongSystem", "safetySignal", ex.ToString());
|
|
}
|
return res;
|
}
|
|
/// <summary>给天永发信号,缸体上线去旁路工位、缸盖进入、缸盖出去、人工缸盖进入、人工缸盖出去,人工缸体进入,人工缸体出去 的 交互信号
|
///
|
/// </summary>
|
/// <param name="station">站点号</param>
|
/// <param name="taskId">任务id</param>
|
/// <returns></returns>
|
public static bool UpdateStoreByTaskID(dbmodel mod, task task, string station, int taskId, string _SendTotianyongRemark)
|
{
|
bool res = false;
|
try
|
{
|
//using (dbmodel mod = new dbmodel())
|
//{
|
task sf = mod.task.FirstOrDefault(x => x.taskId == taskId);
|
if (sf == null)
|
{
|
throw new Exception("根据任务ID" + taskId + "没有找到任务");
|
}
|
int quantity = 0;
|
|
taskType _taskType = (taskType)Enum.Parse(typeof(taskType), sf.taskType.ToString());
|
switch (_taskType)
|
{
|
case taskType.缸盖上线:
|
case taskType.缸盖下线直接去上线点:
|
case taskType.缸体上线:
|
case taskType.缸体下线直接去上线点:
|
case taskType.缸体上线去旁路工位: //增加任务类型 【EditBy shaocx,2022-04-23】
|
quantity = (int)task.quantity;//直接使用数量,而不是去查库存了 【EditBy shaocx,2022-05-04】
|
// VproductStock stock = null;
|
//stock = mod.VproductStock.FirstOrDefault(x => x.positionName == sf.toPlace);
|
//if (stock != null)
|
//{
|
// quantity = (int)stock.quantity;
|
//}
|
//else
|
//{
|
// throw new Exception("根据站点" + sf.toPlace + "获取库存为NULL");
|
//}
|
break;
|
case taskType.空托回库:
|
case taskType.余料回库:
|
quantity = 0;
|
break;
|
}
|
|
var simulatorNote = "";
|
if (!MyExtendHelper.IsAllowSimulatorHandle(task))
|
{
|
simulatorNote = "[正式环境]";
|
using (yunneiWCS.tianyong.AutoServiceSoapClient ty = new yunneiWCS.tianyong.AutoServiceSoapClient())
|
{
|
res = ty.UpdateStoreByTaskID(taskId, quantity);
|
}
|
}
|
else
|
{
|
simulatorNote = "[模拟环境]";
|
res = true;//模拟写死
|
}
|
if (res)
|
{
|
sf.isSendTotianyong = 1;
|
sf.isSendTotianyongName = "是";
|
sf.SendTotianyongTime = DateTime.Now;
|
sf.SendTotianyongRemark = simulatorNote + "推送成功," + _SendTotianyongRemark;
|
// mod.SaveChanges();//不再更新,因为他上层方法已经更新了
|
}
|
else
|
{
|
sf.isSendTotianyong = 0;
|
sf.isSendTotianyongName = "否";
|
sf.SendTotianyongTime = DateTime.Now;
|
sf.SendTotianyongRemark = simulatorNote + "推送失败," + _SendTotianyongRemark;
|
// mod.SaveChanges();//不再更新,因为他上层方法已经更新了
|
}
|
TianYongLogHandler.AddTianYongLog(mod, sf, sf.SendTotianyongRemark, res, "UpdateStoreByTaskID", "", "", taskId.ToString(), quantity.ToString(), "");
|
|
|
|
string resString = res == true ? "允许" : "不允许";
|
WZ.Useful.Commons.LogTextHelper.WriteLine("TianYongSystem", "UpdateStoreByTaskID", "收到安全信号站点号:" +
|
station + " 任务ID:" + taskId + " 天永返回状态:" + resString);
|
|
//}
|
|
}
|
catch (Exception ex)
|
{
|
WZ.Useful.Commons.LogTextHelper.WriteLine("TianYongSystem", "UpdateStoreByTaskID", ex.ToString());
|
throw ex;
|
}
|
return res;
|
}
|
}
|
}
|