diff --git a/gcc_manpower_uploads/workorderfiles/1011 WO.pdf b/gcc_manpower_uploads/workorderfiles/1011 WO.pdf new file mode 100644 index 0000000..4c8b015 Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/1011 WO.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/485 - 2025 WO 1.pdf b/gcc_manpower_uploads/workorderfiles/485 - 2025 WO 1.pdf new file mode 100644 index 0000000..d557987 Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/485 - 2025 WO 1.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/618 Extension WO.pdf b/gcc_manpower_uploads/workorderfiles/618 Extension WO.pdf new file mode 100644 index 0000000..dcde6d3 Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/618 Extension WO.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C111802025.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C111802025.pdf new file mode 100644 index 0000000..84a8bb8 Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C111802025.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C114642025.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C114642025.pdf new file mode 100644 index 0000000..3caad02 Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C114642025.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C11702026.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C11702026.pdf new file mode 100644 index 0000000..5eefcb5 Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C11702026.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C12182025.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C12182025.pdf new file mode 100644 index 0000000..6b871c2 Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C12182025.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C124102025.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C124102025.pdf new file mode 100644 index 0000000..6631315 Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C124102025.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C12472026.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C12472026.pdf new file mode 100644 index 0000000..3ae7589 Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C12472026.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C126592025.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C126592025.pdf new file mode 100644 index 0000000..60b0934 Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C126592025.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C12852026.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C12852026.pdf new file mode 100644 index 0000000..6321fb9 Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C12852026.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C132302025.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C132302025.pdf new file mode 100644 index 0000000..a69e2ce Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C132302025.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C136782025.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C136782025.pdf new file mode 100644 index 0000000..bd744cf Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C136782025.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C137392025.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C137392025.pdf new file mode 100644 index 0000000..7738601 Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C137392025.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C139982025.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C139982025.pdf new file mode 100644 index 0000000..74128e9 Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C139982025.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C145902023.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C145902023.pdf new file mode 100644 index 0000000..b997853 Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C145902023.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C14852025.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C14852025.pdf new file mode 100644 index 0000000..801b35c Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C14852025.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C15962026.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C15962026.pdf new file mode 100644 index 0000000..8772f06 Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C15962026.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C16182025.pdf b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C16182025.pdf new file mode 100644 index 0000000..058043c Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C16182025.pdf differ diff --git a/gcc_manpower_uploads/workorderfiles/WO (4).pdf b/gcc_manpower_uploads/workorderfiles/WO (4).pdf new file mode 100644 index 0000000..4394eba Binary files /dev/null and b/gcc_manpower_uploads/workorderfiles/WO (4).pdf differ diff --git a/src/main/java/com/gcc_manpower/config/DataSourceConfig.java b/src/main/java/com/gcc_manpower/config/DataSourceConfig.java index bd8fd5f..b79e83f 100644 --- a/src/main/java/com/gcc_manpower/config/DataSourceConfig.java +++ b/src/main/java/com/gcc_manpower/config/DataSourceConfig.java @@ -10,13 +10,12 @@ import javax.sql.DataSource; @EnableTransactionManagement public class DataSourceConfig { - private static String host = "localhost:3306"; - private static String dbpassword = "root"; + // private static String host = "localhost:3306"; + // private static String dbpassword = "root"; // AWS - // private static String host = - // "gcc-facial-db-instance-1.cf48eqcciziq.ap-south-1.rds.amazonaws.com:3306"; - // private static String dbpassword = "gcc-facial-password"; + private static String host = "gcc-facial-db-instance-1.cf48eqcciziq.ap-south-1.rds.amazonaws.com:3306"; + private static String dbpassword = "gcc-facial-password"; @Bean(name = "mysqlManpowerDataSource") public DataSource mysqlManpowerDataSource() { diff --git a/src/main/java/com/gcc_manpower/config/WebConfig.java b/src/main/java/com/gcc_manpower/config/WebConfig.java new file mode 100644 index 0000000..8961f1d --- /dev/null +++ b/src/main/java/com/gcc_manpower/config/WebConfig.java @@ -0,0 +1,24 @@ +package com.gcc_manpower.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import java.nio.file.Paths; + +@Configuration +public class WebConfig implements WebMvcConfigurer { + + @Value("${upload.path:gcc_manpower_uploads}") + private String uploadPathConfig; + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + // Resolve absolute path (supports both relative and absolute paths) + String uploadPath = Paths.get(uploadPathConfig).toAbsolutePath().toUri().toString(); + + // Map URL path /gcc_manpower_uploads/** to the configured folder path + registry.addResourceHandler("/gcc_manpower_uploads/**") + .addResourceLocations(uploadPath); + } +} diff --git a/src/main/java/com/gcc_manpower/controller/HomeController.java b/src/main/java/com/gcc_manpower/controller/HomeController.java index 1c8bdef..b6eedca 100644 --- a/src/main/java/com/gcc_manpower/controller/HomeController.java +++ b/src/main/java/com/gcc_manpower/controller/HomeController.java @@ -550,6 +550,7 @@ public class HomeController { public List> getAllEmployeesWithDeleted() { return appUserService.getAllEmployeesWithDeleted(); } + @PostMapping("/usr-logout") public String logout(HttpSession session) { session.invalidate(); diff --git a/src/main/java/com/gcc_manpower/service/AppUserService.java b/src/main/java/com/gcc_manpower/service/AppUserService.java index 061b81b..58a9c2f 100644 --- a/src/main/java/com/gcc_manpower/service/AppUserService.java +++ b/src/main/java/com/gcc_manpower/service/AppUserService.java @@ -105,7 +105,8 @@ public class AppUserService { " des.tender_manpower_designation_wise, " + " COALESCE(des.File_no, '-') AS File_no, " + " COALESCE(des.work_order_issue_date, '-') AS work_order_issue_date, " + - " COALESCE(des.work_order_end_date, '-') AS work_order_end_date " + + " COALESCE(des.work_order_end_date, '-') AS work_order_end_date, " + + " des.file_path " + "FROM employee_workorder_details des " + "WHERE des.vid = ? AND des.isactive = 1 AND des.isdelete = 0 " + "ORDER BY des.orderby, des.designation"; diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 0081433..edf4c9a 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,5 +1,5 @@ -spring.profiles.active=local -#spring.profiles.active=prod +#spring.profiles.active=local +spring.profiles.active=prod spring.application.name=gcc-manpower server.servlet.session.timeout=10m \ No newline at end of file diff --git a/src/main/resources/templates/home/home.html b/src/main/resources/templates/home/home.html index fbb33d7..a2b287b 100644 --- a/src/main/resources/templates/home/home.html +++ b/src/main/resources/templates/home/home.html @@ -602,6 +602,8 @@ S.No Work Order Detail + Tendered Manpower Count + OnRoll Count @@ -1584,7 +1586,8 @@ designation: des.designation.trim(), tendered_manpower: des.tender_manpower_designation_wise !== null && des.tender_manpower_designation_wise !== undefined ? des.tender_manpower_designation_wise : '0', available_manpower: des.available_manpower || '0', - vacant_count: vacant + vacant_count: vacant, + file_path: des.file_path }); } }); @@ -1662,9 +1665,30 @@ details.forEach((item, index) => { const tr = document.createElement("tr"); + + let filePath = item.file_path; + if (filePath) { + filePath = filePath.trim(); + } + let desigCellHtml = ""; + if (filePath && filePath !== '-' && filePath.trim() !== '') { + if (!filePath.toLowerCase().endsWith('.pdf')) { + filePath += '.pdf'; + } + const normalizedPath = filePath.startsWith('/') ? filePath.substring(1) : filePath; + const fullUrl = contextPath + normalizedPath; + desigCellHtml = ` + + ${escapeHtml(item.designation)} + + `; + } else { + desigCellHtml = `${escapeHtml(item.designation)}`; + } + tr.innerHTML = ` ${index + 1} - ${escapeHtml(item.designation)} + ${desigCellHtml} ${escapeHtml(item.tendered_manpower)} ${escapeHtml(item.available_manpower)} @@ -1929,6 +1953,9 @@ } noWoEl.style.display = "none"; + let totalTender = 0; + let totalOnroll = 0; + designations.forEach((des, index) => { const tr = document.createElement("tr"); @@ -1938,19 +1965,51 @@ detailText += " - " + fileNo; } - const tender = des.available_manpower || '0'; - const vacant = des.vacant_count || '0'; + const tenderVal = des.tender_manpower_designation_wise !== null && des.tender_manpower_designation_wise !== undefined ? des.tender_manpower_designation_wise : '0'; + const onrollVal = des.available_manpower || '0'; + + totalTender += parseInt(tenderVal) || 0; + totalOnroll += parseInt(onrollVal) || 0; + + let filePath = des.file_path; + if (filePath) { + filePath = filePath.trim(); + } + let detailCellHtml = ""; + if (filePath && filePath !== '-' && filePath.trim() !== '') { + if (!filePath.toLowerCase().endsWith('.pdf')) { + filePath += '.pdf'; + } + const normalizedPath = filePath.startsWith('/') ? filePath.substring(1) : filePath; + const fullUrl = contextPath + normalizedPath; + detailCellHtml = ` + + ${escapeHtml(detailText)} + + `; + } else { + detailCellHtml = `${escapeHtml(detailText)}`; + } tr.innerHTML = ` ${index + 1} - ${escapeHtml(detailText)} - + ${detailCellHtml} + ${escapeHtml(String(tenderVal))} + ${escapeHtml(String(onrollVal))} `; tbody.appendChild(tr); - //${escapeHtml(tender)} - //${escapeHtml(vacant)} }); + const totalTr = document.createElement("tr"); + totalTr.className = "modal-table-total-row"; + totalTr.innerHTML = ` + + TOTAL + ${totalTender} + ${totalOnroll} + `; + tbody.appendChild(totalTr); + const modal = bootstrap.Modal.getOrCreateInstance(document.getElementById("workOrderDetailsModal")); modal.show(); }