Files
16-Xikai-MesProjectNew/Interface_WebAPI/SlMesDbIterface/MessageHanlder/DeviceTools.cs
2026-05-29 09:34:04 +08:00

314 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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;
//}
}
/// <summary>
/// 刀具领用记录
/// </summary>
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;
}
/// <summary>
/// 刀具柜-库存明细
/// </summary>
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;
}
}
}
}
}
}