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