From 324075f7d67881253cd5719bf150dc887ab769f7 Mon Sep 17 00:00:00 2001 From: yoganandhank Date: Sat, 3 Oct 2026 13:28:47 +0530 Subject: [PATCH] changes in toner management and rental management project api's and UI --- .../controller/TonerController.java | 94 +++ .../service/TonerService.java | 57 ++ .../gccrentalmanagement/dashboard.html | 10 +- .../templates/gccrentalmanagement/login.html | 409 ++--------- .../templates/gcctonermanagement/upload.html | 687 ++++++++++++++---- 5 files changed, 749 insertions(+), 508 deletions(-) diff --git a/src/main/java/com/gcc_manpower/gcctonermanagement/controller/TonerController.java b/src/main/java/com/gcc_manpower/gcctonermanagement/controller/TonerController.java index d9df303..e43c098 100644 --- a/src/main/java/com/gcc_manpower/gcctonermanagement/controller/TonerController.java +++ b/src/main/java/com/gcc_manpower/gcctonermanagement/controller/TonerController.java @@ -158,6 +158,15 @@ public class TonerController { return tonerService.getActiveZones(); } + @GetMapping("/api/vendors") + @ResponseBody + public List> getVendors(HttpSession session) { + if (session.getAttribute("toner_usrName") == null) { + return java.util.Collections.emptyList(); + } + return tonerService.getActiveVendors(); + } + @PostMapping("/api/inward") @ResponseBody public Map uploadInward( @@ -389,6 +398,91 @@ public class TonerController { return response; } + @PostMapping("/api/request/update-group") + @ResponseBody + public Map updateRequestGroup( + @RequestParam("itcellRefNo") String itcellRefNo, + @RequestParam(value = "newItcellRefNo", required = false) String newItcellRefNo, + @RequestParam("deptId") String deptId, + @RequestParam(value = "zoneId", required = false) String zoneId, + @RequestParam(value = "requestDate", required = false) String requestDate, + @RequestParam(value = "itemsJson", required = false) String itemsJson, + @RequestParam(value = "userRequestFile", required = false) MultipartFile userRequestFile, + HttpSession session) { + + Map response = new HashMap<>(); + String username = (String) session.getAttribute("toner_usrName"); + if (username == null) { + response.put("success", false); + response.put("error", "Unauthorized access. Please log in."); + return response; + } + + String updatedBy = appUserService.getUserIdByName(username); + if (updatedBy == null) + updatedBy = username; + + if (itcellRefNo == null || itcellRefNo.trim().isEmpty()) { + response.put("success", false); + response.put("error", "IT Cell Reference No. is required."); + return response; + } + + if (deptId == null || deptId.trim().isEmpty()) { + response.put("success", false); + response.put("error", "Department is required."); + return response; + } + + if (userRequestFile != null && !userRequestFile.isEmpty() && !isPdfFile(userRequestFile)) { + response.put("success", false); + response.put("error", "User Request file must be a PDF."); + return response; + } + + try { + List> items = null; + if (itemsJson != null && !itemsJson.trim().isEmpty()) { + ObjectMapper mapper = new ObjectMapper(); + items = mapper.readValue(itemsJson, new TypeReference>>() { + }); + } + + File uploadDir = new File(tonerUploadPathConfig).getAbsoluteFile(); + if (!uploadDir.exists()) { + uploadDir.mkdirs(); + } + + String urPath = null; + if (userRequestFile != null && !userRequestFile.isEmpty()) { + urPath = saveUploadedFile(userRequestFile, "user_request", uploadDir); + } + + String safeZoneId = (zoneId != null && !zoneId.trim().isEmpty()) ? zoneId.trim() : null; + boolean updated = tonerService.updateUserRequestGroup( + itcellRefNo.trim(), + (newItcellRefNo != null && !newItcellRefNo.trim().isEmpty()) ? newItcellRefNo.trim() + : itcellRefNo.trim(), + deptId.trim(), safeZoneId, requestDate, urPath, items, updatedBy); + + if (updated) { + response.put("success", true); + response.put("message", "User request details updated successfully for all toners."); + } else { + if (urPath != null) { + deleteFileIfExists(urPath, uploadDir); + } + response.put("success", false); + response.put("error", "Failed to update request details in database."); + } + } catch (Exception e) { + response.put("success", false); + response.put("error", "An error occurred: " + e.getMessage()); + e.printStackTrace(); + } + return response; + } + @PostMapping("/api/outward") @ResponseBody public Map uploadOutward( diff --git a/src/main/java/com/gcc_manpower/gcctonermanagement/service/TonerService.java b/src/main/java/com/gcc_manpower/gcctonermanagement/service/TonerService.java index e69d234..21d3028 100644 --- a/src/main/java/com/gcc_manpower/gcctonermanagement/service/TonerService.java +++ b/src/main/java/com/gcc_manpower/gcctonermanagement/service/TonerService.java @@ -136,6 +136,15 @@ public class TonerService { return map; } + public List> getActiveVendors() { + try { + return jdbcTemplate.queryForList( + "SELECT id, vendor_name FROM payment_vendors_list WHERE is_active = 1 AND is_delete = 0 ORDER BY vendor_name ASC"); + } catch (Exception e) { + return new ArrayList<>(); + } + } + private Map getWorkorderFileNumberMap() { Map map = new HashMap<>(); try { @@ -770,6 +779,54 @@ public class TonerService { username); } + @Transactional + public boolean updateUserRequestGroup(String itcellRefNo, String newItcellRefNo, String deptId, String zoneId, + String requestDate, String newUploadPath, List> items, String username) { + Timestamp now = new Timestamp(System.currentTimeMillis()); + try { + String safeZoneId = (zoneId != null && !zoneId.trim().isEmpty() && !"null".equalsIgnoreCase(zoneId)) + ? zoneId.trim() + : null; + String finalRequestDate = (requestDate != null && !requestDate.trim().isEmpty()) ? requestDate.trim() + : null; + String finalItcell = (newItcellRefNo != null && !newItcellRefNo.trim().isEmpty()) + ? newItcellRefNo.trim() + : itcellRefNo.trim(); + + if (newUploadPath != null && !newUploadPath.trim().isEmpty()) { + String sql = "UPDATE toner_department_requested_details SET " + + "itcell_ref_no = ?, dept_id = ?, zone_id = ?, request_date = ?, user_request_upload = ?, updated_date = ?, updated_by = ? " + + + "WHERE TRIM(itcell_ref_no) = TRIM(?)"; + jdbcTemplate.update(sql, finalItcell, deptId.trim(), safeZoneId, finalRequestDate, newUploadPath, now, + username, itcellRefNo.trim()); + } else { + String sql = "UPDATE toner_department_requested_details SET " + + "itcell_ref_no = ?, dept_id = ?, zone_id = ?, request_date = ?, updated_date = ?, updated_by = ? " + + + "WHERE TRIM(itcell_ref_no) = TRIM(?)"; + jdbcTemplate.update(sql, finalItcell, deptId.trim(), safeZoneId, finalRequestDate, now, username, + itcellRefNo.trim()); + } + + // Update individual item quantities if provided + if (items != null && !items.isEmpty()) { + String updateItemSql = "UPDATE toner_department_requested_details SET qty_requested = ?, updated_date = ?, updated_by = ? WHERE id = ?"; + for (Map item : items) { + Integer id = parseIntegerSafely(item.get("id")); + Integer qty = parseIntegerSafely(item.get("qty")); + if (id != null && qty != null && qty > 0) { + jdbcTemplate.update(updateItemSql, String.valueOf(qty), now, username, id); + } + } + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + public List> getAllUserRequests() { try { String sql = "SELECT * FROM toner_department_requested_details WHERE (is_active IS NULL OR is_active = 1) AND (is_delete IS NULL OR is_delete = 0) ORDER BY id DESC"; diff --git a/src/main/resources/templates/gccrentalmanagement/dashboard.html b/src/main/resources/templates/gccrentalmanagement/dashboard.html index 206abd1..605b81f 100644 --- a/src/main/resources/templates/gccrentalmanagement/dashboard.html +++ b/src/main/resources/templates/gccrentalmanagement/dashboard.html @@ -835,12 +835,14 @@

Greater Chennai Corporation

பெருநகர சென்னை மாநகராட்சி • IT Cell

-
- - Rental Asset & Material Management Hub -
+
+
+ + Rental Asset & Material Management + Hub +
diff --git a/src/main/resources/templates/gccrentalmanagement/login.html b/src/main/resources/templates/gccrentalmanagement/login.html index 9c14d80..2f59dc1 100644 --- a/src/main/resources/templates/gccrentalmanagement/login.html +++ b/src/main/resources/templates/gccrentalmanagement/login.html @@ -13,355 +13,51 @@ - + - - + + - -
-
- -