2025-03-27 15:05:14 +08:00

320 lines
14 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.Configuration;
using System.Data;
using System.IO;
using System.Text.RegularExpressions;
using SuperMap.RealEstate.Web.UI;
using SuperMap.RealEstate.CoreFrameWork;
using Business = SuperMap.RealEstate.HighWay.Storage.Business;
using HCC = HZQR.Common.Common;
using HZQR.Common;
namespace SuperMap.RealEstate.HighWay.CloudModule.HotKeySet
{
public partial class UpdateExcel : Storage.UI.BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) return;
btnDownExcel.Enabled = false;
//设置按钮状态
SetControlClientAction(btnUpload, false);
SetControlClientAction(btnDownExcel, false);
}
#region -> excel文件
protected void btnUpload_Click(object sender, EventArgs e)
{
if (fpUpload.HasFile)
{
string[] AExt = fpUpload.FileName.Split('.');
string strExt = "";
if (AExt.Length > 1)
{
strExt = AExt[AExt.Length - 1];
}
//扩展名必须为xls
if (strExt == "xls")
{
//创建上传服务器的临时Excel名称
string sUploadFile = GetGuid() + '.' + strExt;
string sPathFile = Server.MapPath("/ImportExcel");
if (Directory.Exists(sPathFile) == false)
{
Directory.CreateDirectory(sPathFile);
}
//指定文件夹的路径
string strSavePath = Path.Combine(sPathFile, sUploadFile);
//上传文件
fpUpload.SaveAs(strSavePath);
//临时保存数据源
lblUploadFile.Text = strSavePath;
string sheetname = "Sheet1$";
//此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)
string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + lblUploadFile.Text +
";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConn);
conn.Open();
DataTable dtExcelSchema = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,
new object[] { null, null, null, "TABLE" });
if (dtExcelSchema.Rows.Count > 0)
{
sheetname = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
}
System.Data.OleDb.OleDbDataAdapter oada = new System.Data.OleDb.OleDbDataAdapter(
"select * from [" + sheetname + "]", strConn);
//获取数据导出到DataSet
DataSet ds = new DataSet();
oada.Fill(ds);
conn.Close();
DataTable dt = ds.Tables[0];
table1.InnerHtml = GetHotKetTalbe(dt);
btnDownExcel.Enabled = true;
}
else
{
Alert("请选择上传XLS文件");
}
}
else
{
Alert("请选择上传XLS文件");
}
}
private string GetHotKetTalbe(DataTable dt)
{
string _Result = "<table width='100%' border='1' cellspacing='0' cellpadding='0'>";
_Result += "<tr bgcolor='#C0C0C' style='height:42px' >"
+ "<th style='text-align:center'>序列</th>"
+ "<th style='text-align:center'>快捷键</th>"
+ "<th style='text-align:center'>商品业态</th>"
+ "<th style='text-align:center'>商品条码</th>"
+ "<th style='text-align:center'>商品名称</th></tr>";
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Columns.Count > 2)
{
_Result += "<tr style='height:42px'>";
_Result += "<td style='text-align:center'>" + (i + 1) + "</td>";
_Result += "<td style='text-align:center'>" + dt.Rows[i][0].ToString() + "</td>";
_Result += "<td style='text-align:center'>" + dt.Rows[i][1].ToString() + "</td>";
_Result += "<td style='text-align:center'>" + dt.Rows[i][2].ToString() + "</td>";
_Result += "<td style='text-align:center'>" + dt.Rows[i][3].ToString() + "</td>";
_Result += "</tr>";
}
else
{
_Result += "<tr style='height:42px'>";
_Result += "<td colspan='5' style='text-align:center'>文件格式不正确</td>";
_Result += "</tr>";
break;
}
}
_Result += "</table>";
return _Result;
}
/// <summary>
/// 由连字符分隔的32位数字
/// </summary>
/// <returns></returns>
private static string GetGuid()
{
System.Guid guid = new Guid();
guid = Guid.NewGuid();
return guid.ToString();
}
#endregion
protected void btnUpdata_Click(object sender, EventArgs e)
{
string sheetname = "Sheet1$";
//此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)
string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + lblUploadFile.Text +
";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConn);
conn.Open();
DataTable dtExcelSchema = conn.GetOleDbSchemaTable(
System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
//将第一个表取出来
if (dtExcelSchema.Rows.Count > 0)
{
sheetname = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
}
//从获取的Excel Sheet中独处数据
System.Data.OleDb.OleDbDataAdapter oada = new System.Data.OleDb.OleDbDataAdapter("select * from [" + sheetname + "]", strConn);
//获取数据导出到DataSet
DataSet ds = new DataSet();
oada.Fill(ds);
if (Request["SERVERPART_ID"].ToDecrypt().Length > 0)
{
Alert(UpdateHotKey(Request["SERVERPART_ID"].ToDecrypt(), ds.Tables[0]));
}
else
{
Alert("请选择服务区!");
}
RefreshOpenerGridPage(RefreshGridPageType.Insert);
}
#region ->
private string UpdateHotKey(string SERVERPART_ID, DataTable dt)
{
int ModifyCount = 0;
string _Result = "", Commodity_IDS = "";
//设置商品版本Datatable用于同步云端商品版本信息
DataTable dtDataVersion = new DataTable();
dtDataVersion.Columns.Add("BUSINESSTYPE", typeof(int));
dtDataVersion.Columns.Add("DATAVERSION", typeof(DateTime));
for (int i = 0; i < dt.Rows.Count; i++)
{
//解析商品业态
string BUSINESSTYPE = DictionaryHelper.GetFieldEnumValue(
"BUSINESSTYPE", dt.Rows[i][1].ToString(), Transaction, ',');
if (!string.IsNullOrEmpty(BUSINESSTYPE) && !string.IsNullOrWhiteSpace(dt.Rows[i][0].ToString()))
{
Business.COMMODITY _COMMODITY = new Business.COMMODITY(Transaction);
_COMMODITY.AddSearchParameter("SERVERPART_ID", SERVERPART_ID);
_COMMODITY.AddSearchParameter("COMMODITY_BARCODE", dt.Rows[i][2].ToString());
_COMMODITY.AddSearchParameter("BUSINESSTYPE", BUSINESSTYPE);
if (_COMMODITY.Search(GoodsProvinceCode))
{
if (_COMMODITY.IsDuplicateHotKey(_COMMODITY.COMMODITY_ID.ToString(), dt.Rows[i][0].ToString().Trim(),
_COMMODITY.SERVERPART_ID.ToString(), _COMMODITY.BUSINESSTYPE.ToString(), GoodsProvinceCode))
{
_Result += _Result.Length > 0 ? "," : "";
_Result += dt.Rows[i][3].ToString() + "[" + dt.Rows[i][2].ToString() + "]";
}
else
{
_COMMODITY.COMMODITY_HOTKEY = dt.Rows[i][0].ToString().Trim();
_COMMODITY.Update(GoodsProvinceCode);
Commodity_IDS += (Commodity_IDS == "" ? "" : ",") + _COMMODITY.COMMODITY_ID;
if (dtDataVersion.Select("BUSINESSTYPE = '" + _COMMODITY.BUSINESSTYPE + "'").Length == 0)
{
DataRow drDataVersion = dtDataVersion.NewRow();
drDataVersion["BUSINESSTYPE"] = _COMMODITY.BUSINESSTYPE;
drDataVersion["DATAVERSION"] = _COMMODITY.OPERATE_DATE;
dtDataVersion.Rows.Add(drDataVersion);
}
else if (dtDataVersion.Select("BUSINESSTYPE = '" + _COMMODITY.BUSINESSTYPE +
"' AND DATAVERSION > '" + _COMMODITY.OPERATE_DATE.ToString() + "'").Length == 0)
{
DataRow drDataVersion = dtDataVersion.Select(
"BUSINESSTYPE = '" + _COMMODITY.BUSINESSTYPE + "'")[0];
drDataVersion["BUSINESSTYPE"] = _COMMODITY.BUSINESSTYPE;
drDataVersion["DATAVERSION"] = _COMMODITY.OPERATE_DATE;
}
ModifyCount++;
}
}
else
{
_Result += _Result.Length > 0 ? "," : "";
_Result += dt.Rows[i][3].ToString() + "[" + dt.Rows[i][2].ToString() + "]";
}
}
else
{
_Result += (_Result.Length > 0 ? "," : "") + dt.Rows[i][3].ToString() + "[" + dt.Rows[i][2].ToString() + "]";
}
}
_Result = "导入成功" + (_Result.Length > 0 ? ",以下商品导入失败" : "!") + _Result;
if (ModifyCount > 0)
{
if (SERVERPART_ID == WholeServerpartID)
{
//下发商品至服务区
ExchangeData.Business.DOWNLOADUPDATE.UpdateDataVersion(Transaction, PassportInfo.ProvinceCode,
"T_COMMODITYEX_UNIT", DateTime.Now);
foreach (DataRow drDataVersion in dtDataVersion.Rows)
{
//往数据中心表更新当前服务区商品版本
HCC.CommonHelper.SynchroUniformDataVersion("T_COMMODITYUNIFIED", drDataVersion["DATAVERSION"].ToString(),
PassportInfo.ProvinceCode, drDataVersion["BUSINESSTYPE"].ToString());
}
//同步商品至合作商户平台
DataTable dtCommodityList = Business.COMMODITY.GetCommodityList(Transaction, GoodsProvinceCode, Commodity_IDS);
string JsonString = Business.COMMODITY.ChangeListToJson(dtCommodityList, PassportInfo.ProvinceCode);
HCC.CommonHelper.PostCommodityToWebAPI(JsonString, PassportInfo.ProvinceCode, SERVERPART_ID);
}
else
{
Business.SERVERPART _SERVERPART = Business.CommonHelper.GetServerpartByID(
Transaction, SERVERPART_ID.TryParseToInt());
//下发商品至服务区
ExchangeData.Business.DOWNLOADUPDATE.UpdateDataVersion(Transaction, _SERVERPART.SERVERPART_CODE,
"T_COMMODITYEX_UNIT", DateTime.Now);
foreach (DataRow drDataVersion in dtDataVersion.Rows)
{
//往数据中心表更新当前服务区商品版本
HCC.CommonHelper.SynchroDataVersion("T_COMMODITY", drDataVersion["DATAVERSION"].ToString(),
_SERVERPART.SERVERPART_CODE, "", "", drDataVersion["BUSINESSTYPE"].ToString());
}
//同步商品至合作商户平台
DataTable dtCommodityList = Business.COMMODITY.GetCommodityList(Transaction, GoodsProvinceCode, Commodity_IDS);
string JsonString = Business.COMMODITY.ChangeListToJson(dtCommodityList, _SERVERPART.SERVERPART_CODE);
HCC.CommonHelper.PostCommodityToWebAPI(JsonString, PassportInfo.ProvinceCode, SERVERPART_ID);
}
}
return _Result;
}
#endregion
#region -> Int32类型的数字
/// <summary>
/// 判断对象是否为Int32类型的数字
/// </summary>
/// <param name="Expression"></param>
/// <returns></returns>
public static bool IsNumeric(object expression)
{
if (expression != null)
{
return IsNumeric(expression.ToString());
}
return false;
}
/// <summary>
/// 判断对象是否为Int32类型的数字
/// </summary>
/// <param name="Expression"></param>
/// <returns></returns>
public static bool IsNumeric(string expression)
{
if (expression != null)
{
string str = expression;
if (str.Length > 0 && str.Length <= 11 && Regex.IsMatch(str, @"^[-]?[0-9]*[.]?[0-9]*$"))
{
if ((str.Length < 10) || (str.Length == 10 && str[0] == '1') || (str.Length == 11 && str[0] == '-' && str[1] == '1'))
{
return true;
}
}
}
return false;
}
#endregion
}
}