|
@@ -23,6 +23,9 @@ open class DashboardService( |
|
|
|
|
|
|
|
|
fun CustomerSubsidiary(args: Map<String, Any>): List<Map<String, Any>> { |
|
|
fun CustomerSubsidiary(args: Map<String, Any>): List<Map<String, Any>> { |
|
|
val sql = StringBuilder("select" |
|
|
val sql = StringBuilder("select" |
|
|
|
|
|
+ " row_number()OVER (" |
|
|
|
|
|
+ " ORDER BY c.id" |
|
|
|
|
|
+ " ) as id," |
|
|
+ " c.id as customerId," |
|
|
+ " c.id as customerId," |
|
|
+ " c.name as customerName," |
|
|
+ " c.name as customerName," |
|
|
+ " c.code as customerCode," |
|
|
+ " c.code as customerCode," |
|
@@ -30,18 +33,17 @@ open class DashboardService( |
|
|
+ " c.district as cutomerDistrict," |
|
|
+ " c.district as cutomerDistrict," |
|
|
+ " c.brNo as customerBrNo," |
|
|
+ " c.brNo as customerBrNo," |
|
|
+ " c.typeId as customerTypeId," |
|
|
+ " 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" |
|
|
+ " count(p.id) as projectNo" |
|
|
+ " from customer c" |
|
|
+ " 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" |
|
|
+ " where c.deleted = 0" |
|
|
) |
|
|
) |
|
|
if (args != null) { |
|
|
if (args != null) { |
|
@@ -94,4 +96,47 @@ open class DashboardService( |
|
|
|
|
|
|
|
|
return jdbcDao.queryForList(sql.toString(), args) |
|
|
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) |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|