You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DS7/DSWeb/Areas/Import/Controllers/RptFeeTotalController.cs

111 lines
4.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using DSWeb.Areas.Import.Models.RptFeeTotal;
using DSWeb.TruckMng.Helper;
using Microsoft.Practices.EnterpriseLibrary.Data;
namespace DSWeb.Areas.Import.Controllers
{
/// <summary>
/// 应收/实收 应付/实付 列表
/// </summary>
public class RptFeeTotalController : Controller
{
//
// GET: /Import/RptFeeTotal/
public ActionResult Index()
{
return View();
}
public ContentResult GetDataList(int start, int limit, string sort, string condition)
{
var dataList = GetDataList(condition);
var list = dataList.Skip(start).Take(limit);
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = list.ToList() });
return new ContentResult() { Content = json };
}
private static List<RptFeeTotal> GetDataList(string strCondition)
{
var strSql = new StringBuilder();
strSql.Append(" select * from (select cf.gid,cf.customername,m.hth,cf.auditdate,cf.bsno,cf.feename, ");
strSql.Append(" cft.dotyperef,convert(varchar,cf.amount) Y,'' S, ");
strSql.Append(" cft.dotyperef+'结余:' name,cft.total- ");
strSql.Append(" (case when(select max(cft2.total) from ch_fee_total cft2 ");
strSql.Append(" where cft2.customername=cf.customername ");
strSql.Append(" and cft2.dotype=cf.feetype+2 and cft2.auditdate<=cf.auditdate) is null then 0 else ");
strSql.Append(" (select max(cft2.total) from ch_fee_total cft2 ");
strSql.Append(" where cft2.customername=cf.customername ");
strSql.Append(" and cft2.dotype=cf.feetype+2 and cft2.auditdate<=cf.auditdate) end) jy ");
strSql.Append(" from ch_fee cf ");
strSql.Append(" left join ch_fee_total cft on cft.parid=cf.gid ");
strSql.Append(" left join import_main m on m.contractno=cf.bsno ");
strSql.Append(" where cf.feestatus in(0,8,9) ");
strSql.Append(" union all ");
strSql.Append(" select cfd.gid,cfd.customername,m.hth hth,cfd.createtime auditdate,'' bsno, ");
strSql.Append(" '' feename,'实际结算 '+cft.dotyperef dotyperef,'' Y,convert(varchar,cfd.amount) S, ");
strSql.Append(" (select case cft.dotype when 3 then '应收' when 4 then '实收' end) ");
strSql.Append(" +'结余:' name,(select case max(cft2.total) when null then 0 else max(cft2.total) ");
strSql.Append(" end from ch_fee_total cft2 ");
strSql.Append(" where cft2.dotype=cfd.feetype ");
strSql.Append(" and cft2.customername=cfd.customername and cft2.auditdate<cfd.createtime)-cft.total jy ");
strSql.Append(" from ch_fee_do cfd ");
strSql.Append(" left join ch_fee_total cft on cft.parid=cfd.gid ");
strSql.Append(" left join import_main m on m.contractno=cfd.bsno ");
strSql.Append(" where ((cfd.isdeleted is null) or (cfd.isdeleted<>1)) ");
strSql.Append(" )tt ");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" where " + strCondition);
}
strSql.Append(" order by tt.customername,tt.auditdate,tt.jy,tt.hth ");
return SetData(strSql);
}
private static List<RptFeeTotal> SetData(StringBuilder strSql)
{
var headList = new List<RptFeeTotal>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
var data = new RptFeeTotal();
#region Set DB data to Object
data.gid = Convert.ToString(reader["gid"]);
data.HTH = Convert.ToString(reader["HTH"]);
data.CustomerName = Convert.ToString(reader["CustomerName"]);
data.AuditDate = Convert.ToString(reader["AuditDate"]);
data.bsno = Convert.ToString(reader["bsno"]);
data.FeeName = Convert.ToString(reader["FeeName"]);
data.dotyperef = Convert.ToString(reader["dotyperef"]);
data.Y = Convert.ToString(reader["Y"]);
data.S = Convert.ToString(reader["S"]);
data.name = Convert.ToString(reader["name"]);
data.jy = Convert.ToString(reader["jy"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
}
}