583 lines
18 KiB
C#
583 lines
18 KiB
C#
using HiiShe.DataController.DataBaseHelper;
|
||
using PayForApp.Business;
|
||
using System;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Data.Odbc;
|
||
using System.Drawing;
|
||
using System.IO;
|
||
using System.Net;
|
||
using System.Text;
|
||
using System.Windows.Forms;
|
||
using System.Xml;
|
||
namespace ConnectPoint
|
||
{
|
||
public partial class MainForm : Form
|
||
{
|
||
|
||
|
||
|
||
|
||
|
||
private int ReplaceCount = 10;
|
||
private int GoCount = 0;
|
||
|
||
#region 属性 -> DBTRANS_MODE
|
||
private string _DBTRANS_MODE = "空";
|
||
public string DBTRANS_MODE
|
||
{
|
||
get
|
||
{
|
||
if (this._DBTRANS_MODE == "空")
|
||
{
|
||
this._DBTRANS_MODE = this.GetValue("dbtrans_mode=");
|
||
}
|
||
return this._DBTRANS_MODE;
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 属性 -> MACHINECODE
|
||
private string _MACHINECODE = "空";
|
||
public string MACHINECODE
|
||
{
|
||
get
|
||
{
|
||
if (this._MACHINECODE == "空")
|
||
{
|
||
this._MACHINECODE = this.GetValue("machinecode=");
|
||
}
|
||
return this._MACHINECODE;
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 属性 -> SHOPCODE
|
||
private string _SHOPCODE = "空";
|
||
public string SHOPCODE
|
||
{
|
||
get
|
||
{
|
||
if (this._SHOPCODE == "空")
|
||
{
|
||
this._SHOPCODE = this.GetValue("shopcode=");
|
||
}
|
||
return this._SHOPCODE;
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 属性 -> SERVERPARTCODE
|
||
private string _SERVERPARTCODE = "空";
|
||
public string SERVERPARTCODE
|
||
{
|
||
get
|
||
{
|
||
if (this._SERVERPARTCODE == "空")
|
||
{
|
||
this._SERVERPARTCODE = this.GetValue("serverpartcode=");
|
||
}
|
||
return this._SERVERPARTCODE;
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 属性 -> SoftVersion
|
||
private string _SoftVersion = "空";
|
||
public string SoftVersion
|
||
{
|
||
get
|
||
{
|
||
if (this._SoftVersion == "空")
|
||
{
|
||
this._SoftVersion = this.GetValue("brandnum=");
|
||
}
|
||
return this._SoftVersion;
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
public MainForm()
|
||
{
|
||
GetCurrAmount();
|
||
textBox1.Text = "计算机名称:" + this.GetMachineName() + "\r\n网络IP地址:" + this.GetAddressIP() + "\r\n机器名称:" + this.MACHINECODE + "\r\n" + "当前销售金额:" + CurrAmount + "\r\n当前对客单数:" + CurrSellCount + "\r\n当前登入用户名:" + GetCurrPreson() + "\r\n当前销售商品数量:" + GetCurrCommCount()
|
||
;
|
||
if (base.WindowState != FormWindowState.Minimized)
|
||
{
|
||
base.Visible = false;
|
||
base.Hide();
|
||
}
|
||
textBox2.Text = GetLastTrade();
|
||
|
||
textBox2.Text = textBox2.Text + GetLastSellData();
|
||
|
||
timer1.Interval = 50;
|
||
timer1.Tick += new EventHandler(this.timer1_Tick);
|
||
timer1.Start();
|
||
|
||
timer2.Interval = 1000;
|
||
timer2.Tick += timer2_Tick;
|
||
timer2.Start();
|
||
|
||
timer_Search.Interval = 1000;
|
||
timer_Search.Tick += timer_Search_Tick;
|
||
timer_Search.Start(); this.InitializeComponent();
|
||
|
||
}
|
||
#region 方法 -> 判断商品是否存在
|
||
void timer_Search_Tick(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
OracleHelper _OracleHelper = new OracleHelper();
|
||
_OracleHelper.ConnString = "Data Source=orcl;user Id=highway_exchange;Password=qrwl";
|
||
|
||
string StrSql = "SELECT * FROM HIGHWAY_EXCHANGE.T_SEARCHCOMM";
|
||
foreach (DataRow _Dr in _OracleHelper.ExcuteSqlGetDataSet(StrSql, "temptable").Tables[0].Rows)
|
||
{
|
||
|
||
//查询对应的商品是否存在
|
||
string CheckComm = "SELECT COUNT(*) FROM T_COMMODITYEX WHERE COMMODITY_CODE = '" + _Dr["COMMODITY_CODE"] + "' AND COMMODITY_BARCODE = '" + _Dr["COMMODITY_BARCODE"] + "'";
|
||
//MessageBox.Show(QueryOdbc(CheckComm).Tables[0].Rows[0][0].ToString());
|
||
if (QueryOdbc(CheckComm).Tables[0].Rows[0][0].ToString() != "0")
|
||
{
|
||
//插入数据
|
||
StrSql = "SELECT COUNT(*) FROM HIGHWAY_EXCHANGE.T_RESULTCOMM WHERE SHOPCODE ='" + this.SHOPCODE + "' AND MACHINECODE = '" + this.MACHINECODE + "'";
|
||
if (_OracleHelper.ExcuteSqlGetDataSet(StrSql, "tempdata").Tables[0].Rows[0][0].ToString() == "0")
|
||
{
|
||
StrSql = "INSERT INTO HIGHWAY_EXCHANGE.T_RESULTCOMM VALUES('" + _Dr["COMMODITY_CODE"] + "','" + _Dr["COMMODITY_BARCODE"] + "','" + _Dr["SERVERPART_CODE"] + "','" + this.SHOPCODE + "','" + this.MACHINECODE + "',1,SYSDATE) ";
|
||
_OracleHelper.ExcuteSql(StrSql);
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
catch
|
||
{
|
||
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
void timer2_Tick(object sender, EventArgs e)
|
||
{
|
||
if (DateTime.Parse(getConfigValue(strUpdateXmlPath, "UpDate")).ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd"))
|
||
{
|
||
if (GoCount < ReplaceCount)
|
||
{
|
||
GoCount = GoCount + 1;
|
||
SetReplaceValue("dbtrans_mode", "2");
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
private void timer1_Tick(object sender, EventArgs e)
|
||
{
|
||
base.Hide();
|
||
string SqlString = string.Empty;
|
||
this.timer1.Interval = 60000;
|
||
try
|
||
{
|
||
OracleHelper _OracleHelper = new OracleHelper();
|
||
_OracleHelper.ConnString = "Data Source=orcl;user Id=highway_exchange;Password=qrwl";
|
||
|
||
string GetCountSql = string.Concat(new string[]
|
||
{
|
||
"SELECT COUNT(*) FROM T_CONNECTPOINT WHERE MACHINECODE='",
|
||
this.MACHINECODE,
|
||
"' AND CONNECT_IP='",
|
||
this.GetAddressIP(),
|
||
"' AND SERVERPARTCODE='",
|
||
this.SERVERPARTCODE,
|
||
"' AND SHOPCODE='",
|
||
this.SHOPCODE,
|
||
"' AND MACHINENAME='",
|
||
this.GetMachineName(),
|
||
"'"
|
||
});
|
||
GetCurrAmount();
|
||
if (int.Parse(_OracleHelper.ExcuteSqlGetDataSet(GetCountSql, Guid.NewGuid().ToString()).Tables[0].Rows[0][0].ToString()) > 0)
|
||
{
|
||
|
||
SqlString = string.Concat(new string[]
|
||
{
|
||
"update T_CONNECTPOINT set ",
|
||
"CONNECTPOINT_ID ="+DBTRANS_MODE+",",
|
||
"CONNECT_DATE = sysdate, ",
|
||
"CURRAMOUNT = "+CurrAmount + ",",
|
||
"CURRSELLCOUNT = "+CurrSellCount + ",",
|
||
"CURRCOMMCOUNT = "+GetCurrCommCount() + ",",
|
||
"CURRPRESON ='"+GetCurrPreson()+"', ",
|
||
"CONTENT='"+GetLastTrade() + "|"+GetLastSellData() + "|"+SoftVersion + "' ",
|
||
"WHERE MACHINECODE='",
|
||
this.MACHINECODE,
|
||
"' AND CONNECT_IP='",
|
||
this.GetAddressIP(),
|
||
"' AND SERVERPARTCODE='",
|
||
this.SERVERPARTCODE,
|
||
"' AND SHOPCODE='",
|
||
this.SHOPCODE,
|
||
"' AND MACHINENAME='",
|
||
this.GetMachineName() + "'"
|
||
});
|
||
}
|
||
else
|
||
{
|
||
SqlString = string.Concat(new string[]
|
||
{
|
||
@"INSERT INTO T_CONNECTPOINT(MACHINECODE,CONNECT_DATE,CONNECT_IP,SERVERPARTCODE,SHOPCODE,MACHINENAME,CURRAMOUNT,CURRSELLCOUNT,
|
||
CURRCOMMCOUNT,CURRPRESON,CONTENT,CONNECTPOINT_ID)VALUES('",
|
||
this.MACHINECODE,
|
||
"',sysdate,'",
|
||
this.GetAddressIP(),
|
||
"','",
|
||
this.SERVERPARTCODE,
|
||
"','",
|
||
this.SHOPCODE,
|
||
"','",
|
||
this.GetMachineName(),
|
||
"','",
|
||
CurrAmount.ToString(),
|
||
"','",
|
||
CurrSellCount.ToString(),
|
||
"','",
|
||
GetCurrCommCount().ToString(),
|
||
"','",
|
||
GetCurrPreson(),
|
||
"','",
|
||
GetLastTrade() + "|"+GetLastSellData()+ "|"+SoftVersion,
|
||
"','",
|
||
DBTRANS_MODE,
|
||
"')"
|
||
});
|
||
}
|
||
_OracleHelper.ExecuteSqlTran(new string[]
|
||
{
|
||
SqlString
|
||
});
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteServiceLog(ex.Message + "\r\n" + SqlString);
|
||
}
|
||
|
||
}
|
||
public string GetMachineName()
|
||
{
|
||
string result;
|
||
try
|
||
{
|
||
result = Environment.MachineName;
|
||
}
|
||
catch (Exception)
|
||
{
|
||
result = "";
|
||
}
|
||
return result;
|
||
}
|
||
public string GetAddressIP()
|
||
{
|
||
string AddressIP = string.Empty;
|
||
IPAddress[] addressList = Dns.GetHostEntry(Dns.GetHostName()).AddressList;
|
||
for (int i = 0; i < addressList.Length; i++)
|
||
{
|
||
IPAddress _IPAddress = addressList[i];
|
||
if (_IPAddress.AddressFamily.ToString() == "InterNetwork")
|
||
{
|
||
AddressIP = _IPAddress.ToString();
|
||
}
|
||
}
|
||
return AddressIP;
|
||
}
|
||
|
||
public string GetValue(string Name)
|
||
{
|
||
string strLine = "";
|
||
try
|
||
{
|
||
FileStream aFile = new FileStream("setup.ini", FileMode.Open);
|
||
StreamReader sr = new StreamReader(aFile);
|
||
for (strLine = sr.ReadLine(); strLine != null; strLine = sr.ReadLine())
|
||
{
|
||
if (strLine.ToLower().Contains(Name))
|
||
{
|
||
sr.Close();
|
||
string result = strLine.Replace(Name, "");
|
||
return result;
|
||
}
|
||
}
|
||
sr.Close();
|
||
}
|
||
catch
|
||
{
|
||
string result = "";
|
||
return result;
|
||
}
|
||
return "";
|
||
}
|
||
|
||
private void MainForm_Load(object sender, EventArgs e)
|
||
{
|
||
|
||
}
|
||
|
||
|
||
public DataSet QueryOdbc(string SqlString)
|
||
{
|
||
string constr = "DSN=anysql1;UID=dba;PWD=sql;";
|
||
using (OdbcConnection conn = new OdbcConnection(constr))
|
||
{
|
||
OdbcCommand cmd = new OdbcCommand(SqlString, conn);
|
||
try
|
||
{
|
||
conn.Open();
|
||
OdbcDataAdapter adp = new OdbcDataAdapter(cmd);
|
||
DataSet ds = new DataSet();
|
||
adp.Fill(ds);
|
||
conn.Close();
|
||
return ds;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
throw ex;
|
||
}
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 当前收银员
|
||
/// </summary>
|
||
private string GetCurrPreson()
|
||
{
|
||
string SqlString1 = @"
|
||
select b.SELLWORKERNAME,a.STARTDATE
|
||
from
|
||
(select
|
||
CASHWORKER_CODE,STARTDATE
|
||
from
|
||
T_PERSONSELL
|
||
where
|
||
SERVERPARTCODE ='" + SERVERPARTCODE + "' and SHOPCODE = '" + SHOPCODE + "' and MACHINECODE = '" + MACHINECODE + "' and ENDDATE is null) a, "
|
||
+ @" T_SELLWORKER b
|
||
where
|
||
a.CASHWORKER_CODE = b.SELLWORKERCODE
|
||
order by a.STARTDATE desc";
|
||
try
|
||
{
|
||
DataTable _DataTable = QueryOdbc(SqlString1).Tables[0];
|
||
if (_DataTable.Rows.Count > 0)
|
||
{
|
||
|
||
return _DataTable.Rows[0]["SELLWORKERNAME"].ToString();
|
||
}
|
||
else
|
||
{
|
||
return "未登陆工班";
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return ex.Message;
|
||
}
|
||
}
|
||
|
||
private double CurrAmount = 0.0;
|
||
private double CurrSellCount = 0.0;
|
||
/// <summary>
|
||
/// 当前金额
|
||
/// </summary>
|
||
private void GetCurrAmount()
|
||
{
|
||
string SqlString = @"select count(distinct TICKETCODE),sum(factamount)
|
||
from
|
||
T_SELLDATA a
|
||
where
|
||
SERVERPARTCODE = '" + SERVERPARTCODE + "' and SHOPCODE = '" + SHOPCODE + "' and MACHINECODE = '" + MACHINECODE + "' and "
|
||
+ @" a.SELLDATA_DATE between (select max(STARTDATE) from T_PERSONSELL b where
|
||
ENDDATE is null and a.SERVERPARTCODE = b.SERVERPARTCODE and
|
||
a.SHOPCODE = b.SHOPCODE and a.MACHINECODE = b.MACHINECODE) and getdate()";
|
||
|
||
try
|
||
{
|
||
DataTable _DataTable = QueryOdbc(SqlString).Tables[0];
|
||
if (_DataTable.Rows.Count > 0)
|
||
{
|
||
|
||
CurrAmount = double.Parse(_DataTable.Rows[0][0].ToString());
|
||
if (CurrSellCount == 0)
|
||
{
|
||
CurrAmount = 0;
|
||
}
|
||
CurrSellCount = double.Parse(_DataTable.Rows[0][1].ToString());
|
||
}
|
||
else
|
||
{
|
||
|
||
return;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 当前客单数
|
||
/// </summary>
|
||
|
||
|
||
/// <summary>
|
||
/// 当前销售商品数量
|
||
/// </summary>
|
||
private double GetCurrCommCount()
|
||
{
|
||
string SqlString = "SELECT COUNT(*) FROM T_COMMODITYEX ";
|
||
|
||
try
|
||
{
|
||
DataTable _DataTable = QueryOdbc(SqlString).Tables[0];
|
||
if (_DataTable.Rows.Count > 0)
|
||
{
|
||
return double.Parse(_DataTable.Rows[0][0].ToString());
|
||
}
|
||
else
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
catch
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
|
||
private string GetLastTrade()
|
||
{
|
||
string SqlString = "SELECT MAX(SELLDATA_DATE) FROM T_SELLDATA where to_char(getdate(),'yyyy-mm-dd') = to_char(TO_DATE(SELLDATA_DATE,'YYYY-MM-DD HH24:MI:SS'),'yyyy-mm-dd')";
|
||
SqlString = "SELECT MAX(SELLDATA_DATE) from T_SELLDATA";
|
||
try
|
||
{
|
||
DataTable _DataTable = QueryOdbc(SqlString).Tables[0];
|
||
if (_DataTable.Rows.Count > 0)
|
||
{
|
||
//if (_DataTable.Rows[0][0].ToString().Split(' ')[0] != System.DateTime.Now.ToString("yyyy-MM-dd"))
|
||
//{
|
||
// return "未开始收银";
|
||
//}
|
||
//else
|
||
//{
|
||
return _DataTable.Rows[0][0].ToString().Split(' ')[0];
|
||
//}
|
||
}
|
||
else
|
||
{
|
||
return "";
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return "";
|
||
}
|
||
}
|
||
|
||
|
||
private string GetLastSellData()
|
||
{
|
||
//销售日期,销售商品,销售金额
|
||
string SellData = string.Empty;
|
||
string Commodity = string.Empty;
|
||
double FactAmount = 0;
|
||
string SellDetail = "";
|
||
bool flag = true;
|
||
string SqlString = "select SELLDATA_DATE,COMMODITY_CODE,FACTAMOUNT,SELLCOUNT,SELLPRICE from t_selldata where selldata_date = (select max(selldata_date) from t_selldata where selldata_date > today())";
|
||
try
|
||
{
|
||
DataTable _DataTable = QueryOdbc(SqlString).Tables[0];
|
||
if (_DataTable.Rows.Count > 0)
|
||
{
|
||
foreach (DataRow _Dr in _DataTable.Rows)
|
||
{
|
||
if (flag)
|
||
{
|
||
SellData = _Dr["SELLDATA_DATE"].ToString();
|
||
flag = false;
|
||
}
|
||
Commodity += (Commodity == string.Empty ? "" : ",") + _Dr["COMMODITY_CODE"].ToString();
|
||
//金额
|
||
FactAmount += double.Parse(_Dr["FACTAMOUNT"].ToString());
|
||
//销售明细
|
||
SellDetail += (SellDetail == "" ? "" : ",") + "(" + _Dr["SELLCOUNT"].ToString() + "*" + _Dr["SELLPRICE"].ToString() + ")";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return "";
|
||
}
|
||
return SellData + "|" + Commodity + "|" + FactAmount + "|" + SellDetail;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return "";
|
||
}
|
||
}
|
||
|
||
|
||
|
||
public bool SetReplaceValue(string Name, string Value)
|
||
{
|
||
try
|
||
{
|
||
string[] LinesText = System.IO.File.ReadAllLines("setup.ini", Encoding.Default);
|
||
for (int i = 0; i < LinesText.Length; i++)
|
||
{
|
||
if (LinesText[i].Split('=')[0].ToLower() == Name)
|
||
{
|
||
LinesText[i] = Name + "=" + Value;
|
||
}
|
||
}
|
||
|
||
using (System.IO.StreamWriter file = new System.IO.StreamWriter("setup.ini", false, Encoding.Default))
|
||
{
|
||
foreach (string line in LinesText)
|
||
{
|
||
file.WriteLine(line);// 直接追加文件末尾,换行
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
catch
|
||
{
|
||
return false;
|
||
}
|
||
}
|
||
|
||
|
||
public string strUpdateXmlPath = Application.StartupPath + @"/update.xml";
|
||
private string getConfigValue(string path, string appKey)
|
||
{
|
||
XmlDocument xDoc = new XmlDocument();
|
||
XmlNode xNode;
|
||
XmlElement xElem = null;
|
||
try
|
||
{
|
||
xDoc.Load(path);
|
||
|
||
xNode = xDoc.SelectSingleNode("//appSettings");
|
||
xElem = (XmlElement)xNode.SelectSingleNode("//add[@key=\"" + appKey + "\"]");
|
||
|
||
}
|
||
catch (XmlException ex)
|
||
{
|
||
}
|
||
if (xElem != null)
|
||
return xElem.GetAttribute("value");
|
||
else
|
||
return "";
|
||
}
|
||
|
||
|
||
}
|
||
} |