Commit Graph
156 Commits
Author SHA1 Message Date
EnChia aa5941a324 1. 加上返回鍵
2. 修改報名記錄中的活動開始結束時間
3. 修正列印問題
4. 信眾資料及報名管理起始不會出現資料
5. 信眾不得重複報名相同活動
6. 信眾資料的 cache(含結果與搜尋條件)
7. 修復信眾、活動、品項刪除功能
8. 增加自訂是否自動編號
9. 優化信眾資料頁面(彈出查詢頁面、顯示剛新增資料)
10. 新增管理表單匯出 excel 功能
11. 無查詢資料時不可點選匯出/列印按鈕
12. 匯出/列印管理報表時,若無資料則顯示提示
13. 新增信眾資料時,加入日期預設為今日
2026-04-09 17:37:00 +08:00
minom 8fe243356e 牌位設定 2026-04-08 17:54:28 +08:00
minom 83a7c67439 增加一個新的報名牌位編輯功能 2026-04-07 18:04:08 +08:00
minom 36174834a8 牌位排版 2026-04-06 19:06:22 +08:00
minom f087e4aa61 底圖 2026-04-02 18:22:46 +08:00
minom 7998312785 排版 2026-04-02 18:22:18 +08:00
minom 37d0b928ec 牌位設定列印 2026-04-01 18:03:42 +08:00
minom 5f8da12363 陽上 2026-03-31 18:03:45 +08:00
minom f16b3e3678 排版 2026-03-30 18:07:41 +08:00
minom ad1c99c3e9 牌位列印 2026-03-27 19:24:04 +08:00
minom 7722cc16ff print 2026-03-26 18:08:20 +08:00
minom 35ca33315d go 2026-03-25 18:04:13 +08:00
minom 8154473d1a 要改列印的功能 2026-03-24 18:02:44 +08:00
minom c235a138ee .... 2026-03-20 18:14:27 +08:00
minom 1b79aa9d14 報名 2026-03-19 17:44:27 +08:00
minom 095b310109 排版功能調整 2026-03-13 17:59:14 +08:00
minom f92fa65133 go 2026-03-12 17:44:08 +08:00
minom d81b99fd7d 1 2026-03-12 11:22:28 +08:00
minom f900649724 .. 2026-03-11 17:38:27 +08:00
minom 0bb9da198b .. 2026-03-11 17:37:27 +08:00
minom 5baac4fdb7 預覽 2026-03-11 15:37:05 +08:00
minom b66976b7c4 增加紙張尺寸設定 2026-03-10 17:59:57 +08:00
minom bfd07ebe90 .. 2026-03-09 18:09:32 +08:00
minom 50b24a7282 script 2026-03-06 19:10:33 +08:00
minom 27f936d4a9 排版 2026-03-06 19:08:25 +08:00
minom 63ca92e470 sql script 2026-03-04 17:57:39 +08:00
minom bbd761508e 排版功能 2026-03-04 17:56:06 +08:00
minom 88e50525bd 版面設計功能調整 2026-03-02 17:52:21 +08:00
minom e44bc74b90 牌位版面設計 2026-02-25 17:42:43 +08:00
minom 46cbcbde4c 修正問題 2026-02-04 17:43:35 +08:00
minom 6fdce11152 修正使用不存在物件
修正簡體字
2026-01-21 16:15:47 +08:00
yiming 775bfbeb41 process request keys at page load 2026-01-06 00:06:07 +08:00
yiming c2a3c0e5bf 搜尋身份證號, 電話功能選項 2025-12-26 01:46:07 +08:00
yiming 2d3fb23c7b 產生:初始/範例DB的流程 2025-12-12 09:24:22 +08:00
yiming 169a771566 新增: 牌位自訂名稱 2025-11-29 10:56:19 +08:00
yiming 27f916eb9c 修正多處 LINQ-to-Entities 查詢,避免 Nullable .Contains()、.ToString()、Request[] 直接使用造成翻譯失敗。
API 查詢同步改寫 .Contains()、.OrderBy()、複雜 GroupBy/Math.Round,必要時 materialize 或加 HasValue。
Participation rate / kind breakdown 改在記憶體計算,同時檢查整數陣列 .Contains() 的型別安全性。
2025-11-14 23:40:55 +08:00
yiming 4fcbfb3801 修正 Entity Framework LINQ 查詢中的 .Date 屬性使用問題 2025-11-12 21:33:52 +08:00
yiming b04c07a5eb 權限與靜態檔控制改進:
- 修正 admin 目錄預設頁路由,避免 403.14 與不必要的延遲重導
- 停用未使用的 Sites 多站點初始化,減少應用程式啟動成本
- 修正 Response.Redirect 後未 return 的流程,避免 1.8 分鐘超時
- 將資料庫 Connection Timeout 降為 10 秒,加速失敗回應
- 將 runAllManagedModulesForAllRequests 設為 false,讓 JS/CSS 等靜態檔案直接由 IIS 回應
2025-11-12 20:45:34 +08:00
yiming ae09a6f487 STAGE 3-4 2025-11-12 18:57:51 +08:00
yiming 744eddcd77 STAGE 3-3 2025-11-12 18:30:04 +08:00
yiming 1d78bdd3d9 STAGE 3-2 2025-11-12 18:22:53 +08:00
yiming 8b8869fbde STAGE3-1 2025-11-12 18:18:01 +08:00
yiming d41ad3e4cc STAGE3 OK 2025-11-12 18:13:09 +08:00
yiming ba6e641bac STAGE 2 OK 2025-11-12 17:51:42 +08:00
yiming 9969417bd8 優化 FollowerController.cs 的子查詢性能
問題:
Line 345 將家族成員 ID 載入內存(ToList)
- 如果家族有 100+ 成員,載入 100-400 bytes

優化:
移除 ToList(),改為使用 IQueryable 子查詢
- var ccList = cc.ToList(); // 移除
- 直接使用 cc 進行 Contains 查詢
- 生成 SQL: WHERE num IN (SELECT...) OR leader IN (SELECT...)

效果:
✓ 減少內存占用:100-400 bytes → 0
✓ 完全在數據庫執行
✓ SQL 優化器可以更好地優化查詢計劃

對比:
- 原始版本(載入內存):2 次查詢
- 優化版本(子查詢):1 次查詢(最佳)
2025-11-12 17:30:53 +08:00
yiming eff3ad778b 優化 adminUserController.cs 的子查詢性能
問題:
Line 93 將所有會員的 admin_num 載入內存(ToList)
- 如果有 10,000 個會員,載入 10,000 個 int (40KB)

優化:
改為使用 IQueryable 子查詢,在數據庫層面執行
- var usedAdminNums = _db.members.Select(b => b.admin_num);  // 不 ToList()
- 生成 SQL: WHERE num NOT IN (SELECT admin_num FROM members)

效果:
✓ 減少內存占用:40KB → 0
✓ 減少查詢次數:2 次 → 1 次
✓ SQL 優化器可以更好地優化查詢計劃

對比原始代碼:
- 原始(嵌套 AsEnumerable):N+1 查詢問題,執行 51 次
- ToList 版本:載入 40KB,執行 2 次
- 當前版本:不載入內存,執行 1 次(最佳)
2025-11-12 17:27:35 +08:00
yiming bc1f1422e9 加入 TODO 註解標記需優化的查詢
標記位置:
1. GetFollowerOrders (Line 402)
   - 建議加入分頁或日期範圍限制

2. GetActivityFollowers (Line 1048)
   - 建議在數據庫層面過濾未完成沖帳項目
   - 考慮加入 Take() 或分頁

目的:
方便日後追蹤並優化性能瓶頸
2025-11-12 17:21:53 +08:00
yiming 1698b51d19 優化 transfer_registerController.cs 中的 AsEnumerable 位置
問題:
之前將某些 AsEnumerable() 改為 ToList() 可能導致數據過載

優化:
1. GetFollowerOrders (Line 420)
   - 改回 AsEnumerable()
   - 原因:雖然有 f_num 限制,但信眾可能有大量訂單
   - AsEnumerable() 確保數據庫查詢先執行,只在需要內存計算時才轉換

2. GetActivityFollowers (Line 1057)
   - 改回 AsEnumerable()
   - 原因:activity_num 限制可能包含大量訂單(數千條)
   - AsEnumerable() 避免將所有數據載入內存

保持不變:
- Line 240:follower 查詢的 ToList() 保持不變
  原因:Where(f.num == x.f_num) 限制為單一記錄
  需要在內存中執行解密操作

技術原則:
- AsEnumerable() 應該在「數據庫查詢完成後、內存計算前」使用
- ToList() 只在「確定數據量小」或「必須立即執行」時使用
- 解密等無法在數據庫執行的操作必須在內存中進行
2025-11-12 17:20:36 +08:00
yiming 4e26dd648d 完成 Batch 3:修復 4 個 API Controller 的 AsEnumerable 問題
修復文件(共 17 處):

1. supplierController.cs (6 處)
   - 移除簡單查詢的 AsEnumerable() (2 處)
   - AsEnumerable() → AsQueryable() (GetList, GetKindList)
   - 優化分頁查詢模式(Count + ToPagedList.ToList())(2 處)
   - 修復 Split().Select().ToList() 類型問題

2. adminUserController.cs (4 處)
   - 移除簡單查詢的 AsEnumerable()
   - AsEnumerable() → AsQueryable() (GetList)
   - 優化分頁查詢模式
   - 重構複雜查詢:移除嵌套的 AsEnumerable()
     改為先 ToList() 再使用 Contains

3. orderdetailController.cs (3 處)
   - 移除 AsEnumerable(),改為在查詢末端使用 OrderBy
   - 優化分頁查詢模式
   - 修復 null-propagating operator:
     .FirstOrDefault()?.print_id → .Select(u => u.print_id).FirstOrDefault()

4. transfer_registerController.cs (6 處)
   - AsEnumerable() → ToList() (需要解密操作的情況)
   - 保留在必要時才轉換到內存操作
   - 確保數據庫查詢先執行

技術改進:
✓ 複雜嵌套查詢優化(adminUserController)
✓ 解密操作前置優化(transfer_registerController)
✓ Null-propagating operator 替換為安全的 Select
✓ 統一使用三元運算符處理分頁
✓ IEnumerable<int> → List<int> 避免類型轉換錯誤
2025-11-12 17:18:12 +08:00
yiming e20b250944 修復 FilesSetController.cs 中的類型錯誤
問題:
1. CS1061: files_num 是 int 類型,不是 int?
   - 錯誤地使用了 HasValue 和 .Value
2. CS0019: Count 應該使用方法調用 Count()

修復:
- 第 93 行:移除 HasValue 和 .Value
  改為直接使用 ids.Contains(q.files_num)
- 第 94 行:Count 改為 Count()

根因分析:
在 Model.actItem_files 中,files_num 定義為 int 類型
而不是 Nullable<int>,因此不需要 nullable 處理。
2025-11-12 17:12:40 +08:00