|
- using CnasSynchronousCommon;
- using CnasSynchronusDAL;
- using CnasSynchronusIDAL;
- using CnasSynchrousModel;
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.IO;
- using System.Linq;
- using System.Text;
-
- namespace CnasSynchronusClient
- {
- public class SQLiteInstrumentData : InstrumentData
- {
- public string StrLocalPath { get; set; }
- public string StrUser { get; set; }
-
- public string StrPwd { get; set; }
-
- public string strTableName { get; set; }
-
- public string strDateColumn { get; set; }
-
- public string strDate { get; set; }
-
- public ISqliteService sqliteDataBaseService { get { return new SqliteDBService(); } }
-
- public SqliteFormatConfig SqliteFormat { get; set; }
-
- public List<string> LstFileFullName { get; set; }
-
- public List<string> LstFileName { get; set; }
-
- public SQLiteInstrumentData(InstrumentDataSourceInfo dataSourceInfo, object[] vs)
- {
- try
- {
- SqliteFormat = FileOperation.GetFormatConfigData<SqliteFormatConfig>("SqliteFormatConfig.xml");
-
- //初始化变量
- LstFileFullName = new List<string>();
- LstFileName = new List<string>();
-
- if (SqliteFormat.ReadSqliteFileMode == "0")
- {
- RemoteFileCopy remoteFileCopy = new RemoteFileCopy(dataSourceInfo);
- remoteFileCopy.CopyFileFromRemote(".db");
- this.StrLocalPath = FileHelper.getBasePath() + "\\Cache\\" + System.Text.RegularExpressions.Regex.Replace(dataSourceInfo.Path, "[ \\[ \\] \\^ \\-_*×――(^)|'$%~!@#$…&%¥—+=<>《》!!???::•`·、。,;,.;\"‘’“”-]", "").Replace(@"\", "") + ".db";
- this.StrUser = dataSourceInfo.UserId;
- this.StrPwd = dataSourceInfo.UserPwd;
- this.strTableName = vs[0].ToString();
- this.strDateColumn = vs[1].ToString();
- this.strDate = vs[2].ToString();
-
- LstFileFullName.Add(StrLocalPath);
- LstFileName.Add(System.Text.RegularExpressions.Regex.Replace(dataSourceInfo.Path, "[ \\[ \\] \\^ \\-_*×――(^)|'$%~!@#$…&%¥—+=<>《》!!???::•`·、。,;,.;\"‘’“”-]", "").Replace(@"\", ""));
- }
- else
- {
- //遍历当前路径,找到所有“今天”的数据文件,复制形成缓冲文件
- string strSuffix = ".db";
- DirectoryInfo root = new DirectoryInfo(dataSourceInfo.Path);
- foreach (FileInfo f in root.GetFiles())
- {
- string name = f.Name;
- string fullName = f.FullName;
- string type = f.Extension;
- if (type.ToLower() == strSuffix.ToLower() && name.StartsWith(DateTime.Now.ToString(SqliteFormat.SqliteFileNameFormat))) //“今天”产生的数据
- {
- RemoteFileCopy remoteFileCopy = new RemoteFileCopy(dataSourceInfo);
- remoteFileCopy.CopyFileFromRemote(strSuffix, name);
- LstFileFullName.Add(FileHelper.getBasePath() + "\\Cache\\" + System.Text.RegularExpressions.Regex.Replace(dataSourceInfo.Path + name, "[ \\[ \\] \\^ \\-_*×――(^)|'$%~!@#$…&%¥—+=<>《》!!???::•`·、。,;,.;\"‘’“”-]", "").Replace(@"\", "") + strSuffix);
- LstFileName.Add(System.Text.RegularExpressions.Regex.Replace(dataSourceInfo.Path + name, "[ \\[ \\] \\^ \\-_*×――(^)|'$%~!@#$…&%¥—+=<>《》!!???::•`·、。,;,.;\"‘’“”-]", "").Replace(@"\", ""));
- }
- }
-
- this.strTableName = SqliteFormat.SqliteFileTableNameFormat == null ? vs[0].ToString() : SqliteFormat.SqliteFileTableNameFormat;
- this.strDateColumn = vs[1].ToString();
- this.strDate = vs[2].ToString();
- }
- }
- catch (Exception ex)
- {
- AppLog.Error(ex.Message);
- }
- }
-
- public override Dictionary<string, DataTable> GetInstrumentData()
- {
- Dictionary<string, DataTable> dictReturn = new Dictionary<string, DataTable>();
- try
- {
- foreach (string strPath in LstFileFullName)
- {
- Dictionary<string, DataTable> dictCurrent = sqliteDataBaseService.GetInstrumentData
- (
- new SqliteOpenParams
- {
- StrPath = strPath,
- StrPwd = StrPwd
- }
- );
- if (dictCurrent.Count > 0)
- {
- foreach (var item in dictCurrent)
- {
- if (!dictReturn.ContainsKey(item.Key)) //如果不包含,则直接增加
- {
- dictReturn.Add(item.Key, item.Value);
- }
- else //如果已经存在相同名字的表单,则合并数据
- {
- DataTable dtCompine = item.Value.Clone();
- foreach (DataRow drs in item.Value.Rows)
- {
- DataRow drNew = dictReturn[item.Key].NewRow();
- drNew.ItemArray = drs.ItemArray;
- dictReturn[item.Key].Rows.Add(drNew);
- }
- }
- }
- }
- }
- }
- catch (Exception ex)
- {
- AppLog.Error(ex.Message);
- }
- return dictReturn;
- }
-
- public override DataTable GetInstrumentDataByDate()
- {
- DataTable dtCompine = new DataTable();
- try
- {
- List<DataTable> dataTables = new List<DataTable>();
- for (int i = 0; i < LstFileFullName.Count; i++)
- {
- DataTable dt = sqliteDataBaseService.GetInstrumentDataByDate(
- new SqliteOpenParams
- {
- StrPath = LstFileFullName[i],
- StrPwd = StrPwd,
- autoSql = SqliteFormat.AutoSql
- },
- new ConditionParams
- {
- TableName = strTableName,
- DateColumn = strDateColumn,
- DateValue = strDate
- }); ;
-
- dataTables.Add(dt);
- }
- if (dataTables.Count > 0)
- {
- dtCompine = dataTables[0].Clone();
- foreach (DataTable dt1 in dataTables)
- {
- foreach (DataRow dr in dt1.Rows)
- {
- DataRow drNew = dtCompine.NewRow();
- foreach (DataColumn dc in dtCompine.Columns)
- {
- if (dc.ColumnName.Trim().ToLower() == strDateColumn.Trim().ToLower())
- {
- DateTime dt = DateTime.Now;
- if (DateTime.TryParse(dr[dc.ColumnName].ToString(), out dt))
- {
- drNew[dc.ColumnName] = dr[dc.ColumnName].ToString();
- }
- else
- {
- DateTime dtTime = DateTime.ParseExact(dr[dc.ColumnName].ToString(), SqliteFormat.SqliteFileDateColumnFormat, new System.Globalization.CultureInfo("zh-CN", true));
- if (dtTime.ToString("HH:mm:ss") == "00:00:00")
- drNew[dc.ColumnName] = dtTime.ToString("yyyy-MM-dd");
- else
- drNew[dc.ColumnName] = dtTime.ToString("yyyy-MM-dd HH:mm:ss");
- }
- }
- else
- {
- drNew[dc.ColumnName] = dr[dc.ColumnName];
- }
- }
- dtCompine.Rows.Add(drNew);
- }
- }
- }
- }
- catch (Exception ex)
- {
- AppLog.Error(ex.Message);
- }
- return dtCompine;
- }
-
- public override DataTable GetInstrumentDataStruct()
- {
- return sqliteDataBaseService.GetInstrumentDataStruct(
- new SqliteOpenParams
- {
- StrPath = LstFileFullName[0],
- StrPwd = StrPwd,
- autoSql = SqliteFormat.AutoSql
- },
- new ConditionParams
- {
- TableName = strTableName
- });
- }
- }
- }
|