|
|
@@ -111,7 +111,8 @@ open class ProjectsService( |
|
|
|
code = project.code!!, |
|
|
|
name = project.name!!, |
|
|
|
status = project.status, |
|
|
|
tasks = projectTaskRepository.findAllByProject(project).mapNotNull { pt -> pt.task }.sortedBy { it.taskGroup?.id }, |
|
|
|
tasks = projectTaskRepository.findAllByProject(project).mapNotNull { pt -> pt.task } |
|
|
|
.sortedBy { it.taskGroup?.id }, |
|
|
|
milestones = milestoneRepository.findAllByProject(project) |
|
|
|
.filter { milestone -> milestone.taskGroup?.id != null } |
|
|
|
.associateBy { milestone -> milestone.taskGroup!!.id!! }.mapValues { (_, milestone) -> |
|
|
@@ -202,9 +203,9 @@ open class ProjectsService( |
|
|
|
actualStart = request.projectActualStart |
|
|
|
actualEnd = request.projectActualEnd |
|
|
|
status = if (this.status == "Deleted" || this.deleted == true) "Deleted" |
|
|
|
else if (this.actualStart != null && this.actualEnd != null) "Completed" |
|
|
|
else if (this.actualStart != null) "On-going" |
|
|
|
else request.projectStatus ?: "Pending To Start" |
|
|
|
else if (this.actualStart != null && this.actualEnd != null) "Completed" |
|
|
|
else if (this.actualStart != null) "On-going" |
|
|
|
else request.projectStatus ?: "Pending To Start" |
|
|
|
isClpProject = request.isClpProject |
|
|
|
this.mainProject = mainProject |
|
|
|
|
|
|
@@ -303,7 +304,8 @@ open class ProjectsService( |
|
|
|
val savedProject = projectRepository.saveAndFlush(project) |
|
|
|
|
|
|
|
val milestonesToDelete = milestoneRepository.findAllByProject(project).subtract(milestones.toSet()) |
|
|
|
val tasksToDelete = projectTaskRepository.findAllByProject(project).subtract(tasksToSave.toSet()) |
|
|
|
val mapTasksToSave = tasksToSave.map { it.task!!.id } |
|
|
|
val tasksToDelete = projectTaskRepository.findAllByProject(project).filter { !mapTasksToSave.contains(it.task!!.id) } |
|
|
|
val gradeAllocationsToDelete = |
|
|
|
gradeAllocationRepository.findByProject(project).subtract(gradeAllocations.toSet()) |
|
|
|
milestoneRepository.deleteAll(milestonesToDelete) |
|
|
@@ -489,21 +491,22 @@ open class ProjectsService( |
|
|
|
logger.info("---------client-------") |
|
|
|
logger.info(customerRepository.findByName(row.getCell(5).stringCellValue.trim())) |
|
|
|
val tempClient = customerRepository.findByName(row.getCell(5).stringCellValue.trim()) |
|
|
|
val currentClient = if (tempClient.isPresent) tempClient.orElseThrow() else customerService.saveCustomer( |
|
|
|
SaveCustomerRequest( |
|
|
|
code = customerService.createClientCode(), |
|
|
|
name = ExcelUtils.getStringValue(row.getCell(5)), |
|
|
|
typeId = ExcelUtils.getIntValue(row.getCell(6)).toLong(), |
|
|
|
deleteSubsidiaryIds = mutableListOf(), |
|
|
|
deleteContactIds = mutableListOf(), |
|
|
|
addSubsidiaryIds = mutableListOf(), |
|
|
|
addContacts = mutableListOf(), |
|
|
|
address = null, |
|
|
|
brNo = null, |
|
|
|
id = null, |
|
|
|
district = null, |
|
|
|
) |
|
|
|
).customer |
|
|
|
val currentClient = |
|
|
|
if (tempClient.isPresent) tempClient.orElseThrow() else customerService.saveCustomer( |
|
|
|
SaveCustomerRequest( |
|
|
|
code = customerService.createClientCode(), |
|
|
|
name = ExcelUtils.getStringValue(row.getCell(5)), |
|
|
|
typeId = ExcelUtils.getIntValue(row.getCell(6)).toLong(), |
|
|
|
deleteSubsidiaryIds = mutableListOf(), |
|
|
|
deleteContactIds = mutableListOf(), |
|
|
|
addSubsidiaryIds = mutableListOf(), |
|
|
|
addContacts = mutableListOf(), |
|
|
|
address = null, |
|
|
|
brNo = null, |
|
|
|
id = null, |
|
|
|
district = null, |
|
|
|
) |
|
|
|
).customer |
|
|
|
val clientId = currentClient.id!! |
|
|
|
|
|
|
|
logger.info("customer: $clientId") |
|
|
@@ -521,14 +524,20 @@ open class ProjectsService( |
|
|
|
|
|
|
|
logger.info("splitProjectCode: " + splitProjectCode[1].split(')')[0]) |
|
|
|
projectCode = |
|
|
|
splitMainProjectCode[0] + '-' + String.format("%04d", splitMainProjectCode[1].toInt()) + '-' + String.format("%03d", splitProjectCode[1].split(')')[0].toInt()) |
|
|
|
splitMainProjectCode[0] + '-' + String.format( |
|
|
|
"%04d", |
|
|
|
splitMainProjectCode[1].toInt() |
|
|
|
) + '-' + String.format("%03d", splitProjectCode[1].split(')')[0].toInt()) |
|
|
|
|
|
|
|
val mainProject = |
|
|
|
projectRepository.findByCode(splitProjectCode[0]) ?: projectRepository.saveAndFlush( |
|
|
|
Project().apply { |
|
|
|
name = row.getCell(1).stringCellValue |
|
|
|
description = row.getCell(1).stringCellValue |
|
|
|
code = splitMainProjectCode[0] + '-' + String.format("%04d", splitMainProjectCode[1].toInt()) |
|
|
|
code = splitMainProjectCode[0] + '-' + String.format( |
|
|
|
"%04d", |
|
|
|
splitMainProjectCode[1].toInt() |
|
|
|
) |
|
|
|
status = "Completed" |
|
|
|
projectCategory = projectCategoryRepository.findById(1).orElseThrow() |
|
|
|
customer = currentClient |
|
|
@@ -541,7 +550,8 @@ open class ProjectsService( |
|
|
|
projectCode = splitProjectCode[0] + '-' + String.format("%04d", splitProjectCode[1].toInt()) |
|
|
|
} |
|
|
|
|
|
|
|
val projectId = projectRepository.findByCode(projectCode)?.id |
|
|
|
val project = projectRepository.findByCode(projectCode) |
|
|
|
val projectId = project?.id |
|
|
|
logger.info("projectCode :$projectCode") |
|
|
|
|
|
|
|
// process subsidiary |
|
|
@@ -627,9 +637,45 @@ open class ProjectsService( |
|
|
|
// get task template - TW-Full QS - stage 5 |
|
|
|
logger.info("---------task template-------") |
|
|
|
val taskTemplate = taskTemplateRepository.findById(3).orElseThrow() |
|
|
|
val tasks = taskTemplate.tasks.groupBy { it.taskGroup!!.id } |
|
|
|
val groups = taskTemplate.groupAllocations.associateBy( |
|
|
|
keySelector = { it.taskGroup!!.id!! }, |
|
|
|
valueTransform = { it.percentage!! } |
|
|
|
) |
|
|
|
val projectTasks = if (project != null) projectTaskRepository.findAllByProject(project) else mutableListOf() |
|
|
|
var groupedProjectTasks = mapOf<Long, List<Long>>() |
|
|
|
if (projectTasks.isNotEmpty()) { |
|
|
|
groupedProjectTasks = projectTasks.groupBy { |
|
|
|
it.task!!.taskGroup!!.id!! |
|
|
|
}.mapValues { (_, projectTask) -> |
|
|
|
projectTask.map { it.task!!.id!! } |
|
|
|
} |
|
|
|
} |
|
|
|
val taskGroups = mutableMapOf<Long, TaskGroupAllocation>() |
|
|
|
groups.entries.forEach{ (key, value) -> |
|
|
|
var taskIds = tasks[key]!!.map { it.id!! } |
|
|
|
if (groupedProjectTasks.isNotEmpty() && !groupedProjectTasks[key].isNullOrEmpty()) { |
|
|
|
taskIds = (taskIds + groupedProjectTasks[key]!!).distinct() |
|
|
|
} |
|
|
|
if (key == 5L) { |
|
|
|
taskGroups[key] = TaskGroupAllocation(taskIds.plus(41).distinct(), value) |
|
|
|
logger.info("taskGroups[${key}]: ${taskGroups[key]}") |
|
|
|
} else { |
|
|
|
taskGroups[key] = TaskGroupAllocation(taskIds, value) |
|
|
|
logger.info("taskGroups[${key}]: ${taskGroups[key]}") |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
logger.info("---------Import-------") |
|
|
|
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd") |
|
|
|
val startDate = ExcelUtils.getDateValue( |
|
|
|
row.getCell(2), |
|
|
|
DateTimeFormatter.ofPattern("MM/dd/yyyy") |
|
|
|
).format(formatter) |
|
|
|
val endDate = ExcelUtils.getDateValue( |
|
|
|
row.getCell(3), |
|
|
|
DateTimeFormatter.ofPattern("MM/dd/yyyy") |
|
|
|
).format(formatter) |
|
|
|
saveProject( |
|
|
|
NewProjectRequest( |
|
|
|
projectCode = projectCode, |
|
|
@@ -669,18 +715,40 @@ open class ProjectsService( |
|
|
|
), |
|
|
|
projectActualEnd = null, |
|
|
|
taskTemplateId = taskTemplate.id, |
|
|
|
taskGroups = mapOf(Pair(5, TaskGroupAllocation(mutableListOf(41), 100.0))), |
|
|
|
taskGroups = taskGroups, |
|
|
|
milestones = mapOf( |
|
|
|
Pair( |
|
|
|
1, com.ffii.tsms.modules.project.web.models.Milestone( |
|
|
|
startDate = startDate, |
|
|
|
endDate = endDate, |
|
|
|
payments = mutableListOf() |
|
|
|
) |
|
|
|
), |
|
|
|
Pair( |
|
|
|
2, com.ffii.tsms.modules.project.web.models.Milestone( |
|
|
|
startDate = startDate, |
|
|
|
endDate = endDate, |
|
|
|
payments = mutableListOf() |
|
|
|
) |
|
|
|
), |
|
|
|
Pair( |
|
|
|
3, com.ffii.tsms.modules.project.web.models.Milestone( |
|
|
|
startDate = startDate, |
|
|
|
endDate = endDate, |
|
|
|
payments = mutableListOf() |
|
|
|
) |
|
|
|
), |
|
|
|
Pair( |
|
|
|
4, com.ffii.tsms.modules.project.web.models.Milestone( |
|
|
|
startDate = startDate, |
|
|
|
endDate = endDate, |
|
|
|
payments = mutableListOf() |
|
|
|
) |
|
|
|
), |
|
|
|
Pair( |
|
|
|
5, com.ffii.tsms.modules.project.web.models.Milestone( |
|
|
|
startDate = ExcelUtils.getDateValue( |
|
|
|
row.getCell(2), |
|
|
|
DateTimeFormatter.ofPattern("MM/dd/yyyy") |
|
|
|
).format(formatter), |
|
|
|
endDate = ExcelUtils.getDateValue( |
|
|
|
row.getCell(3), |
|
|
|
DateTimeFormatter.ofPattern("MM/dd/yyyy") |
|
|
|
).format(formatter), |
|
|
|
startDate = startDate, |
|
|
|
endDate = endDate, |
|
|
|
payments = mutableListOf( |
|
|
|
PaymentInputs( |
|
|
|
-1, "Manhour Import", ExcelUtils.getDateValue( |
|
|
@@ -690,7 +758,7 @@ open class ProjectsService( |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
), |
|
|
|
)) |
|
|
|
) |
|
|
|
} |
|
|
|