using CommonLib.DBUtils.SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCSPro.Model;
using WCSPro.Model.Flow;
namespace WCSPro.IDAL
{
public interface IScriptActCmdDAL : IBaseDAL<ScriptActCmd>
{
List<ScriptActCmd> QueryCommand(string cmdName);
}
}
using CommonLib.DBUtils.SqlSugar;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCSPro.IDAL;
using WCSPro.Model;
using WCSPro.Model.Flow;
namespace WCSPro.DAL
{
public class ScriptActCmdDAL : BaseDAL<ScriptActCmd>, IScriptActCmdDAL
{
public ScriptActCmdDAL(ISqlSugarClient db) : base(db)
{
Context.DbMaintenance.CreateDatabase();
Context.CodeFirst.SetStringDefaultLength(200).InitTables<ScriptActCmd>();
InitDatas();
}
public List<ScriptActCmd> QueryCommand(string cmdName)
{
return Context.Queryable<ScriptActCmd>()
.WhereIF(!string.IsNullOrWhiteSpace(cmdName), t => t.CmdName.Contains(cmdName))
.ToList();
}
private void InitDatas()
{
var ls = GetInitDatasCN();
var count = Context.Queryable<ScriptActCmd>().Count();
if (ls.Count() == count) return;
Context.DbMaintenance.TruncateTable<ScriptActCmd>();
Context.Insertable(ls).ExecuteCommand();
}
private List<ScriptActCmd> GetInitDatasCN()
{
return new List<ScriptActCmd>
{
new ScriptActCmd()
{
CmdMethodName = "DPPumpControl",
CmdName = "DP泵操作",
CmdDiscription = "操作DP泵打开/关闭。",
ParsDiscription = "2个参数:参数1为泵号(1~3),参数2为开关状态(OPEN、CLOSE)。\r\n例:2号DP泵打开(2 OPEN)",
},
new ScriptActCmd()
{
CmdMethodName = "CSVControl",
CmdName = "切换阀操作",
CmdDiscription = "切换阀切换到指定孔位。",
ParsDiscription = "2个参数:参数1为切换阀号(1~3),参数2为孔位号(1~4)。\r\n例:1号切换阀切换到4号孔位(1 4)",
},
new ScriptActCmd()
{
CmdMethodName = "SPIOControl",
CmdName = "注射泵抽、排操作",
CmdDiscription = "操作注射泵进行抽液或排液。",
ParsDiscription = "4个参数:参数1为注射泵号(1~4),参数2为工作模式(抽为\"+\"、排为\"-\"),参数3为体积值(为0时表示抽满或排空,单位微升),参数4为速度(1~65535)。\r\n例:1号注射泵以20000的速度抽125微升(1 + 125 20000)",
},
new ScriptActCmd()
{
CmdMethodName = "SPIOControlNoWait",
CmdName = "注射泵抽、排操作(不等待完成)",
CmdDiscription = "操作注射泵进行抽液或排液。",
ParsDiscription = "4个参数:参数1为注射泵号(1~4),参数2为工作模式(抽为\"+\"、排为\"-\"),参数3为体积值(为0时表示抽满或排空,单位微升),参数4为速度(1~65535)。\r\n例:1号注射泵以20000的速度抽125微升(1 + 125 20000)",
},
new ScriptActCmd()
{
CmdMethodName = "WatiSPState",
CmdName = "等待注射泵到指定状态",
CmdDiscription = "查询注射泵状态与指定的状态一致。",
ParsDiscription = "3个参数:参数1为注射泵号(1~4),参数2为指定状态('STOP'、'RUNING'、'ERROR'),参数3为等待超时时间(单位秒)",
},
new ScriptActCmd()
{
CmdMethodName = "SPSwitchPosition",
CmdName = "注射泵切换孔位",
CmdDiscription = "将注射泵孔位切换到指定孔位。",
ParsDiscription = "2个参数:参数1为注射泵号(1~4),参数2为孔位号(1~4)。\r\n例:1号注射泵切换到3号孔位(1 3)",
},
new ScriptActCmd()
{
CmdMethodName = "SPStop",
CmdName = "注射泵停止",
CmdDiscription = "注射泵停止工作。",
ParsDiscription = "1个参数:为注射泵号(1~4)",
},
new ScriptActCmd()
{
CmdMethodName = "WaitLSState",
CmdName = "等待液位传感器信号",
CmdDiscription = "等待液位传感器指令状态信号。",
ParsDiscription = "3个参数:参数1为液位传感器号(1~12),参数2为要等待的状态信号(ON、OFF),参数3为等待超时时间(单位秒)。\r\n例:等待12号液位传感器点亮(12 ON 10)",
},
new ScriptActCmd()
{
CmdMethodName = "OpenCAT",
CmdName = "打开阀岛",
CmdDiscription = "打开指定的阀岛。",
ParsDiscription = "可选参数,不输入表示全开,输入指定的一个或多个阀岛号表示就打开指定的阀导。\r\n例:打开ACT06、ACT18、ACT30(6 18 30)",
},
new ScriptActCmd()
{
CmdMethodName = "CloseCAT",
CmdName = "关闭阀岛",
CmdDiscription = "关闭指定的阀岛。",
ParsDiscription = "可选参数,不输入表示全关,输入指定的一个或多个阀岛号表示就关闭指定的阀导。\r\n例:关闭ACT06、ACT18、ACT30(6 18 30)",
},
new ScriptActCmd()
{
CmdMethodName = "OpenGSV",
CmdName = "打开电磁阀",
CmdDiscription = "打开指定的电磁阀。",
ParsDiscription = "可选参数,不输入表示全开,输入指定的一个或多个电磁阀号表示就打开指定的电磁阀。\r\n例:打开GSV01、GSV06(1 6)",
},
new ScriptActCmd()
{
CmdMethodName = "CloseGSV",
CmdName = "关闭电磁阀",
CmdDiscription = "关闭指定的电磁阀。",
ParsDiscription = "可选参数,不输入表示全关,输入指定的一个或多个电磁阀号表示就关闭指定的电磁阀。\r\n例:关闭GSV01、GSV06(1 6)",
},
new ScriptActCmd()
{
CmdMethodName = "ScriptWait",
CmdName = "脚本延时等待",
CmdDiscription = "让脚本延时等待一段时间。",
ParsDiscription = "1个参数:参数为延时等待时间,单位毫秒。",
},
};
}
}
}
using PropertyChanged;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCSPro.Model.ParametersModel;
namespace WCSPro.Model.Flow
{
[AddINotifyPropertyChangedInterface]
public class ScriptActCmd
{
[Display(Name = "GID", AutoGenerateField = false)]
[SugarColumn(IsPrimaryKey = true, ColumnDataType = "varchar(36)")]
public string GID { get; set; } = Guid.NewGuid().ToString();
[SugarColumn(ColumnDataType = "nvarchar(100)")]
public string CmdName { get; set; } = string.Empty;
[SugarColumn(ColumnDataType = "nvarchar(500)")]
public string CmdDiscription { get; set; } = string.Empty;
[SugarColumn(IsIgnore = true)]
public string Parameters { get; set; } = string.Empty;
[SugarColumn(ColumnDataType = "nvarchar(500)")]
public string ParsDiscription { get; set; } = string.Empty;
[SugarColumn(ColumnDataType = "varchar(100)")]
public string CmdMethodName { get; set; } = string.Empty;
[SugarColumn(IsIgnore = true)]
public string Note { get; set; } = string.Empty;
[SugarColumn(IsIgnore = true)]
public string CmdResult { get; set; } = string.Empty;
}
}
using CommonLib.DBUtils.SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCSPro.Model.Flow;
namespace WCSPro.IDAL
{
public interface IScriptInfoDAL : IBaseDAL<ScriptInfo>
{
List<ScriptInfo> QueryScripts(string code, string name, string type);
bool ExistsCode(string code);
bool Exists(ScriptInfo script);
ScriptInfo GetScriptByCode(string code);
}
}
using CommonLib.DBUtils.SqlSugar;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCSPro.IDAL;
using WCSPro.Model.Flow;
namespace WCSPro.DAL
{
public class ScriptInfoDAL : BaseDAL<ScriptInfo>, IScriptInfoDAL
{
public ScriptInfoDAL(ISqlSugarClient db) : base(db)
{
Context.DbMaintenance.CreateDatabase();
Context.CodeFirst.SetStringDefaultLength(200).InitTables<ScriptInfo>();
}
public bool Exists(ScriptInfo script)
{
return Context.Queryable<ScriptInfo>().Any(t => t.GID == script.GID);
}
public bool ExistsCode(string code)
{
return Context.Queryable<ScriptInfo>().Any(t => t.Code == code);
}
public ScriptInfo GetScriptByCode(string code)
{
return Context.Queryable<ScriptInfo>().Single(t => t.Code == code);
}
public List<ScriptInfo> QueryScripts(string code, string name, string type)
{
return Context.Queryable<ScriptInfo>()
.WhereIF(!string.IsNullOrWhiteSpace(code), t => t.Code.Contains(code))
.WhereIF(!string.IsNullOrWhiteSpace(name), t => t.Name.Contains(name))
.WhereIF(!string.IsNullOrWhiteSpace(type), t => t.ScriptType.Contains(type))
.ToList();
}
}
}
using PropertyChanged;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WCSPro.Model.Flow
{
[AddINotifyPropertyChangedInterface]
[SugarIndex("Index_FlowScript_Code", nameof(Code), OrderByType.Desc, true)]
public class ScriptInfo
{
[Display(Name = "GID", AutoGenerateField = false)]
[SugarColumn(IsPrimaryKey = true, ColumnDataType = "varchar(36)")]
public string GID { get; set; } = Guid.NewGuid().ToString();
[SugarColumn(ColumnDataType = "nvarchar(100)")]
public string Code { get; set; } = string.Empty;
[SugarColumn(ColumnDataType = "nvarchar(100)")]
public string Name { get; set; } = string.Empty;
[SugarColumn(ColumnDataType = "nvarchar(500)")]
public string Description { get; set; } = string.Empty;
[SugarColumn(ColumnDataType = "nvarchar(32)")]
public string ScriptType { get; set; } = string.Empty;
[SugarColumn(IsJson = true, IsNullable = true)]
public List<ScriptActCmd> Commands { get; set; }
}
}