Browse Source

added work order file in vendor and manpower modal

master
yoga-agoy 4 months ago
parent
commit
31991ecac8
  1. BIN
      gcc_manpower_uploads/workorderfiles/1011 WO.pdf
  2. BIN
      gcc_manpower_uploads/workorderfiles/485 - 2025 WO 1.pdf
  3. BIN
      gcc_manpower_uploads/workorderfiles/618 Extension WO.pdf
  4. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C111802025.pdf
  5. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C114642025.pdf
  6. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C11702026.pdf
  7. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C12182025.pdf
  8. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C124102025.pdf
  9. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C12472026.pdf
  10. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C126592025.pdf
  11. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C12852026.pdf
  12. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C132302025.pdf
  13. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C136782025.pdf
  14. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C137392025.pdf
  15. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C139982025.pdf
  16. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C145902023.pdf
  17. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C14852025.pdf
  18. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C15962026.pdf
  19. BIN
      gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C16182025.pdf
  20. BIN
      gcc_manpower_uploads/workorderfiles/WO (4).pdf
  21. 9
      src/main/java/com/gcc_manpower/config/DataSourceConfig.java
  22. 24
      src/main/java/com/gcc_manpower/config/WebConfig.java
  23. 1
      src/main/java/com/gcc_manpower/controller/HomeController.java
  24. 3
      src/main/java/com/gcc_manpower/service/AppUserService.java
  25. 4
      src/main/resources/application.properties
  26. 75
      src/main/resources/templates/home/home.html

BIN
gcc_manpower_uploads/workorderfiles/1011 WO.pdf

BIN
gcc_manpower_uploads/workorderfiles/485 - 2025 WO 1.pdf

BIN
gcc_manpower_uploads/workorderfiles/618 Extension WO.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C111802025.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C114642025.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C11702026.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C12182025.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C124102025.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C12472026.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C126592025.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C12852026.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C132302025.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C136782025.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C137392025.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C139982025.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C145902023.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C14852025.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C15962026.pdf

BIN
gcc_manpower_uploads/workorderfiles/I.T.C.C.No.C16182025.pdf

BIN
gcc_manpower_uploads/workorderfiles/WO (4).pdf

9
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() {

24
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);
}
}

1
src/main/java/com/gcc_manpower/controller/HomeController.java

@ -550,6 +550,7 @@ public class HomeController {
public List<Map<String, Object>> getAllEmployeesWithDeleted() {
return appUserService.getAllEmployeesWithDeleted();
}
@PostMapping("/usr-logout")
public String logout(HttpSession session) {
session.invalidate();

3
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";

4
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

75
src/main/resources/templates/home/home.html

@ -602,6 +602,8 @@
<tr>
<th style="width: 40px;" class="text-center">S.No</th>
<th>Work Order Detail</th>
<th class="text-center" style="width: 120px;">Tendered Manpower Count</th>
<th class="text-center" style="width: 120px;">OnRoll Count</th>
<!-- <th class="text-center">Tender Count</th>
<th class="text-center">Vacant Count</th> -->
</tr>
@ -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 = `
<a href="${escapeHtml(fullUrl)}" target="_blank" class="fw-bold text-primary text-decoration-underline" title="Click to view PDF">
<i class="fa-solid fa-file-pdf text-danger me-1"></i> ${escapeHtml(item.designation)}
</a>
`;
} else {
desigCellHtml = `<span class="fw-bold text-dark">${escapeHtml(item.designation)}</span>`;
}
tr.innerHTML = `
<td class="text-center fw-bold text-secondary">${index + 1}</td>
<td class="fw-bold text-dark">${escapeHtml(item.designation)}</td>
<td>${desigCellHtml}</td>
<td class="text-center fw-semibold text-secondary">${escapeHtml(item.tendered_manpower)}</td>
<td class="text-center fw-semibold text-secondary">${escapeHtml(item.available_manpower)}</td>
<td class="text-center">
@ -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 = `
<a href="${escapeHtml(fullUrl)}" target="_blank" class="fw-bold text-primary text-decoration-underline" title="Click to view PDF">
<i class="fa-solid fa-file-pdf text-danger me-1"></i> ${escapeHtml(detailText)}
</a>
`;
} else {
detailCellHtml = `<span class="fw-bold text-dark">${escapeHtml(detailText)}</span>`;
}
tr.innerHTML = `
<td class="text-center fw-bold text-secondary">${index + 1}</td>
<td class="fw-bold text-dark">${escapeHtml(detailText)}</td>
<td>${detailCellHtml}</td>
<td class="text-center fw-semibold text-primary">${escapeHtml(String(tenderVal))}</td>
<td class="text-center fw-semibold text-primary">${escapeHtml(String(onrollVal))}</td>
`;
tbody.appendChild(tr);
//<td class="text-center fw-semibold text-primary">${escapeHtml(tender)}</td>
//<td class="text-center"><span class="badge bg-danger" style="font-size: 0.85rem; padding: 5px 10px; font-weight:700;">${escapeHtml(vacant)}</span></td>
});
const totalTr = document.createElement("tr");
totalTr.className = "modal-table-total-row";
totalTr.innerHTML = `
<td class="text-center"></td>
<td class="fw-bold text-end" style="color: #0f5c78; font-size: 0.95rem; letter-spacing: 0.5px;">TOTAL</td>
<td class="text-center fw-bold text-primary" style="font-size: 0.95rem;">${totalTender}</td>
<td class="text-center fw-bold text-primary" style="font-size: 0.95rem;">${totalOnroll}</td>
`;
tbody.appendChild(totalTr);
const modal = bootstrap.Modal.getOrCreateInstance(document.getElementById("workOrderDetailsModal"));
modal.show();
}

Loading…
Cancel
Save