using System; using System.Collections.Generic; using System.Data; using System.Data.Odbc; using System.Drawing; using System.Runtime.InteropServices; using System.Threading; using System.Web; using System.Windows.Forms; using ZXing; using ZXing.Common; using ZXing.QrCode; namespace DataUpdate { public partial class DataUpdate : Form { EncodingOptions options = null; BarcodeWriter writer = null; //调用API [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] public static extern IntPtr GetForegroundWindow(); //获得本窗体的句柄 [DllImport("user32.dll", EntryPoint = "SetForegroundWindow")] public static extern bool SetForegroundWindow(IntPtr hWnd);//设置此窗体为活动窗体 public static string _type; public static decimal days = -3; public string serverpartcode { get { return ConfigUrationValues("serverpartcode", "").Trim(); } } public string shopcode { get { return ConfigUrationValues("shopcode", "").Trim(); } } public string machinecode { get { return ConfigUrationValues("machinecode", "").Trim(); } } public DataUpdate(string[] type, string days) { InitializeComponent(); WindowState = FormWindowState.Maximized; _type = type[0]; QRCodeThread(days); TimerHandle.Interval = 1000; TimerHandle.Start(); } public string checkcode; DataTable list { get; set; } private void TimerHandle_Tick(object sender, EventArgs e) { if (Handle != GetForegroundWindow()) //持续使该窗体置为最前,屏蔽该行则单次置顶 { SetForegroundWindow(Handle); } } #region 方法 --> 开始二维码生成 /// /// 开始二维码生成 /// public void QRCodeThread(string days) { //if (_type == "CommoditySale") //{ //InputMain Input = new InputMain(_type); //Input.Text = "选择上传天数"; //Input.ShowDialog(); //if (Input.DialogResult == DialogResult.OK) //{ double _double = Convert.ToDouble(days) * -1; if (_double < 0) QRcodeAdd(_type, DateTime.Now.AddDays(_double).ToShortDateString()); else QRcodeAdd(_type, strUpload_Date(_type)); //} //else //{ // QRcodeAdd(_type, strUpload_Date(_type)); //} } #endregion #region 方法 --> 生成本次单品集合数据二维码字符串列表 /// /// 生成单品集合数据 /// private DataTable SaleQrCode(string Upload_Date) { string _strSalestart = ""; string _strSaleend = ""; string strtmp = ""; string saletmp = ""; int m = 0; //List _listSale = new List(); DataTable _DataTable = new DataTable("list"); _DataTable.Columns.Add("id", typeof(decimal)); _DataTable.Columns.Add("startdate", typeof(DateTime)); _DataTable.Columns.Add("enddate", typeof(DateTime)); _DataTable.Columns.Add("salestr", typeof(string)); _DataTable.Columns.Add("salerow", typeof(int)); _DataTable.Columns.Add("checkMD5", typeof(string)); //获取未上传单品记录(交班时间) string strsql = "select transfer_id, serverpartcode, shopcode, startdate, enddate from t_transfer_sale a " + "where serverpartcode = '" + serverpartcode + "' and shopcode = '" + shopcode + "' and enddate > datetime('" + Upload_Date + "') and not exists ( select 1 from t_dataupdate b " + " where a.transfer_id = b.data_id and enddate = b.data_date and b.data_type = 3001 and " + "b.data_date <= datetime('" + Upload_Date + "')) order by transfer_id asc"; using (OdbcDataAdapter da = new OdbcDataAdapter(strsql, AnyWhereConn())) { DataSet ds = new DataSet(); da.Fill(ds, "t_transfer_sale"); DataTable dt = ds.Tables["t_transfer_sale"]; for (int i = 0; i < dt.Rows.Count; i++) { m = 0; _strSalestart = dt.Rows[i]["serverpartcode"].ToString() + "|" + dt.Rows[i]["shopcode"].ToString() + "|" + Convert.ToDateTime(dt.Rows[i]["startdate"]).ToString("yyyyMMddHHmmss") + "|" + Convert.ToDateTime(dt.Rows[i]["enddate"]).ToString("yyyyMMddHHmmss"); //根据交班时间获取单品记录 strsql = "select b.commodity_symbol,a.totalcount,a.totalsellamount from t_commoditysale a, t_commodityex b " + " where a.startdate = datetime('" + dt.Rows[i]["startdate"].ToString() + "') and a.enddate = datetime('" + dt.Rows[i]["enddate"].ToString() + "') and a.serverpartcode = '" + dt.Rows[i]["serverpartcode"].ToString() + "' and shopcode = '" + dt.Rows[i]["shopcode"].ToString() + "' and a.commodity_code = b.commodity_code " + " order by commoditysale_id"; using (OdbcDataAdapter saleda = new OdbcDataAdapter(strsql, AnyWhereConn())) { DataSet _DataSet = new DataSet(); saleda.Fill(_DataSet, "t_commoditysale"); DataTable _SaleTable = _DataSet.Tables["t_commoditysale"]; for (int n = 0; n < _SaleTable.Rows.Count; n++) { saletmp = _SaleTable.Rows[n]["commodity_symbol"].ToString() + "^" + _SaleTable.Rows[n]["totalcount"].ToString().Replace(".00", "") + "^" + _SaleTable.Rows[n]["totalsellamount"].ToString().Replace(".00", ""); if ((strtmp.Length + saletmp.Length) > 430) { m++; DataRow _row = _DataTable.NewRow(); _row["id"] = dt.Rows[i]["transfer_id"]; _row["startdate"] = dt.Rows[i]["startdate"]; _row["enddate"] = dt.Rows[i]["enddate"]; _row["salestr"] = strtmp; _row["salerow"] = m; _DataTable.Rows.Add(_row); strtmp = ""; } strtmp += (strtmp == "" ? _strSalestart + "|" : ",") + saletmp; if (n == (_SaleTable.Rows.Count - 1)) { m++; DataRow _row = _DataTable.NewRow(); _row["id"] = dt.Rows[i]["transfer_id"]; _row["startdate"] = dt.Rows[i]["startdate"]; _row["enddate"] = dt.Rows[i]["enddate"]; _row["salestr"] = strtmp; _row["salerow"] = m; _DataTable.Rows.Add(_row); strtmp = ""; } } } } if (_DataTable.Rows.Count > 0) { string MD5 = "", strMD5 = ""; for (int i = 0; i < _DataTable.Rows.Count; i++) { strMD5 += (strMD5 == "" ? "" : ",") + _DataTable.Rows[i]["salestr"].ToString(); } MD5 = CreateMD5(strMD5); for (int i = 0; i < _DataTable.Rows.Count; i++) { _DataTable.Rows[i]["checkMD5"] = MD5; } checkcode = MD5; } } return _DataTable; } /// /// 生成单品集合数据 /// private DataTable SaleQrCodeOld(string Upload_Date) { string _strSalestart = ""; string _strSaleend = ""; string strtmp = ""; int m = 0; //List _listSale = new List(); DataTable _DataTable = new DataTable("list"); _DataTable.Columns.Add("id", typeof(decimal)); _DataTable.Columns.Add("startdate", typeof(DateTime)); _DataTable.Columns.Add("enddate", typeof(DateTime)); _DataTable.Columns.Add("salestr", typeof(string)); _DataTable.Columns.Add("salerow", typeof(int)); _DataTable.Columns.Add("checkMD5", typeof(string)); string strsql = "select transfer_id, serverpartcode, shopcode, startdate, enddate, transfer_firstdatas, " + "transfer_seconddatas, transfer_thirddatas, transfer_forthdatas, transfer_fifthdatas, transfer_sixthdatas, " + "transfer_seventhdatas, transfer_eighthdatas, transfer_ninthtdatas, transfer_tenthdatas, transfer_eleventhdatas, " + "transfer_twelfthdatas,transfer_thirteenthdatas, transfer_fourteenthdatas, transfer_fifteenthdatas " + "from t_transfer_sale a where serverpartcode = '" + serverpartcode + "' and shopcode = '" + shopcode + "' and enddate > datetime('" + Upload_Date + "') and not exists ( select 1 from t_dataupdate b " + "where a.transfer_id = b.data_id and enddate = b.data_date and b.data_type = 3001 and " + "b.data_date <= datetime('" + Upload_Date + "')) order by transfer_id asc"; using (OdbcDataAdapter da = new OdbcDataAdapter(strsql, AnyWhereConn())) { DataSet ds = new DataSet(); da.Fill(ds, "t_transfer_sale"); DataTable dt = ds.Tables["t_transfer_sale"]; int indexstart = 0, indexend = 0; for (int i = 0; i < dt.Columns.Count; i++) { if (dt.Columns[i].ColumnName.ToLower() == "transfer_firstdatas") { indexstart = i; } else if (dt.Columns[i].ColumnName.ToLower() == "transfer_thirteenthdatas") { indexend = i; } } foreach (DataRow row in dt.Rows) { List _listTmp = new List(); _strSalestart = ""; _strSaleend = ""; strtmp = ""; m = 0; for (int i = 0; i < dt.Columns.Count; i++) { if (i < indexstart) { _strSalestart += (_strSalestart == "" ? "" : "|") + (dt.Columns[i].DataType.ToString() == "System.DateTime" ? Convert.ToDateTime(row[i]).ToString("yyyyMMddHHmmss") : row[i].ToString().Replace(".00", "")); } else if (i >= indexstart && i < indexend) { if (row[i] != DBNull.Value) { List _tmp = new List(row[i].ToString().Split(',')); _listTmp.AddRange(_tmp); } } else if (i >= indexend && i < (dt.Columns.Count - 1)) _strSaleend += (_strSaleend == "" ? "" : "|") + (dt.Columns[i].DataType.ToString() == "System.DateTime" ? Convert.ToDateTime(row[i]).ToString("yyyyMMddHHmmss") : row[i].ToString().Replace(".00", "")); } for (int i = 0; i < _listTmp.Count; i++) { if ((strtmp.Length + _listTmp[i].Length) > 380) { m++; DataRow _row = _DataTable.NewRow(); _row["id"] = row["transfer_id"]; _row["startdate"] = row["startdate"]; _row["enddate"] = row["enddate"]; _row["salestr"] = strtmp; _row["salerow"] = m; _DataTable.Rows.Add(_row); strtmp = ""; } strtmp += (strtmp == "" ? _strSalestart + "|" : ",") + _listTmp[i].Replace(".00", "").Replace("&&", "^"); if (i == (_listTmp.Count - 1)) { m++; DataRow _row = _DataTable.NewRow(); _row["id"] = row["transfer_id"]; _row["startdate"] = row["startdate"]; _row["enddate"] = row["enddate"]; _row["salestr"] = strtmp + "|" + _strSaleend; _row["salerow"] = m; _DataTable.Rows.Add(_row); strtmp = ""; } } string MD5 = "", strMD5 = ""; for (int i = 0; i < _DataTable.Rows.Count; i++) { strMD5 += (strMD5 == "" ? "" : ",") + _DataTable.Rows[i]["salestr"].ToString(); } MD5 = CreateMD5(strMD5); for (int i = 0; i < _DataTable.Rows.Count; i++) { _DataTable.Rows[i]["checkMD5"] = MD5; } checkcode = MD5; } } //QRcodeAdd("CommoditySale", _DataTable); return _DataTable; } #endregion #region 方法 --> 生成本次结账及收银交班数据二维码字符串列表 /// /// 生成结账数据 /// private DataTable EndAccountQrCode(string Upload_Date) { string _strEndAccount = ""; string _strPersonSell = ""; string _strTemp = ""; //List _listEndAccount = new List(); DataTable _DataTable = new DataTable("list"); _DataTable.Columns.Add("id", typeof(decimal)); _DataTable.Columns.Add("startdate", typeof(DateTime)); _DataTable.Columns.Add("enddate", typeof(DateTime)); _DataTable.Columns.Add("endaccountstr", typeof(string)); _DataTable.Columns.Add("personsellstr", typeof(string)); _DataTable.Columns.Add("flag", typeof(string)); _DataTable.Columns.Add("checkMD5", typeof(string)); //_DataTable.Columns.Add("sellrow", typeof(string)); string strsql = "select endaccount_id, endaccount_startdate, endaccount_date, serverpartcode, shopcode, " + "machinecode, endpersoncode, ticketcount, totalcount, totalsellamount, totaloffamount, cash, creditcard, " + "ticketbill, vipperson, costbill, otherpay, cashpay, flag from t_endaccount a where serverpartcode = '" + serverpartcode + "' and shopcode = '" + shopcode + "' and machinecode = '" + machinecode + "' and endaccount_date > datetime('" + Upload_Date + "') and not exists ( select 1 from t_dataupdate b " + "where a.endaccount_id = b.data_id and endaccount_date = b.data_date and b.data_type in (1001,1002)" + " and b.data_date <= datetime('" + Upload_Date + "')) order by endaccount_date asc"; using (OdbcDataAdapter da = new OdbcDataAdapter(strsql, AnyWhereConn())) { DataSet ds = new DataSet(); da.Fill(ds, "t_endaccount"); DataTable dt = ds.Tables["t_endaccount"]; //int index = 0; //for (int i = 0; i < dt.Columns.Count; i++) //{ // if (dt.Columns[i].ColumnName.ToLower() == "flag") // { // index = i; // break; // } //} foreach (DataRow row in dt.Rows) { _strEndAccount = ""; _strPersonSell = ""; _strTemp = ""; for (int i = 0; i < dt.Columns.Count; i++) { _strEndAccount += (_strEndAccount == "" ? "" : "|") + (dt.Columns[i].DataType.ToString() == "System.DateTime" ? Convert.ToDateTime(row[i]).ToString("yyyyMMddHHmmss") : row[i].ToString().Replace(".00", "")); } strsql = "select personsell_id, serverpartcode, shopcode, machinecode, startdate, enddate, " + "cashworker_code, ticketcount, totalcount, totalsellamount, totaloffamount, cash, ticketbill, " + "creditcard, vipperson, costbill, otherpay, cashpay, endpersoncode, reserve_firstnum, " + "reserve_secondnum, reserve_thirdnum, reserve_firstchar, reserve_secondchar, reserve_thirdchar, " + "reserve_firstdate, reserve_seconddate, reserve_thirddate from t_personsell where serverpartcode = '" + serverpartcode + "' and shopcode = '" + shopcode + "' and machinecode = '" + machinecode + "' and startdate >= datetime('" + row["endaccount_startdate"].ToString() + "') and enddate <= datetime('" + row["endaccount_date"].ToString() + "') order by personsell_id asc"; using (OdbcDataAdapter personsell = new OdbcDataAdapter(strsql, AnyWhereConn())) { DataSet personsellds = new DataSet(); personsell.Fill(personsellds, "t_personsell"); DataTable person = personsellds.Tables["t_personsell"]; //int _index = 0; //for (int i = 0; i < dt.Columns.Count; i++) //{ // if (dt.Columns[i].ColumnName.ToLower() == "worknumber") // { // _index = i; // break; // } //} foreach (DataRow _DataRow in person.Rows) { _strTemp = ""; for (int i = 0; i < dt.Columns.Count; i++) { _strTemp += (_strTemp == "" ? "" : "|") + (person.Columns[i].DataType.ToString() == "System.DateTime" ? Convert.ToDateTime(_DataRow[i]).ToString("yyyyMMddHHmmss") : _DataRow[i].ToString().Replace(".00", "")); } _strPersonSell += (_strPersonSell == "" ? "" : ",") + _strTemp; } } //if (_strPersonSell != "") //{ DataRow _row = _DataTable.NewRow(); _row["id"] = row["endaccount_id"]; _row["startdate"] = row["endaccount_startdate"]; _row["enddate"] = row["endaccount_date"]; _row["endaccountstr"] = _strEndAccount; _row["personsellstr"] = _strPersonSell; _row["flag"] = row["flag"]; _DataTable.Rows.Add(_row); //} string MD5 = "", strMD5 = ""; for (int i = 0; i < _DataTable.Rows.Count; i++) { strMD5 += (strMD5 == "" ? "" : ",") + _DataTable.Rows[i]["endaccountstr"].ToString(); } MD5 = CreateMD5(strMD5); for (int i = 0; i < _DataTable.Rows.Count; i++) { _DataTable.Rows[i]["checkMD5"] = MD5; } checkcode = MD5; } } //QRcodeAdd("EndAccount", _DataTable); return _DataTable; } #endregion #region 创建md5 16位大写加密 public static string CreateMD5(string text) { var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); //换成utf8后对于中文加密也适用 byte[] output = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(text)); string pass2md5 = BitConverter.ToString(output, 4, 8).Replace("-", ""); //pass2md5 = pass2md5.ToUpper(); return pass2md5; } #endregion #region 方法 --> 显示二维码列表 /// /// 显示二维码列表 /// /// 显示类型 /// 字符串列表 public void QRcodeAdd(string name, string Upload_date) { int _Length = 0, _RowCount = 0, _RecordCount = 0, _ScanIndex = 0, _ScanCount = 0; string _data1 = "", _data2 = ""; //DataTable list = new DataTable(); lblProvince.ForeColor = Color.White; if (name == "CommoditySale") { switch (ConfigUrationValues("CommoditySaleURL", "http://syyw.eshangtech.com:8060/ScanUpdate/CommoditySale.html")) { case "http://syyw.eshangtech.com:8060/ScanUpdate/CommoditySale.html": lblProvince.Text = "当前上传省份:四川"; break; case "http://cloud.eshangtech.com:8000/ScanUpdate/CommoditySale.html": lblProvince.Text = "当前上传省份:浙江"; break; case "http://cloud.eshangtech.com:8000/ScanUpdate_GZ/CommoditySale.html": lblProvince.Text = "当前上传省份:贵州"; break; case "http://cloud.eshangtech.com:8000/ScanUpdate_Test/CommoditySale.html": lblProvince.Text = "当前上传省份:驿商测试"; break; case "http://113.16.255.162:6060/ScanUpdate/CommoditySale.html": lblProvince.Text = "当前上传省份:广西"; break; default: lblProvince.Text = ""; break; } label2.Text = "单品数据扫码上传"; label1.Text = "扫码结束后,需按Enter键扫手机确认码"; list = SaleQrCode(Upload_date); } else { switch (ConfigUrationValues("EndAccountURL", "http://syyw.eshangtech.com:8060/ScanUpdate/EndAccount.html")) { case "http://syyw.eshangtech.com:8060/ScanUpdate/EndAccount.html": lblProvince.Text = "当前上传省份:四川"; break; case "http://cloud.eshangtech.com:8000/ScanUpdate/EndAccount.html": lblProvince.Text = "当前上传省份:浙江"; break; case "http://cloud.eshangtech.com:8000/ScanUpdate_GZ/EndAccount.html": lblProvince.Text = "当前上传省份:贵州"; break; case "http://cloud.eshangtech.com:8000/ScanUpdate_Test/EndAccount.html": lblProvince.Text = "当前上传省份:驿商测试"; break; case "http://113.16.255.162:6060/ScanUpdate/EndAccount.html": lblProvince.Text = "当前上传省份:广西"; break; default: lblProvince.Text = ""; break; } label2.Text = "日结营收扫码上传"; label1.Text = "扫码结束后,需按Enter键扫手机确认码"; list = EndAccountQrCode(Upload_date); } flowLayoutPanel1.Controls.Clear(); if (list.Rows.Count > 0) { //_SaveTable = list; for (int n = 0; n < list.Rows.Count; n++) { //建立图像显示 PictureBox qrbox = new PictureBox(); qrbox.Height = 210; qrbox.Width = 210; qrbox.Name = "qrbox" + n; qrbox.Location = new Point(12, 8); qrbox.Margin = new Padding(5); qrbox.BackColor = Color.Red; //建立图像说明 Label qrdate = new Label(); qrdate.Height = 20; qrdate.Width = 100; qrdate.Font = new Font(qrdate.Font.FontFamily, 12, FontStyle.Bold); qrdate.Location = new Point(10, 220); qrdate.Margin = new Padding(0); qrdate.Name = "qrdate" + n; qrdate.TextAlign = ContentAlignment.MiddleCenter; Label qrtime = new Label(); qrtime.Height = 20; qrtime.Width = 115; qrtime.Font = new Font(qrtime.Font.FontFamily, 10, qrtime.Font.Style); qrtime.Location = new Point(110, 220); qrtime.Margin = new Padding(0); qrtime.Name = "qrtime" + n; qrtime.TextAlign = ContentAlignment.MiddleCenter; if (name == "EndAccount") { qrdate.Text = Convert.ToDateTime(list.Rows[n]["enddate"]).ToString("yyyy-MM-dd"); qrtime.Text = Convert.ToDateTime(list.Rows[n]["enddate"]).ToString("HH:mm:ss") + (list.Rows[n]["flag"].ToString() == "5" ? " <稽核>" : " <日结>"); } else { qrdate.Text = Convert.ToDateTime(list.Rows[n]["enddate"]).ToString("yyyy-MM-dd"); int t = 0; for (int x = 0; x < list.Rows.Count; x++) { if (Convert.ToDateTime(list.Rows[x]["enddate"]) == Convert.ToDateTime(list.Rows[n]["enddate"])) { t++; } } qrtime.Text = Convert.ToDateTime(list.Rows[n]["enddate"]).ToString("HH:mm:ss") + (t == 1 ? "" : " <" + list.Rows[n]["salerow"].ToString() + "/" + t + ">"); } //建立显示及说明容器 Panel qrpanel = new Panel(); qrpanel.Location = new Point(0, 0); qrpanel.BackColor = Color.FromArgb(140, 215, 255); qrpanel.Name = "qrpanel" + n; qrpanel.Height = 240; qrpanel.Width = 235; qrpanel.Margin = new Padding(6); options = new QrCodeEncodingOptions { DisableECI = true, CharacterSet = "UTF-8", Width = qrbox.Height, Height = qrbox.Width }; writer = new BarcodeWriter(); writer.Format = BarcodeFormat.QR_CODE; writer.Options = options; string text = ""; if (name == "CommoditySale") { _data1 = HttpUtility.UrlEncode(list.Rows[n]["salestr"].ToString()); _Length = list.Rows[n]["salestr"].ToString().Length; _RowCount = Convert.ToInt16(list.Rows[n]["salerow"]); _ScanIndex = n + 1; _ScanCount = list.Rows.Count; int t = 0; for (int x = 0; x < list.Rows.Count; x++) { if (Convert.ToDateTime(list.Rows[x]["enddate"]) == Convert.ToDateTime(list.Rows[n]["enddate"])) { t++; } } _RecordCount = t; text = ConfigUrationValues("CommoditySaleURL", "http://syyw.eshangtech.com:8060/ScanUpdate/CommoditySale.html") + "?" + name + "_New=" + _data1 + "&Length=" + _Length + "&RowCount=" + _RowCount + "&RecordCount=" + _RecordCount + "&CheckCode=" + list.Rows[n]["checkMD5"].ToString() + "&ScanIndex=" + _ScanIndex + "&ScanCount=" + _ScanCount; } else { _data1 = HttpUtility.UrlEncode(list.Rows[n]["endaccountstr"].ToString()); _data2 = HttpUtility.UrlEncode(list.Rows[n]["personsellstr"].ToString()); _Length = list.Rows[n]["endaccountstr"].ToString().Length + list.Rows[n]["personsellstr"].ToString().Length; _RowCount = n + 1; _ScanIndex = n + 1; _ScanCount = list.Rows.Count; _RecordCount = list.Rows.Count; text = ConfigUrationValues("EndAccountURL", "http://syyw.eshangtech.com:8060/ScanUpdate/EndAccount.html") + "?" + name + "=" + _data1 + (_data2 == "" ? "" : "&Personsell=" + _data2) + "&Length=" + _Length + "&RowCount=" + _RowCount + "&RecordCount=" + _RecordCount + "&CheckCode=" + list.Rows[n]["checkMD5"].ToString() + "&ScanIndex=" + _RowCount + "&ScanCount=" + _RecordCount; } Bitmap bitmap = writer.Write(text); qrbox.Image = bitmap; qrpanel.Controls.Add(qrbox); qrpanel.Controls.Add(qrdate); qrpanel.Controls.Add(qrtime); flowLayoutPanel1.Controls.Add(qrpanel); } } else { //DialogResult _DialogResult = MessageBox.Show("当前无未上传信息,是否查看最近日结信息上传状态?", "系统提示", // MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly); //if (_DialogResult == DialogResult.Yes) //{ // MachineInfo machineInfo = new MachineInfo(); // machineInfo.TopMost = true; // machineInfo.ShowInTaskbar = false; // machineInfo.ShowDialog(); // Environment.Exit(0); //} //else //{ // Environment.Exit(0); //} } } #endregion #region 事件 --> 窗体按键事件 private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Escape) { //Close(); } else if (e.KeyCode == Keys.Enter) { TimerHandle.Stop(); //MessageForm _MessageBox = new MessageForm(_type, checkcode, ConfigUrationValues("shopcode", "")); //_MessageBox.ShowDialog(); //if (_MessageBox.DialogResult == DialogResult.OK) //{ //标记上传记录 if (_type == "CommoditySale") //单品 { DataTable distinctTable = list.DefaultView.ToTable(true, new string[] { "id", "enddate" }); for (int i = 0; i < list.Rows.Count; i++) { //string _datetime = TimeHelper.ConvertLongDateTime(Convert.ToInt64(_MessageBox.StrValue)).ToString(); if (Convert.ToDateTime(list.Rows[i]["enddate"]) > Convert.ToDateTime(strUpload_Date(_type))) { UpdateConfigUration(_type, list.Rows[i]["enddate"].ToString()); } string _selectstr = "SELECT dataupdate_id, serverpartcode, shopcode, machinecode, data_id, data_date, data_type, " + "update_date, update_state,update_checknum, dataupdate_desc FROM t_dataupdate " + "WHERE data_date = datetime('" + list.Rows[i]["enddate"].ToString() + "') and data_id = " + list.Rows[i]["id"] + " and data_type = 3001"; if (DBHelper.ExecuteDataSet(_selectstr).Tables[0].Rows.Count == 0) { decimal maxid = 0; try { maxid = decimal.Parse(DBHelper.ExecuteDataSet("select max(dataupdate_id) from t_dataupdate").Tables[0].Rows[0][0].ToString()); } catch { maxid = 0; } string _insertstr = "INSERT INTO t_dataupdate (dataupdate_id, serverpartcode, shopcode, machinecode, data_id, data_date, data_type, update_date, update_state) VALUES (" + (maxid + 1) + ",'" + ConfigUrationValues("serverpartcode", "") + "','" + ConfigUrationValues("shopcode", "") + "','" + ConfigUrationValues("machinecode", "") + "'," + list.Rows[i]["id"] + ",datetime('" + list.Rows[i]["enddate"].ToString() + "'),3001,datetime('" + DateTime.Now.ToString() + "'),2)"; try { int rows = DBHelper.ExcuteSql(_insertstr); } catch { } } } } else //日结 { for (int i = 0; i < list.Rows.Count; i++) { if (Convert.ToDateTime(list.Rows[i]["enddate"]) > Convert.ToDateTime(strUpload_Date(_type))) { UpdateConfigUration(_type, list.Rows[i]["enddate"].ToString()); } string _selectstr = "SELECT dataupdate_id, serverpartcode, shopcode, machinecode, data_id, data_date, data_type, " + "update_date, update_state,update_checknum, dataupdate_desc FROM t_dataupdate " + "WHERE data_date = datetime('" + list.Rows[i]["enddate"].ToString() + "') and data_id = " + list.Rows[i]["id"] + " and data_type = " + (list.Rows[i]["flag"].ToString() == "5" ? 1002 : 1001); if (DBHelper.ExecuteDataSet(_selectstr).Tables[0].Rows.Count == 0) { decimal maxid = 0; try { maxid = decimal.Parse(DBHelper.ExecuteDataSet("select max(dataupdate_id) from t_dataupdate").Tables[0].Rows[0][0].ToString()); } catch { maxid = 0; } string _insertstr = "INSERT INTO t_dataupdate (dataupdate_id, serverpartcode, shopcode, machinecode, data_id, data_date, data_type, update_date, update_state) VALUES (" + (maxid + 1) + ",'" + ConfigUrationValues("serverpartcode", "") + "','" + ConfigUrationValues("shopcode", "") + "','" + ConfigUrationValues("machinecode", "") + "'," + list.Rows[i]["id"] + ",datetime('" + list.Rows[i]["enddate"].ToString() + "')," + (list.Rows[i]["flag"].ToString() == "5" ? 1002 : 1001) + ",datetime('" + DateTime.Now.ToString() + "'),2)"; try { int rows = DBHelper.ExcuteSql(_insertstr); } catch { } } _selectstr = "select personsell_id, serverpartcode, shopcode, machinecode, startdate, enddate, cashworker_code, " + "ticketcount, totalcount, totalsellamount, totaloffamount, cash, ticketbill, creditcard, vipperson, costbill, " + "otherpay, cashpay, endpersoncode, reserve_firstnum, reserve_secondnum, reserve_thirdnum, reserve_firstchar, " + "reserve_secondchar, reserve_thirdchar, reserve_firstdate, reserve_seconddate, reserve_thirddate from t_personsell " + "where serverpartcode = '" + serverpartcode + "' and shopcode = '" + shopcode + "' and machinecode = '" + machinecode + "' and startdate >= datetime('" + list.Rows[i]["startdate"].ToString() + "') and enddate <= datetime('" + list.Rows[i]["enddate"].ToString() + "') order by personsell_id asc"; DataTable dataTable = DBHelper.ExecuteDataSet(_selectstr).Tables[0]; if (dataTable.Rows.Count > 0) { foreach (DataRow row in dataTable.Rows) { _selectstr = "SELECT dataupdate_id, serverpartcode, shopcode, machinecode, data_id, data_date, " + "data_type, update_date, update_state,update_checknum, dataupdate_desc FROM t_dataupdate " + "WHERE data_date = datetime('" + row["enddate"].ToString() + "') and data_id = " + row["personsell_id"] + " and data_type = 2001"; if (DBHelper.ExecuteDataSet(_selectstr).Tables[0].Rows.Count == 0) { decimal maxid = 0; try { maxid = decimal.Parse(DBHelper.ExecuteDataSet("select max(dataupdate_id) from t_dataupdate").Tables[0].Rows[0][0].ToString()); } catch { maxid = 0; } string _insertstr = "INSERT INTO t_dataupdate (dataupdate_id, serverpartcode, shopcode, machinecode, data_id, data_date, data_type, update_date, update_state) VALUES (" + (maxid + 1) + ",'" + row["serverpartcode"].ToString() + "','" + row["shopcode"].ToString() + "','" + row["machinecode"].ToString() + "'," + row["personsell_id"] + ",datetime('" + row["enddate"].ToString() + "'),2001,datetime('" + DateTime.Now.ToString() + "'),2)"; try { int rows = DBHelper.ExcuteSql(_insertstr); } catch { } } } } } } DialogResult _DialogResult = MessageBox.Show((_type == "CommoditySale" ? "单品信息" : "日结营收") + "上传完成,按确定键返回收银系统", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly); if (_DialogResult == DialogResult.OK) Environment.Exit(0); //} } //else if (e.KeyCode == Keys.Up) //{ // if (flowLayoutPanel1.VerticalScroll.Value > flowLayoutPanel1.VerticalScroll.Minimum) // { // if (flowLayoutPanel1.VerticalScroll.Value > 246) // { // flowLayoutPanel1.VerticalScroll.Value -= 246; // flowLayoutPanel1.VerticalScroll.Value -= 246; // } // else // { // flowLayoutPanel1.VerticalScroll.Value = flowLayoutPanel1.VerticalScroll.Minimum; // flowLayoutPanel1.VerticalScroll.Value = flowLayoutPanel1.VerticalScroll.Minimum; // } // } //} //else if (e.KeyCode == Keys.Down) //{ // if (flowLayoutPanel1.VerticalScroll.Value < flowLayoutPanel1.VerticalScroll.Maximum && flowLayoutPanel1.VerticalScroll.Maximum > 246) // { // flowLayoutPanel1.VerticalScroll.Value += 246; // flowLayoutPanel1.VerticalScroll.Value += 246; // } // else // { // flowLayoutPanel1.VerticalScroll.Value = flowLayoutPanel1.VerticalScroll.Maximum; // flowLayoutPanel1.VerticalScroll.Value = flowLayoutPanel1.VerticalScroll.Maximum; // } //} //else if (e.KeyCode == Keys.F12) //{ // TimerHandle.Stop(); // ProvinceMain _MessageBox = new ProvinceMain(_type); // _MessageBox.ShowDialog(); // if (_MessageBox.DialogResult == DialogResult.OK) // { // QRcodeAdd(_type, strUpload_Date(_type)); // } // TimerHandle.Start(); //} } #endregion #region 方法 --> 获取上次上传时间 /// /// 获取已上传信息日期 /// /// 上传类型名称 /// 日期 public static string strUpload_Date(string ConfigUration_Name) { DateTime _EndAccount; //string sqlstr = "select configuration_values from t_configuration where lower(configuration_name) = lcase('" + ConfigUration_Name + "')"; //using (OdbcConnection conn = AnyWhereConn()) //{ // try // { // conn.Open(); // using (OdbcCommand com = new OdbcCommand(sqlstr, conn)) // { // OdbcDataReader dr = com.ExecuteReader(); // dr.Read(); // _EndAccount = Convert.ToDateTime(dr["configuration_values"]); // } // conn.Close(); // } // catch (Exception ex) // { // int _int = Convert.ToInt32(ConfigUrationValues("endaccounttimes", "20")) * -1; // _EndAccount = Convert.ToDateTime(DateTime.Now.AddDays(_int).ToShortDateString()); // } //} _EndAccount = Convert.ToDateTime(DateTime.Now.AddDays(-3).ToShortDateString()); return _EndAccount.ToString(); } #endregion #region 方法 --> 更新本地配置信息 /// /// 更新本地配置信息 /// /// 配置名称 /// 配置内容 /// public static bool UpdateConfigUration(string ConfigUration_Name, string ConfigUration_Values) { string strsql = "select count(*) from t_configuration where configuration_name = '" + ConfigUration_Name + "'"; using (OdbcConnection conn = AnyWhereConn()) { try { conn.Open(); OdbcCommand com = new OdbcCommand(strsql, conn); OdbcDataReader dr = com.ExecuteReader(); dr.Read(); if (dr[0].ToString() == "0") { OdbcCommand max = new OdbcCommand("select max(configuration_id) from t_configuration", conn); OdbcDataReader read = max.ExecuteReader(); read.Read(); decimal maxid = Convert.ToDecimal(read[0]); strsql = "insert into t_configuration(configuration_id, configuration_date, configuration_name, configuration_values)values(" + (maxid + 1) + ", now(),'" + ConfigUration_Name + "','" + ConfigUration_Values + "')"; OdbcCommand insert = new OdbcCommand(strsql, conn); insert.ExecuteNonQuery(); return true; } else { strsql = "update t_configuration set configuration_values = '" + ConfigUration_Values + "' where configuration_name = '" + ConfigUration_Name + "'"; OdbcCommand insert = new OdbcCommand(strsql, conn); insert.ExecuteNonQuery(); return true; } } catch { return false; } } } #endregion #region 方法 --> 获取配置信息 /// /// 获取配置信息 /// /// 配置名称 /// 无配置信息时默认值 /// public static string ConfigUrationValues(string ConfigUrationName, string defaultValue) { string strSQL = "select configuration_name,configuration_values from dba.t_configuration where lower(configuration_name) = lcase('" + ConfigUrationName + "')"; string strValues = ""; try { using (DataTable _DataTable = ExecuteDataSet(strSQL).Tables[0]) { if (_DataTable.Rows.Count > 0) { foreach (DataRow row in _DataTable.Rows) { if (row["configuration_name"].ToString().ToLower() == ConfigUrationName.ToLower()) { strValues = row["configuration_values"].ToString(); } } } else { strValues = ConfigHelper.Win32API.INIGetStringValue(Environment.CurrentDirectory + "\\setup.ini", "DBCONECT", ConfigUrationName, defaultValue); if (strValues == "") strValues = ConfigHelper.Win32API.INIGetStringValue(Environment.CurrentDirectory + "\\set.ini", "DBCONECT", ConfigUrationName, defaultValue); } } } catch { strValues = ConfigHelper.Win32API.INIGetStringValue(Environment.CurrentDirectory + "\\setup.ini", "DBCONECT", ConfigUrationName, defaultValue); if (strValues == "") strValues = ConfigHelper.Win32API.INIGetStringValue(Environment.CurrentDirectory + "\\set.ini", "DBCONECT", ConfigUrationName, defaultValue); } return strValues; } #endregion /// /// 本地数据库连接 /// /// public static OdbcConnection AnyWhereConn() { string strConn = "DSN=anysql1;UID=dba;PWD=sql;"; OdbcConnection Conany = new OdbcConnection(strConn); return Conany; } /// /// 本地执行SQL语句并返回DataSet /// /// SQL语句 /// public static DataSet ExecuteDataSet(string SelectSql) { using (OdbcConnection conany = AnyWhereConn()) { DataSet _DataSet = new DataSet(); try { OdbcDataAdapter _OdbcDataAdapter = new OdbcDataAdapter(SelectSql, conany); _OdbcDataAdapter.Fill(_DataSet); return _DataSet; } catch (Exception ex) { throw new Exception(ex.Message); } } } public void KeyEnter() { TimerHandle.Stop(); //MessageForm _MessageBox = new MessageForm(_type, checkcode, ConfigUrationValues("shopcode", "")); //_MessageBox.ShowDialog(); //if (_MessageBox.DialogResult == DialogResult.OK) //{ //标记上传记录 if (_type == "CommoditySale") //单品 { DataTable distinctTable = list.DefaultView.ToTable(true, new string[] { "id", "enddate" }); for (int i = 0; i < list.Rows.Count; i++) { //string _datetime = TimeHelper.ConvertLongDateTime(Convert.ToInt64(_MessageBox.StrValue)).ToString(); if (Convert.ToDateTime(list.Rows[i]["enddate"]) > Convert.ToDateTime(strUpload_Date(_type))) { UpdateConfigUration(_type, list.Rows[i]["enddate"].ToString()); } string _selectstr = "SELECT dataupdate_id, serverpartcode, shopcode, machinecode, data_id, data_date, data_type, " + "update_date, update_state,update_checknum, dataupdate_desc FROM t_dataupdate " + "WHERE data_date = datetime('" + list.Rows[i]["enddate"].ToString() + "') and data_id = " + list.Rows[i]["id"] + " and data_type = 3001"; if (DBHelper.ExecuteDataSet(_selectstr).Tables[0].Rows.Count == 0) { decimal maxid = 0; try { maxid = decimal.Parse(DBHelper.ExecuteDataSet("select max(dataupdate_id) from t_dataupdate").Tables[0].Rows[0][0].ToString()); } catch { maxid = 0; } string _insertstr = "INSERT INTO t_dataupdate (dataupdate_id, serverpartcode, shopcode, machinecode, data_id, data_date, data_type, update_date, update_state) VALUES (" + (maxid + 1) + ",'" + ConfigUrationValues("serverpartcode", "") + "','" + ConfigUrationValues("shopcode", "") + "','" + ConfigUrationValues("machinecode", "") + "'," + list.Rows[i]["id"] + ",datetime('" + list.Rows[i]["enddate"].ToString() + "'),3001,datetime('" + DateTime.Now.ToString() + "'),2)"; try { int rows = DBHelper.ExcuteSql(_insertstr); } catch { } } } } else //日结 { for (int i = 0; i < list.Rows.Count; i++) { if (Convert.ToDateTime(list.Rows[i]["enddate"]) > Convert.ToDateTime(strUpload_Date(_type))) { UpdateConfigUration(_type, list.Rows[i]["enddate"].ToString()); } string _selectstr = "SELECT dataupdate_id, serverpartcode, shopcode, machinecode, data_id, data_date, data_type, " + "update_date, update_state,update_checknum, dataupdate_desc FROM t_dataupdate " + "WHERE data_date = datetime('" + list.Rows[i]["enddate"].ToString() + "') and data_id = " + list.Rows[i]["id"] + " and data_type = " + (list.Rows[i]["flag"].ToString() == "5" ? 1002 : 1001); if (DBHelper.ExecuteDataSet(_selectstr).Tables[0].Rows.Count == 0) { decimal maxid = 0; try { maxid = decimal.Parse(DBHelper.ExecuteDataSet("select max(dataupdate_id) from t_dataupdate").Tables[0].Rows[0][0].ToString()); } catch { maxid = 0; } string _insertstr = "INSERT INTO t_dataupdate (dataupdate_id, serverpartcode, shopcode, machinecode, data_id, data_date, data_type, update_date, update_state) VALUES (" + (maxid + 1) + ",'" + ConfigUrationValues("serverpartcode", "") + "','" + ConfigUrationValues("shopcode", "") + "','" + ConfigUrationValues("machinecode", "") + "'," + list.Rows[i]["id"] + ",datetime('" + list.Rows[i]["enddate"].ToString() + "')," + (list.Rows[i]["flag"].ToString() == "5" ? 1002 : 1001) + ",datetime('" + DateTime.Now.ToString() + "'),2)"; try { int rows = DBHelper.ExcuteSql(_insertstr); } catch { } } _selectstr = "select personsell_id, serverpartcode, shopcode, machinecode, startdate, enddate, cashworker_code, " + "ticketcount, totalcount, totalsellamount, totaloffamount, cash, ticketbill, creditcard, vipperson, costbill, " + "otherpay, cashpay, endpersoncode, reserve_firstnum, reserve_secondnum, reserve_thirdnum, reserve_firstchar, " + "reserve_secondchar, reserve_thirdchar, reserve_firstdate, reserve_seconddate, reserve_thirddate from t_personsell " + "where serverpartcode = '" + serverpartcode + "' and shopcode = '" + shopcode + "' and machinecode = '" + machinecode + "' and startdate >= datetime('" + list.Rows[i]["startdate"].ToString() + "') and enddate <= datetime('" + list.Rows[i]["enddate"].ToString() + "') order by personsell_id asc"; DataTable dataTable = DBHelper.ExecuteDataSet(_selectstr).Tables[0]; if (dataTable.Rows.Count > 0) { foreach (DataRow row in dataTable.Rows) { _selectstr = "SELECT dataupdate_id, serverpartcode, shopcode, machinecode, data_id, data_date, " + "data_type, update_date, update_state,update_checknum, dataupdate_desc FROM t_dataupdate " + "WHERE data_date = datetime('" + row["enddate"].ToString() + "') and data_id = " + row["personsell_id"] + " and data_type = 2001"; if (DBHelper.ExecuteDataSet(_selectstr).Tables[0].Rows.Count == 0) { decimal maxid = 0; try { maxid = decimal.Parse(DBHelper.ExecuteDataSet("select max(dataupdate_id) from t_dataupdate").Tables[0].Rows[0][0].ToString()); } catch { maxid = 0; } string _insertstr = "INSERT INTO t_dataupdate (dataupdate_id, serverpartcode, shopcode, machinecode, data_id, data_date, data_type, update_date, update_state) VALUES (" + (maxid + 1) + ",'" + row["serverpartcode"].ToString() + "','" + row["shopcode"].ToString() + "','" + row["machinecode"].ToString() + "'," + row["personsell_id"] + ",datetime('" + row["enddate"].ToString() + "'),2001,datetime('" + DateTime.Now.ToString() + "'),2)"; try { int rows = DBHelper.ExcuteSql(_insertstr); } catch { } } } } } } DialogResult _DialogResult = MessageBox.Show((_type == "CommoditySale" ? "单品信息" : "日结营收") + "上传完成,按确定键返回收银系统", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly); if (_DialogResult == DialogResult.OK) Environment.Exit(0); } public void Reload() { QRcodeAdd(_type, strUpload_Date(_type)); } } }