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

583 lines
18 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 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 "";
}
}
}