using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TECSharpFunction;
namespace SlMesDbIterface
{
public class DeviceTools
{
public static void GetToolExcel(string FtpServer, string FtpUser,string FtpPassWord, string FtpFileList)
{
FTPHelper ftpClient = new FTPHelper(FtpServer, @"", FtpUser, FtpPassWord);
//ListType=1代表获取文件列表,ListType=2代表获取文件夹列表,ListType=3代表获取文件和文件夹列表。
//Detail=true时获文件或文件夹详细信息,Detail=false时只获取文件或文件夹名称。
//Keyword是只需list名称包含Keyword的文件或文件夹,若要list所有文件或文件夹,则该参数为空。若ListType=3,则该参数无效。
int ListType = 1;
bool Detail = false;
string Keyword = "";
var fileList = ftpClient.GetFileDirctoryList(ListType, Detail, Keyword);
foreach (string itemFileName in fileList)
{
string tableName = itemFileName.Substring(0, itemFileName.LastIndexOf("."));
if (FtpFileList.Contains(itemFileName))
{
ftpClient.Download(itemFileName, itemFileName, null);
ExcelToDataTable(itemFileName, tableName);
}
else
{
}
}
}
private static void ExcelToDataTable(string excelPath, string tableName)
{
////判断是否包含当前日期的记录
//int excelSheetindex = 0;
//var dt = NPOITest.ExeclHelper.ExcelToDataTable(excelPath, excelSheetindex, true);
//switch (tableName)
//{
// case "刀具柜-库存明细":
// {
// string str1 = "delete from[刀具柜-库存明细] where[导入日期] = '" + DateTime.Now.ToShortDateString() + "'";
// DataLinkMesWork.SQLCommon.ExecuteSql(str1, Program.ConnectionString_MES, out string errorMessage1);
// var dt_DB = GetToolDetail(dt);
// SqlBulkCopyByDatatable(Program.ConnectionString_MES, tableName, dt_DB);
// }
// break;
// case "刀具领用记录":
// {
// string str2 = "delete from[刀具领用记录] where[导入日期] = '" + DateTime.Now.ToShortDateString() + "'";
// DataLinkMesWork.SQLCommon.ExecuteSql(str2, Program.ConnectionString_MES, out string errorMessage2);
// var dt_DB = GetToolRecoder(dt);
// SqlBulkCopyByDatatable(Program.ConnectionString_MES, tableName, dt_DB);
// }
// break;
//}
}
///
/// 刀具领用记录
///
private static DataTable GetToolRecoder(DataTable dtData)
{
//刀具领用记录.xls
DataTable dt = new DataTable();
dt.Columns.Add("物料名称", typeof(System.String));
dt.Columns.Add("物料编号", typeof(System.String));
dt.Columns.Add("物料型号", typeof(System.String));
dt.Columns.Add("供应商", typeof(System.String));//品牌(供应商)
dt.Columns.Add("领取来源", typeof(System.String));
dt.Columns.Add("领取数量", typeof(System.Int32));
dt.Columns.Add("实领数量", typeof(System.Int32));
dt.Columns.Add("领取单位", typeof(System.String));
dt.Columns.Add("包装数量", typeof(System.Int32));
dt.Columns.Add("包装单位", typeof(System.String));
dt.Columns.Add("领用类型", typeof(System.String));
dt.Columns.Add("单价", typeof(System.Double));//单价(元)
dt.Columns.Add("金额", typeof(System.Double));
dt.Columns.Add("部门", typeof(System.String));
dt.Columns.Add("领用人员", typeof(System.String));
dt.Columns.Add("已归还数量", typeof(System.Int32));
dt.Columns.Add("是否归还", typeof(System.String));
dt.Columns.Add("领用时间", typeof(System.DateTime));
DataRow dr = dt.NewRow();
for (int i = 0; i < dtData.Rows.Count; i++)
{
dr = dt.NewRow();
var 物料名称 = dtData.Rows[i][0].ToString();
if (物料名称 == "合计")
{
continue;
}
dr["物料名称"] = 物料名称;
dr["物料编号"] = dtData.Rows[i][1].ToString();
dr["物料型号"] = dtData.Rows[i][2].ToString();
dr["供应商"] = dtData.Rows[i][3].ToString();
dr["领取来源"] = dtData.Rows[i][4].ToString();
try
{
dr["领取数量"] = Convert.ToInt32(dtData.Rows[i][5]);
}
catch
{
dr["领取数量"] = 0;
}
try
{
dr["实领数量"] = Convert.ToInt32(dtData.Rows[i][6]);
}
catch
{
dr["实领数量"] = 0;
}
dr["领取单位"] = dtData.Rows[i][7].ToString();
try
{
dr["包装数量"] = Convert.ToInt32(dtData.Rows[i][8]);
}
catch
{
dr["包装数量"] = 0;
}
dr["包装单位"] = dtData.Rows[i][9].ToString();
dr["领用类型"] = dtData.Rows[i][10].ToString();
try
{
dr["单价"] = Convert.ToDouble(dtData.Rows[i][11]);
}
catch
{
dr["单价"] = 0;
}
try
{
dr["金额"] = Convert.ToDouble(dtData.Rows[i][12]);
}
catch
{
dr["金额"] = 0;
}
dr["部门"] = dtData.Rows[i][13].ToString();
dr["领用人员"] = dtData.Rows[i][14].ToString();
try
{
dr["已归还数量"] = Convert.ToInt32(dtData.Rows[i][15]);
}
catch
{
dr["已归还数量"] = 0;
}
dr["是否归还"] = dtData.Rows[i][16].ToString();
try
{
dr["领用时间"] = Convert.ToDateTime(dtData.Rows[i][17]);
// dr["领用时间"] = dtData.Rows[i][17].ToString();
}
catch
{
dr["领用时间"] = DBNull.Value;
}
dt.Rows.Add(dr);
}
return dt;
}
///
/// 刀具柜-库存明细
///
private static DataTable GetToolDetail(DataTable dtData)
{
//刀具柜 - 库存明细.xls
DataTable dt = new DataTable();
dt.Columns.Add("刀具柜名称", typeof(System.String));
dt.Columns.Add("行号", typeof(System.Int32));
dt.Columns.Add("列号", typeof(System.Int32));
dt.Columns.Add("物料名称", typeof(System.String));
dt.Columns.Add("物料编号", typeof(System.String));
dt.Columns.Add("物料型号", typeof(System.String));
dt.Columns.Add("当前数量", typeof(System.Double));
dt.Columns.Add("包装单位", typeof(System.String));
dt.Columns.Add("单价", typeof(System.Double));
dt.Columns.Add("金额", typeof(System.Double));
dt.Columns.Add("最大存储", typeof(System.Int32));
dt.Columns.Add("警告阀值", typeof(System.Int32));
dt.Columns.Add("最后上架时间", typeof(System.DateTime));
DataRow dr = dt.NewRow();
for (int i = 0; i < dtData.Rows.Count; i++)
{
dr = dt.NewRow();
dr["刀具柜名称"] = dtData.Rows[i]["刀具柜名称"].ToString();
try
{
dr["行号"] = Convert.ToInt32(dtData.Rows[i]["行号"]);
}
catch
{
dr["行号"] = 0;
}
try
{
dr["列号"] = Convert.ToInt32(dtData.Rows[i]["列号"]);
}
catch
{
dr["列号"] = 0;
}
dr["物料名称"] = dtData.Rows[i]["物料名称"].ToString();
dr["物料编号"] = dtData.Rows[i]["物料编号"].ToString();
dr["物料型号"] = dtData.Rows[i]["物料型号"].ToString();
try
{
dr["当前数量"] = Convert.ToDouble(dtData.Rows[i]["当前数量"]);
}
catch
{
dr["当前数量"] = 0;
}
dr["包装单位"] = dtData.Rows[i]["包装单位"].ToString();
try
{
dr["单价"] = Convert.ToDouble(dtData.Rows[i]["单价"]);
}
catch
{
dr["单价"] = 0;
}
try
{
dr["金额"] = Convert.ToDouble(dtData.Rows[i]["金额"]);
}
catch
{
dr["金额"] = 0;
}
try
{
dr["最大存储"] = Convert.ToDouble(dtData.Rows[i]["最大存储"]);
}
catch
{
dr["最大存储"] = 0;
}
try
{
dr["警告阀值"] = Convert.ToDouble(dtData.Rows[i]["警告阀值"]);
}
catch
{
dr["警告阀值"] = 0;
}
try
{
dr["最后上架时间"] = Convert.ToDateTime(dtData.Rows[i]["最后上架时间"]);
}
catch
{
dr["警告阀值"] = DBNull.Value;
}
dt.Rows.Add(dr);
}
return dt;
}
static void SqlBulkCopyByDatatable(string connectionString, string TableName, DataTable dt)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlBulkCopy sqlbulkcopy =
new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction))
{
try
{
sqlbulkcopy.DestinationTableName = "[" + TableName + "]";
dt.TableName = TableName;
for (int i = 0; i < dt.Columns.Count; i++)
{
sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName.Trim(), "[" + dt.Columns[i].ColumnName + "]");
}
sqlbulkcopy.WriteToServer(dt);
}
catch (System.Exception ex)
{
//throw ex;
}
}
}
}
}
}