public static ScriptOutput TimeDesc(ScriptInput si) { DateTime time1 = Convert.ToDateTime(si.GetValue("time1")); DateTime time2 = Convert.ToDateTime(si.GetValue("time2")); ScriptOutput so = new ScriptOutput(); TimeSpan ts = time1 - time2; so.SetValue("TotalHours", ts.TotalHours); so.SetValue("TotalMilliseconds", ts.TotalMilliseconds); so.SetValue("TotalMinutes", ts.TotalMinutes); so.SetValue("TotalSeconds", ts.TotalSeconds); so.SetValue("TotalDays", ts.TotalDays); return(so); }
public static ScriptOutput SetBoolValue(ScriptInput idx) { ScriptOutput so = new ScriptOutput(); so.SetValue("result", Convert.ToBoolean(idx.GetValue("value"))); return(so); }
public static ScriptOutput GetNowTime(ScriptInput si) { ScriptOutput so = new ScriptOutput(); so.SetValue("NowTime", DateTime.Now); return(so); }
public static ScriptOutput AddFloat(ScriptInput idx) { ScriptOutput so = new ScriptOutput(); so.SetValue("result", Convert.ToDouble(idx.GetValue("f1")) + Convert.ToDouble(idx.GetValue("f2"))); idx.Write("AddFloat结果:" + so.GetValue("result").ToString()); return(so); }
public static ScriptOutput AddInt(ScriptInput idx) { ScriptOutput so = new ScriptOutput(); so.SetValue("result", (Convert.ToInt32(idx.GetValue("d1")) + Convert.ToInt32(idx.GetValue("d2")))); idx.Write("AddInt结果:" + so.GetValue("result").ToString()); return(so); }
public static ScriptOutput Add(ScriptInput scriptInput) { int add1 = Convert.ToInt32(scriptInput.GetValue("add1")); int add2 = Convert.ToInt32(scriptInput.GetValue("add2")); ScriptOutput scriptOutput = new ScriptOutput(); scriptOutput.SetValue("result", add1 + add2); return(scriptOutput); }
/// <summary> /// 初始化 /// </summary> protected override void Init(IScriptLayout ml) { if (ml.IPropertys.Count > 0) { foreach (var item in ml.IPropertys) { ScriptOutput so = new ScriptOutput(); so.SetValue(item.Name, item.Value); manager.SetValue(item.Id, so); } } }
/// <summary> /// 设置值 /// </summary> /// <param name="ib"></param> /// <param name="sm"></param> /// <returns></returns> protected static IItemBox DoFunction(ItemBox itembox, ScriptObjectManager sm, WriteStreamCallBack wrs) { LineItemBox ib = itembox as LineItemBox; if (ib.BoxType == ItemBoxEnum.IF) { ScriptInput si = new ScriptInput(); //si.WriteStream += wrs; foreach (var item in ib.InputDatas) { if (item.PIEnum != ParaItemEnum.OUTPUT && item.PIEnum != ParaItemEnum.INPUT && item.PIEnum != ParaItemEnum.NULL) { si.SetValue(item.Name, getValue(item as ParatItem, sm)); } } if (Convert.ToBoolean(si.GetFirst())) { return(ib.Next(0)); } else { return(ib.Next(1)); } } else if (ib.BoxType == ItemBoxEnum.SET) { ScriptOutput so = new ScriptOutput(); so.SetValue(ib.InputDatas[1].Name, getValue(ib.InputDatas[1] as ParatItem, sm)); //so.SetValue(ib.InputDatas[1].Name, ib.InputDatas[1].Value); sm.SetValue(ib.Id, so); return(ib.Next(0)); } else { ScriptInput si = new ScriptInput(); si.WriteStream += wrs; foreach (var item in ib.InputDatas) { if (item.PIEnum != ParaItemEnum.OUTPUT && item.PIEnum != ParaItemEnum.INPUT && item.PIEnum != ParaItemEnum.NULL) { si.SetValue(item.Name, getValue(item as ParatItem, sm)); } } ScriptOutput so = (ib as ItemBox).DoScriptFunction(si); if (so != null) { sm.SetValue(ib.Id, so); } return(ib.Next(0)); } }
/// <summary> /// 获取whilebox的迭代值 /// </summary> /// <param name="whilebox"></param> /// <param name="startidx"></param> /// <returns></returns> protected int GetWhileBoxIdx(ItemBox whilebox, int startidx) { int returnindex = 0; ScriptOutput soutidx = manager.GetValue(whilebox.Id); if (soutidx == null) { ScriptOutput whileboxidx = new ScriptOutput(); whileboxidx.SetValue("Idx", startidx); manager.SetValue(whilebox.Id, whileboxidx); returnindex = startidx; } else { int index = (int)soutidx.GetValue("Idx"); manager.GetValue(whilebox.Id).SetValue("Idx", index++); returnindex = index++; soutidx.SetValue("Idx", returnindex); } whilebox.OutDatas[0].Value = returnindex; SetValue(whilebox.OutDatas[0] as ParatItem); return(returnindex); }
public static ScriptOutput EqualDouble(ScriptInput si) { double int1 = Convert.ToDouble(si.GetValue("float1")); double int2 = Convert.ToDouble(si.GetValue("float2")); string option = Convert.ToString(si.GetValue("option")); bool result = false; switch (option) { case ">": result = int1 > int2; break; case "<": result = int1 < int2; break; case "=": result = int1 == int2; break; case ">=": result = int1 >= int2; break; case "<=": result = int1 <= int2; break; default: break; } ScriptOutput so = new ScriptOutput(); so.SetValue("result", result); return(so); }
/// <summary> /// 运行脚本 /// </summary> /// <param name="ml"></param> public static void RunScript(MainLayout ml, WriteStreamCallBack wrs, IList <IPropertyIt> propertys, WriteStreamCallBack runover = null) { ScriptObjectManager sm = new ScriptObjectManager(); if (propertys.Count > 0) { foreach (var item in propertys) { ScriptOutput so = new ScriptOutput(); so.SetValue(item.Name, item.Value); sm.SetValue(item.Id, so); } } try { IItemBox currentib = (ml.MainIb as LineItemBox).Next(0); IItemBox next = null; while (currentib != null) { ml.SetFunctionBoxRun(System.Windows.Media.Colors.Red, currentib); next = DoFunction(currentib as ItemBox, sm, wrs); ml.SetFunctionBoxStop(System.Windows.Media.Colors.White, currentib); currentib = next; } } catch (Exception ex) { wrs?.Invoke("脚本运行失败"); Log.Write(new LogMessage("脚本运行失败", ex)); } finally { sm.Dispose(); sm = null; runover?.Invoke("程序运行结束"); } }