| @@ -1307,26 +1307,54 @@ open class DashboardService( | |||||
| } | } | ||||
| fun monthlyActualTeamTotalManhoursSpent(args: Map<String, Any>): List<Map<String, Any>> { | fun monthlyActualTeamTotalManhoursSpent(args: Map<String, Any>): List<Map<String, Any>> { | ||||
| val sql = StringBuilder( | 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) | return jdbcDao.queryForList(sql.toString(), args) | ||||
| @@ -1365,26 +1393,54 @@ open class DashboardService( | |||||
| } | } | ||||
| fun weeklyActualTeamTotalManhoursSpent(args: Map<String, Any>): List<Map<String, Any>> { | fun weeklyActualTeamTotalManhoursSpent(args: Map<String, Any>): List<Map<String, Any>> { | ||||
| val sql = StringBuilder( | 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) | return jdbcDao.queryForList(sql.toString(), args) | ||||