改太多
This commit is contained in:
1 parent
be5352efed
commit
1cb2a7a35e
48 files changed
+17970
-485
No files matched your search
@@ -0,0 +1,158 @@
|
||||
using PagedList;
|
||||
using System;
|
||||
using System.Activities;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Http;
|
||||
|
||||
/// <summary>
|
||||
/// billController 的摘要描述
|
||||
/// </summary>
|
||||
[ezAuthorize]
|
||||
public class billController : BaseApiController
|
||||
{
|
||||
public billController()
|
||||
{
|
||||
//
|
||||
// TODO: 在這裡新增建構函式邏輯
|
||||
//
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[Route("api/bill/GetAuditList")]
|
||||
public IHttpActionResult GetAuditList([FromBody] dynamic data, int page, int pageSize = 10,
|
||||
string sortBy = "", bool sortDesc = false)
|
||||
{
|
||||
var json = data;
|
||||
var start_date = (json == null || json.start_date == null) ? "" : (string)json.start_date;
|
||||
var end_date = (json == null || json.end_date == null) ? "" : (string)json.end_date;
|
||||
var activity_num = (json == null || json.activity_num == null||(string)json.activity_num=="") ? 0 : (int)json.activity_num;
|
||||
//var args = new List<SqlParameter>();
|
||||
//StringBuilder sb = new StringBuilder();
|
||||
var qry = _db.transfer_register.AsQueryable();
|
||||
if (!string.IsNullOrEmpty(start_date))
|
||||
{
|
||||
qry = qry.Where(x=>x.check_date.Value.ToString("yyyyMMdd").CompareTo(start_date) >=0);
|
||||
}
|
||||
if (!string.IsNullOrEmpty(end_date))
|
||||
{
|
||||
qry = qry.Where(x => x.check_date.Value.ToString("yyyyMMdd").CompareTo(end_date) <= 0);
|
||||
}
|
||||
if (activity_num > 0)
|
||||
{
|
||||
qry = qry.Where(x=>x.activity_num== activity_num);
|
||||
}
|
||||
qry = qry.OrderBy(x => x.id);
|
||||
var count = qry.Count();
|
||||
var qryList = (pageSize > 0) ? qry.ToPagedList(page, pageSize).ToList() : qry.ToList();
|
||||
var ret = new
|
||||
{
|
||||
list = qryList.Select(x => new
|
||||
{
|
||||
x.activity_num,x.id,x.name,x.pay_type,x.pay_mode,
|
||||
acc_name=_db.accounting_kind2.Where(y=>y.num==x.acc_num).Select(y=>y.kind).FirstOrDefault(),
|
||||
check_date=x.check_date.Value.ToString("yyyyMMdd"),
|
||||
followerName=_db.followers.Where(z=>z.num==x.f_num).Select(z=>z.u_name).FirstOrDefault(),
|
||||
x.check_amount,x.check_status
|
||||
}),
|
||||
count = count
|
||||
|
||||
};
|
||||
|
||||
|
||||
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
||||
return Ok(ret);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[Route("api/bill/GetAuditDetailData")]
|
||||
public IHttpActionResult GetAuditDetailData([FromBody] dynamic data)
|
||||
{
|
||||
var json = data;
|
||||
var startDate =(json==null||json.startDate==null)?"": (string)json.startDate;
|
||||
var endDate = (json==null||json.endDate==null)?"":(string)json.endDate;
|
||||
var activityNum = (json == null || json.activityNum == null) ? 0 : (int)json.activityNum;
|
||||
var id = (json == null || json.id == null) ? 0 : (int)json.id;
|
||||
var args = new List<SqlParameter>();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append("WITH Combined_JSON_Details AS ( ");
|
||||
sb.Append("SELECT ");
|
||||
sb.Append("t.id AS register_id, ");
|
||||
sb.Append("COALESCE(items.[f_num], CASE WHEN t.pay_mode = '個人' THEN t.f_num END) AS final_f_num, ");
|
||||
sb.Append("COALESCE(items.[follower_name], CASE WHEN t.pay_mode = '個人' THEN t.name END) AS final_follower_name, ");
|
||||
sb.Append("items.[pro_order_detail_num],items.[reconcile],items.[actitem_name],items.[activity_name], ");
|
||||
sb.Append("items.[register_date],items.[order_no],items.[price] ");
|
||||
sb.Append("FROM [transfer_register] AS t ");
|
||||
sb.Append("CROSS APPLY OPENJSON(t.[draft], CASE WHEN t.[draft] LIKE '%pro_order_detail_items%' THEN '$.pro_order_detail_items' ELSE '$' END) ");
|
||||
sb.Append("WITH ( ");
|
||||
sb.Append("[f_num] INT '$.f_num', ");
|
||||
sb.Append("[follower_name] NVARCHAR(50) '$.follower_name', ");
|
||||
sb.Append("[pro_order_detail_num] INT '$.pro_order_detail_num', ");
|
||||
sb.Append("[reconcile] DECIMAL(18,2) '$.reconcile', ");
|
||||
sb.Append("[actitem_name] NVARCHAR(100) '$.actitem_name', ");
|
||||
sb.Append(" [activity_name] NVARCHAR(100) '$.activity_name', ");
|
||||
sb.Append("[register_date] DATETIME2 '$.register_date', ");
|
||||
sb.Append("[order_no] VARCHAR(50) '$.order_no', ");
|
||||
sb.Append("[price] DECIMAL(18,2) '$.price' ");
|
||||
sb.Append(") AS items), ");
|
||||
sb.Append("Unique_Order_Activity AS ( ");
|
||||
sb.Append("SELECT pd.num AS pro_order_detail_num, MAX(p.activity_num) AS activity_num ");
|
||||
sb.Append("FROM pro_order_detail pd ");
|
||||
sb.Append("INNER JOIN pro_order p ON pd.order_no = p.order_no ");
|
||||
sb.Append("GROUP BY pd.num) ");
|
||||
sb.Append("SELECT ");
|
||||
sb.Append("t.id AS [轉帳序號], t.pay_mode AS [沖帳型態], convert(varchar(10),t.check_date,120) AS [沖帳日期], t.name AS [主要付款人], ");
|
||||
sb.Append("t.phone AS [付款人電話], t.amount AS [主單總金額], t.status AS [主單狀態], t.check_amount AS [已核對金額], ");
|
||||
sb.Append("t.f_num AS [付款人代號], k.kind AS [入帳帳戶], a.activity_num AS [法會編號], j.final_f_num AS [實際功德人代號], ");
|
||||
sb.Append("j.final_follower_name AS [實際功德人姓名], j.pro_order_detail_num AS [訂單明細編號], j.order_no AS [訂單編號], ");
|
||||
sb.Append("j.actitem_name AS [牌位/點燈項目], j.activity_name AS [法會名稱], j.price AS [項目原價], j.reconcile AS [本次實際沖帳金額], ");
|
||||
sb.Append("j.register_date AS [登記時間], [總金額] =(select sum(price) from pro_order_detail pd where pd.order_no in ( ");
|
||||
sb.Append("select order_no from pro_order p where activity_num=a.activity_num and p.f_num=j.final_f_num ) ) ");
|
||||
sb.Append("FROM [transfer_register] AS t ");
|
||||
sb.Append("INNER JOIN Combined_JSON_Details j ON t.id = j.register_id ");
|
||||
sb.Append("LEFT JOIN Unique_Order_Activity a ON a.pro_order_detail_num = j.pro_order_detail_num ");
|
||||
sb.Append("left join accounting_kind2 k on t.acc_num=k.num ");
|
||||
sb.Append("where 1=1 ");
|
||||
//and CONVERT(varchar,t.check_date,120)>='20260801' and convert(varchar,t.check_date,120)<='20260831'
|
||||
if (!string.IsNullOrEmpty(startDate))
|
||||
{
|
||||
sb.Append("and CONVERT(varchar,t.check_date,120)>=@startDate ");
|
||||
args.Add(new SqlParameter("startDate",startDate));
|
||||
}
|
||||
if (!string.IsNullOrEmpty(endDate))
|
||||
{
|
||||
sb.Append("and CONVERT(varchar,t.check_date,120)<=@endDate ");
|
||||
args.Add(new SqlParameter("endDate", endDate));
|
||||
}
|
||||
if (activityNum>0)
|
||||
{
|
||||
sb.Append("and a.activity_num=@activityNum ");
|
||||
args.Add(new SqlParameter("activityNum", activityNum));
|
||||
}
|
||||
if (id > 0)
|
||||
{
|
||||
sb.Append("and t.id=@id ");
|
||||
args.Add(new SqlParameter("id", id));
|
||||
}
|
||||
sb.Append("ORDER BY a.activity_num,j.order_no ");
|
||||
sb.Append("for json auto ");
|
||||
var result=_db.Database.SqlQuery<string>(sb.ToString(),args.ToArray()).ToList();
|
||||
List<dynamic> list=new List<dynamic>();
|
||||
var fullJsonString = string.Join("", result);
|
||||
dynamic results = Newtonsoft.Json.JsonConvert.DeserializeObject<List<dynamic>>(fullJsonString);
|
||||
//foreach (var r in fullJsonString)
|
||||
//{
|
||||
// dynamic results = Newtonsoft.Json.JsonConvert.DeserializeObject<List<dynamic>>(r);
|
||||
// list.Add(results);
|
||||
//}
|
||||
return Ok(new
|
||||
{
|
||||
list= results
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user