| @@ -2911,35 +2911,59 @@ open class DashboardService( | |||
| return jdbcDao.queryForList(sql.toString(), args) | |||
| } | |||
| fun IndividualStaffManhoursSpentByMonth(args: Map<String, Any>): List<Map<String, Any>> { | |||
| // println("starting") | |||
| val sql = StringBuilder( | |||
| "select" | |||
| + " p2.id as id," | |||
| + " p2.code as projectNo," | |||
| + " p2.name as projectName," | |||
| + " coalesce (result.manhours,0) as manhours," | |||
| + " coalesce (round((result.manhours/ sum(result.manhours))*100,2),0) as percentage" | |||
| + " from staff s2" | |||
| + " left join staff_allocation sa2 on sa2.staff_id = s2.id" | |||
| + " left join project p2 on sa2.project_id = p2.id" | |||
| + " left join (" | |||
| + " select" | |||
| + " p.id as pid," | |||
| + " p.name as projectName," | |||
| + " coalesce (coalesce(sum(t.normalConsumed),0)+coalesce(sum(t.otConsumed),0),0) as manhours" | |||
| + " from staff s" | |||
| + " left join staff_allocation sa on sa.staff_id = s.id" | |||
| + " left join project p on sa.project_id = p.id" | |||
| + " left join timesheet t on s.id = t.staffId" | |||
| + " where s.id = :staffId" | |||
| + " and t.recordDate >= :startdate" | |||
| + " and t.recordDate <= last_day(:startdate)" | |||
| + " group by p.id, p.name" | |||
| + " ) as result on result.pid = p2.id" | |||
| + " where s2.id = :staffId" | |||
| + " and result.manhours > 0" | |||
| + " group by p2.id, p2.name, result.manhours" | |||
| // "select" | |||
| // + " p2.id as id," | |||
| // + " p2.code as projectNo," | |||
| // + " p2.name as projectName," | |||
| // + " coalesce (result.manhours,0) as manhours," | |||
| // + " coalesce (round((result.manhours/ sum(result.manhours))*100,2),0) as percentage" | |||
| // + " from staff s2" | |||
| // + " left join staff_allocation sa2 on sa2.staff_id = s2.id" | |||
| // + " left join project p2 on sa2.project_id = p2.id" | |||
| // + " left join (" | |||
| // + " select" | |||
| // + " p.id as pid," | |||
| // + " p.name as projectName," | |||
| // + " coalesce (coalesce(sum(t.normalConsumed),0)+coalesce(sum(t.otConsumed),0),0) as manhours" | |||
| // + " from staff s" | |||
| // + " left join staff_allocation sa on sa.staff_id = s.id" | |||
| // + " left join project p on sa.project_id = p.id" | |||
| // + " left join timesheet t on s.id = t.staffId" | |||
| // + " where s.id = :staffId" | |||
| // + " and t.recordDate >= :startdate" | |||
| // + " and t.recordDate <= last_day(:startdate)" | |||
| // + " group by p.id, p.name" | |||
| // + " ) as result on result.pid = p2.id" | |||
| // + " where s2.id = :staffId" | |||
| // + " and result.manhours > 0" | |||
| // + " group by p2.id, p2.name, result.manhours" | |||
| "with result as (" | |||
| + " select " | |||
| + " p.id, " | |||
| + " p.code, " | |||
| + " p.name, " | |||
| + " sum(coalesce(t.normalConsumed, 0) + coalesce(t.otConsumed, 0)) as manhours " | |||
| + " from timesheet t " | |||
| + " left join project p on p.id = t.projectId " | |||
| + " left join staff s on s.id = t.staffId " | |||
| + " where t.deleted = false " | |||
| + " and t.projectId is not null " | |||
| + " and t.staffId = :staffId " | |||
| + " and t.recordDate >= :startdate " | |||
| + " and t.recordDate <= last_day(:startdate) " | |||
| + " group by p.id, p.code, p.name " | |||
| + " ) " | |||
| + " select " | |||
| + " r.id, " | |||
| + " r.code as projectNo, " | |||
| + " r.name as projectName, " | |||
| + " r.manhours, " | |||
| + " (r.manhours / (select sum(manhours) from result)) * 100 as percentage " | |||
| + " from result r " | |||
| ) | |||
| // println("ending") | |||
| return jdbcDao.queryForList(sql.toString(), args) | |||
| } | |||
| fun IndividualStaffManhoursSpentWeekly(args: Map<String, Any>): List<Map<String, Any>> { | |||