|
@@ -76,11 +76,13 @@ namespace XmlDucumentAnalysis
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
private void button1_Click(object sender, EventArgs e)
|
|
|
{
|
|
{
|
|
|
Log.Info("点击复制该时间段的录音文件");
|
|
Log.Info("点击复制该时间段的录音文件");
|
|
|
|
|
+ Log.Debug("开始执行" + minDateTime + "至" + maxDateTime + "录音文件拷贝任务");
|
|
|
RecordingCopyJob(this.minDateTime, this.maxDateTime);
|
|
RecordingCopyJob(this.minDateTime, this.maxDateTime);
|
|
|
}
|
|
}
|
|
|
private void button2_Click(object sender, EventArgs e)
|
|
private void button2_Click(object sender, EventArgs e)
|
|
|
{
|
|
{
|
|
|
Log.Info("点击生成csv文件");
|
|
Log.Info("点击生成csv文件");
|
|
|
|
|
+ Log.Debug("开始执行" + minDateTime + "至" + maxDateTime + "的生成csv文件任务");
|
|
|
CreateCsvFileJob(this.minDateTime, this.maxDateTime);
|
|
CreateCsvFileJob(this.minDateTime, this.maxDateTime);
|
|
|
}
|
|
}
|
|
|
private void Form1_Load(object sender, EventArgs e)
|
|
private void Form1_Load(object sender, EventArgs e)
|
|
@@ -250,13 +252,13 @@ namespace XmlDucumentAnalysis
|
|
|
List<string> lineList = new List<string>();
|
|
List<string> lineList = new List<string>();
|
|
|
// 定义表头
|
|
// 定义表头
|
|
|
lineList.Add("录音流水ID,录音文件名,数据包,通话时长(单位:秒),通话拨打时间,通话挂机时间,主叫号码,被叫号码,坐席工号,坐席ID,质检场景,呼叫类型(0:呼入,1:呼出),客户号,平台code,扩展字段1,扩展字段2,扩展字段3,扩展字段4,扩展字段5,扩展字段6");
|
|
lineList.Add("录音流水ID,录音文件名,数据包,通话时长(单位:秒),通话拨打时间,通话挂机时间,主叫号码,被叫号码,坐席工号,坐席ID,质检场景,呼叫类型(0:呼入,1:呼出),客户号,平台code,扩展字段1,扩展字段2,扩展字段3,扩展字段4,扩展字段5,扩展字段6");
|
|
|
- OracleHelper oracleHelper = null;
|
|
|
|
|
|
|
+ OdbcHelper odbcHelper = null;
|
|
|
DataTable dataList = new DataTable();
|
|
DataTable dataList = new DataTable();
|
|
|
try
|
|
try
|
|
|
{
|
|
{
|
|
|
- oracleHelper = new OracleHelper(this.ConnectString);
|
|
|
|
|
- dataList = getSqlField(oracleHelper, minTime, maxTime);
|
|
|
|
|
- oracleHelper = null;
|
|
|
|
|
|
|
+ odbcHelper = new OdbcHelper(this.ConnectString);
|
|
|
|
|
+ dataList = getSqlField(odbcHelper, minTime, maxTime);
|
|
|
|
|
+ odbcHelper = null;
|
|
|
}
|
|
}
|
|
|
catch (Exception exp)
|
|
catch (Exception exp)
|
|
|
{
|
|
{
|
|
@@ -264,11 +266,11 @@ namespace XmlDucumentAnalysis
|
|
|
}
|
|
}
|
|
|
finally
|
|
finally
|
|
|
{
|
|
{
|
|
|
- bool flag = oracleHelper != null;
|
|
|
|
|
|
|
+ bool flag = odbcHelper != null;
|
|
|
if (flag)
|
|
if (flag)
|
|
|
{
|
|
{
|
|
|
- oracleHelper.CloseConnection();
|
|
|
|
|
- oracleHelper = null;
|
|
|
|
|
|
|
+ odbcHelper.CloseConnection();
|
|
|
|
|
+ odbcHelper = null;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
// 获取录音流水文件List
|
|
// 获取录音流水文件List
|
|
@@ -281,24 +283,28 @@ namespace XmlDucumentAnalysis
|
|
|
|
|
|
|
|
string catalog = File.ReadAllText(lastTimeFileName);
|
|
string catalog = File.ReadAllText(lastTimeFileName);
|
|
|
Log.Debug("成功获取上次记录:" + catalog);
|
|
Log.Debug("成功获取上次记录:" + catalog);
|
|
|
|
|
+ //E:\Recording\400001\004\11\40
|
|
|
// 上一次copy文件夹的目录级别
|
|
// 上一次copy文件夹的目录级别
|
|
|
string[] catalogList = catalog.Split('\\');
|
|
string[] catalogList = catalog.Split('\\');
|
|
|
int catalogListSize = catalogList.Length;
|
|
int catalogListSize = catalogList.Length;
|
|
|
- string level1Catalog = catalogList[catalogListSize - 3];
|
|
|
|
|
- string level2Catalog = catalogList[catalogListSize - 2];
|
|
|
|
|
- string level3Catalog = catalogList[catalogListSize - 1];
|
|
|
|
|
|
|
+ string level1Catalog = catalogList[catalogListSize - 3];//004
|
|
|
|
|
+ string level2Catalog = catalogList[catalogListSize - 2];//11
|
|
|
|
|
+ string level3Catalog = catalogList[catalogListSize - 1];//40
|
|
|
|
|
+ //4-99
|
|
|
for (int i = int.Parse(level1Catalog); i <= 99; i++)
|
|
for (int i = int.Parse(level1Catalog); i <= 99; i++)
|
|
|
{
|
|
{
|
|
|
-
|
|
|
|
|
|
|
+ //copyXmlFilePath=E:\Recording\400001
|
|
|
string level1Dir = this.copyXmlFilePath + "\\" + i.ToString().PadLeft(3, '0');
|
|
string level1Dir = this.copyXmlFilePath + "\\" + i.ToString().PadLeft(3, '0');
|
|
|
- Log.Debug("判断文件夹路径是否存在" + level1Dir);
|
|
|
|
|
|
|
+ Log.Debug("判断文件夹路径是否存在" + level1Dir);//E:\Recording\400001\004
|
|
|
// 判断文件夹路径是否存在 不存在则结束循环
|
|
// 判断文件夹路径是否存在 不存在则结束循环
|
|
|
if (!Directory.Exists(level1Dir))
|
|
if (!Directory.Exists(level1Dir))
|
|
|
{
|
|
{
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
|
|
+ //如果是旧的上层文件夹,则下一层从该序号开始
|
|
|
for (int j = i == int.Parse(level1Catalog) ? int.Parse(level2Catalog) : 0; j <= 99; j++)
|
|
for (int j = i == int.Parse(level1Catalog) ? int.Parse(level2Catalog) : 0; j <= 99; j++)
|
|
|
{
|
|
{
|
|
|
|
|
+ //E:\Recording\400001\004\11
|
|
|
string level2Dir = level1Dir + "\\" + j.ToString().PadLeft(2, '0');
|
|
string level2Dir = level1Dir + "\\" + j.ToString().PadLeft(2, '0');
|
|
|
Log.Debug("判断文件夹路径是否存在" + level2Dir);
|
|
Log.Debug("判断文件夹路径是否存在" + level2Dir);
|
|
|
// 判断文件夹路径是否存在 不存在则结束循环
|
|
// 判断文件夹路径是否存在 不存在则结束循环
|
|
@@ -308,7 +314,7 @@ namespace XmlDucumentAnalysis
|
|
|
}
|
|
}
|
|
|
for (int k = j == int.Parse(level2Catalog) ? int.Parse(level3Catalog) : 0; k <= 99; k++)
|
|
for (int k = j == int.Parse(level2Catalog) ? int.Parse(level3Catalog) : 0; k <= 99; k++)
|
|
|
{
|
|
{
|
|
|
-
|
|
|
|
|
|
|
+ //E:\Recording\400001\004\11\40
|
|
|
string level3Dir = level2Dir + "\\" + k.ToString().PadLeft(2, '0');
|
|
string level3Dir = level2Dir + "\\" + k.ToString().PadLeft(2, '0');
|
|
|
Log.Debug("判断文件夹路径是否存在" + level3Dir);
|
|
Log.Debug("判断文件夹路径是否存在" + level3Dir);
|
|
|
// 判断文件夹路径是否存在 不存在则结束循环
|
|
// 判断文件夹路径是否存在 不存在则结束循环
|
|
@@ -472,7 +478,7 @@ namespace XmlDucumentAnalysis
|
|
|
// 时间检测 定时任务
|
|
// 时间检测 定时任务
|
|
|
public void OnTimer(object sender, ElapsedEventArgs args)
|
|
public void OnTimer(object sender, ElapsedEventArgs args)
|
|
|
{
|
|
{
|
|
|
- // 时间等于12:00 执行中午的录音拷贝
|
|
|
|
|
|
|
+ // 时间等于12:15 执行中午的录音拷贝
|
|
|
if (DateTime.Now.Hour == 12 && DateTime.Now.Minute == 15)
|
|
if (DateTime.Now.Hour == 12 && DateTime.Now.Minute == 15)
|
|
|
{
|
|
{
|
|
|
// 当天0时0分0秒:
|
|
// 当天0时0分0秒:
|
|
@@ -483,7 +489,7 @@ namespace XmlDucumentAnalysis
|
|
|
// 调用录音拷贝任务
|
|
// 调用录音拷贝任务
|
|
|
RecordingCopyJob(minDateTime, maxDateTime);
|
|
RecordingCopyJob(minDateTime, maxDateTime);
|
|
|
}
|
|
}
|
|
|
- // 时间等于12: 00 执行中午的生成csv文件
|
|
|
|
|
|
|
+ // 时间等于12: 30 执行中午的生成csv文件
|
|
|
else if (DateTime.Now.Hour == 12 && DateTime.Now.Minute == 30)
|
|
else if (DateTime.Now.Hour == 12 && DateTime.Now.Minute == 30)
|
|
|
{
|
|
{
|
|
|
// 当天0时0分0秒:
|
|
// 当天0时0分0秒:
|
|
@@ -493,7 +499,7 @@ namespace XmlDucumentAnalysis
|
|
|
Log.Debug("开始执行" + minDateTime + "至" + maxDateTime + "的生成csv文件任务");
|
|
Log.Debug("开始执行" + minDateTime + "至" + maxDateTime + "的生成csv文件任务");
|
|
|
CreateCsvFileJob(minDateTime, maxDateTime);
|
|
CreateCsvFileJob(minDateTime, maxDateTime);
|
|
|
}
|
|
}
|
|
|
- // 时间等于00:00 执行下午的录音拷贝
|
|
|
|
|
|
|
+ // 时间等于00:15 执行下午的录音拷贝
|
|
|
else if (DateTime.Now.Hour == 00 && DateTime.Now.Minute == 15)
|
|
else if (DateTime.Now.Hour == 00 && DateTime.Now.Minute == 15)
|
|
|
{
|
|
{
|
|
|
|
|
|
|
@@ -502,7 +508,7 @@ namespace XmlDucumentAnalysis
|
|
|
Log.Debug("开始执行" + minDateTime + "至" + maxDateTime + "录音文件拷贝任务");
|
|
Log.Debug("开始执行" + minDateTime + "至" + maxDateTime + "录音文件拷贝任务");
|
|
|
RecordingCopyJob(minDateTime, maxDateTime);
|
|
RecordingCopyJob(minDateTime, maxDateTime);
|
|
|
}
|
|
}
|
|
|
- // 时间等于00:30 执行下午的生成csv文件
|
|
|
|
|
|
|
+ // 时间等于00:30 执行下午的生成csv文件,00:30
|
|
|
else if (DateTime.Now.Hour == 0 && DateTime.Now.Minute == 30)
|
|
else if (DateTime.Now.Hour == 0 && DateTime.Now.Minute == 30)
|
|
|
{
|
|
{
|
|
|
maxDateTime = Convert.ToDateTime(DateTime.Now.ToString("D").ToString());
|
|
maxDateTime = Convert.ToDateTime(DateTime.Now.ToString("D").ToString());
|
|
@@ -672,7 +678,7 @@ namespace XmlDucumentAnalysis
|
|
|
archive.CloseArchive();
|
|
archive.CloseArchive();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- private DataTable getSqlField(OracleHelper oradb, DateTime minTime, DateTime maxTime)
|
|
|
|
|
|
|
+ private DataTable getSqlField(OdbcHelper odbcHelper, DateTime minTime, DateTime maxTime)
|
|
|
{
|
|
{
|
|
|
string sql = string.Format("select r.recordno ID," +
|
|
string sql = string.Format("select r.recordno ID," +
|
|
|
"case when s3.workordertype3desc is null and s2.workordertype2desc is not null then s1.workordertype1desc || '_' || s2.workordertype2desc "+
|
|
"case when s3.workordertype3desc is null and s2.workordertype2desc is not null then s1.workordertype1desc || '_' || s2.workordertype2desc "+
|
|
@@ -699,13 +705,17 @@ namespace XmlDucumentAnalysis
|
|
|
"where (w.rn=1 or w.rn is null) and " +
|
|
"where (w.rn=1 or w.rn is null) and " +
|
|
|
"r.starttime>=to_date('{0}','yyyy-mm-dd hh24:mi:ss') " +
|
|
"r.starttime>=to_date('{0}','yyyy-mm-dd hh24:mi:ss') " +
|
|
|
"and r.starttime <= to_date('{1}','yyyy-mm-dd hh24:mi:ss')", minTime.ToString(), maxTime.ToString());
|
|
"and r.starttime <= to_date('{1}','yyyy-mm-dd hh24:mi:ss')", minTime.ToString(), maxTime.ToString());
|
|
|
- //string sql = string.Format("select * from TEST2");
|
|
|
|
|
- DataTable data = oradb.GetDataTable(sql);
|
|
|
|
|
|
|
+ DataTable data = odbcHelper.GetDataTable(sql);
|
|
|
string idString = "";
|
|
string idString = "";
|
|
|
- for (int i = 0; i < data.Rows.Count; i++)
|
|
|
|
|
|
|
+ if (data != null)
|
|
|
{
|
|
{
|
|
|
- idString = idString + data.Rows[i]["callid"].ToString() + ",";//行集合.行【号】列【名】
|
|
|
|
|
|
|
+ Log.Debug("sql查询结果行数:" + data.Rows.Count.ToString());
|
|
|
|
|
+ for (int i = 0; i < data.Rows.Count; i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ idString = idString + data.Rows[i]["callid"].ToString() + ",";//行集合.行【号】列【名】
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
Log.Debug("sql查询结果11为:" + idString);
|
|
Log.Debug("sql查询结果11为:" + idString);
|
|
|
return data;
|
|
return data;
|
|
|
}
|
|
}
|
|
@@ -776,5 +786,10 @@ namespace XmlDucumentAnalysis
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ private void btnTest_Click(object sender, EventArgs e)
|
|
|
|
|
+ {
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|