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 ""; } } }