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 { /// 机器人上料 安全交互信号 /// /// /// 站点号 /// 1=进2=出 /// 任务id /// 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; } /// 给天永发信号,缸体上线去旁路工位、缸盖进入、缸盖出去、人工缸盖进入、人工缸盖出去,人工缸体进入,人工缸体出去 的 交互信号 /// /// /// 站点号 /// 任务id /// 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; } } }