From 9b73f43617b91164849fef2b599e25b41d1353ce Mon Sep 17 00:00:00 2001 From: "Mac\\David" Date: Mon, 13 May 2024 14:33:08 +0800 Subject: [PATCH] update --- .../modules/data/service/DashboardService.kt | 41 +++++++++++++++++++ .../modules/data/web/DashboardController.kt | 14 +++++++ 2 files changed, 55 insertions(+) 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 c51ba0f..4add027 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 @@ -53,4 +53,45 @@ open class DashboardService( sql.append(" group by c.id, c.name, c.code, c.address, c.district, c.brNo, c.typeId, s.id, s.name, s.code, s.address, s.district, s.brNo, s.typeId"); return jdbcDao.queryForList(sql.toString(), args) } + + fun searchCustomerSubsidiaryProject(args: Map): List> { + val sql = StringBuilder("select" + + " p.id as id," + + " p.id as projectId," + + " p.code as projectCode," + + " p.name as projectName," + + " te.code as team," + + " s.name as teamLead," + + " tg.name as expectedStage," + + " p.totalManhour as budgetedManhour," + + " sum(t.normalConsumed) + sum(t.otConsumed) as spentManhour," + + " p.totalManhour - sum(t.normalConsumed) - sum(t.otConsumed) as remainedManhour," + + " coalesce (round(((sum(t.normalConsumed) - sum(t.otConsumed))/p.totalManhour)*100,2),0) as manhourConsumptionPercentage," + + " DATE_FORMAT(milestonePayment.comingPaymentMilestone, '%Y-%m-%d') as comingPaymentMilestone" + + " from project p" + + " left join project_task pt on p.id = pt.project_id" + + " left join timesheet t on pt.id = t.projectTaskId" + + " left join team te on p.teamLead = te.teamLead" + + " left join staff s on te.teamLead = s.id" + + " left join milestone m on p.id = m.projectId and curdate() >= m.startDate and curdate() <= m.endDate" + + " left join task_group tg on m.taskGroupId = tg.id" + + " left join (" + + " select" + + " mp.date as comingPaymentMilestone" + + " from project p" + + " left join milestone m on p.id = m.projectId" + + " left join milestone_payment mp on m.id = mp.milestoneId" + + " where p.customerId = :customerId" + + " and p.customerSubsidiaryId = :subsidiaryId" + + " and mp.date >= curdate()" + + " order by date asc" + + " limit 1" + + " ) milestonePayment on 1=1" + + " where p.customerId = :customerId" + + " and p.customerSubsidiaryId = :subsidiaryId" + + " group by p.id, p.code, p.name, te.code, s.name, tg.name, p.totalManhour, milestonePayment.comingPaymentMilestone" + ) + + return jdbcDao.queryForList(sql.toString(), args) + } } diff --git a/src/main/java/com/ffii/tsms/modules/data/web/DashboardController.kt b/src/main/java/com/ffii/tsms/modules/data/web/DashboardController.kt index 20c59e1..dbe7e3a 100644 --- a/src/main/java/com/ffii/tsms/modules/data/web/DashboardController.kt +++ b/src/main/java/com/ffii/tsms/modules/data/web/DashboardController.kt @@ -49,4 +49,18 @@ class DashboardController( // .build() // ) } + @GetMapping("/searchCustomerSubsidiaryProject") + fun searchCustomerSubsidiaryProject(request: HttpServletRequest?): List> { + val customerId = request?.getParameter("customerId") + val subsidiaryId = request?.getParameter("subsidiaryId") + val args = mutableMapOf() + if (customerId != null) { + args["customerId"] = customerId + } + if (subsidiaryId != null) { + args["subsidiaryId"] = subsidiaryId + } + + return dashboardService.searchCustomerSubsidiaryProject(args) + } } \ No newline at end of file