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;
}
}
}
///
/// 当前收银员
///
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;
///
/// 当前金额
///
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;
}
}
///
/// 当前客单数
///
///
/// 当前销售商品数量
///
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 "";
}
}
}