diff --git a/src/main/java/com/ffii/tsms/modules/data/service/DashboardService.kt b/src/main/java/com/ffii/tsms/modules/data/service/DashboardService.kt index 50c6019..809a666 100644 --- a/src/main/java/com/ffii/tsms/modules/data/service/DashboardService.kt +++ b/src/main/java/com/ffii/tsms/modules/data/service/DashboardService.kt @@ -2911,35 +2911,59 @@ open class DashboardService( return jdbcDao.queryForList(sql.toString(), args) } fun IndividualStaffManhoursSpentByMonth(args: Map): List> { +// 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): List> {