using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
namespace SocketTransfer.SDK
{
public class ScanUpdateHelper
{
///
/// 扫码上传
///
/// 数据类型(1001:日结;1002:稽核;2001:交班;3001:单品;4001;移动支付)
///
///
public static void UpLoad(int dataType, OracleHelper oracleHelper, string updateURL = "http://183.129.232.107:8010")
{
int UploadSuccess = 0;
bool isReplaceColumnName = false;
try
{
DataTable _DataTable = null;
try
{
_DataTable = oracleHelper.ExcuteSqlGetDataSet(
@"SELECT SERVERPARTCODE,SHOPCODE
FROM HIGHWAY_EXCHANGE.T_SHOPMESSAGE
WHERE VALID = 1").Tables[0];
}
catch
{
_DataTable = oracleHelper.ExcuteSqlGetDataSet(
@"SELECT SERVERPART_CODE AS SERVERPARTCODE,SHOPCODE
FROM HIGHWAY_EXCHANGE.T_SHOPMESSAGE
WHERE VALID = 1").Tables[0];
isReplaceColumnName = true;
}
for (int i = 0; i < _DataTable.Rows.Count; i++)
{
if (UploadData(dataType, _DataTable.Rows[i]["SERVERPARTCODE"].ToString(),
_DataTable.Rows[i]["SHOPCODE"].ToString(), oracleHelper, updateURL, isReplaceColumnName))
{
UploadSuccess++;
}
}
}
catch (Exception ex)
{
LogHelper.WriteSendLog("自动扫码上传失败:(" + dataType + ")" + ex.Message,
"日志_ScanUpdate" + DateTime.Now.ToString("yyyyMMdd"));
}
}
///
/// 执行上传
///
/// 数据类型(1001:日结;1002:稽核;2001:交班;3001:单品;4001;移动支付)
/// 开始时间
/// 结束时间
/// 服务区编号
/// 门店编号
///
private static bool UploadData(int dataType, string ServerCode, string ShopCode, OracleHelper oracleHelper, string updateURL, bool isReplaceColumnName = false)
{
DataTable _QRcodeTable = null;
int _Length = 0, _RowCount = 0, _RecordCount = 0, _ScanIndex = 0, _ScanCount = 0;
string _EndAccountData = "", _PersonsellData = "";
string _strCheckCode = "";
try
{
if (dataType == 3001)
{
_QRcodeTable = SaleQrCode(ServerCode, ShopCode, oracleHelper, out _strCheckCode);
}
else
{
_QRcodeTable = EndAccountQrCode(ServerCode, ShopCode, isReplaceColumnName, oracleHelper, out _strCheckCode);
}
if (_QRcodeTable.Rows.Count > 0)
{
for (int n = 0; n < _QRcodeTable.Rows.Count; n++)
{
string text = "";
if (dataType == 3001)
{
_EndAccountData = HttpUtility.UrlEncode(_QRcodeTable.Rows[n]["salestr"].ToString());
_Length = _QRcodeTable.Rows[n]["salestr"].ToString().Length;
_RowCount = Convert.ToInt16(_QRcodeTable.Rows[n]["salerow"]);
_ScanIndex = n + 1;
_ScanCount = _QRcodeTable.Rows.Count;
int t = 0;
for (int x = 0; x < _QRcodeTable.Rows.Count; x++)
{
if (Convert.ToDateTime(_QRcodeTable.Rows[x]["enddate"]) == Convert.ToDateTime(_QRcodeTable.Rows[n]["enddate"]))
{
t++;
}
}
_RecordCount = t;
text = "CommoditySale" + "_New=" + _EndAccountData + "&Length=" + _Length + "&RowCount=" + _RowCount + "&RecordCount=" + _RecordCount +
"&CheckCode=" + _QRcodeTable.Rows[n]["checkMD5"].ToString() + "&ScanIndex=" + _ScanIndex + "&ScanCount=" + _ScanCount;
}
else
{
_EndAccountData = HttpUtility.UrlEncode(_QRcodeTable.Rows[n]["endaccountstr"].ToString());
_PersonsellData = HttpUtility.UrlEncode(_QRcodeTable.Rows[n]["personsellstr"].ToString());
_Length = _QRcodeTable.Rows[n]["endaccountstr"].ToString().Length + _QRcodeTable.Rows[n]["personsellstr"].ToString().Length;
_RowCount = n + 1;
_ScanIndex = n + 1;
_ScanCount = _QRcodeTable.Rows.Count;
_RecordCount = _QRcodeTable.Rows.Count;
text = "EndAccount" + "=" + _EndAccountData + (_PersonsellData == "" ? "" : "&Personsell=" + _PersonsellData) + "&Length=" + _Length + "&RowCount=" +
_RowCount + "&RecordCount=" + _RecordCount + "&CheckCode=" + _QRcodeTable.Rows[n]["checkMD5"].ToString() +
"&ScanIndex=" + _RowCount + "&ScanCount=" + _RecordCount;
}
string retString = "";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(updateURL + "/MobileServicePlatform/Handler/handler_ajax.ashx");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
byte[] byteArray = Encoding.UTF8.GetBytes("action_type=ScanCodeUpdate&action_data=" + HttpUtility.UrlEncode(text) + "&action_record=1");
request.ContentLength = byteArray.Length;
using (Stream dataStream = request.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);
}
using (WebResponse response = request.GetResponse())
{
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
retString = responseFromServer;
}
if (retString == _strCheckCode)
{
return true;
}
}
}
else
{
return true;
}
}
catch (Exception ex)
{
LogHelper.WriteSendLog("自动扫码上传失败:(" + dataType + ")" + ex.Message,
"日志_ScanUpdate" + DateTime.Now.ToString("yyyyMMdd") + ".log");
}
return false;
}
#region 方法 --> 生成本次单品集合数据二维码字符串列表
///
/// 生成单品集合数据
///
private static DataTable SaleQrCode(string ServerCode, string ShopCode, OracleHelper oracleHelper, out string checkCode)
{
string _strSalestart = "";
//string _strSaleend = "";
string strtmp = "";
string saletmp = "";
int m = 0;
checkCode = "";
DataTable _DataTable = new DataTable();
_DataTable.Columns.Add("id", typeof(decimal));
_DataTable.Columns.Add("startdate", typeof(DateTime));
_DataTable.Columns.Add("enddate", typeof(DateTime));
_DataTable.Columns.Add("salestr", typeof(string));
_DataTable.Columns.Add("salerow", typeof(int));
_DataTable.Columns.Add("checkMD5", typeof(string));
////获取未上传单品记录(交班时间)
DataTable _TransferSaleTable = oracleHelper.ExcuteSqlGetDataSet(
$@"SELECT TRANSFER_ID, SERVERPARTCODE, SHOPCODE,STARTDATE,ENDDATE
FROM HIGHWAY_EXCHANGE.T_TRANSFER_SALE A
WHERE SERVERPARTCODE = '{ServerCode}' AND SHOPCODE = '{ShopCode}' AND
ENDDATE > TRUNC(SYSDATE) - 1 AND NVL(TRANSFER_STATE,0) < 9
ORDER BY TRANSFER_ID ASC").Tables[0];
DataTable _TempTable = _TransferSaleTable.DefaultView.ToTable(true, new string[] { "serverpartcode", "shopcode", "startdate", "enddate" });
for (int i = 0; i < _TempTable.Rows.Count; i++)
{
m = 0;
_strSalestart = _TempTable.Rows[i]["serverpartcode"].ToString() + "|" + _TempTable.Rows[i]["shopcode"].ToString() +
"|" + Convert.ToDateTime(_TempTable.Rows[i]["startdate"]).ToString("yyyyMMddHHmmss") +
"|" + Convert.ToDateTime(_TempTable.Rows[i]["enddate"]).ToString("yyyyMMddHHmmss");
//根据交班时间获取单品记录
DataTable _SaleTable = oracleHelper.ExcuteSqlGetDataSet(
$@"SELECT B.COMMODITY_SYMBOL,A.TOTAL_COUNT,A.TOTAL_AMOUNT
FROM HIGHWAY_EXCHANGE.T_COMMODITYSALE_NEW A,
HIGHWAY_EXCHANGE.T_COMMODITYEX B
WHERE A.COMMODITY_CODE = B.COMMODITY_CODE AND
A.CREATE_DATE BETWEEN TO_DATE('{_TempTable.Rows[i]["enddate"].ToString()}','YYYY/MM/DD HH24:MI:SS') AND
TO_DATE('{_TempTable.Rows[i]["enddate"].ToString()}','YYYY/MM/DD HH24:MI:SS') AND
B.SERVERPARTCODE = '{ServerCode}'
ORDER BY COMMODITYSALE_ID").Tables[0];
DataTable dataTable = oracleHelper.ExcuteSqlGetDataSet(
$@"SELECT B.COMMODITY_SYMBOL,
A.TOTALCOUNT AS TOTAL_COUNT,
A.TOTALSELLAMOUNT AS TOTAL_AMOUNT
FROM HIGHWAY_EXCHANGE.T_COMMODITYSALE A,
HIGHWAY_EXCHANGE.T_COMMODITYEX B
WHERE A.STARTDATE = TO_DATE('{_TransferSaleTable.Rows[i]["startdate"].ToString()}','YYYY/MM/DD HH24:MI:SS') AND
A.ENDDATE = TO_DATE('{_TransferSaleTable.Rows[i]["enddate"].ToString()}','YYYY/MM/DD HH24:MI:SS') AND
A.SERVERPARTCODE = '{ServerCode}' AND SHOPCODE = '{ShopCode}' AND A.COMMODITY_CODE = B.COMMODITY_CODE
ORDER BY COMMODITYSALE_ID").Tables[0];
_SaleTable = ConvertOraclTableToDoNetTable(_SaleTable);
dataTable = ConvertOraclTableToDoNetTable(dataTable);
_SaleTable.Merge(dataTable);
for (int n = 0; n < _SaleTable.Rows.Count; n++)
{
saletmp = _SaleTable.Rows[n]["commodity_symbol"].ToString() +
"^" + _SaleTable.Rows[n]["total_count"].ToString().Replace(".00", "") +
"^" + _SaleTable.Rows[n]["total_amount"].ToString().Replace(".00", "");
if ((strtmp.Length + saletmp.Length) > 300)
{
m++;
DataRow _row = _DataTable.NewRow();
_row["id"] = m;
_row["startdate"] = _TempTable.Rows[i]["startdate"];
_row["enddate"] = _TempTable.Rows[i]["enddate"];
_row["salestr"] = strtmp;
_row["salerow"] = m;
_DataTable.Rows.Add(_row);
strtmp = "";
}
strtmp += (strtmp == "" ? _strSalestart + "|" : ",") + saletmp;
if (n == (_SaleTable.Rows.Count - 1))
{
m++;
DataRow _row = _DataTable.NewRow();
_row["id"] = m;
_row["startdate"] = _TempTable.Rows[i]["startdate"];
_row["enddate"] = _TempTable.Rows[i]["enddate"];
_row["salestr"] = strtmp;
_row["salerow"] = m;
_DataTable.Rows.Add(_row);
strtmp = "";
}
}
if (_DataTable.Rows.Count > 0)
{
string MD5 = "", strMD5 = "";
for (int j = 0; j < _DataTable.Rows.Count; j++)
{
strMD5 += (strMD5 == "" ? "" : ",") + _DataTable.Rows[j]["salestr"].ToString();
}
MD5 = CreateMD5(strMD5);
for (int j = 0; j < _DataTable.Rows.Count; j++)
{
_DataTable.Rows[j]["checkMD5"] = MD5;
}
checkCode = MD5;
}
}
return _DataTable;
}
#endregion
#region 方法 --> 生成本次结账及收银交班数据二维码字符串列表
///
/// 生成结账数据
///
private static DataTable EndAccountQrCode(string ServerCode, string ShopCode,
bool isReplaceColumnName, OracleHelper oracleHelper, out string checkCode)
{
string _strEndAccount = "";
string _strPersonSell = "";
string _strTemp = "";
checkCode = "";
DataTable _DataTable = new DataTable("list");
_DataTable.Columns.Add("id", typeof(decimal));
_DataTable.Columns.Add("startdate", typeof(DateTime));
_DataTable.Columns.Add("enddate", typeof(DateTime));
_DataTable.Columns.Add("endaccountstr", typeof(string));
_DataTable.Columns.Add("personsellstr", typeof(string));
_DataTable.Columns.Add("flag", typeof(string));
_DataTable.Columns.Add("checkMD5", typeof(string));
DataTable dt = oracleHelper.ExcuteSqlGetDataSet(
$@"SELECT ENDACCOUNT_ID,STARTDATE,ENDDATE,SERVERPARTCODE,
SHOPCODE,MACHINECODE,ENDPERSON_CODE,TICKET_COUNT,
TOTAL_COUNT,TOTAL_AMOUNT,TOTAL_OFFAMOUNT,CASHPAY,
BANKPAY,-1 AS TICKETBILL,MEMBERPAY,COUPONPAY,-1 AS OTHERPAY,
CONTRIBUTION_AMOUNT,ENDACCOUNT_TYPE,PAYMENT_DETAILS,ENDACCOUNT_CODE
FROM HIGHWAY_EXCHANGE.T_ENDACCOUNT_NEW
WHERE SERVERPARTCODE = '{ServerCode}' AND
SHOPCODE = '{ShopCode}' AND ENDDATE > TRUNC(SYSDATE) - 1 AND NVL(TRANSFER_STATE,0) < 9
ORDER BY ENDDATE ASC").Tables[0];
DataTable dataTable = oracleHelper.ExcuteSqlGetDataSet(
$@"SELECT A.ENDACCOUNT_ID,A.ENDACCOUNT_STARTDATE AS STARTDATE,
A.ENDACCOUNT_DATE AS ENDDATE,{(isReplaceColumnName ?
"A.SERVERPART_CODE" : "A.SERVERPARTCODE")} AS SERVERPARTCODE,
A.SHOPCODE,A.MACHINECODE,A.ENDPERSONCODE AS ENDPERSON_CODE,
A.TICKETCOUNT AS TICKET_COUNT,A.TOTALCOUNT AS TOTAL_COUNT,
A.TOTALSELLAMOUNT AS TOTAL_AMOUNT,A.TOTALOFFAMOUNT AS TOTAL_OFFAMOUNT,
A.CASH AS CASHPAY, A.CREDITCARD AS BANKPAY,A.TICKETBILL,A.VIPPERSON AS MEMBERPAY,
A.COSTBILL AS COUPONPAY,A.OTHERPAY,A.CASHPAY AS CONTRIBUTION_AMOUNT,
A.FLAG AS ENDACCOUNT_TYPE,'' AS PAYMENT_DETAILS,'' AS ENDACCOUNT_CODE
FROM T_ENDACCOUNT A
WHERE {(isReplaceColumnName ? "A.SERVERPART_CODE" : "A.SERVERPARTCODE")} = '{ServerCode}' AND
A.SHOPCODE = '{ShopCode}' AND A.ENDACCOUNT_DATE > TRUNC(SYSDATE) AND
NVL(A.TRANSFER_STATE,0) < 9
ORDER BY A.ENDACCOUNT_DATE ASC").Tables[0];
dt = ConvertOraclTableToDoNetTable(dt);
dataTable = ConvertOraclTableToDoNetTable(dataTable);
dt.Merge(dataTable);
foreach (DataRow row in dt.Rows)
{
#region
_strEndAccount = "";
_strPersonSell = "";
for (int i = 0; i < dt.Columns.Count; i++)
{
if (dt.Columns[i].ColumnName != "TICKETBILL" && dt.Columns[i].ColumnName != "OTHERPAY" &&
dt.Columns[i].ColumnName != "PAYMENT_DETAILS" && dt.Columns[i].ColumnName != "ENDACCOUNT_CODE")
{
_strEndAccount += (_strEndAccount == "" ? "" : "|") + (dt.Columns[i].DataType.ToString() ==
"System.DateTime" ? Convert.ToDateTime(row[i]).ToString("yyyyMMddHHmmss") :
row[i].ToString().Replace(".00", ""));
}
else
{
string[] MovePay = row["PAYMENT_DETAILS"].ToString().Split(',');
Dictionary _MobilePayList = new Dictionary(StringComparer.OrdinalIgnoreCase);
for (int k = 0; k < MovePay.Length; k++)
{
if (MovePay[k].Split(':').Length > 1)
{
_MobilePayList.Add(MovePay[k].Split(':')[0], MovePay[k].Split(':')[1]);
}
}
switch (dt.Columns[i].ColumnName)
{
case "TICKETBILL":
if (row["TICKETBILL"].ToString() == "-1")
{
if (_MobilePayList.ContainsKey("WECHATPAY"))
{
_strEndAccount += "|" + _MobilePayList["WECHATPAY"].Replace(".00", "");
}
else
{
_strEndAccount += "|0";
}
}
else
{
_strEndAccount += (_strEndAccount == "" ? "" : "|") + (dt.Columns[i].DataType.ToString() ==
"System.DateTime" ? Convert.ToDateTime(row[i]).ToString("yyyyMMddHHmmss") :
row[i].ToString().Replace(".00", ""));
}
break;
case "OTHERPAY":
if (row["OTHERPAY"].ToString() == "-1")
{
if (_MobilePayList.ContainsKey("ALIPAY"))
{
_strEndAccount += "|" + _MobilePayList["ALIPAY"].Replace(".00", "");
}
else
{
_strEndAccount += "|0";
}
}
else
{
_strEndAccount += (_strEndAccount == "" ? "" : "|") + (dt.Columns[i].DataType.ToString() ==
"System.DateTime" ? Convert.ToDateTime(row[i]).ToString("yyyyMMddHHmmss") :
row[i].ToString().Replace(".00", ""));
}
break;
case "ENDACCOUNT_CODE":
case "PAYMENT_DETAILS":
break;
}
}
}
#endregion
#region
DataTable person = oracleHelper.ExcuteSqlGetDataSet(
$@"SELECT PERSONSELL_ID,SERVERPARTCODE,SHOPCODE,MACHINECODE,
STARTDATE,ENDDATE,SELLWORKER_CODE,TICKET_COUNT,TOTAL_COUNT,
TOTAL_AMOUNT,TOTAL_OFFAMOUNT,CASHPAY,-1 AS TICKETBILL,BANKPAY,
MEMBERPAY,COUPONPAY,-1 AS OTHERPAY,CONTRIBUTION_AMOUNT,
SELLWORKER_CODE AS ENDPERSONCODE,PAYMENT_DETAILS
FROM HIGHWAY_EXCHANGE.T_PERSONSELL_NEW
WHERE SERVERPARTCODE = '{ServerCode}' AND SHOPCODE = '{ShopCode}' AND
ENDACCOUNT_CODE = '{row["ENDACCOUNT_CODE"].ToString()}'
ORDER BY PERSONSELL_ID ASC").Tables[0];
DataTable _Table = oracleHelper.ExcuteSqlGetDataSet(
$@"SELECT PERSONSELL_ID,SERVERPARTCODE,SHOPCODE,MACHINECODE,
STARTDATE,ENDDATE,CASHWORKER_CODE AS SELLWORKER_CODE,
TICKETCOUNT AS TICKET_COUNT,TOTALCOUNT AS TOTAL_COUNT,
TOTALSELLAMOUNT AS TOTAL_AMOUNT,TOTALOFFAMOUNT AS TOTAL_OFFAMOUNT,
CASH AS CASHPAY,TICKETBILL,CREDITCARD AS BANKPAY,VIPPERSON AS MEMBERPAY,
COSTBILL AS COUPONPAY,OTHERPAY,CASHPAY AS CONTRIBUTION_AMOUNT,
ENDPERSONCODE,'' AS PAYMENT_DETAILS
FROM HIGHWAY_EXCHANGE.T_PERSONSELL
WHERE SERVERPARTCODE = '{ServerCode}' AND SHOPCODE = '{ShopCode}' AND
STARTDATE >= TO_DATE('{row["STARTDATE"].ToString()}','YYYY/MM/DD HH24:MI:SS') AND
ENDDATE <= TO_DATE('{row["ENDDATE"].ToString()}','YYYY/MM/DD HH24:MI:SS')
ORDER BY PERSONSELL_ID ASC").Tables[0];
person = ConvertOraclTableToDoNetTable(person);
_Table = ConvertOraclTableToDoNetTable(_Table);
person.Merge(_Table);
foreach (DataRow _DataRow in person.Rows)
{
_strTemp = "";
for (int i = 0; i < person.Columns.Count; i++)
{
if (person.Columns[i].ColumnName != "TICKETBILL" && person.Columns[i].ColumnName !=
"OTHERPAY" && person.Columns[i].ColumnName != "PAYMENT_DETAILS")
{
_strTemp += (_strTemp == "" ? "" : "|") + (person.Columns[i].DataType.ToString() ==
"System.DateTime" ? Convert.ToDateTime(_DataRow[i]).ToString("yyyyMMddHHmmss") :
_DataRow[i].ToString().Replace(".00", ""));
}
else
{
string[] MovePay = row["PAYMENT_DETAILS"].ToString().Split(',');
Dictionary _MobilePayList = new Dictionary(StringComparer.OrdinalIgnoreCase);
for (int k = 0; k < MovePay.Length; k++)
{
if (MovePay[k].Split(':').Length > 1)
{
_MobilePayList.Add(MovePay[k].Split(':')[0], MovePay[k].Split(':')[1]);
}
}
switch (person.Columns[i].ColumnName)
{
case "TICKETBILL":
if (row["TICKETBILL"].ToString() == "-1")
{
if (_MobilePayList.ContainsKey("WECHATPAY"))
{
_strTemp += "|" + _MobilePayList["WECHATPAY"].Replace(".00", "");
}
else
{
_strTemp += "|0";
}
}
else
{
_strTemp += (_strTemp == "" ? "" : "|") + (person.Columns[i].DataType.ToString() ==
"System.DateTime" ? Convert.ToDateTime(_DataRow[i]).ToString("yyyyMMddHHmmss") :
_DataRow[i].ToString().Replace(".00", ""));
}
break;
case "OTHERPAY":
if (row["OTHERPAY"].ToString() == "-1")
{
if (_MobilePayList.ContainsKey("ALIPAY"))
{
_strTemp += "|" + _MobilePayList["ALIPAY"].Replace(".00", "");
}
else
{
_strTemp += "|0";
}
}
else
{
_strTemp += (_strTemp == "" ? "" : "|") + (person.Columns[i].DataType.ToString() ==
"System.DateTime" ? Convert.ToDateTime(_DataRow[i]).ToString("yyyyMMddHHmmss") :
_DataRow[i].ToString().Replace(".00", ""));
}
break;
case "PAYMENT_DETAILS":
break;
}
}
}
_strPersonSell += (_strPersonSell == "" ? "" : ",") + _strTemp;
}
#endregion
DataRow _row = _DataTable.NewRow();
_row["id"] = row["endaccount_id"];
_row["startdate"] = row["startdate"];
_row["enddate"] = row["enddate"];
_row["endaccountstr"] = _strEndAccount;
_row["personsellstr"] = _strPersonSell;
_row["flag"] = row["endaccount_type"];
_DataTable.Rows.Add(_row);
//}
string MD5 = "", strMD5 = "";
for (int i = 0; i < _DataTable.Rows.Count; i++)
{
strMD5 += (strMD5 == "" ? "" : ",") + _DataTable.Rows[i]["endaccountstr"].ToString();
}
MD5 = CreateMD5(strMD5);
for (int i = 0; i < _DataTable.Rows.Count; i++)
{
_DataTable.Rows[i]["checkMD5"] = MD5;
}
checkCode = MD5;
}
return _DataTable;
}
#endregion
#region 创建md5 16位大写加密
private static string CreateMD5(string text)
{
var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
//换成utf8后对于中文加密也适用
byte[] output = md5.ComputeHash(Encoding.UTF8.GetBytes(text));
string pass2md5 = BitConverter.ToString(output, 4, 8).Replace("-", "");
//pass2md5 = pass2md5.ToUpper();
return pass2md5;
}
#endregion
///
/// 转换DataTable字段类型
///
///
///
private static DataTable ConvertOraclTableToDoNetTable(DataTable table)
{
DataTable dt = new DataTable();
foreach (DataColumn dc in table.Columns)
{
DataColumn column = new DataColumn();
column.DataType = GetDataType(dc.DataType);
column.ColumnName = dc.ColumnName;
column.Caption = dc.Caption;
dt.Columns.Add(column);
}
dt.TableName = table.TableName;
dt.Merge(table, false, MissingSchemaAction.Ignore);
return dt;
}
///
/// 字段类型
///
///
///
private static Type GetDataType(Type dataType)
{
switch (dataType.ToString())
{
case "System.Double":
return System.Type.GetType("System.Decimal");
case "System.Int32":
return System.Type.GetType("System.Decimal");
case "System.Int16":
return System.Type.GetType("System.Decimal");
case "System.Int64":
return System.Type.GetType("System.Decimal");
default:
return dataType;
}
}
}
}