Просмотр исходного кода

fix

tags/Baseline_30082024_BACKEND_UAT
Mac\David 1 год назад
Родитель
Сommit
11c111767a
1 измененных файлов: 96 добавлений и 40 удалений
  1. +96
    -40
      src/main/java/com/ffii/tsms/modules/data/service/DashboardService.kt

+ 96
- 40
src/main/java/com/ffii/tsms/modules/data/service/DashboardService.kt Просмотреть файл

@@ -1307,26 +1307,54 @@ open class DashboardService(
}
fun monthlyActualTeamTotalManhoursSpent(args: Map<String, Any>): List<Map<String, Any>> {
val sql = StringBuilder(
" WITH RECURSIVE date_series AS ("
+ " SELECT DATE_FORMAT(:startdate, '%Y-%m-01') AS month"
+ " UNION ALL"
+ " SELECT DATE_FORMAT(DATE_ADD(month, INTERVAL 1 MONTH), '%Y-%m-01')"
+ " FROM date_series"
+ " WHERE month < DATE_FORMAT(:enddate, '%Y-%m-01')"
+ " )"
+ " SELECT"
+ " ds.month AS yearMonth,"
+ " IFNULL(SUM(IFNULL(ts.normalConsumed, 0) + IFNULL(ts.otConsumed, 0)), 0) AS 'TotalManhourConsumed',"
+ " :teamId AS teamId"
+ " FROM date_series ds"
+ " LEFT JOIN staff st"
+ " on st.teamId = :teamId"
+ " LEFT JOIN timesheet ts"
+ " ON DATE_FORMAT(ts.recordDate, '%Y-%m') = DATE_FORMAT(ds.month, '%Y-%m') and ts.staffID = st.id"
+ " WHERE ds.month BETWEEN DATE_FORMAT(:startdate, '%Y-%m-01') AND DATE_FORMAT(:enddate, '%Y-%m-01')"
+ " and ts.recordDate BETWEEN DATE_FORMAT(:startdate, '%Y-%m-%d') AND DATE_FORMAT(DATE_ADD(:startdate, INTERVAL 6 DAY), '%Y-%m-%d')"
+ " GROUP BY ds.month, st.teamId"
+ " ORDER BY ds.month"
// " WITH RECURSIVE date_series AS ("
// + " SELECT DATE_FORMAT(:startdate, '%Y-%m-01') AS month"
// + " UNION ALL"
// + " SELECT DATE_FORMAT(DATE_ADD(month, INTERVAL 1 MONTH), '%Y-%m-01')"
// + " FROM date_series"
// + " WHERE month < DATE_FORMAT(:enddate, '%Y-%m-01')"
// + " )"
// + " SELECT"
// + " ds.month AS yearMonth,"
// + " IFNULL(SUM(IFNULL(ts.normalConsumed, 0) + IFNULL(ts.otConsumed, 0)), 0) AS 'TotalManhourConsumed',"
// + " :teamId AS teamId"
// + " FROM date_series ds"
// + " LEFT JOIN staff st"
// + " on st.teamId = :teamId"
// + " LEFT JOIN timesheet ts"
// + " ON DATE_FORMAT(ts.recordDate, '%Y-%m') = DATE_FORMAT(ds.month, '%Y-%m') and ts.staffID = st.id"
// + " WHERE ds.month BETWEEN DATE_FORMAT(:startdate, '%Y-%m-01') AND DATE_FORMAT(:enddate, '%Y-%m-01')"
// + " and ts.recordDate BETWEEN DATE_FORMAT(:startdate, '%Y-%m-01') AND DATE_FORMAT(:enddate, '%Y-%m-01')"
// + " GROUP BY ds.month, st.teamId"
// + " ORDER BY ds.month"
"WITH RECURSIVE date_series AS ("
+ " SELECT DATE_FORMAT(:startdate, '%Y-%m-01') AS month"
+ " UNION ALL"
+ " SELECT DATE_FORMAT(DATE_ADD(month, INTERVAL 1 MONTH), '%Y-%m-01')"
+ " FROM date_series"
+ " WHERE month < DATE_FORMAT(:enddate, '%Y-%m-01')"
+ " )"
+ " SELECT"
+ " ds.month AS yearMonth,"
+ " COALESCE(SUM(COALESCE(ts.normalConsumed, 0) + COALESCE(ts.otConsumed, 0)), 0) AS 'TotalManhourConsumed',"
+ " :teamId AS teamId"
+ " FROM date_series ds"
+ " LEFT JOIN ("
+ " SELECT"
+ " DATE_FORMAT(ts.recordDate, '%Y-%m-01') AS recordMonth,"
+ " ts.staffID,"
+ " SUM(ts.normalConsumed) AS normalConsumed,"
+ " SUM(ts.otConsumed) AS otConsumed"
+ " FROM staff st"
+ " LEFT JOIN timesheet ts"
+ " on ts.staffID = st.id"
+ " WHERE ts.recordDate BETWEEN DATE_FORMAT(:startdate, '%Y-%m-01') AND LAST_DAY(DATE_FORMAT(:enddate, '%Y-%m-%d'))"
+ " and st.teamId = :teamId"
+ " GROUP BY DATE_FORMAT(ts.recordDate, '%Y-%m-01'), staffID"
+ " ) ts ON ds.month = ts.recordMonth"
+ " GROUP BY ds.month"
+ " ORDER BY ds.month;"

)

return jdbcDao.queryForList(sql.toString(), args)
@@ -1365,26 +1393,54 @@ open class DashboardService(
}
fun weeklyActualTeamTotalManhoursSpent(args: Map<String, Any>): List<Map<String, Any>> {
val sql = StringBuilder(
"WITH RECURSIVE date_series AS ("
+ " SELECT DATE_FORMAT(:startdate, '%Y-%m-%d') AS day"
+ " UNION ALL"
+ " SELECT DATE_FORMAT(DATE_ADD(day, INTERVAL 1 DAY), '%Y-%m-%d')"
+ " FROM date_series"
+ " WHERE day < DATE_FORMAT(DATE_ADD(:startdate, INTERVAL 6 DAY), '%Y-%m-%d')"
+ " )"
+ " SELECT"
+ " ds.day AS yearMonth,"
+ " IFNULL(SUM(IFNULL(ts.normalConsumed, 0) + IFNULL(ts.otConsumed, 0)), 0) AS 'TotalManhourConsumed',"
+ " :teamId AS teamId"
+ " FROM date_series ds"
+ " LEFT JOIN staff st"
+ " on st.teamId = :teamId"
+ " LEFT JOIN timesheet ts"
+ " ON DATE_FORMAT(ts.recordDate, '%m-%d') = DATE_FORMAT(ds.day, '%m-%d') and ts.staffID = st.id"
+ " WHERE ds.day BETWEEN DATE_FORMAT(:startdate, '%Y-%m-%d') AND DATE_FORMAT(DATE_ADD(:startdate, INTERVAL 6 DAY), '%Y-%m-%d')"
+ " and ts.recordDate BETWEEN DATE_FORMAT(:startdate, '%Y-%m-%d') AND DATE_FORMAT(DATE_ADD(:startdate, INTERVAL 6 DAY), '%Y-%m-%d')"
+ " GROUP BY ds.day, st.teamId"
+ " ORDER BY ds.day"
// "WITH RECURSIVE date_series AS ("
// + " SELECT DATE_FORMAT(:startdate, '%Y-%m-%d') AS day"
// + " UNION ALL"
// + " SELECT DATE_FORMAT(DATE_ADD(day, INTERVAL 1 DAY), '%Y-%m-%d')"
// + " FROM date_series"
// + " WHERE day < DATE_FORMAT(DATE_ADD(:startdate, INTERVAL 6 DAY), '%Y-%m-%d')"
// + " )"
// + " SELECT"
// + " ds.day AS yearMonth,"
// + " IFNULL(SUM(IFNULL(ts.normalConsumed, 0) + IFNULL(ts.otConsumed, 0)), 0) AS 'TotalManhourConsumed',"
// + " :teamId AS teamId"
// + " FROM date_series ds"
// + " LEFT JOIN staff st"
// + " on st.teamId = :teamId"
// + " LEFT JOIN timesheet ts"
// + " ON DATE_FORMAT(ts.recordDate, '%m-%d') = DATE_FORMAT(ds.day, '%m-%d') and ts.staffID = st.id"
// + " WHERE ds.day BETWEEN DATE_FORMAT(:startdate, '%Y-%m-%d') AND DATE_FORMAT(DATE_ADD(:startdate, INTERVAL 6 DAY), '%Y-%m-%d')"
// + " and ts.recordDate BETWEEN DATE_FORMAT(:startdate, '%Y-%m-%d') AND DATE_FORMAT(DATE_ADD(:startdate, INTERVAL 6 DAY), '%Y-%m-%d')"
// + " GROUP BY ds.day, st.teamId"
// + " ORDER BY ds.day"
"WITH RECURSIVE date_series AS ("
+ " SELECT DATE_FORMAT(:startdate, '%Y-%m-%d') AS day"
+ " UNION ALL"
+ " SELECT DATE_FORMAT(DATE_ADD(day, INTERVAL 1 DAY), '%Y-%m-%d')"
+ " FROM date_series"
+ " WHERE day < DATE_FORMAT(DATE_ADD(:startdate, INTERVAL 6 DAY), '%Y-%m-%d')"
+ " )"
+ " SELECT"
+ " ds.day AS yearMonth,"
+ " COALESCE(SUM(COALESCE(ts.normalConsumed, 0) + COALESCE(ts.otConsumed, 0)), 0) AS 'TotalManhourConsumed',"
+ " :teamId AS teamId"
+ " FROM date_series ds"
+ " LEFT JOIN ("
+ " SELECT"
+ " DATE_FORMAT(ts.recordDate, '%Y-%m-%d') AS recordDate,"
+ " ts.staffID,"
+ " SUM(ts.normalConsumed) AS normalConsumed,"
+ " SUM(ts.otConsumed) AS otConsumed"
+ " FROM staff st"
+ " LEFT JOIN timesheet ts"
+ " on ts.staffID = st.id"
+ " WHERE ts.recordDate BETWEEN DATE_FORMAT(:startdate, '%Y-%m-%d') AND DATE_FORMAT(DATE_ADD(:startdate, INTERVAL 6 DAY), '%Y-%m-%d')"
+ " and st.teamId = :teamId"
+ " GROUP BY DATE_FORMAT(ts.recordDate, '%Y-%m-%d'), ts.staffID"
+ " ) ts ON ds.day = ts.recordDate"
+ " GROUP BY ds.day"
+ " ORDER BY ds.day;"

)

return jdbcDao.queryForList(sql.toString(), args)


Загрузка…
Отмена
Сохранить