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; } } }