Procházet zdrojové kódy

update dashboard api

tags/Baseline_30082024_BACKEND_UAT
Mac\David před 1 rokem
rodič
revize
c3a19a8371
2 změnil soubory, kde provedl 62 přidání a 11 odebrání
  1. +55
    -10
      src/main/java/com/ffii/tsms/modules/data/service/DashboardService.kt
  2. +7
    -1
      src/main/java/com/ffii/tsms/modules/data/web/DashboardController.kt

+ 55
- 10
src/main/java/com/ffii/tsms/modules/data/service/DashboardService.kt Zobrazit soubor

@@ -23,6 +23,9 @@ open class DashboardService(

fun CustomerSubsidiary(args: Map<String, Any>): List<Map<String, Any>> {
val sql = StringBuilder("select"
+ " row_number()OVER ("
+ " ORDER BY c.id"
+ " ) as id,"
+ " c.id as customerId,"
+ " c.name as customerName,"
+ " c.code as customerCode,"
@@ -30,18 +33,17 @@ open class DashboardService(
+ " c.district as cutomerDistrict,"
+ " c.brNo as customerBrNo,"
+ " c.typeId as customerTypeId,"
+ " s.id as subsidiaryId,"
+ " s.name as subsidiaryName,"
+ " s.code as subsidiaryCode,"
+ " s.address as subsidiaryAddress,"
+ " s.district as subsidiaryDistrict,"
+ " s.brNo as subsidiaryBrNo,"
+ " s.typeId as subsidiaryTypeId,"
+ " coalesce (s.id,'-') as subsidiaryId,"
+ " coalesce (s.name,'-') as subsidiaryName,"
+ " coalesce (s.code,'-') as subsidiaryCode,"
+ " coalesce (s.address,'-') as subsidiaryAddress,"
+ " coalesce (s.district,'-') as subsidiaryDistrict,"
+ " coalesce (s.brNo,'-') as subsidiaryBrNo,"
+ " coalesce (s.typeId,'-') as subsidiaryTypeId,"
+ " count(p.id) as projectNo"
+ " from customer c"
+ " left join customer_subsidiary cs on c.id = cs.customerId"
+ " left join subsidiary s on cs.subsidiaryId = s.id"
+ " left join project p on cs.customerId = p.customerId and cs.subsidiaryId = p.customerSubsidiaryId "
+ " left join project p on c.id = p.customerId"
+ " left join subsidiary s on p.customerSubsidiaryId = s.id"
+ " where c.deleted = 0"
)
if (args != null) {
@@ -94,4 +96,47 @@ open class DashboardService(

return jdbcDao.queryForList(sql.toString(), args)
}

fun searchCustomerNonSubsidiaryProject(args: Map<String, Any>): List<Map<String, Any>> {
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 isNull(p.customerSubsidiaryId)"
+ " and mp.date >= curdate()"
+ " order by date asc"
+ " limit 1"
+ " ) milestonePayment on 1=1"
+ " where p.customerId = :customerId"
+ " and isNull(p.customerSubsidiaryId)"
+ " group by p.id, p.code, p.name, te.code, s.name, tg.name, p.totalManhour, milestonePayment.comingPaymentMilestone"
)

return jdbcDao.queryForList(sql.toString(), args)
}
}



+ 7
- 1
src/main/java/com/ffii/tsms/modules/data/web/DashboardController.kt Zobrazit soubor

@@ -54,6 +54,7 @@ class DashboardController(
val customerId = request?.getParameter("customerId")
val subsidiaryId = request?.getParameter("subsidiaryId")
val args = mutableMapOf<String, Any>()
var result: List<Map<String, Any>> = emptyList()
if (customerId != null) {
args["customerId"] = customerId
}
@@ -61,6 +62,11 @@ class DashboardController(
args["subsidiaryId"] = subsidiaryId
}

return dashboardService.searchCustomerSubsidiaryProject(args)
if (customerId != null && subsidiaryId != null) {
result = dashboardService.searchCustomerSubsidiaryProject(args)
} else if (customerId != null && subsidiaryId == null){
result = dashboardService.searchCustomerNonSubsidiaryProject(args)
}
return result
}
}

Načítá se…
Zrušit
Uložit