改太多

This commit is contained in:
minom committed 2026-10-30 17:47:01 +08:00
1 parent be5352efed
commit 1cb2a7a35e
48 files changed
+17970 -485

No files matched your search

+158
View File
@@ -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
});
}
}