using System; using System.Collections.Generic; using System.Linq; using SqlSugar; using WCS.Data; using WCS.Data.Models; using WCS.PLC; using WCS.PLC.Model.Equipment; namespace WCS.Workflow { public class Rgv01 : Base_DualRgv { #region Constructor public Rgv01(string rgvPosOne, string rgvPosTwo) : base(rgvPosOne, rgvPosTwo) { } #endregion; #region Method #region RGV任务完成 protected override void Rgv_Complete() { base.Rgv_Complete(); } #endregion; /// /// 写入任务到穿梭车 /// /// Rgv写入信号 protected override void WriteTaskToRgv(WCSWriteToRgvSignal rgvwrite) { var task = Current.TaskSet.FirstOrDefault(v => v.TASK_NO == rgvwrite.Tasknum); if (rgvwrite.TaskType == 1 && task.TASK_COMTYPE == 1) { if (Rgv.DB521_Res2_2 > 0) { throw new Exception(string.Format("任务[{0}]外检高度PLC值[DB521_Res2_2]未清零,不能执行上料动作。", rgvwrite.Tasknum)); } //写入是否冰箱标识 rgvwrite.RES1 = string.IsNullOrWhiteSpace(task.TASK_ITEM2) ? 0 : Convert.ToInt32(task.TASK_ITEM2); } //获取高度 if (rgvwrite.TaskType == 2 && task.TASK_COMTYPE == 1) { if (Rgv.DB521_Res2_2 > 0) { string res2 = Rgv.DB521_Res2_2.ToString(); SugarBase.DB.Updateable(it => new WCS_TASK() { TASK_ITEM1 = res2 }) .Where(it => it.TASK_NO == task.TASK_NO) .ExecuteCommand(); } else { throw new Exception(string.Format("任务[{0}]外检高度PLC未给值。", rgvwrite.Tasknum)); } } base.WriteTaskToRgv(rgvwrite); } #region 穿梭车上料条件检测 protected override bool Rgv_OnMatCheckTask(WCS_TASK onTask, RgvPosEnum rgvPos, string onMatSition) { bool result = true; if (onMatSition != "1180" && onMatSition != "1190") { var rgvoutininfo = Current.WCS_RGVOutInInfoSet.FirstOrDefault(v => v.RGVOUTIN_CONVNO == onMatSition); var cv = ConveyorHelper.GetConveyorSignal(rgvoutininfo.PLCNAME, onMatSition); if (cv.DB521_H_Outside) { result = false; } } return result; //return base.Rgv_OnMatCheckTask(onTask, rgvPos, onMatSition); } #endregion; #region 穿梭车下料条件检测 protected override bool Rgv_UpMatCheckTask_QueryEndPos(WCS_TASK upTask, RgvPosEnum rgvPos, string upMatSition) { return base.Rgv_UpMatCheckTask_QueryEndPos(upTask, rgvPos, upMatSition); } #endregion; #region 其它功能 protected override void Rgv_OtherExtend() { } #endregion; /// /// RGV外检超高记录信息 /// internal void RgvResetTask() { try { //超高报警 //if (Rgv.DB521_Res1_2 == 1) //{ // //调用sp完成任务 // TryCachHelper.TryExecute((db) => // { // BaseWorkflow.AddLedErrorMsg(db, RgvName, "货物超高", Rgv.DB521_TaskID_2); // //var task = db.Queryable().First(v => v.TASK_NO == Rgv.DB521_TaskID_2 && (v.TASK_COMTYPE == 1 || v.TASK_COMTYPE == 4 || v.TASK_COMTYPE == 5)); // //if (task != null) // //{ // // if (task.TASK_RGVNO == RgvName || // // task.TASK_WKSTATUS == (int)WkStatus.RGV上料执行 || // // task.TASK_WKSTATUS == (int)WkStatus.输送机执行 || // // task.TASK_WKSTATUS == (int)WkStatus.RGV下料执行) // // { // // db.Updateable(it => new WCS_TASK() { TASK_WKSTATUS = 0, TASK_RGVNO = "", TASK_EDITUSERNO = "WCS", TASK_EDITDATETIME = DateTime.Now }) // // .Where(it => it.TASK_NO == task.TASK_NO) // // .ExecuteCommand(); // // //添加明细 // // string msg = string.Format("穿梭车[{0}]任务[{1}]外检故障,重置任务。", RgvName, task.TASK_NO); // // CommonData.AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDNEXT, msg); // // } // //} // }); //} } catch (Exception ex) { Log4netHelper.Logger_Error.ErrorFormat(ex.ToString()); } } #endregion; } }