using System;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using MaintainFund;
using MaintainFund.DataClass;
using System.Collections;
using System.Collections.Generic;
namespace MaintainFund.DataAccess
{
/// <summary>
/// 報表查詢(xún)
/// </summary>
public class DAReport
{
#region 統計資金流入流出-小區
/// <summary>
/// 統計資金流入流出-小區
/// </summary>
/// <param name="dcDBInfo">數據庫信息</param>
/// <param name="dtResult">統計結果</param>
/// <returns>
/// 0:成功
/// -1:失敗
/// -2:無(wú)數據
/// </returns>
public static int SelectFundFlowByLiveArea(DCDatabaseInfo dcDBInfo, DCPayInformation dcCondition, ref DataTable dtResult)
{
StringBuilder sql = new StringBuilder();
List<SqlParameter> lsParam = new List<SqlParameter>();
//如果不賦值,按照最大區間檢索
if (dcCondition.PayDateF <= DateTime.MinValue)
{
dcCondition.PayDateF = new DateTime(1900, 1, 1);
}
if (dcCondition.PayDateT <= DateTime.MinValue)
{
dcCondition.PayDateT = DateTime.MaxValue;
}
sql.Append(" SELECT ");
sql.Append(" MAX(B2.Name) AS LiveArea ");
sql.Append(" ,MAX(CASE B1.ItemName WHEN 'PersonPay' THEN SumValue ELSE 0 END) AS PersonPay ");
sql.Append(" ,MAX(CASE B1.ItemName WHEN 'UnitPay' THEN SumValue ELSE 0 END) AS UnitPay ");
sql.Append(" ,MAX(CASE B1.ItemName WHEN 'Usepay' THEN SumValue ELSE 0 END) AS Usepay ");
sql.Append(" ,MAX(CASE B1.ItemName WHEN 'Interest' THEN SumValue ELSE 0 END) AS Interest ");
sql.Append(" ,MAX(CASE B1.ItemName WHEN 'CancelPay' THEN SumValue ELSE 0 END) AS CancelPay ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT ");
sql.Append(" A2.LiveArea ");
sql.Append(" ,'PersonPay' AS ItemName ");
sql.Append(" ,SUM(A1.PersonPay) AS SumValue ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT HouseNumber ");
sql.Append(" ,PersonPay ");
sql.Append(" FROM PayInformation ");
sql.Append(" WHERE State = '" + Constant.PayInformation_State.PersonalValue + "' ");
sql.Append(" AND PayDate >= @STARTDATE AND PayDate <= @ENDDATE ");
sql.Append(" )AS A1 ");
sql.Append(" LEFT JOIN HOUSE AS A2 ");
sql.Append(" ON A1.HouseNumber = A2.No ");
sql.Append(" GROUP BY A2.LiveArea ");
sql.Append(" ");
sql.Append(" UNION ALL ");
sql.Append(" ");
sql.Append(" SELECT ");
sql.Append(" A2.LiveArea ");
sql.Append(" ,'UnitPay' AS ItemName ");
sql.Append(" ,SUM(A1.UnitPay) AS SumValue ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT HouseNumber ");
sql.Append(" ,UnitPay ");
sql.Append(" FROM PayInformation ");
sql.Append(" WHERE State = '" + Constant.PayInformation_State.UnitValue + "' ");
sql.Append(" AND PayDate >= @STARTDATE AND PayDate <= @ENDDATE ");
sql.Append(" )AS A1 ");
sql.Append(" LEFT JOIN HOUSE AS A2 ");
sql.Append(" ON A1.HouseNumber = A2.No ");
sql.Append(" GROUP BY A2.LiveArea ");
sql.Append(" ");
sql.Append(" UNION ALL ");
sql.Append(" ");
sql.Append(" SELECT ");
sql.Append(" A2.LiveArea ");
sql.Append(" ,'Usepay' AS ItemName ");
sql.Append(" ,SUM(A1.SharePay) AS SumValue ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT HouseNumber ");
sql.Append(" ,SharePay ");
sql.Append(" FROM UseShare ");
sql.Append(" WHERE ShareDate >= @STARTDATE AND ShareDate <= @ENDDATE ");
sql.Append(" )AS A1 ");
sql.Append(" LEFT JOIN HOUSE AS A2 ");
sql.Append(" ON A1.HouseNumber = A2.No ");
sql.Append(" GROUP BY A2.LiveArea ");
sql.Append(" ");
sql.Append(" UNION ALL ");
sql.Append(" ");
sql.Append(" SELECT ");
sql.Append(" A2.LiveArea ");
sql.Append(" ,'Interest' AS ItemName ");
sql.Append(" ,SUM(A1.Interest) AS SumValue ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT HouseNo ");
sql.Append(" ,Interest ");
sql.Append(" FROM Interest ");
sql.Append(" WHERE InterestDate >= @STARTDATE AND InterestDate <= @ENDDATE ");
sql.Append(" )AS A1 ");
sql.Append(" LEFT JOIN HOUSE AS A2 ");
sql.Append(" ON A1.HouseNo = A2.No ");
sql.Append(" GROUP BY A2.LiveArea ");
sql.Append(" ");
sql.Append(" UNION ALL ");
sql.Append(" ");
sql.Append(" SELECT ");
sql.Append(" A2.LiveArea ");
sql.Append(" ,'CancelPay' AS ItemName ");
sql.Append(" ,SUM(A1.ReturnSum) AS SumValue ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT HouseNumber ");
sql.Append(" ,ReturnSum ");
sql.Append(" FROM CancelDetailedList ");
sql.Append(" WHERE OptTime >= @STARTDATE AND OptTime <= @ENDDATE ");
sql.Append(" )AS A1 ");
sql.Append(" LEFT JOIN HOUSE AS A2 ");
sql.Append(" ON A1.HouseNumber = A2.No ");
sql.Append(" GROUP BY A2.LiveArea ");
sql.Append(" )AS B1 ");
sql.Append(" LEFT JOIN LiveArea AS B2 ");
sql.Append(" ON B1.LiveArea = B2.No ");
sql.Append(" GROUP BY B2.No ");
lsParam.Add(new SqlParameter("@STARTDATE", dcCondition.PayDateF));
lsParam.Add(new SqlParameter("@ENDDATE", dcCondition.PayDateT));
SqlParameter[] parm = lsParam.ToArray();
using (DCExecuteRequest dcExecuteRequest = new DCExecuteRequest())
{
int result = DADatabase.ExecuteQuery(dcDBInfo, dcExecuteRequest, sql.ToString(), parm);
if (result == Constant.DB_FAILURE)
{
// 失敗
return Constant.DB_FAILURE;
}
if (dcExecuteRequest.dataTable.Rows.Count > 0)
{
//返回結果
dtResult = dcExecuteRequest.dataTable;
return Constant.DB_SUCCESS;
}
// 無(wú)數據
if (dcExecuteRequest.dataTable.Rows.Count == 0)
{
return Constant.DB_NODATA;
}
}
return Constant.DB_FAILURE;
}
#endregion
#region 資金總賬查詢(xún)用
public static int SelectReportFundByCondition(DCDatabaseInfo dcDBInfo, DCHouseHistory dcHouseHistory, string date, ref DataTable dtResult)
{
StringBuilder sql = new StringBuilder();
List<SqlParameter> lsParam = new List<SqlParameter>();
sql.Append(" SELECT ");
sql.Append(" SUM(UnitPay) AS UnitPay");
sql.Append(" ,SUM(PersonPay) AS PersonPay ");
sql.Append(" ,SUM(UsePay) AS UsePay ");
sql.Append(" ,SUM(Interest) AS Interest");
sql.Append(" ,SUM(Balance) AS Balance");
sql.Append(" ,SUM(ReturnSum) AS CancelPay");
sql.Append(" FROM ");
sql.Append(" HouseHistory ");
sql.Append(" WHERE 1=1 ");
if (!string.IsNullOrEmpty(date))
{
lsParam.Add(new SqlParameter("@DATE", DateTime.Parse(date + " 23:59:59.998")));
}
else
{
lsParam.Add(new SqlParameter("@DATE", DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59.998")));
}
using (DCExecuteRequest dcExecuteRequest = new DCExecuteRequest())
{
int result = DADatabase.ExecuteQuery(dcDBInfo, dcExecuteRequest, sql.ToString(), lsParam.ToArray());
if (result == Constant.DB_FAILURE)
{
// 失敗
return Constant.DB_FAILURE;
}
if (dcExecuteRequest.dataTable.Rows.Count > 0)
{
//返回結果
dtResult = dcExecuteRequest.dataTable;
return Constant.DB_SUCCESS;
}
// 無(wú)數據
if (dcExecuteRequest.dataTable.Rows.Count == 0)
{
dtResult = dcExecuteRequest.dataTable;
return Constant.DB_NODATA;
}
}
return Constant.DB_FAILURE;
}
#endregion
#region 統計資金流入流出-樓棟
/// <summary>
/// 統計資金流入流出-樓棟
/// </summary>
/// <param name="dcDBInfo">數據庫信息</param>
/// <param name="dtResult">統計結果</param>
/// <returns>
/// 0:成功
/// -1:失敗
/// -2:無(wú)數據
/// </returns>
public static int SelectFundFlowByBuild(DCDatabaseInfo dcDBInfo, DCPayInformation dcCondition, ref DataTable dtResult)
{
StringBuilder sql = new StringBuilder();
List<SqlParameter> lsParam = new List<SqlParameter>();
//如果不賦值,按照最大區間檢索
if (dcCondition.PayDateF <= DateTime.MinValue)
{
dcCondition.PayDateF = new DateTime(1900, 1, 1);
}
if (dcCondition.PayDateT <= DateTime.MinValue)
{
dcCondition.PayDateT = DateTime.MaxValue;
}
sql.Append(" SELECT ");
sql.Append(" MAX(B2.Name) AS LiveArea ");
sql.Append(" ,MAX(B3.Name) AS Build ");
sql.Append(" ,MAX(CASE B1.ItemName WHEN 'PersonPay' THEN SumValue ELSE 0 END) AS PersonPay ");
sql.Append(" ,MAX(CASE B1.ItemName WHEN 'UnitPay' THEN SumValue ELSE 0 END) AS UnitPay ");
sql.Append(" ,MAX(CASE B1.ItemName WHEN 'Usepay' THEN SumValue ELSE 0 END) AS Usepay ");
sql.Append(" ,MAX(CASE B1.ItemName WHEN 'Interest' THEN SumValue ELSE 0 END) AS Interest ");
sql.Append(" ,MAX(CASE B1.ItemName WHEN 'CancelPay' THEN SumValue ELSE 0 END) AS CancelPay ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT ");
sql.Append(" A2.LiveArea, A2.Build ");
sql.Append(" ,'PersonPay' AS ItemName ");
sql.Append(" ,SUM(A1.PersonPay) AS SumValue ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT HouseNumber ");
sql.Append(" ,PersonPay ");
sql.Append(" FROM PayInformation ");
sql.Append(" WHERE State = '" + Constant.PayInformation_State.PersonalValue + "' ");
sql.Append(" AND PayDate >= @STARTDATE AND PayDate <= @ENDDATE ");
sql.Append(" )AS A1 ");
sql.Append(" LEFT JOIN HOUSE AS A2 ");
sql.Append(" ON A1.HouseNumber = A2.No ");
sql.Append(" GROUP BY A2.LiveArea, A2.Build ");
sql.Append(" ");
sql.Append(" UNION ALL ");
sql.Append(" ");
sql.Append(" SELECT ");
sql.Append(" A2.LiveArea, A2.Build ");
sql.Append(" ,'UnitPay' AS ItemName ");
sql.Append(" ,SUM(A1.UnitPay) AS SumValue ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT HouseNumber ");
sql.Append(" ,UnitPay ");
sql.Append(" FROM PayInformation ");
sql.Append(" WHERE State = '" + Constant.PayInformation_State.UnitValue + "' ");
sql.Append(" AND PayDate >= @STARTDATE AND PayDate <= @ENDDATE ");
sql.Append(" )AS A1 ");
sql.Append(" LEFT JOIN HOUSE AS A2 ");
sql.Append(" ON A1.HouseNumber = A2.No ");
sql.Append(" GROUP BY A2.LiveArea, A2.Build ");
sql.Append(" ");
sql.Append(" UNION ALL ");
sql.Append(" ");
sql.Append(" SELECT ");
sql.Append(" A2.LiveArea, A2.Build ");
sql.Append(" ,'Usepay' AS ItemName ");
sql.Append(" ,SUM(A1.SharePay) AS SumValue ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT HouseNumber ");
sql.Append(" ,SharePay ");
sql.Append(" FROM UseShare ");
sql.Append(" WHERE ShareDate >= @STARTDATE AND ShareDate <= @ENDDATE ");
sql.Append(" )AS A1 ");
sql.Append(" LEFT JOIN HOUSE AS A2 ");
sql.Append(" ON A1.HouseNumber = A2.No ");
sql.Append(" GROUP BY A2.LiveArea, A2.Build ");
sql.Append(" ");
sql.Append(" UNION ALL ");
sql.Append(" ");
sql.Append(" SELECT ");
sql.Append(" A2.LiveArea, A2.Build ");
sql.Append(" ,'Interest' AS ItemName ");
sql.Append(" ,SUM(A1.Interest) AS SumValue ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT HouseNo ");
sql.Append(" ,Interest ");
sql.Append(" FROM Interest ");
sql.Append(" WHERE InterestDate >= @STARTDATE AND InterestDate <= @ENDDATE ");
sql.Append(" )AS A1 ");
sql.Append(" LEFT JOIN HOUSE AS A2 ");
sql.Append(" ON A1.HouseNo = A2.No ");
sql.Append(" GROUP BY A2.LiveArea, A2.Build ");
sql.Append(" ");
sql.Append(" UNION ALL ");
sql.Append(" ");
sql.Append(" SELECT ");
sql.Append(" A2.LiveArea, A2.Build ");
sql.Append(" ,'CancelPay' AS ItemName ");
sql.Append(" ,SUM(A1.ReturnSum) AS SumValue ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT HouseNumber ");
sql.Append(" ,ReturnSum ");
sql.Append(" FROM CancelDetailedList ");
sql.Append(" WHERE OptTime >= @STARTDATE AND OptTime <= @ENDDATE ");
sql.Append(" )AS A1 ");
sql.Append(" LEFT JOIN HOUSE AS A2 ");
sql.Append(" ON A1.HouseNumber = A2.No ");
sql.Append(" GROUP BY A2.LiveArea, A2.Build ");
sql.Append(" )AS B1 ");
sql.Append(" LEFT JOIN LiveArea AS B2 ");
sql.Append(" ON B1.LiveArea = B2.No ");
sql.Append(" LEFT JOIN Build AS B3 ");
sql.Append(" ON B3.No = B1.Build ");
sql.Append(" GROUP BY B3.No,B2.No ");
lsParam.Add(new SqlParameter("@STARTDATE", dcCondition.PayDateF));
lsParam.Add(new SqlParameter("@ENDDATE", dcCondition.PayDateT));
SqlParameter[] parm = lsParam.ToArray();
using (DCExecuteRequest dcExecuteRequest = new DCExecuteRequest())
{
int result = DADatabase.ExecuteQuery(dcDBInfo, dcExecuteRequest, sql.ToString(), parm);
if (result == Constant.DB_FAILURE)
{
// 失敗
return Constant.DB_FAILURE;
}
if (dcExecuteRequest.dataTable.Rows.Count > 0)
{
//返回結果
dtResult = dcExecuteRequest.dataTable;
return Constant.DB_SUCCESS;
}
// 無(wú)數據
if (dcExecuteRequest.dataTable.Rows.Count == 0)
{
return Constant.DB_NODATA;
}
}
return Constant.DB_FAILURE;
}
#endregion
#region 統計資金流入流出-房屋類(lèi)型
/// <summary>
/// 統計資金流入流出-房屋類(lèi)型
/// </summary>
/// <param name="dcDBInfo">數據庫信息</param>
/// <param name="dtResult">統計結果</param>
/// <returns>
/// 0:成功
/// -1:失敗
/// -2:無(wú)數據
/// </returns>
public static int SelectFundFlowByHouseType(DCDatabaseInfo dcDBInfo, DCPayInformation dcCondition, ref DataTable dtResult)
{
StringBuilder sql = new StringBuilder();
List<SqlParameter> lsParam = new List<SqlParameter>();
//如果不賦值,按照最大區間檢索
if (dcCondition.PayDateF <= DateTime.MinValue)
{
dcCondition.PayDateF = new DateTime(1900, 1, 1);
}
if (dcCondition.PayDateT <= DateTime.MinValue)
{
dcCondition.PayDateT = DateTime.MaxValue;
}
sql.Append(" SELECT ");
sql.Append(" MAX(B2.TypeName) AS HouseType ");
sql.Append(" ,MAX(CASE B1.ItemName WHEN 'PersonalPay' THEN SumValue ELSE 0 END) AS PersonalPay ");
sql.Append(" ,MAX(CASE B1.ItemName WHEN 'UnitPay' THEN SumValue ELSE 0 END) AS UnitPay ");
sql.Append(" ,MAX(CASE B1.ItemName WHEN 'Usepay' THEN SumValue ELSE 0 END) AS Usepay ");
sql.Append(" ,MAX(CASE B1.ItemName WHEN 'Interest' THEN SumValue ELSE 0 END) AS Interest ");
sql.Append(" ,MAX(CASE B1.ItemName WHEN 'CancelPay' THEN SumValue ELSE 0 END) AS CancelPay ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT ");
sql.Append(" A2.HouseType ");
sql.Append(" ,'PersonalPay' AS ItemName ");
sql.Append(" ,SUM(A1.PersonPay) AS SumValue ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT HouseNumber ");
sql.Append(" ,PersonPay ");
sql.Append(" FROM PayInformation ");
sql.Append(" WHERE State = '" + Constant.PayInformation_State.PersonalValue + "' ");
sql.Append(" AND PayDate >= @STARTDATE AND PayDate <= @ENDDATE ");
sql.Append(" )AS A1 ");
sql.Append(" LEFT JOIN HOUSE AS A2 ");
sql.Append(" ON A1.HouseNumber = A2.No ");
sql.Append(" GROUP BY A2.HouseType ");
sql.Append(" ");
sql.Append(" UNION ALL ");
sql.Append(" ");
sql.Append(" SELECT ");
sql.Append(" A2.HouseType ");
sql.Append(" ,'UnitPay' AS ItemName ");
sql.Append(" ,SUM(A1.UnitPay) AS SumValue ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT HouseNumber ");
sql.Append(" ,UnitPay ");
sql.Append(" FROM PayInformation ");
sql.Append(" WHERE State = '" + Constant.PayInformation_State.UnitValue + "' ");
sql.Append(" AND PayDate >= @STARTDATE AND PayDate <= @ENDDATE ");
sql.Append(" )AS A1 ");
sql.Append(" LEFT JOIN HOUSE AS A2 ");
sql.Append(" ON A1.HouseNumber = A2.No ");
sql.Append(" GROUP BY A2.HouseType ");
sql.Append(" ");
sql.Append(" UNION ALL ");
sql.Append(" ");
sql.Append(" SELECT ");
sql.Append(" A2.HouseType ");
sql.Append(" ,'Usepay' AS ItemName ");
sql.Append(" ,SUM(A1.SharePay) AS SumValue ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT HouseNumber ");
sql.Append(" ,SharePay ");
sql.Append(" FROM UseShare ");
sql.Append(" WHERE ShareDate >= @STARTDATE AND ShareDate <= @ENDDATE ");
sql.Append(" )AS A1 ");
sql.Append(" LEFT JOIN HOUSE AS A2 ");
sql.Append(" ON A1.HouseNumber = A2.No ");
sql.Append(" GROUP BY A2.HouseType ");
sql.Append(" ");
sql.Append(" UNION ALL ");
sql.Append(" ");
sql.Append(" SELECT ");
sql.Append(" A2.HouseType ");
sql.Append(" ,'Interest' AS ItemName ");
sql.Append(" ,SUM(A1.Interest) AS SumValue ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT HouseNo ");
sql.Append(" ,Interest ");
sql.Append(" FROM Interest ");
sql.Append(" WHERE InterestDate >= @STARTDATE AND InterestDate <= @ENDDATE ");
sql.Append(" )AS A1 ");
sql.Append(" LEFT JOIN HOUSE AS A2 ");
sql.Append(" ON A1.HouseNo = A2.No ");
sql.Append(" GROUP BY A2.HouseType ");
sql.Append(" ");
sql.Append(" UNION ALL ");
sql.Append(" ");
sql.Append(" SELECT ");
sql.Append(" A2.HouseType ");
sql.Append(" ,'CancelPay' AS ItemName ");
sql.Append(" ,SUM(A1.ReturnSum) AS SumValue ");
sql.Append(" FROM ");
sql.Append(" ( ");
sql.Append(" SELECT HouseNumber ");
sql.Append(" ,ReturnSum ");
sql.Append(" FROM CancelDetailedList ");
sql.Append(" WHERE OptTime >= @STARTDATE AND OptTime <= @ENDDATE ");
sql.Append(" )AS A1 ");
sql.Append(" LEFT JOIN HOUSE AS A2 ");
sql.Append(" ON A1.HouseNumber = A2.No ");
sql.Append(" GROUP BY A2.HouseType ");
sql.Append(" )AS B1 ");
sql.Append(" LEFT JOIN HouseType AS B2 ");
sql.Append(" ON B1.HouseType = B2.TypeID ");
sql.Append(" GROUP BY B2.TypeID ");
lsParam.Add(new SqlParameter("@STARTDATE", dcCondition.PayDateF));
lsParam.Add(new SqlParameter("@ENDDATE", dcCondition.PayDateT));
SqlParameter[] parm = lsParam.ToArray();
using (DCExecuteRequest dcExecuteRequest = new DCExecuteRequest())
{
int result = DADatabase.ExecuteQuery(dcDBInfo, dcExecuteRequest, sql.ToString(), parm);
if (result == Constant.DB_FAILURE)
{
// 失敗
return Constant.DB_FAILURE;
}
if (dcExecuteRequest.dataTable.Rows.Count > 0)
{
//返回結果
dtResult = dcExecuteRequest.dataTable;
return Constant.DB_SUCCESS;
}
// 無(wú)數據
if (dcExecuteRequest.dataTable.Rows.Count == 0)
{
return Constant.DB_NODATA;
}
}
return Constant.DB_FAILURE;
}
#endregion
}
}
聯(lián)系客服