|
|
@@ -5,6 +5,7 @@ using CnasSynchrousModel; |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Data; |
|
|
|
using System.IO; |
|
|
|
using System.Linq; |
|
|
|
using System.Text; |
|
|
|
|
|
|
@@ -24,36 +25,60 @@ namespace CnasSynchronusClient |
|
|
|
|
|
|
|
public ExcelFormatConfig ExcelFormat { get; set; } |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 如果配置读取的是文件夹,该属性用来记录需要读取所有文件的缓冲路径 |
|
|
|
/// </summary> |
|
|
|
public List<string> LstFileFullName { get; set; } |
|
|
|
|
|
|
|
public ExcelInstrumentData(InstrumentDataSourceInfo dataSourceInfo, object[] vs) |
|
|
|
{ |
|
|
|
if (dataSourceInfo.Path == null) return; |
|
|
|
if (dataSourceInfo.Path == null) |
|
|
|
{ |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
this.ExcelFormat = FileOperation.GetFormatConfigData<ExcelFormatConfig>("ExcelFormatConfig.xml"); |
|
|
|
|
|
|
|
try |
|
|
|
{ |
|
|
|
ExcelFormat = FileOperation.GetFormatConfigData<ExcelFormatConfig>("ExcelFormatConfig.xml"); |
|
|
|
LstFileFullName = new List<string>(); |
|
|
|
|
|
|
|
// 此时为读取“文件”模式,指定要读取的具体文件 |
|
|
|
if (ExcelFormat.ReadExcelFileMode == "0") |
|
|
|
{ |
|
|
|
RemoteFileCopy remoteFileCopy = new RemoteFileCopy(dataSourceInfo); |
|
|
|
remoteFileCopy.CopyFileFromRemote(".xls"); |
|
|
|
this.StrLocalPath = FileHelper.getBasePath() + "\\Cache\\" + System.Text.RegularExpressions.Regex.Replace(dataSourceInfo.Path, "[ \\[ \\] \\^ \\-_*×――(^)|'$%~!@#$…&%¥—+=<>《》!!???::•`·、。,;,.;\"‘’“”-]", "").Replace(@"\", "") + ".xls"; |
|
|
|
this.strTableName = vs[0].ToString(); |
|
|
|
|
|
|
|
this.StrLocalPath = FileHelper.getBasePath() + "\\Cache\\" + System.Text.RegularExpressions.Regex.Replace(dataSourceInfo.Path, "[ \\[ \\] \\^ \\-_*×――(^)|'$%~!@#$…&%¥—+=<>《》!!???::•`·、。,;,.;\"‘’“”-]", "").Replace(@"\", "") + ".xls"; |
|
|
|
this.strTableName = vs[0].ToString(); |
|
|
|
this.strDateColumn = vs[1].ToString(); |
|
|
|
this.strDate = vs[2].ToString(); |
|
|
|
this.strDate = vs[2].ToString(); |
|
|
|
|
|
|
|
LstFileFullName.Add(StrLocalPath); |
|
|
|
} |
|
|
|
// 此时为读取“文件夹”模式,指定要读取的具体文件 |
|
|
|
else |
|
|
|
{ |
|
|
|
string strFileName = DateTime.Now.ToString(ExcelFormat.ExcelFileNameFormat); |
|
|
|
|
|
|
|
if (strFileName != "") |
|
|
|
DirectoryInfo root = new DirectoryInfo($"{dataSourceInfo.Path}"); |
|
|
|
foreach (FileInfo f in root.GetFiles()) |
|
|
|
{ |
|
|
|
RemoteFileCopy remoteFileCopy = new RemoteFileCopy(dataSourceInfo); |
|
|
|
remoteFileCopy.CopyFileFromRemote(".xls", strFileName + ".xls"); |
|
|
|
string name = f.Name; |
|
|
|
string fullName = f.FullName; |
|
|
|
string type = f.Extension; |
|
|
|
|
|
|
|
this.StrLocalPath = FileHelper.getBasePath() + "\\Cache\\" + System.Text.RegularExpressions.Regex.Replace(dataSourceInfo.Path+ strFileName + ".xls", "[ \\[ \\] \\^ \\-_*×――(^)|'$%~!@#$…&%¥—+=<>《》!!???::•`·、。,;,.;\"‘’“”-]", "").Replace(@"\", "") + ".xls"; |
|
|
|
this.strTableName = $"'{strFileName}$'"; |
|
|
|
this.strDateColumn = vs[1].ToString(); |
|
|
|
this.strDate = vs[2].ToString(); |
|
|
|
//“今天”产生的数据,并且格式是xls |
|
|
|
if ((type.ToLower() == ".xls".ToLower() || type.ToLower() == ".xlsx".ToLower()) && |
|
|
|
name.StartsWith(DateTime.Now.ToString(ExcelFormat.ExcelFileNameFormat))) |
|
|
|
{ |
|
|
|
RemoteFileCopy remoteFileCopy = new RemoteFileCopy(dataSourceInfo); |
|
|
|
remoteFileCopy.CopyFileFromRemote(".xls", $"{name}"); |
|
|
|
LstFileFullName.Add(FileHelper.getBasePath() + "\\Cache\\" + System.Text.RegularExpressions.Regex.Replace(dataSourceInfo.Path + $"{name}", "[ \\[ \\] \\^ \\-_*×――(^)|'$%~!@#$…&%¥—+=<>《》!!???::•`·、。,;,.;\"‘’“”-]", "").Replace(@"\", "") + ".xls"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
this.strTableName = vs[0].ToString(); |
|
|
|
this.strDateColumn = vs[1].ToString(); |
|
|
|
this.strDate = vs[2].ToString(); |
|
|
|
} |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
@@ -64,33 +89,117 @@ namespace CnasSynchronusClient |
|
|
|
|
|
|
|
public override Dictionary<string, DataTable> GetInstrumentData() |
|
|
|
{ |
|
|
|
if (StrLocalPath == null || ExcelFormat == null || ExcelFormat == null) |
|
|
|
return new Dictionary<string, DataTable>(); |
|
|
|
Dictionary<string, DataTable> excels = new Dictionary<string, DataTable>(); |
|
|
|
|
|
|
|
return dataBaseService.GetInstrumentData( |
|
|
|
new ExcelOpenParams |
|
|
|
//读取数据 |
|
|
|
foreach (var item in LstFileFullName) |
|
|
|
{ |
|
|
|
try |
|
|
|
{ |
|
|
|
StrPath = StrLocalPath, |
|
|
|
ExcelFileVersion = ExcelFormat.ExcelFileVersion, |
|
|
|
autoSql = ExcelFormat.AutoSql |
|
|
|
}); |
|
|
|
Dictionary<string, DataTable> datas = dataBaseService.GetInstrumentData( |
|
|
|
new ExcelOpenParams |
|
|
|
{ |
|
|
|
StrPath = item, |
|
|
|
ExcelFileVersion = ExcelFormat.ExcelFileVersion, |
|
|
|
autoSql = ExcelFormat.AutoSql |
|
|
|
}); |
|
|
|
|
|
|
|
foreach (var key in datas.Keys) |
|
|
|
{ |
|
|
|
if (false == excels.ContainsKey(key)) |
|
|
|
{ |
|
|
|
excels.Add(key, datas[key]); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
foreach (DataRow dr in datas[key].Rows) |
|
|
|
{ |
|
|
|
DataRow drNew = excels[key].NewRow(); |
|
|
|
drNew.ItemArray = dr.ItemArray; |
|
|
|
excels[key].Rows.Add(drNew); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
catch |
|
|
|
{ |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return excels; |
|
|
|
} |
|
|
|
|
|
|
|
public override DataTable GetInstrumentDataByDate() |
|
|
|
{ |
|
|
|
return dataBaseService.GetInstrumentDataByDate( |
|
|
|
new ExcelOpenParams |
|
|
|
DataTable dtCompine = new DataTable(); |
|
|
|
|
|
|
|
try |
|
|
|
{ |
|
|
|
//读取数据 |
|
|
|
List<DataTable> dataTables = new List<DataTable>(); |
|
|
|
foreach (var item in LstFileFullName) |
|
|
|
{ |
|
|
|
StrPath = StrLocalPath, |
|
|
|
ExcelFileVersion = ExcelFormat.ExcelFileVersion, |
|
|
|
autoSql = ExcelFormat.AutoSql |
|
|
|
}, |
|
|
|
new ConditionParams |
|
|
|
DataTable dt = dataBaseService.GetInstrumentDataByDate( |
|
|
|
new ExcelOpenParams |
|
|
|
{ |
|
|
|
StrPath = item, |
|
|
|
ExcelFileVersion = ExcelFormat.ExcelFileVersion, |
|
|
|
autoSql = ExcelFormat.AutoSql |
|
|
|
}, |
|
|
|
new ConditionParams |
|
|
|
{ |
|
|
|
TableName = strTableName, |
|
|
|
DateColumn = strDateColumn, |
|
|
|
DateValue = strDate |
|
|
|
}); |
|
|
|
dataTables.Add(dt); |
|
|
|
} |
|
|
|
|
|
|
|
//合并数据 |
|
|
|
if (dataTables.Count > 0) |
|
|
|
{ |
|
|
|
TableName = strTableName, |
|
|
|
DateColumn = strDateColumn, |
|
|
|
DateValue = strDate |
|
|
|
}); |
|
|
|
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.ToString().ToLower() == strDateColumn.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(), ExcelFormat.ExcelFileDateColumnFormat, 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.Info("读取数据时发生异常"); |
|
|
|
AppLog.Error(ex.Message); |
|
|
|
} |
|
|
|
AppLog.Info("读取数据完成,准备返回"); |
|
|
|
return dtCompine; |
|
|
|
} |
|
|
|
|
|
|
|
public override DataTable GetInstrumentDataStruct() |
|
|
|