diff --git a/src/main/java/com/ffii/tsms/modules/project/entity/Project.kt b/src/main/java/com/ffii/tsms/modules/project/entity/Project.kt index 3358712..9294413 100644 --- a/src/main/java/com/ffii/tsms/modules/project/entity/Project.kt +++ b/src/main/java/com/ffii/tsms/modules/project/entity/Project.kt @@ -118,4 +118,9 @@ open class Project : BaseEntity() { @Column(name = "isClpProject") open var isClpProject: Boolean? = null -} + + @ManyToOne +// @JsonBackReference + @JoinColumn(name = "mainProjectId") + open var mainProject: Project? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt b/src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt index 549cf48..0f4b06b 100644 --- a/src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt +++ b/src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt @@ -4,6 +4,7 @@ import com.ffii.core.support.AbstractRepository import com.ffii.tsms.modules.project.entity.projections.InvoiceInfoSearchInfo import com.ffii.tsms.modules.project.entity.projections.InvoiceSearchInfo import com.ffii.tsms.modules.project.entity.projections.ProjectSearchInfo +import org.springframework.data.jpa.repository.Query import java.io.Serializable import java.time.LocalDate @@ -21,4 +22,11 @@ interface ProjectRepository : AbstractRepository { fun findAllByPlanStartLessThanEqualAndPlanEndGreaterThanEqual(remainedDateFrom: LocalDate?, remainedDateTo: LocalDate?):List //fun findAllByDateRange(start: LocalDate, end: LocalDate): List + + @Query("SELECT max(cast(substring_index(substring_index(p.code, '-', 2), '-', -1) as long)) FROM Project p WHERE p.isClpProject = ?1 and p.id != ?2" + + "") + fun getLatestCodeNumberByMainProject(isClpProject: Boolean, id: Serializable?): Long? + + @Query("SELECT max(cast(substring_index(p.code, '-', -1) as long)) FROM Project p WHERE p.code like ?1 and p.id != ?2") + fun getLatestCodeNumberBySubProject(code: String, id: Serializable?): Long? } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt b/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt index d16ac4d..b165489 100644 --- a/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt +++ b/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt @@ -131,11 +131,11 @@ open class ProjectsService( val checkIsClpProject = isClpProject != null && isClpProject val prefix = if (checkIsClpProject) "C" else "M" - val latestProjectCode = projectRepository.findFirstByIsClpProjectAndIdIsNotOrderByIdDesc(checkIsClpProject, project.id ?: -1) + val latestProjectCode = projectRepository.getLatestCodeNumberByMainProject(checkIsClpProject, project.id ?: -1) if (latestProjectCode != null) { - val lastFix = latestProjectCode.code!!.split("-")[1] //C-0001 -> 0001 - return "$prefix-" + String.format("%04d", lastFix.toLong() + 1L) + val lastFix = latestProjectCode + return "$prefix-" + String.format("%04d", lastFix + 1L) } else { return "$prefix-0001" } diff --git a/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt b/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt index 41831ae..666e109 100644 --- a/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt +++ b/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt @@ -615,20 +615,20 @@ open class ReportService( } } - groupedTimesheets.entries.forEach { (key, value) -> - logger.info("key: $key") - logger.info("value: " + value.sumOf { it }) - } - - groupedInvoices.entries.forEach { (key, value) -> - logger.info("key: $key") - logger.info("value: " + value) - groupedInvoices[key]!!.forEachIndexed { index, invoice -> - logger.info("index: $index") - logger.info("invoice: $invoice") - invoice.get("paidAmount") - } - } +// groupedTimesheets.entries.forEach { (key, value) -> +// logger.info("key: $key") +// logger.info("value: " + value.sumOf { it }) +// } +// +// groupedInvoices.entries.forEach { (key, value) -> +// logger.info("key: $key") +// logger.info("value: " + value) +// groupedInvoices[key]!!.forEachIndexed { index, invoice -> +// logger.info("index: $index") +// logger.info("invoice: $invoice") +// invoice.get("paidAmount") +// } +// } combinedResults.forEach { result: String -> @@ -703,7 +703,7 @@ open class ReportService( } createCell(4).apply { - setCellValue("Monthly Manpower Expenditure") + setCellValue("Manpower Expenditure") } } } diff --git a/src/main/resources/db/changelog/changes/20240517_01_cyril/01_update_project.sql b/src/main/resources/db/changelog/changes/20240517_01_cyril/01_update_project.sql new file mode 100644 index 0000000..015a0c8 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240517_01_cyril/01_update_project.sql @@ -0,0 +1,14 @@ +-- liquibase formatted sql +-- changeset cyril:project + +ALTER TABLE `project` + ADD COLUMN `mainProjectId` INT NULL DEFAULT NULL AFTER `isClpProject`, +CHANGE COLUMN `status` `status` VARCHAR(40) CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci' NULL DEFAULT 'Pending To Start' , +ADD INDEX `FK_PROJECT_ON_MAINPROJECTID` (`mainProjectId` ASC) VISIBLE; +; +ALTER TABLE `project` + ADD CONSTRAINT `FK_PROJECT_ON_MAINPROJECTID` + FOREIGN KEY (`mainProjectId`) + REFERENCES `project` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION; diff --git a/src/main/resources/db/changelog/changes/20240520_01_cyril/01_update_project_category_data.sql b/src/main/resources/db/changelog/changes/20240520_01_cyril/01_update_project_category_data.sql new file mode 100644 index 0000000..b811f3f --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240520_01_cyril/01_update_project_category_data.sql @@ -0,0 +1,9 @@ +-- liquibase formatted sql +-- changeset cyril:project_category + +UPDATE project_category +SET name='Awarded Project' +WHERE id=1; +UPDATE project_category +SET name='Project to be bidded' +WHERE id=2; \ No newline at end of file