583 lines
34 KiB
C#
583 lines
34 KiB
C#
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;
|
||
}
|
||
}
|
||
}
|