2025-03-28 09:49:56 +08:00

583 lines
34 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.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;
}
/// <summary>
/// 下载商品信息(便利店)
/// </summary>
/// <returns></returns>
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<string> ListSQL = new List<string>();
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<string> _list = new List<string>();
List<string> insertlist = new List<string>();
//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);
}
}
}
/// <summary>
/// 分解数据表
/// </summary>
/// <param name="originalTab">需要分解的表</param>
/// <param name="rowsNum">每个表包含的数据量</param>
/// <returns></returns>
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;
}
}
}