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

1806 lines
88 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.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
/// <summary>
/// 服务器IP
/// </summary>
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"));
}
}
/// <summary>
/// webservice服务端口
/// </summary>
public string serviceport { get { return (DataUpdate.ConfigUrationValues("service_port", "7080").Trim()); } }
/// <summary>
/// 数据库端口
/// </summary>
public string dbport
{
get
{
return (DataUpdate.ConfigUrationValues("server_dbport", "").Trim() == "" ?
DataUpdate.ConfigUrationValues("dbport", "1521").Trim() :
DataUpdate.ConfigUrationValues("server_dbport", "1521").Trim());
}
}
/// <summary>
/// 数据库名
/// </summary>
public string dbname
{
get
{
return (DataUpdate.ConfigUrationValues("server_dbname", "").Trim() == "" ?
DataUpdate.ConfigUrationValues("dbname", "highway_exchange").Trim() :
DataUpdate.ConfigUrationValues("server_dbname", "highway_exchange").Trim());
}
}
/// <summary>
/// 数据库用户名
/// </summary>
public string dbuser
{
get
{
return (DataUpdate.ConfigUrationValues("server_dbuser", "").Trim() == "" ?
DataUpdate.ConfigUrationValues("dbuser", "highway_exchange").Trim() :
DataUpdate.ConfigUrationValues("server_dbuser", "highway_exchange").Trim());
}
}
/// <summary>
/// 数据库密码
/// </summary>
public string dbpass
{
get
{
return (DataUpdate.ConfigUrationValues("server_dbpass", "").Trim() == "" ?
DataUpdate.ConfigUrationValues("dbpass", "qrwl").Trim() :
DataUpdate.ConfigUrationValues("server_dbpass", "qrwl").Trim());
}
}
/// <summary>
/// 数据库连接名
/// </summary>
public string conname
{
get
{
return (DataUpdate.ConfigUrationValues("server_conname", "").Trim() == "" ?
DataUpdate.ConfigUrationValues("conname", "orcl").Trim() :
DataUpdate.ConfigUrationValues("server_conname", "orcl").Trim());
}
}
/// <summary>
/// 服务区编码
/// </summary>
public string serverpartcode { get { return DataUpdate.ConfigUrationValues("serverpartcode", "").Trim(); } }
/// <summary>
/// 服务区名称
/// </summary>
public string serverpartname { get { return DataUpdate.ConfigUrationValues("serverpartname", "").Trim(); } }
/// <summary>
/// 门店编码
/// </summary>
public string shopcode { get { return DataUpdate.ConfigUrationValues("shopcode", "").Trim(); } }
/// <summary>
/// 门店名称
/// </summary>
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 ""; }
}
}
/// <summary>
/// 收银机编码
/// </summary>
public string machinecode { get { return DataUpdate.ConfigUrationValues("machinecode", "").Trim(); } }
/// <summary>
/// 收银机名称
/// </summary>
public string machinename { get { return Dns.GetHostName(); } }
/// <summary>
/// 收银系统版本
/// </summary>
public string softversion { get { return DataUpdate.ConfigUrationValues("version", "").Trim(); } }
/// <summary>
/// 收银机MAC地址
/// </summary>
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();
}
/// <summary>
/// 在winform中查找控件
/// </summary>
/// <param ></param>
/// <param ></param>
/// <returns></returns>
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;
}
/// <summary>
/// 网络状态
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
private void DoWork_Handler(object sender, DoWorkEventArgs args)
{
if (bgWorker.CancellationPending == true)
{
args.Cancel = true;
}
NetWorkState();
}
/// <summary>
/// 日结及稽核数据上传状态
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
private void EndaccountUpload_Handler(object sender, DoWorkEventArgs args)
{
EndaccountUpload(false);
EndaccountUpload(true);
if (bgWorkerEndaccount.CancellationPending == true)
{
args.Cancel = true;
}
}
/// <summary>
/// 交班数据上传状态
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
private void PersonsellUpload_Handler(object sender, DoWorkEventArgs args)
{
PersonsellUpload();
if (bgWorkerPersonsell.CancellationPending == true)
{
args.Cancel = true;
}
}
/// <summary>
/// 移动支付数据上传状态
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
private void MobeilPayUpload_Handler(object sender, DoWorkEventArgs args)
{
MobeilPayUpload();
if (bgWorkerMobeilPay.CancellationPending == true)
{
args.Cancel = true;
}
}
#endregion
#region
/// <summary>
/// 一键上传最近账期数据
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
private void OneClickUpload_Handler(object sender, DoWorkEventArgs args)
{
BackgroundWorker worker = sender as BackgroundWorker;
string _selectsql;
string _Result = "";
int FailCount = 0;
List<string> _insertsql = new List<string>();
#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相关
/// <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 (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;
}
/// <summary>
/// 获取列名
/// </summary>
/// <param name="Table"></param>
/// <returns></returns>
private string SqlColumns(DataTable Table)
{
string _Columnsstr = "";
foreach (DataColumn col in Table.Columns)
{
_Columnsstr += (_Columnsstr == "" ? col.ColumnName : "," + col.ColumnName);
}
return _Columnsstr;
}
/// <summary>
/// 获取行值
/// </summary>
/// <param name="Table"></param>
/// <param name="Row"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 转换DataTable字段类型
/// </summary>
/// <param name="table"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 字段类型
/// </summary>
/// <param name="dataType"></param>
/// <returns></returns>
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
/// <summary>
/// 网络检测
/// </summary>
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
/// <summary>
/// 检测日结及稽核信息上传状态
/// </summary>
/// <param name="Symbol">是否稽核数据</param>
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
/// <summary>
/// 检测交班及单品上传状态
/// </summary>
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();
}
}
}
}
}