public static TMain ReadSysBaseData <TMain>(this DBCtrl db, eSysID configgroup) where TMain : iSysData <eSysID>, new()
        {
            TMain vpara = new TMain();

            vpara.sysid     = configgroup;
            vpara.tablename = nameof(SYSBASEDATA <eSysID, eBaseDataType>);
            vpara.prefix    = "BASE";
            SqlScript sql;

            if (!typeof(TMain).Name.Contains("Model"))
            {
                sql = new SqlScript($@"
SELECT * 
FROM SYSBASEDATA 
WHERE MODELNAME='*' AND SYSID='{configgroup.ToString()}' AND BASEDATATYPE='{typeof(TMain).Name}'");
            }
            else
            {
                sql = new SqlScript($@"
SELECT * 
FROM SYSBASEDATA A
    JOIN SYSBASEDATA B ON B.SYSID='Main' AND B.BASEDATATYPE='SystemParameter' AND B.BASEDATAID='CurrentSelectModeName' AND A.MODELNAME=B.BASEDATAVALUE
WHERE  A.SYSID='{configgroup.ToString()}' AND A.BASEDATATYPE='{typeof(TMain).Name}'");
            }
            IEnumerable <SYSBASEDATA <eSysID, eBaseDataType> > data = db.Read <SYSBASEDATA <eSysID, eBaseDataType> >(sql);

            if (data.Count() == 0)
            {
                return(vpara);
            }
            data.Read <TMain, eSysID, eBaseDataType>(ref vpara);
            return(vpara);
        }
Exemple #2
0
        public static List <eBaseDataType> BaseDataTypes(this eSysID sysid)
        {
            switch (sysid)
            {
            case eSysID.Main:
                return(new List <eBaseDataType>()
                {
                    eBaseDataType.LogParameter, eBaseDataType.SystemParameter
                });

            case eSysID.Alarm:
                return(new List <eBaseDataType>()
                {
                    eBaseDataType.AlarmParameter
                });

            case eSysID.Conveyor:
                return(new List <eBaseDataType>()
                {
                    eBaseDataType.ConveyorParameter, eBaseDataType.ModelConveyorParameter
                });

            case eSysID.Insert:
                return(new List <eBaseDataType>()
                {
                    eBaseDataType.InsertParameter, eBaseDataType.ModelInsertParameter
                });

            default:
                return(null);
            }
        }
        public static TMain ReadSysTrxData <TMain>(this DBCtrl db, eSysID sysid, string modelname = "*") where TMain : SysData <eSysID>, new()
        {
            TMain vpara = new TMain();

            vpara.sysid     = sysid;
            vpara.tablename = nameof(SYSTRXDATA <eSysID, eTrxDataType>);
            vpara.prefix    = "TRX";
            db.ReadSystrxdatas().Where(x => x.MODELNAME == modelname).Read <TMain, eSysID, eTrxDataType>(ref vpara);
            return(vpara);
        }
        public static List <SqlScript> UpdateParameter <T>(this DBCtrl db, T Main, eSysID sysid, eBaseDataType dataType)
        {
            List <SqlScript> sqls = new List <SqlScript>();

            foreach (PropertyInfo item in Main.GetType().GetProperties().Where(x => x.GetCustomAttribute <ConfigAttribute>() != null && x.GetCustomAttribute <ConfigAttribute>().IsSettingColumn))
            {
                SYSBASEDATA <eSysID, eBaseDataType> data = new SYSBASEDATA <eSysID, eBaseDataType>();
                // 將設定值寫入DB
                data.SYSID         = sysid;
                data.MODELNAME     = "*";
                data.BASEDATATYPE  = dataType;
                data.BASEDATAID    = item.Name;
                data.BASEDATAVALUE = item.PropertyType.IsArray ? data.BASEDATAVALUE = item.GetValue(Main).ToArrayString() : data.BASEDATAVALUE = item.GetValue(Main).ToString();

                sqls.AddRange(db.UpdateSysBaseData(data));
            }

            return(sqls);
        }