feat: 年度課程執行狀況匯出移除計畫別並新增講師及滿意度欄位

This commit is contained in:
2026-09-14 13:07:17 +08:00
parent 672a9d8a7b
commit 727cd2b0e5
3 changed files with 93 additions and 42 deletions
@@ -481,8 +481,9 @@ namespace Education
{
DbCommand cmd = NewCommand();
cmd.CommandText = @"
SELECT A.編號, A.訓練名稱, '' AS 訓練計畫別, A.訓練日期, A.訓練日期迄, A.訓練時數, '' AS 訓練場地,
0 AS 訓練人數, A.預估經費, 0 AS 實際經費, 0.0 AS 學員出席率, 0.0 AS 整體滿意度
SELECT A.編號, A.訓練名稱, '' AS 講師姓名, A.訓練日期, A.訓練日期迄, A.訓練時數, '' AS 訓練場地,
0 AS 訓練人數, A.預估經費, 0 AS 實際經費, 0.0 AS 學員出席率, 0.0 AS 整體滿意度,
0.0 AS 講師滿意度, 0.0 AS 課程滿意度, 0.0 AS 行政滿意度, 0.0 AS 餐點滿意度, 0.0 AS 場地滿意度
FROM 訓練課程企劃 A
WHERE A.訓練日期 >= @訓練日期1
AND A.訓練日期 < @訓練日期2
@@ -502,29 +503,42 @@ namespace Education
DAC_課程報名 Dao課程報名 = new DAC_課程報名(conn);
DAC_課程經費 Dao課程經費 = new DAC_課程經費(conn);
DAC_滿意度調查課程企劃 Dao滿意度調查課程企劃 = new DAC_滿意度調查課程企劃(conn);
DAC_滿意度調查 Dao滿意度調查 = new DAC_滿意度調查(conn);
DAC_訓練課程內容 Dao訓練課程內容 = new DAC_訓練課程內容(conn);
// 填入統計欄位
foreach (DataRow r in result.Rows)
{
int = DAC.GetInt32(r["編號"]);
string = "";
// 取得訓練計畫別
DataTable Table = Dao課程報名.Select確定報名學員計畫();
foreach (DataRow r1 in Table.Rows)
// 取得講師姓名
string = "";
HashSet<string> Names = new HashSet<string>();
List List = Dao訓練課程內容.SelectBy課程企劃();
foreach ( in List)
{
+= DAC.GetString(r1["計畫年度名稱"]) + "\r\n";
string = Select選定講師名稱(, .);
if (!string.IsNullOrEmpty() && Names.Add())
+= + "\r\n";
}
if (.Length > 0)
= .Trim();
if (.Length > 0)
= .Trim();
// 取得場地及滿意度
DataTable 滿Table = Dao滿意度調查課程企劃.Select滿意度統計();
DataTable 滿Table = Dao滿意度調查.Select年度課程滿意度統計();
r["講師姓名"] = ;
r["訓練場地"] = Select選定場地名稱();
r["訓練人數"] = Dao課程報名.Get出席人數();
r["實際經費"] = Dao課程經費.Get經費合計();
r["學員出席率"] = Dao課程報名.Get出席率();
r["整體滿意度"] = 滿Table.Rows.Count > 0 ? DAC.GetDecimal(滿Table.Rows[0]["整體滿意度"]) : 0;
r["行政滿意度"] = 滿Table.Rows.Count > 0 ? DAC.GetDecimal(滿Table.Rows[0]["行政滿意度"]) : 0;
r["餐點滿意度"] = 滿Table.Rows.Count > 0 ? DAC.GetDecimal(滿Table.Rows[0]["餐點滿意度"]) : 0;
r["場地滿意度"] = 滿Table.Rows.Count > 0 ? DAC.GetDecimal(滿Table.Rows[0]["場地滿意度"]) : 0;
r["講師滿意度"] = 滿Table.Rows.Count > 0 ? DAC.GetDecimal(滿Table.Rows[0]["講師滿意度"]) : 0;
r["課程滿意度"] = 滿Table.Rows.Count > 0 ? DAC.GetDecimal(滿Table.Rows[0]["課程滿意度"]) : 0;
r.EndEdit();
}
result.AcceptChanges();
@@ -194,6 +194,23 @@ namespace Education
return Select(cmdSelect);
}
///<summary>
/// 講師滿意度 = (講師的授課方式 + 講師的專業知識) / 2
/// 課程滿意度 = (課程的實用性 + 課程時數安排) / 2
/// 題目編號 1:課程的實用性 2:講師的授課方式 3:講師的專業知識 4:課程時數安排
///</summary>
public DataTable Select年度課程滿意度統計(int )
{
DbCommand cmdSelect = NewCommand(
@"SELECT
(SELECT ISNULL(AVG(CAST(分數 AS FLOAT)) * 20, 0) FROM 滿意度調查
WHERE 訓練課程企劃編號 = @訓練課程企劃編號 AND 課程序號 <> 0 AND 題目編號 IN (2, 3)) AS 講師滿意度,
(SELECT ISNULL(AVG(CAST(分數 AS FLOAT)) * 20, 0) FROM 滿意度調查
WHERE 訓練課程企劃編號 = @訓練課程企劃編號 AND 課程序號 <> 0 AND 題目編號 IN (1, 4)) AS 課程滿意度 ");
AddParam(cmdSelect, "訓練課程企劃編號", );
return Select(cmdSelect);
}
}
///<summary>