using System; using System.Collections.Generic; using System.Linq; using System.Text; using Lib = ESSupport.Lib; using System.Globalization; using System.Data; namespace ConnectPoint { public class DataStatistics { public string ServerPartCode { get; set; } public string ShopCode { get; set; } public string MachineCode { get; set; } /// /// 获取有效商品总数 /// /// public decimal GetCommodityCount() { string _strSelectSql = String.Format("SELECT COUNT(*) AS COMMODITYCOUNT FROM T_COMMODITYEX A,T_SHOPMESSAGE B " + "WHERE A.ISVALID = 1 AND A.SERVERPARTSHOP_ID = B.SERVERPARTSHOP_ID AND B.SERVERPARTCODE = '{0}' " + "AND B.SHOPCODE = '{1}'", ServerPartCode, ShopCode); try { return decimal.Parse(Lib.SyBaseHelper.QueryOdbc(_strSelectSql).Tables[0].Rows[0]["COMMODITYCOUNT"].ToString()); } catch (Exception ex) { return 0; } } /// /// 获取当前工班收银员 /// /// 是否新系统 /// public string GetPersonName(bool isNewSystem) { //select sellworkername from dba.t_sellworker a,dba.t_personsell b where a.sellworkercode = " + // "b.cashworker_code and a.serverpartcode = b.serverpartcode and b.shopcode ='" + // shopcode + "' and b.serverpartcode = '" + serverpartcode + "' and b.machinecode = '" + machinecode + // "' and b.enddate is null" string _strSelectSql = ""; if (isNewSystem) { _strSelectSql = String.Format("SELECT ISNULL(A.SELLWORKERNAME,'未登录工班') AS PERSONNAME " + "FROM T_SELLWORKER A,T_PERSONSELL_NEW B WHERE A.SELLWORKERCODE = B.SELLWORKER_CODE AND " + "A.SERVERPARTCODE = B.SERVERPARTCODE AND B.SERVERPARTCODE = '{0}' AND B.SHOPCODE = '{1}' AND " + "B.MACHINECODE = '{2}' AND B.ENDDATE IS NULL", ServerPartCode, ShopCode, MachineCode); } else { _strSelectSql = String.Format("SELECT ISNULL(A.SELLWORKERNAME,'未登录工班') AS PERSONNAME " + "FROM T_SELLWORKER A,T_PERSONSELL B WHERE A.SELLWORKERCODE = B.CASHWORKER_CODE " + "AND A.SERVERPARTCODE = B.SERVERPARTCODE AND B.SERVERPARTCODE = '{0}' AND B.SHOPCODE = '{1}' " + "AND B.MACHINECODE = '{2}' AND B.ENDDATE IS NULL", ServerPartCode, ShopCode, MachineCode); } try { return Lib.SyBaseHelper.QueryOdbc(_strSelectSql).Tables[0].Rows[0]["PERSONNAME"].ToString(); } catch (Exception ex) { if (ServerPartCode == "888888") { try { Lib.LogHelper.WriteServiceLog("获取当前工班收银员:" + ex.Message); } catch { } } return "未登录工班"; } } /// /// 获取销售情况 /// /// 是否新系统 /// 输出:客单数 /// 输出:销售数量 /// 输出:销售金额 /// public bool GetSellStatistics(bool isNewSystem, out decimal orderCount, out decimal sellCount, out decimal factAmount) { string _strSelectSql = ""; if (isNewSystem) { _strSelectSql = String.Format("SELECT COUNT(DISTINCT(SELLMASTER_CODE)) AS ORDERCOUNT," + "ISNULL(SUM(SELLMASTER_COUNT),0) AS SELLCOUNT,ISNULL(SUM(SELLMASTER_AMOUNT),0) AS FACTAMOUNT " + "FROM T_SELLMASTER WHERE SELLMASTER_DATE BETWEEN TODAY() AND NOW() AND SERVERPARTCODE = '{0}' " + "AND SHOPCODE = '{1}' AND MACHINECODE = '{2}'", ServerPartCode, ShopCode, MachineCode); } else { _strSelectSql = String.Format("SELECT COUNT(DISTINCT(TICKETCODE)) AS ORDERCOUNT," + "ISNULL(SUM(SELLCOUNT),0) AS SELLCOUNT,ISNULL(SUM(FACTAMOUNT),0) AS FACTAMOUNT " + "FROM T_SELLDATA WHERE SELLDATA_DATE BETWEEN TODAY() AND NOW() " + "AND SERVERPARTCODE = '{0}' AND SHOPCODE = '{1}' AND MACHINECODE = '{2}'", ServerPartCode, ShopCode, MachineCode); } try { DataTable _DataTable = Lib.SyBaseHelper.QueryOdbc(_strSelectSql).Tables[0]; orderCount = decimal.Parse(_DataTable.Rows[0]["ORDERCOUNT"].ToString()); sellCount = decimal.Parse(_DataTable.Rows[0]["SELLCOUNT"].ToString()); factAmount = decimal.Parse(_DataTable.Rows[0]["FACTAMOUNT"].ToString()); } catch { orderCount = 0; sellCount = 0; factAmount = 0; } return true; } /// /// 获取最后一笔交易时间 /// /// /// public string GetLastTrade(bool isNewSystem = true) { string _strSelectSql = ""; if (isNewSystem) { _strSelectSql = String.Format("SELECT MAX(SELLMASTER_DATE) FROM T_SELLMASTER " + "WHERE SELLMASTER_DATE < NOW() AND SERVERPARTCODE = '{0}' AND SHOPCODE = '{1}' " + "AND MACHINECODE = '{2}'", ServerPartCode, ShopCode, MachineCode); } else { _strSelectSql = String.Format("SELECT MAX(SELLDATA_DATE) FROM T_SELLDATA " + "WHERE SELLDATA_DATE < NOW() AND SERVERPARTCODE = '{0}' AND SHOPCODE = '{1}' " + "AND MACHINECODE = '{2}'", ServerPartCode, ShopCode, MachineCode); } try { return ((DateTime)Lib.SyBaseHelper.QueryOdbc(_strSelectSql).Tables[0].Rows[0][0]).ToString("yyyy/MM/dd", DateTimeFormatInfo.InvariantInfo); } catch (Exception ex) { return ""; } } /// /// 获取最近一笔交易详情 /// /// /// public string GetLastSellData(bool isNewSystem = true) { //销售日期,销售商品,销售金额 string _strSellDate = ""; string _strCommodity = ""; decimal _decFactAmount = 0; string _strSellDetail = ""; string _strSelectSql = ""; if (isNewSystem) { _strSelectSql = "SELECT B.SELLMASTER_DATE AS SELLDATA_DATE,B.SELLMASTER_AMOUNT AS FACTAMOUNT" + ",A.COMMODITY_CODE AS COMMODITY_CODE,A.SELLDETAILS_COUNT AS SELLCOUNT,A.SELLDETAILS_PRICE AS SELLPRICE " + "FROM T_SELLDETAILS A,T_SELLMASTER B WHERE A.SELLMASTER_CODE = B.SELLMASTER_CODE AND B.SELLMASTER_DATE = (" + "SELECT MAX(SELLMASTER_DATE) FROM T_SELLMASTER WHERE SELLMASTER_DATE BETWEEN TODAY() AND NOW())"; } else { _strSelectSql = "SELECT SELLDATA_DATE,COMMODITY_CODE,FACTAMOUNT,SELLCOUNT,SELLPRICE " + "FROM T_SELLDATA WHERE SELLDATA_DATE = (SELECT MAX(SELLDATA_DATE) " + "FROM DBA.T_SELLDATA WHERE SELLDATA_DATE BETWEEN TODAY() AND NOW())"; } try { DataTable _DataTable = Lib.SyBaseHelper.QueryOdbc(_strSelectSql).Tables[0]; if (_DataTable.Rows.Count > 0) { //销售时间 _strSellDate = _DataTable.Rows[0]["SELLDATA_DATE"].ToString(); //销售金额 if (isNewSystem) { _decFactAmount = (decimal)_DataTable.Rows[0]["FACTAMOUNT"]; } else { _decFactAmount = (decimal)_DataTable.Compute("SUM(FACTAMOUNT)", ""); } //销售明细 for (int i = 0; i < _DataTable.Rows.Count; i++) { _strCommodity += (_strCommodity == "" ? "" : ",") + _DataTable.Rows[i]["COMMODITY_CODE"].ToString(); _strSellDetail += (_strSellDetail == "" ? "(" : ",(") + ((decimal)_DataTable.Rows[i]["SELLCOUNT"]).ToString("F2") + "*" + ((decimal)_DataTable.Rows[i]["SELLPRICE"]).ToString("F2") + ")"; } return _strSellDate + "|" + _strCommodity + "|" + _decFactAmount.ToString("F2") + "|" + _strSellDetail; } else { return ""; } } catch { return ""; } } } }