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 网络检测
///
/// 网络检测
///
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();
//}
}
}
}
}