C# 脚本指令案例

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
{
    /// <summary>
    /// 脚本指令数据库访问接口
    /// </summary>
    public interface IScriptActCmdDAL : IBaseDAL<ScriptActCmd>
    {
        /// <summary>
        /// 查询脚本指令
        /// </summary>
        /// <param name="cmdName">指令名称,模糊条件,可空。</param>
        /// <returns></returns>
        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
{
    /// <summary>
    /// 流程动作命令实体类
    /// </summary>
    [AddINotifyPropertyChangedInterface]
    public class ScriptActCmd
    {
        /// <summary>
        /// 主键
        /// </summary>
        [Display(Name = "GID", AutoGenerateField = false)]
        [SugarColumn(IsPrimaryKey = true, ColumnDataType = "varchar(36)")]
        public string GID { get; set; } = Guid.NewGuid().ToString();

        /// <summary>
        /// 命令名称
        /// </summary>
        [SugarColumn(ColumnDataType = "nvarchar(100)")]
        public string CmdName { get; set; } = string.Empty;

        /// <summary>
        /// 命令说明
        /// </summary>
        [SugarColumn(ColumnDataType = "nvarchar(500)")]
        public string CmdDiscription { get; set; } = string.Empty;

        /// <summary>
        /// 命令参数
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public string Parameters { get; set; } = string.Empty;

        /// <summary>
        /// 参数说明
        /// </summary>
        [SugarColumn(ColumnDataType = "nvarchar(500)")]
        public string ParsDiscription { get; set; } = string.Empty;

        /// <summary>
        /// 指令方法名
        /// </summary>
        [SugarColumn(ColumnDataType = "varchar(100)")]
        public string CmdMethodName { get; set; } = string.Empty;

        /// <summary>
        /// 备注
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public string Note { get; set; } = string.Empty;

        /// <summary>
        /// 指令返回
        /// </summary>
        [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>
    {
        /// <summary>
        /// 查询脚本
        /// </summary>
        /// <param name="code">脚本编号,模糊条件,可空。</param>
        /// <param name="name">脚本名称,模糊条件,可空。</param>
        /// <param name="type">脚本类型,模糊条件,可空。</param>
        /// <returns></returns>
        List<ScriptInfo> QueryScripts(string code, string name, string type);

        /// <summary>
        /// 检查脚本编号是否存在
        /// </summary>
        /// <param name="code">脚本编号</param>
        /// <returns></returns>
        bool ExistsCode(string code);

        /// <summary>
        /// 检查脚本是否已存在
        /// </summary>
        /// <param name="script">脚本信息对象</param>
        /// <returns></returns>
        bool Exists(ScriptInfo script);

        /// <summary>
        /// 根据编号获取脚本
        /// </summary>
        /// <param name="code">脚本编号</param>
        /// <returns></returns>
        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
{
    /// <summary>
    /// 流程功能脚本(流程实体类)
    /// </summary>
    [AddINotifyPropertyChangedInterface]
    [SugarIndex("Index_FlowScript_Code", nameof(Code), OrderByType.Desc, true)]
    public class ScriptInfo
    {
        /// <summary>
        /// 主键
        /// </summary>
        [Display(Name = "GID", AutoGenerateField = false)]
        [SugarColumn(IsPrimaryKey = true, ColumnDataType = "varchar(36)")]
        public string GID { get; set; } = Guid.NewGuid().ToString();

        /// <summary>
        /// 编号
        /// </summary>
        [SugarColumn(ColumnDataType = "nvarchar(100)")]
        public string Code { get; set; } = string.Empty;

        /// <summary>
        /// 流程名称
        /// </summary>
        [SugarColumn(ColumnDataType = "nvarchar(100)")]
        public string Name { get; set; } = string.Empty;

        /// <summary>
        /// 流程说明
        /// </summary>
        [SugarColumn(ColumnDataType = "nvarchar(500)")]
        public string Description { get; set; } = string.Empty;

        /// <summary>
        /// 流程类型("配标脚本"、"清洗脚本"、"系统脚本"、"其它" 等等根据业务扩展)
        /// </summary>
        [SugarColumn(ColumnDataType = "nvarchar(32)")]
        public string ScriptType { get; set; } = string.Empty;

        /// <summary>
        /// 流程指令集
        /// </summary>
        [SugarColumn(IsJson = true, IsNullable = true)]
        public List<ScriptActCmd> Commands { get; set; }
    }
}

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值