using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DataUpdate
{
public partial class CommodityDown : Form
{
static QualityHelper _QualityHelper = new QualityHelper();
OracleHelper _OracleHelper = new OracleHelper(_QualityHelper.dbip, _QualityHelper.dbport,
_QualityHelper.conname, _QualityHelper.dbuser, _QualityHelper.dbpass);
string webserviceURL = "http://" + _QualityHelper.dbip + ":" + _QualityHelper.serviceport + "/Service.asmx";
WaiteFrom _WaitForm;
public CommodityDown(string[] Type)
{
InitializeComponent();
DataBaseUpdate();
if (Type.Count() > 0)
{
if (Type[0] == "GoodsHotkey")
{
if (GoodsHotkeyDown())
{
Environment.Exit(0);
}
}
else
{
if (GoodsDownload())
{
Environment.Exit(0);
}
}
}
else
{
Environment.Exit(0);
}
}
public void ShowWaiteForm()
{
_WaitForm = WaiteFrom.GetInstance();
//设置WaitForm的父窗体为当前窗体,以便在WaitForm中使用父窗体对象
_WaitForm.TopMost = true;
_WaitForm.Owner = this;
_WaitForm.ShowMessage("加载中......");
_WaitForm.Show();
Application.DoEvents();
_WaitForm.Refresh();
}
private bool GoodsHotkeyDown()
{
ShowWaiteForm();
_WaitForm.ShowMessage("正在获取商品快捷键信息......");
string _selectsql = string.Format("SELECT HOTKEYSET_ID,SERVERPARTCODE," +
"COMMODITY_BARCODE,HOTKEY,BUSINESSTYPE,DOWNLOADDATE,FLAG,VALID " +
"FROM {0}.T_HOTKEYSET WHERE SERVERPARTCODE = '{1}' AND BUSINESSTYPE = {2}",
_QualityHelper.dbname, _QualityHelper.serverpartcode, _QualityHelper.businesstype);
try
{
using (DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet(_selectsql).Tables[0])
{
if (_DataTable.Rows.Count > 0)
{
_WaitForm.ShowMessage("正在更新商品快捷键......");
DBHelper.ExcuteSql("DELETE FROM T_HOTKEYSET");
for (int i = 0; i < _DataTable.Rows.Count; i++)
{
string _HOTKEYSET_ID = _DataTable.Rows[i]["HOTKEYSET_ID"].ToString();
string _SERVERPARTCODE = _DataTable.Rows[i]["SERVERPARTCODE"].ToString();
string _COMMODITY_BARCODE = _DataTable.Rows[i]["COMMODITY_BARCODE"].ToString();
string _HOTKEY = _DataTable.Rows[i]["HOTKEY"].ToString();
string _BUSINESSTYPE = _DataTable.Rows[i]["BUSINESSTYPE"].ToString();
string _DOWNLOADDATE = _DataTable.Rows[i]["DOWNLOADDATE"].ToString() == "" ?
DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") : _DataTable.Rows[i]["DOWNLOADDATE"].ToString();
string _FLAG = _DataTable.Rows[i]["FLAG"].ToString() == "" ? "1" : _DataTable.Rows[i]["FLAG"].ToString();
string _VALID = _DataTable.Rows[i]["VALID"].ToString() == "" ? "1" : _DataTable.Rows[i]["VALID"].ToString();
string _insertsql = "INSERT INTO T_HOTKEYSET (HOTKEYSET_ID,SERVERPARTCODE,COMMODITY_BARCODE," +
"HOTKEY,BUSINESSTYPE,DOWNLOADDATE,FLAG,VALID) VALUES (" + _HOTKEYSET_ID + ",'" + _SERVERPARTCODE +
"','" + _COMMODITY_BARCODE + "','" + _HOTKEY + "','" + _BUSINESSTYPE + "',DATETIME('" + _DOWNLOADDATE +
"'),'" + _FLAG + "'," + _VALID + ")";
try
{
DBHelper.ExcuteSql(_insertsql);
}
catch { }
_WaitForm.ShowMessage("正在更新商品快捷键......" + (i / _DataTable.Rows.Count) * 100 + "%");
}
for (int i = 5; i > 0; i--)
{
_WaitForm.ShowMessage("商品快捷键更新完成,快捷键总数:" +
_DataTable.Rows.Count + "条。(" + i + ")");
System.Threading.Thread.Sleep(2 * 1000);
}
_WaitForm.Close();
_WaitForm.Dispose();
}
else
{
_WaitForm.ShowMessage("当前门店未在综管平台设置商品快捷键\n如有需要请联系管理员。");
System.Threading.Thread.Sleep(2 * 1000);
}
}
}
catch
{
_WaitForm.Close();
_WaitForm.Dispose();
}
return true;
}
///
/// 下载商品信息(便利店)
///
///
private bool GoodsDownload()
{
KillExe("dbsyc.exe");
ShowWaiteForm();
_WaitForm.ShowMessage("正在校验商品信息完整性...");
string dbname = _QualityHelper.dbname;
string _strDate = "";
string StrSql = "SELECT COMMODITYEX_ID, SERVERPARTCODE, COMMODITY_TYPE, COMMODITY_CODE, " +
"COMMODITY_BARCODE, COMMODITY_NAME, COMMODITY_RULE, COMMODITY_UNIT, COMMODITY_RETAILPRICE, " +
"COMMODITY_MEMBERPRICE, CANCHANGEPRICE, ISVALID, COMMODITY_EN, ISBULK, METERINGMETHOD, " +
"DOWNLOADDATE, FLAG, BUSINESSTYPE, SERVERPARTSHOP_ID FROM T_COMMODITYEX " +
"WHERE SERVERPARTSHOP_ID =" + _QualityHelper.serverpartshop_id;
//备份商品信息
try
{
DBHelper.ExecuteSqlTran("DELETE FROM T_COMMODITYEX_BAK " +
"WHERE COMMODITY_BARCODE IN (SELECT COMMODITY_BARCODE FROM T_COMMODITYEX)");
DBHelper.ExecuteSqlTran("INSERT INTO T_COMMODITYEX_BAK (COMMODITYEX_ID, SERVERPARTCODE, " +
"COMMODITY_TYPE, COMMODITY_CODE, COMMODITY_BARCODE, COMMODITY_NAME, " +
"COMMODITY_RULE, COMMODITY_UNIT, COMMODITY_RETAILPRICE, COMMODITY_MEMBERPRICE, " +
"CANCHANGEPRICE, ISVALID, COMMODITY_EN, ISBULK, METERINGMETHOD, DOWNLOADDATE, FLAG, " +
"BUSINESSTYPE, SERVERPARTSHOP_ID ) SELECT COMMODITYEX_ID, SERVERPARTCODE, COMMODITY_TYPE, " +
"COMMODITY_CODE, COMMODITY_BARCODE, COMMODITY_NAME, COMMODITY_RULE, COMMODITY_UNIT, " +
"COMMODITY_RETAILPRICE, COMMODITY_MEMBERPRICE, CANCHANGEPRICE, ISVALID, COMMODITY_EN, " +
"ISBULK, METERINGMETHOD, DOWNLOADDATE, FLAG, BUSINESSTYPE, SERVERPARTSHOP_ID FROM T_COMMODITYEX");
}
catch
{ }
try
{
DataTable _CommodityTable = DBHelper.QueryOdbc(StrSql).Tables[0];
DataTable _ServerTable = _OracleHelper.ExcuteSqlGetDataSet(StrSql).Tables[0];
if (_CommodityTable.Rows.Count > 0)
{
List ListSQL = new List();
for (int i = 0; i < _CommodityTable.Rows.Count; i++)
{
//定义字段值
string COMMODITYEX_ID = _CommodityTable.Rows[i]["COMMODITYEX_ID"].ToString(),
SERVERPARTCODE = _CommodityTable.Rows[i]["SERVERPARTCODE"].ToString(),
COMMODITY_TYPE = _CommodityTable.Rows[i]["COMMODITY_TYPE"].ToString(),
COMMODITY_CODE = _CommodityTable.Rows[i]["COMMODITY_CODE"].ToString(),
COMMODITY_BARCODE = _CommodityTable.Rows[i]["COMMODITY_BARCODE"].ToString(),
COMMODITY_NAME = _CommodityTable.Rows[i]["COMMODITY_NAME"].ToString(),
COMMODITY_RULE = _CommodityTable.Rows[i]["COMMODITY_RULE"].ToString(),
COMMODITY_UNIT = _CommodityTable.Rows[i]["COMMODITY_UNIT"].ToString(),
COMMODITY_RETAILPRICE = _CommodityTable.Rows[i]["COMMODITY_RETAILPRICE"].ToString(),
COMMODITY_MEMBERPRICE = _CommodityTable.Rows[i]["COMMODITY_MEMBERPRICE"].ToString(),
CANCHANGEPRICE = _CommodityTable.Rows[i]["CANCHANGEPRICE"].ToString(),
ISVALID = _CommodityTable.Rows[i]["ISVALID"].ToString(),
COMMODITY_EN = _CommodityTable.Rows[i]["COMMODITY_EN"].ToString(),
ISBULK = _CommodityTable.Rows[i]["ISBULK"].ToString(),
METERINGMETHOD = _CommodityTable.Rows[i]["METERINGMETHOD"].ToString(),
DOWNLOADDATE = _CommodityTable.Rows[i]["DOWNLOADDATE"].ToString(),
FLAG = _CommodityTable.Rows[i]["FLAG"].ToString(),
BUSINESSTYPE = _CommodityTable.Rows[i]["BUSINESSTYPE"].ToString(),
SERVERPARTSHOP_ID = _CommodityTable.Rows[i]["SERVERPARTSHOP_ID"].ToString();
if (BUSINESSTYPE != "" && SERVERPARTSHOP_ID != "")
{
string _SelectSQL = string.Format("SELECT 1 FROM {2}.T_COMMODITYEX " +
"WHERE COMMODITY_BARCODE = '{0}' AND SERVERPARTSHOP_ID = {1} ",
COMMODITY_BARCODE, SERVERPARTSHOP_ID, dbname);
DataRow[] _Row = _ServerTable.Select("COMMODITY_BARCODE = '" + COMMODITY_BARCODE + "'");
if (_Row.Count() == 0)
{
long _MaxId = 0;
try
{
_MaxId = long.Parse(_OracleHelper.ExcuteSqlGetDataSet("SELECT MAX(COMMODITYEX_ID) " +
"FROM " + dbname + ".T_COMMODITYEX WHERE SERVERPARTSHOP_ID = " +
SERVERPARTSHOP_ID).Tables[0].Rows[0][0].ToString()) + 1;
}
catch
{
_MaxId = 1;
}
string _InsertSQL = "INSERT INTO " + dbname + ".T_COMMODITYEX " +
"( COMMODITYEX_ID, SERVERPARTCODE, COMMODITY_TYPE, " +
"COMMODITY_CODE, COMMODITY_BARCODE, COMMODITY_NAME, " +
"COMMODITY_RULE, COMMODITY_UNIT, COMMODITY_RETAILPRICE, " +
"COMMODITY_MEMBERPRICE, CANCHANGEPRICE, ISVALID, " +
"COMMODITY_EN, ISBULK, METERINGMETHOD, DOWNLOADDATE, " +
"FLAG, BUSINESSTYPE, SERVERPARTSHOP_ID ) " +
"VALUES (" + _MaxId + ",'" + SERVERPARTCODE + "','" + COMMODITY_TYPE + "','" +
_MaxId.ToString().PadLeft(8, '0') + "','" + COMMODITY_BARCODE + "','" + COMMODITY_NAME + "','" +
COMMODITY_RULE + "','" + COMMODITY_UNIT + "'," +
(COMMODITY_RETAILPRICE == "" ? "NULL" : COMMODITY_RETAILPRICE) + "," +
(COMMODITY_MEMBERPRICE == "" ? "NULL" : COMMODITY_MEMBERPRICE) + ",1,1,'" +
(COMMODITY_EN == "" ? "*" : COMMODITY_EN) + "'," +
(ISBULK == "" ? "0" : ISBULK) + "," +
(METERINGMETHOD == "" ? "1" : METERINGMETHOD) + ",TO_DATE('" +
(DOWNLOADDATE == "" ? DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") : DOWNLOADDATE) +
"','YYYY/MM/DD HH24:MI:SS')," + (FLAG == "" ? "1" : FLAG) + "," +
(BUSINESSTYPE == "" ? "NULL" : BUSINESSTYPE) + "," +
(SERVERPARTSHOP_ID == "" ? "NULL" : SERVERPARTSHOP_ID) + ") ";
//执行插入
try { _OracleHelper.ExecuteSqlTran(_InsertSQL); } catch { }
}
else
{
decimal.TryParse(_Row[0]["COMMODITY_RETAILPRICE"].ToString(), out decimal _RETAILPRICE);
decimal.TryParse(_Row[0]["COMMODITY_MEMBERPRICE"].ToString(), out decimal _MEMBERPRICE);
decimal.TryParse(COMMODITY_RETAILPRICE, out decimal _COMMODITY_RETAILPRICE);
decimal.TryParse(COMMODITY_MEMBERPRICE, out decimal _COMMODITY_MEMBERPRICE);
bool _Local = DateTime.TryParse(DOWNLOADDATE, out DateTime _LocalDateTime);
bool _Server = DateTime.TryParse(_Row[0]["DOWNLOADDATE"].ToString(), out DateTime _ServerDateTime);
if (_Local && _LocalDateTime > _ServerDateTime)
{
if (_Row[0]["COMMODITY_BARCODE"].ToString() == COMMODITY_BARCODE &&
(_Row[0]["COMMODITY_CODE"].ToString() != COMMODITY_CODE ||
_Row[0]["COMMODITY_NAME"].ToString() != COMMODITY_NAME ||
_Row[0]["COMMODITY_TYPE"].ToString() != COMMODITY_TYPE ||
_RETAILPRICE != _COMMODITY_RETAILPRICE || _MEMBERPRICE != _COMMODITY_MEMBERPRICE))
{
string _UpdateSQL = "UPDATE " + dbname + ".T_COMMODITYEX SET SERVERPARTCODE = '" + SERVERPARTCODE + "'," +
"COMMODITY_TYPE = '" + COMMODITY_TYPE + "'," + "COMMODITY_NAME = '" + COMMODITY_NAME + "'," +
"COMMODITY_RULE = '" + COMMODITY_RULE + "'," + "COMMODITY_UNIT = '" + COMMODITY_UNIT + "'," +
"COMMODITY_RETAILPRICE = " + (COMMODITY_RETAILPRICE == "" ? "NULL" : COMMODITY_RETAILPRICE) + "," +
"COMMODITY_MEMBERPRICE = " + (COMMODITY_MEMBERPRICE == "" ? "NULL" : COMMODITY_MEMBERPRICE) + "," +
"CANCHANGEPRICE = " + (CANCHANGEPRICE == "" ? "1" : CANCHANGEPRICE) + "," + "ISVALID = 1," +
"COMMODITY_EN = '" + COMMODITY_EN + "'," + "ISBULK = " + (ISBULK == "" ? "0" : ISBULK) + "," +
"METERINGMETHOD = " + (METERINGMETHOD == "" ? "1" : METERINGMETHOD) + "," +
"DOWNLOADDATE = TO_DATE('" + (DOWNLOADDATE == "" ? DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") :
DOWNLOADDATE) + "','YYYY/MM/DD HH24:MI:SS')," + "FLAG = " + (FLAG == "" ? "1" : FLAG) + "," +
"BUSINESSTYPE = " + (BUSINESSTYPE == "" ? "NULL" : BUSINESSTYPE) +
" WHERE COMMODITY_BARCODE = '" + COMMODITY_BARCODE + "' AND SERVERPARTSHOP_ID = " + SERVERPARTSHOP_ID;
try
{
_OracleHelper.ExecuteSqlTran(_UpdateSQL);
}
catch (Exception ex)
{
}
}
}
}
}
_WaitForm.ShowMessage(string.Format("正在验证商品信息 {0}%", (((decimal)i / _CommodityTable.Rows.Count) * 100).ToString("F0")));
}
}
}
catch (Exception ex)
{
}
//检测商品版本信息
try
{
_strDate = _OracleHelper.ExcuteSqlGetDataSet("SELECT MAX(DOWNLOADDATE) " +
"FROM T_COMMODITYEX WHERE SERVERPARTSHOP_ID =" +
_QualityHelper.serverpartshop_id).Tables[0].Rows[0][0].ToString();
}
catch
{
_strDate = "";
}
//if (_strDate == "")
//{
// _strDate = "1970/01/01 00:00:00";
//}
string _strLocalDate = "";
try
{
_strLocalDate = DBHelper.QueryOdbc("select max(DOWNLOADDATE) from T_COMMODITYEX").Tables[0].Rows[0][0].ToString();
}
catch
{
_strLocalDate = "";
}
if (_strLocalDate == "")
{
_strLocalDate = "1970/01/01 00:00:00";
}
bool b_Server = DateTime.TryParse(_strDate, out DateTime _ServerDate);
bool b_Local = DateTime.TryParse(_strDate, out DateTime _LocalDate);
if (b_Server && _ServerDate < _LocalDate)
{
if (MessageBox.Show("本地商品库版本大于服务器版本,\n是否备份后更新商品库", "系统提示", MessageBoxButtons.YesNo,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
try
{
using (DataTable _CommodityTable = DBHelper.QueryOdbc(StrSql).Tables[0])
{
if (_CommodityTable.Rows.Count > 0)
{
DataSet _DataSet = SplitDataTable(_CommodityTable, 50);
for (int i = 0; i < _DataSet.Tables.Count; i++)
{
_WaitForm.ShowMessage(string.Format("正在备份商品信息 {0}%", (((decimal)i / _DataSet.Tables.Count) * 100).ToString("F0")));
string[] Json = { JsonHelper.ToJson(_DataSet.Tables[i]) };
try
{
WSHelper.InvokeWebService(webserviceURL, "LocalCommodityExUpLoad", Json);
}
catch (Exception ex)
{
}
}
}
}
}
catch (Exception ex)
{
//MessageBox.Show("数据库连接失败!", "系统提示");
}
}
}
//下载商品信息并覆盖本地
_WaitForm.ShowMessage("正在更新商品信息...");
string strselect = string.Format("SELECT COMMODITYEX_ID, SERVERPARTCODE, COMMODITY_TYPE, " +
"COMMODITY_CODE, COMMODITY_BARCODE, COMMODITY_NAME,COMMODITY_RULE, " +
"COMMODITY_UNIT, COMMODITY_RETAILPRICE, COMMODITY_MEMBERPRICE, CANCHANGEPRICE, " +
"ISVALID, COMMODITY_EN, ISBULK, METERINGMETHOD, DOWNLOADDATE, FLAG, BUSINESSTYPE, " +
"SERVERPARTSHOP_ID FROM (SELECT COMMODITYEX_ID, SERVERPARTCODE, COMMODITY_TYPE, " +
"COMMODITY_CODE, COMMODITY_BARCODE, COMMODITY_NAME, COMMODITY_RULE, " +
"COMMODITY_UNIT, COMMODITY_RETAILPRICE, COMMODITY_MEMBERPRICE, CANCHANGEPRICE, " +
"ISVALID, COMMODITY_EN, ISBULK, METERINGMETHOD, DOWNLOADDATE, FLAG, BUSINESSTYPE, " +
"SERVERPARTSHOP_ID, ROW_NUMBER() OVER(PARTITION BY COMMODITY_BARCODE " +
"ORDER BY DOWNLOADDATE DESC) COLNUM FROM {0}.T_COMMODITYEX " +
"WHERE SERVERPARTSHOP_ID = {1} ) WHERE COLNUM = 1 ORDER BY COMMODITYEX_ID DESC",
_QualityHelper.dbname, _QualityHelper.serverpartshop_id);
try
{
using (DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet(strselect, "t_commodityex").Tables["t_commodityex"])
{
//_DataTable.TableName = "t_commodityex";
string columns = @"COMMODITYEX_ID, SERVERPARTCODE, COMMODITY_TYPE, COMMODITY_CODE,
COMMODITY_BARCODE, COMMODITY_NAME, COMMODITY_RULE, COMMODITY_UNIT, COMMODITY_RETAILPRICE,
COMMODITY_MEMBERPRICE, CANCHANGEPRICE, ISVALID, COMMODITY_EN, ISBULK, METERINGMETHOD,
DOWNLOADDATE, FLAG, BUSINESSTYPE, SERVERPARTSHOP_ID";
string strrow = "";
List _list = new List();
List insertlist = new List();
//insertlist.Add("delete from t_commodityex");
//foreach (DataColumn col in _DataTable.Columns)
//{
// columns += (columns == "" ? col.ColumnName : "," + col.ColumnName);
//}
DataTable _CommodityTable = DBHelper.QueryOdbc(StrSql).Tables[0];
int count = 0;
string _serverpartshop_id = _QualityHelper.serverpartshop_id;
foreach (DataRow row in _DataTable.Rows)
{
count++;
_WaitForm.ShowMessage(string.Format("正在更新商品信息 {0}%", (((decimal)count / _DataTable.Rows.Count) * 100).ToString("F0")));
strrow = "";
string COMMODITYEX_ID = row["COMMODITYEX_ID"].ToString();
string SERVERPARTCODE = row["SERVERPARTCODE"].ToString();
string COMMODITY_TYPE = row["COMMODITY_TYPE"].ToString();
string COMMODITY_CODE = row["COMMODITY_CODE"].ToString();
string COMMODITY_BARCODE = row["COMMODITY_BARCODE"].ToString();
string COMMODITY_NAME = row["COMMODITY_NAME"].ToString();
string COMMODITY_RULE = row["COMMODITY_RULE"].ToString();
string COMMODITY_UNIT = row["COMMODITY_UNIT"].ToString();
string COMMODITY_RETAILPRICE = row["COMMODITY_RETAILPRICE"].ToString();
string COMMODITY_MEMBERPRICE = row["COMMODITY_MEMBERPRICE"].ToString();
string CANCHANGEPRICE = row["CANCHANGEPRICE"].ToString();
string ISVALID = row["ISVALID"].ToString();
string COMMODITY_EN = row["COMMODITY_EN"].ToString();
string ISBULK = row["ISBULK"].ToString();
string METERINGMETHOD = row["METERINGMETHOD"].ToString();
string DOWNLOADDATE = row["DOWNLOADDATE"].ToString();
string FLAG = row["FLAG"].ToString();
string BUSINESSTYPE = row["BUSINESSTYPE"].ToString();
string SERVERPARTSHOP_ID = row["SERVERPARTSHOP_ID"].ToString();
DataRow[] _Row = _CommodityTable.Select("commodity_barcode = '" + COMMODITY_BARCODE + "'");
if (_Row.Count() > 0)
{
decimal.TryParse(_Row[0]["COMMODITY_RETAILPRICE"].ToString(), out decimal _RETAILPRICE);
decimal.TryParse(_Row[0]["COMMODITY_MEMBERPRICE"].ToString(), out decimal _MEMBERPRICE);
decimal.TryParse(COMMODITY_RETAILPRICE, out decimal _COMMODITY_RETAILPRICE);
decimal.TryParse(COMMODITY_MEMBERPRICE, out decimal _COMMODITY_MEMBERPRICE);
if (_Row[0]["COMMODITY_BARCODE"].ToString() == COMMODITY_BARCODE &&
(_Row[0]["COMMODITY_CODE"].ToString() != COMMODITY_CODE ||
_Row[0]["COMMODITY_NAME"].ToString() != COMMODITY_NAME ||
_Row[0]["COMMODITY_TYPE"].ToString() != COMMODITY_TYPE ||
_RETAILPRICE != _COMMODITY_RETAILPRICE ||
_MEMBERPRICE != _COMMODITY_MEMBERPRICE))
{
string _UpdateSql = "UPDATE T_COMMODITYEX SET COMMODITYEX_ID = " + COMMODITYEX_ID +
",COMMODITY_CODE = '" + COMMODITY_CODE + "',COMMODITY_NAME = '" + COMMODITY_NAME +
"',COMMODITY_RULE = '" + COMMODITY_RULE + "',COMMODITY_UNIT = '" + COMMODITY_UNIT +
"',COMMODITY_RETAILPRICE = " + COMMODITY_RETAILPRICE + ",COMMODITY_MEMBERPRICE = " +
COMMODITY_MEMBERPRICE + ",CANCHANGEPRICE = " + CANCHANGEPRICE + ",ISVALID = " + ISVALID +
",COMMODITY_EN = '" + (COMMODITY_EN == "" ? "*" : COMMODITY_EN) + "',ISBULK = " + ISBULK +
",METERINGMETHOD = " + METERINGMETHOD + ",DOWNLOADDATE = datetime('" + DOWNLOADDATE +
"'),FLAG = " + FLAG + ",BUSINESSTYPE = " + BUSINESSTYPE + ",SERVERPARTSHOP_ID = " + _serverpartshop_id +
" WHERE COMMODITY_BARCODE = '" + COMMODITY_BARCODE + "'";
insertlist.Add(_UpdateSql);
}
}
else
{
//DBHelper.ExecuteSqlTran("delete from t_commodityex where commodity_barcode = '" + COMMODITY_BARCODE + "'");
strrow = COMMODITYEX_ID + ",'" + SERVERPARTCODE + "','" + COMMODITY_TYPE + "','" +
COMMODITY_CODE + "','" + COMMODITY_BARCODE + "','" + COMMODITY_NAME + "','" +
COMMODITY_RULE + "','" + COMMODITY_UNIT + "'," +
(COMMODITY_RETAILPRICE == "" ? "0" : COMMODITY_RETAILPRICE) + "," +
(COMMODITY_MEMBERPRICE == "" ? "0" : COMMODITY_MEMBERPRICE) + "," +
(CANCHANGEPRICE == "" ? "1" : CANCHANGEPRICE) + "," +
(ISVALID == "" ? "1" : ISVALID) + ",'" +
(COMMODITY_EN == "" ? "*" : COMMODITY_EN) + "'," +
(ISBULK == "" ? "0" : ISBULK) + "," +
(METERINGMETHOD == "" ? "1" : METERINGMETHOD) + ",DATETIME('" +
(DOWNLOADDATE == "" ? DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") : DOWNLOADDATE) +
"')," + (FLAG == "" ? "1" : FLAG) + "," +
(BUSINESSTYPE == "" ? "NULL" : BUSINESSTYPE) + "," +
(SERVERPARTSHOP_ID == "" ? _serverpartshop_id : SERVERPARTSHOP_ID);
_list.Add(strrow);
}
}
string str = "";
for (int i = 0; i < _list.Count; i++)
{
str += (str == "" ? "(" + _list[i] + ")" : ",(" + _list[i] + ")");
if ((i + 1) % 100 == 0)
{
insertlist.Add(string.Format("insert into t_commodityex ({0}) values {1}", columns, str));
str = "";
}
else if (i + 1 == _list.Count)
{
insertlist.Add(string.Format("insert into t_commodityex ({0}) values {1}", columns, str));
str = "";
}
}
int _failcount = 0;
for (int n = 0; n < insertlist.Count; n++)
{
_WaitForm.ShowMessage(string.Format("正在保存商品信息 {0}%", (((decimal)(n + 1) / insertlist.Count) * 100).ToString("F0")));
try
{
DBHelper.ExecuteSqlTran(insertlist[n].ToString());
}
catch (Exception ex) { }
}
for (int i = 5; i > 0; i--)
{
_WaitForm.ShowMessage("商品库已更新至最新版本,共" + _DataTable.Rows.Count + "条;\n" + i + "秒后自动返回收银系统");
System.Threading.Thread.Sleep(1 * 1000);
}
}
}
catch (Exception ex)
{
_WaitForm.ShowMessage("商品库更新失败,原因:" + ex.Message);
}
_WaitForm.Close();
_WaitForm.Dispose();
return true;
}
private void CommodityDown_Load(object sender, EventArgs e)
{
Hide();
}
public bool KillExe(string strProName)
{
Process[] processes = Process.GetProcessesByName(strProName.Substring(0, strProName.LastIndexOf('.'))); //同程序名的所有进程
foreach (Process p in processes)//判断当前进程中是否已有该程序
{
if (p.MainModule.ModuleName == strProName)//通过程序路径判断,而不能通过程序名判断
{
p.Kill(); // 结束进程
}
}
return true;
}
private void DataBaseUpdate()
{
try
{
DBHelper.QueryOdbc("select 1 from t_commodityex_bak");
}
catch
{
string _CreateSql = "create table dba.t_commodityex_bak (commodityex_id decimal(9, 0) not null," +
"serverpartcode char(10) null,commodity_type char(50) null,commodity_code char(10) null," +
"commodity_barcode char(30) null,commodity_name char(50) null,commodity_rule char(50) null," +
"commodity_unit char(100) null,commodity_retailprice decimal(16, 2) null,commodity_memberprice decimal(16, 2) null," +
"canchangeprice decimal(1, 0) null,isvalid decimal(1, 0) null,commodity_en char(10) null,isbulk decimal(1, 0) null," +
"meteringmethod decimal(1, 0) null,downloaddate timestamp null,flag decimal(1, 0) null,businesstype decimal(6, 0) null," +
"serverpartshop_id decimal(9, 0) null,print_date timestamp null,container_code char(2000) null,commodity_symbol char(200) null)";
try
{
DBHelper.ExecuteSqlTran(_CreateSql);
}
catch (Exception ex)
{
LogHelper.WriteServiceLog(ex.Message);
}
}
}
///
/// 分解数据表
///
/// 需要分解的表
/// 每个表包含的数据量
///
public DataSet SplitDataTable(DataTable originalTab, int rowsNum)
{
//获取所需创建的表数量
int tableNum = (int)Math.Ceiling((decimal)originalTab.Rows.Count / rowsNum);
//获取数据余数
int remainder = originalTab.Rows.Count % rowsNum;
DataSet ds = new DataSet();
//如果只需要创建1个表,直接将原始表存入DataSet
//if (originalTab.Rows.Count <= rowsNum)
//{
// ds.Tables.Add(originalTab);
//}
//else
//{
DataTable[] tableSlice = new DataTable[tableNum];
//Save orginal columns into new table.
for (int c = 0; c < tableNum; c++)
{
tableSlice[c] = originalTab.Clone();
tableSlice[c].TableName = originalTab.TableName + c.ToString();
}
//Import Rows
for (int i = 0; i < tableNum; i++)
{
// if the current table is not the last one
//if (i != tableNum - 1)
//{
for (int j = i * rowsNum; j < ((i + 1) * rowsNum); j++)
{
if (j >= originalTab.Rows.Count)
{
break;
}
tableSlice[i].ImportRow(originalTab.Rows[j]);
}
//}
//else
//{
// for (int k = i * rowsNum; k < ((i + 1) * rowsNum + remainder); k++)
// {
// tableSlice[i].ImportRow(originalTab.Rows[k]);
// }
//}
}
//add all tables into a dataset
foreach (DataTable dt in tableSlice)
{
ds.Tables.Add(dt);
}
//}
return ds;
}
}
}