Browse Source

add color order api

tags/Baseline_30082024_BACKEND_UAT
Mac\David 1 year ago
parent
commit
4222a1b551
2 changed files with 65 additions and 0 deletions
  1. +49
    -0
      src/main/java/com/ffii/tsms/modules/data/service/DashboardService.kt
  2. +16
    -0
      src/main/java/com/ffii/tsms/modules/data/web/DashboardController.kt

+ 49
- 0
src/main/java/com/ffii/tsms/modules/data/service/DashboardService.kt View File

@@ -463,6 +463,55 @@ open class DashboardService(
return jdbcDao.queryForList(sql.toString(), args)
}

fun searchTeamConsumptionColorOrder(args: Map<String, Any>): List<Map<String, Any>> {
val sql = StringBuilder(
"select"
+ " ROW_NUMBER() OVER (ORDER BY p.id, p.code, p.name, te.code, s.name, p.totalManhour, milestonePayment.comingPaymentMilestone) AS id,"
+ " p.id as id,"
+ " p.id as projectId,"
+ " p.code as projectCode,"
+ " p.name as projectName,"
+ " te.code as team,"
+ " s.name as teamLead,"
+ " GROUP_CONCAT(DISTINCT tg.name ORDER BY tg.name) as expectedStage,"
+ " p.totalManhour as budgetedManhour,"
+ " COALESCE (sum(t.normalConsumed) + sum(t.otConsumed),0) as spentManhour,"
+ " COALESCE (p.totalManhour - sum(t.normalConsumed) - sum(t.otConsumed),0) as remainedManhour,"
+ " coalesce (round(((sum(t.normalConsumed) + sum(t.otConsumed))/p.totalManhour)*100,2),0) as manhourConsumptionPercentage,"
+ " COALESCE (DATE_FORMAT(milestonePayment.comingPaymentMilestone, '%Y-%m-%d'),'NA') as comingPaymentMilestone,"
+ " case"
+ " when COALESCE (p.totalManhour - sum(t.normalConsumed) - sum(t.otConsumed),0) > 0 then 0"
+ " when COALESCE (p.totalManhour - sum(t.normalConsumed) - sum(t.otConsumed),0) <= 0 then 1"
+ " end as alert"
+ " 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 pid, MIN(comingPaymentMilestone) AS comingPaymentMilestone"
+ " FROM ("
+ " SELECT p.id AS pid, 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.teamLead in (:teamIds)"
+ " AND p.status NOT IN ('Pending to Start', 'Completed', 'Deleted')"
+ " AND mp.date >= CURDATE()"
+ " ) AS subquery"
+ " GROUP BY pid"
+ " ORDER BY comingPaymentMilestone ASC"
+ " ) milestonePayment on milestonePayment.pid = p.id"
+ " where p.teamLead in (:teamIds)"
+ " and p.status not in ('Pending to Start','Completed','Deleted')"
+ " group by p.id, p.code, p.name, te.code, s.name, p.totalManhour, milestonePayment.comingPaymentMilestone"
+ " ORDER BY te.code ASC"
)
return jdbcDao.queryForList(sql.toString(), args)
}

fun searchFinancialSummaryCard(args: Map<String, Any>): List<Map<String, Any>> {
val sql = StringBuilder(
"select"


+ 16
- 0
src/main/java/com/ffii/tsms/modules/data/web/DashboardController.kt View File

@@ -117,6 +117,22 @@ class DashboardController(
result = dashboardService.searchTeamConsumption(args)
return result
}
@GetMapping("/searchTeamConsumptionColorOrder")
fun searchTeamConsumptionColorOrder(request: HttpServletRequest?): List<Map<String, Any>> {
val args = mutableMapOf<String, Any>()
val teamIdList = request?.getParameter("teamIdList")
val tableSorting = request?.getParameter("tableSorting")
val teamIds = teamIdList?.split(",")?.map { it.toInt() }?.toList()
var result: List<Map<String, Any>> = emptyList()
if (teamIds != null) {
args["teamIds"] = teamIds
}
if (tableSorting != null) {
args["tableSorting"] = tableSorting
}
result = dashboardService.searchTeamConsumptionColorOrder(args)
return result
}
@GetMapping("/searchFinancialSummaryCard")
fun searchFinancialSummaryCard(request: HttpServletRequest?): List<Map<String, Any>> {
val authority = dashboardService.viewDashboardAuthority()


Loading…
Cancel
Save