using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; namespace DataUpdate { public partial class MachineInfo : Form { #region 属性 /// /// 服务器IP /// public string dbip { get { return (DataUpdate.ConfigUrationValues("server_ip", "").Trim() == "" ? DataUpdate.ConfigUrationValues("dbip", "").Trim() : DataUpdate.ConfigUrationValues("server_ip", "").Trim()); } } public string hostip { get { return (DataUpdate.ConfigUrationValues("host_ip", "cloud.eshangtech.com")); } } /// /// webservice服务端口 /// public string serviceport { get { return (DataUpdate.ConfigUrationValues("service_port", "7080").Trim()); } } /// /// 数据库端口 /// public string dbport { get { return (DataUpdate.ConfigUrationValues("server_dbport", "").Trim() == "" ? DataUpdate.ConfigUrationValues("dbport", "1521").Trim() : DataUpdate.ConfigUrationValues("server_dbport", "1521").Trim()); } } /// /// 数据库名 /// public string dbname { get { return (DataUpdate.ConfigUrationValues("server_dbname", "").Trim() == "" ? DataUpdate.ConfigUrationValues("dbname", "highway_exchange").Trim() : DataUpdate.ConfigUrationValues("server_dbname", "highway_exchange").Trim()); } } /// /// 数据库用户名 /// public string dbuser { get { return (DataUpdate.ConfigUrationValues("server_dbuser", "").Trim() == "" ? DataUpdate.ConfigUrationValues("dbuser", "highway_exchange").Trim() : DataUpdate.ConfigUrationValues("server_dbuser", "highway_exchange").Trim()); } } /// /// 数据库密码 /// public string dbpass { get { return (DataUpdate.ConfigUrationValues("server_dbpass", "").Trim() == "" ? DataUpdate.ConfigUrationValues("dbpass", "qrwl").Trim() : DataUpdate.ConfigUrationValues("server_dbpass", "qrwl").Trim()); } } /// /// 数据库连接名 /// public string conname { get { return (DataUpdate.ConfigUrationValues("server_conname", "").Trim() == "" ? DataUpdate.ConfigUrationValues("conname", "orcl").Trim() : DataUpdate.ConfigUrationValues("server_conname", "orcl").Trim()); } } /// /// 服务区编码 /// public string serverpartcode { get { return DataUpdate.ConfigUrationValues("serverpartcode", "").Trim(); } } /// /// 服务区名称 /// public string serverpartname { get { return DataUpdate.ConfigUrationValues("serverpartname", "").Trim(); } } /// /// 门店编码 /// public string shopcode { get { return DataUpdate.ConfigUrationValues("shopcode", "").Trim(); } } /// /// 门店名称 /// public string shopname { get { try { return DBHelper.ExecuteDataSet("select shopname from t_shopmessage where serverpartcode = '" + serverpartcode + "' and shopcode = '" + shopcode + "'").Tables[0].Rows[0]["shopname"].ToString(); } catch { return ""; } } } /// /// 收银机编码 /// public string machinecode { get { return DataUpdate.ConfigUrationValues("machinecode", "").Trim(); } } /// /// 收银机名称 /// public string machinename { get { return Dns.GetHostName(); } } /// /// 收银系统版本 /// public string softversion { get { return DataUpdate.ConfigUrationValues("version", "").Trim(); } } /// /// 收银机MAC地址 /// public string macaddress { get { return ComputerInfoHelper.GetMacAddressByNetworkInformation(); } } Boolean _Upload = false, _SetUpload = false, _UploadState = true, _OracleState = true; OracleHelper _OracleHelper = null; string SqlString = string.Empty; decimal _timeout = 0; decimal _testcount = 0; Image imgSuccess = Properties.Resources.Success; Image imgFail = Properties.Resources.Fail; Image imgNone = Properties.Resources.None; #endregion Timer _NetWorkState = new Timer(); BackgroundWorker bgWorker = new BackgroundWorker(); BackgroundWorker bgWorkerEndaccount = new BackgroundWorker(); BackgroundWorker bgWorkerPersonsell = new BackgroundWorker(); BackgroundWorker bgWorkerMobeilPay = new BackgroundWorker(); BackgroundWorker bgWorkerOneClickUpload = new BackgroundWorker(); //调用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 MachineInfo() { InitializeComponent(); _OracleHelper = new OracleHelper(dbip, dbport, conname, dbuser, dbpass); lblspname.Text = serverpartname; lblshopname.Text = shopname; lbllocalname.Text = machinename; lblmachinecode.Text = machinecode; lbllocalIP.Text = ComputerInfoHelper.GetAddressIP(); lblMACAdd.Text = macaddress; lblserverIP.Text = dbip; lblHQIP.Text = hostip; lblSubstitution.Text = ""; lbllatency.Text = ""; lbldate.Text = ""; lblState.Text = ""; lblHQNetlatency.Text = ""; lblHQNetState.Text = ""; piclocalSale.Image = null; piclocalMobeil.Image = null; piclocalPerson.Image = null; piclocalAudit.Image = null; piclocalEnd.Image = null; picserverMobeil.Image = null; picserverAudit.Image = null; picserverPerson.Image = null; picserverSale.Image = null; picserverEnd.Image = null; progressBar1.Visible = false; lblMessage.Text = ""; lblEndUpLoad.Text = ""; lblPersonUpLoad.Text = ""; lblSaleUpLoad.Text = ""; lblAuditUpLoad.Text = ""; lblMobeilUpLoad.Text = ""; bgWorker.WorkerReportsProgress = true; bgWorker.WorkerSupportsCancellation = true; bgWorker.DoWork += DoWork_Handler; //bgWorker.ProgressChanged += ProgressChanged_Handler; //bgWorker.RunWorkerCompleted += RunWorkerCompleted_Handler; bgWorkerEndaccount.WorkerReportsProgress = true; bgWorkerEndaccount.WorkerSupportsCancellation = true; bgWorkerEndaccount.DoWork += EndaccountUpload_Handler; bgWorkerMobeilPay.WorkerReportsProgress = true; bgWorkerMobeilPay.WorkerSupportsCancellation = true; bgWorkerMobeilPay.DoWork += MobeilPayUpload_Handler; bgWorkerPersonsell.WorkerReportsProgress = true; bgWorkerPersonsell.WorkerSupportsCancellation = true; bgWorkerPersonsell.DoWork += PersonsellUpload_Handler; bgWorkerOneClickUpload.WorkerReportsProgress = true; bgWorkerOneClickUpload.WorkerSupportsCancellation = true; bgWorkerOneClickUpload.DoWork += OneClickUpload_Handler; bgWorkerOneClickUpload.ProgressChanged += ProgressChanged_Handler; bgWorkerOneClickUpload.RunWorkerCompleted += RunWorkerCompleted_Handler; _NetWorkState.Tick += new EventHandler(NetWorkState_Tick); _NetWorkState.Interval = 1000; _NetWorkState.Start(); //EndaccountUpload(true); //EndaccountUpload(false); } public MachineInfo(string[] type) { InitializeComponent(); _OracleHelper = new OracleHelper(dbip, dbport, conname, dbuser, dbpass); lblspname.Text = serverpartname; lblshopname.Text = shopname; lbllocalname.Text = machinename; lblmachinecode.Text = machinecode; lbllocalIP.Text = ComputerInfoHelper.GetAddressIP(); lblMACAdd.Text = macaddress; lblserverIP.Text = dbip; lblHQIP.Text = hostip; lblSubstitution.Text = ""; lbllatency.Text = ""; lbldate.Text = ""; lblState.Text = ""; lblHQNetlatency.Text = ""; lblHQNetState.Text = ""; piclocalSale.Image = null; piclocalMobeil.Image = null; piclocalPerson.Image = null; piclocalAudit.Image = null; piclocalEnd.Image = null; picserverMobeil.Image = null; picserverAudit.Image = null; picserverPerson.Image = null; picserverSale.Image = null; picserverEnd.Image = null; progressBar1.Visible = false; lblMessage.Text = ""; lblEndUpLoad.Text = ""; lblPersonUpLoad.Text = ""; lblSaleUpLoad.Text = ""; lblAuditUpLoad.Text = ""; lblMobeilUpLoad.Text = ""; bgWorker.WorkerReportsProgress = true; bgWorker.WorkerSupportsCancellation = true; bgWorker.DoWork += DoWork_Handler; //bgWorker.ProgressChanged += ProgressChanged_Handler; //bgWorker.RunWorkerCompleted += RunWorkerCompleted_Handler; bgWorkerEndaccount.WorkerReportsProgress = true; bgWorkerEndaccount.WorkerSupportsCancellation = true; bgWorkerEndaccount.DoWork += EndaccountUpload_Handler; bgWorkerMobeilPay.WorkerReportsProgress = true; bgWorkerMobeilPay.WorkerSupportsCancellation = true; bgWorkerMobeilPay.DoWork += MobeilPayUpload_Handler; bgWorkerPersonsell.WorkerReportsProgress = true; bgWorkerPersonsell.WorkerSupportsCancellation = true; bgWorkerPersonsell.DoWork += PersonsellUpload_Handler; bgWorkerOneClickUpload.WorkerReportsProgress = true; bgWorkerOneClickUpload.WorkerSupportsCancellation = true; bgWorkerOneClickUpload.DoWork += OneClickUpload_Handler; bgWorkerOneClickUpload.ProgressChanged += ProgressChanged_Handler; bgWorkerOneClickUpload.RunWorkerCompleted += RunWorkerCompleted_Handler; //Timer _NetWorkState = new Timer(); _NetWorkState.Tick += new EventHandler(NetWorkState_Tick); _NetWorkState.Interval = 1000; _NetWorkState.Start(); } public void MachineClose() { _NetWorkState.Stop(); this.Close(); this.Dispose(); } /// /// 在winform中查找控件 /// /// /// /// private Control findControl(Control control, string controlName) { Control c1; foreach (Control c in control.Controls) { if (c.Name == controlName) { return c; } else if (c.Controls.Count > 0) { c1 = findControl(c, controlName); if (c1 != null) { return c1; } } } return null; } #region 上传状态 public void Pic(string name, Image img) { try { Invoke(new pic(picbox), new object[] { name, img }); } catch { } } delegate void pic(string name, Image img); void picbox(string name, Image img) { if (findControl(panel2, name) != null) { PictureBox _PictureBox = (PictureBox)findControl(panel2, name); _PictureBox.BackgroundImage = img; } else if (findControl(panel3, name) != null) { PictureBox _PictureBox = (PictureBox)findControl(panel3, name); _PictureBox.BackgroundImage = img; } else if (findControl(StatePanel, name) != null) { PictureBox _PictureBox = (PictureBox)findControl(StatePanel, name); _PictureBox.BackgroundImage = img; } } public void LabelText(string name, string txt, Color color) { try { Invoke(new text(lbltext), new object[] { name, txt, color }); } catch { } } delegate void text(string name, string txt, Color color); void lbltext(string name, string txt, Color color) { Label _Label = (Label)findControl(panel1, name); _Label.ForeColor = color; _Label.Text = txt; } private void ProgressChanged_Handler(object sender, ProgressChangedEventArgs args) { progressBar1.Visible = true; lblMessage.Visible = false; progressBar1.Value = args.ProgressPercentage; if (args.ProgressPercentage == 100) { lblMessage.Text = "日结营收数据上传已完成"; lblMessage.ForeColor = Color.Black; } } private void RunWorkerCompleted_Handler(object sender, RunWorkerCompletedEventArgs args) { if (!lblMessage.Visible) lblMessage.Visible = true; progressBar1.Visible = false; } /// /// 网络状态 /// /// /// private void DoWork_Handler(object sender, DoWorkEventArgs args) { if (bgWorker.CancellationPending == true) { args.Cancel = true; } NetWorkState(); } /// /// 日结及稽核数据上传状态 /// /// /// private void EndaccountUpload_Handler(object sender, DoWorkEventArgs args) { EndaccountUpload(false); EndaccountUpload(true); if (bgWorkerEndaccount.CancellationPending == true) { args.Cancel = true; } } /// /// 交班数据上传状态 /// /// /// private void PersonsellUpload_Handler(object sender, DoWorkEventArgs args) { PersonsellUpload(); if (bgWorkerPersonsell.CancellationPending == true) { args.Cancel = true; } } /// /// 移动支付数据上传状态 /// /// /// private void MobeilPayUpload_Handler(object sender, DoWorkEventArgs args) { MobeilPayUpload(); if (bgWorkerMobeilPay.CancellationPending == true) { args.Cancel = true; } } #endregion #region 一键上传 /// /// 一键上传最近账期数据 /// /// /// private void OneClickUpload_Handler(object sender, DoWorkEventArgs args) { BackgroundWorker worker = sender as BackgroundWorker; string _selectsql; string _Result = ""; int FailCount = 0; List _insertsql = new List(); #region 稽核数据 _selectsql = "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 WHERE ENDACCOUNT_DATE = (" + "SELECT MAX(ENDACCOUNT_DATE) FROM T_ENDACCOUNT WHERE ENDACCOUNT_DATE IS NOT NULL AND ENDACCOUNT_DATE < NOW() " + "AND SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND MACHINECODE = '" + machinecode + "' AND FLAG = 5 ) ORDER BY ENDACCOUNT_ID DESC"; using (DataTable _LocalDataTable = DBHelper.ExecuteDataSet(_selectsql).Tables[0]) { if (_LocalDataTable.Rows.Count > 0) { #region 通过接口上传 DataSet _LocalDataSet = SplitDataTable(_LocalDataTable, 20); //string[] str = { "ENDACCOUNT", JsonHelper.ToJson(_LocalDataTable) }; foreach (DataTable _Table in _LocalDataSet.Tables) { string[] str = { "ENDACCOUNT", JsonHelper.ToJson(_Table) }; try { //_Result = WSHelper.InvokeWebService("http://localhost:7000/PayService/Service.asmx", "LocalUpLoad", str).ToString(); _Result = WSHelper.InvokeWebService("http://" + dbip + ":" + serviceport + "/Service.asmx", "LocalUpLoad", str).ToString(); if (_Result != "1" && _Result != "9") { break; } } catch (Exception ex) { FailCount++; LabelText("lblMessage", "稽核数据上传失败:" + ex.Message, Color.Red); LabelText("lblAuditUpLoad", "稽核报表上传失败:" + ex.Message, Color.Black); break; } } switch (_Result) { case "1": LabelText("lblAuditUpLoad", "稽核报表上传成功。", Color.Black); Pic("picAuditUpLoad", imgSuccess); worker.ReportProgress(10); break; case "9": LabelText("lblAuditUpLoad", "稽核报表已上传。", Color.Black); Pic("picAuditUpLoad", imgNone); worker.ReportProgress(10); break; case "0": default: FailCount++; LabelText("lblAuditUpLoad", "稽核报表上传失败:" + _Result, Color.Black); Pic("picAuditUpLoad", imgFail); worker.ReportProgress(10); break; } #endregion #region 数据库直接上传 decimal i = 0; foreach (DataRow _row in _LocalDataTable.Rows) { i++; _selectsql = "SELECT COUNT(*) FROM " + dbname + ".T_ENDACCOUNT " + "WHERE SERVERPARTCODE = '" + _row["SERVERPARTCODE"].ToString() + "' AND SHOPCODE = '" + _row["SHOPCODE"].ToString() + "' AND MACHINECODE = '" + _row["MACHINECODE"].ToString() + "' AND ENDACCOUNT_STARTDATE = TO_DATE('" + _row["ENDACCOUNT_STARTDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') AND ENDACCOUNT_DATE = TO_DATE('" + _row["ENDACCOUNT_DATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') AND FLAG = 5 "; if (int.Parse(_OracleHelper.ExcuteSqlGetDataSet(_selectsql).Tables[0].Rows[0][0].ToString()) == 0) { string _insertstr = "INSERT INTO " + dbname + ".T_ENDACCOUNT "; string _valuesstr = SqlValues(_LocalDataTable, _row); string _columnsstr = SqlColumns(_LocalDataTable); if (_valuesstr != "") { _insertsql.Add(_insertstr + "(" + _columnsstr + ") VALUES (" + _valuesstr + ")"); } } worker.ReportProgress((int)((i / Convert.ToDecimal(_LocalDataTable.Rows.Count)) * 20)); } #endregion } } #endregion #region 日结营收相关数据 //日结营收相关数据 _selectsql = "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 WHERE ENDACCOUNT_DATE = " + "( SELECT MAX(ENDACCOUNT_DATE) FROM T_ENDACCOUNT WHERE ENDACCOUNT_DATE IS NOT NULL AND ENDACCOUNT_DATE < NOW() " + "AND SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND MACHINECODE = '" + machinecode + "' AND FLAG <> 5 ) ORDER BY ENDACCOUNT_ID DESC"; using (DataTable _LocalDataTable = DBHelper.ExecuteDataSet(_selectsql).Tables[0]) { if (_LocalDataTable.Rows.Count > 0) { DataSet _LocalDataSet = SplitDataTable(_LocalDataTable, 20); #region 通过接口上传 //string[] str = { "ENDACCOUNT", JsonHelper.ToJson(_LocalDataTable) }; foreach (DataTable _Table in _LocalDataSet.Tables) { string[] str = { "ENDACCOUNT", JsonHelper.ToJson(_Table) }; try { _Result = WSHelper.InvokeWebService("http://" + dbip + ":" + serviceport + "/Service.asmx", "LocalUpLoad", str).ToString(); if (_Result != "1" && _Result != "9") { break; } } catch (Exception ex) { FailCount++; LabelText("lblMessage", "日结报表上传失败:" + ex.Message, Color.Red); LabelText("lblEndUpLoad", "日结报表上传失败:" + ex.Message, Color.Black); break; } } switch (_Result) { case "1": LabelText("lblEndUpLoad", "日结报表上传成功。", Color.Black); Pic("picEndUpLoad", imgSuccess); worker.ReportProgress(20); break; case "9": LabelText("lblEndUpLoad", "日结报表已上传。", Color.Black); Pic("picEndUpLoad", imgNone); worker.ReportProgress(20); break; case "0": default: FailCount++; LabelText("lblEndUpLoad", "日结报表上传失败:" + _Result, Color.Black); Pic("picEndUpLoad", imgFail); worker.ReportProgress(20); break; } #endregion #region 数据库直接上传 int i = 0;//, ii = 0, values = 0; foreach (DataRow _row in _LocalDataTable.Rows) { i++; _selectsql = "SELECT COUNT(*) FROM " + dbname + ".T_ENDACCOUNT " + "WHERE SERVERPARTCODE = '" + _row["SERVERPARTCODE"].ToString() + "' AND SHOPCODE = '" + _row["SHOPCODE"].ToString() + "' AND MACHINECODE = '" + _row["MACHINECODE"].ToString() + "' AND ENDACCOUNT_STARTDATE = TO_DATE('" + _row["ENDACCOUNT_STARTDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') AND ENDACCOUNT_DATE = TO_DATE('" + _row["ENDACCOUNT_DATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') AND FLAG <> 5 "; if (int.Parse(_OracleHelper.ExcuteSqlGetDataSet(_selectsql).Tables[0].Rows[0][0].ToString()) == 0) { string _insertstr = "INSERT INTO " + dbname + ".T_ENDACCOUNT "; string _valuesstr = SqlValues(_LocalDataTable, _row); string _columnsstr = SqlColumns(_LocalDataTable); if (_valuesstr != "") { _insertsql.Add(_insertstr + "(" + _columnsstr + ") VALUES (" + _valuesstr + ")"); } } worker.ReportProgress((int)((i * (70 / Convert.ToDecimal(_LocalDataTable.Rows.Count))) + 20)); #endregion #region 交班报表 _selectsql = "SELECT " + "PERSONSELL_ID, SERVERPARTCODE, SHOPCODE, MACHINECODE, STARTDATE, ENDDATE, " + "CASHWORKER_CODE, TICKETCOUNT, TOTALCOUNT, TOTALSELLAMOUNT, TOTALOFFAMOUNT, " + "CASH, TICKETBILL, CREDITCARD, VIPPERSON, COSTBILL, OTHERPAY, CASHPAY, ENDPERSONCODE " + "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() + "')"; using (DataTable _Personsell = DBHelper.ExecuteDataSet(_selectsql).Tables[0]) { if (_Personsell.Rows.Count > 0) { #region 通过接口上传 //string[] strPersonsell = { "PERSONSELL", JsonHelper.ToJson(_Personsell) }; DataSet _PersonsellDataSet = SplitDataTable(_Personsell, 20); foreach (DataTable _Table in _PersonsellDataSet.Tables) { string[] strPersonsell = { "PERSONSELL", JsonHelper.ToJson(_Table) }; try { _Result = WSHelper.InvokeWebService("http://" + dbip + ":" + serviceport + "/Service.asmx", "LocalUpLoad", strPersonsell).ToString(); if (_Result != "1" && _Result != "9") { break; } } catch (Exception ex) { FailCount++; LabelText("lblMessage", "交班报表上传失败:" + ex.Message, Color.Red); LabelText("lblPersonUpLoad", "交班报表上传失败:" + ex.Message, Color.Black); break; } } switch (_Result) { case "1": LabelText("lblPersonUpLoad", "交班报表上传成功。", Color.Black); Pic("picPersonUpLoad", imgSuccess); break; case "9": LabelText("lblPersonUpLoad", "交班报表已上传。", Color.Black); Pic("picPersonUpLoad", imgNone); break; case "0": default: FailCount++; LabelText("lblPersonUpLoad", "交班报表上传失败:" + _Result, Color.Black); Pic("picPersonUpLoad", imgFail); break; } #endregion #region 数据库直接上传 foreach (DataRow _PersonsellRow in _Personsell.Rows) { _selectsql = "SELECT " + "PERSONSELL_ID, SERVERPARTCODE, SHOPCODE, MACHINECODE, STARTDATE, ENDDATE, " + "CASHWORKER_CODE, TICKETCOUNT, TOTALCOUNT, TOTALSELLAMOUNT, TOTALOFFAMOUNT, " + "CASH, TICKETBILL, CREDITCARD, VIPPERSON, COSTBILL, OTHERPAY, CASHPAY, ENDPERSONCODE " + "FROM " + dbname + ".T_PERSONSELL " + "WHERE " + " PERSONSELL_ID = " + _PersonsellRow["PERSONSELL_ID"].ToString() + " AND SERVERPARTCODE = '" + _PersonsellRow["SERVERPARTCODE"].ToString() + "' " + " AND SHOPCODE = '" + _PersonsellRow["SHOPCODE"].ToString() + "' " + " AND MACHINECODE = '" + _PersonsellRow["MACHINECODE"].ToString() + "' " + " AND STARTDATE = TO_DATE('" + _PersonsellRow["STARTDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS')"; int _Count = _OracleHelper.ExcuteSqlGetDataSet(_selectsql).Tables[0].Rows.Count; if (_Count < 1) { string _insertstr = "INSERT INTO " + dbname + ".T_PERSONSELL "; string _valuesstr = SqlValues(_Personsell, _PersonsellRow); string _columnsstr = SqlColumns(_Personsell); if (_valuesstr != "") { _insertsql.Add(_insertstr + "(" + _columnsstr + ") VALUES (" + _valuesstr + ")"); } } else if (_Count == 1) { string _updatesql = "UPDATE " + dbname + ".T_PERSONSELL " + "SET ENDDATE = TO_DATE('" + _PersonsellRow["ENDDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS')," + "CASHWORKER_CODE = '" + _PersonsellRow["CASHWORKER_CODE"].ToString() + "'," + "TICKETCOUNT = " + _PersonsellRow["TICKETCOUNT"].ToString() + "," + "TOTALCOUNT = " + _PersonsellRow["TOTALCOUNT"].ToString() + "," + "TOTALSELLAMOUNT = " + _PersonsellRow["TOTALSELLAMOUNT"].ToString() + "," + "TOTALOFFAMOUNT = " + _PersonsellRow["TOTALOFFAMOUNT"].ToString() + "," + "CASH = " + _PersonsellRow["CASH"].ToString() + "," + "TICKETBILL = " + _PersonsellRow["TICKETBILL"].ToString() + "," + "CREDITCARD = " + _PersonsellRow["CREDITCARD"].ToString() + "," + "VIPPERSON = " + _PersonsellRow["VIPPERSON"].ToString() + "," + "COSTBILL = " + _PersonsellRow["COSTBILL"].ToString() + "," + "OTHERPAY = " + _PersonsellRow["OTHERPAY"].ToString() + "," + "CASHPAY = " + _PersonsellRow["CASHPAY"].ToString() + "," + "ENDPERSONCODE = '" + _PersonsellRow["ENDPERSONCODE"].ToString() + "' " + "WHERE " + " PERSONSELL_ID = " + _PersonsellRow["PERSONSELL_ID"].ToString() + " AND SERVERPARTCODE = '" + _PersonsellRow["SERVERPARTCODE"].ToString() + "' AND SHOPCODE = '" + _PersonsellRow["SHOPCODE"].ToString() + "' AND MACHINECODE = '" + _PersonsellRow["MACHINECODE"].ToString() + "' AND STARTDATE = TO_DATE('" + _PersonsellRow["STARTDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') "; _insertsql.Add(_updatesql); } else { _insertsql.Add("DELETE FROM " + dbname + ".T_PERSONSELL WHERE " + "PERSONSELL_ID = " + _PersonsellRow["PERSONSELL_ID"].ToString() + " AND SERVERPARTCODE = '" + _PersonsellRow["SERVERPARTCODE"].ToString() + "' AND SHOPCODE = '" + _PersonsellRow["SHOPCODE"].ToString() + "' AND MACHINECODE = '" + _PersonsellRow["MACHINECODE"].ToString() + "' AND STARTDATE = TO_DATE('" + _PersonsellRow["STARTDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') "); string _insertstr = "INSERT INTO " + dbname + ".T_PERSONSELL "; string _valuesstr = SqlValues(_Personsell, _PersonsellRow); string _columnsstr = SqlColumns(_Personsell); if (_valuesstr != "") { _insertsql.Add(_insertstr + "(" + _columnsstr + ") VALUES (" + _valuesstr + ")"); } } } #endregion } } #endregion #region 单品报表 _selectsql = "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 " + " WHERE SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND STARTDATE >= DATETIME('" + _row["ENDACCOUNT_STARTDATE"].ToString() + "') AND ENDDATE <= DATETIME('" + _row["ENDACCOUNT_DATE"].ToString() + "')"; using (DataTable _TransferSale = DBHelper.ExecuteDataSet(_selectsql).Tables[0]) { if (_TransferSale.Rows.Count > 0) { #region 通过接口上传 //string[] strTransferSale = { "TRANSFER_SALE", JsonHelper.ToJson(_TransferSale) }; DataSet _TransferSaleDataSet = SplitDataTable(_TransferSale, 20); foreach (DataTable _Table in _TransferSaleDataSet.Tables) { string[] strTransferSale = { "TRANSFER_SALE", JsonHelper.ToJson(_Table) }; try { _Result = WSHelper.InvokeWebService("http://" + dbip + ":" + serviceport + "/Service.asmx", "LocalUpLoad", strTransferSale).ToString(); if (_Result != "1" && _Result != "9") { break; } } catch (Exception ex) { FailCount++; LabelText("lblMessage", "单品数据上传失败:" + ex.Message, Color.Red); LabelText("lblSaleUpLoad", "单品报表上传失败:" + ex.Message, Color.Black); break; } } switch (_Result) { case "1": LabelText("lblSaleUpLoad", "单品报表上传成功。", Color.Black); Pic("picSaleUpLoad", imgSuccess); break; case "9": LabelText("lblSaleUpLoad", "单品报表已上传。", Color.Black); Pic("picSaleUpLoad", imgNone); break; case "0": default: FailCount++; LabelText("lblSaleUpLoad", "单品报表上传失败:" + _Result, Color.Black); Pic("picSaleUpLoad", imgFail); break; } #endregion #region 数据库直接上传 foreach (DataRow _TransferSaleRow in _TransferSale.Rows) { _selectsql = "SELECT COUNT(*) FROM " + dbname + ".T_TRANSFER_SALE WHERE SERVERPARTCODE = '" + _TransferSaleRow["SERVERPARTCODE"].ToString() + "' AND SHOPCODE = '" + _TransferSaleRow["SHOPCODE"].ToString() + "' AND STARTDATE = TO_DATE('" + _TransferSaleRow["STARTDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') AND ENDDATE = TO_DATE('" + _TransferSaleRow["ENDDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') " + " AND TRANSFER_FIRSTDATAS = '" + _TransferSaleRow["TRANSFER_FIRSTDATAS"].ToString() + "'"; if (int.Parse(_OracleHelper.ExcuteSqlGetDataSet(_selectsql).Tables[0].Rows[0][0].ToString()) == 0) { string _insertstr = "INSERT INTO " + dbname + ".T_TRANSFER_SALE "; string _valuesstr = SqlValues(_TransferSale, _TransferSaleRow); string _columnsstr = SqlColumns(_TransferSale); if (_valuesstr != "") { _insertsql.Add(_insertstr + "(" + _columnsstr + ") VALUES (" + _valuesstr + ")"); } } } #endregion } } #endregion #region 移动支付 _selectsql = "SELECT " + "MOBILE_PAY_ID, SERVERPARTCODE, SHOPCODE, MACHINECODE, WORKERCODE, MOBILEPAY_DATE, " + "MOBILEPAY_TYPE, TICKET_CODE, TICKET_AMOUNT, MOBILEPAY_RESULT, MOBILEPAY_FEEDBACK " + "FROM " + "T_MOBILE_PAY " + " WHERE " + "SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND MACHINECODE = '" + machinecode + "' AND MOBILEPAY_DATE BETWEEN DATETIME('" + _row["ENDACCOUNT_STARTDATE"].ToString() + "') AND DATETIME('" + _row["ENDACCOUNT_DATE"].ToString() + "')"; using (DataTable _MobilePay = DBHelper.ExecuteDataSet(_selectsql).Tables[0]) { if (_MobilePay.Rows.Count > 0) { #region 通过接口上传 //string[] strMobilePay = { "MOBILE_PAY", JsonHelper.ToJson(_MobilePay) }; DataSet _MobilePayDataSet = SplitDataTable(_MobilePay, 20); foreach (DataTable _Table in _MobilePayDataSet.Tables) { string[] strMobilePay = { "MOBILE_PAY", JsonHelper.ToJson(_Table) }; try { _Result = WSHelper.InvokeWebService("http://" + dbip + ":" + serviceport + "/Service.asmx", "LocalUpLoad", strMobilePay).ToString(); if (_Result != "1" && _Result != "9") { break; } } catch (Exception ex) { FailCount++; LabelText("lblMessage", "移动支付上传失败:" + ex.Message, Color.Red); LabelText("lblMobeilUpLoad", "移动支付上传失败:" + ex.Message, Color.Black); } } switch (_Result) { case "1": LabelText("lblMobeilUpLoad", "移动支付上传成功。", Color.Black); Pic("picMobeilUpLoad", imgSuccess); break; case "9": LabelText("lblMobeilUpLoad", "移动支付已上传。", Color.Black); Pic("picMobeilUpLoad", imgNone); break; case "0": default: LabelText("lblMobeilUpLoad", "移动支付上传失败:" + _Result, Color.Black); Pic("picMobeilUpLoad", imgFail); break; } #endregion #region 数据库上传 foreach (DataRow _MobilePayRow in _MobilePay.Rows) { _selectsql = "SELECT COUNT(*) FROM " + dbname + ".T_MOBILE_PAY WHERE SERVERPARTCODE = '" + _MobilePayRow["SERVERPARTCODE"].ToString() + "' AND SHOPCODE = '" + _MobilePayRow["SHOPCODE"].ToString() + "' AND MACHINECODE = '" + _MobilePayRow["MACHINECODE"].ToString() + "' AND MOBILEPAY_DATE = TO_DATE('" + _MobilePayRow["MOBILEPAY_DATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') " + " AND TICKET_CODE = '" + _MobilePayRow["TICKET_CODE"].ToString() + "'"; if (int.Parse(_OracleHelper.ExcuteSqlGetDataSet(_selectsql).Tables[0].Rows[0][0].ToString()) == 0) { string _insertstr = "INSERT INTO " + dbname + ".T_MOBILE_PAY "; string _valuesstr = SqlValues(_MobilePay, _MobilePayRow); string _columnsstr = SqlColumns(_MobilePay); if (_valuesstr != "") { _insertsql.Add(_insertstr + "(" + _columnsstr + ") VALUES (" + _valuesstr + ")"); } } } #endregion } } #endregion } //worker.ReportProgress((int)((Convert.ToDecimal(_insertsql.Count) / Convert.ToDecimal(_LocalDataTable.Rows.Count)) * 100)); } } #endregion if (_insertsql.Count > 0) { worker.ReportProgress(95); //注释后不使用数据库上传功能 //_OracleHelper.ExecuteSqlTran(_insertsql); } if (FailCount == 0) worker.ReportProgress(100); if (bgWorkerOneClickUpload.CancellationPending == true) { args.Cancel = true; } } #endregion #region DataTable相关 /// /// 分解数据表 /// /// 需要分解的表 /// 每个表包含的数据量 /// 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 (tableNum == 0) { 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] = new DataTable(); foreach (DataColumn dc in originalTab.Columns) { tableSlice[c].Columns.Add(dc.ColumnName, dc.DataType); } } //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++) { 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; } /// /// 获取列名 /// /// /// private string SqlColumns(DataTable Table) { string _Columnsstr = ""; foreach (DataColumn col in Table.Columns) { _Columnsstr += (_Columnsstr == "" ? col.ColumnName : "," + col.ColumnName); } return _Columnsstr; } /// /// 获取行值 /// /// /// /// private string SqlValues(DataTable Table, DataRow Row) { string _valuesstr = ""; for (int i = 0; i < Table.Columns.Count; i++) { if (Table.Columns[i].DataType.ToString() == "System.Decimal") { _valuesstr += _valuesstr == "" ? (Row[i].ToString() == "" ? "NULL" : Row[i].ToString()) : "," + (Row[i].ToString() == "" ? "NULL" : Row[i].ToString()); } else if (Table.Columns[i].DataType.ToString() == "System.DateTime") { _valuesstr += _valuesstr == "" ? (Row[i].ToString() == "" ? "NULL" : "TO_DATE('" + Row[i].ToString() + "','YYYY/MM/DD HH24:MI:SS')") : "," + (Row[i].ToString() == "" ? "NULL" : "TO_DATE('" + Row[i].ToString() + "','YYYY/MM/DD HH24:MI:SS')"); } else { _valuesstr += _valuesstr == "" ? (Row[i].ToString() == "" ? "NULL" : "'" + Row[i].ToString()) + "'" : "," + (Row[i].ToString() == "" ? "NULL" : "'" + Row[i].ToString() + "'"); } } return _valuesstr; } /// /// 转换DataTable字段类型 /// /// /// public static DataTable ConvertOraclTableToDoNetTable(DataTable table) { DataTable dt = new DataTable(); foreach (DataColumn dc in table.Columns) { DataColumn column = new DataColumn(); column.DataType = GetDataType(dc.DataType); column.ColumnName = dc.ColumnName; column.Caption = dc.Caption; dt.Columns.Add(column); } dt.TableName = table.TableName; dt.Merge(table, false, MissingSchemaAction.Ignore); return dt; } /// /// 字段类型 /// /// /// public static Type GetDataType(Type dataType) { switch (dataType.ToString()) { case "System.Double": return System.Type.GetType("System.Decimal"); case "System.Int32": return System.Type.GetType("System.Decimal"); case "System.Int16": return System.Type.GetType("System.Decimal"); case "System.Int64": return System.Type.GetType("System.Decimal"); default: return dataType; } } #endregion private void NetWorkState_Tick(object sender, EventArgs e) { lblspname.Text = serverpartname; lblshopname.Text = shopname; lbllocalname.Text = machinename; lblmachinecode.Text = machinecode; lbllocalIP.Text = ComputerInfoHelper.GetAddressIP(); lblMACAdd.Text = macaddress; lblserverIP.Text = dbip; //if (Handle != GetForegroundWindow()) //持续使该窗体置为最前,屏蔽该行则单次置顶 //{ // SetForegroundWindow(Handle); //} //lblSubstitution.Text = ""; if (!bgWorker.IsBusy) bgWorker.RunWorkerAsync(); //if (!bgWorkerOneClickUpload.IsBusy) // bgWorkerOneClickUpload.RunWorkerAsync(); #region 弃用 //return; ////构造Ping实例 //Ping pingSender = new Ping(); ////Ping 选项设置 //PingOptions options = new PingOptions(); //options.DontFragment = true; ////测试数据 //string data = ""; //byte[] buffer = Encoding.ASCII.GetBytes(data); ////设置超时时间 //int timeout = 120; ////调用同步 send 方法发送数据,将返回结果保存至PingReply实例 //try //{ // _testcount++; // PingReply reply = pingSender.Send(dbip, timeout, buffer, options); // if (reply.Status == IPStatus.Success) // { // lbllatency.Text = reply.RoundtripTime.ToString() + "ms"; // if (reply.RoundtripTime < 10) // { // lblState.ForeColor = Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(179)))), ((int)(((byte)(113))))); // lblState.Text = "(畅通)"; // } // else if (reply.RoundtripTime < 30 && reply.RoundtripTime >= 10) // { // lblState.ForeColor = Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); // lblState.Text = "(良好)"; // } // else if (reply.RoundtripTime < 50 && reply.RoundtripTime >= 30) // { // lblState.ForeColor = Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(110)))), ((int)(((byte)(75))))); // lblState.Text = "(普通)"; // } // else // { // lblState.ForeColor = Color.Red; // lblState.Text = "(拥堵)"; // } // if (DateTime.Now.Second % 2 == 0) // { // try // { // EndaccountUpload(false); // EndaccountUpload(true); // PersonsellUpload(); // MobeilPayUpload(); // } // catch // { } // } // } // else // { // _timeout++; // } //} //catch (Exception ex) //{ // _timeout++; // lbllatency.Text = "网络中断"; // lblState.ForeColor = Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(0)))), ((int)(((byte)(255))))); // lblState.Text = "(断网)"; // piclocalSale.Image = null; // piclocalMobeil.Image = null; // piclocalPerson.Image = null; // piclocalAudit.Image = null; // piclocalEnd.Image = null; // picserverMobeil.Image = null; // picserverAudit.Image = null; // picserverPerson.Image = null; // picserverSale.Image = null; // picserverEnd.Image = null; //} //lblSubstitution.Text = (_timeout / _testcount * 100).ToString() + "%"; #endregion } #region 网络检测 /// /// 网络检测 /// private void NetWorkState() { //构造Ping实例 Ping pingSender = new Ping(); //Ping 选项设置 PingOptions options = new PingOptions(); options.DontFragment = true; //测试数据 string data = ""; byte[] buffer = Encoding.ASCII.GetBytes(data); //设置超时时间 int timeout = 120; //调用同步 send 方法发送数据,将返回结果保存至PingReply实例 try { _testcount++; PingReply reply = pingSender.Send(dbip, timeout, buffer, options); if (reply.Status == IPStatus.Success) { LabelText("lbllatency", reply.RoundtripTime.ToString() + "ms", Color.Gray); if (!_SetUpload) _SetUpload = true; if (_SetUpload && !_UploadState && !_Upload && _OracleState) LabelText("lblMessage", "按【F12】开始上传收银机营收数据", Color.Black); if (reply.RoundtripTime < 10) { LabelText("lblState", "(畅通)", Color.FromArgb(60, 179, 113)); } else if (reply.RoundtripTime < 30 && reply.RoundtripTime >= 10) { LabelText("lblState", "(良好)", Color.FromArgb(0, 255, 255)); } else if (reply.RoundtripTime < 50 && reply.RoundtripTime >= 30) { LabelText("lblState", "(普通)", Color.FromArgb(252, 110, 75)); } else { LabelText("lblState", "(拥堵)", Color.Red); } if (DateTime.Now.Second % 2 == 0) { if (!bgWorkerEndaccount.IsBusy) bgWorkerEndaccount.RunWorkerAsync(); if (!bgWorkerPersonsell.IsBusy) bgWorkerPersonsell.RunWorkerAsync(); if (!bgWorkerMobeilPay.IsBusy) bgWorkerMobeilPay.RunWorkerAsync(); } if (DateTime.Now.Second % 5 == 0) { string _Result = "0"; string[] str = { hostip }; try { //_Result = WSHelper.InvokeWebService("http://localhost:7080/EShangTechService/Service.asmx", "HostNetConnect", str).ToString(); _Result = WSHelper.InvokeWebService("http://" + dbip + ":" + serviceport + "/Service.asmx", "HostNetConnect", str).ToString(); LabelText("lblHQNetlatency", _Result + "ms", Color.Gray); if (decimal.Parse(_Result) < 10) { LabelText("lblHQNetState", "(畅通)", Color.FromArgb(60, 179, 113)); } else if (decimal.Parse(_Result) < 30 && decimal.Parse(_Result) >= 10) { LabelText("lblHQNetState", "(良好)", Color.FromArgb(0, 255, 255)); } else if (decimal.Parse(_Result) < 50 && decimal.Parse(_Result) >= 30) { LabelText("lblHQNetState", "(普通)", Color.FromArgb(252, 110, 75)); } else { LabelText("lblHQNetState", "(拥堵)", Color.Red); } } catch (Exception ex) { } } } else if (reply.Status == IPStatus.TimedOut) { _timeout++; LabelText("lbllatency", "网络超时", Color.Gray); LabelText("lblState", "(超时)", Color.Red); if (_SetUpload) _SetUpload = false; } else { _timeout++; LabelText("lbllatency", "网络中断", Color.Gray); LabelText("lblState", "(断网)", Color.FromArgb(128, 0, 255)); if (_SetUpload) _SetUpload = false; } } catch (Exception ex) { _timeout++; if (_SetUpload) _SetUpload = false; LabelText("lbllatency", "网络中断", Color.Gray); LabelText("lblState", "(断网)", Color.FromArgb(128, 0, 255)); bgWorkerEndaccount.CancelAsync(); bgWorkerMobeilPay.CancelAsync(); bgWorkerPersonsell.CancelAsync(); Pic("piclocalSale", null); Pic("piclocalMobeil", null); Pic("piclocalPerson", null); Pic("piclocalAudit", null); Pic("piclocalEnd", null); Pic("picserverMobeil", null); Pic("picserverAudit", null); Pic("picserverPerson", null); Pic("picserverSale", null); Pic("picserverEnd", null); } LabelText("lblSubstitution", (_timeout / _testcount * 100).ToString("F2") + "%", Color.Gray); } #endregion #region 日结及稽核信息上传状态 /// /// 检测日结及稽核信息上传状态 /// /// 是否稽核数据 private void EndaccountUpload(Boolean Symbol) { string _selectsql; DateTime? _endaccount_startdate = null; DateTime? _endaccount_date = null; _selectsql = "SELECT ENDACCOUNT_STARTDATE,ENDACCOUNT_DATE FROM T_ENDACCOUNT WHERE ENDACCOUNT_DATE = (" + "SELECT MAX(ENDACCOUNT_DATE) FROM T_ENDACCOUNT WHERE ENDACCOUNT_DATE IS NOT NULL AND ENDACCOUNT_DATE < NOW() AND SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND MACHINECODE = '" + machinecode + "' AND FLAG " + (Symbol ? "=" : "<>") + " 5 ) ORDER BY ENDACCOUNT_ID DESC"; try { using (DataTable _DataTable = DBHelper.ExecuteDataSet(_selectsql).Tables[0]) { if (_DataTable.Rows.Count > 0) { if (Symbol) { Pic("piclocalAuditData", imgSuccess); } else { Pic("piclocalEndData", imgSuccess); } try { _endaccount_startdate = Convert.ToDateTime(_DataTable.Rows[0]["ENDACCOUNT_STARTDATE"]); _endaccount_date = Convert.ToDateTime(_DataTable.Rows[0]["ENDACCOUNT_DATE"]); } catch { _endaccount_startdate = null; _endaccount_date = null; } } else { if (Symbol) { Pic("piclocalAuditData", imgNone); } else { Pic("piclocalEndData", imgNone); } } } } catch (Exception ex) { if (Symbol) { Pic("piclocalAuditData", imgFail); LabelText("lblMessage", "稽核数据读取失败:" + ex.Message, Color.Red); } else { Pic("piclocalEndData", imgFail); LabelText("lblMessage", "日结数据读取失败:" + ex.Message, Color.Red); } } if (!Symbol) { //lbldate.Text = _endaccount_date.ToString(); LabelText("lbldate", _endaccount_date.ToString(), Color.Gray); } if (_endaccount_date != null) { _selectsql = "SELECT NVL(TRANSFER_STATE,0) AS TRANSFER_STATE FROM " + dbname + ".T_ENDACCOUNT " + "WHERE SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND MACHINECODE = '" + machinecode + "' AND ENDACCOUNT_STARTDATE = TO_DATE('" + _endaccount_startdate + "','YYYY/MM/DD HH24:MI:SS') AND ENDACCOUNT_DATE = TO_DATE('" + _endaccount_date + "','YYYY/MM/DD HH24:MI:SS') AND FLAG " + (Symbol ? "=" : "<>") + " 5 "; try { using (DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet(_selectsql).Tables[0]) { if (_DataTable.Rows.Count > 0) { if (Symbol) { //piclocalAudit.Image = imgSuccess; Pic("piclocalAudit", imgSuccess); } else { //piclocalEnd.Image = imgSuccess; Pic("piclocalEnd", imgSuccess); } if (int.Parse(_DataTable.Rows[0]["TRANSFER_STATE"].ToString()) == 9) { if (Symbol) { //picserverAudit.Image = imgSuccess; Pic("picserverAudit", imgSuccess); } else { //picserverEnd.Image = imgSuccess; Pic("picserverEnd", imgSuccess); } } else { if (Symbol) { //picserverAudit.Image = imgFail; Pic("picserverAudit", imgFail); } else { //picserverEnd.Image = imgFail; Pic("picserverEnd", imgFail); } } } else { if (Symbol) { //piclocalAudit.Image = imgFail; Pic("piclocalAudit", imgFail); //picserverAudit.Image = imgFail; Pic("picserverAudit", imgFail); if (_UploadState) _UploadState = false; } else { //piclocalEnd.Image = imgFail; Pic("piclocalEnd", imgFail); //picserverEnd.Image = imgFail; Pic("picserverEnd", imgFail); if (_UploadState) _UploadState = false; } } } if (!_OracleState) { _OracleState = true; } } catch (Exception ex) { LabelText("lblMessage", (Symbol ? "稽核报表" : "日结报表") + "本地上传检测失败:" + ex.Message, Color.Red); //LogHelper.WriteServiceLog(_selectsql); if (Symbol) { Pic("piclocalAudit", imgNone); Pic("picserverAudit", imgNone); } else { Pic("piclocalEnd", imgNone); Pic("picserverEnd", imgNone); } if (_OracleState) _OracleState = false; } } else { if (Symbol) { //piclocalAudit.Image = null; Pic("piclocalAudit", imgNone); //picserverAudit.Image = null; Pic("picserverAudit", imgNone); } else { //piclocalEnd.Image = null; Pic("piclocalEnd", imgNone); //picserverEnd.Image = null; Pic("picserverEnd", imgNone); } } } #endregion #region 交班及单品上传状态 /// /// 检测交班及单品上传状态 /// private void PersonsellUpload() { string _selectsql; DateTime? _startdate = null; DateTime? _enddate = null; _selectsql = "SELECT STARTDATE,ENDDATE FROM T_PERSONSELL WHERE SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND MACHINECODE = '" + machinecode + "' AND ENDDATE = ( " + "SELECT MAX(ENDDATE) FROM T_PERSONSELL WHERE SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND MACHINECODE = '" + machinecode + "' AND ENDDATE < NOW() AND ENDDATE IS NOT NULL)"; try { using (DataTable _DataTable = DBHelper.ExecuteDataSet(_selectsql).Tables[0]) { if (_DataTable.Rows.Count > 0) { Pic("piclocalPersonData", imgSuccess); try { _startdate = Convert.ToDateTime(_DataTable.Rows[0]["STARTDATE"]); _enddate = Convert.ToDateTime(_DataTable.Rows[0]["ENDDATE"]); } catch { _startdate = null; _enddate = null; } } else { Pic("piclocalPersonData", imgNone); } } } catch (Exception ex) { Pic("piclocalPersonData", imgFail); LabelText("lblMessage", "交班数据读取失败:" + ex.Message, Color.Red); } if (_enddate != null) { #region 交班数据上传检测 _selectsql = "SELECT STARTDATE,ENDDATE,NVL(TRANSFER_STATE,0) AS TRANSFER_STATE FROM " + dbname + ".T_PERSONSELL WHERE SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND MACHINECODE = '" + machinecode + "' AND STARTDATE = TO_DATE('" + _startdate + "','YYYY/MM/DD HH24:MI:SS') AND ENDDATE = TO_DATE('" + _enddate + "','YYYY/MM/DD HH24:MI:SS')"; try { using (DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet(_selectsql).Tables[0]) { if (_DataTable.Rows.Count > 0) { Pic("piclocalPerson", imgSuccess); if (int.Parse(_DataTable.Rows[0]["TRANSFER_STATE"].ToString()) == 9) { Pic("picserverPerson", imgSuccess); } else { Pic("picserverPerson", imgFail); } } else { Pic("piclocalPerson", imgFail); Pic("picserverPerson", imgFail); if (_UploadState) _UploadState = false; } } if (!_OracleState) { _OracleState = true; } } catch (Exception ex) { LabelText("lblMessage", "交班报表本地上传检测失败:" + ex.Message, Color.Red); Pic("piclocalPerson", imgNone); Pic("picserverPerson", imgNone); if (_OracleState) _OracleState = false; } #endregion #region 单品数据上传状态 _selectsql = "SELECT TRANSFER_ID,STARTDATE,ENDDATE FROM T_TRANSFER_SALE WHERE SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND STARTDATE = DATETIME('" + _startdate + "') AND ENDDATE = DATETIME('" + _enddate + "')"; try { using (DataTable _DataTable = DBHelper.ExecuteDataSet(_selectsql).Tables[0]) { if (_DataTable.Rows.Count > 0) { Pic("piclocalSaleData", imgSuccess); string _TRANSFER_ID = ""; foreach (DataRow _Row in _DataTable.Rows) { _TRANSFER_ID += _TRANSFER_ID == "" ? _Row["TRANSFER_ID"].ToString() : "," + _Row["TRANSFER_ID"].ToString(); } _selectsql = "SELECT TRANSFER_ID,STARTDATE,ENDDATE,NVL(TRANSFER_STATE,0) AS TRANSFER_STATE FROM " + dbname + ".T_TRANSFER_SALE WHERE SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND STARTDATE = TO_DATE('" + _startdate + "','YYYY/MM/DD HH24:MI:SS') " + " AND ENDDATE = TO_DATE('" + _enddate + "','YYYY/MM/DD HH24:MI:SS') " + " AND TRANSFER_ID IN (" + _TRANSFER_ID + ")"; try { using (DataTable _ServerDataTable = _OracleHelper.ExcuteSqlGetDataSet(_selectsql).Tables[0]) { if (_ServerDataTable.Rows.Count > 0) { if (_ServerDataTable.Rows.Count >= _DataTable.Rows.Count) { Pic("piclocalSale", imgSuccess); for (int i = 0; i < _ServerDataTable.Rows.Count; i++) { if (int.Parse(_ServerDataTable.Rows[i]["TRANSFER_STATE"].ToString()) != 9) { Pic("picserverSale", imgFail); break; } if (i + 1 == _ServerDataTable.Rows.Count) { Pic("picserverSale", imgSuccess); } } } else { Pic("piclocalSale", imgFail); Pic("picserverSale", imgFail); if (_UploadState) _UploadState = false; } } else { Pic("piclocalSale", imgFail); Pic("picserverSale", imgFail); if (_UploadState) _UploadState = false; } } if (!_OracleState) { _OracleState = true; } } catch (Exception ex) { LabelText("lblMessage", "单品报表本地上传检测失败:" + ex.Message, Color.Red); Pic("piclocalSale", imgNone); Pic("picserverSale", imgNone); if (_OracleState) _OracleState = false; } } else { Pic("piclocalSaleData", imgNone); } } } catch (Exception ex) { Pic("piclocalSaleData", imgFail); LabelText("lblMessage", "单品数据读取失败:" + ex.Message, Color.Red); } #endregion } else { //piclocalPerson.Image = null; //piclocalSale.Image = null; Pic("piclocalPerson", imgNone); Pic("picserverPerson", imgNone); Pic("piclocalSale", imgNone); Pic("picserverSale", imgNone); } } #endregion #region 移动支付上传状态 private void MobeilPayUpload() { string _selectsql; DateTime? _startdate = null; DateTime? _enddate = null; _selectsql = "SELECT STARTDATE,ENDDATE FROM T_PERSONSELL WHERE SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND MACHINECODE = '" + machinecode + "' AND ENDDATE = ( " + "SELECT MAX(ENDDATE) FROM T_PERSONSELL WHERE SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND MACHINECODE = '" + machinecode + "' AND ENDDATE < NOW() AND ENDDATE IS NOT NULL)"; try { using (DataTable _DataTable = DBHelper.ExecuteDataSet(_selectsql).Tables[0]) { if (_DataTable.Rows.Count > 0) { try { _startdate = DateTime.Parse(_DataTable.Rows[0]["STARTDATE"].ToString()); _enddate = DateTime.Parse(_DataTable.Rows[0]["ENDDATE"].ToString()); } catch (Exception ex) { _startdate = null; _enddate = null; } } else { _startdate = null; _enddate = null; } } } catch (Exception ex) { Pic("piclocalMobeilData", imgFail); lbltext("lblMessage", "移动支付数据读取失败:" + ex.Message, Color.Red); } if (_enddate != null) { _selectsql = "SELECT MOBILE_PAY_ID, SERVERPARTCODE, SHOPCODE, MACHINECODE, WORKERCODE, MOBILEPAY_DATE, " + "MOBILEPAY_TYPE, TICKET_CODE,TICKET_AMOUNT, MOBILEPAY_RESULT, MOBILEPAY_FEEDBACK FROM T_MOBILE_PAY" + " WHERE SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND MACHINECODE = '" + machinecode + "'AND MOBILEPAY_DATE BETWEEN DATETIME('" + _startdate + "') AND DATETIME('" + _enddate + "')"; DataTable localMobeilPayTable = DBHelper.ExecuteDataSet(_selectsql).Tables[0]; if (localMobeilPayTable.Rows.Count > 0) { Pic("piclocalMobeilData", imgSuccess); _selectsql = "SELECT MOBILE_PAY_ID, SERVERPARTCODE, SHOPCODE, MACHINECODE, WORKERCODE, MOBILEPAY_DATE, " + "MOBILEPAY_TYPE, TICKET_CODE, TICKET_AMOUNT, MOBILEPAY_RESULT, MOBILEPAY_FEEDBACK FROM " + dbname + ".T_MOBILE_PAY" + " WHERE SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND MACHINECODE = '" + machinecode + "'AND MOBILEPAY_DATE BETWEEN TO_DATE('" + _startdate + "','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('" + _enddate + "','YYYY/MM/DD HH24:MI:SS')"; try { DataTable serverMobeilPayTable = ConvertOraclTableToDoNetTable(_OracleHelper.ExcuteSqlGetDataSet(_selectsql).Tables[0]); var _query = localMobeilPayTable.AsEnumerable().Except(serverMobeilPayTable.AsEnumerable(), DataRowComparer.Default); if (_query.Count() > 0) { //piclocalMobeil.Image = imgFail; //picserverMobeil.Image = imgFail; Pic("piclocalMobeil", imgFail); Pic("picserverMobeil", imgFail); if (_UploadState) _UploadState = false; } else { //piclocalMobeil.Image = imgSuccess; Pic("piclocalMobeil", imgSuccess); _selectsql = "SELECT MOBILE_PAY_ID,NVL(MOBILEPAY_STATE,0) AS MOBILEPAY_STATE FROM " + dbname + ".T_MOBILE_PAY" + " WHERE SERVERPARTCODE = '" + serverpartcode + "' AND SHOPCODE = '" + shopcode + "' AND MACHINECODE = '" + machinecode + "'AND MOBILEPAY_DATE BETWEEN TO_DATE('" + _startdate + "','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('" + _enddate + "','YYYY/MM/DD HH24:MI:SS')"; using (DataTable _TempDataTable = _OracleHelper.ExcuteSqlGetDataSet(_selectsql).Tables[0]) { for (int i = 0; i < _TempDataTable.Rows.Count; i++) { if (int.Parse(_TempDataTable.Rows[0]["MOBILEPAY_STATE"].ToString()) != 9) { //picserverMobeil.Image = imgFail; Pic("picserverMobeil", imgFail); break; } if (i + 1 == _TempDataTable.Rows.Count) { //picserverMobeil.Image = imgSuccess; Pic("picserverMobeil", imgSuccess); } } } } if (!_OracleState) { _OracleState = true; } } catch (Exception ex) { LabelText("lblMessage", "移动支付本地上传检测失败:" + ex.Message, Color.Red); Pic("piclocalMobeil", imgNone); Pic("picserverMobeil", imgNone); if (_OracleState) _OracleState = false; } } else { Pic("piclocalMobeilData", imgNone); Pic("piclocalMobeil", imgNone); Pic("picserverMobeil", imgNone); } } else { Pic("piclocalMobeilData", imgNone); Pic("piclocalMobeil", imgNone); Pic("picserverMobeil", imgNone); } } #endregion private void MachineInfo_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Escape) { bgWorker.CancelAsync(); bgWorkerEndaccount.CancelAsync(); bgWorkerMobeilPay.CancelAsync(); bgWorkerPersonsell.CancelAsync(); Close(); } else if (e.KeyCode == Keys.F12) { if (_SetUpload && !_UploadState && !_Upload && _OracleState) { _Upload = true; if (!bgWorkerOneClickUpload.IsBusy) bgWorkerOneClickUpload.RunWorkerAsync(); } } } } }