From 08cd62444a66bd2d950e39e29496e2bf4335abc5 Mon Sep 17 00:00:00 2001 From: yoganandhank Date: Sat, 15 Feb 2025 11:09:57 +0530 Subject: [PATCH] First Commit --- .../controller/CompletedApiController.java | 56 + .../controller/DashboardApiController.java | 241 +++ .../DepartmentForwardApiController.java | 129 ++ .../controller/DepartmentMainController.java | 719 ++++++++ .../DepartmentReceivedApiController.java | 172 ++ .../controller/DeptAuditApiController.java | 189 ++ .../DeptPartiallyCompApiController.java | 110 ++ .../controller/DropdownApiController.java | 46 + .../controller/FileClosingApiController.java | 119 ++ .../controller/FileClosingMainController.java | 59 + .../controller/NewEntryAPIController.java | 335 ++++ .../PendencyAutoConversionApiController.java | 199 +++ .../controller/PensionAuditApiController.java | 134 ++ .../PensionPartiallyCompApiController.java | 110 ++ .../PensionReceivedApiController.java | 94 + .../controller/PensionerMainController.java | 624 +++++++ .../ReceivedDeptProvisionalApiController.java | 145 ++ .../controller/ReportApiController.java | 140 ++ .../ReturnFromAuditApiController.java | 129 ++ .../PendencyAutoConversionScheduler.java | 188 ++ .../pensioner/service/CompletedService.java | 177 ++ .../service/DashboardApiService.java | 392 +++++ .../service/DepartmentForwardService.java | 214 +++ .../service/DepartmentReceivedService.java | 644 +++++++ .../pensioner/service/DeptAuditService.java | 299 ++++ .../service/DeptPartiallyCompService.java | 354 ++++ .../pensioner/service/DropdownService.java | 45 + .../pensioner/service/FileClosingService.java | 194 ++ .../pensioner/service/NewEntryService.java | 762 ++++++++ .../PendencyAutoConversionService.java | 264 +++ .../service/PensionAuditService.java | 228 +++ .../service/PensionPartiallyCompService.java | 326 ++++ .../service/PensionReceivedService.java | 377 ++++ .../ReceivedDeptProvisionalService.java | 238 +++ .../pensioner/service/ReportApiService.java | 449 +++++ .../service/ReturnFromAuditService.java | 213 +++ .../department/audit/familypension.html | 749 ++++++++ .../pensioner/department/audit/pendency.html | 731 ++++++++ .../department/audit/retirement.html | 646 +++++++ frontend/pensioner/department/closedList.html | 1132 ++++++++++++ .../completed/contributorypensionscheme.html | 685 ++++++++ .../department/completed/familypension.html | 814 +++++++++ .../pensioner/department/completed/gis.html | 547 ++++++ .../department/completed/pendency.html | 820 +++++++++ .../completed/provisionalretirement.html | 695 ++++++++ .../department/completed/retirement.html | 771 ++++++++ frontend/pensioner/department/dashboard.html | 934 ++++++++++ .../pensioner/department/fileclosing.html | 1230 +++++++++++++ .../newentry/contributorypensionscheme.html | 946 ++++++++++ .../department/newentry/familypension.html | 886 ++++++++++ .../pensioner/department/newentry/gis.html | 1013 +++++++++++ .../department/newentry/pendency.html | 758 ++++++++ .../newentry/provisionalretirement.html | 849 +++++++++ .../department/newentry/retirement.html | 802 +++++++++ .../department/partial/familypension.html | 1190 +++++++++++++ .../department/partial/pendency.html | 1186 +++++++++++++ .../department/partial/retirement.html | 1158 ++++++++++++ .../department/received/familypension.html | 997 +++++++++++ .../department/received/pendency.html | 972 ++++++++++ .../received/provisionalretirement.html | 909 ++++++++++ .../department/received/retirement.html | 917 ++++++++++ frontend/pensioner/department/reports.html | 1150 ++++++++++++ .../department/return/familypension.html | 727 ++++++++ .../pensioner/department/return/pendency.html | 720 ++++++++ .../department/return/retirement.html | 613 +++++++ .../pensioner/audit/familypension.html | 742 ++++++++ .../pensioner/pensioner/audit/pendency.html | 733 ++++++++ .../pensioner/pensioner/audit/retirement.html | 614 +++++++ .../completed/contributorypensionscheme.html | 687 ++++++++ .../pensioner/completed/familypension.html | 807 +++++++++ .../pensioner/pensioner/completed/gis.html | 546 ++++++ .../pensioner/completed/pendency.html | 807 +++++++++ .../completed/provisionalretirement.html | 716 ++++++++ .../pensioner/completed/retirement.html | 770 ++++++++ frontend/pensioner/pensioner/dashboard.html | 915 ++++++++++ .../pensioner/forward/familypension.html | 731 ++++++++ .../pensioner/pensioner/forward/pendency.html | 725 ++++++++ .../pensioner/forward/retirement.html | 595 +++++++ .../pensioner/partial/familypension.html | 1190 +++++++++++++ .../pensioner/pensioner/partial/pendency.html | 1184 +++++++++++++ .../pensioner/partial/retirement.html | 1184 +++++++++++++ .../pensioner/received/familypension.html | 1373 +++++++++++++++ .../pensioner/pensioner/received/gis.html | 726 ++++++++ .../pensioner/received/pendency.html | 1348 ++++++++++++++ .../received/provisionalretirement.html | 1000 +++++++++++ .../pensioner/received/retirement.html | 1306 ++++++++++++++ frontend/pensioner/pensioner/reports.html | 1556 +++++++++++++++++ 87 files changed, 54916 insertions(+) create mode 100644 backend/pensioner/controller/CompletedApiController.java create mode 100644 backend/pensioner/controller/DashboardApiController.java create mode 100644 backend/pensioner/controller/DepartmentForwardApiController.java create mode 100644 backend/pensioner/controller/DepartmentMainController.java create mode 100644 backend/pensioner/controller/DepartmentReceivedApiController.java create mode 100644 backend/pensioner/controller/DeptAuditApiController.java create mode 100644 backend/pensioner/controller/DeptPartiallyCompApiController.java create mode 100644 backend/pensioner/controller/DropdownApiController.java create mode 100644 backend/pensioner/controller/FileClosingApiController.java create mode 100644 backend/pensioner/controller/FileClosingMainController.java create mode 100644 backend/pensioner/controller/NewEntryAPIController.java create mode 100644 backend/pensioner/controller/PendencyAutoConversionApiController.java create mode 100644 backend/pensioner/controller/PensionAuditApiController.java create mode 100644 backend/pensioner/controller/PensionPartiallyCompApiController.java create mode 100644 backend/pensioner/controller/PensionReceivedApiController.java create mode 100644 backend/pensioner/controller/PensionerMainController.java create mode 100644 backend/pensioner/controller/ReceivedDeptProvisionalApiController.java create mode 100644 backend/pensioner/controller/ReportApiController.java create mode 100644 backend/pensioner/controller/ReturnFromAuditApiController.java create mode 100644 backend/pensioner/scheduler/PendencyAutoConversionScheduler.java create mode 100644 backend/pensioner/service/CompletedService.java create mode 100644 backend/pensioner/service/DashboardApiService.java create mode 100644 backend/pensioner/service/DepartmentForwardService.java create mode 100644 backend/pensioner/service/DepartmentReceivedService.java create mode 100644 backend/pensioner/service/DeptAuditService.java create mode 100644 backend/pensioner/service/DeptPartiallyCompService.java create mode 100644 backend/pensioner/service/DropdownService.java create mode 100644 backend/pensioner/service/FileClosingService.java create mode 100644 backend/pensioner/service/NewEntryService.java create mode 100644 backend/pensioner/service/PendencyAutoConversionService.java create mode 100644 backend/pensioner/service/PensionAuditService.java create mode 100644 backend/pensioner/service/PensionPartiallyCompService.java create mode 100644 backend/pensioner/service/PensionReceivedService.java create mode 100644 backend/pensioner/service/ReceivedDeptProvisionalService.java create mode 100644 backend/pensioner/service/ReportApiService.java create mode 100644 backend/pensioner/service/ReturnFromAuditService.java create mode 100644 frontend/pensioner/department/audit/familypension.html create mode 100644 frontend/pensioner/department/audit/pendency.html create mode 100644 frontend/pensioner/department/audit/retirement.html create mode 100644 frontend/pensioner/department/closedList.html create mode 100644 frontend/pensioner/department/completed/contributorypensionscheme.html create mode 100644 frontend/pensioner/department/completed/familypension.html create mode 100644 frontend/pensioner/department/completed/gis.html create mode 100644 frontend/pensioner/department/completed/pendency.html create mode 100644 frontend/pensioner/department/completed/provisionalretirement.html create mode 100644 frontend/pensioner/department/completed/retirement.html create mode 100644 frontend/pensioner/department/dashboard.html create mode 100644 frontend/pensioner/department/fileclosing.html create mode 100644 frontend/pensioner/department/newentry/contributorypensionscheme.html create mode 100644 frontend/pensioner/department/newentry/familypension.html create mode 100644 frontend/pensioner/department/newentry/gis.html create mode 100644 frontend/pensioner/department/newentry/pendency.html create mode 100644 frontend/pensioner/department/newentry/provisionalretirement.html create mode 100644 frontend/pensioner/department/newentry/retirement.html create mode 100644 frontend/pensioner/department/partial/familypension.html create mode 100644 frontend/pensioner/department/partial/pendency.html create mode 100644 frontend/pensioner/department/partial/retirement.html create mode 100644 frontend/pensioner/department/received/familypension.html create mode 100644 frontend/pensioner/department/received/pendency.html create mode 100644 frontend/pensioner/department/received/provisionalretirement.html create mode 100644 frontend/pensioner/department/received/retirement.html create mode 100644 frontend/pensioner/department/reports.html create mode 100644 frontend/pensioner/department/return/familypension.html create mode 100644 frontend/pensioner/department/return/pendency.html create mode 100644 frontend/pensioner/department/return/retirement.html create mode 100644 frontend/pensioner/pensioner/audit/familypension.html create mode 100644 frontend/pensioner/pensioner/audit/pendency.html create mode 100644 frontend/pensioner/pensioner/audit/retirement.html create mode 100644 frontend/pensioner/pensioner/completed/contributorypensionscheme.html create mode 100644 frontend/pensioner/pensioner/completed/familypension.html create mode 100644 frontend/pensioner/pensioner/completed/gis.html create mode 100644 frontend/pensioner/pensioner/completed/pendency.html create mode 100644 frontend/pensioner/pensioner/completed/provisionalretirement.html create mode 100644 frontend/pensioner/pensioner/completed/retirement.html create mode 100644 frontend/pensioner/pensioner/dashboard.html create mode 100644 frontend/pensioner/pensioner/forward/familypension.html create mode 100644 frontend/pensioner/pensioner/forward/pendency.html create mode 100644 frontend/pensioner/pensioner/forward/retirement.html create mode 100644 frontend/pensioner/pensioner/partial/familypension.html create mode 100644 frontend/pensioner/pensioner/partial/pendency.html create mode 100644 frontend/pensioner/pensioner/partial/retirement.html create mode 100644 frontend/pensioner/pensioner/received/familypension.html create mode 100644 frontend/pensioner/pensioner/received/gis.html create mode 100644 frontend/pensioner/pensioner/received/pendency.html create mode 100644 frontend/pensioner/pensioner/received/provisionalretirement.html create mode 100644 frontend/pensioner/pensioner/received/retirement.html create mode 100644 frontend/pensioner/pensioner/reports.html diff --git a/backend/pensioner/controller/CompletedApiController.java b/backend/pensioner/controller/CompletedApiController.java new file mode 100644 index 0000000..e3fcc3c --- /dev/null +++ b/backend/pensioner/controller/CompletedApiController.java @@ -0,0 +1,56 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.Map; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.CompletedService; + +@RequestMapping("gcc/api/department/completed") +@RestController +public class CompletedApiController { + + @Autowired + private CompletedService completedService; + + @Autowired + public CompletedApiController(CompletedService completedService) { + this.completedService = completedService; + } + + // Combined method to handle both cases (with and without emp_no parameter) + @GetMapping("/cpslist") + public ResponseEntity getCPSList(@RequestParam(value = "emp_no", required = false) String empNo, + @RequestParam(required = false)Integer file_cat, + @RequestParam(required = false)Integer deptId) { + try { + List> cpsList; + + // If emp_no is provided, fetch filtered records + if (empNo != null && !empNo.isEmpty()) { + cpsList = completedService.getCPSListByEmpNo(empNo); + } else { + // If emp_no is not provided, fetch all records + cpsList = completedService.getCPSList(file_cat,deptId); + } + + // Return response based on the data + if (cpsList.isEmpty()) { + return ResponseEntity.noContent().build(); // No records found + } + + return ResponseEntity.ok(cpsList); // Return the records + + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("Error occurred while fetching completed service records."); + } + } +} diff --git a/backend/pensioner/controller/DashboardApiController.java b/backend/pensioner/controller/DashboardApiController.java new file mode 100644 index 0000000..4fc7c16 --- /dev/null +++ b/backend/pensioner/controller/DashboardApiController.java @@ -0,0 +1,241 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.DashboardApiService; +@RestController +public class DashboardApiController { + @Autowired + private DashboardApiService dashboardApiService; + + @GetMapping("/dashboard") + @ResponseBody + public List> getDashboardData() { + + return dashboardApiService.fetchCategoryCounts(); + } + /*@GetMapping("/dashboardsearch") + @ResponseBody + public List> fetchDashboardData( + @RequestParam(required = false) String startdate, + @RequestParam(required = false) String enddate) { + System.out.println("Endpoint hit with startdate: " + startdate + ", enddate: " + enddate); + try { + return dashboardApiService.fetchCategorysearchCounts(startdate, enddate); + } catch (Exception e) { + e.printStackTrace(); // Print fetchCategoryCounts stack trace to the logs + throw e; // Rethrow the exception to propagate the 500 error + } + } + @GetMapping("/categoryCounts") + public List> getCategoryCounts() { + return dashboardApiService.fetchCategoryCounts(); + } + + + @GetMapping("/getEmpNoByFileName") + public List> getEmployeeDetails(@RequestParam("file_id") String FileId) { + System.out.println("before fetch"); + return dashboardApiService.getEmployeeDetails(FileId); + } + @GetMapping("/stageWiseCounts") + public ResponseEntity>> getStageWiseCounts() { + List> stageWiseCounts = dashboardApiService.getStageWiseCounts(); + return ResponseEntity.ok(stageWiseCounts); + }*/ + + @GetMapping("/getDepartments") + @ResponseBody + public List> getDepartment() { + return dashboardApiService.getDepartment(); + } + @GetMapping("/getEmpNoByFileName") + public List> getEmployeeDetails(@RequestParam("file_id") String FileId) { + System.out.println("before fetch"); + return dashboardApiService.getEmployeeDetails(FileId); + } + + + //department + + @GetMapping("/deparmentdashboard") + @ResponseBody + public List> getDepartmentDashboardData(@RequestParam(required = false) String deptId) { + System.out.println("deptid"+ deptId); + return dashboardApiService.DepartmenfetchCategoryCounts(deptId); + } + + + /* @GetMapping("/deparmentcategoryCounts") + public List> getDepartmenCategoryCounts(@RequestParam(required = false) String deptId) { + return dashboardApiService.DepartmenfetchCategoryCounts(deptId); + } + //DepartmentstageWiseCounts + + @GetMapping("/DepartmentstageWiseCounts") + public ResponseEntity>> getDepartmentStageWiseCounts(@RequestParam(required = false) String deptId) { + List> stageWiseCounts = dashboardApiService.getDepartmentStageWiseCounts(deptId); + return ResponseEntity.ok(stageWiseCounts); + }*/ + + + @GetMapping("/stageWiseCounts") + public ResponseEntity>> getDepartmentStageWiseCounts( + @RequestParam(required = false) String deptId, + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate) { + + if(startDate.isEmpty()) + { + startDate=null; + } + if(endDate.isEmpty()) + { + endDate=null; + } + List> stageWiseCounts = dashboardApiService.getStageWiseCounts(deptId, startDate, endDate); + return ResponseEntity.ok(stageWiseCounts); + } + @GetMapping("/categoryCounts") + public List> getDepartmenCategoryCounts( + @RequestParam(required = false) String deptId, + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate) { + + if(startDate.isEmpty()) + { + startDate=null; + } + if(endDate.isEmpty()) + { + endDate=null; + } + + return dashboardApiService.fetchchartCategoryCounts(deptId, startDate, endDate); + } + + @GetMapping("/dashboardsearch") + @ResponseBody + public List> fetchDeparmentDashboardData( + @RequestParam(required = false) String startdate, + @RequestParam(required = false) String enddate,@RequestParam(required = false) String deptId) { + if(deptId.isEmpty()) + { + deptId=null; + } + + System.out.println("Endpoint hit with startdate: " + startdate + ", enddate: " + enddate); + try { + return dashboardApiService.fetchCategorysearchCounts(startdate, enddate,deptId); + } catch (Exception e) { + e.printStackTrace(); // Print fetchCategoryCounts stack trace to the logs + throw e; // Rethrow the exception to propagate the 500 error + } + } + +//pension + + @GetMapping("/pensiondashboard") + @ResponseBody + public List> getPensionDashboardData(@RequestParam(required = false) String deptId) { + System.out.println("deptid"+ deptId); + return dashboardApiService.DepartmenfetchCategoryCounts(deptId); + } + /* @GetMapping("/pensiondashboardsearch") + @ResponseBody + public List> fetchpensionDashboardData( + @RequestParam(required = false) String startdate, + @RequestParam(required = false) String enddate,@RequestParam(required = false) String deptId) { + + if(deptId.isEmpty()) + { + deptId=null; + } + + + System.out.println("Endpoint hit with startdate: " + startdate + ", enddate: " + enddate); + try { + return dashboardApiService.fetchDeparmentCategorysearchCounts(startdate, enddate,deptId); + } catch (Exception e) { + e.printStackTrace(); // Print fetchCategoryCounts stack trace to the logs + throw e; // Rethrow the exception to propagate the 500 error + } + }*/ + + + /* @GetMapping("/pensioncategoryCounts") + public List> getpensionCategoryCounts( + @RequestParam(required = false) String deptId, + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate) { + + if(startDate.isEmpty()) + { + startDate=null; + } + if(endDate.isEmpty()) + { + endDate=null; + } + + return dashboardApiService.DepartmenfetchDepartmentCategoryCounts(deptId, startDate, endDate); + }*/ + + + /* @GetMapping("/pensionstageWiseCounts") + public ResponseEntity>> getpensionStageWiseCounts( + @RequestParam(required = false) String deptId, + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate) { + + if(startDate.isEmpty()) + { + startDate=null; + } + if(endDate.isEmpty()) + { + endDate=null; + } + List> stageWiseCounts = dashboardApiService.getDepartmentStageWiseCounts(deptId, startDate, endDate); + return ResponseEntity.ok(stageWiseCounts); + }*/ + + @GetMapping("/fetchEmpDetails") + public List> getEmpDetails(@RequestParam(required = false) String Empcode) { + System.out.println("checking"); + System.out.println(Empcode); + + return dashboardApiService.getEmpDetails(Empcode); + } + + @GetMapping("/fetchPensionEmpDetails") + public List> getPensionEmpDetails(@RequestParam(required = false) String Empcode) { + System.out.println("checking"); + System.out.println(Empcode); + + return dashboardApiService.getPensionEmpDetails(Empcode); + } + + + @GetMapping("/fetchTempDetails") + public List> getTempEmpDetails(@RequestParam(required = false) String tempId) { + System.out.println("checking"); + System.out.println(tempId); + + return dashboardApiService.getTempEmpDetails(tempId); + } + + + + +} diff --git a/backend/pensioner/controller/DepartmentForwardApiController.java b/backend/pensioner/controller/DepartmentForwardApiController.java new file mode 100644 index 0000000..ea0bec5 --- /dev/null +++ b/backend/pensioner/controller/DepartmentForwardApiController.java @@ -0,0 +1,129 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.DepartmentForwardService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptAuditService; + +@RequestMapping("gcc/api/pension/forward") +@RestController +public class DepartmentForwardApiController { + + @Autowired + private DeptAuditService deptAuditService; + + @Autowired + private DepartmentForwardService departmentForwardService; + + + @PostMapping("/updateEmployeeDetails") + public ResponseEntity updateEmployeeDetails(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + boolean isSaved = departmentForwardService.updateEntryDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=departmentForwardService.savehistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File Forward to Department successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + //family pension + @PostMapping("/updateForwardFamilyPension") + public ResponseEntity updateForwardFamilyPension(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + + + boolean isSaved = departmentForwardService.updateEntryDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=departmentForwardService.saveFamilyPensionForwardHistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File Forward to Department successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + @PostMapping("/updateForwardPendency") + public ResponseEntity updateForwardPendency(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + + + boolean isSaved = departmentForwardService.updateEntryDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=departmentForwardService.savePendencyForwardHistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File Forward to Department successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + +} diff --git a/backend/pensioner/controller/DepartmentMainController.java b/backend/pensioner/controller/DepartmentMainController.java new file mode 100644 index 0000000..a5b1686 --- /dev/null +++ b/backend/pensioner/controller/DepartmentMainController.java @@ -0,0 +1,719 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; + +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.CompletedService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.DepartmentForwardService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.DepartmentReceivedService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptAuditService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptPartiallyCompService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.NewEntryService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.PensionAuditService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.PensionReceivedService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.ReceivedDeptProvisionalService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.ReturnFromAuditService; +import in.gov.chennaicorporation.gccoffice.service.LoginUserInfo; + +@RequestMapping("/gcc/department") +@Controller("gccpensioner") +public class DepartmentMainController { + + @Autowired + private NewEntryService newEntryService; + + @Autowired + private DeptAuditService deptAuditService; + + @Autowired + private ReturnFromAuditService returnFromAuditService; + + @Autowired + private PensionAuditService pensionAuditService; + + @Autowired + private DepartmentForwardService departmentForwardService; + + @Autowired + private PensionReceivedService pensionReceivedService; + + @Autowired + private DepartmentReceivedService departmentReceivedService; + + @Autowired + private ReceivedDeptProvisionalService receivedDeptProvisionalService; + + @Autowired + private CompletedService completedService; + + @Autowired + public DeptPartiallyCompService deptPartiallyCompleteService; + + + + //////////////////////department pages///////////////////////////////// + + //yogi + @GetMapping("/newentry/retirement") + public String newentryretirement( Model model) { + + + int file_cat= newEntryService.getRetirementFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + return "modules/pensioner/department/newentry/retirement"; + } + + + @GetMapping("/newentry/familypension") + public String newentryfamilypension(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + int file_cat= newEntryService.getFamilyPensionFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + return "modules/pensioner/department/newentry/familypension"; + } + + + @GetMapping("/newentry/pendency") + public String newentrypendency(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + int file_cat= newEntryService.getPendencyFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + return "modules/pensioner/department/newentry/pendency"; + } + + + + @GetMapping("/newentry/gis") + public String newentrygis(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + int file_cat= newEntryService.getGISFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + return "modules/pensioner/department/newentry/gis"; + } + + + @GetMapping("/newentry/provisionalretirement") + public String newentryprovisional(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + int file_cat= newEntryService.getPRFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + return "modules/pensioner/department/newentry/provisionalretirement"; + } + + + @GetMapping("/newentry/contributorypensionscheme") + public String newentrycontributory(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + int file_cat= newEntryService.getCPSFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + return "modules/pensioner/department/newentry/contributorypensionscheme"; + } + + + //sanjay//////////////AUDIT LIST PAGES////////////////// + + @GetMapping("/audit/retirement") + public String auditretirement(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + int file_cat= newEntryService.getRetirementFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + List>auditlist=deptAuditService.fetchEmployeeDetailsByTable(deptId,file_cat); + System.out.println("auditlist===="+auditlist); + model.addAttribute("auditlist", auditlist); + + return "modules/pensioner/department/audit/retirement"; + } + + + @GetMapping("/audit/familypension") + public String auditfamilypension(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + int file_cat= newEntryService.getFamilyPensionFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + List>auditlist=deptAuditService.fetchEmployeeDetailsByTable(deptId,file_cat); + System.out.println("auditlist===="+auditlist); + model.addAttribute("auditlist", auditlist); + + + return "modules/pensioner/department/audit/familypension"; + } + + + @GetMapping("/audit/pendency") + public String auditpendency(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + int file_cat= newEntryService.getPendencyFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + List>auditlist=deptAuditService.fetchEmployeeDetailsByTable(deptId,file_cat); + System.out.println("auditlist===="+auditlist); + model.addAttribute("auditlist", auditlist); + + return "modules/pensioner/department/audit/pendency"; + } + + + ///////////////////PARTIAL LIST PAGES////////////////////// + + @GetMapping("/partial/retirement") + public String partialretirement(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + int file_cat= newEntryService.getRetirementFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + List>auditlist=deptPartiallyCompleteService.fetchDepatmentPartialEmpfiles(deptId,file_cat); + System.out.println("auditlist===="+auditlist); + model.addAttribute("auditlist", auditlist); + + return "modules/pensioner/department/partial/retirement"; + } + + @GetMapping("/partial/familypension") + public String partialfamilypension(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + int file_cat= newEntryService.getFamilyPensionFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + List>auditlist=deptPartiallyCompleteService.fetchDepatmentPartialEmpfiles(deptId,file_cat); + System.out.println("auditlist===="+auditlist); + model.addAttribute("auditlist", auditlist); + + return "modules/pensioner/department/partial/familypension"; + } + + @GetMapping("/partial/pendency") + public String partialpendency(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + int file_cat= newEntryService.getPendencyFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + List>auditlist=deptPartiallyCompleteService.fetchDepatmentPartialEmpfiles(deptId,file_cat); + System.out.println("auditlist===="+auditlist); + model.addAttribute("auditlist", auditlist); + + return "modules/pensioner/department/partial/pendency"; + } + + + + //dizho/////////////RETURN LIST PAGES////////////////// + + @GetMapping("/return/retirement") + public String returnretirement(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + int file_cat= newEntryService.getRetirementFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + List>returnlist=returnFromAuditService.fetchReturnEmpfiles(deptId,file_cat); + System.out.println("returnlist===="+returnlist); + model.addAttribute("returnlist", returnlist); + + return "modules/pensioner/department/return/retirement"; + } + + + @GetMapping("/return/familypension") + public String returnfamilypension(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + int file_cat= newEntryService.getFamilyPensionFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + List>returnlist=returnFromAuditService.fetchReturnEmpfiles(deptId,file_cat); + System.out.println("returnlist===="+returnlist); + model.addAttribute("returnlist", returnlist); + + return "modules/pensioner/department/return/familypension"; + } + + + @GetMapping("/return/pendency") + public String returnpendency(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + int file_cat= newEntryService.getPendencyFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + List>returnlist=returnFromAuditService.fetchReturnEmpfiles(deptId,file_cat); + System.out.println("returnlist===="+returnlist); + model.addAttribute("returnlist", returnlist); + + return "modules/pensioner/department/return/pendency"; + } + + //////////////////RECEIVED LIST PAGES///////////////////// + + + @GetMapping("/received/retirement") + public String receivedretirement(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + int file_cat= newEntryService.getRetirementFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + List>receivedlist=pensionReceivedService.fetchReceivedDepartmentEmpfiles(deptId,file_cat); + System.out.println("receivedlist===="+receivedlist); + model.addAttribute("receivedlist", receivedlist); + + return "modules/pensioner/department/received/retirement"; + } + + + @GetMapping("/received/familypension") + public String receivedfamilypension(Model model) { + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + int file_cat= newEntryService.getFamilyPensionFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + List>receivedlist=pensionReceivedService.fetchReceivedDepartmentEmpfiles(deptId,file_cat); + System.out.println("receivedlist===="+receivedlist); + model.addAttribute("receivedlist", receivedlist); + + return "modules/pensioner/department/received/familypension"; + } + + + + @GetMapping("/received/pendency") + public String receivedpendency(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + int file_cat= newEntryService.getPendencyFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + List>receivedlist=pensionReceivedService.fetchReceivedDepartmentEmpfiles(deptId,file_cat); + System.out.println("receivedlist===="+receivedlist); + model.addAttribute("receivedlist", receivedlist); + + return "modules/pensioner/department/received/pendency"; + } + + + @GetMapping("/received/provisionalretirement") + public String receivedprovisionalretirement(Model model) { + int file_cat= newEntryService.getPRFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>provisionallist= receivedDeptProvisionalService.fetchDetailsProvisionalDepartment(file_cat); + + System.out.println("provisionallist===="+provisionallist); + model.addAttribute("provisionallist", provisionallist); + + return "modules/pensioner/department/received/provisionalretirement"; + } + + + ////////////////COMPLETED LIST PAGES///////////////////////////// + + @GetMapping("/completed/retirement") + public String completedretirement(Model model) { + int file_cat= newEntryService.getRetirementFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>retirementcompletedlist= completedService.fetchDetailsCompletedRetirement(file_cat,deptId); + + System.out.println("provisionallist"+retirementcompletedlist); + model.addAttribute("provisionallist", retirementcompletedlist); + + return "modules/pensioner/department/completed/retirement"; + } + + + @GetMapping("/completed/familypension") + public String completedfamilypension(Model model) { + int file_cat= newEntryService.getFamilyPensionFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>familypensioncompletedlist= completedService.fetchDetailsCompletedFamilyPension(file_cat,deptId); + + System.out.println("provisionallist===="+familypensioncompletedlist); + model.addAttribute("provisionallist", familypensioncompletedlist); + + return "modules/pensioner/department/completed/familypension"; + } + + + @GetMapping("/completed/pendency") + public String completedpendency(Model model) { + int file_cat= newEntryService.getPendencyFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>pendencycompletedlist= completedService.fetchDetailsCompletedPendency(file_cat,deptId); + + System.out.println("provisionallist===="+pendencycompletedlist); + model.addAttribute("provisionallist", pendencycompletedlist); + + return "modules/pensioner/department/completed/pendency"; + } + + + @GetMapping("/completed/gis") + public String completedgis(Model model) { + int file_cat= newEntryService.getGISFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>gislist= completedService.fetchDetailsForrecivedGiscompleted(file_cat,deptId); + + System.out.println("auditlist===="+gislist); + model.addAttribute("auditlist", gislist); + + return "modules/pensioner/department/completed/gis"; + } + + @GetMapping("/completed/provisionalretirement") + public String completedprovisionalretirement(Model model) { + int file_cat= newEntryService.getPRFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>provisionallist= completedService.fetchDetailsProvisionalDepartmentCompleted(file_cat,deptId); + + System.out.println("provisionallist===="+provisionallist); + model.addAttribute("provisionallist", provisionallist); + + return "modules/pensioner/department/completed/provisionalretirement"; + } + + + + @GetMapping("/completed/contributorypensionscheme") + public String completedContributoryPensionScheme( + + Model model) { + // Get logged-in user details + + int file_cat= newEntryService.getCPSFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>completedCPSList= completedService.getCPSList(file_cat,deptId); + + System.out.println("provisionallist===="+completedCPSList); + model.addAttribute("provisionallist", completedCPSList); + // Add the list to the model + model.addAttribute("completedCPSList", completedCPSList); + + return "modules/pensioner/department/completed/contributorypensionscheme"; + } + + + + //Ajith ////////////////REPORTS LIST PAGES////////////////////// + + @GetMapping("/reports") + public String reports(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + return "modules/pensioner/department/reports"; + } + + + @GetMapping("/dashboard") + public String dashboard(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + + return "modules/pensioner/department/dashboard"; + } + + +} + diff --git a/backend/pensioner/controller/DepartmentReceivedApiController.java b/backend/pensioner/controller/DepartmentReceivedApiController.java new file mode 100644 index 0000000..f03eaef --- /dev/null +++ b/backend/pensioner/controller/DepartmentReceivedApiController.java @@ -0,0 +1,172 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.DepartmentReceivedService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptAuditService; + +@RequestMapping("gcc/api/pension/received") +@RestController +public class DepartmentReceivedApiController { + + @Autowired + private DeptAuditService deptAuditService; + + @Autowired + private DepartmentReceivedService departmentReceivedService; + + @PostMapping("/updateforretirementcompleted") + public ResponseEntity updateRetirementEmployeeDetailsCompleted(@RequestBody Map requestData) { + try { + // Extract request parameters + String tempId = (String) requestData.get("tempId"); + String filemovedby = (String) requestData.get("filemovedby"); + int file_Status = 0; // Initialize file_status + + // Call service method to save the details + boolean isSaved = departmentReceivedService.updateEntryCompletedDetails(requestData); + + if (isSaved) { + // Fetch employee details + List> emp_details = deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:" + emp_details); + + // Fetch pension benefits details + List> pension_details = departmentReceivedService.fetchPensionbenefitsById(tempId); + System.out.println("pension_details:==:" + pension_details); + + // Save retirement completed history + boolean updated = departmentReceivedService.saveRetirementCompletedhistory(emp_details, pension_details, filemovedby); + + // Retrieve file_status from emp_details + if (!emp_details.isEmpty()) { + Map firstEmployeeDetails = emp_details.get(0); + Object fileStatusObj = firstEmployeeDetails.get("file_status"); + + if (fileStatusObj != null) { + try { + file_Status = Integer.parseInt(fileStatusObj.toString()); + System.out.println("Parsed file_status: " + file_Status); + } catch (NumberFormatException e) { + System.err.println("Failed to parse file_status: " + fileStatusObj); + } + } else { + System.out.println("file_status is null in emp_details."); + } + } else { + System.out.println("emp_details is empty."); + } + + // Final response logic + if (updated && file_Status != 0) { + if (file_Status == 11) { + return ResponseEntity.ok("File Completed successfully!"); + } else { + //return ResponseEntity.ok("File Moved Department to Complete Pending fields!"); + return ResponseEntity.ok("File Moved to Partially Completed!"); + } + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("Failed to save details in history or invalid file_status."); + } + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details for completed."); + } + + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("Error occurred while saving details."); + } + } + + + @PostMapping("/updateforretirementpending") + public ResponseEntity updateRetirementEmployeeDetailsPending(@RequestBody Map requestData) { + try { + // Extract request parameters + String tempId = (String) requestData.get("tempId"); + String filemovedby = (String) requestData.get("filemovedby"); + + + // Call service method to save the details + boolean isSaved = departmentReceivedService.updateEntryPendingDetails(requestData); + + if (isSaved) { + // Fetch employee details + List> emp_details = deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:" + emp_details); + + // Fetch pension benefits details + List> pension_details = departmentReceivedService.fetchPensionbenefitsById(tempId); + System.out.println("pension_details:==:" + pension_details); + + // Save retirement completed history + boolean updated = departmentReceivedService.saveRetirementPendinghistory(emp_details, pension_details, filemovedby); + + if(updated) + { + return ResponseEntity.ok("File is Pending!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details for pending."); + } + + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("Error occurred while saving details."); + } + } + + + @PostMapping("/updateforretirementreturn") + public ResponseEntity updateRetirementEmployeeDetailsReturn(@RequestBody Map requestData) { + try { + // Extract request parameters + String tempId = (String) requestData.get("tempId"); + String filemovedby = (String) requestData.get("filemovedby"); + + + // Call service method to save the details + boolean isSaved = departmentReceivedService.updateEntryReturnDetails(requestData); + + if (isSaved) { + // Fetch employee details + List> emp_details = deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:" + emp_details); + + // Save retirement completed history + boolean updated = departmentReceivedService.saveRetirementreturnhistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File Returned to Department!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details for pending."); + } + + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("Error occurred while saving details."); + } + } + +} diff --git a/backend/pensioner/controller/DeptAuditApiController.java b/backend/pensioner/controller/DeptAuditApiController.java new file mode 100644 index 0000000..f207718 --- /dev/null +++ b/backend/pensioner/controller/DeptAuditApiController.java @@ -0,0 +1,189 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptAuditService; + +@RequestMapping("gcc/api/department/audit") +@RestController +public class DeptAuditApiController { + + @Autowired + private DeptAuditService deptAuditService; + + + @GetMapping("/getemployeedetails") + public List> getEmployeedetailsbyCode( + @RequestParam String tempId) { + + List> employeeDetails = deptAuditService.fetchEmployeeById(tempId); + System.out.println("employeeDetails==="+employeeDetails); + return employeeDetails; + } + + + + @GetMapping("/getemployeedetailscps") + public List> getEmployeedetailsbyCodeCps( + @RequestParam String tempId) { + + List> employeeDetails = deptAuditService.fetchEmployeeByIdCps(tempId); + System.out.println("employeeDetails==="+employeeDetails); + return employeeDetails; + } + + @GetMapping("/getzonebenefitsdetails") + public List> getdetailsWithZonebenefits( + @RequestParam String tempId) { + + List> zoneBenefitDetails = deptAuditService.fetchDetailsWithZoneBenefitsById(tempId); + System.out.println("zoneBenefitDetails==="+zoneBenefitDetails); + return zoneBenefitDetails; + } + + @GetMapping("/getfilependingbenefits") + public List> getAllBenefitsDetails( + @RequestParam String tempId) { + + List> allBenefitDetails = deptAuditService.fetchFilePendingBenefits(tempId); + System.out.println("allBenefitDetails==="+allBenefitDetails); + return allBenefitDetails; + } + + @GetMapping("/getpartialdetails") + public List> getAllPartialDetails( + @RequestParam String tempId) { + + List> partialDetails = deptAuditService.fetchPartialCompleted(tempId); + System.out.println("partialDetails==="+partialDetails); + return partialDetails; + } + + + + @GetMapping("/fileMovementhistory") + public List> getFileMovementHistory(@RequestParam String tempId) { + List> fileHistory = deptAuditService.fetchFileMovementHistory(tempId); + + return fileHistory; + } + + + @PostMapping("/updateEmployeeDetails") + public ResponseEntity updateEmployeeDetails(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + + + boolean isSaved = deptAuditService.updateEntryDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=deptAuditService.savehistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File moved to Return from Audit successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + //update the family pension details + + @PostMapping("/updateFamilyPensionDetails") + public ResponseEntity updateFamilyPensionDetails(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + + + boolean isSaved = deptAuditService.updateEntryDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=deptAuditService.saveFamilyPensionHistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File moved to Return from Audit successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + + //pendency + @PostMapping("/updatePendencyDetails") + public ResponseEntity updatePendencyDetails(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + + + boolean isSaved = deptAuditService.updateEntryDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=deptAuditService.savePendencyHistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File moved to Return from Audit successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + +} diff --git a/backend/pensioner/controller/DeptPartiallyCompApiController.java b/backend/pensioner/controller/DeptPartiallyCompApiController.java new file mode 100644 index 0000000..a47491e --- /dev/null +++ b/backend/pensioner/controller/DeptPartiallyCompApiController.java @@ -0,0 +1,110 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptAuditService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptPartiallyCompService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.PensionReceivedService; + +@RequestMapping("gcc/api/department/partial") +@RestController +public class DeptPartiallyCompApiController { + + @Autowired + public DeptPartiallyCompService deptPartiallyCompleteService; + + @Autowired + public DeptAuditService deptAuditService; + + @Autowired + public PensionReceivedService pensionReceivedService; + + + @PostMapping("/updateEmployeeDetails") + public ResponseEntity updateEmployeeDetails(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + int fs1=0; + + boolean isSaved = deptPartiallyCompleteService.updateEntryCompletedDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchPartialCompleted(tempId); + System.out.println("emp_details:==:"+emp_details); + + + List> zone_benefits=pensionReceivedService.fetchZonebenefitsById(tempId); + System.out.println("zone_benefits:==:"+zone_benefits); + + List> pension_benefits=pensionReceivedService.fetchPensionbenefitsById(tempId); + System.out.println("pension_benefits:==:"+pension_benefits); + + + boolean updated=deptPartiallyCompleteService.saveHistory(emp_details,zone_benefits,pension_benefits,filemovedby); + + if (!emp_details.isEmpty()) { // Ensure list is not empty + Map empDetailMap = emp_details.get(0); // Get first map from the list + + // Ensure the key exists in the map + if (empDetailMap.containsKey("file_status")) { + Object fileStatusObj = empDetailMap.get("file_status"); + + if (fileStatusObj != null) { + String fs = fileStatusObj.toString(); // Convert to String safely + fs1 = Integer.parseInt(fs); // Convert to integer if needed + System.out.println("file_status: " + fs1); + } else { + System.out.println("file_status is null"); + } + } else { + System.out.println("Key 'file_status' not found in emp_details"); + } + } else { + System.out.println("emp_details list is empty"); + } + + + if(updated) + { + if(fs1==11 && fs1!=0) + { + return ResponseEntity.ok("File Completed successfully!"); + } + else if(fs1==9 && fs1!=0) { + return ResponseEntity.ok("File Partially Completed!"); + } + else if(fs1==10 && fs1!=0){ + return ResponseEntity.ok("File Moved to Pension for Complete!"); + } + else { + return ResponseEntity.ok("File Status is 0!"); + } + + + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + +} diff --git a/backend/pensioner/controller/DropdownApiController.java b/backend/pensioner/controller/DropdownApiController.java new file mode 100644 index 0000000..227bc15 --- /dev/null +++ b/backend/pensioner/controller/DropdownApiController.java @@ -0,0 +1,46 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.DropdownService; + +@RequestMapping("gcc/api") +@Controller +public class DropdownApiController { + + @Autowired + private DropdownService dropdownService; + + @GetMapping("/getRetrimentTypes") + @ResponseBody + public List> getRetrimentTypes() { + return dropdownService.getRetrimentTypes(); + } + + @GetMapping("/getCategoryTypes") + @ResponseBody + public List> getCategoryTypes() { + return dropdownService.getCategoryTypes(); + } + + @GetMapping("/getProvisionalReasonTypes") + @ResponseBody + public List> getProvisionalReasonTypes() { + return dropdownService.getProvisionalReasonTypes(); + } + + + @GetMapping("/getGisEntryTypes") + @ResponseBody + public List> getGisEntryTypes() { + return dropdownService.getGisEntryTypes(); + } + +} diff --git a/backend/pensioner/controller/FileClosingApiController.java b/backend/pensioner/controller/FileClosingApiController.java new file mode 100644 index 0000000..705d058 --- /dev/null +++ b/backend/pensioner/controller/FileClosingApiController.java @@ -0,0 +1,119 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptAuditService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.FileClosingService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.NewEntryService; + +@RequestMapping("gcc/api/fileclosing") +@RestController +public class FileClosingApiController { + + + @Autowired + private FileClosingService fileClosingService; + + + @Autowired + private NewEntryService newEntryService; + + @Autowired + private DeptAuditService deptAuditService; + + @GetMapping("/getdetails") + public List> getEmployeedetailsbyCode( @RequestParam String empCode, @RequestParam String deptId){ + + int dept_id=Integer.parseInt(deptId); + + int file_cat= newEntryService.getRetirementFileCategoryId(); + System.out.println("file_cat>>>>>>"+file_cat); + String tempId=fileClosingService.getTempId(empCode,dept_id,file_cat); + + System.out.println("empCode>>>>>"+empCode); + System.out.println("deptId>>>>>>"+dept_id); + System.out.println("tempId>>>>>>"+tempId); + + List> employeeDetails = fileClosingService.fetchEmployeeByTempId(tempId); + System.out.println("employeeDetails==="+employeeDetails); + + return employeeDetails; + } + + + @GetMapping("/getemployeedetails") + public List> getEmployeedetailsbyCode( + @RequestParam String tempId) { + + System.out.println("temporary==="+tempId); + + List> employeeDetails = fileClosingService.fetchEmployeeById(tempId); + System.out.println("employeeDetails==="+employeeDetails); + return employeeDetails; + } + + + @PostMapping("/updateDetails") + public ResponseEntity updateDetails(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + + System.out.println("data"+requestData); + + boolean isSaved = fileClosingService.updateEntryDetails(requestData); + + + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=fileClosingService.saveclosinghistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File moved to Return from Audit successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + + //closed list api + + @GetMapping("/getcloseddetails") + public List> getClosedEmployeedetails(){ + + List> employeeDetails = fileClosingService.fetchClosingEmployee(); + System.out.println("employeeDetails==="+employeeDetails); + + return employeeDetails; + } + + + + +} diff --git a/backend/pensioner/controller/FileClosingMainController.java b/backend/pensioner/controller/FileClosingMainController.java new file mode 100644 index 0000000..d61bfff --- /dev/null +++ b/backend/pensioner/controller/FileClosingMainController.java @@ -0,0 +1,59 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.NewEntryService; +import in.gov.chennaicorporation.gccoffice.service.LoginUserInfo; + + +@RequestMapping("/gcc/departmentfileclosing") +@Controller("gccpensionerfileclosing") + + +public class FileClosingMainController { + + + @Autowired + + private NewEntryService newEntryService; + + + @GetMapping("/fileclosing") + public String searchEmployee(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + + return "modules/pensioner/department/fileclosing"; + } + + @GetMapping("/closedlist") + public String closedEmployeeList(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + + return "modules/pensioner/department/closedList"; + } + +} diff --git a/backend/pensioner/controller/NewEntryAPIController.java b/backend/pensioner/controller/NewEntryAPIController.java new file mode 100644 index 0000000..fc8bb3b --- /dev/null +++ b/backend/pensioner/controller/NewEntryAPIController.java @@ -0,0 +1,335 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import org.apache.xmlbeans.impl.xb.xsdschema.Public; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.NewEntryService; +import in.gov.chennaicorporation.gccoffice.service.LoginUserInfo; + +@RequestMapping("gcc/api/department/newentry") +@RestController +public class NewEntryAPIController { + + @Autowired + private NewEntryService newEntryService; + + @Autowired + public NewEntryAPIController(NewEntryService newEntryService) { + this.newEntryService = newEntryService; + } + + + @GetMapping("/retirementdetails") + public Map getRetriedDetails( + @RequestParam(value = "deptId", required = false) Integer deptId, + @RequestParam(value = "file_category", required = false) Integer file_category, + @RequestParam(value = "fromDate", required = false) String fromDate1, + @RequestParam(value = "toDate", required = false) String toDate1) + { + + Map response = new HashMap<>(); + if (deptId == null) { + response.put("status", "deptid"); + response.put("message", "Department Id is null"); + return response; + + } + + System.out.println("Received deptId: " + deptId); + System.out.println("Received fromDate: " + fromDate1); + System.out.println("Received toDate: " + toDate1); + + LocalDate fromDate; + LocalDate toDate ; + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + + LocalDate now = LocalDate.now(); + int currentYear = now.getYear(); + + if(fromDate1.isEmpty()) { + fromDate = LocalDate.of(currentYear, 4, 1); + } + + if(toDate1.isEmpty()) { + toDate = LocalDate.of(currentYear + 1, 3, 31); // March 31 of the next year + } + + if(fromDate1.isEmpty() && toDate1.isEmpty()) { + fromDate = LocalDate.of(currentYear, 4, 1); // April 1 of the current year + toDate = LocalDate.of(currentYear + 1, 3, 31); // March 31 of the next year + + } + else { + try { + + // Check if the input date is in yyyy-MM-dd format + if (fromDate1.matches("\\d{4}-\\d{2}-\\d{2}") && toDate1.matches("\\d{4}-\\d{2}-\\d{2}")) { + // Parse from yyyy-MM-dd format + fromDate = LocalDate.parse(fromDate1); + toDate = LocalDate.parse(toDate1); + } else { + // Parse from dd-MM-yyyy format + DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + fromDate = LocalDate.parse(fromDate1, formatter1); + toDate = LocalDate.parse(toDate1, formatter1); + } + + } catch (DateTimeParseException e) { + response.put("status", "error"); + response.put("message", "Invalid date format. Expected format: dd-MM-yyyy"); + return response; + } + + } + // Format the dates if needed (e.g., for logging or passing in a specific format) + + String formattedFromDate = fromDate.format(formatter); + String formattedToDate = toDate.format(formatter); + + System.out.println("Received deptId after date: " + deptId); + System.out.println("Fetching data from " + formattedFromDate + " to " + formattedToDate); + + + Map datalist = newEntryService.fetchEmplyeeDetails(formattedFromDate, formattedToDate, deptId); + System.out.println("datalist="+datalist); + List> emps= newEntryService.getRegisteredEmps(deptId,file_category); + + // Format the dates for frontend in "yyyy-MM-dd" + DateTimeFormatter frontendFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String frontendFromDate = fromDate.format(frontendFormatter); + String frontendToDate = toDate.format(frontendFormatter); + response.put("fromDate", frontendFromDate); + response.put("toDate", frontendToDate); + + // Extract emp_no values from emps + Set empNos = emps.stream() + .map(emp -> (String) emp.get("emp_no")) + .collect(Collectors.toSet()); + + //System.out.println("rrrrrrrrrrrr"); + if (datalist.containsKey("list") && datalist.get("list") instanceof List) { + List list = (List) datalist.get("list"); + if (list.isEmpty()) { + System.out.println("inside>>>>>"); + response.put("status", "nodata"); + response.put("message", "No data available for the selected date range"); + } + else { + //System.out.println("ttttttttttttt"); + // Filter the datalist "list" to exclude matching EMPLOYEE_CODE values + List> filteredList = ((List>) datalist.get("list")).stream() + .filter(employee -> !empNos.contains(employee.get("EMPLOYEE_CODE"))) + .collect(Collectors.toList()); + + if (filteredList.isEmpty()) { + response.put("status", "nodata"); + response.put("message", "No data available for the selected date range"); + } else { + datalist.put("list", filteredList); + response.put("status", "success"); + response.put("details", datalist); + System.out.println("Received datalist:"+datalist); + System.out.println("Received filteredList:"+filteredList); + } + } + } + + + + return response; + } + + + + @GetMapping("/employeedetails") + public ResponseEntity> getEmployeedetailsbyCode( + @RequestParam String empCode) { + + Map datalistbycode = newEntryService.fetchEmplyeeDetailsbyCode(empCode); + return ResponseEntity.ok(datalistbycode); + } + + @PostMapping("/saveEmployeeDetails") + public ResponseEntity saveRetirementEmployeeDetails(@RequestBody Map requestData) { + try { + + // Call service method to save details + boolean isSaved = newEntryService.saveRetirementEmployeeDetails(requestData); + + if (isSaved) { + return ResponseEntity.ok("File moved to Audit successfully!"); + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + + + + + + //family pension + @PostMapping("/saveFamilyPensionDetails") + public ResponseEntity saveFamilyPensionDetails(@RequestBody Map requestData) { + try { + + + // Call service method to save details + boolean isSaved = newEntryService.saveFamilyPensionDetails(requestData); + + if (isSaved) { + return ResponseEntity.ok("File moved to Audit successfully!"); + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + //pendency api + + @PostMapping("/savePendecnyDetails") + public ResponseEntity savePendecnyDetails(@RequestBody Map requestData) { + try { + + // Call service method to save detailstypeOfRetirement + boolean isSaved = newEntryService.savePendencyDetails(requestData); + + if (isSaved) { + return ResponseEntity.ok("File moved to Audit successfully!"); + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + //gis saving api controller + @PostMapping("/saveEmployeeDetailsGis") + public ResponseEntity saveEmployeeDetailsingis(@RequestBody Map requestData) { + try { + // Extract data from the request body + + + // Call service method to save details + boolean isSaved = newEntryService.savenewEntryDetailsGis(requestData); + + if (isSaved) { + return ResponseEntity.ok("File moved to Pension successfully!"); + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + + + + //provsionalretirement saving api controller + @PostMapping("/saveEmployeeDetailsProvisionalretirement") + public ResponseEntity saveEmployeeDetailsProvisionalretirement(@RequestBody Map requestData) { + try { + // Extract data from the request body + + + // Call service method to save details + boolean isSaved = newEntryService.savenewEntryDetailsProvisionalretirement(requestData); + + if (isSaved) { + return ResponseEntity.ok("File moved to Pension successfully!"); + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + + + //cps saving api controller + @PostMapping("/saveEmployeeDetailsPensionScheme") + public ResponseEntity saveEmployeeDetailspensionscheme(@RequestBody Map requestData) { + try { + // Extract data from the request body + + + // Call service method to save details + boolean isSaved = newEntryService.savenewEntryDetailspensionscheme(requestData); + + if (isSaved) { + return ResponseEntity.ok("File Submitted successfully!"); + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + @GetMapping("/exists") + public ResponseEntity> checkEmployeeExists(@RequestParam String empCode) { + boolean exists = newEntryService.doesEmployeeExist(empCode); + Map response = new HashMap<>(); + response.put("exists", exists); + return ResponseEntity.ok(response); + } + + @GetMapping("/cpsexists") + public ResponseEntity> checkEmployeeExistsCps(@RequestParam String empCode) { + boolean exists = newEntryService.doesEmployeeExistgis(empCode); + Map response = new HashMap<>(); + response.put("exists", exists); + return ResponseEntity.ok(response); + } + + @GetMapping("/prexists") + public ResponseEntity> checkEmployeeExistsRpr(@RequestParam String empCode) { + boolean exists = newEntryService.doesEmployeeExistRPR(empCode); + Map response = new HashMap<>(); + response.put("exists", exists); + return ResponseEntity.ok(response); + } + + + + @GetMapping("/familypensionexists") + public ResponseEntity> checkEmployeeExistsfp(@RequestParam String empCode) { + boolean exists = newEntryService.doesEmployeeExistfp(empCode); + Map response = new HashMap<>(); + response.put("exists", exists); + return ResponseEntity.ok(response); + } + + +} \ No newline at end of file diff --git a/backend/pensioner/controller/PendencyAutoConversionApiController.java b/backend/pensioner/controller/PendencyAutoConversionApiController.java new file mode 100644 index 0000000..1e7a39f --- /dev/null +++ b/backend/pensioner/controller/PendencyAutoConversionApiController.java @@ -0,0 +1,199 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.time.LocalDate; +import java.time.Period; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptAuditService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.NewEntryService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.PendencyAutoConversionService; + +@RequestMapping("gcc/api/pensioner/autoconversion") +@RestController +public class PendencyAutoConversionApiController { + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + +// @Autowired +// private DeptAuditService deptAuditService; +// +// @Autowired +// public PendencyAutoConversionService pendencyAutoConversionService; +// +// @GetMapping("/updateintopendency") +// public boolean updateIfRetirementDateCrossed() { +// try { +// List> covertList = pendencyAutoConversionService.getConvertingTempIds(); +// System.out.println("covertList===" + covertList); +// +// if (!covertList.isEmpty()) { +// for (Map tempIdMap : covertList) { +// try { +// // Extract temp_id and convert it to a String +// Object tempIdRaw = tempIdMap.get("temp_id"); +// String tempId = tempIdRaw != null ? String.valueOf(tempIdRaw) : null; +// +// System.out.println("Converted tempId: " + tempId); +// +// // Ensure tempId is not null before processing +// if (tempId != null && !tempId.trim().isEmpty()) { +// +// String fileMovedBy=pendencyAutoConversionService.getFileMovedByTempId(tempId); +// +// if(fileMovedBy!=null) { +// boolean isProcessed = pendencyAutoConversionService.updateEntryDetails(tempId); +// +// if (isProcessed) { +// List> emp_details = deptAuditService.fetchEmployeeById(tempId); +// System.out.println("emp_details: " + emp_details); +// +// boolean updated = pendencyAutoConversionService.saveHistory(emp_details,fileMovedBy); +// +// if (!updated) { +// System.out.println("Failed to save history for tempId: " + tempId); +// continue; +// } +// } +// } +// else { +// System.out.println("fileMovedBy is NUll for temp_id="+tempId); +// } +// +// } +// } catch (Exception innerEx) { +// System.err.println("Error processing tempId: " + tempIdMap.get("temp_id")); +// innerEx.printStackTrace(); +// continue; // Continue processing the next record +// } +// } +// return true; +// } else { +// System.out.println("No records found for processing."); +// return false; +// } +// } catch (Exception e) { +// System.err.println("Exception in updateIfRetirementDateCrossed: " + e.getMessage()); +// e.printStackTrace(); +// return false; +// } +// } + + @Scheduled(cron = "*/40 * * * * ?") // Runs every 40 seconds + public void scheduledPendencyUpdate() { + System.out.println("Scheduled Task Started: Updating Pensioner Pending Duration 40"); + + Map result = GetRecordsUpdatePendencyDuration(); + + System.out.println("Scheduled Task Completed: " + result); + + // Fetch the pending pensioners count after the update + int pendingCount = getPendingPensionersCount(); + System.out.println("Total pending pensioners after update: " + pendingCount); + } + + public Map GetRecordsUpdatePendencyDuration() { + Map response = new HashMap<>(); + + // Lists to store tempIds based on update success or failure + List successfulUpdates = new ArrayList<>(); + List failedUpdates = new ArrayList<>(); + + String sqlQuery = "SELECT * FROM pensioner_details WHERE file_category=3 AND pending_duration='yes' AND file_status < 11"; + List> details = jdbcTemplate.queryForList(sqlQuery); + + for (Map tempIdMap : details) { + String tempId = tempIdMap.get("temp_id") != null ? String.valueOf(tempIdMap.get("temp_id")) : null; + String retirementDateStr = tempIdMap.get("retirement_date") != null ? String.valueOf(tempIdMap.get("retirement_date")) : null; + + if (retirementDateStr != null && !retirementDateStr.trim().isEmpty()) { + try { + // Convert retirement_date to LocalDate + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate startDate = LocalDate.parse(retirementDateStr, formatter); + LocalDate endDate = LocalDate.now(); // Current date + + System.out.printf("Processing Temp ID: %s | Start Date: %s | End Date: %s%n", tempId, startDate, endDate); + + // Calculate duration + String updateDuration = calculatePendingDuration(startDate, endDate); + System.out.println("Updated Duration: " + updateDuration); + + // Update the record in the database + boolean isUpdated = updatePendingDuration(updateDuration, tempId); + + // Add tempId to the respective list + if (isUpdated) { + successfulUpdates.add(tempId); + } else { + failedUpdates.add(tempId); + } + + } catch (Exception e) { + System.err.println("Error parsing retirement_date for tempId " + tempId + ": " + e.getMessage()); + } + } else { + System.out.println("Skipping: Retirement date is null or empty for tempId: " + tempId); + } + } + + response.put("status", "Success"); + response.put("message", "Pendency duration updated"); + response.put("total_records_processed", details.size()); + response.put("successful_updates_count", successfulUpdates.size()); + response.put("failed_updates_count", failedUpdates.size()); + response.put("successful_updates", successfulUpdates); + response.put("failed_updates", failedUpdates); + + return response; + } + + public String calculatePendingDuration(LocalDate startDate, LocalDate endDate) { + Period period = Period.between(startDate, endDate); + + int years = period.getYears(); + int months = period.getMonths(); + int days = period.getDays(); + + return (years > 0 ? years + " year " : "") + + (months > 0 ? months + " month " : "") + + (days > 0 ? days + " day" : ""); + } + + public boolean updatePendingDuration(String updateDuration, String tempId) { + String sqlQuery = "UPDATE pensioner_details SET reason_for_pending=? WHERE temp_id=?"; + int rowsUpdated = jdbcTemplate.update(sqlQuery, updateDuration, tempId); + System.out.println("Temp ID: " + tempId + " | Rows Updated: " + rowsUpdated); + return rowsUpdated > 0; + } + + // New method to get the count of pending pensioners + public int getPendingPensionersCount() { + String sqlQuery = "SELECT COUNT(*) FROM pensioner_details WHERE file_category=3 AND pending_duration='yes' AND file_status < 11"; + Integer count = jdbcTemplate.queryForObject(sqlQuery, Integer.class); + return count != null ? count : 0; + } + + + +} diff --git a/backend/pensioner/controller/PensionAuditApiController.java b/backend/pensioner/controller/PensionAuditApiController.java new file mode 100644 index 0000000..bdc6b68 --- /dev/null +++ b/backend/pensioner/controller/PensionAuditApiController.java @@ -0,0 +1,134 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptAuditService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.PensionAuditService; + +@RequestMapping("gcc/api/pensioner/audit") +@RestController +public class PensionAuditApiController { + + @Autowired + private DeptAuditService deptAuditService; + + @Autowired + private PensionAuditService pensionAuditService; + + @PostMapping("/updateEmployeeDetails") + public ResponseEntity updateEmployeeDetails(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + + + boolean isSaved = pensionAuditService.updateEntryDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=pensionAuditService.savehistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("Audit Certificate Received successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + + + @PostMapping("/updateFamilyPensionDetails") + public ResponseEntity updateFamilyPensionDetails(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + + + boolean isSaved = pensionAuditService.updateEntryDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=pensionAuditService.saveFamilyPensionHistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("Audit Certificate Received successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + + + //pendency + @PostMapping("/updatePendencyDetails") + public ResponseEntity updatePendencyDetails(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + + + boolean isSaved = pensionAuditService.updateEntryDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=pensionAuditService.savePendencyHistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("Audit Certificate Received successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + +} diff --git a/backend/pensioner/controller/PensionPartiallyCompApiController.java b/backend/pensioner/controller/PensionPartiallyCompApiController.java new file mode 100644 index 0000000..e8703e5 --- /dev/null +++ b/backend/pensioner/controller/PensionPartiallyCompApiController.java @@ -0,0 +1,110 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptAuditService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptPartiallyCompService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.PensionPartiallyCompService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.PensionReceivedService; + +@RequestMapping("gcc/api/pensioner/partial") +@RestController +public class PensionPartiallyCompApiController { + + @Autowired + public DeptPartiallyCompService deptPartiallyCompleteService; + + @Autowired + public DeptAuditService deptAuditService; + + @Autowired + public PensionReceivedService pensionReceivedService; + + @Autowired + public PensionPartiallyCompService pensionPartiallyCompService; + + @PostMapping("/updateEmployeeDetails") + public ResponseEntity updateEmployeeDetails(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + int fs1=0; + + boolean isSaved = pensionPartiallyCompService.updateEntryCompletedDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchPartialCompleted(tempId); + System.out.println("emp_details:==:"+emp_details); + + + List> zone_benefits=pensionReceivedService.fetchZonebenefitsById(tempId); + System.out.println("zone_benefits:==:"+zone_benefits); + + List> pension_benefits=pensionReceivedService.fetchPensionbenefitsById(tempId); + System.out.println("pension_benefits:==:"+pension_benefits); + + + boolean updated=pensionPartiallyCompService.saveHistory(emp_details,zone_benefits,pension_benefits,filemovedby); + + if (!emp_details.isEmpty()) { // Ensure list is not empty + Map empDetailMap = emp_details.get(0); // Get first map from the list + + // Ensure the key exists in the map + if (empDetailMap.containsKey("file_status")) { + Object fileStatusObj = empDetailMap.get("file_status"); + + if (fileStatusObj != null) { + String fs = fileStatusObj.toString(); // Convert to String safely + fs1 = Integer.parseInt(fs); // Convert to integer if needed + System.out.println("file_status: " + fs1); + } else { + System.out.println("file_status is null"); + } + } else { + System.out.println("Key 'file_status' not found in emp_details"); + } + } else { + System.out.println("emp_details list is empty"); + } + + + if(updated) + { + if(fs1==11 && fs1!=0) + { + return ResponseEntity.ok("File Completed successfully!"); + } + else if(fs1==10 && fs1!=0){ + return ResponseEntity.ok("File Partially Completed!"); + } + else { + return ResponseEntity.ok("File Status is 0!"); + } + + + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + +} diff --git a/backend/pensioner/controller/PensionReceivedApiController.java b/backend/pensioner/controller/PensionReceivedApiController.java new file mode 100644 index 0000000..c32586e --- /dev/null +++ b/backend/pensioner/controller/PensionReceivedApiController.java @@ -0,0 +1,94 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptAuditService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.PensionReceivedService; + +@RequestMapping("gcc/api/department/received") +@RestController +public class PensionReceivedApiController { + + @Autowired + private DeptAuditService deptAuditService; + + @Autowired + private PensionReceivedService pensionReceivedService; + + @PostMapping("/updateEmployeeDetails") + public ResponseEntity updateEmployeeDetails(@RequestBody Map requestData) { + try { + // Call service method to save + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + boolean isSaved = pensionReceivedService.updateEntryDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + List> zone_benefits=pensionReceivedService.fetchZonebenefitsById(tempId); + System.out.println("zone_benefits:==:"+zone_benefits); + + boolean updated=pensionReceivedService.saveHistory(emp_details,zone_benefits,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File moved to Pension successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + //gis + @PostMapping("/updateEmployeeDetailsgis") + public ResponseEntity updateEmployeeDetailsGis(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + boolean isSaved = pensionReceivedService.updateEntryGisDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=pensionReceivedService.savehistoryGis(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File Saved successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } +} diff --git a/backend/pensioner/controller/PensionerMainController.java b/backend/pensioner/controller/PensionerMainController.java new file mode 100644 index 0000000..2b03c34 --- /dev/null +++ b/backend/pensioner/controller/PensionerMainController.java @@ -0,0 +1,624 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.CompletedService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.DepartmentForwardService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.DepartmentReceivedService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptAuditService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.NewEntryService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.PensionAuditService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.PensionPartiallyCompService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.PensionReceivedService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.ReceivedDeptProvisionalService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.ReportApiService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.ReturnFromAuditService; +import in.gov.chennaicorporation.gccoffice.service.LoginUserInfo; + +@Controller +@RequestMapping("/gcc/pensioner") +public class PensionerMainController { + + + @Autowired + private NewEntryService newEntryService; + + @Autowired + private DeptAuditService deptAuditService; + + @Autowired + private ReturnFromAuditService returnFromAuditService; + + @Autowired + private PensionAuditService pensionAuditService; + + @Autowired + private DepartmentForwardService departmentForwardService; + + @Autowired + private PensionReceivedService pensionReceivedService; + + @Autowired + private DepartmentReceivedService departmentReceivedService; + + @Autowired + private ReceivedDeptProvisionalService receivedDeptProvisionalService; + + @Autowired + private CompletedService completedService; + + @Autowired + private PensionPartiallyCompService pensionPartiallyCompService; + + @Autowired + private ReportApiService reportApiService; + + + //////////////////////////////Pensioner pages//////////////////////////////// + + //yogi + @GetMapping("/audit/retirement") + public String pensionerauditretirment(Model model) { + + int file_cat= newEntryService.getRetirementFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>auditlist= pensionAuditService.fetchDetailsForAudit(file_cat); + + System.out.println("auditlist===="+auditlist); + model.addAttribute("auditlist", auditlist); + + return "modules/pensioner/pensioner/audit/retirement"; + } + + + + @GetMapping("/audit/familypension") + public String pensionerfamilypension(Model model) { + + int file_cat= newEntryService.getFamilyPensionFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + List>auditlist= pensionAuditService.fetchDetailsForAudit(file_cat); + + System.out.println("auditlist===="+auditlist); + model.addAttribute("auditlist", auditlist); + + return "modules/pensioner/pensioner/audit/familypension"; + } + + + @GetMapping("/audit/pendency") + public String pensionerpendency(Model model) { + + int file_cat= newEntryService.getPendencyFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + + + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + + + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + List>auditlist= pensionAuditService.fetchDetailsForAudit(file_cat); + + System.out.println("auditlist===="+auditlist); + model.addAttribute("auditlist", auditlist); + + return "modules/pensioner/pensioner/audit/pendency"; + } + + + ///////////////////COMPLETED LIST PAGES////////////// + + @GetMapping("/completed/retirement") + public String pensionerretirement(Model model) { + int file_cat= newEntryService.getRetirementFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>provisionallist= completedService.fetchDetailsCompletedRetirementPensionside(file_cat); + + System.out.println("provisionallist===="+provisionallist); + model.addAttribute("provisionallist", provisionallist); + + return "modules/pensioner/pensioner/completed/retirement"; + } + + + @GetMapping("/completed/familypension") + public String pensionercompleted(Model model) { + int file_cat= newEntryService.getFamilyPensionFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>familypensioncompletedlist= completedService.fetchDetailsCompletedFamilyPensionPensionSide(file_cat); + + System.out.println("provisionallist===="+familypensioncompletedlist); + model.addAttribute("provisionallist", familypensioncompletedlist); + + return "modules/pensioner/pensioner/completed/familypension"; + } + + + + @GetMapping("/completed/pendency") + public String pensionercompletedpendency(Model model) { + int file_cat= newEntryService.getPendencyFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>pendencycompletedlist= completedService.fetchDetailsCompletedPendencyPensionSide(file_cat); + + System.out.println("provisionallist===="+pendencycompletedlist); + model.addAttribute("provisionallist", pendencycompletedlist); + + return "modules/pensioner/pensioner/completed/pendency"; + } + + + @GetMapping("/completed/gis") + public String pensionercompletedgis(Model model) { + int file_cat= newEntryService.getGISFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>gislist= completedService.fetchDetailsForrecivedGiscompletedPensionside(file_cat); + + System.out.println("auditlist===="+gislist); + model.addAttribute("auditlist", gislist); + + return "modules/pensioner/pensioner/completed/gis"; + } + + @GetMapping("/completed/provisionalretirement") + public String pensionercompletedretirement(Model model) { + int file_cat= newEntryService.getPRFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>provisionallist= completedService.fetchDetailsProvisionalDepartmentPensionside(file_cat); + + System.out.println("provisionallist===="+provisionallist); + model.addAttribute("provisionallist", provisionallist); + + + return "modules/pensioner/pensioner/completed/provisionalretirement"; + } + + + + @GetMapping("/completed/contributorypensionscheme") + public String pensionercompletedcontributory( + Model model) { + int file_cat= newEntryService.getCPSFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>completedCPSList= completedService.getCPSListPensionside(file_cat); + + System.out.println("provisionallist===="+completedCPSList); + model.addAttribute("provisionallist", completedCPSList); + // Add the list to the model + model.addAttribute("completedCPSList", completedCPSList); + + return "modules/pensioner/pensioner/completed/contributorypensionscheme"; + } + + + + + //Ajith + + @GetMapping("/forward/retirement") + public String pensioneretirement(Model model) { + + int file_cat= newEntryService.getRetirementFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>forwardlist= departmentForwardService.fetchDepatmentForwardEmpfiles(file_cat); + + System.out.println("forwardlist===="+forwardlist); + model.addAttribute("forwardlist", forwardlist); + + return "modules/pensioner/pensioner/forward/retirement"; + } + + @GetMapping("/forward/familypension") + public String pensionfamily(Model model) { + int file_cat= newEntryService.getFamilyPensionFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>forwardlist= departmentForwardService.fetchDepatmentForwardEmpfiles(file_cat); + + System.out.println("forwardlist===="+forwardlist); + model.addAttribute("forwardlist", forwardlist); + + return "modules/pensioner/pensioner/forward/familypension"; + } + + + @GetMapping("/forward/pendency") + public String pensionerforward(Model model) { + int file_cat= newEntryService.getPendencyFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>forwardlist= departmentForwardService.fetchDepatmentForwardEmpfiles(file_cat); + + System.out.println("forwardlist===="+forwardlist); + model.addAttribute("forwardlist", forwardlist); + + return "modules/pensioner/pensioner/forward/pendency"; + } + + + + + //dizho + + @GetMapping("/received/retirement") + public String pensionerreceivedretirement(Model model) { + int file_cat= newEntryService.getRetirementFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>forwardlist= departmentReceivedService.fetchPensionReceivedEmpfiles(file_cat); + + System.out.println("forwardlist===="+forwardlist); + model.addAttribute("forwardlist", forwardlist); + + return "modules/pensioner/pensioner/received/retirement"; + } + + @GetMapping("/received/familypension") + public String pensionerreceivedfamilypension(Model model) { + int file_cat= newEntryService.getFamilyPensionFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>forwardlist= departmentReceivedService.fetchPensionReceivedEmpfiles(file_cat); + + System.out.println("forwardlist===="+forwardlist); + model.addAttribute("forwardlist", forwardlist); + + return "modules/pensioner/pensioner/received/familypension"; + } + + + @GetMapping("/received/pendency") + public String pensionerreceived(Model model) { + int file_cat= newEntryService.getPendencyFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>forwardlist= departmentReceivedService.fetchPensionReceivedEmpfiles(file_cat); + + System.out.println("forwardlist===="+forwardlist); + model.addAttribute("forwardlist", forwardlist); + + return "modules/pensioner/pensioner/received/pendency"; + } + + @GetMapping("/received/gis") + public String pensionerreceivedgis(Model model) { + int file_cat= newEntryService.getGISFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>gislist= pensionAuditService.fetchDetailsForrecivedGis(file_cat); + + System.out.println("auditlist===="+gislist); + model.addAttribute("auditlist", gislist); + + return "modules/pensioner/pensioner/received/gis"; + } + + + + + @GetMapping("/received/provisionalretirement") + public String pensionerprovisionalretirement(Model model) { + + int file_cat= newEntryService.getPRFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>provisionallist= receivedDeptProvisionalService.fetchDetailsProvisionalPension(file_cat); + + System.out.println("provisionallist===="+provisionallist); + model.addAttribute("provisionallist", provisionallist); + + return "modules/pensioner/pensioner/received/provisionalretirement"; + } + + + //sanjay + + @GetMapping("/partial/pendency") + public String pensionerpartial(Model model) { + int file_cat= newEntryService.getPendencyFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>auditlist= pensionPartiallyCompService.fetchPensionPartialEmpfiles(file_cat); + + System.out.println("auditlist===="+auditlist); + model.addAttribute("auditlist", auditlist); + + return "modules/pensioner/pensioner/partial/pendency"; + } + + @GetMapping("/partial/retirement") + public String pensionerpartialretirement(Model model) { + int file_cat= newEntryService.getRetirementFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>auditlist= pensionPartiallyCompService.fetchPensionPartialEmpfiles(file_cat); + + System.out.println("auditlist===="+auditlist); + model.addAttribute("auditlist", auditlist); + + + + + return "modules/pensioner/pensioner/partial/retirement"; + } + + @GetMapping("/partial/familypension") + public String pensionerpartialfamily(Model model) { + int file_cat= newEntryService.getFamilyPensionFileCategoryId(); + model.addAttribute("filecategory", file_cat); + + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + Integer deptId = newEntryService.getloginuserDeptId(userId); + String deptname=newEntryService.getDeptNameById(deptId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + System.out.println("deptId:"+ deptId); + model.addAttribute("deptId", deptId); + model.addAttribute("deptname", deptname); + model.addAttribute("userId", userId); + + List>auditlist= pensionPartiallyCompService.fetchPensionPartialEmpfiles(file_cat); + + System.out.println("auditlist===="+auditlist); + model.addAttribute("auditlist", auditlist); + + return "modules/pensioner/pensioner/partial/familypension"; + } + + @GetMapping("/reports") + public String report(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + Integer deptId = newEntryService.getloginuserDeptId(userId); + model.addAttribute("deptId", deptId); + + return "modules/pensioner/pensioner/reports"; + } + + + + @GetMapping("/dashboard") + public String pensionerdashboardpage(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + model.addAttribute("LoginUserId",LoginUserId); + String UserRole = LoginUserInfo.getUserRole(); + + return "modules/pensioner/pensioner/dashboard"; + } + +} diff --git a/backend/pensioner/controller/ReceivedDeptProvisionalApiController.java b/backend/pensioner/controller/ReceivedDeptProvisionalApiController.java new file mode 100644 index 0000000..0e5ae17 --- /dev/null +++ b/backend/pensioner/controller/ReceivedDeptProvisionalApiController.java @@ -0,0 +1,145 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptAuditService; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.ReceivedDeptProvisionalService; + +@RestController +@RequestMapping("gcc/api/pensioner/received/provisional") +public class ReceivedDeptProvisionalApiController { + + @Autowired + private ReceivedDeptProvisionalService receivedDeptProvisionalService; + + @Autowired + private DeptAuditService deptAuditService; + + + @Autowired + public ReceivedDeptProvisionalApiController(ReceivedDeptProvisionalService receivedDeptProvisionalService) { + this.receivedDeptProvisionalService = receivedDeptProvisionalService; + } + + //sent to completed list + @PostMapping("/updateEmployeeDetailsCompleted") + public ResponseEntity updateEmployeeDetailsCompleted(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + + + boolean isSaved = receivedDeptProvisionalService.updateEntryDetailsCompleted(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=receivedDeptProvisionalService.savehistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File Completed successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + + + + // returned from pension to department + @PostMapping("/updateEmployeeDetailsReturn") + public ResponseEntity updateEmployeeDetailsReturn(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + + + boolean isSaved = receivedDeptProvisionalService.updateEntryDetailsReturntoDepartment(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=receivedDeptProvisionalService.savehistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File moved to Department successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + + //sent again to pension from department + @PostMapping("/updateEmployeeDetailsSentToPension") + public ResponseEntity updateEntryDetailsSenttoPension(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + + + boolean isSaved = receivedDeptProvisionalService.updateEntryDetailsSenttoPension(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=receivedDeptProvisionalService.savehistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File moved to Pension successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + + +} diff --git a/backend/pensioner/controller/ReportApiController.java b/backend/pensioner/controller/ReportApiController.java new file mode 100644 index 0000000..cce7896 --- /dev/null +++ b/backend/pensioner/controller/ReportApiController.java @@ -0,0 +1,140 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import org.hibernate.internal.build.AllowSysOut; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.ReportApiService; + +@Controller +public class ReportApiController { + @Autowired + private ReportApiService reportApiService; + + + + //pensioner and report side common dropdown + @GetMapping("/getFileCategories") + @ResponseBody + public ResponseEntity getFileCategories() { + try { + List> categories = reportApiService.getFileCategories(); + return ResponseEntity.ok(categories); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(Collections.singletonMap("error", "Failed to fetch categories")); + } + } + + + @GetMapping("/getReportData") + @ResponseBody + public List> getReportData(@RequestParam String startDate, + @RequestParam String endDate, + @RequestParam String deptId + ) { + return reportApiService.getReportData(startDate, endDate, deptId); + } + + + + + @GetMapping("/getReportDetails") + @ResponseBody + public List> getReportDetails(@RequestParam String startDate, + @RequestParam String endDate, + @RequestParam Integer deptId, + @RequestParam Integer fileCatId, + @RequestParam(required = false) List fileStatus + ) { + System.out.println("startdate>>>>>"+startDate); + System.out.println("endDate>>>>>"+endDate); + System.out.println("deptId>>>>>"+deptId); + System.out.println("fileCatId>>>>>"+fileCatId); + System.out.println("fileStatus>>>>>"+fileStatus); + + + return reportApiService.getReportDetails(startDate, endDate, deptId,fileCatId,fileStatus); + + } + + + + //pensioner side report dropdown + + @GetMapping("/getdepartment") + @ResponseBody + public ResponseEntity getdepartment() { + try { + List> categories = reportApiService.getdepartment(); + return ResponseEntity.ok(categories); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(Collections.singletonMap("error", "Failed to fetch categories")); + } + } + + @GetMapping("/getstatus") + @ResponseBody + public ResponseEntity getstatus() { + try { + List> categories = reportApiService.getstatus(); + return ResponseEntity.ok(categories); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(Collections.singletonMap("error", "Failed to fetch categories")); + } + } + + + + @GetMapping("/getReportDatapension") + @ResponseBody + public List> getReportDatapension(@RequestParam String startDate, + @RequestParam String endDate, + @RequestParam(required = true) String fileCategoryId) + { + System.out.println("fileCategoryId ========>"+fileCategoryId); + return reportApiService.getReportDatapension(startDate, endDate, fileCategoryId); + } + + + + + @GetMapping("/getReportDetailspension") + @ResponseBody + public List> getReportDetailspension(@RequestParam String startDate, + @RequestParam String endDate, + @RequestParam List deptIds, + @RequestParam Integer fileCatId, + @RequestParam(required = false) List fileStatus) { + + System.out.println("startdate>>>>>"+startDate); + System.out.println("endDate>>>>>"+endDate); + System.out.println("deptIds: " + deptIds); + System.out.println("fileCatId>>>>>"+fileCatId); + System.out.println("fileStatus>>>>>"+fileStatus); + + return reportApiService.getReportDetailspension(startDate, endDate, deptIds, fileCatId, fileStatus); + } + + @GetMapping("/getPensionerDetails") + @ResponseBody + public List> getDepartmentpending(@RequestParam int file_category ) { + return reportApiService.getDepartmentpending(file_category); + } + + + + + +} diff --git a/backend/pensioner/controller/ReturnFromAuditApiController.java b/backend/pensioner/controller/ReturnFromAuditApiController.java new file mode 100644 index 0000000..795187f --- /dev/null +++ b/backend/pensioner/controller/ReturnFromAuditApiController.java @@ -0,0 +1,129 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.controller; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import in.gov.chennaicorporation.gccoffice.pensioner.service.DeptAuditService; +import in.gov.chennaicorporation.gccoffice.pensioner.service.ReturnFromAuditService; + +@RequestMapping("gcc/api/department/return") +@RestController +public class ReturnFromAuditApiController { + + @Autowired + private ReturnFromAuditService returnFromAuditService; + + @Autowired + private DeptAuditService deptAuditService; + + @PostMapping("/updateEmployeeDetails") + public ResponseEntity updateEmployeeDetails(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + boolean isSaved = returnFromAuditService.updateEntryDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=returnFromAuditService.savehistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File sent to Audit successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + + @PostMapping("/updateReturnFamilyPension") + public ResponseEntity updateReturnFamilyPension(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + + + boolean isSaved = returnFromAuditService.updateEntryDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=returnFromAuditService.saveFamilyPensionReturnHistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File sent to Audit successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + + + @PostMapping("/updateReturnPendency") + public ResponseEntity updatePendencyPension(@RequestBody Map requestData) { + try { + + // Call service method to save + String tempId = (String) requestData.get("tempId"); + String filemovedby =(String)requestData.get("filemovedby"); + + + + boolean isSaved = returnFromAuditService.updateEntryDetails(requestData); + + if (isSaved) { + List> emp_details=deptAuditService.fetchEmployeeById(tempId); + System.out.println("emp_details:==:"+emp_details); + boolean updated=returnFromAuditService.savePendencyHistory(emp_details,filemovedby); + + if(updated) + { + return ResponseEntity.ok("File sent Audit successfully!"); + } + else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details in history."); + } + + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save details."); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving details."); + } + } + +} diff --git a/backend/pensioner/scheduler/PendencyAutoConversionScheduler.java b/backend/pensioner/scheduler/PendencyAutoConversionScheduler.java new file mode 100644 index 0000000..d7114f2 --- /dev/null +++ b/backend/pensioner/scheduler/PendencyAutoConversionScheduler.java @@ -0,0 +1,188 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.scheduler; + +import java.time.LocalDate; +import java.time.Period; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import in.gov.chennaicorporation.gccoffice.pensioner.service.PendencyAutoConversionService; + +@Component +public class PendencyAutoConversionScheduler { + + + @Autowired + private PendencyAutoConversionService pendencyAutoConversionService; + + /** + * Scheduled method that runs every 60 seconds to process auto-conversion tasks. + */ + @Scheduled(cron = "*/20 * * * * ?") // Runs every 60 seconds + public void executeAutoConversion() { + try { + System.out.println(" Running scheduled auto-conversion task..."); + + // Step 1: Fetch temp IDs that need processing + List> tempIds = pendencyAutoConversionService.getConvertingTempIds(); + + if (tempIds == null || tempIds.isEmpty()) { + System.out.println(" No records found for auto-conversion."); + return; + } + + System.out.println(" Found " + tempIds.size() + " records for processing."); + + // Step 2: Process each tempId + for (Map tempIdMap : tempIds) { + String tempId = tempIdMap.get("temp_id") != null ? tempIdMap.get("temp_id").toString() : null; + + if (tempId == null || tempId.trim().isEmpty()) { + System.out.println(" Skipping empty temp_id."); + continue; + } + + System.out.println(" Processing tempId: " + tempId); + + // Step 3: Call service method to process auto-conversion + boolean success = pendencyAutoConversionService.processAutoConversionForTempId(tempId); + + if (success) { + System.out.println(" Auto-conversion completed for tempId: " + tempId); + } else { + System.out.println(" Auto-conversion failed for tempId: " + tempId); + } + } + } catch (Exception e) { + System.err.println(" Error during auto-conversion task: " + e.getMessage()); + e.printStackTrace(); + } + } + + + @Scheduled(cron = "*/40 * * * * ?") // Runs every 40 seconds + public void scheduledPendencyUpdate() { + System.out.println("Scheduled Task Started: Updating Pensioner Pending Duration 30"); + + Map result = GetRecordsUpdatePendencyDuration(); + + System.out.println("Scheduled Task Completed: " + result); + + // Fetch the pending pensioners count after the update + int pendingCount = pendencyAutoConversionService.getPendingPensionersCount(); + System.out.println("Total pending pensioners after update: " + pendingCount); + } + + public Map GetRecordsUpdatePendencyDuration() { + Map response = new HashMap<>(); + + // Lists to store tempIds based on update success or failure + List successfulUpdates = new ArrayList<>(); + List failedUpdates = new ArrayList<>(); + + List> details = pendencyAutoConversionService.getPendencyUpdatingDuration(); + + if(!details.isEmpty()) { + + for (Map tempIdMap : details) { + String tempId = tempIdMap.get("temp_id") != null ? String.valueOf(tempIdMap.get("temp_id")) : null; + String retirementDateStr = tempIdMap.get("retirement_date") != null ? String.valueOf(tempIdMap.get("retirement_date")) : null; + String serviceDeathDate = tempIdMap.get("service_death") != null ? String.valueOf(tempIdMap.get("service_death")) : null; + // Corrected parsing for file_category + int fileCat = tempIdMap.get("file_category") != null ? Integer.parseInt(tempIdMap.get("file_category").toString()) : null; + + if(fileCat==3) { + + if (retirementDateStr != null && !retirementDateStr.trim().isEmpty()) { + try { + // Convert retirement_date to LocalDate + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate startDate = LocalDate.parse(retirementDateStr, formatter); + LocalDate endDate = LocalDate.now(); // Current date + + System.out.printf("Processing Temp ID: %s | Start Date: %s | End Date: %s%n", tempId, startDate, endDate); + + // Calculate duration + String updateDuration = pendencyAutoConversionService.calculatePendingDuration(startDate, endDate); + System.out.println("Updated Duration: " + updateDuration); + + // Update the record in the database + boolean isUpdated = pendencyAutoConversionService.updatePendingDuration(updateDuration, tempId); + + // Add tempId to the respective list + if (isUpdated) { + successfulUpdates.add(tempId); + } else { + failedUpdates.add(tempId); + } + + } catch (Exception e) { + System.err.println("Error parsing retirement_date for tempId " + tempId + ": " + e.getMessage()); + } + } else { + System.out.println("Skipping: Retirement date is null or empty for tempId: " + tempId); + } + } + + + if(fileCat==2) { + + if (serviceDeathDate != null && !serviceDeathDate.trim().isEmpty()) { + try { + // Convert retirement_date to LocalDate + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate startDate = LocalDate.parse(serviceDeathDate, formatter); + LocalDate endDate = LocalDate.now(); // Current date + + System.out.printf("Processing Temp ID: %s | Start Date: %s | End Date: %s%n", tempId, startDate, endDate); + + // Calculate duration + String updateDuration = pendencyAutoConversionService.calculatePendingDuration(startDate, endDate); + System.out.println("Updated Duration: " + updateDuration); + + // Update the record in the database + boolean isUpdated = pendencyAutoConversionService.updatePendingDuration(updateDuration, tempId); + + // Add tempId to the respective list + if (isUpdated) { + successfulUpdates.add(tempId); + } else { + failedUpdates.add(tempId); + } + + } catch (Exception e) { + System.err.println("Error parsing service death date for tempId " + tempId + ": " + e.getMessage()); + } + } else { + System.out.println("Skipping: service death date is null or empty for tempId: " + tempId); + } + } + + + + + } + response.put("status", "Success"); + response.put("message", "Pendency duration updated"); + response.put("total_records_processed", details.size()); + response.put("successful_updates_count", successfulUpdates.size()); + response.put("failed_updates_count", failedUpdates.size()); + response.put("successful_updates", successfulUpdates); + response.put("failed_updates", failedUpdates); + + } + + response.put("status", "No Data"); + response.put("message", "No Updation in Pending Duration"); + + return response; + } + + +} diff --git a/backend/pensioner/service/CompletedService.java b/backend/pensioner/service/CompletedService.java new file mode 100644 index 0000000..b83cb2f --- /dev/null +++ b/backend/pensioner/service/CompletedService.java @@ -0,0 +1,177 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.util.ArrayList; + +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import in.gov.chennaicorporation.gccoffice.configuration.AppConfig; + +@Service +public class CompletedService { + + @Autowired + private JdbcTemplate jdbcTemplate; + + private RestTemplate restTemplate; + private ObjectMapper objectMapper; + @Autowired + private AppConfig appconfig; + + public CompletedService(RestTemplate restTemplate, ObjectMapper objectMapper) { + this.restTemplate = restTemplate; + this.objectMapper = objectMapper; + } + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + public List> getCPSList(Integer file_cat,Integer deptId) { + String query = "SELECT * FROM cps_pensioner_details where file_category = ? and dept_id=? and file_status=11 "; + + try { + return jdbcTemplate.queryForList(query,file_cat,deptId); + } catch (Exception e) { + e.printStackTrace(); + return new ArrayList<>(); + } + } + + ///////////////////CPS completed list method/////////// + + public List> getCPSListPensionside(Integer file_cat) { + String query = "SELECT * FROM cps_pensioner_details where file_category = ? and file_status=11 "; + + try { + return jdbcTemplate.queryForList(query,file_cat); + } catch (Exception e) { + e.printStackTrace(); + return new ArrayList<>(); + } + } + + + public List> getCPSListByEmpNo(String empNo) { + String query = "SELECT * FROM cps_pensioner_details WHERE emp_no = ?"; + + try { + return jdbcTemplate.queryForList(query, empNo); + } catch (Exception e) { + e.printStackTrace(); + return new ArrayList<>(); + } + } + + + //////////////////////////// + + + + + ////////Retirement completed list method/////////////////// + public List> fetchDetailsCompletedRetirement(Integer file_cat,Integer deptId) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_category=? AND dept_id=? and file_status=11 AND is_closed=0"; + return jdbcTemplate.queryForList(query,file_cat,deptId); + } + + + + public List> fetchDetailsCompletedRetirementPensionside(Integer file_cat) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_category=? and file_status=11 AND is_closed=0"; + return jdbcTemplate.queryForList(query,file_cat); + } + ///////////////////////// + + + + ///////////////////Family pension completed list method////////////// + public List> fetchDetailsCompletedFamilyPension(Integer file_cat,Integer deptId) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_category=? AND dept_id=? and file_status=11"; + return jdbcTemplate.queryForList(query,file_cat,deptId); + } + + + + public List> fetchDetailsCompletedFamilyPensionPensionSide(Integer file_cat) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_category=? and file_status=11"; + return jdbcTemplate.queryForList(query,file_cat); + } + ////////////////////////// + + + + ///////////////Pendency completed method//////////////// + public List> fetchDetailsCompletedPendency(Integer file_cat,Integer deptId) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_category=? AND dept_id=? and file_status=11"; + return jdbcTemplate.queryForList(query,file_cat,deptId); + } + + + + public List> fetchDetailsCompletedPendencyPensionSide(Integer file_cat) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_category=? and file_status=11"; + return jdbcTemplate.queryForList(query,file_cat); + } + ////////////////////// + + + + ////////////Gis completed list method + + public List> fetchDetailsForrecivedGiscompleted(Integer file_cat,Integer deptId) { + String query = "SELECT * FROM pensioner_details WHERE file_category = ? AND dept_id=? AND file_status = 11"; + + return jdbcTemplate.queryForList(query,file_cat,deptId); + } + + + public List> fetchDetailsForrecivedGiscompletedPensionside(Integer file_cat) { + String query = "SELECT * FROM pensioner_details WHERE file_category = ? AND file_status = 11"; + + return jdbcTemplate.queryForList(query,file_cat); + } + + + + ////////////////Provisional retirement completed list method + + public List> fetchDetailsProvisionalDepartmentCompleted(Integer file_cat,Integer deptId) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_category=? AND dept_id=? and file_status=11"; + return jdbcTemplate.queryForList(query,file_cat,deptId); + } + + + + public List> fetchDetailsProvisionalDepartmentPensionside(Integer file_cat) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_category=? and file_status=11"; + return jdbcTemplate.queryForList(query,file_cat); + } +} diff --git a/backend/pensioner/service/DashboardApiService.java b/backend/pensioner/service/DashboardApiService.java new file mode 100644 index 0000000..ffd9c1c --- /dev/null +++ b/backend/pensioner/service/DashboardApiService.java @@ -0,0 +1,392 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + + +@Service +public class DashboardApiService { + @Autowired + private JdbcTemplate jdbcTemplate; + + + public List> getTempEmpDetails(String tempId) { + System.out.println("service"); + System.out.println(tempId); + + String sql = "SELECT MH.file_moved_date,sm.file_status,MH.remarks FROM gcc_pensioner.file_movement_history MH" + + " inner join gcc_pensioner.file_status_master sm on MH.file_status= sm.id where temp_id=? order by MH.file_moved_date desc "; + + return jdbcTemplate.queryForList(sql, tempId); + } + + + + public List> getEmpDetails(String empNo) { + System.out.println("service"); + System.out.println(empNo); + + String sql = "SELECT dm.dept_name,fm.file_name, sm.file_status ,pd.temp_id " + + "FROM gcc_pensioner.pensioner_details pd " + + "INNER JOIN gcc_pensioner.file_category_master fm ON pd.file_category = fm.id " + + "INNER JOIN gcc_pensioner.file_status_master sm ON sm.id = pd.file_status " + + "inner join gcc_pensioner.department_master dm on dm.id=pd.dept_id "+ + + "WHERE pd.emp_no = ? " + + + "UNION " + + "SELECT dm.dept_name,fm.file_name, sm.file_status ,cps.temp_id " + + "FROM gcc_pensioner.cps_pensioner_details cps " + + "INNER JOIN gcc_pensioner.file_category_master fm ON cps.file_category = fm.id " + + "INNER JOIN gcc_pensioner.file_status_master sm ON sm.id = cps.file_status " + + "inner join gcc_pensioner.department_master dm on dm.id=cps.dept_id "+ + + "WHERE cps.emp_no = ?"; + + return jdbcTemplate.queryForList(sql, empNo, empNo); + } + + public List> getPensionEmpDetails(String empNo) { + System.out.println("service"); + System.out.println(empNo); + + String sql = "SELECT dm.dept_name,fm.file_name, sm.file_status ,pd.temp_id " + + "FROM gcc_pensioner.pensioner_details pd " + + "INNER JOIN gcc_pensioner.file_category_master fm ON pd.file_category = fm.id " + + "INNER JOIN gcc_pensioner.file_status_master sm ON sm.id = pd.file_status " + + "inner join gcc_pensioner.department_master dm on dm.id=pd.dept_id "+ + "WHERE pd.emp_no = ? " + + "UNION " + + "SELECT dm.dept_name,fm.file_name, sm.file_status ,cps.temp_id " + + "FROM gcc_pensioner.cps_pensioner_details cps " + + "INNER JOIN gcc_pensioner.file_category_master fm ON cps.file_category = fm.id " + + "INNER JOIN gcc_pensioner.file_status_master sm ON sm.id = cps.file_status " + + "inner join gcc_pensioner.department_master dm on dm.id=cps.dept_id "+ + "WHERE cps.emp_no = ?"; + + return jdbcTemplate.queryForList(sql, empNo, empNo); + } + + + + /* public List> getEmployeeDetailss(String fileName) { + + + String sql = "SELECT emp_no FROM gcc_pensioner.pensioner_details pd " + + "INNER JOIN gcc_pensioner.file_category_master cm ON pd.file_category = cm.id " + + "WHERE cm.file_name = ?"; + return jdbcTemplate .queryForList(sql, new Object[]{fileName}); + }*/ + /* public List> getStageWiseCounts() { + String sql = + "SELECT category, SUM(category_count) AS category_count FROM (" + + " SELECT " + + " CASE " + + " WHEN sm.id IN (1, 3) THEN 'Audit Pending' " + + " WHEN sm.id IN (2, 5, 6, 9) THEN 'Department Pending' " + + " WHEN sm.id IN (4, 7, 8, 10) THEN 'Pension Pending' " + + " WHEN sm.id = 11 THEN 'Completed' " + + + " END AS category, " + + " COUNT(*) AS category_count " + + " FROM gcc_pensioner.pensioner_details pd " + + " INNER JOIN gcc_pensioner.file_status_master sm ON pd.file_status = sm.id " + + " GROUP BY category " + + + " UNION ALL " + + + " SELECT " + + " CASE " + + " WHEN sm.id IN (1, 3) THEN 'Audit Pending' " + + " WHEN sm.id IN (2, 5, 6, 9) THEN 'Department Pending' " + + " WHEN sm.id IN (4, 7, 8, 10) THEN 'Pension Pending' " + + " WHEN sm.id = 11 THEN 'Completed' " + + + " END AS category, " + + " COUNT(*) AS category_count " + + " FROM gcc_pensioner.cps_pensioner_details cps " + + " INNER JOIN gcc_pensioner.file_status_master sm ON cps.file_status = sm.id " + + " GROUP BY category " + + ") AS combined_results " + + "GROUP BY category;"; + + return jdbcTemplate.queryForList(sql); + + }*/ + + public List> getEmployeeDetails(String FileId) { + String query; + + switch (FileId) { + case "1": + case "2": + case "3": + case "4": + case "5": + query = "SELECT pd.emp_no " + + "FROM gcc_pensioner.pensioner_details pd " + + "INNER JOIN gcc_pensioner.file_category_master cm " + + "ON pd.file_category = cm.id " + + "WHERE cm.id = ?"; + break; + + case "6": + query = "SELECT cps.emp_no " + + "FROM gcc_pensioner.cps_pensioner_details cps " + + "INNER JOIN gcc_pensioner.file_category_master cm " + + "ON cps.file_category = cm.id " + + "WHERE cm.id = ?"; + break; + + default: + return Collections.emptyList(); + } + + return jdbcTemplate.queryForList(query, FileId); + } + + + public List> fetchCategoryCounts() { + String sql = "SELECT file_name, id, COALESCE(SUM(category_count), 0) AS category_count " + + "FROM ( " + + " SELECT cm.file_name, cm.id,COUNT(pd.file_category) AS category_count " + + " FROM gcc_pensioner.file_category_master cm " + + " LEFT JOIN gcc_pensioner.pensioner_details pd " + + " ON pd.file_category = cm.id " + + " AND pd.is_closed='0' " + + + + " GROUP BY cm.file_name,cm.id" + + " UNION ALL " + + " SELECT cm.file_name, cm.id,COUNT(cps.file_category) AS category_count " + + " FROM gcc_pensioner.file_category_master cm " + + " LEFT JOIN gcc_pensioner.cps_pensioner_details cps " + + " ON cps.file_category = cm.id " + + + + " GROUP BY cm.file_name ,cm.id " + + ") combined_counts " + + "GROUP BY file_name,id"; + + return jdbcTemplate.queryForList(sql); + } + + /* + public List> fetchCategorysearchCounts(String startdate, String enddate) { + String sql = "SELECT cm.file_name, COALESCE(SUM(category_count), 0) AS category_count " + + "FROM ( " + + " SELECT cm.file_name, COUNT(pd.file_category) AS category_count " + + " FROM gcc_pensioner.file_category_master cm " + + " LEFT JOIN gcc_pensioner.pensioner_details pd " + + " ON pd.file_category = cm.id " + + " AND (? IS NULL OR (? = ? AND DATE(pd.created_date) = ?) OR (DATE(pd.created_date) >= ? AND DATE(pd.created_date) <= ?)) " + + + " GROUP BY cm.file_name " + + " UNION ALL " + + " SELECT cm.file_name, COUNT(cps.file_category) AS category_count " + + " FROM gcc_pensioner.file_category_master cm " + + " LEFT JOIN gcc_pensioner.cps_pensioner_details cps " + + " ON cps.file_category = cm.id " + + " AND (? IS NULL OR (? = ? AND DATE(cps.created_date) = ?) OR (DATE(cps.created_date) >= ? AND DATE(cps.created_date) <= ?)) " + + + " GROUP BY cm.file_name " + + ") combined_counts " + + "RIGHT JOIN gcc_pensioner.file_category_master cm " + + "ON combined_counts.file_name = cm.file_name " + + + "GROUP BY cm.file_name"; + + return jdbcTemplate.queryForList(sql, new Object[]{ + startdate, startdate, enddate, startdate, // For `pd.created_date` exact match or range + startdate, enddate, // For `pd.created_date` range + startdate, startdate, enddate, startdate, // For `cps.created_date` exact match or range + startdate, enddate // For `cps.created_date` range + }); + + + + + + + + + }//department*/ + public List> getDepartment() { + String sql = "SELECT dept_id,dept_name FROM gcc_pensioner.department_master;"; + return jdbcTemplate.queryForList(sql); + } + + + public List> DepartmenfetchCategoryCounts(String deptId) { + String sql = "SELECT cm.file_name, cm.id, " + + " COALESCE(pd.category_count, 0) + COALESCE(cps.category_count, 0) AS category_count " + + "FROM gcc_pensioner.file_category_master cm " + + "LEFT JOIN ( " + + " SELECT file_category, COUNT(*) AS category_count " + + " FROM gcc_pensioner.pensioner_details " + + " WHERE (? IS NULL OR dept_id = ?) " + + " AND is_closed='0' " + + " GROUP BY file_category " + + ") pd ON cm.id = pd.file_category " + + "LEFT JOIN ( " + + " SELECT file_category, COUNT(*) AS category_count " + + " FROM gcc_pensioner.cps_pensioner_details " + + " WHERE (? IS NULL OR dept_id = ?) " + + " GROUP BY file_category " + + ") cps ON cm.id = cps.file_category"; + + return jdbcTemplate.queryForList(sql, deptId, deptId, deptId, deptId); + + + } public List> fetchchartCategoryCounts(String deptId, String startDate, String endDate) { + String sql = "SELECT cm.file_name, cm.id, " + + " COALESCE(pd.category_count, 0) + COALESCE(cps.category_count, 0) AS category_count " + + "FROM gcc_pensioner.file_category_master cm " + + "LEFT JOIN ( " + + " SELECT file_category, COUNT(*) AS category_count " + + " FROM gcc_pensioner.pensioner_details " + + " WHERE (? IS NULL OR dept_id = ?) " + + " AND (? IS NULL OR date(created_date) >= ?) " + + " AND (? IS NULL OR date(created_date) <= ?) " + + " AND is_closed='0' " + + " GROUP BY file_category " + + ") pd ON cm.id = pd.file_category " + + "LEFT JOIN ( " + + " SELECT file_category, COUNT(*) AS category_count " + + " FROM gcc_pensioner.cps_pensioner_details " + + " WHERE (? IS NULL OR dept_id = ?) " + + " AND (? IS NULL OR date(created_date) >= ?) " + + " AND (? IS NULL OR date(created_date) <= ?) " + + " GROUP BY file_category " + + ") cps ON cm.id = cps.file_category"; + + return jdbcTemplate.queryForList( + sql, deptId, deptId, startDate, startDate, endDate, endDate, + deptId, deptId, startDate, startDate, endDate, endDate + ); + } + public List> getStageWiseCounts(String deptId, String startDate, String endDate) { + String sql = + "WITH categories AS (" + + " SELECT 'Audit Pending' AS category UNION ALL " + + " SELECT 'Department Pending' UNION ALL " + + " SELECT 'Pension Pending' UNION ALL " + + " SELECT 'Completed' " + + ") " + + "SELECT c.category, COALESCE(SUM(cr.category_count), 0) AS category_count " + + "FROM categories c " + + "LEFT JOIN ( " + + " SELECT category, SUM(category_count) AS category_count FROM ( " + + " SELECT " + + " CASE " + + " WHEN sm.id IN (1, 3) THEN 'Audit Pending' " + + " WHEN sm.id IN (2, 5, 6, 9) THEN 'Department Pending' " + + " WHEN sm.id IN (4, 7, 8, 10) THEN 'Pension Pending' " + + " WHEN sm.id = 11 THEN 'Completed' " + + " END AS category, " + + " COUNT(*) AS category_count " + + " FROM gcc_pensioner.pensioner_details pd " + + " INNER JOIN gcc_pensioner.file_status_master sm ON pd.file_status = sm.id " + + " WHERE (? IS NULL OR pd.dept_id = ?) " + + " AND (? IS NULL OR DATE(pd.created_date) >= ?) " + + " AND (? IS NULL OR DATE(pd.created_date) <= ?) " + + " AND pd.is_closed='0' " + + " GROUP BY category " + + + " UNION ALL " + + + " SELECT " + + " CASE " + + " WHEN sm.id IN (1, 3) THEN 'Audit Pending' " + + " WHEN sm.id IN (2, 5, 6, 9) THEN 'Department Pending' " + + " WHEN sm.id IN (4, 7, 8, 10) THEN 'Pension Pending' " + + " WHEN sm.id = 11 THEN 'Completed' " + + " END AS category, " + + " COUNT(*) AS category_count " + + " FROM gcc_pensioner.cps_pensioner_details cps " + + " INNER JOIN gcc_pensioner.file_status_master sm ON cps.file_status = sm.id " + + " WHERE (? IS NULL OR cps.dept_id = ?) " + + " AND (? IS NULL OR DATE(cps.created_date) >= ?) " + + " AND (? IS NULL OR DATE(cps.created_date) <= ?) " + + " GROUP BY category " + + " ) AS combined_results " + + " GROUP BY category " + + ") cr ON c.category = cr.category " + + "GROUP BY c.category;"; + + return jdbcTemplate.queryForList( + sql, deptId, deptId, startDate, startDate, endDate, endDate, + deptId, deptId, startDate, startDate, endDate, endDate + ); + } + + + + //simple + public List> fetchCategorysearchCounts(String startdate, String enddate,String deptId) { + String sql = "SELECT cm.file_name, COALESCE(SUM(category_count), 0) AS category_count " + + "FROM gcc_pensioner.file_category_master cm " + + "LEFT JOIN ( " + + " SELECT pd.file_category, COUNT(pd.file_category) AS category_count " + + " FROM gcc_pensioner.pensioner_details pd " + + " WHERE (? IS NULL OR DATE(pd.created_date) = ? OR (DATE(pd.created_date) BETWEEN ? AND ?)) " + + " AND (? IS NULL OR pd.dept_id = ?) " + + " AND pd.is_closed='0' " + + " GROUP BY pd.file_category " + + + " UNION ALL " + + " SELECT cps.file_category, COUNT(cps.file_category) AS category_count " + + " FROM gcc_pensioner.cps_pensioner_details cps " + + " WHERE (? IS NULL OR DATE(cps.created_date) = ? OR (DATE(cps.created_date) BETWEEN ? AND ?)) " + + " AND (? IS NULL OR cps.dept_id = ?) " + + " GROUP BY cps.file_category " + + ") combined_counts ON cm.id = combined_counts.file_category " + + "GROUP BY cm.file_name"; + + return jdbcTemplate.queryForList(sql, new Object[]{ + startdate, startdate, startdate, enddate, deptId, deptId, // For `pd.created_date` and `dept_id` + startdate, startdate, startdate, enddate, deptId, deptId // For `cps.created_date` and `dept_id` + }); + + } + } +//total 5 changes for is_closed=0 +/* this is with pendency file category + * "SELECT file_name, SUM(category_count) AS category_count " + + "FROM ( " + + " SELECT cm.file_name, COUNT(pd.file_category) AS category_count " + + " FROM gcc_pensioner.file_category_master cm " + + " LEFT JOIN gcc_pensioner.pensioner_details pd " + + " ON pd.file_category = cm.id " + + " GROUP BY cm.file_name " + + " UNION ALL " + + " SELECT cm.file_name, COUNT(cps.file_category) AS category_count " + + " FROM gcc_pensioner.file_category_master cm " + + " LEFT JOIN gcc_pensioner.cps_pensioner_details cps " + + " ON cps.file_category = cm.id " + + " GROUP BY cm.file_name " + + ") combined_counts " + + "GROUP BY file_name";--------------------------------------------------------------------------"SELECT cm.file_name, COALESCE(SUM(category_count), 0) AS category_count " + + "FROM ( " + + " SELECT cm.file_name, COUNT(pd.file_category) AS category_count " + + " FROM gcc_pensioner.file_category_master cm " + + " LEFT JOIN gcc_pensioner.pensioner_details pd " + + " ON pd.file_category = cm.id " + + " AND (? IS NULL OR (? = ? AND DATE(pd.created_date) = ?) OR (DATE(pd.created_date) >= ? AND DATE(pd.created_date) <= ?)) " + + " GROUP BY cm.file_name " + + " UNION ALL " + + " SELECT cm.file_name, COUNT(cps.file_category) AS category_count " + + " FROM gcc_pensioner.file_category_master cm " + + " LEFT JOIN gcc_pensioner.cps_pensioner_details cps " + + " ON cps.file_category = cm.id " + + " AND (? IS NULL OR (? = ? AND DATE(cps.created_date) = ?) OR (DATE(cps.created_date) >= ? AND DATE(cps.created_date) <= ?)) " + + " GROUP BY cm.file_name " + + ") combined_counts " + + "RIGHT JOIN gcc_pensioner.file_category_master cm " + + "ON combined_counts.file_name = cm.file_name " + + "GROUP BY cm.file_name"; */ diff --git a/backend/pensioner/service/DepartmentForwardService.java b/backend/pensioner/service/DepartmentForwardService.java new file mode 100644 index 0000000..2d3f3a9 --- /dev/null +++ b/backend/pensioner/service/DepartmentForwardService.java @@ -0,0 +1,214 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import in.gov.chennaicorporation.gccoffice.configuration.AppConfig; + +@Service +public class DepartmentForwardService { + + @Autowired + private JdbcTemplate jdbcTemplate; + + + private RestTemplate restTemplate; + private ObjectMapper objectMapper; + @Autowired + private AppConfig appconfig; + + public DepartmentForwardService(RestTemplate restTemplate, ObjectMapper objectMapper) { + this.restTemplate = restTemplate; + this.objectMapper = objectMapper; + } + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + public List> fetchDepatmentForwardEmpfiles(Integer file_cat) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_status=4 AND file_category=? AND is_closed=0"; + + + return jdbcTemplate.queryForList(query,file_cat); + } + + @Transactional + public boolean updateEntryDetails(Map requestData) { + // TODO Auto-generated method stub + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby =(String)requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + + int deptId = Integer.parseInt(dept_Id); + int filestatus = 5; + + String updateQuery = "UPDATE pensioner_details SET file_status = ?,file_moved_date=?,remarks=?,updated_date= CURRENT_TIMESTAMP WHERE temp_id = ? LIMIT 1"; + int rowsUpdated = jdbcTemplate.update(updateQuery,filestatus,dateToAudit, remarks,tempId); + + System.out.println("Rows inserted in pd:"+rowsUpdated); + if(rowsUpdated>0) + { + // Optional: Insert into file movement history for auditing + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks,temp_id) VALUES (?,?, ?, ?, ?, ?)"; + int rowsUpdated1=jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks,tempId); + System.out.println("Rows inserted in fmh:"+rowsUpdated1); + + return true; + } + else { + return false; + } + + } + + @Transactional + public boolean savehistory(List> emp_details,String filemovedby) { + try { + // Loop through the list of employee details + for (Map emp : emp_details) { + // Extract individual fields from the map + String empNo = emp.get("emp_no").toString(); + String empName = emp.get("emp_name").toString(); + String deptName = emp.get("dept_name").toString(); + String designation = emp.get("designation").toString(); + String fileCategoryName = emp.get("file_category_name").toString(); + String retirement_date = emp.get("retirement_date").toString(); + String retirement_class = emp.get("retirement_class").toString(); + String type_of_retirement = emp.get("type_of_retirement").toString(); + String fileMovedDate = emp.get("file_moved_date").toString(); + String remarks = emp.get("remarks").toString(); + int fileStatus = Integer.parseInt(emp.get("file_status").toString()); + String fileEntryType = emp.get("file_entry_type").toString(); + int file_category = Integer.parseInt(emp.get("file_category").toString()); + int dept_id = Integer.parseInt(emp.get("dept_id").toString()); + String temp_id = emp.get("temp_id").toString(); + + // Prepare the insert query + String insertQuery ="INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, type_of_retirement,retirement_date ,retirement_class,file_moved_date, remarks,file_category,file_status,file_entry_type,file_moved_by,dept_id,file_category_name,temp_id) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?)"; + + // Execute the query + int rowsInserted = jdbcTemplate.update(insertQuery, empNo, empName, deptName,designation,type_of_retirement,retirement_date,retirement_class,fileMovedDate,remarks,file_category,fileStatus,fileEntryType,filemovedby,dept_id,fileCategoryName,temp_id); + System.out.println("Rows inserted in pdh:"+rowsInserted); + // Check if the insertion was successful + if (rowsInserted <= 0) { + return false; // Return false if any insertion fails + } + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + //save the updatedfamilypensionReturn + @Transactional + public boolean saveFamilyPensionForwardHistory(List> emp_details,String filemovedby) { + try { + // Loop through the list of employee details + for (Map emp : emp_details) { + // Extract individual fields from the map + String empNo = emp.get("emp_no").toString(); + String empName = emp.get("emp_name").toString(); + String deptName = emp.get("dept_name").toString(); + String designation = emp.get("designation").toString(); + String fileCategoryName = emp.get("file_category_name").toString(); + String pendingDuration=emp.get("pending_duration").toString(); + String pendingReason=emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null; + String sericeDeath = emp.get("service_death").toString(); + String relationshipDeceased = emp.get("relationship_deceased").toString(); + String sanctionedGis = emp.get("sanctioned_gis_amount").toString(); + String fileMovedDate = emp.get("file_moved_date").toString(); + String remarks = emp.get("remarks").toString(); + int fileStatus = Integer.parseInt(emp.get("file_status").toString()); + String fileEntryType = emp.get("file_entry_type").toString(); + int file_category = Integer.parseInt(emp.get("file_category").toString()); + int dept_id = Integer.parseInt(emp.get("dept_id").toString()); + String temp_id = emp.get("temp_id").toString(); + + // Prepare the insert query + String insertQuery ="INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, service_death,relationship_deceased ,sanctioned_gis_amount,file_moved_date, remarks,file_category,file_status,file_entry_type,file_moved_by,dept_id,file_category_name,temp_id,pending_duration,reason_for_pending) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)"; + + // Execute the query + int rowsInserted = jdbcTemplate.update(insertQuery, empNo, empName, deptName,designation,sericeDeath,relationshipDeceased,sanctionedGis,fileMovedDate,remarks,file_category,fileStatus,fileEntryType,filemovedby,dept_id,fileCategoryName,temp_id,pendingDuration,pendingReason); + System.out.println("Rows inserted in pdh:"+rowsInserted); + // Check if the insertion was successful + if (rowsInserted <= 0) { + return false; // Return false if any insertion fails + } + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + //update save pendency history + @Transactional + public boolean savePendencyForwardHistory(List> emp_details,String filemovedby) { + try { + // Loop through the list of employee details + for (Map emp : emp_details) { + // Extract individual fields from the map + String empNo = emp.get("emp_no").toString(); + String empName = emp.get("emp_name").toString(); + String deptName = emp.get("dept_name").toString(); + String designation = emp.get("designation").toString(); + String retirementClass = emp.get("retirement_class").toString(); + String retirementDate=emp.get("retirement_date").toString(); + //String fileCategoryName = emp.get("file_category_name").toString(); + String pendingDuration=emp.get("pending_duration").toString(); + String pendingReason=emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null; + + String typeOfCategory=emp.get("file_category_name").toString(); + String typeOfRetirement=emp.get("type_of_retirement").toString(); + + String fileMovedDate = emp.get("file_moved_date").toString(); + String remarks = emp.get("remarks").toString(); + int fileStatus = Integer.parseInt(emp.get("file_status").toString()); + String fileEntryType = emp.get("file_entry_type").toString(); + int file_category = Integer.parseInt(emp.get("file_category").toString()); + int dept_id = Integer.parseInt(emp.get("dept_id").toString()); + String temp_id = emp.get("temp_id").toString(); + + // Prepare the insert query + String insertQuery ="INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation,retirement_class,retirement_date,file_category_name,type_of_retirement,file_moved_date, remarks,file_category,file_status,file_entry_type,file_moved_by,dept_id,temp_id,pending_duration,reason_for_pending) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)"; + + // Execute the query + int rowsInserted = jdbcTemplate.update(insertQuery, empNo, empName, deptName,designation,retirementClass,retirementDate,typeOfCategory,typeOfRetirement,fileMovedDate,remarks,file_category,fileStatus,fileEntryType,filemovedby,dept_id,temp_id,pendingDuration,pendingReason); + System.out.println("Rows inserted in pdh:"+rowsInserted); + // Check if the insertion was successful + if (rowsInserted <= 0) { + return false; // Return false if any insertion fails + } + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + +} diff --git a/backend/pensioner/service/DepartmentReceivedService.java b/backend/pensioner/service/DepartmentReceivedService.java new file mode 100644 index 0000000..19edd57 --- /dev/null +++ b/backend/pensioner/service/DepartmentReceivedService.java @@ -0,0 +1,644 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.util.List; + +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.dao.DataAccessException; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import in.gov.chennaicorporation.gccoffice.configuration.AppConfig; + +@Service +public class DepartmentReceivedService { + + @Autowired + private JdbcTemplate jdbcTemplate; + + + private RestTemplate restTemplate; + private ObjectMapper objectMapper; + @Autowired + private AppConfig appconfig; + + public DepartmentReceivedService(RestTemplate restTemplate, ObjectMapper objectMapper) { + this.restTemplate = restTemplate; + this.objectMapper = objectMapper; + } + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + public List> fetchPensionReceivedEmpfiles(Integer file_cat) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_category=? AND (file_status=7 OR file_status=8) AND is_closed=0"; + + + return jdbcTemplate.queryForList(query,file_cat); + } + + public List> fetchPensionbenefitsById(String tempId) { + String query = "SELECT * " + + "FROM pension_benefits " + + "WHERE temp_id=?"; + + + return jdbcTemplate.queryForList(query,tempId); + } + + @Transactional + public boolean updateEntryCompletedDetails(Map requestData) { + try { + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby = (String) requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + + String file_pending = (String) requestData.get("file_pending"); + String pension_number = (String) requestData.get("pension_number"); + String ledger_number = (String) requestData.get("ledger_number"); + String benefit_pension = (String) requestData.get("benefit_pension"); + String benefit_dcrg = requestData.get("benefit_dcrg") != null ? requestData.get("benefit_dcrg").toString() : null; + String benefit_commutation = (String) requestData.get("benefit_commutation"); + + String benefit_pension_amount = (String) requestData.get("benefit_pension_amount"); + String benefit_dcrg_amount = requestData.get("benefit_dcrg_amount") != null ? requestData.get("benefit_dcrg_amount").toString() : null; + String benefit_commutation_amount = (String) requestData.get("benefit_commutation_amount"); + + int deptId = Integer.parseInt(dept_Id); + int filestatus; + String file_entry_type=""; + + boolean check = checkTempPresent(tempId); + + if ("yes".equalsIgnoreCase(benefit_dcrg)) { + filestatus = CheckFieldsInDept(tempId) ? 11 : 9; //noted + file_entry_type="FILE_COMPLETED"; + } + else if(benefit_dcrg==null) + { + filestatus = 9; + file_entry_type="DEPARTMENT_PARTIAL"; + } + else { + filestatus = 9; + file_entry_type="DEPARTMENT_PARTIAL"; + } + + + String updateQuery = "UPDATE pensioner_details SET file_entry_type=?,file_status = ?, file_moved_date = ?, remarks = ?, updated_date = CURRENT_TIMESTAMP WHERE temp_id = ? LIMIT 1"; + int rowsUpdated = jdbcTemplate.update(updateQuery,file_entry_type, filestatus, dateToAudit, remarks, tempId); + + if (rowsUpdated > 0) { + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks, temp_id) VALUES (?, ?, ?, ?, ?, ?)"; + int rowsUpdated1 = jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks, tempId); + + if (rowsUpdated1 > 0) { + if (check) { + String updateQuery1 = "UPDATE pension_benefits SET file_pending = ?, pension_number = ?, ledger_number = ?, benefit_pension = ?, benefit_pension_amount = ?, benefit_dcrg = ?, benefit_dcrg_amount = ?, benefit_commutation = ?, benefit_commutation_amount = ?, updated_date = CURRENT_TIMESTAMP WHERE temp_id = ?"; + int rowsUpdated3 = jdbcTemplate.update(updateQuery1, file_pending, pension_number, ledger_number, benefit_pension, benefit_pension_amount, benefit_dcrg, benefit_dcrg_amount, benefit_commutation, benefit_commutation_amount, tempId); + } else { + String benefitQuery = "INSERT INTO pension_benefits (emp_no, temp_id, file_pending, pension_number, ledger_number, benefit_pension, benefit_pension_amount, benefit_dcrg, benefit_dcrg_amount, benefit_commutation, benefit_commutation_amount) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + int rowsUpdated2 = jdbcTemplate.update(benefitQuery, empNo, tempId, file_pending, pension_number, ledger_number, benefit_pension, benefit_pension_amount, benefit_dcrg, benefit_dcrg_amount, benefit_commutation, benefit_commutation_amount); + } + return true; + } + } + return false; + } catch (NumberFormatException e) { + System.err.println("Error parsing department ID: " + e.getMessage()); + return false; + } catch (DataAccessException e) { + System.err.println("Database operation failed: " + e.getMessage()); + return false; + } catch (Exception e) { + System.err.println("Unexpected error: " + e.getMessage()); + return false; + } + } + + + + private boolean checkTempPresent(String tempId) { + String query = "SELECT EXISTS (SELECT 1 FROM pension_benefits WHERE temp_id = ?)"; + + return Boolean.TRUE.equals(jdbcTemplate.queryForObject(query, Boolean.class, tempId)); + } + + private boolean CheckFieldsInDept(String tempId) { + + // Define the SQL query + String sql = "SELECT CASE " + + "WHEN gpf = 'yes' AND spfgs = 'yes' AND private_affairs = 'yes' AND dcrg = 'yes' THEN true " + + "ELSE false END AS allYes " + + "FROM zone_benefits " + + "WHERE temp_id = ?"; + + + try { + // Use queryForObject to get a single boolean result + Boolean result = jdbcTemplate.queryForObject(sql, Boolean.class, tempId); + return result != null && result; // Return the result if not null + } catch (Exception e) { + e.printStackTrace(); // Log the exception if needed + } + + return false; // Return false if an exception occurs + } + + @Transactional + public boolean saveRetirementCompletedhistory(List> emp_details,List> pension_details,String filemovedby) { + + try { + + int file_Cat=0; + + if (!emp_details.isEmpty()) { + Map firstEmployeeDetails = emp_details.get(0); + Object fileCatObj = firstEmployeeDetails.get("file_category"); + + if (fileCatObj != null) { + try { + file_Cat = Integer.parseInt(fileCatObj.toString()); + System.out.println("Parsed file_category: " + file_Cat); + } catch (NumberFormatException e) { + System.err.println("Failed to parse file_category: " + fileCatObj); + } + } else { + System.out.println("file_category is null in emp_details."); + } + } else { + System.out.println("emp_details is empty."); + } + + // Batch update for employee details + if(file_Cat==1) { + String empInsertQuery = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, type_of_retirement, " + + "retirement_date, retirement_class, file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + jdbcTemplate.batchUpdate(empInsertQuery, emp_details, emp_details.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("type_of_retirement").toString()); + ps.setString(6, emp.get("retirement_date").toString()); + ps.setString(7, emp.get("retirement_class").toString()); + ps.setString(8, emp.get("file_moved_date").toString()); + ps.setString(9, emp.get("remarks").toString()); + ps.setInt(10, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(11, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(12, emp.get("file_entry_type").toString()); + ps.setString(13, filemovedby); + ps.setInt(14, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(15, emp.get("file_category_name").toString()); + ps.setString(16, emp.get("temp_id").toString()); + }); + } + + if(file_Cat==2) + { + String empInsertQuery1 = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, service_death, " + + "relationship_deceased, sanctioned_gis_amount, file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id,pending_duration,reason_for_pending) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)"; + + jdbcTemplate.batchUpdate(empInsertQuery1, emp_details, emp_details.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("service_death").toString()); + ps.setString(6, emp.get("relationship_deceased").toString()); + ps.setString(7, emp.get("sanctioned_gis_amount").toString()); + ps.setString(8, emp.get("file_moved_date").toString()); + ps.setString(9, emp.get("remarks").toString()); + ps.setInt(10, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(11, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(12, emp.get("file_entry_type").toString()); + ps.setString(13, filemovedby); + ps.setInt(14, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(15, emp.get("file_category_name").toString()); + ps.setString(16, emp.get("temp_id").toString()); + ps.setString(17, emp.get("pending_duration").toString()); + ps.setString(18, emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null); + }); + + System.out.println("rows inserted in pd history for family Pension"); + } + + if(file_Cat==3) + { + String empInsertQuery2 = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation,type_of_retirement, " + + "file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id,pending_duration,reason_for_pending,retirement_class,retirement_date) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)"; + + jdbcTemplate.batchUpdate(empInsertQuery2, emp_details, emp_details.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("type_of_retirement").toString()); + ps.setString(6, emp.get("file_moved_date").toString()); + ps.setString(7, emp.get("remarks").toString()); + ps.setInt(8, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(9, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(10, emp.get("file_entry_type").toString()); + ps.setString(11, filemovedby); + ps.setInt(12, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(13, emp.get("file_category_name").toString()); + ps.setString(14, emp.get("temp_id").toString()); + ps.setString(15, emp.get("pending_duration").toString()); + ps.setString(16, emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null); + ps.setString(17, emp.get("retirement_class").toString()); + ps.setString(18, emp.get("retirement_date").toString()); + }); + + System.out.println("rows inserted in pd history for pending"); + } + + String pensionInsertQuery = + "INSERT INTO pension_benefits_history (emp_no,temp_id,file_pending,pension_number,ledger_number,benefit_pension,benefit_pension_amount,benefit_dcrg,benefit_dcrg_amount,benefit_commutation,benefit_commutation_amount,file_moved_by) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"; + + jdbcTemplate.batchUpdate(pensionInsertQuery, pension_details, pension_details.size(), (ps, pension) -> { + ps.setString(1, pension.get("emp_no").toString()); + ps.setString(2, pension.get("temp_id").toString()); + ps.setString(3, pension.get("file_pending").toString()); + ps.setString(4, pension.get("pension_number").toString()); + ps.setString(5, pension.get("ledger_number").toString()); + ps.setString(6, pension.get("benefit_pension").toString()); + ps.setString(7, pension.get("benefit_pension_amount") != null ? pension.get("benefit_pension_amount").toString() : null); + ps.setString(8, pension.get("benefit_dcrg") != null ? pension.get("benefit_dcrg").toString() : null); + ps.setString(9, pension.get("benefit_dcrg_amount") != null ? pension.get("benefit_dcrg_amount").toString() : null); + ps.setString(10, pension.get("benefit_commutation").toString()); + ps.setString(11, pension.get("benefit_commutation_amount") != null ? pension.get("benefit_commutation_amount").toString() : null); + ps.setString(12, filemovedby); + + + + }); + + System.out.println("rows inserted in pension history for family Pension"); + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + @Transactional + public boolean updateEntryPendingDetails(Map requestData) { + // TODO Auto-generated method stub + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby =(String)requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + + String file_pending = (String) requestData.get("file_pending"); + + int deptId = Integer.parseInt(dept_Id); + int filestatus=8; + + String file_entry_type="FILE_PENDING"; + + String updateQuery = "UPDATE pensioner_details SET file_status = ?,file_entry_type=?,file_moved_date=?,remarks=?,updated_date= CURRENT_TIMESTAMP WHERE temp_id = ? LIMIT 1"; + int rowsUpdated = jdbcTemplate.update(updateQuery,filestatus,file_entry_type,dateToAudit, remarks,tempId); + + System.out.println("Rows inserted in pd:"+rowsUpdated); + if(rowsUpdated>0) + { + // Optional: Insert into file movement history for auditing + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks,temp_id) VALUES (?,?, ?, ?, ?, ?)"; + int rowsUpdated1=jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks,tempId); + System.out.println("Rows inserted in fmh:"+rowsUpdated1); + + if(rowsUpdated1>0) + { + // Insert into zone benefits + String benefitQuery="INSERT INTO pension_benefits (emp_no,temp_id,file_pending) VALUES (?,?,?)"; + int rowsUpdated2=jdbcTemplate.update(benefitQuery,empNo,tempId,file_pending); + System.out.println("Rows inserted in pb1:"+rowsUpdated2); + return true; + } + else + { + return false; + } + } + else { + return false; + } + + } + + @Transactional + public boolean saveRetirementPendinghistory(List> emp_details,List> pension_details,String filemovedby) { + try { + + int file_Cat=0; + + if (!emp_details.isEmpty()) { + Map firstEmployeeDetails = emp_details.get(0); + Object fileCatObj = firstEmployeeDetails.get("file_category"); + + if (fileCatObj != null) { + try { + file_Cat = Integer.parseInt(fileCatObj.toString()); + System.out.println("Parsed file_category: " + file_Cat); + } catch (NumberFormatException e) { + System.err.println("Failed to parse file_category: " + fileCatObj); + } + } else { + System.out.println("file_category is null in emp_details."); + } + } else { + System.out.println("emp_details is empty."); + } + + // Batch update for employee details + if(file_Cat==1) { + String empInsertQuery = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, type_of_retirement, " + + "retirement_date, retirement_class, file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + jdbcTemplate.batchUpdate(empInsertQuery, emp_details, emp_details.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("type_of_retirement").toString()); + ps.setString(6, emp.get("retirement_date").toString()); + ps.setString(7, emp.get("retirement_class").toString()); + ps.setString(8, emp.get("file_moved_date").toString()); + ps.setString(9, emp.get("remarks").toString()); + ps.setInt(10, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(11, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(12, emp.get("file_entry_type").toString()); + ps.setString(13, filemovedby); + ps.setInt(14, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(15, emp.get("file_category_name").toString()); + ps.setString(16, emp.get("temp_id").toString()); + }); + } + + if(file_Cat==2) + { + String empInsertQuery1 = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, service_death, " + + "relationship_deceased, sanctioned_gis_amount, file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id,pending_duration,reason_for_pending) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)"; + + jdbcTemplate.batchUpdate(empInsertQuery1, emp_details, emp_details.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("service_death").toString()); + ps.setString(6, emp.get("relationship_deceased").toString()); + ps.setString(7, emp.get("sanctioned_gis_amount").toString()); + ps.setString(8, emp.get("file_moved_date").toString()); + ps.setString(9, emp.get("remarks").toString()); + ps.setInt(10, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(11, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(12, emp.get("file_entry_type").toString()); + ps.setString(13, filemovedby); + ps.setInt(14, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(15, emp.get("file_category_name").toString()); + ps.setString(16, emp.get("temp_id").toString()); + ps.setString(17, emp.get("pending_duration").toString()); + ps.setString(18, emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null); + }); + + System.out.println("rows inserted in pd history for family Pension"); + } + + if(file_Cat==3) + { + String empInsertQuery2 = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation,type_of_retirement, " + + "file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id,pending_duration,reason_for_pending) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + jdbcTemplate.batchUpdate(empInsertQuery2, emp_details, emp_details.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("type_of_retirement").toString()); + ps.setString(6, emp.get("file_moved_date").toString()); + ps.setString(7, emp.get("remarks").toString()); + ps.setInt(8, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(9, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(10, emp.get("file_entry_type").toString()); + ps.setString(11, filemovedby); + ps.setInt(12, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(13, emp.get("file_category_name").toString()); + ps.setString(14, emp.get("temp_id").toString()); + ps.setString(15, emp.get("pending_duration").toString()); + ps.setString(16, emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null); + }); + + System.out.println("rows inserted in pd history for pending"); + } + + String pensionInsertQuery = + "INSERT INTO pension_benefits_history (emp_no,temp_id,file_pending,file_moved_by) VALUES (?,?,?,?)"; + + jdbcTemplate.batchUpdate(pensionInsertQuery, pension_details, pension_details.size(), (ps, pension) -> { + ps.setString(1, pension.get("emp_no").toString()); + ps.setString(2, pension.get("temp_id").toString()); + ps.setString(3, pension.get("file_pending").toString()); + ps.setString(4, filemovedby); + + }); + System.out.println("rows inserted in pension history for family Pension"); + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + @Transactional + public boolean updateEntryReturnDetails(Map requestData) { + // TODO Auto-generated method stub + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby =(String)requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + + String file_entry_type="FILE_RETURNED"; + + int deptId = Integer.parseInt(dept_Id); + int filestatus=6; + + String updateQuery = "UPDATE pensioner_details SET file_status = ?,file_entry_type=?,file_moved_date=?,remarks=?,updated_date= CURRENT_TIMESTAMP WHERE temp_id = ? LIMIT 1"; + int rowsUpdated = jdbcTemplate.update(updateQuery,filestatus,file_entry_type,dateToAudit, remarks,tempId); + + System.out.println("Rows inserted in pd:"+rowsUpdated); + if(rowsUpdated>0) + { + // Optional: Insert into file movement history for auditing + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks,temp_id) VALUES (?,?, ?, ?, ?, ?)"; + int rowsUpdated1=jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks,tempId); + System.out.println("Rows inserted in fmh:"+rowsUpdated1); + return true; + + } + else { + return false; + } + + } + + @Transactional + public boolean saveRetirementreturnhistory(List> emp_details,String filemovedby) { + try { + + int file_Cat=0; + + if (!emp_details.isEmpty()) { + Map firstEmployeeDetails = emp_details.get(0); + Object fileCatObj = firstEmployeeDetails.get("file_category"); + + if (fileCatObj != null) { + try { + file_Cat = Integer.parseInt(fileCatObj.toString()); + System.out.println("Parsed file_category: " + file_Cat); + } catch (NumberFormatException e) { + System.err.println("Failed to parse file_category: " + fileCatObj); + } + } else { + System.out.println("file_category is null in emp_details."); + } + } else { + System.out.println("emp_details is empty."); + } + + // Batch update for employee details + if(file_Cat==1) { + String empInsertQuery = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, type_of_retirement, " + + "retirement_date, retirement_class, file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + jdbcTemplate.batchUpdate(empInsertQuery, emp_details, emp_details.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("type_of_retirement").toString()); + ps.setString(6, emp.get("retirement_date").toString()); + ps.setString(7, emp.get("retirement_class").toString()); + ps.setString(8, emp.get("file_moved_date").toString()); + ps.setString(9, emp.get("remarks").toString()); + ps.setInt(10, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(11, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(12, emp.get("file_entry_type").toString()); + ps.setString(13, filemovedby); + ps.setInt(14, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(15, emp.get("file_category_name").toString()); + ps.setString(16, emp.get("temp_id").toString()); + }); + } + + if(file_Cat==2) + { + String empInsertQuery1 = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, service_death, " + + "relationship_deceased, sanctioned_gis_amount, file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id,pending_duration,reason_for_pending) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)"; + + jdbcTemplate.batchUpdate(empInsertQuery1, emp_details, emp_details.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("service_death").toString()); + ps.setString(6, emp.get("relationship_deceased").toString()); + ps.setString(7, emp.get("sanctioned_gis_amount").toString()); + ps.setString(8, emp.get("file_moved_date").toString()); + ps.setString(9, emp.get("remarks").toString()); + ps.setInt(10, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(11, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(12, emp.get("file_entry_type").toString()); + ps.setString(13, filemovedby); + ps.setInt(14, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(15, emp.get("file_category_name").toString()); + ps.setString(16, emp.get("temp_id").toString()); + ps.setString(17, emp.get("pending_duration").toString()); + ps.setString(18, emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null); + }); + + System.out.println("rows inserted in pd history for family Pension"); + } + + if(file_Cat==3) + { + String empInsertQuery2 = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation,type_of_retirement, " + + "file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id,pending_duration,reason_for_pending) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + jdbcTemplate.batchUpdate(empInsertQuery2, emp_details, emp_details.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("type_of_retirement").toString()); + ps.setString(6, emp.get("file_moved_date").toString()); + ps.setString(7, emp.get("remarks").toString()); + ps.setInt(8, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(9, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(10, emp.get("file_entry_type").toString()); + ps.setString(11, filemovedby); + ps.setInt(12, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(13, emp.get("file_category_name").toString()); + ps.setString(14, emp.get("temp_id").toString()); + ps.setString(15, emp.get("pending_duration").toString()); + ps.setString(16, emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null); + }); + + System.out.println("rows inserted in pd history for pending"); + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + +} diff --git a/backend/pensioner/service/DeptAuditService.java b/backend/pensioner/service/DeptAuditService.java new file mode 100644 index 0000000..f3efc91 --- /dev/null +++ b/backend/pensioner/service/DeptAuditService.java @@ -0,0 +1,299 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import in.gov.chennaicorporation.gccoffice.configuration.AppConfig; + + +@Service +public class DeptAuditService { + + + + @Autowired + private JdbcTemplate jdbcTemplate; + + + private RestTemplate restTemplate; + private ObjectMapper objectMapper; + @Autowired + private AppConfig appconfig; + + public DeptAuditService(RestTemplate restTemplate, ObjectMapper objectMapper) { + this.restTemplate = restTemplate; + this.objectMapper = objectMapper; + } + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + + public List> fetchEmployeeDetailsByTable(Integer deptId,Integer file_cat) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE dept_id=? AND file_category=? AND (file_status=1 OR file_status=3) AND is_closed=0"; + + + return jdbcTemplate.queryForList(query,deptId,file_cat); + } + + public List> fetchEmployeeById(String tempId) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE temp_id=?"; + + + return jdbcTemplate.queryForList(query,tempId); + } + + + + public List> fetchEmployeeByIdCps(String tempId) { + String query = "SELECT * " + + "FROM cps_pensioner_details " + + "WHERE temp_id=?"; + + + return jdbcTemplate.queryForList(query,tempId); + } + + public List> fetchDetailsWithZoneBenefitsById(String tempId) { + String query = "SELECT pd.*, zb.gpf, zb.gpf_amount, zb.spfgs, zb.spfgs_amount, zb.dcrg, " + + "zb.private_affairs, zb.private_affairs_amount, zb.recovery_emp " + + "FROM pensioner_details pd " + + "LEFT JOIN zone_benefits zb ON pd.temp_id = zb.temp_id " + + "WHERE pd.temp_id = ?"; + + return jdbcTemplate.queryForList(query, tempId); + }// + + public List> fetchFilePendingBenefits(String tempId) { + + String query = "SELECT pd.*, zb.gpf, zb.gpf_amount, zb.spfgs, zb.spfgs_amount, zb.dcrg, " + + "zb.private_affairs, zb.private_affairs_amount, zb.recovery_emp,pb.file_pending " + + "FROM pensioner_details pd " + + "LEFT JOIN zone_benefits zb ON pd.temp_id = zb.temp_id " + + "LEFT JOIN pension_benefits pb ON pd.temp_id = pb.temp_id " + + "WHERE pd.temp_id = ?"; + + return jdbcTemplate.queryForList(query, tempId); + } + + + public List> fetchPartialCompleted(String tempId) { + + String query = "SELECT pd.*, zb.gpf, zb.gpf_amount, zb.spfgs, zb.spfgs_amount, zb.dcrg, " + + "zb.private_affairs, zb.private_affairs_amount, zb.recovery_emp,pb.file_pending," + + "pb.pension_number,pb.ledger_number,pb.benefit_pension,pb.benefit_pension_amount,pb.benefit_dcrg,pb.benefit_dcrg_amount,pb.benefit_commutation,pb.benefit_commutation_amount " + + "FROM pensioner_details pd " + + "LEFT JOIN zone_benefits zb ON pd.temp_id = zb.temp_id " + + "LEFT JOIN pension_benefits pb ON pd.temp_id = pb.temp_id " + + "WHERE pd.temp_id = ?"; + + return jdbcTemplate.queryForList(query, tempId); + } + + + + + public List> fetchFileMovementHistory(String tempId) { + // Query to fetch file movement history + String query = "SELECT fh.file_moved_date AS fileMovedDateHistory, " + + "fm.file_status AS fileStatusHistory, " + + "fh.remarks AS remarksHistory " + + "FROM file_movement_history fh " + + "JOIN file_status_master fm ON fh.file_status = fm.id " + + "WHERE fh.temp_id = ?"; + + return jdbcTemplate.queryForList(query,tempId); + } + + + @Transactional + public boolean updateEntryDetails(Map requestData) { + // TODO Auto-generated method stub + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby =(String)requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + + + int deptId = Integer.parseInt(dept_Id); + int filestatus = 2; + String file_entry_type="AUDIT_RETURNED"; + + // Update file_status in pensioner_details + String updateQuery = "UPDATE pensioner_details SET file_status = ?, file_entry_type =?,file_moved_date=?,remarks=?,updated_date= CURRENT_TIMESTAMP WHERE temp_id = ? LIMIT 1"; + int rowsUpdated = jdbcTemplate.update(updateQuery,filestatus,file_entry_type,dateToAudit, remarks,tempId); + + System.out.println("Rows inserted in pd:"+rowsUpdated); + if(rowsUpdated>0) + { + // Optional: Insert into file movement history for auditing + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks,temp_id) VALUES (?,?, ?, ?, ?, ?)"; + int rowsUpdated1=jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks,tempId); + System.out.println("Rows inserted in fmh:"+rowsUpdated1); + + return true; + } + else { + return false; + } + + } + + @Transactional + public boolean savehistory(List> emp_details,String filemovedby) { + try { + // Loop through the list of employee details + for (Map emp : emp_details) { + // Extract individual fields from the map + String empNo = emp.get("emp_no").toString(); + String empName = emp.get("emp_name").toString(); + String deptName = emp.get("dept_name").toString(); + String designation = emp.get("designation").toString(); + String fileCategoryName = emp.get("file_category_name").toString(); + String retirement_date = emp.get("retirement_date").toString(); + String retirement_class = emp.get("retirement_class").toString(); + String type_of_retirement = emp.get("type_of_retirement").toString(); + String fileMovedDate = emp.get("file_moved_date").toString(); + String remarks = emp.get("remarks").toString(); + int fileStatus = Integer.parseInt(emp.get("file_status").toString()); + String fileEntryType = emp.get("file_entry_type").toString(); + int file_category = Integer.parseInt(emp.get("file_category").toString()); + int dept_id = Integer.parseInt(emp.get("dept_id").toString()); + String temp_id = emp.get("temp_id").toString(); + + // Prepare the insert query + String insertQuery ="INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, type_of_retirement,retirement_date ,retirement_class,file_moved_date, remarks,file_category,file_status,file_entry_type,file_moved_by,dept_id,file_category_name,temp_id) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?)"; + + // Execute the query + int rowsInserted = jdbcTemplate.update(insertQuery, empNo, empName, deptName,designation,type_of_retirement,retirement_date,retirement_class,fileMovedDate,remarks,file_category,fileStatus,fileEntryType,filemovedby,dept_id,fileCategoryName,temp_id); + System.out.println("Rows inserted in pdh:"+rowsInserted); + // Check if the insertion was successful + if (rowsInserted <= 0) { + return false; // Return false if any insertion fails + } + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + + //save the updatedfamilypension details + @Transactional + public boolean saveFamilyPensionHistory(List> emp_details,String filemovedby) { + try { + // Loop through the list of employee details + for (Map emp : emp_details) { + // Extract individual fields from the map + String empNo = emp.get("emp_no").toString(); + String empName = emp.get("emp_name").toString(); + String deptName = emp.get("dept_name").toString(); + String designation = emp.get("designation").toString(); + String fileCategoryName = emp.get("file_category_name").toString(); + String pendingDuration=emp.get("pending_duration").toString(); + String pendingReason=emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null; + String serviceDeath = emp.get("service_death").toString(); + String relationshipDeceased = emp.get("relationship_deceased").toString(); + String sanctionedGis = emp.get("sanctioned_gis_amount").toString(); + String fileMovedDate = emp.get("file_moved_date").toString(); + String remarks = emp.get("remarks").toString(); + int fileStatus = Integer.parseInt(emp.get("file_status").toString()); + String fileEntryType = emp.get("file_entry_type").toString(); + int file_category = Integer.parseInt(emp.get("file_category").toString()); + int dept_id = Integer.parseInt(emp.get("dept_id").toString()); + String temp_id = emp.get("temp_id").toString(); + + // Prepare the insert query + String insertQuery ="INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, service_death,relationship_deceased ,sanctioned_gis_amount,file_moved_date, remarks,file_category,file_status,file_entry_type,file_moved_by,dept_id,file_category_name,temp_id,pending_duration,reason_for_pending) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)"; + + // Execute the query + int rowsInserted = jdbcTemplate.update(insertQuery, empNo, empName, deptName,designation,serviceDeath,relationshipDeceased,sanctionedGis,fileMovedDate,remarks,file_category,fileStatus,fileEntryType,filemovedby,dept_id,fileCategoryName,temp_id,pendingDuration,pendingReason); + System.out.println("Rows inserted in pdh:"+rowsInserted); + // Check if the insertion was successful + if (rowsInserted <= 0) { + return false; // Return false if any insertion fails + } + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + + //save the pendency details + @Transactional + public boolean savePendencyHistory(List> emp_details,String filemovedby) { + try { + // Loop through the list of employee details + for (Map emp : emp_details) { + // Extract individual fields from the map + String empNo = emp.get("emp_no").toString(); + String empName = emp.get("emp_name").toString(); + String deptName = emp.get("dept_name").toString(); + String designation = emp.get("designation").toString(); + String retirementClass = emp.get("retirement_class").toString(); + String retirementDate=emp.get("retirement_date").toString(); + //String fileCategoryName = emp.get("file_category_name").toString(); + String pendingDuration=emp.get("pending_duration").toString(); + String pendingReason=emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null; + + String typeOfCategory=emp.get("file_category_name").toString(); + String typeOfRetirement=emp.get("type_of_retirement").toString(); + + String fileMovedDate = emp.get("file_moved_date").toString(); + String remarks = emp.get("remarks").toString(); + int fileStatus = Integer.parseInt(emp.get("file_status").toString()); + String fileEntryType = emp.get("file_entry_type").toString(); + int file_category = Integer.parseInt(emp.get("file_category").toString()); + int dept_id = Integer.parseInt(emp.get("dept_id").toString()); + String temp_id = emp.get("temp_id").toString(); + + // Prepare the insert query + String insertQuery ="INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation,retirement_class,retirement_date,file_category_name,type_of_retirement,file_moved_date, remarks,file_category,file_status,file_entry_type,file_moved_by,dept_id,temp_id,pending_duration,reason_for_pending) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)"; + + // Execute the query + int rowsInserted = jdbcTemplate.update(insertQuery, empNo, empName, deptName,designation,retirementClass,retirementDate,typeOfCategory,typeOfRetirement,fileMovedDate,remarks,file_category,fileStatus,fileEntryType,filemovedby,dept_id,temp_id,pendingDuration,pendingReason); + System.out.println("Rows inserted in pdh:"+rowsInserted); + // Check if the insertion was successful + if (rowsInserted <= 0) { + return false; // Return false if any insertion fails + } + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + + + + +} diff --git a/backend/pensioner/service/DeptPartiallyCompService.java b/backend/pensioner/service/DeptPartiallyCompService.java new file mode 100644 index 0000000..1cb4f60 --- /dev/null +++ b/backend/pensioner/service/DeptPartiallyCompService.java @@ -0,0 +1,354 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.dao.DataAccessException; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import in.gov.chennaicorporation.gccoffice.configuration.AppConfig; + +@Service +public class DeptPartiallyCompService { + + @Autowired + private JdbcTemplate jdbcTemplate; + + private RestTemplate restTemplate; + private ObjectMapper objectMapper; + @Autowired + private AppConfig appconfig; + + public DeptPartiallyCompService(RestTemplate restTemplate, ObjectMapper objectMapper) { + this.restTemplate = restTemplate; + this.objectMapper = objectMapper; + } + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + public List> fetchDepatmentPartialEmpfiles(Integer deptId,Integer file_cat) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_status=9 AND dept_id=? AND file_category=? AND is_closed=0"; + + + return jdbcTemplate.queryForList(query,deptId,file_cat); + } + + @Transactional + public boolean updateEntryCompletedDetails(Map requestData) { + try { + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby = (String) requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + + + String gpf = (String) requestData.get("gpf"); + String private_affairs = (String) requestData.get("private_affairs"); + String spfgs = (String) requestData.get("spfgs"); + String recovery_emp = requestData.get("recovery_emp") != null ? requestData.get("recovery_emp").toString() : null; + String dcrg = (String) requestData.get("dcrg"); + + String gpfAmount = requestData.get("gpfAmount") != null ? requestData.get("gpfAmount").toString() : null; + String private_affairs_amount = requestData.get("private_affairs_amount") != null ? requestData.get("private_affairs_amount").toString() : null; + String spfgs_amount = requestData.get("spfgs_amount") != null ? requestData.get("spfgs_amount").toString() : null; + + + String pension_number = (String) requestData.get("pension_number"); + String ledger_number = (String) requestData.get("ledger_number"); + String benefit_pension = (String) requestData.get("benefit_pension"); + String benefit_dcrg = (String) requestData.get("benefit_dcrg"); + String benefit_commutation = (String) requestData.get("benefit_commutation"); + + String benefit_pension_amount = requestData.get("benefit_pension_amount")!= null ? requestData.get("benefit_pension_amount").toString() : null; + String benefit_dcrg_amount = requestData.get("benefit_dcrg_amount") != null ? requestData.get("benefit_dcrg_amount").toString() : null; + String benefit_commutation_amount = requestData.get("benefit_commutation_amount") != null ? requestData.get("benefit_commutation_amount").toString() : null; + + + int deptId = Integer.parseInt(dept_Id); + int filestatus; + String file_entry_type=""; + + + + String updateQuery1 = "UPDATE zone_benefits SET gpf = ?, gpf_amount = ?, spfgs = ?, spfgs_amount = ?, dcrg = ?, private_affairs = ?, private_affairs_amount = ?, recovery_emp = ?, updated_date = CURRENT_TIMESTAMP WHERE temp_id = ?"; + int rowsUpdated3 = jdbcTemplate.update(updateQuery1, gpf, gpfAmount, spfgs, spfgs_amount, dcrg, private_affairs, private_affairs_amount, recovery_emp, tempId); + System.out.println("Rows updated in zb: " + rowsUpdated3); + + if (rowsUpdated3 > 0) { + +// String updateQuery2 = "UPDATE pension_benefits SET pension_number = ?, ledger_number = ?, benefit_pension = ?, benefit_pension_amount = ?, benefit_dcrg = ?, benefit_dcrg_amount = ?, benefit_commutation = ?, benefit_commutation_amount = ?, updated_date = CURRENT_TIMESTAMP WHERE temp_id = ?"; +// int rowsUpdated2 = jdbcTemplate.update(updateQuery2, pension_number, ledger_number, benefit_pension, benefit_pension_amount, benefit_dcrg, benefit_dcrg_amount, benefit_commutation, benefit_commutation_amount, tempId); +// System.out.println("Rows updated in pb: " + rowsUpdated2); + + filestatus = CheckFieldsforComplete(tempId) ? 11 : CheckFieldsforDept(tempId) ? 10 : 9; + System.out.println("filestatus inside service="+filestatus); + + if(filestatus==11) + { + file_entry_type="FILE_COMPLETED"; + } + if(filestatus==9) { + file_entry_type="DEPARTMENT_PARTIAL"; + } + if(filestatus==10) { + file_entry_type="PENSION_PARTIAL"; + } + + + String updateQuery = "UPDATE pensioner_details SET file_entry_type=?,file_status = ?, file_moved_date = ?, remarks = ?, updated_date = CURRENT_TIMESTAMP WHERE temp_id = ? LIMIT 1"; + int rowsUpdated = jdbcTemplate.update(updateQuery,file_entry_type, filestatus, dateToAudit, remarks, tempId); + System.out.println("Rows updated in pd: " + rowsUpdated); + + if (rowsUpdated > 0) { + + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks, temp_id) VALUES (?, ?, ?, ?, ?, ?)"; + int rowsUpdated1 = jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks, tempId); + System.out.println("Rows updated in fmh: " + rowsUpdated1); + + return true; + } + + } + return false; + } catch (NumberFormatException e) { + System.err.println("Error parsing department ID: " + e.getMessage()); + return false; + } catch (DataAccessException e) { + System.err.println("Database operation failed: " + e.getMessage()); + return false; + } catch (Exception e) { + System.err.println("Unexpected error: " + e.getMessage()); + return false; + } + } + + @Transactional + public boolean saveHistory(List> empDetails, List> zoneBenefits, List> pension_details, String fileMovedBy) { + try { + int file_Cat=0; + + if (!empDetails.isEmpty()) { + Map firstEmployeeDetails = empDetails.get(0); + Object fileCatObj = firstEmployeeDetails.get("file_category"); + + if (fileCatObj != null) { + try { + file_Cat = Integer.parseInt(fileCatObj.toString()); + System.out.println("Parsed file_category: " + file_Cat); + } catch (NumberFormatException e) { + System.err.println("Failed to parse file_category: " + fileCatObj); + } + } else { + System.out.println("file_category is null in emp_details."); + } + } else { + System.out.println("emp_details is empty."); + } + + // Batch update for employee details + if(file_Cat==1) { + String empInsertQuery = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, type_of_retirement, " + + "retirement_date, retirement_class, file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + jdbcTemplate.batchUpdate(empInsertQuery, empDetails, empDetails.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("type_of_retirement").toString()); + ps.setString(6, emp.get("retirement_date").toString()); + ps.setString(7, emp.get("retirement_class").toString()); + ps.setString(8, emp.get("file_moved_date").toString()); + ps.setString(9, emp.get("remarks").toString()); + ps.setInt(10, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(11, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(12, emp.get("file_entry_type").toString()); + ps.setString(13, fileMovedBy); + ps.setInt(14, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(15, emp.get("file_category_name").toString()); + ps.setString(16, emp.get("temp_id").toString()); + }); + } + + if(file_Cat==2) + { + String empInsertQuery1 = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, service_death, " + + "relationship_deceased, sanctioned_gis_amount, file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id,pending_duration,reason_for_pending) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)"; + + jdbcTemplate.batchUpdate(empInsertQuery1, empDetails, empDetails.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("service_death").toString()); + ps.setString(6, emp.get("relationship_deceased").toString()); + ps.setString(7, emp.get("sanctioned_gis_amount").toString()); + ps.setString(8, emp.get("file_moved_date").toString()); + ps.setString(9, emp.get("remarks").toString()); + ps.setInt(10, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(11, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(12, emp.get("file_entry_type").toString()); + ps.setString(13, fileMovedBy); + ps.setInt(14, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(15, emp.get("file_category_name").toString()); + ps.setString(16, emp.get("temp_id").toString()); + ps.setString(17, emp.get("pending_duration").toString()); + ps.setString(18, emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null); + }); + + System.out.println("rows inserted in pd history for family Pension"); + } + + if(file_Cat==3) + { + String empInsertQuery2 = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation,type_of_retirement, " + + "file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id,pending_duration,reason_for_pending,retirement_class,retirement_date) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)"; + + jdbcTemplate.batchUpdate(empInsertQuery2, empDetails, empDetails.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("type_of_retirement").toString()); + ps.setString(6, emp.get("file_moved_date").toString()); + ps.setString(7, emp.get("remarks").toString()); + ps.setInt(8, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(9, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(10, emp.get("file_entry_type").toString()); + ps.setString(11, fileMovedBy); + ps.setInt(12, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(13, emp.get("file_category_name").toString()); + ps.setString(14, emp.get("temp_id").toString()); + ps.setString(15, emp.get("pending_duration").toString()); + ps.setString(16, emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null); + ps.setString(17, emp.get("retirement_class").toString()); + ps.setString(18, emp.get("retirement_date").toString()); + + }); + + System.out.println("rows inserted in pd history for pendency"); + } + + // Batch update for zone benefits + String zoneInsertQuery = + "INSERT INTO zone_benefits_history (emp_no, temp_id, gpf, gpf_amount, spfgs, spfgs_amount, dcrg, " + + "private_affairs, private_affairs_amount, recovery_emp, file_moved_by) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + jdbcTemplate.batchUpdate(zoneInsertQuery, zoneBenefits, zoneBenefits.size(), (ps, zone) -> { + ps.setString(1, zone.get("emp_no").toString()); + ps.setString(2, zone.get("temp_id").toString()); + ps.setString(3, zone.get("gpf").toString()); + ps.setString(4, zone.get("gpf_amount") != null ? zone.get("gpf_amount").toString() : null); + ps.setString(5, zone.get("spfgs").toString()); + ps.setString(6, zone.get("spfgs_amount") != null ? zone.get("spfgs_amount").toString() : null); + ps.setString(7, zone.get("dcrg").toString()); + ps.setString(8, zone.get("private_affairs").toString()); + ps.setString(9, zone.get("private_affairs_amount") != null ? zone.get("private_affairs_amount").toString() : null); + ps.setString(10, zone.get("recovery_emp") != null ? zone.get("recovery_emp").toString() : null); + ps.setString(11, fileMovedBy); + }); + + // Batch update for pension benefits +// String pensionInsertQuery = +// "INSERT INTO pension_benefits_history (emp_no,temp_id,file_pending,pension_number,ledger_number,benefit_pension,benefit_pension_amount,benefit_dcrg,benefit_dcrg_amount,benefit_commutation,benefit_commutation_amount,file_moved_by) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"; +// +// jdbcTemplate.batchUpdate(pensionInsertQuery, pension_details, pension_details.size(), (ps, pension) -> { +// ps.setString(1, pension.get("emp_no").toString()); +// ps.setString(2, pension.get("temp_id").toString()); +// ps.setString(3, pension.get("file_pending").toString()); +// ps.setString(4, pension.get("pension_number").toString()); +// ps.setString(5, pension.get("ledger_number").toString()); +// ps.setString(6, pension.get("benefit_pension").toString()); +// ps.setString(7, pension.get("benefit_pension_amount") != null ? pension.get("benefit_pension_amount").toString() : null); +// ps.setString(8, pension.get("benefit_dcrg").toString()); +// ps.setString(9, pension.get("benefit_dcrg_amount") != null ? pension.get("benefit_dcrg_amount").toString() : null); +// ps.setString(10, pension.get("benefit_commutation").toString()); +// ps.setString(11, pension.get("benefit_commutation_amount") != null ? pension.get("benefit_commutation_amount").toString() : null); +// ps.setString(12, fileMovedBy); +// +// }); + + return true; // All insertions succeeded + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + private boolean CheckFieldsforComplete(String tempId) { + + // Define the SQL query + String sql = "SELECT \r\n" + + " CASE \r\n" + + " WHEN zb.gpf = 'yes' AND zb.spfgs = 'yes' AND zb.private_affairs = 'yes' AND zb.dcrg = 'yes' \r\n" + + " AND pb.benefit_pension = 'yes' AND pb.benefit_dcrg = 'yes' AND pb.benefit_commutation = 'yes' THEN 1 ELSE 0 \r\n" + + " END AS allYes \r\n" + + "FROM zone_benefits AS zb\r\n" + + "JOIN pension_benefits AS pb ON zb.temp_id = pb.temp_id \r\n" + + "WHERE zb.temp_id = ? "; + + + try { + // Use queryForObject to get a single boolean result + Boolean result = jdbcTemplate.queryForObject(sql, Boolean.class, tempId); + + System.out.println("result============ "+result); + + return result != null && result; // Return the result if not null + } catch (Exception e) { + e.printStackTrace(); // Log the exception if needed + } + + return false; // Return false if an exception occurs + } + + private boolean CheckFieldsforDept(String tempId) { + + // Define the SQL query + String sql = "SELECT \r\n" + + " CASE \r\n" + + " WHEN zb.gpf = 'yes' AND zb.spfgs = 'yes' AND zb.private_affairs = 'yes' AND zb.dcrg = 'yes' \r\n" + + " THEN 1 ELSE 0 \r\n" + + " END AS allYes\r\n" + + "FROM zone_benefits AS zb\r\n" + + "WHERE zb.temp_id = ?"; + + + try { + // Use queryForObject to get a single boolean result + Boolean result = jdbcTemplate.queryForObject(sql, Boolean.class, tempId); + + return result != null && result; // Return the result if not null + } catch (Exception e) { + e.printStackTrace(); // Log the exception if needed + } + + return false; // Return false if an exception occurs + } +} diff --git a/backend/pensioner/service/DropdownService.java b/backend/pensioner/service/DropdownService.java new file mode 100644 index 0000000..3997afa --- /dev/null +++ b/backend/pensioner/service/DropdownService.java @@ -0,0 +1,45 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +@Service +public class DropdownService { + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + public List> getRetrimentTypes() { + String sql = "SELECT id,retriment_type FROM type_of_retriment"; + return jdbcTemplate.queryForList(sql); + } + + public List> getCategoryTypes() { + String sql = "SELECT id,category_type FROM type_of_category"; + return jdbcTemplate.queryForList(sql); + } + + public List> getProvisionalReasonTypes() { + String sql = "SELECT id,provisional_reason FROM reason_for_provisional"; + return jdbcTemplate.queryForList(sql); + } + + + + public List> getGisEntryTypes() { + String sql = "SELECT id,gis_entry FROM gis_entry_type"; + return jdbcTemplate.queryForList(sql); + } +} diff --git a/backend/pensioner/service/FileClosingService.java b/backend/pensioner/service/FileClosingService.java new file mode 100644 index 0000000..ffd5104 --- /dev/null +++ b/backend/pensioner/service/FileClosingService.java @@ -0,0 +1,194 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.dao.EmptyResultDataAccessException; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import in.gov.chennaicorporation.gccoffice.configuration.AppConfig; + +@Service +public class FileClosingService { + + @Autowired + private JdbcTemplate jdbcTemplate; + + private RestTemplate restTemplate; + private ObjectMapper objectMapper; + @Autowired + private AppConfig appconfig; + + public FileClosingService(RestTemplate restTemplate, ObjectMapper objectMapper) { + this.restTemplate = restTemplate; + this.objectMapper = objectMapper; + } + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + + public List> fetchEmployeeByTempId(String tempId) { + + System.out.println("inside"); + + String sql = "SELECT * " + + "FROM pensioner_details pd " + + "where pd.file_category=1 and pd.file_status < 11 and pd.temp_id = ? and pd.is_closed=0 " ; + + + System.out.println("outside"); + System.out.println(sql); + + return jdbcTemplate.queryForList(sql,tempId); + + + } + + + public String getTempId(String empCode,Integer deptId,Integer file_cat) { + String query = "SELECT temp_id FROM pensioner_details WHERE emp_no = ? AND file_category = ? AND dept_id = ?"; + + try { + return jdbcTemplate.queryForObject(query, String.class,empCode,file_cat,deptId); + } catch (EmptyResultDataAccessException e) { + return null; // or handle as needed + } + + } + + + public List> fetchEmployeeById(String tempId) { + + String sql = "SELECT pd.*, zb.gpf, zb.gpf_amount, zb.spfgs, zb.spfgs_amount, zb.dcrg, " + + "zb.private_affairs, zb.private_affairs_amount, zb.recovery_emp, " + + "pb.file_pending, pb.pension_number, pb.ledger_number, pb.benefit_pension, " + + "pb.benefit_pension_amount, pb.benefit_dcrg, pb.benefit_dcrg_amount " + + "FROM pensioner_details pd " + + "LEFT JOIN zone_benefits zb ON pd.temp_id = zb.temp_id " + + "LEFT JOIN pension_benefits pb ON pd.temp_id = pb.temp_id "+ + "where pd.temp_id = ? "; + + + return jdbcTemplate.queryForList(sql,tempId); + } + + + public boolean updateEntryDetails(Map requestData) { + + System.out.println("requestdata"+requestData); + + // TODO Auto-generated method stub + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby =(String)requestData.get("filemovedby"); + + String serviceDeath =(String)requestData.get("serviceDeath"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + + + int deptId = Integer.parseInt(dept_Id); + int filestatus=12; + + // Update file_status in pensioner_details + String updateQuery = "update pensioner_details set service_death=?,file_moved_date=?,remarks=?,updated_date= CURRENT_TIMESTAMP,is_closed=1 WHERE temp_id = ? LIMIT 1"; + int rowsUpdated = jdbcTemplate.update(updateQuery,serviceDeath,dateToAudit, remarks,tempId); + + + System.out.println("Rows inserted in pd:"+rowsUpdated); + if(rowsUpdated>0) + { + // Optional: Insert into file movement history for auditing + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks,temp_id) VALUES (?,?, ?, ?, ?, ?)"; + int rowsUpdated1=jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks,tempId); + System.out.println("Rows inserted in fmh:"+rowsUpdated1); + + return true; + } + else { + return false; + } + + } + + + // save fileclosing details + + public boolean saveclosinghistory(List> emp_details,String filemovedby) { + try { + // Loop through the list of employee details + for (Map emp : emp_details) { + + // Extract individual fields from the map + String empNo = emp.get("emp_no").toString(); + String empName = emp.get("emp_name").toString(); + String deptName = emp.get("dept_name").toString(); + String designation = emp.get("designation").toString(); + String serviceDeath=emp.get("service_death").toString(); + String fileCategoryName = emp.get("file_category_name").toString(); + String retirement_date = emp.get("retirement_date").toString(); + String retirement_class = emp.get("retirement_class").toString(); + String type_of_retirement = emp.get("type_of_retirement").toString(); + String fileMovedDate = emp.get("file_moved_date").toString(); + String remarks = emp.get("remarks").toString(); + int fileStatus = Integer.parseInt(emp.get("file_status").toString()); + String fileEntryType = emp.get("file_entry_type").toString(); + int file_category = Integer.parseInt(emp.get("file_category").toString()); + int dept_id = Integer.parseInt(emp.get("dept_id").toString()); + String temp_id = emp.get("temp_id").toString(); + + // Prepare the insert query + String insertQuery ="INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, service_death,file_moved_date, remarks,file_category,file_status,file_entry_type,file_moved_by,dept_id,file_category_name,temp_id) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?)"; + + // Execute the query + int rowsInserted = jdbcTemplate.update(insertQuery, empNo, empName, deptName,designation,serviceDeath,fileMovedDate,remarks,file_category,fileStatus,fileEntryType,filemovedby,dept_id,fileCategoryName,temp_id); + System.out.println("Rows inserted in pdh:"+rowsInserted); + // Check if the insertion was successful + if (rowsInserted <= 0) { + return false; // Return false if any insertion fails + } + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + + //closed list + + public List> fetchClosingEmployee() { + + System.out.println("inside"); + + String sql = "SELECT * " + + "FROM pensioner_details pd " + + "where pd.file_category=1 and pd.file_status < 11 and pd.is_closed=1 "; + + + return jdbcTemplate.queryForList(sql); + + + } + + + + + + +} diff --git a/backend/pensioner/service/NewEntryService.java b/backend/pensioner/service/NewEntryService.java new file mode 100644 index 0000000..bbb3f7e --- /dev/null +++ b/backend/pensioner/service/NewEntryService.java @@ -0,0 +1,762 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import java.util.Comparator; +import java.util.Date; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.dao.EmptyResultDataAccessException; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +import in.gov.chennaicorporation.gccoffice.configuration.AppConfig; + +@Service +public class NewEntryService { + + + @Autowired + private JdbcTemplate jdbcTemplate; + + private RestTemplate restTemplate; + private ObjectMapper objectMapper; + @Autowired + private AppConfig appconfig; + + public NewEntryService(RestTemplate restTemplate, ObjectMapper objectMapper) { + this.restTemplate = restTemplate; + this.objectMapper = objectMapper; + } + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + + public Map fetchEmplyeeDetails(String fromDate, String toDate, Integer deptId) { + Map response = new HashMap<>(); + + String apiUrl = appconfig.qaqcurl + "serviceId=common_api" + + "&jsonResp=Yes" + + "&subService=getEmpPenDetDuration" + + "&fromDate=" + fromDate + + "&toDate=" + toDate + + "&deptId=" + deptId; + + System.out.println("url: " + apiUrl); + System.out.println("deptId:" + deptId); + try { + String rawResponse = restTemplate.getForObject(apiUrl, String.class); + System.out.println("Raw Response: " + rawResponse); // Debugging step + + if (isValidJson(rawResponse)) { + JsonNode jsonResponse = objectMapper.readTree(rawResponse); + + // Extract the "ListResult" array + JsonNode details = jsonResponse.path("ListResult"); + + if (details.isArray() && details.size() > 0) { + List> list = new ArrayList<>(); + for (JsonNode detail : details) { + Map listResult = new HashMap<>(); + listResult.put("RETIREMENT_DATE", getNonNullValue(detail.path("RETIREMENT_DATE"))); + listResult.put("DEATH_DATE", getNonNullValue(detail.path("DEATH_DATE"))); + listResult.put("COMMUNITY_NAME", getNonNullValue(detail.path("COMMUNITY_NAME"))); + listResult.put("GROUP_TYPE", getNonNullValue(detail.path("GROUP_TYPE"))); + listResult.put("ID_DEPT", getNonNullValue(detail.path("ID_DEPT"))); + listResult.put("EMPLOYEE_CODE", getNonNullValue(detail.path("EMPLOYEE_CODE"))); + listResult.put("FUNCTIONARY", getNonNullValue(detail.path("FUNCTIONARY"))); + listResult.put("IS_HANDICAPPED", getNonNullValue(detail.path("IS_HANDICAPPED"))); + listResult.put("GENDER", getNonNullValue(detail.path("GENDER"))); + listResult.put("DATE_OF_BIRTH", getNonNullValue(detail.path("DATE_OF_BIRTH"))); + listResult.put("DATE_OF_APPOINTMENT", getNonNullValue(detail.path("DATE_OF_APPOINTMENT"))); + listResult.put("DESIGNATION", getNonNullValue(detail.path("DESIGNATION"))); + listResult.put("EMPLOYEE_NAME", getNonNullValue(detail.path("EMPLOYEE_NAME"))); + listResult.put("DEPARTMENT", getNonNullValue(detail.path("DEPARTMENT"))); + list.add(listResult); + } + // Sort the list by RETIREMENT_DATE in ascending order + list.sort(Comparator.comparing(map -> parseDate(((Map) map).get("RETIREMENT_DATE")))); + + response.put("list", list); + + } else { + response.put("list", Collections.emptyList()); + } + } else { + System.err.println("Invalid JSON Response: " + rawResponse); + response.put("list", Collections.emptyList()); + } + + } catch (Exception e) { + e.printStackTrace(); + response.put("list", Collections.emptyList()); + } + return response; + } + + + + + public Map fetchEmplyeeDetailsbyCode(String empCode) { + Map response = new HashMap<>(); + + String apiUrl = appconfig.qaqcurl + "serviceId=common_api" + + "&jsonResp=Yes" + + "&subService=getEmpPenDet" + + "&empCode=" + empCode; + + System.out.println("url: " + apiUrl); + System.out.println("empCode:" + empCode); + try { + String rawResponse = restTemplate.getForObject(apiUrl, String.class); + System.out.println("Raw Response: " + rawResponse); // Debugging step + + if (isValidJson(rawResponse)) { + JsonNode jsonResponse = objectMapper.readTree(rawResponse); + + // Extract the "ListResult" array + JsonNode details = jsonResponse.path("ListResult"); + + if (details.isArray() && details.size() > 0) { + List> list = new ArrayList<>(); + for (JsonNode detail : details) { + Map listResult = new HashMap<>(); + listResult.put("RETIREMENT_DATE", formatToISODate(getNonNullValue(detail.path("RETIREMENT_DATE")))); + listResult.put("DEATH_DATE", getNonNullValue(detail.path("DEATH_DATE"))); + listResult.put("COMMUNITY_NAME", getNonNullValue(detail.path("COMMUNITY_NAME"))); + listResult.put("GROUP_TYPE", getNonNullValue(detail.path("GROUP_TYPE"))); + listResult.put("ID_DEPT", getNonNullValue(detail.path("ID_DEPT"))); + listResult.put("EMPLOYEE_CODE", getNonNullValue(detail.path("EMPLOYEE_CODE"))); + listResult.put("FUNCTIONARY", getNonNullValue(detail.path("FUNCTIONARY"))); + listResult.put("IS_HANDICAPPED", getNonNullValue(detail.path("IS_HANDICAPPED"))); + listResult.put("GENDER", getNonNullValue(detail.path("GENDER"))); + listResult.put("DATE_OF_BIRTH", getNonNullValue(detail.path("DATE_OF_BIRTH"))); + listResult.put("DATE_OF_APPOINTMENT", getNonNullValue(detail.path("DATE_OF_APPOINTMENT"))); + listResult.put("DESIGNATION", getNonNullValue(detail.path("DESIGNATION"))); + listResult.put("EMPLOYEE_NAME", getNonNullValue(detail.path("EMPLOYEE_NAME"))); + listResult.put("DEPARTMENT", getNonNullValue(detail.path("DEPARTMENT"))); + list.add(listResult); + } + // Sort the list by RETIREMENT_DATE in ascending order + list.sort(Comparator.comparing(map -> parseDate(((Map) map).get("RETIREMENT_DATE")))); + response.put("list", list); + + } else { + response.put("list", Collections.emptyList()); + } + } else { + System.err.println("Invalid JSON Response: " + rawResponse); + response.put("list", Collections.emptyList()); + } + + } catch (Exception e) { + e.printStackTrace(); + response.put("list", Collections.emptyList()); + } + return response; + } + + + // Utility method to convert DD-MM-YYYY to YYYY-MM-DD + private String formatToISODate(String date) { + if (date == null || date.isEmpty()) { + return ""; + } + try { + SimpleDateFormat inputFormat = new SimpleDateFormat("dd-MM-yyyy"); + SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date parsedDate = inputFormat.parse(date); + return outputFormat.format(parsedDate); + } catch (ParseException e) { + System.err.println("Date parsing error: " + e.getMessage()); + return date; // Return original date if parsing fails + } + } + + + //getting deptId from login + public Integer getloginuserDeptId(int userId) { + String query = "select emp_dept_id from login_details where gcc_login_id = ?"; + try { + // Use queryForObject to return a single value + return jdbcTemplate.queryForObject(query, Integer.class, userId); + } catch (EmptyResultDataAccessException e) { + // Log the issue and handle the case when no result is found + System.out.println("No department found for user ID: " + userId); + return null; // Or return a default value if required + } + } + + + + + private LocalDate parseDate(String date) { + if (date == null || date.isEmpty()) { + return LocalDate.MIN; // Use a minimum value for invalid or empty dates + } + try { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); // Adjust format as needed + return LocalDate.parse(date, formatter); + } catch (DateTimeParseException e) { + e.printStackTrace(); + return LocalDate.MIN; // Fallback for invalid dates + } + } + + + private boolean isValidJson(String json) { + try { + objectMapper.readTree(json); + return true; + } catch (Exception e) { + return false; + } + } + + + private String getNonNullValue(JsonNode node) { + //String value = node.isMissingNode() || node.isNull() || node.asText().isEmpty() ? "N/A" : node.asText(); + String value = node.isMissingNode() || node.isNull() || node.asText().isEmpty() || node.asText().isBlank() ? "N/A" : node.asText(); + //2024-565EAT + return "null".equals(value) ? "N/A" : value; // Check for string "null" + } + + public String getDeptNameById(Integer deptId) { + String query = "SELECT dept_name FROM department_master WHERE dept_id=? AND isactive=1 AND isdelete=0"; + + try { + // Query execution and returning the department name + return jdbcTemplate.queryForObject(query, new Object[]{deptId}, String.class); + } catch (Exception e) { + // Handle exception if deptId is not found or query fails + e.printStackTrace(); + return null; + } + } + + + + @Transactional + public boolean saveRetirementEmployeeDetails(Map requestData) { + try { + + String empNo = (String) requestData.get("empNo"); + String empName = (String) requestData.get("empName"); + String deptName = (String) requestData.get("deptName"); + String designation = (String) requestData.get("designation"); + String typeOfRetirement = (String) requestData.get("typeOfRetirement"); + String retirementdate = (String) requestData.get("retirementdate"); + String retirementclass = (String) requestData.get("retirementclass"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby =(String)requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + String file_category = (String) requestData.get("filecategory"); + + int deptId = Integer.parseInt(dept_Id); + + int filecategory = Integer.parseInt(file_category); + // Execute a query to fetch the required String based on filecategory + String additionalDataQuery = "SELECT file_name FROM file_category_master WHERE id = ?"; + String fc_name = jdbcTemplate.queryForObject(additionalDataQuery, + String.class, + filecategory + ); + System.out.println("fc_name==="+fc_name); + + int filestatus = 1; + String fileentrytype ="NEW"; + + System.out.println("filemovedby====="+filemovedby); + + // Generate the variable (PR + current date + current time) + String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss")); + String temp_id = "PR" + currentTimestamp; + + String query = "INSERT INTO pensioner_details (emp_no, emp_name, dept_name, designation, type_of_retirement,retirement_date ,retirement_class,file_moved_date, remarks,file_category,file_status,file_entry_type,dept_id,file_category_name,temp_id) VALUES (?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?)"; + int rowsInserted = jdbcTemplate.update(query, empNo, empName, deptName, designation, typeOfRetirement,retirementdate ,retirementclass,dateToAudit, remarks,filecategory,filestatus,fileentrytype,deptId,fc_name,temp_id); + + String query1 = "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, type_of_retirement,retirement_date ,retirement_class,file_moved_date, remarks,file_category,file_status,file_entry_type,file_moved_by,dept_id,file_category_name,temp_id) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?)"; + int rowsInsertedHistory = jdbcTemplate.update(query1, empNo, empName, deptName, designation, typeOfRetirement,retirementdate ,retirementclass,dateToAudit, remarks,filecategory,filestatus,fileentrytype,filemovedby,deptId,fc_name,temp_id); + + String query2 = "INSERT INTO file_movement_history (emp_no,file_moved_date,file_status,file_moved_by,remarks,temp_id) VALUES (?, ?, ?, ?, ?,?)"; + int rowsInsertedFileMovement = jdbcTemplate.update(query2, empNo,dateToAudit,filestatus,filemovedby,remarks,temp_id); + + + return rowsInserted > 0 && rowsInsertedHistory > 0 && rowsInsertedFileMovement > 0; + + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false if an exception occurs + } + } + + + public List> getRegisteredEmps(Integer deptId,Integer file_category) { + String query="select distinct emp_no from pensioner_details where dept_id=?"; + + List>emps= jdbcTemplate.queryForList(query,deptId); + System.out.println("emps===="+emps); + if(emps.isEmpty()) + { + return Collections.emptyList(); + } + else + { + return emps; + } + + } + + public Integer getRetirementFileCategoryId() { + String query = "SELECT id FROM file_category_master WHERE file_name = 'Retirement'"; + try { + return jdbcTemplate.queryForObject(query, Integer.class); + } catch (EmptyResultDataAccessException e) { + return null; // or handle as needed + } + } + + public Integer getFamilyPensionFileCategoryId() { + String query = "SELECT id FROM file_category_master WHERE file_name = 'Family Pension'"; + try { + return jdbcTemplate.queryForObject(query, Integer.class); + } catch (EmptyResultDataAccessException e) { + return null; // or handle as needed + } + } + + public Integer getPendencyFileCategoryId() { + String query = "SELECT id FROM file_category_master WHERE file_name = 'Pendency'"; + try { + return jdbcTemplate.queryForObject(query, Integer.class); + } catch (EmptyResultDataAccessException e) { + return null; // or handle as needed + } + } + + public Integer getGISFileCategoryId() { + String query = "SELECT id FROM file_category_master WHERE file_name = 'GIS'"; + try { + return jdbcTemplate.queryForObject(query, Integer.class); + } catch (EmptyResultDataAccessException e) { + return null; // or handle as needed + } + } + + public Integer getPRFileCategoryId() { + String query = "SELECT id FROM file_category_master WHERE file_name = 'Provisional Retirement'"; + try { + return jdbcTemplate.queryForObject(query, Integer.class); + } catch (EmptyResultDataAccessException e) { + return null; // or handle as needed + } + } + + public Integer getCPSFileCategoryId() { + String query = "SELECT id FROM file_category_master WHERE file_name = 'Contributory Pension Scheme'"; + try { + return jdbcTemplate.queryForObject(query, Integer.class); + } catch (EmptyResultDataAccessException e) { + return null; // or handle as needed + } + } + + + @Transactional + public boolean saveFamilyPensionDetails(Map requestData) { + try { + + // Extract data from the request body + String empNo = (String) requestData.get("empNo"); + String empName = (String) requestData.get("empName"); + String deptName = (String) requestData.get("deptName"); + String designation = (String) requestData.get("designation"); + String sanctionedgis = (String) requestData.get("sanctionedgis"); + String serviceDeath =(String) requestData.get("serviceDeath"); + String deceased =(String) requestData.get("deceased"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String remarks = (String) requestData.get("remarks"); + String filemovedby =(String)requestData.get("filemovedby"); + + String pendingDuration = (String) requestData.get("pendingDuration"); + String reasonPending = (("yes".equals(pendingDuration) || "no".equals(pendingDuration)) + && requestData.get("reasonPending") != null) ? requestData.get("reasonPending").toString() : null; + + String dept_Id = (String) requestData.get("deptId"); + int deptId = Integer.parseInt(dept_Id); + + String file_category = (String) requestData.get("filecategory"); + int filecategory = Integer.parseInt(file_category); + + // Execute a query to fetch the required String based on filecategory + String additionalDataQuery = "SELECT file_name FROM file_category_master WHERE id = ?"; + String fc_name = jdbcTemplate.queryForObject(additionalDataQuery, new Object[]{filecategory}, String.class); + System.out.println("fc_name==="+fc_name); + + + int filestatus = 1; + String fileentrytype ="NEW"; + int rowsInserted=0; + + // Generate the variable (PR + current date + current time) + String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss")); + String temp_id = "PF" + currentTimestamp; + + String query = "INSERT INTO pensioner_details (emp_no, emp_name, dept_name, designation, sanctioned_gis_amount,service_death,relationship_deceased,file_moved_date, remarks,dept_id,file_category,file_status,file_entry_type,file_category_name,temp_id,pending_duration,reason_for_pending) VALUES (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)"; + rowsInserted = jdbcTemplate.update(query, empNo, empName, deptName, designation, sanctionedgis,serviceDeath ,deceased,dateToAudit, remarks,deptId,filecategory,filestatus,fileentrytype,fc_name,temp_id, pendingDuration,reasonPending); + + String query1 = "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, sanctioned_gis_amount,service_death,relationship_deceased,file_moved_date, remarks,dept_id,file_category,file_status,file_entry_type,file_moved_by,file_category_name,temp_id,pending_duration,reason_for_pending) VALUES (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?)"; + rowsInserted = jdbcTemplate.update(query1, empNo, empName, deptName, designation, sanctionedgis,serviceDeath ,deceased,dateToAudit, remarks,deptId,filecategory,filestatus,fileentrytype,filemovedby,fc_name,temp_id, pendingDuration,reasonPending); + + String query2 = "INSERT INTO file_movement_history (emp_no,file_moved_date,file_status,file_moved_by,remarks,temp_id) VALUES (?, ?, ?, ?, ?,?)"; + rowsInserted = jdbcTemplate.update(query2, empNo,dateToAudit,filestatus,filemovedby,remarks,temp_id); + + + return rowsInserted > 0; + + + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false if an exception occurs + } + } + + + ///gis saving method service + @Transactional + public boolean savenewEntryDetailsGis(Map requestData) { + try { + + + String empNo = (String) requestData.get("empNo"); + String empName = (String) requestData.get("empName"); + String deptName = (String) requestData.get("deptName"); + String designation = (String) requestData.get("designation"); + String dateToPension = (String) requestData.get("dateToPension"); + String filemovedby =(String)requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String serviceDeath =(String) requestData.get("serviceDeath"); + String deceased =(String) requestData.get("deceased"); + String gisentry = (String) requestData.get("gisentry"); + String gisAdvanceamount =(String) requestData.get("gisAdvanceamount"); + String gisAdvance = (String) requestData.get("gisAdvance"); + String dept_Id = (String) requestData.get("deptId"); + int deptId = Integer.parseInt(dept_Id); + + String file_category = (String) requestData.get("filecategory"); + int filecategory = Integer.parseInt(file_category); + // Execute a query to fetch the required String based on filecategory + String additionalDataQuery = "SELECT file_name FROM file_category_master WHERE id = ?"; + String fc_name = jdbcTemplate.queryForObject(additionalDataQuery, new Object[]{filecategory}, String.class); + System.out.println("fc_name==="+fc_name); + + int filestatus = 7; + String fileentrytype ="NEW"; + + System.out.println("filemovedby====="+filemovedby); + + // Generate the variable (PR + current date + current time) + String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss")); + String temp_id = "PG" + currentTimestamp; + + String query = "INSERT INTO pensioner_details (emp_no, emp_name, dept_name, designation,file_moved_date, remarks,service_death,relationship_deceased,gis_entry,gis_advance_amount,gis_advance ,file_category,file_status,file_entry_type,dept_id,file_category_name,temp_id) VALUES (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)"; + int rowsInserted = jdbcTemplate.update(query, empNo, empName, deptName, designation, dateToPension, remarks,serviceDeath,deceased,gisentry,gisAdvanceamount,gisAdvance,filecategory,filestatus,fileentrytype,deptId,fc_name,temp_id); + + String query1 = "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation,file_moved_date, remarks,service_death,relationship_deceased,gis_entry,gis_advance_amount,gis_advance ,file_category,file_status,file_entry_type,file_moved_by,dept_id,file_category_name,temp_id) VALUES (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?)"; + int rowsInsertedHistory = jdbcTemplate.update(query1, empNo, empName, deptName, designation,dateToPension, remarks,serviceDeath,deceased,gisentry,gisAdvanceamount,gisAdvance,filecategory,filestatus,fileentrytype,filemovedby,deptId,fc_name,temp_id); + + String query2 = "INSERT INTO file_movement_history (emp_no,file_moved_date,file_status,file_moved_by,remarks,temp_id) VALUES (?, ?, ?, ?, ?,?)"; + int rowsInsertedFileMovement = jdbcTemplate.update(query2, empNo,dateToPension,filestatus,filemovedby,remarks,temp_id); +// + + return rowsInserted > 0 && rowsInsertedHistory > 0 && rowsInsertedFileMovement > 0; + + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false if an exception occurs + } + } + + + + //provisional retirement method service + @Transactional + public boolean savenewEntryDetailsProvisionalretirement(Map requestData) { + try { + + String empNo = (String) requestData.get("empNo"); + String empName = (String) requestData.get("empName"); + String deptName = (String) requestData.get("deptName"); + String designation = (String) requestData.get("designation"); + String typeOfRetirement = (String) requestData.get("typeOfRetirement"); + + String ReasonofPension = (String) requestData.get("ReasonofPension"); + String retirementClass = (String) requestData.get("retirementClass"); + String retirementDate = (String) requestData.get("retirementDate"); + String pendingDuration = (String) requestData.get("pendingDuration"); + String reasonofPending = (String) requestData.get("reasonofPending"); + String dp = (String) requestData.get("dp"); + String otherReason = (String) requestData.get("otherReason"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby =(String)requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + int deptId = Integer.parseInt(dept_Id); + + String file_category = (String) requestData.get("filecategory"); + int filecategory = Integer.parseInt(file_category); + // Execute a query to fetch the required String based on filecategory + String additionalDataQuery = "SELECT file_name FROM file_category_master WHERE id = ?"; + String fc_name = jdbcTemplate.queryForObject(additionalDataQuery, new Object[]{filecategory}, String.class); + System.out.println("fc_name==="+fc_name); + + int filestatus = 7; + String fileentrytype ="NEW"; + + System.out.println("filemovedby====="+filemovedby); + + // Generate the variable (PR + current date + current time) + String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss")); + String temp_id = "PPR" + currentTimestamp; + + String query = "INSERT INTO pensioner_details (emp_no, emp_name, dept_name, designation,type_of_retirement,retirement_class,retirement_date , reason_for_provisional_pension,file_moved_date, pending_duration,reason_for_pending,dp,remarks,file_category,file_status,file_entry_type,dept_id,file_category_name,others_provisional_pension,temp_id) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?)"; + int rowsInserted = jdbcTemplate.update(query, empNo, empName, deptName, designation, typeOfRetirement,retirementClass ,retirementDate , ReasonofPension,dateToAudit,pendingDuration,reasonofPending,dp,remarks,filecategory,filestatus,fileentrytype,deptId,fc_name,otherReason,temp_id); + + String query1 = "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation,type_of_retirement,retirement_class, retirement_date,reason_for_provisional_pension ,file_moved_date, remarks,pending_duration,reason_for_pending,dp ,file_category,file_status,file_entry_type,file_moved_by,dept_id,file_category_name,others_provisional_pension,temp_id) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?,?)"; + int rowsInsertedHistory = jdbcTemplate.update(query1, empNo, empName, deptName, designation,typeOfRetirement,retirementClass,retirementDate ,ReasonofPension,dateToAudit,pendingDuration,reasonofPending,dp,remarks,filecategory,filestatus,fileentrytype,filemovedby,deptId,fc_name,otherReason,temp_id); + + String query2 = "INSERT INTO file_movement_history (emp_no,file_moved_date,file_status,file_moved_by,remarks,temp_id) VALUES (?, ?, ?, ?, ?,?)"; + int rowsInsertedFileMovement = jdbcTemplate.update(query2, empNo,dateToAudit,filestatus,filemovedby,remarks,temp_id); +// + + return rowsInserted > 0 && rowsInsertedHistory > 0 && rowsInsertedFileMovement > 0; + + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false if an exception occurs + } + } + + //cps saving method: + @Transactional + public boolean savenewEntryDetailspensionscheme(Map requestData) { + try { + + // Safely extract input values from requestData + String empNo = requestData.get("empNo") != null ? requestData.get("empNo").toString() : null; + String empName = requestData.get("empName") != null ? requestData.get("empName").toString() : null; + String deptName = requestData.get("deptName") != null ? requestData.get("deptName").toString() : null; + String designation = requestData.get("designation") != null ? requestData.get("designation").toString() : null; + String classes = requestData.get("classes") != null ? requestData.get("classes").toString() : null; + String fileMovedBy = requestData.get("fileMovedBy") != null ? requestData.get("fileMovedBy").toString() : null; + String remarks = requestData.get("remarks") != null ? requestData.get("remarks").toString() : null; + String retirementType = requestData.get("retirementType") != null ? requestData.get("retirementType").toString() : null; + + String uac = (String) requestData.get("uac"); + String uacDate = "yes".equals(uac) && requestData.get("uacDate") != null ? requestData.get("uacDate").toString() : null; + + String pendingDuration = (String) requestData.get("pendingDuration"); + String reasonPending = "yes".equals(pendingDuration) && requestData.get("reasonPending") != null + ? requestData.get("reasonPending").toString() : null; + + String cps =(String) requestData.get("cps"); + String cpsAmount = "yes".equals(cps) && requestData.get("cpsAmount") != null ? requestData.get("cpsAmount").toString() : null; + + String elOrLpa = (String)requestData.get("elOrLpa"); + String elOrLpaAmount = "yes".equals(elOrLpa) && requestData.get("elOrLpaAmount") != null ? requestData.get("elOrLpaAmount").toString() : null; + + String spfgs = (String) requestData.get("spfgs"); + String spfgsAmount = "yes".equals(spfgs) && requestData.get("spfgsAmount") != null ? requestData.get("spfgsAmount").toString() : null; + + int deptId = requestData.get("deptId") != null ? Integer.parseInt(requestData.get("deptId").toString()) : 0; + + // Default static values + String file_category = (String) requestData.get("filecategory"); + int filecategory = Integer.parseInt(file_category); + int fileStatus = 11; + String fileEntryType = "FILE_COMPLETED"; + + // Fetch file_category_name dynamically + String fileCategoryQuery = "SELECT file_name FROM file_category_master WHERE id = ?"; + String fileCategoryName = jdbcTemplate.queryForObject(fileCategoryQuery, new Object[]{filecategory}, String.class); + + // Generate the variable (PR + current date + current time) + String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss")); + String temp_id = "PC" + currentTimestamp; + + // Insert into cps_pensioner_details + String queryDetails = "INSERT INTO cps_pensioner_details " + + "(emp_no, emp_name, dept_name, designation, file_category, retirement_class, type_of_retirement, uac, uac_date, " + + "pending_duration,reason_for_pending ,cps, cps_amount, el_or_lpa, el_or_lpa_amount, spfgs, spfgs_amount, remarks, " + + "file_status, file_entry_type, dept_id, file_category_name,temp_id) " + + "VALUES (?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?)"; + int rowsInsertedDetails = jdbcTemplate.update(queryDetails, + empNo, empName, deptName, designation, filecategory, classes, retirementType, uac, uacDate, + pendingDuration,reasonPending ,cps, cpsAmount, elOrLpa, elOrLpaAmount, spfgs, spfgsAmount, remarks, + fileStatus, fileEntryType, deptId, fileCategoryName,temp_id); + + // Insert into cps_pensioner_details_history + String queryHistory = "INSERT INTO cps_pensioner_details_history " + + "(emp_no, emp_name, dept_name, designation, file_category, retirement_class, type_of_retirement, uac, uac_date, " + + "pending_duration,reason_for_pending ,cps, cps_amount, el_or_lpa, el_or_lpa_amount, spfgs, spfgs_amount, remarks, " + + "file_status, file_entry_type, file_moved_by, dept_id, file_category_name,temp_id) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)"; + int rowsInsertedHistory = jdbcTemplate.update(queryHistory, + empNo, empName, deptName, designation, filecategory, classes, retirementType, uac, uacDate, + pendingDuration, reasonPending,cps, cpsAmount, elOrLpa, elOrLpaAmount, spfgs, spfgsAmount, remarks, + fileStatus, fileEntryType, fileMovedBy, deptId, fileCategoryName,temp_id); + + // Current date and time + LocalDateTime fileMovedDate = LocalDateTime.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String formattedFileMovedDate = fileMovedDate.format(formatter); + + // Insert into file_movement_history + String queryFileMovement = "INSERT INTO file_movement_history (emp_no, file_status,file_moved_date, file_moved_by, remarks,temp_id) " + + "VALUES (?, ?, ?, ?, ?,?)"; + int rowsInsertedFileMovement = jdbcTemplate.update(queryFileMovement, empNo, fileStatus, formattedFileMovedDate, fileMovedBy, remarks,temp_id); + + // Return true if all inserts were successful + return rowsInsertedDetails > 0 && rowsInsertedHistory > 0 && rowsInsertedFileMovement > 0; + + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false if an exception occurs + } + } + + + //pendency saving method + @Transactional + public boolean savePendencyDetails(Map requestData) { + try { + + String empNo = (String) requestData.get("empNo"); + String empName = (String) requestData.get("empName"); + String deptName = (String) requestData.get("deptName"); + String designation = (String) requestData.get("designation"); + String retirementclass = (String) requestData.get("retirementclass"); + String typeOfRetirement = (String) requestData.get("typeOfRetirement"); + String retirementDate = (String) requestData.get("retirementDate"); + //String pendencyCategory=(String)requestData.get("pendencyCategory"); + String pendencyCategory="Retirement"; + + String dateToAudit = (String) requestData.get("dateToAudit"); + String remarks = (String) requestData.get("remarks"); + String filemovedby =(String)requestData.get("filemovedby"); + + String pendingDuration = (String) requestData.get("pendingDuration"); + + String reasonPending =requestData.get("reasonPending") != null ? requestData.get("reasonPending").toString() : null; + + String dept_Id = (String) requestData.get("deptId"); + System.out.println("dept_Id = "+dept_Id); + int deptId = Integer.parseInt(dept_Id); + + String file_category = (String) requestData.get("filecategory"); + int filecategory = Integer.parseInt(file_category); + int filestatus = 1; + String fileentrytype ="NEW"; + int rowsInserted = 0; + + // Generate the variable (PR + current date + current time) + String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMyyHHmmss")); + String temp_id = "PP" + currentTimestamp; + + + String query = "INSERT INTO pensioner_details (emp_no, emp_name, dept_name, designation, retirement_class,retirement_date,pending_duration,reason_for_pending,file_moved_date,dept_id,remarks,file_category,file_status,file_entry_type,file_category_name,type_of_retirement,temp_id) VALUES (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)"; + rowsInserted = jdbcTemplate.update(query, empNo, empName, deptName, designation, retirementclass,retirementDate,pendingDuration,reasonPending,dateToAudit, deptId,remarks,filecategory,filestatus,fileentrytype,pendencyCategory,typeOfRetirement,temp_id); + + String query1 = "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, retirement_class,retirement_date,pending_duration,reason_for_pending,file_moved_date,dept_id,remarks,file_category,file_status,file_entry_type,file_category_name,type_of_retirement,file_moved_by,temp_id) VALUES (?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?)"; + rowsInserted = jdbcTemplate.update(query1, empNo, empName, deptName, designation, retirementclass,retirementDate,pendingDuration,reasonPending,dateToAudit, deptId,remarks,filecategory,filestatus,fileentrytype,pendencyCategory,typeOfRetirement,filemovedby,temp_id); + + String query2 = "INSERT INTO file_movement_history (emp_no,file_moved_date,file_status,file_moved_by,remarks,temp_id) VALUES (?,?, ?, ?, ?, ?)"; + rowsInserted = jdbcTemplate.update(query2, empNo,dateToAudit,filestatus,filemovedby,remarks,temp_id); + + + return rowsInserted > 0; + + + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false if an exception occurs + } + } + + public boolean doesEmployeeExistRPR(String empCode) { + String sql = "SELECT COUNT(*) FROM ( " + + " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (1,2,3,4,5,6) " + + " UNION ALL " + + " SELECT emp_no FROM cps_pensioner_details WHERE emp_no = ? AND file_category IN (6) " + + ") AS combined"; + // Note: Pass empCode twice since there are two placeholders. + Integer count = jdbcTemplate.queryForObject(sql, new Object[]{empCode, empCode}, Integer.class); + return count != null && count > 0; + } + + + public boolean doesEmployeeExist(String empCode) { + + String sql = "SELECT COUNT(*) FROM ( " + + " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (1,3,5) "+ + " UNION ALL " + + " SELECT emp_no FROM cps_pensioner_details WHERE emp_no = ? AND file_category IN (6) " + + ") AS combined"; + // Note: Pass empCode twice since there are two placeholders. + Integer count = jdbcTemplate.queryForObject(sql, new Object[]{empCode, empCode},Integer.class); + System.out.println("count<<<<<<<<<<<"+count); + return count != null && count > 0; + } + + + public boolean doesEmployeeExistgis(String empCode) { + String sql = "SELECT COUNT(*) FROM ( " + + " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (1,2,3,5,6) " + + " UNION ALL " + + " SELECT emp_no FROM cps_pensioner_details WHERE emp_no = ? AND file_category IN (6) " + + ") AS combined"; + // Note: Pass empCode twice since there are two placeholders. + Integer count = jdbcTemplate.queryForObject(sql, new Object[]{empCode, empCode}, Integer.class); + return count != null && count > 0; + } + + + public boolean doesEmployeeExistfp(String empCode) { + + String sql = "SELECT COUNT(*) FROM ( " + + + " SELECT emp_no FROM pensioner_details WHERE emp_no = ? AND file_category IN (1,2,3,5) AND is_closed IN (0)" + + " UNION ALL " + + + " SELECT emp_no FROM cps_pensioner_details WHERE emp_no = ? AND file_category IN (6) " + + ") AS combined"; + + // Note: Pass empCode twice since there are two placeholders. + Integer count = jdbcTemplate.queryForObject(sql, new Object[]{empCode, empCode}, Integer.class); + return count != null && count > 0; + } + + +} \ No newline at end of file diff --git a/backend/pensioner/service/PendencyAutoConversionService.java b/backend/pensioner/service/PendencyAutoConversionService.java new file mode 100644 index 0000000..16875c0 --- /dev/null +++ b/backend/pensioner/service/PendencyAutoConversionService.java @@ -0,0 +1,264 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.time.LocalDate; +import java.time.Period; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import in.gov.chennaicorporation.gccoffice.configuration.AppConfig; + +@Service +@Transactional +public class PendencyAutoConversionService { + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Autowired + private AppConfig appConfig; + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + /** + * Main method to process auto-conversion logic. + * - Fetch records where retirement date has crossed. + * - Update pensioner details. + * - Fetch employee details. + * - Save data into pensioner_details_history and file_movement_history. + */ + @Transactional + public boolean processAutoConversion() { + try { + // Step 1: Fetch temp IDs that need processing + List> tempList = getConvertingTempIds(); + if (tempList.isEmpty()) { + System.out.println("No records found for auto-conversion."); + return false; + } + + for (Map tempIdMap : tempList) { + String tempId = tempIdMap.get("temp_id") != null ? String.valueOf(tempIdMap.get("temp_id")) : null; + if (tempId == null || tempId.trim().isEmpty()) { + System.out.println("Skipping null/empty temp_id."); + continue; + } + + System.out.println("Processing tempId: " + tempId); + + // Step 2: Get file_moved_by value + String fileMovedBy = getFileMovedByTempId(tempId); + if (fileMovedBy == null) { + System.out.println("Skipping tempId " + tempId + " as fileMovedBy is NULL."); + continue; + } + + // Step 3: Update pensioner_details table + boolean updated = updateEntryDetails(tempId); + if (!updated) { + System.out.println("Failed to update pensioner_details for tempId: " + tempId); + continue; + } + + // Step 4: Fetch employee details + List> empDetails = fetchEmployeeDetails(tempId); + if (empDetails.isEmpty()) { + System.out.println("No employee details found for tempId: " + tempId); + continue; + } + + // Step 5: Save history data + boolean historySaved = saveHistory(empDetails, fileMovedBy); + if (!historySaved) { + System.out.println("Failed to save history for tempId: " + tempId); + } + } + + System.out.println("Auto-conversion process completed."); + return true; + } catch (Exception e) { + System.err.println("Exception in processAutoConversion: " + e.getMessage()); + e.printStackTrace(); + return false; + } + } + + public List> getConvertingTempIds() { + String sql = "SELECT temp_id FROM pensioner_details WHERE file_category=1 AND file_status <=8 AND retirement_date <= CURDATE() - 1"; + return jdbcTemplate.queryForList(sql); + } + + private boolean updateEntryDetails(String tempId) { + try { + LocalDate datefield = LocalDate.now(); + String formattedDate = datefield.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + String remarks = "Auto_Conversion"; + int fileCategory = 3; + String pendingDuration = "yes"; + String reasonForPending = "Retirement Date Crossed while file in Auditing"; + + String updateQuery = "UPDATE pensioner_details SET reason_for_pending=?, pending_duration=?, file_category=?, file_moved_date=?, remarks=?, updated_date=CURRENT_TIMESTAMP WHERE temp_id=?"; + int rowsUpdated = jdbcTemplate.update(updateQuery, reasonForPending, pendingDuration, fileCategory, formattedDate, remarks, tempId); + + System.out.println("Updated pensioner_details for tempId: " + tempId + " - Rows affected: " + rowsUpdated); + return rowsUpdated > 0; + } catch (Exception e) { + System.err.println("Exception in updateEntryDetails: " + e.getMessage()); + return false; + } + } + + private List> fetchEmployeeDetails(String tempId) { + String sql = "SELECT * FROM pensioner_details WHERE temp_id=?"; + return jdbcTemplate.queryForList(sql, tempId); + } + + + @Transactional + private boolean saveHistory(List> empDetails, String fileMovedBy) { + try { + String empInsertQuery = "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, type_of_retirement, " + + "retirement_date, retirement_class, file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id, pending_duration, reason_for_pending) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + jdbcTemplate.batchUpdate(empInsertQuery, empDetails, empDetails.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("type_of_retirement").toString()); + ps.setString(6, emp.get("retirement_date").toString()); + ps.setString(7, emp.get("retirement_class").toString()); + ps.setString(8, emp.get("file_moved_date").toString()); + ps.setString(9, emp.get("remarks").toString()); + ps.setInt(10, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(11, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(12, emp.get("file_entry_type").toString()); + ps.setString(13, fileMovedBy != null ? fileMovedBy : ""); + ps.setInt(14, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(15, emp.get("file_category_name").toString()); + ps.setString(16, emp.get("temp_id").toString()); + ps.setString(17, emp.get("pending_duration") != null ? emp.get("pending_duration").toString() : null); + ps.setString(18, emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null); + }); + + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks, temp_id) VALUES (?, ?, ?, ?, ?, ?)"; + + jdbcTemplate.batchUpdate(historyQuery, empDetails, empDetails.size(), (ps, his) -> { + ps.setString(1, his.get("emp_no").toString()); + ps.setString(2, his.get("file_moved_date").toString()); + ps.setString(3, his.get("file_status").toString()); + ps.setString(4, fileMovedBy != null ? fileMovedBy : ""); + ps.setString(5, his.get("remarks").toString()); + ps.setString(6, his.get("temp_id").toString()); + }); + + System.out.println("Successfully saved history for " + empDetails.size() + " records."); + return true; + } catch (Exception e) { + System.err.println("Exception in saveHistory: " + e.getMessage()); + return false; + } + } + + private String getFileMovedByTempId(String tempId) { + String sql = "SELECT file_moved_by FROM pensioner_details_history WHERE temp_id=? ORDER BY created_date ASC LIMIT 1"; + return jdbcTemplate.queryForObject(sql, String.class, tempId); + } + + + public boolean processAutoConversionForTempId(String tempId) { + try { + System.out.println("Running auto-conversion for tempId: " + tempId); + + // Step 1: Get fileMovedBy + String fileMovedBy = getFileMovedByTempId(tempId); + if (fileMovedBy == null) { + System.out.println("Skipping tempId " + tempId + " as fileMovedBy is NULL."); + return false; + } + + // Step 2: Update pensioner details + boolean updated = updateEntryDetails(tempId); + if (!updated) { + System.out.println("Failed to update pensioner_details for tempId: " + tempId); + return false; + } + + // Step 3: Fetch employee details + List> empDetails = fetchEmployeeDetails(tempId); + if (empDetails.isEmpty()) { + System.out.println("No employee details found for tempId: " + tempId); + return false; + } + + // Step 4: Save history + boolean historySaved = saveHistory(empDetails, fileMovedBy); + if (!historySaved) { + System.out.println("Failed to save history for tempId: " + tempId); + return false; + } + + System.out.println("Successfully processed tempId: " + tempId); + return true; + } catch (Exception e) { + System.err.println("Error processing tempId: " + tempId + " - " + e.getMessage()); + e.printStackTrace(); + return false; + } +} + + public List> getPendencyUpdatingDuration(){ + + String sqlQuery = "SELECT * FROM pensioner_details WHERE file_category IN (2,3) AND pending_duration='yes' AND file_status < 11"; + List> details = jdbcTemplate.queryForList(sqlQuery); + + return details; + + } + + public String calculatePendingDuration(LocalDate startDate, LocalDate endDate) { + Period period = Period.between(startDate, endDate); + + int years = period.getYears(); + int months = period.getMonths(); + int days = period.getDays(); + + if (years == 0 && months == 0 && days == 0) { + return "0 days"; // or "Same day" + } + + return (years > 0 ? years + " year " : "") + + (months > 0 ? months + " month " : "") + + (days > 0 ? days + " day" : ""); + } + + public boolean updatePendingDuration(String updateDuration, String tempId) { + String sqlQuery = "UPDATE pensioner_details SET reason_for_pending=? WHERE temp_id=?"; + int rowsUpdated = jdbcTemplate.update(sqlQuery, updateDuration, tempId); + System.out.println("Temp ID: " + tempId + " | Rows Updated: " + rowsUpdated); + return rowsUpdated > 0; + } + + // New method to get the count of pending pensioners + public int getPendingPensionersCount() { + String sqlQuery = "SELECT COUNT(*) FROM pensioner_details WHERE file_category=3 AND pending_duration='yes' AND file_status < 11"; + Integer count = jdbcTemplate.queryForObject(sqlQuery, Integer.class); + return count != null ? count : 0; + } + + +} diff --git a/backend/pensioner/service/PensionAuditService.java b/backend/pensioner/service/PensionAuditService.java new file mode 100644 index 0000000..674580a --- /dev/null +++ b/backend/pensioner/service/PensionAuditService.java @@ -0,0 +1,228 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import in.gov.chennaicorporation.gccoffice.configuration.AppConfig; + +@Service +@Transactional +public class PensionAuditService { + + @Autowired + private JdbcTemplate jdbcTemplate; + + + private RestTemplate restTemplate; + private ObjectMapper objectMapper; + @Autowired + private AppConfig appconfig; + + public PensionAuditService(RestTemplate restTemplate, ObjectMapper objectMapper) { + this.restTemplate = restTemplate; + this.objectMapper = objectMapper; + } + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + public List> fetchDetailsForAudit(Integer file_cat) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_category=? AND (file_status=1 OR file_status=3) AND is_closed=0"; + + + return jdbcTemplate.queryForList(query,file_cat); + } + + public boolean updateEntryDetails(Map requestData) { + // TODO Auto-generated method stub + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby =(String)requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + + int deptId = Integer.parseInt(dept_Id); + int filestatus = 4; + + String file_entry_type="AUDIT_CLEARED"; + + String updateQuery = "UPDATE pensioner_details SET file_status = ?,file_entry_type=?,file_moved_date=?,remarks=?,updated_date= CURRENT_TIMESTAMP WHERE temp_id = ? LIMIT 1"; + int rowsUpdated = jdbcTemplate.update(updateQuery,filestatus,file_entry_type,dateToAudit, remarks,tempId); + + System.out.println("Rows inserted in pd:"+rowsUpdated); + if(rowsUpdated>0) + { + // Optional: Insert into file movement history for auditing + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks,temp_id) VALUES (?,?, ?, ?, ?, ?)"; + int rowsUpdated1=jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks,tempId); + System.out.println("Rows inserted in fmh:"+rowsUpdated1); + + return true; + } + else { + return false; + } + + } + + public boolean savehistory(List> emp_details,String filemovedby) { + try { + // Loop through the list of employee details + for (Map emp : emp_details) { + // Extract individual fields from the map + String empNo = emp.get("emp_no").toString(); + String empName = emp.get("emp_name").toString(); + String deptName = emp.get("dept_name").toString(); + String designation = emp.get("designation").toString(); + String fileCategoryName = emp.get("file_category_name").toString(); + String retirement_date = emp.get("retirement_date").toString(); + String retirement_class = emp.get("retirement_class").toString(); + String type_of_retirement = emp.get("type_of_retirement").toString(); + String fileMovedDate = emp.get("file_moved_date").toString(); + String remarks = emp.get("remarks").toString(); + int fileStatus = Integer.parseInt(emp.get("file_status").toString()); + String fileEntryType = emp.get("file_entry_type").toString(); + int file_category = Integer.parseInt(emp.get("file_category").toString()); + int dept_id = Integer.parseInt(emp.get("dept_id").toString()); + String temp_id = emp.get("temp_id").toString(); + + // Prepare the insert query + String insertQuery ="INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, type_of_retirement,retirement_date ,retirement_class,file_moved_date, remarks,file_category,file_status,file_entry_type,file_moved_by,dept_id,file_category_name,temp_id) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?)"; + + // Execute the query + int rowsInserted = jdbcTemplate.update(insertQuery, empNo, empName, deptName,designation,type_of_retirement,retirement_date,retirement_class,fileMovedDate,remarks,file_category,fileStatus,fileEntryType,filemovedby,dept_id,fileCategoryName,temp_id); + System.out.println("Rows inserted in pdh:"+rowsInserted); + // Check if the insertion was successful + if (rowsInserted <= 0) { + return false; // Return false if any insertion fails + } + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + + //gis + public List> fetchDetailsForrecivedGis(Integer file_cat) { + String query = "SELECT * FROM pensioner_details WHERE file_category = ? AND file_status = 7"; + + + return jdbcTemplate.queryForList(query,file_cat); + } + + + + + + public boolean saveFamilyPensionHistory(List> emp_details,String filemovedby) { + try { + // Loop through the list of employee details + for (Map emp : emp_details) { + // Extract individual fields from the map + String empNo = emp.get("emp_no").toString(); + String empName = emp.get("emp_name").toString(); + String deptName = emp.get("dept_name").toString(); + String designation = emp.get("designation").toString(); + String fileCategoryName = emp.get("file_category_name").toString(); + String pendingDuration=emp.get("pending_duration").toString(); + String pendingReason=emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null; + String serviceDeath = emp.get("service_death").toString(); + String relationshipDeceased = emp.get("relationship_deceased").toString(); + String sanctionedGis = emp.get("sanctioned_gis_amount").toString(); + String fileMovedDate = emp.get("file_moved_date").toString(); + String remarks = emp.get("remarks").toString(); + int fileStatus = Integer.parseInt(emp.get("file_status").toString()); + String fileEntryType = emp.get("file_entry_type").toString(); + int file_category = Integer.parseInt(emp.get("file_category").toString()); + int dept_id = Integer.parseInt(emp.get("dept_id").toString()); + String temp_id = emp.get("temp_id").toString(); + + // Prepare the insert query + String insertQuery ="INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, service_death,relationship_deceased ,sanctioned_gis_amount,file_moved_date, remarks,file_category,file_status,file_entry_type,file_moved_by,dept_id,file_category_name,temp_id,pending_duration,reason_for_pending) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)"; + + // Execute the query + int rowsInserted = jdbcTemplate.update(insertQuery, empNo, empName, deptName,designation,serviceDeath,relationshipDeceased,sanctionedGis,fileMovedDate,remarks,file_category,fileStatus,fileEntryType,filemovedby,dept_id,fileCategoryName,temp_id,pendingDuration,pendingReason); + System.out.println("Rows inserted in pdh:"+rowsInserted); + // Check if the insertion was successful + if (rowsInserted <= 0) { + return false; // Return false if any insertion fails + } + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + + + + public boolean savePendencyHistory(List> emp_details,String filemovedby) { + try { + // Loop through the list of employee details + for (Map emp : emp_details) { + // Extract individual fields from the map + String empNo = emp.get("emp_no").toString(); + String empName = emp.get("emp_name").toString(); + String deptName = emp.get("dept_name").toString(); + String designation = emp.get("designation").toString(); + String retirementClass = emp.get("retirement_class").toString(); + String retirementDate=emp.get("retirement_date").toString(); + + //String fileCategoryName = emp.get("file_category_name").toString(); + String pendingDuration=emp.get("pending_duration").toString(); + String pendingReason=emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null; + + String typeOfCategory=emp.get("file_category_name").toString(); + String typeOfRetirement=emp.get("type_of_retirement").toString(); + + String fileMovedDate = emp.get("file_moved_date").toString(); + String remarks = emp.get("remarks").toString(); + int fileStatus = Integer.parseInt(emp.get("file_status").toString()); + String fileEntryType = emp.get("file_entry_type").toString(); + int file_category = Integer.parseInt(emp.get("file_category").toString()); + int dept_id = Integer.parseInt(emp.get("dept_id").toString()); + String temp_id = emp.get("temp_id").toString(); + + // Prepare the insert query + String insertQuery ="INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation,retirement_class,retirement_date,file_category_name,type_of_retirement,file_moved_date, remarks,file_category,file_status,file_entry_type,file_moved_by,dept_id,temp_id,pending_duration,reason_for_pending) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)"; + + // Execute the query + int rowsInserted = jdbcTemplate.update(insertQuery, empNo, empName, deptName,designation,retirementClass,retirementDate, typeOfCategory,typeOfRetirement,fileMovedDate,remarks,file_category,fileStatus,fileEntryType,filemovedby,dept_id,temp_id,pendingDuration,pendingReason); + System.out.println("Rows inserted in pdh:"+rowsInserted); + // Check if the insertion was successful + if (rowsInserted <= 0) { + return false; // Return false if any insertion fails + } + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + +} diff --git a/backend/pensioner/service/PensionPartiallyCompService.java b/backend/pensioner/service/PensionPartiallyCompService.java new file mode 100644 index 0000000..2cd94e4 --- /dev/null +++ b/backend/pensioner/service/PensionPartiallyCompService.java @@ -0,0 +1,326 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.dao.DataAccessException; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import in.gov.chennaicorporation.gccoffice.configuration.AppConfig; + +@Service +@Transactional +public class PensionPartiallyCompService { + + @Autowired + private JdbcTemplate jdbcTemplate; + + private RestTemplate restTemplate; + private ObjectMapper objectMapper; + @Autowired + private AppConfig appconfig; + + public PensionPartiallyCompService(RestTemplate restTemplate, ObjectMapper objectMapper) { + this.restTemplate = restTemplate; + this.objectMapper = objectMapper; + } + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + public List> fetchPensionPartialEmpfiles(Integer file_cat) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_status=10 AND file_category=? AND is_closed=0"; + + + return jdbcTemplate.queryForList(query,file_cat); + } + + public boolean updateEntryCompletedDetails(Map requestData) { + try { + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby = (String) requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + + + String gpf = (String) requestData.get("gpf"); + String private_affairs = (String) requestData.get("private_affairs"); + String spfgs = (String) requestData.get("spfgs"); + String recovery_emp = requestData.get("recovery_emp") != null ? requestData.get("recovery_emp").toString() : null; + String dcrg = (String) requestData.get("dcrg"); + + String gpfAmount = requestData.get("gpfAmount") != null ? requestData.get("gpfAmount").toString() : null; + String private_affairs_amount = requestData.get("private_affairs_amount") != null ? requestData.get("private_affairs_amount").toString() : null; + String spfgs_amount = requestData.get("spfgs_amount") != null ? requestData.get("spfgs_amount").toString() : null; + + + String pension_number = (String) requestData.get("pension_number"); + String ledger_number = (String) requestData.get("ledger_number"); + String benefit_pension = (String) requestData.get("benefit_pension"); + String benefit_dcrg = (String) requestData.get("benefit_dcrg"); + String benefit_commutation = (String) requestData.get("benefit_commutation"); + + String benefit_pension_amount = requestData.get("benefit_pension_amount")!= null ? requestData.get("benefit_pension_amount").toString() : null; + String benefit_dcrg_amount = requestData.get("benefit_dcrg_amount") != null ? requestData.get("benefit_dcrg_amount").toString() : null; + String benefit_commutation_amount = requestData.get("benefit_commutation_amount") != null ? requestData.get("benefit_commutation_amount").toString() : null; + + + int deptId = Integer.parseInt(dept_Id); + int filestatus; + String file_entry_type=""; + + + +// String updateQuery1 = "UPDATE zone_benefits SET gpf = ?, gpf_amount = ?, spfgs = ?, spfgs_amount = ?, dcrg = ?, private_affairs = ?, private_affairs_amount = ?, recovery_emp = ?, updated_date = CURRENT_TIMESTAMP WHERE temp_id = ?"; +// int rowsUpdated3 = jdbcTemplate.update(updateQuery1, gpf, gpfAmount, spfgs, spfgs_amount, dcrg, private_affairs, private_affairs_amount, recovery_emp, tempId); +// System.out.println("Rows updated in zb: " + rowsUpdated3); + + + + String updateQuery2 = "UPDATE pension_benefits SET pension_number = ?, ledger_number = ?, benefit_pension = ?, benefit_pension_amount = ?, benefit_dcrg = ?, benefit_dcrg_amount = ?, benefit_commutation = ?, benefit_commutation_amount = ?, updated_date = CURRENT_TIMESTAMP WHERE temp_id = ?"; + int rowsUpdated2 = jdbcTemplate.update(updateQuery2, pension_number, ledger_number, benefit_pension, benefit_pension_amount, benefit_dcrg, benefit_dcrg_amount, benefit_commutation, benefit_commutation_amount, tempId); + System.out.println("Rows updated in pb: " + rowsUpdated2); + + filestatus = CheckFieldsforPension(tempId) ? 11 : 10; + System.out.println("filestatus inside service="+filestatus); + + if(filestatus==11) + { + file_entry_type="FILE_COMPLETED"; + } + if(filestatus==10) { + file_entry_type="PENSION_PARTIAL"; + } + + if (rowsUpdated2 > 0) { + + String updateQuery = "UPDATE pensioner_details SET file_entry_type=?,file_status = ?, file_moved_date = ?, remarks = ?, updated_date = CURRENT_TIMESTAMP WHERE temp_id = ? LIMIT 1"; + int rowsUpdated = jdbcTemplate.update(updateQuery,file_entry_type, filestatus, dateToAudit, remarks, tempId); + System.out.println("Rows updated in fpd: " + rowsUpdated); + + if (rowsUpdated > 0) { + + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks, temp_id) VALUES (?, ?, ?, ?, ?, ?)"; + int rowsUpdated1 = jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks, tempId); + System.out.println("Rows updated in fmh: " + rowsUpdated1); + + return true; + } + } + + return false; + } catch (NumberFormatException e) { + System.err.println("Error parsing department ID: " + e.getMessage()); + return false; + } catch (DataAccessException e) { + System.err.println("Database operation failed: " + e.getMessage()); + return false; + } catch (Exception e) { + System.err.println("Unexpected error: " + e.getMessage()); + return false; + } + } + + + public boolean saveHistory(List> empDetails, List> zoneBenefits, List> pension_details, String fileMovedBy) { + try { + int file_Cat=0; + + if (!empDetails.isEmpty()) { + Map firstEmployeeDetails = empDetails.get(0); + Object fileCatObj = firstEmployeeDetails.get("file_category"); + + if (fileCatObj != null) { + try { + file_Cat = Integer.parseInt(fileCatObj.toString()); + System.out.println("Parsed file_category: " + file_Cat); + } catch (NumberFormatException e) { + System.err.println("Failed to parse file_category: " + fileCatObj); + } + } else { + System.out.println("file_category is null in emp_details."); + } + } else { + System.out.println("emp_details is empty."); + } + + // Batch update for employee details + if(file_Cat==1) { + String empInsertQuery = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, type_of_retirement, " + + "retirement_date, retirement_class, file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + jdbcTemplate.batchUpdate(empInsertQuery, empDetails, empDetails.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("type_of_retirement").toString()); + ps.setString(6, emp.get("retirement_date").toString()); + ps.setString(7, emp.get("retirement_class").toString()); + ps.setString(8, emp.get("file_moved_date").toString()); + ps.setString(9, emp.get("remarks").toString()); + ps.setInt(10, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(11, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(12, emp.get("file_entry_type").toString()); + ps.setString(13, fileMovedBy); + ps.setInt(14, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(15, emp.get("file_category_name").toString()); + ps.setString(16, emp.get("temp_id").toString()); + }); + } + + if(file_Cat==2) + { + String empInsertQuery1 = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, service_death, " + + "relationship_deceased, sanctioned_gis_amount, file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id,pending_duration,reason_for_pending) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)"; + + jdbcTemplate.batchUpdate(empInsertQuery1, empDetails, empDetails.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("service_death").toString()); + ps.setString(6, emp.get("relationship_deceased").toString()); + ps.setString(7, emp.get("sanctioned_gis_amount").toString()); + ps.setString(8, emp.get("file_moved_date").toString()); + ps.setString(9, emp.get("remarks").toString()); + ps.setInt(10, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(11, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(12, emp.get("file_entry_type").toString()); + ps.setString(13, fileMovedBy); + ps.setInt(14, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(15, emp.get("file_category_name").toString()); + ps.setString(16, emp.get("temp_id").toString()); + ps.setString(17, emp.get("pending_duration").toString()); + ps.setString(18, emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null); + }); + + System.out.println("rows inserted in pd history for family Pension"); + } + + if(file_Cat==3) + { + String empInsertQuery2 = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation,type_of_retirement, " + + "file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id,pending_duration,reason_for_pending,retirement_class,retirement_date) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)"; + + jdbcTemplate.batchUpdate(empInsertQuery2, empDetails, empDetails.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("type_of_retirement").toString()); + ps.setString(6, emp.get("file_moved_date").toString()); + ps.setString(7, emp.get("remarks").toString()); + ps.setInt(8, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(9, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(10, emp.get("file_entry_type").toString()); + ps.setString(11, fileMovedBy); + ps.setInt(12, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(13, emp.get("file_category_name").toString()); + ps.setString(14, emp.get("temp_id").toString()); + ps.setString(15, emp.get("pending_duration").toString()); + ps.setString(16, emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null); + ps.setString(17, emp.get("retirement_class").toString()); + ps.setString(18, emp.get("retirement_date").toString()); + + }); + + System.out.println("rows inserted in pd history for pendency"); + } + + // Batch update for zone benefits +// String zoneInsertQuery = +// "INSERT INTO zone_benefits_history (emp_no, temp_id, gpf, gpf_amount, spfgs, spfgs_amount, dcrg, " + +// "private_affairs, private_affairs_amount, recovery_emp, file_moved_by) " + +// "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; +// +// jdbcTemplate.batchUpdate(zoneInsertQuery, zoneBenefits, zoneBenefits.size(), (ps, zone) -> { +// ps.setString(1, zone.get("emp_no").toString()); +// ps.setString(2, zone.get("temp_id").toString()); +// ps.setString(3, zone.get("gpf").toString()); +// ps.setString(4, zone.get("gpf_amount") != null ? zone.get("gpf_amount").toString() : null); +// ps.setString(5, zone.get("spfgs").toString()); +// ps.setString(6, zone.get("spfgs_amount") != null ? zone.get("spfgs_amount").toString() : null); +// ps.setString(7, zone.get("dcrg").toString()); +// ps.setString(8, zone.get("private_affairs").toString()); +// ps.setString(9, zone.get("private_affairs_amount") != null ? zone.get("private_affairs_amount").toString() : null); +// ps.setString(10, zone.get("recovery_emp") != null ? zone.get("recovery_emp").toString() : null); +// ps.setString(11, fileMovedBy); +// }); + + // Batch update for pension benefits + String pensionInsertQuery = + "INSERT INTO pension_benefits_history (emp_no,temp_id,file_pending,pension_number,ledger_number,benefit_pension,benefit_pension_amount,benefit_dcrg,benefit_dcrg_amount,benefit_commutation,benefit_commutation_amount,file_moved_by) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"; + + jdbcTemplate.batchUpdate(pensionInsertQuery, pension_details, pension_details.size(), (ps, pension) -> { + ps.setString(1, pension.get("emp_no").toString()); + ps.setString(2, pension.get("temp_id").toString()); + ps.setString(3, pension.get("file_pending").toString()); + ps.setString(4, pension.get("pension_number").toString()); + ps.setString(5, pension.get("ledger_number").toString()); + ps.setString(6, pension.get("benefit_pension").toString()); + ps.setString(7, pension.get("benefit_pension_amount") != null ? pension.get("benefit_pension_amount").toString() : null); + ps.setString(8, pension.get("benefit_dcrg").toString()); + ps.setString(9, pension.get("benefit_dcrg_amount") != null ? pension.get("benefit_dcrg_amount").toString() : null); + ps.setString(10, pension.get("benefit_commutation").toString()); + ps.setString(11, pension.get("benefit_commutation_amount") != null ? pension.get("benefit_commutation_amount").toString() : null); + ps.setString(12, fileMovedBy); + + }); + + return true; // All insertions succeeded + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + private boolean CheckFieldsforPension(String tempId) { + + // Define the SQL query + String sql = "SELECT " + + "CASE " + + "WHEN pb.benefit_pension = 'yes' AND pb.benefit_dcrg = 'yes' AND pb.benefit_commutation = 'yes' " + + "THEN 1 ELSE 0 " + + "END AS allYes " + + "FROM pension_benefits AS pb " + + "WHERE pb.temp_id = ? "; + + + try { + // Use queryForObject to get a single boolean result + Boolean result = jdbcTemplate.queryForObject(sql, Boolean.class, tempId); + + return result != null && result; // Return the result if not null + } catch (Exception e) { + e.printStackTrace(); // Log the exception if needed + } + + return false; // Return false if an exception occurs + } + +} diff --git a/backend/pensioner/service/PensionReceivedService.java b/backend/pensioner/service/PensionReceivedService.java new file mode 100644 index 0000000..d00d30c --- /dev/null +++ b/backend/pensioner/service/PensionReceivedService.java @@ -0,0 +1,377 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import in.gov.chennaicorporation.gccoffice.configuration.AppConfig; + +@Service +@Transactional +public class PensionReceivedService { + + @Autowired + private JdbcTemplate jdbcTemplate; + + + private RestTemplate restTemplate; + private ObjectMapper objectMapper; + @Autowired + private AppConfig appconfig; + + public PensionReceivedService(RestTemplate restTemplate, ObjectMapper objectMapper) { + this.restTemplate = restTemplate; + this.objectMapper = objectMapper; + } + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + public List> fetchReceivedDepartmentEmpfiles(Integer deptId,Integer file_cat) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE dept_id=? AND file_category=? AND (file_status=5 OR file_status=6) AND is_closed=0"; + + return jdbcTemplate.queryForList(query,deptId,file_cat); + } + + + public List> fetchZonebenefitsById(String tempId) { + String query = "SELECT * " + + "FROM zone_benefits " + + "WHERE temp_id=?"; + + + return jdbcTemplate.queryForList(query,tempId); + } + + public List> fetchPensionbenefitsById(String tempId) { + String query = "SELECT * " + + "FROM pension_benefits " + + "WHERE temp_id=?"; + + + return jdbcTemplate.queryForList(query,tempId); + } + + public boolean updateEntryDetails(Map requestData) { + try { + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + + String dateToAudit = (String) requestData.get("file_moved_date"); + String filemovedby = (String) requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + + int deptId = (dept_Id != null && !dept_Id.isEmpty()) ? Integer.parseInt(dept_Id) : 0; + int filestatus = 7; + + String gpf = (String) requestData.get("gpf"); + String private_affairs = (String) requestData.get("private_affairs"); + String spfgs = (String) requestData.get("spfgs"); + String recovery_emp = (String) requestData.get("recovery_emp"); + String dcrg = (String) requestData.get("dcrg"); + + String gpfAmount = requestData.get("gpfAmount") != null ? requestData.get("gpfAmount").toString() : null; + String private_affairs_amount = requestData.get("private_affairs_amount") != null ? requestData.get("private_affairs_amount").toString() : null; + String spfgs_amount = requestData.get("spfgs_amount") != null ? requestData.get("spfgs_amount").toString() : null; + + boolean check = checkTempIdInZoneBenefits(tempId); + + // Update file_status in pensioner_details + String updateQuery = "UPDATE pensioner_details SET file_status = ?, file_moved_date = ?, remarks = ?, updated_date = CURRENT_TIMESTAMP WHERE temp_id = ?"; + int rowsUpdated = jdbcTemplate.update(updateQuery, filestatus, dateToAudit, remarks, tempId); + System.out.println("Rows updated in pensioner_details: " + rowsUpdated); + + if (rowsUpdated > 0) { + // Insert into file movement history + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks, temp_id) VALUES (?, ?, ?, ?, ?, ?)"; + int rowsUpdated1 = jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks, tempId); + System.out.println("Rows inserted in file_movement_history: " + rowsUpdated1); + + if (rowsUpdated1 > 0) { + if (check) { + // Update zone benefits + String updateQuery1 = "UPDATE zone_benefits SET gpf = ?, gpf_amount = ?, spfgs = ?, spfgs_amount = ?, dcrg = ?, private_affairs = ?, private_affairs_amount = ?, recovery_emp = ?, updated_date = CURRENT_TIMESTAMP WHERE temp_id = ?"; + int rowsUpdated3 = jdbcTemplate.update(updateQuery1, gpf, gpfAmount, spfgs, spfgs_amount, dcrg, private_affairs, private_affairs_amount, recovery_emp, tempId); + System.out.println("Rows updated in zone_benefits: " + rowsUpdated3); + } else { + // Insert into zone benefits + String benefitQuery = "INSERT INTO zone_benefits (emp_no, temp_id, gpf, gpf_amount, spfgs, spfgs_amount, dcrg, private_affairs, private_affairs_amount, recovery_emp) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + int rowsUpdated2 = jdbcTemplate.update(benefitQuery, empNo, tempId, gpf, gpfAmount, spfgs, spfgs_amount, dcrg, private_affairs, private_affairs_amount, recovery_emp); + System.out.println("Rows inserted in zone_benefits: " + rowsUpdated2); + } + return true; + } else { + System.out.println("Failed to insert into file_movement_history"); + return false; + } + } else { + System.out.println("Failed to update pensioner_details"); + return false; + } + } catch (Exception e) { + System.err.println("Exception in updateEntryDetails: " + e.getMessage()); + return false; + } + } + + + + public boolean saveHistory(List> empDetails, List> zoneBenefits, String fileMovedBy) { + try { + // Batch update for employee details + int file_Cat=0; + + if (!empDetails.isEmpty()) { + Map firstEmployeeDetails = empDetails.get(0); + Object fileCatObj = firstEmployeeDetails.get("file_category"); + + if (fileCatObj != null) { + try { + file_Cat = Integer.parseInt(fileCatObj.toString()); + System.out.println("Parsed file_category: " + file_Cat); + } catch (NumberFormatException e) { + System.err.println("Failed to parse file_category: " + fileCatObj); + } + } else { + System.out.println("file_category is null in emp_details."); + } + } else { + System.out.println("emp_details is empty."); + } + + + if(file_Cat==1) { + String empInsertQuery = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, type_of_retirement, " + + "retirement_date, retirement_class, file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + jdbcTemplate.batchUpdate(empInsertQuery, empDetails, empDetails.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("type_of_retirement").toString()); + ps.setString(6, emp.get("retirement_date").toString()); + ps.setString(7, emp.get("retirement_class").toString()); + ps.setString(8, emp.get("file_moved_date").toString()); + ps.setString(9, emp.get("remarks").toString()); + ps.setInt(10, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(11, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(12, emp.get("file_entry_type").toString()); + ps.setString(13, fileMovedBy); + ps.setInt(14, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(15, emp.get("file_category_name").toString()); + ps.setString(16, emp.get("temp_id").toString()); + }); + + System.out.println("rows inserted in pd history for retirement"); + + } + + if(file_Cat==2) + { + String empInsertQuery1 = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, service_death, " + + "relationship_deceased, sanctioned_gis_amount, file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id,pending_duration,reason_for_pending) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)"; + + jdbcTemplate.batchUpdate(empInsertQuery1, empDetails, empDetails.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("service_death").toString()); + ps.setString(6, emp.get("relationship_deceased").toString()); + ps.setString(7, emp.get("sanctioned_gis_amount").toString()); + ps.setString(8, emp.get("file_moved_date").toString()); + ps.setString(9, emp.get("remarks").toString()); + ps.setInt(10, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(11, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(12, emp.get("file_entry_type").toString()); + ps.setString(13, fileMovedBy); + ps.setInt(14, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(15, emp.get("file_category_name").toString()); + ps.setString(16, emp.get("temp_id").toString()); + ps.setString(17, emp.get("pending_duration").toString()); + ps.setString(18, emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null); + }); + + System.out.println("rows inserted in pd history for family Pension"); + } + + if(file_Cat==3) + { + String empInsertQuery2 = + "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation,type_of_retirement, " + + "file_moved_date, remarks, file_category, file_status, " + + "file_entry_type, file_moved_by, dept_id, file_category_name, temp_id,pending_duration,reason_for_pending,retirement_class,retirement_date) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)"; + + jdbcTemplate.batchUpdate(empInsertQuery2, empDetails, empDetails.size(), (ps, emp) -> { + ps.setString(1, emp.get("emp_no").toString()); + ps.setString(2, emp.get("emp_name").toString()); + ps.setString(3, emp.get("dept_name").toString()); + ps.setString(4, emp.get("designation").toString()); + ps.setString(5, emp.get("type_of_retirement").toString()); + ps.setString(6, emp.get("file_moved_date").toString()); + ps.setString(7, emp.get("remarks").toString()); + ps.setInt(8, Integer.parseInt(emp.get("file_category").toString())); + ps.setInt(9, Integer.parseInt(emp.get("file_status").toString())); + ps.setString(10, emp.get("file_entry_type").toString()); + ps.setString(11, fileMovedBy); + ps.setInt(12, Integer.parseInt(emp.get("dept_id").toString())); + ps.setString(13, emp.get("file_category_name").toString()); + ps.setString(14, emp.get("temp_id").toString()); + ps.setString(15, emp.get("pending_duration").toString()); + ps.setString(16, emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null); + ps.setString(17, emp.get("retirement_class").toString()); + ps.setString(18, emp.get("retirement_date").toString()); + }); + + System.out.println("rows inserted in pd history for pendency"); + } + + // Batch update for zone benefits + String zoneInsertQuery = + "INSERT INTO zone_benefits_history (emp_no, temp_id, gpf, gpf_amount, spfgs, spfgs_amount, dcrg, " + + "private_affairs, private_affairs_amount, recovery_emp, file_moved_by) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + jdbcTemplate.batchUpdate(zoneInsertQuery, zoneBenefits, zoneBenefits.size(), (ps, zone) -> { + ps.setString(1, zone.get("emp_no").toString()); + ps.setString(2, zone.get("temp_id").toString()); + ps.setString(3, zone.get("gpf").toString()); + ps.setString(4, zone.get("gpf_amount") != null ? zone.get("gpf_amount").toString() : null); + ps.setString(5, zone.get("spfgs").toString()); + ps.setString(6, zone.get("spfgs_amount") != null ? zone.get("spfgs_amount").toString() : null); + ps.setString(7, zone.get("dcrg").toString()); + ps.setString(8, zone.get("private_affairs").toString()); + ps.setString(9, zone.get("private_affairs_amount") != null ? zone.get("private_affairs_amount").toString() : null); + ps.setString(10, zone.get("recovery_emp") != null ? zone.get("recovery_emp").toString() : null); + ps.setString(11, fileMovedBy); + }); + + System.out.println("rows inserted in zone history for family Pension"); + + return true; // All insertions succeeded + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + /* + */ + + +public boolean checkTempIdInZoneBenefits(String tempId) { + String query = "SELECT EXISTS (SELECT 1 FROM zone_benefits WHERE temp_id = ?)"; + + return Boolean.TRUE.equals(jdbcTemplate.queryForObject(query, Boolean.class, tempId)); + } + + + + //gis + + public boolean updateEntryGisDetails(Map requestData) { + // TODO Auto-generated method stub + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby =(String)requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + String sanctional_gis_date = (String) requestData.get("sanctional_gis_date"); + String sanctional_gis_amount = (String) requestData.get("sanctional_gis_amount"); + String lic_date = (String) requestData.get("lic_date"); + + + int deptId = Integer.parseInt(dept_Id); + int filestatus = 11; + String fileentrytype = "FILE_COMPLETED"; + + String updateQuery = "UPDATE pensioner_details SET file_status = ?, file_moved_date = ?, remarks = ?, sanctional_gis_date = ?, sanctional_gis_amount = ?, lic_date = ?,file_entry_type=? ,updated_date = CURRENT_TIMESTAMP WHERE temp_id = ? LIMIT 1"; + int rowsUpdated = jdbcTemplate.update(updateQuery, filestatus, dateToAudit, remarks, sanctional_gis_date, sanctional_gis_amount, lic_date,fileentrytype ,tempId); + + //int rowsUpdated = jdbcTemplate.update(updateQuery,filestatus,dateToAudit, remarks,sanctional_gis_date,sanctional_gis_amount,lic_date,tempId); + System.out.println(dateToAudit); + System.out.println(sanctional_gis_date); + System.out.println(sanctional_gis_amount); + System.out.println(lic_date); + System.out.println("Rows inserted in pd:"+rowsUpdated); + if(rowsUpdated>0) + { + // Optional: Insert into file movement history for auditing + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks,temp_id) VALUES (?,?, ?, ?, ?, ?)"; + int rowsUpdated1=jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks,tempId); + System.out.println("Rows inserted in fmh:"+rowsUpdated1); + + return true; + } + else { + return false; + } + + } + + public boolean savehistoryGis(List> emp_details,String filemovedby) { + try { + // Loop through the list of employee details + for (Map emp : emp_details) { + // Extract individual fields from the map + String empNo = emp.get("emp_no").toString(); + String empName = emp.get("emp_name").toString(); + String deptName = emp.get("dept_name").toString(); + String designation = emp.get("designation").toString(); + String fileCategoryName = emp.get("file_category_name").toString(); + String fileMovedDate = emp.get("file_moved_date").toString(); + String remarks = emp.get("remarks").toString(); + int fileStatus = Integer.parseInt(emp.get("file_status").toString()); + String fileEntryType = emp.get("file_entry_type").toString(); + int file_category = Integer.parseInt(emp.get("file_category").toString()); + int dept_id = Integer.parseInt(emp.get("dept_id").toString()); + String sanctional_gis_date=emp.get("sanctional_gis_date").toString(); + String sanctional_gis_amount=emp.get("sanctional_gis_amount").toString(); + String lic_date=emp.get("lic_date").toString(); + String temp_id = emp.get("temp_id").toString(); + + // Prepare the insert query + String insertQuery = "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, file_moved_date, remarks, file_category, file_status, file_entry_type, file_moved_by, dept_id, file_category_name, temp_id, sanctional_gis_date, sanctional_gis_amount, lic_date) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + + // Execute the query + int rowsInserted = jdbcTemplate.update(insertQuery, empNo, empName, deptName,designation,fileMovedDate,remarks,file_category,fileStatus,fileEntryType,filemovedby,dept_id,fileCategoryName,temp_id,sanctional_gis_date,sanctional_gis_amount,lic_date); + System.out.println("Rows inserted in pdh:"+rowsInserted); + // Check if the insertion was successful + if (rowsInserted <= 0) { + return false; // Return false if any insertion fails + } + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + +} diff --git a/backend/pensioner/service/ReceivedDeptProvisionalService.java b/backend/pensioner/service/ReceivedDeptProvisionalService.java new file mode 100644 index 0000000..326b57f --- /dev/null +++ b/backend/pensioner/service/ReceivedDeptProvisionalService.java @@ -0,0 +1,238 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.util.List; + +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +@Service +@Transactional +public class ReceivedDeptProvisionalService { + + + @Autowired + private JdbcTemplate jdbcTemplate; + + + private RestTemplate restTemplate; + private ObjectMapper objectMapper; + + public ReceivedDeptProvisionalService(RestTemplate restTemplate, ObjectMapper objectMapper) { + this.restTemplate = restTemplate; + this.objectMapper = objectMapper; + } + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + + + public List> fetchDetailsProvisionalPension(Integer file_cat) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_category=? AND file_status=7"; + return jdbcTemplate.queryForList(query,file_cat); + } + + public List> fetchDetailsProvisionalDepartment(Integer file_cat) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_category=? AND file_status=6"; + return jdbcTemplate.queryForList(query,file_cat); + } + + + + + //updated entry details + public boolean updateEntryDetailsCompleted(Map requestData) { + // TODO Auto-generated method stub + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby =(String)requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + String pramount = (String) requestData.get("pramount"); + String prpercentage = (String) requestData.get("prpercentage"); + + + int deptId = Integer.parseInt(dept_Id); + int filestatus = 11; + String file_entry_type="FILE_COMPLETED"; + + // Update file_status in pensioner_details + String updateQuery = "UPDATE pensioner_details SET file_status = ?,file_moved_date=?,remarks=?,pr_amount=?,pr_percentage=?,file_entry_type=?,updated_date= CURRENT_TIMESTAMP WHERE temp_id = ? LIMIT 1"; + int rowsUpdated = jdbcTemplate.update(updateQuery,filestatus,dateToAudit, remarks,pramount,prpercentage,file_entry_type,tempId); + + System.out.println("Rows inserted in pd:"+rowsUpdated); + if(rowsUpdated>0) + { + // Optional: Insert into file movement history for auditing + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks,temp_id) VALUES (?,?, ?, ?, ?, ?)"; + int rowsUpdated1=jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks,tempId); + System.out.println("Rows inserted in fmh:"+rowsUpdated1); + + return true; + } + else { + return false; + } + + } + + + + + // return to department + public boolean updateEntryDetailsReturntoDepartment(Map requestData) { + // TODO Auto-generated method stub + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby =(String)requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); +// String pramount = (String) requestData.get("pramount"); +// String prpercentage = (String) requestData.get("prpercentage"); + + + int deptId = Integer.parseInt(dept_Id); + int filestatus = 6; + String file_entry_type="FILE_RETURNED"; + + // Update file_status in pensioner_details + String updateQuery = "UPDATE pensioner_details SET file_status = ?, file_entry_type =?,file_moved_date=?,remarks=?,updated_date= CURRENT_TIMESTAMP WHERE temp_id = ? LIMIT 1"; + int rowsUpdated = jdbcTemplate.update(updateQuery,filestatus,file_entry_type,dateToAudit,remarks,tempId); + + System.out.println("Rows inserted in pd:"+rowsUpdated); + if(rowsUpdated>0) + { + // Optional: Insert into file movement history for auditing + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks,temp_id) VALUES (?,?, ?, ?, ?, ?)"; + int rowsUpdated1=jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks,tempId); + System.out.println("Rows inserted in fmh:"+rowsUpdated1); + + return true; + } + else { + return false; + } + + } + + + + + // sent to pension + public boolean updateEntryDetailsSenttoPension(Map requestData) { + // TODO Auto-generated method stub + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby =(String)requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + String ReasonofPension = (String) requestData.get("ReasonofPension"); + String pendingDuration = (String) requestData.get("pendingDuration"); + String reasonofPending = (String) requestData.get("reasonofPending"); + String Dp = (String) requestData.get("Dp"); + String otherReason = (String) requestData.get("otherReason"); + +// String pramount = (String) requestData.get("pramount"); +// String prpercentage = (String) requestData.get("prpercentage"); + + + int deptId = Integer.parseInt(dept_Id); + int filestatus = 7; + String file_entry_type="FILE_RETURNED"; + + // Update file_status in pensioner_details + String updateQuery = "UPDATE pensioner_details SET file_status = ?, file_entry_type =?,file_moved_date=?,remarks=?,reason_for_provisional_pension=?,pending_duration=?,reason_for_pending=?,dp=?,others_provisional_pension=?,updated_date= CURRENT_TIMESTAMP WHERE temp_id = ? LIMIT 1"; + int rowsUpdated = jdbcTemplate.update(updateQuery,filestatus,file_entry_type,dateToAudit,remarks,ReasonofPension,pendingDuration,reasonofPending,Dp,otherReason ,tempId); + + System.out.println("Rows inserted in pd:"+rowsUpdated); + if(rowsUpdated>0) + { + // Optional: Insert into file movement history for auditing + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks,temp_id) VALUES (?,?, ?, ?, ?, ?)"; + int rowsUpdated1=jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks,tempId); + System.out.println("Rows inserted in fmh:"+rowsUpdated1); + + return true; + } + else { + return false; + } + + } + + + + + + + + public boolean savehistory(List> emp_details, String filemovedby) { + try { + // Loop through the list of employee details + for (Map emp : emp_details) { + // Safely extract individual fields from the map with default values + String empNo = emp.get("emp_no").toString(); + String empName = emp.get("emp_name").toString(); + String deptName = emp.get("dept_name").toString(); + String designation = emp.get("designation").toString(); + String fileCategoryName = emp.get("file_category_name").toString(); + String retirement_class = emp.get("retirement_class").toString(); + String type_of_retirement = emp.get("type_of_retirement").toString(); + String retirementDate = emp.get("retirement_date").toString(); + String ReasonofPension = emp.get("reason_for_provisional_pension").toString(); + String pendingDuration = emp.get("pending_duration").toString(); + String reasonofPending = emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null; + //String Dp = emp.get("dp").toString(); + String Dp = emp.get("dp") != null ? emp.get("dp").toString() : "hello"; + String otherReason = emp.get("others_provisional_pension") != null ? emp.get("others_provisional_pension").toString() : null; + String fileMovedDate = emp.get("file_moved_date").toString(); + String remarks = emp.get("remarks").toString(); + String pramount = emp.get("pr_amount") != null && !emp.get("pr_amount").toString().trim().isEmpty() ? emp.get("pr_amount").toString() : null; + String prpercentage = emp.get("pr_percentage") != null && !emp.get("pr_percentage").toString().trim().isEmpty() ? emp.get("pr_percentage").toString() : null; + int fileStatus = Integer.parseInt(emp.get("file_status").toString()); // Default to 0 + String fileEntryType = emp.get("file_entry_type").toString(); + int file_category = Integer.parseInt(emp.get("file_category").toString()); // Default to 0 + int dept_id = Integer.parseInt(emp.get("dept_id").toString()); // Default to 0 + String temp_id = emp.get("temp_id").toString(); + + // Prepare the insert query + String insertQuery = "INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, type_of_retirement,retirement_date ,reason_for_provisional_pension, pending_duration, dp, others_provisional_pension, reason_for_pending, retirement_class, file_moved_date, remarks, pr_amount, pr_percentage, file_category, file_status, file_entry_type, file_moved_by, dept_id, file_category_name, temp_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?)"; + + // Execute the query + int rowsInserted = jdbcTemplate.update(insertQuery, empNo, empName, deptName, designation, type_of_retirement,retirementDate ,ReasonofPension, pendingDuration, Dp, otherReason, reasonofPending, retirement_class, fileMovedDate, remarks, pramount, prpercentage, file_category, fileStatus, fileEntryType, filemovedby, dept_id, fileCategoryName, temp_id); + System.out.println("Rows inserted in pdh: " + rowsInserted); + + // Check if the insertion was successful + if (rowsInserted <= 0) { + return false; // Return false if any insertion fails + } + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + +} diff --git a/backend/pensioner/service/ReportApiService.java b/backend/pensioner/service/ReportApiService.java new file mode 100644 index 0000000..ce133e4 --- /dev/null +++ b/backend/pensioner/service/ReportApiService.java @@ -0,0 +1,449 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import in.gov.chennaicorporation.gccoffice.configuration.AppConfig; + +@Service +public class ReportApiService { + @Autowired + private JdbcTemplate jdbcTemplate; + + + private RestTemplate restTemplate; + private ObjectMapper objectMapper; + @Autowired + private AppConfig appconfig; + + public ReportApiService(RestTemplate restTemplate, ObjectMapper objectMapper) { + this.restTemplate = restTemplate; + this.objectMapper = objectMapper; + } + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + public List> getFileCategories() { + String sql = "SELECT id,file_name FROM gcc_pensioner.file_category_master"; + return jdbcTemplate.queryForList(sql); + } + +// String sql = "SELECT fm.file_name, " + +// "COALESCE(SUM(CASE WHEN pd.file_status IN (1,3) THEN 1 ELSE 0 END), 0) AS audit_pending, " + +// "COALESCE(SUM(CASE WHEN pd.file_status IN (2,5,6,9) THEN 1 ELSE 0 END), 0) AS department_pending, " + +// "COALESCE(SUM(CASE WHEN pd.file_status IN (4,7,8,10) THEN 1 ELSE 0 END), 0) AS pension_pending, " + +// "COALESCE(SUM(CASE WHEN pd.file_status = 11 THEN 1 ELSE 0 END), 0) AS completed " + +// "FROM gcc_pensioner.file_category_master fm " + +// "LEFT JOIN gcc_pensioner.pensioner_details pd " + +// "ON pd.file_category = fm.id " + +// "AND pd.created_date BETWEEN ? AND ? " + +// "AND pd.dept_id = ? " + +// "AND pd.is_closed = 0 " + // Ensure only active records are considered +// "GROUP BY fm.file_name"; + + + public List> getReportData(String startDate, String endDate, String deptId) { + String sql = "SELECT fm.id, " + + " fm.file_name AS file_name, " + + + // Audit Pending Count + " (SELECT COUNT(*) FROM gcc_pensioner.pensioner_details pd " + + " WHERE pd.file_status IN (1,3) AND pd.dept_id = ? " + + " AND pd.file_category=fm.id "+ + " AND pd.is_closed = 0 " + + " AND DATE(pd.created_date) BETWEEN DATE(?) AND DATE(?)) AS audit_pending, " + + + // Department Pending Count + " (SELECT COUNT(*) FROM gcc_pensioner.pensioner_details pd " + + " WHERE pd.file_status IN (2,5,6,9) AND pd.dept_id = ? " + + " AND pd.file_category=fm.id "+ + " AND pd.is_closed = 0 " + + " AND DATE(pd.created_date) BETWEEN DATE(?) AND DATE(?)) AS department_pending, " + + + // Pension Pending Count + " (SELECT COUNT(*) FROM gcc_pensioner.pensioner_details pd " + + " WHERE pd.file_status IN (4,7,8,10) AND pd.dept_id = ? " + + " AND pd.file_category=fm.id "+ + " AND pd.is_closed = 0 " + + " AND DATE(pd.created_date) BETWEEN DATE(?) AND DATE(?)) AS pension_pending, " + + + // Completed Count (SUM of two tables) + " (COALESCE((SELECT COUNT(*) FROM gcc_pensioner.pensioner_details pd " + + " WHERE pd.file_status = 11 AND pd.dept_id = ? " + + " AND pd.file_category=fm.id "+ + " AND pd.is_closed = 0 " + + " AND DATE(pd.created_date) BETWEEN DATE(?) AND DATE(?)), 0) " + + " + " + + " COALESCE((SELECT COUNT(*) FROM gcc_pensioner.cps_pensioner_details cps " + + " WHERE cps.file_status = 11 AND cps.dept_id = ? " + + " AND cps.file_category=fm.id "+ + " AND DATE(cps.created_date) BETWEEN DATE(?) AND DATE(?)), 0)) AS completed, " + + + // Total Files Count (SUM of two tables) + " (COALESCE((SELECT COUNT(*) FROM gcc_pensioner.pensioner_details pd " + + " WHERE pd.dept_id = ? " + + " AND pd.file_category=fm.id "+ + " AND pd.is_closed = 0 " + + " AND DATE(pd.created_date) BETWEEN DATE(?) AND DATE(?)), 0) " + + " + " + + " COALESCE((SELECT COUNT(*) FROM gcc_pensioner.cps_pensioner_details cps " + + " WHERE cps.dept_id = ? " + + " AND cps.file_category=fm.id "+ + " AND DATE(cps.created_date) BETWEEN DATE(?) AND DATE(?)), 0)) AS total_files " + + + "FROM gcc_pensioner.file_category_master fm " + + "GROUP BY fm.id, fm.file_name " + // Correct placement of GROUP BY + "ORDER BY fm.id"; // ORDER BY after GROUP BY + + List params = new ArrayList<>(); + + // Adding parameters in the correct order for each subquery + for (int i = 0; i < 7; i++) { // 6 subqueries that use deptId, startDate, endDate + params.add(deptId); + params.add(startDate); + params.add(endDate); + } + + return jdbcTemplate.queryForList(sql, params.toArray()); + } + + + + + public List> getReportDetails(String startDate, String endDate, Integer deptId, Integer fileCatId, List fileStatus) { + String sql = ""; + List params = new ArrayList<>(); + + // Construct fileStatus condition + String fileStatusCondition = (fileStatus != null && !fileStatus.isEmpty()) + ? " AND pd.file_status IN (" + String.join(",", Collections.nCopies(fileStatus.size(), "?")) + ")" + : ""; // Skip condition if fileStatus is empty or null + + if (fileCatId == 6) { + sql = "SELECT pd.emp_no, pd.emp_name, pd.designation, pd.type_of_retirement, pd.reason_for_pending, " + + "fm.file_status AS fst, pd.file_category_name, pd.remarks, DATE(pd.created_date) AS created_date " + + "FROM cps_pensioner_details pd " + + "INNER JOIN file_status_master fm ON pd.file_status = fm.id " + + "WHERE DATE(pd.created_date) BETWEEN DATE(?) AND DATE(?) " + // First date filter + "AND pd.dept_id = ? " + // Next deptId + "AND pd.file_category = ? " + // Next fileCatId + fileStatusCondition; // Last fileStatus condition + + } else { + sql = "SELECT pd.*, fm.file_status AS fst " + + "FROM pensioner_details pd " + + "INNER JOIN file_status_master fm ON pd.file_status = fm.id " + + "WHERE DATE(pd.created_date) BETWEEN DATE(?) AND DATE(?) " + // First date filter + "AND pd.dept_id = ? " + // Next deptId + "AND pd.file_category = ? " + // Next fileCatId + fileStatusCondition; // Last fileStatus condition + } + + // Add date range parameters first + params.add(startDate); + params.add(endDate); + + // Add deptId and fileCatId parameters + params.add(deptId); + params.add(fileCatId); + + // Add fileStatus parameters if present + if (fileStatus != null && !fileStatus.isEmpty()) { + params.addAll(fileStatus); + } + + System.out.println("Executing SQL Query: " + sql); + System.out.println("Query Parameters: " + params); + + return jdbcTemplate.queryForList(sql, params.toArray()); + } + + + + + + + //pensioner side reorts methods + + public List> getstatus() { + String sql = "select id , file_status from gcc_pensioner.file_status_master"; + return jdbcTemplate.queryForList(sql); + } + + public List> getdepartment() { + String sql = "select id ,dept_name from gcc_pensioner.department_master"; + return jdbcTemplate.queryForList(sql); + } + + +// public List> getReportDatapension(String startDate, String endDate, String fileCategoryId) { +// String sql = "SELECT fm.file_name, " + +// "fm.id AS file_category_id, " + +// "COALESCE(dm.dept_name, 'All Departments') AS dept_name, " + +// "COALESCE(SUM(CASE WHEN pd.file_status IN (1,3) OR cps.file_status IN (1,3) THEN 1 ELSE 0 END), 0) AS audit_pending, " + +// "COALESCE(SUM(CASE WHEN pd.file_status IN (2,5,6,9) OR cps.file_status IN (2,5,6,9) THEN 1 ELSE 0 END), 0) AS department_pending, " + +// "COALESCE(SUM(CASE WHEN pd.file_status IN (4,7,8,10) OR cps.file_status IN (4,7,8,10) THEN 1 ELSE 0 END), 0) AS pension_pending, " + +// "COALESCE(SUM(CASE WHEN pd.file_status = 11 OR cps.file_status = 11 THEN 1 ELSE 0 END), 0) AS completed, " + +// "COALESCE(COUNT(pd.id) + COUNT(cps.id), 0) AS total_files " + +// "FROM gcc_pensioner.file_category_master fm " + +// "LEFT JOIN gcc_pensioner.cps_pensioner_details cps ON cps.file_category = fm.id " + +// "LEFT JOIN gcc_pensioner.pensioner_details pd ON pd.file_category = fm.id " + +// "LEFT JOIN gcc_pensioner.department_master dm ON dm.dept_id = COALESCE(pd.dept_id, cps.dept_id) " + +// "WHERE (pd.created_date BETWEEN ? AND ? OR cps.created_date BETWEEN ? AND ?) " + +// (fileCategoryId != null && !fileCategoryId.isEmpty() ? "AND fm.id = ? " : "") + +// "GROUP BY fm.id, fm.file_name, dm.dept_name " + +// "ORDER BY fm.id, dm.dept_name, fm.file_name"; +// +// System.out.println("Executing SQL: " + sql); +// +// List params = new ArrayList<>(); +// params.add(startDate); +// params.add(endDate); +// params.add(startDate); // Date filter applies to both `pd` and `cps` +// params.add(endDate); +// +// if (fileCategoryId != null && !fileCategoryId.isEmpty()) { +// params.add(fileCategoryId); +// } +// +// return jdbcTemplate.queryForList(sql, params.toArray()); +// } + + + + + public List> getReportDatapension(String startDate, String endDate, String fileCategoryId) { + String sql = "SELECT dm.dept_id, " + + " dm.dept_name AS dept_name, " + + + // Audit Pending Count + " (SELECT COUNT(*) FROM gcc_pensioner.pensioner_details pd " + + " WHERE pd.file_status IN (1,3) AND pd.dept_id = dm.dept_id " + + " AND pd.is_closed = 0 " + // Added condition + " AND ( ? IS NULL OR pd.file_category = ? ) " + + " AND DATE(pd.created_date) BETWEEN DATE(?) AND DATE(?)) AS audit_pending, " + + + // Department Pending Count + " (SELECT COUNT(*) FROM gcc_pensioner.pensioner_details pd " + + " WHERE pd.file_status IN (2,5,6,9) AND pd.dept_id = dm.dept_id " + + " AND pd.is_closed = 0 " + // Added condition + " AND ( ? IS NULL OR pd.file_category = ? ) " + + " AND DATE(pd.created_date) BETWEEN DATE(?) AND DATE(?)) AS department_pending, " + + + // Pension Pending Count + " (SELECT COUNT(*) FROM gcc_pensioner.pensioner_details pd " + + " WHERE pd.file_status IN (4,7,8,10) AND pd.dept_id = dm.dept_id " + + " AND pd.is_closed = 0 " + // Added condition + " AND ( ? IS NULL OR pd.file_category = ? ) " + + " AND DATE(pd.created_date) BETWEEN DATE(?) AND DATE(?)) AS pension_pending, " + + + // Completed Count + " (SELECT COUNT(*) FROM gcc_pensioner.pensioner_details pd " + + " WHERE pd.file_status = 11 AND pd.dept_id = dm.dept_id " + + " AND pd.is_closed = 0 " + // Added condition + " AND ( ? IS NULL OR pd.file_category = ? ) " + + " AND DATE(pd.created_date) BETWEEN DATE(?) AND DATE(?)) " + + " + " + + " (SELECT COUNT(*) FROM gcc_pensioner.cps_pensioner_details cps " + + " WHERE cps.file_status = 11 AND cps.dept_id = dm.dept_id " + + " AND ( ? IS NULL OR cps.file_category = ? ) " + + " AND DATE(cps.created_date) BETWEEN DATE(?) AND DATE(?)) AS completed, " + + + // Total Files Count + " (SELECT COUNT(*) FROM gcc_pensioner.pensioner_details pd " + + " WHERE pd.dept_id = dm.dept_id " + + " AND pd.is_closed = 0 " + // Added condition + " AND ( ? IS NULL OR pd.file_category = ? ) " + + " AND DATE(pd.created_date) BETWEEN DATE(?) AND DATE(?)) " + + " + " + + " (SELECT COUNT(*) FROM gcc_pensioner.cps_pensioner_details cps " + + " WHERE cps.dept_id = dm.dept_id " + + " AND ( ? IS NULL OR cps.file_category = ? ) " + + " AND DATE(cps.created_date) BETWEEN DATE(?) AND DATE(?)) AS total_files " + + + "FROM gcc_pensioner.department_master dm " + + "ORDER BY dm.dept_id"; + + System.out.println("Executing SQL: " + sql); + + List params = new ArrayList<>(); + + // Adding parameters explicitly without a loop + params.add(fileCategoryId != null && !fileCategoryId.isEmpty() ? fileCategoryId : null); + params.add(fileCategoryId); + params.add(startDate); + params.add(endDate); + + params.add(fileCategoryId != null && !fileCategoryId.isEmpty() ? fileCategoryId : null); + params.add(fileCategoryId); + params.add(startDate); + params.add(endDate); + + params.add(fileCategoryId != null && !fileCategoryId.isEmpty() ? fileCategoryId : null); + params.add(fileCategoryId); + params.add(startDate); + params.add(endDate); + + params.add(fileCategoryId != null && !fileCategoryId.isEmpty() ? fileCategoryId : null); + params.add(fileCategoryId); + params.add(startDate); + params.add(endDate); + + params.add(fileCategoryId != null && !fileCategoryId.isEmpty() ? fileCategoryId : null); + params.add(fileCategoryId); + params.add(startDate); + params.add(endDate); + + params.add(fileCategoryId != null && !fileCategoryId.isEmpty() ? fileCategoryId : null); + params.add(fileCategoryId); + params.add(startDate); + params.add(endDate); + + params.add(fileCategoryId != null && !fileCategoryId.isEmpty() ? fileCategoryId : null); + params.add(fileCategoryId); + params.add(startDate); + params.add(endDate); + + return jdbcTemplate.queryForList(sql, params.toArray()); + } + + +// public List> getReportDetailspension(String startDate, String endDate, List deptIds, Integer fileCatId, List fileStatus) { +// String sql = ""; +// List params = new ArrayList<>(); +// +// boolean selectAll = deptIds.contains("ALL"); +// +// // ✅ If "ALL" is selected, remove department filtering +// String deptCondition = selectAll ? "1=1" : "pd.dept_id IN (" + String.join(",", Collections.nCopies(deptIds.size(), "?")) + ")"; +// +// // ✅ Handle fileStatus as multiple values in IN clause +// String fileStatusCondition = (fileStatus != null && !fileStatus.isEmpty()) +// ? " AND pd.file_status IN (" + String.join(",", Collections.nCopies(fileStatus.size(), "?")) + ")" +// : ""; // Skip condition if fileStatus is empty or null +// +// if (fileCatId == 6) { +// sql = "SELECT pd.emp_no, pd.emp_name, pd.designation, pd.type_of_retirement, pd.reason_for_pending, " + +// "fm.file_status AS fst, pd.file_category_name, pd.remarks, DATE(pd.created_date) AS created_date " + +// "FROM cps_pensioner_details pd " + +// "INNER JOIN file_status_master fm ON pd.file_status = fm.id " + +// "WHERE " + deptCondition + " AND pd.file_category = ?" + fileStatusCondition; +// +// if (!selectAll) { +// params.addAll(deptIds); +// } +// params.add(fileCatId); +// if (fileStatus != null && !fileStatus.isEmpty()) { +// params.addAll(fileStatus); +// } +// } +// else { +// sql = "SELECT pd.*, fm.file_status as fst FROM pensioner_details pd " + +// "INNER JOIN file_status_master fm ON pd.file_status = fm.id " + +// "WHERE " + deptCondition + " AND pd.file_category = ?" + fileStatusCondition; +// +// if (!selectAll) { +// params.addAll(deptIds); +// } +// params.add(fileCatId); +// if (fileStatus != null && !fileStatus.isEmpty()) { +// params.addAll(fileStatus); +// } +// } +// +// System.out.println("Executing SQL Query: " + sql); +// System.out.println("Query Parameters: " + params); +// +// return jdbcTemplate.queryForList(sql, params.toArray()); +// } + + + + public List> getReportDetailspension(String startDate, String endDate, List deptIds, Integer fileCatId, List fileStatus) { + String sql = ""; + List params = new ArrayList<>(); + + boolean selectAll = deptIds.contains("ALL"); + + // ✅ If "ALL" is selected, remove department filtering + String deptCondition = selectAll ? "1=1" : "pd.dept_id IN (" + String.join(",", Collections.nCopies(deptIds.size(), "?")) + ")"; + + // ✅ Handle fileStatus as multiple values in IN clause + String fileStatusCondition = (fileStatus != null && !fileStatus.isEmpty()) + ? " AND pd.file_status IN (" + String.join(",", Collections.nCopies(fileStatus.size(), "?")) + ")" + : ""; // Skip condition if fileStatus is empty or null + + if (fileCatId == 6) { + sql = "SELECT pd.emp_no, pd.emp_name, pd.designation, pd.type_of_retirement, pd.reason_for_pending, " + + "fm.file_status AS fst, pd.file_category_name, pd.remarks, DATE(pd.created_date) AS created_date " + + "FROM cps_pensioner_details pd " + + "INNER JOIN file_status_master fm ON pd.file_status = fm.id " + + "WHERE DATE(pd.created_date) BETWEEN DATE(?) AND DATE(?) " + // First: Date filter + "AND pd.file_category = ? " + // Second: File category filter + "AND " + deptCondition + // Third: Department condition + fileStatusCondition; // Last: File status condition + + } else { + sql = "SELECT pd.*, fm.file_status as fst " + + "FROM pensioner_details pd " + + "INNER JOIN file_status_master fm ON pd.file_status = fm.id " + + "WHERE DATE(pd.created_date) BETWEEN DATE(?) AND DATE(?) " + // First: Date filter + "AND pd.file_category = ? " + // Second: File category filter + "AND " + deptCondition + // Third: Department condition + fileStatusCondition; // Last: File status condition + } + + // Add date range parameters first + params.add(startDate); + params.add(endDate); + + // Add file category next + params.add(fileCatId); + + // Add department filter parameters if not "ALL" + if (!selectAll) { + params.addAll(deptIds); + } + + // Add fileStatus parameters if present + if (fileStatus != null && !fileStatus.isEmpty()) { + params.addAll(fileStatus); + } + + System.out.println("Executing SQL Query: " + sql); + System.out.println("Query Parameters: " + params); + + return jdbcTemplate.queryForList(sql, params.toArray()); + } + + + + + public List> getDepartmentpending(int file_category) { + + String sql = "SELECT dept_name, emp_name, emp_no, file_category_name, file_status, file_moved_date, remarks " + + "FROM pensioner_details WHERE file_status IN (2, 5, 6, 9) AND file_category=?"; + + List> results = jdbcTemplate.queryForList(sql, file_category); + + return jdbcTemplate.queryForList(sql, file_category); + } + + + +} diff --git a/backend/pensioner/service/ReturnFromAuditService.java b/backend/pensioner/service/ReturnFromAuditService.java new file mode 100644 index 0000000..33cc4c2 --- /dev/null +++ b/backend/pensioner/service/ReturnFromAuditService.java @@ -0,0 +1,213 @@ +package in.gov.chennaicorporation.gccoffice.pensioner.service; + +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import in.gov.chennaicorporation.gccoffice.configuration.AppConfig; + +@Service +@Transactional +public class ReturnFromAuditService { + + @Autowired + private JdbcTemplate jdbcTemplate; + + + private RestTemplate restTemplate; + private ObjectMapper objectMapper; + @Autowired + private AppConfig appconfig; + + public ReturnFromAuditService(RestTemplate restTemplate, ObjectMapper objectMapper) { + this.restTemplate = restTemplate; + this.objectMapper = objectMapper; + } + + @Autowired + public void setDataSource(@Qualifier("mysqlPensionerDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + public List> fetchReturnEmpfiles(Integer deptId,Integer file_cat) { + String query = "SELECT * " + + "FROM pensioner_details " + + "WHERE file_status=2 AND dept_id=? AND file_category=? AND is_closed=0"; + + + return jdbcTemplate.queryForList(query,deptId,file_cat); + } + + public boolean updateEntryDetails(Map requestData) { + // TODO Auto-generated method stub + String empNo = (String) requestData.get("empNo"); + String tempId = (String) requestData.get("tempId"); + String dateToAudit = (String) requestData.get("dateToAudit"); + String filemovedby =(String)requestData.get("filemovedby"); + String remarks = (String) requestData.get("remarks"); + String dept_Id = (String) requestData.get("deptId"); + + int deptId = Integer.parseInt(dept_Id); + int filestatus = 3; + + // Update file_status in pensioner_details + String updateQuery = "UPDATE pensioner_details SET file_status = ?,file_moved_date=?,remarks=?,updated_date= CURRENT_TIMESTAMP WHERE temp_id = ? LIMIT 1"; + int rowsUpdated = jdbcTemplate.update(updateQuery,filestatus,dateToAudit, remarks,tempId); + System.out.println("Rows inserted in pd:"+rowsUpdated); + if(rowsUpdated>0) + { + // Optional: Insert into file movement history for auditing + String historyQuery = "INSERT INTO file_movement_history (emp_no, file_moved_date, file_status, file_moved_by, remarks,temp_id) VALUES (?,?, ?, ?, ?, ?)"; + int rowsUpdated1=jdbcTemplate.update(historyQuery, empNo, dateToAudit, filestatus, filemovedby, remarks,tempId); + System.out.println("Rows inserted in fmh:"+rowsUpdated1); + + return true; + } + else { + return false; + } + + } + + public boolean savehistory(List> emp_details,String filemovedby) { + try { + // Loop through the list of employee details + for (Map emp : emp_details) { + // Extract individual fields from the map + String empNo = emp.get("emp_no").toString(); + String empName = emp.get("emp_name").toString(); + String deptName = emp.get("dept_name").toString(); + String designation = emp.get("designation").toString(); + String fileCategoryName = emp.get("file_category_name").toString(); + String retirement_date = emp.get("retirement_date").toString(); + String retirement_class = emp.get("retirement_class").toString(); + String type_of_retirement = emp.get("type_of_retirement").toString(); + String fileMovedDate = emp.get("file_moved_date").toString(); + String remarks = emp.get("remarks").toString(); + int fileStatus = Integer.parseInt(emp.get("file_status").toString()); + String fileEntryType = emp.get("file_entry_type").toString(); + int file_category = Integer.parseInt(emp.get("file_category").toString()); + int dept_id = Integer.parseInt(emp.get("dept_id").toString()); + String temp_id = emp.get("temp_id").toString(); + + // Prepare the insert query + String insertQuery ="INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, type_of_retirement,retirement_date ,retirement_class,file_moved_date, remarks,file_category,file_status,file_entry_type,file_moved_by,dept_id,file_category_name,temp_id) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?)"; + + // Execute the query + int rowsInserted = jdbcTemplate.update(insertQuery, empNo, empName, deptName,designation,type_of_retirement,retirement_date,retirement_class,fileMovedDate,remarks,file_category,fileStatus,fileEntryType,filemovedby,dept_id,fileCategoryName,temp_id); + System.out.println("Rows inserted in pdh:"+rowsInserted); + // Check if the insertion was successful + if (rowsInserted <= 0) { + return false; // Return false if any insertion fails + } + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + + + //save the updatedfamilypensionReturn + + public boolean saveFamilyPensionReturnHistory(List> emp_details,String filemovedby) { + try { + // Loop through the list of employee details + for (Map emp : emp_details) { + // Extract individual fields from the map + String empNo = emp.get("emp_no").toString(); + String empName = emp.get("emp_name").toString(); + String deptName = emp.get("dept_name").toString(); + String designation = emp.get("designation").toString(); + String fileCategoryName = emp.get("file_category_name").toString(); + String pendingDuration=emp.get("pending_duration").toString(); + String pendingReason=emp.get("reason_for_pending").toString(); + String sericeDeath = emp.get("service_death").toString(); + String relationshipDeceased = emp.get("relationship_deceased").toString(); + String sanctionedGis = emp.get("sanctioned_gis_amount").toString(); + String fileMovedDate = emp.get("file_moved_date").toString(); + String remarks = emp.get("remarks").toString(); + int fileStatus = Integer.parseInt(emp.get("file_status").toString()); + String fileEntryType = emp.get("file_entry_type").toString(); + int file_category = Integer.parseInt(emp.get("file_category").toString()); + int dept_id = Integer.parseInt(emp.get("dept_id").toString()); + String temp_id = emp.get("temp_id").toString(); + + // Prepare the insert query + String insertQuery ="INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation, service_death,relationship_deceased ,sanctioned_gis_amount,file_moved_date, remarks,file_category,file_status,file_entry_type,file_moved_by,dept_id,file_category_name,temp_id,pending_duration,reason_for_pending) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)"; + + // Execute the query + int rowsInserted = jdbcTemplate.update(insertQuery, empNo, empName, deptName,designation,sericeDeath,relationshipDeceased,sanctionedGis,fileMovedDate,remarks,file_category,fileStatus,fileEntryType,filemovedby,dept_id,fileCategoryName,temp_id,pendingDuration,pendingReason); + System.out.println("Rows inserted in pdh:"+rowsInserted); + // Check if the insertion was successful + if (rowsInserted <= 0) { + return false; // Return false if any insertion fails + } + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } + + //update save pendency history + public boolean savePendencyHistory(List> emp_details,String filemovedby) { + try { + // Loop through the list of employee details + for (Map emp : emp_details) { + // Extract individual fields from the map + String empNo = emp.get("emp_no").toString(); + String empName = emp.get("emp_name").toString(); + String deptName = emp.get("dept_name").toString(); + String designation = emp.get("designation").toString(); + String retirementClass = emp.get("retirement_class").toString(); + String retirementDate=emp.get("retirement_date").toString(); + //String fileCategoryName = emp.get("file_category_name").toString(); + String pendingDuration=emp.get("pending_duration").toString(); + String pendingReason=emp.get("reason_for_pending") != null ? emp.get("reason_for_pending").toString() : null; + + String typeOfCategory=emp.get("file_category_name").toString(); + String typeOfRetirement=emp.get("type_of_retirement").toString(); + + String fileMovedDate = emp.get("file_moved_date").toString(); + String remarks = emp.get("remarks").toString(); + int fileStatus = Integer.parseInt(emp.get("file_status").toString()); + String fileEntryType = emp.get("file_entry_type").toString(); + int file_category = Integer.parseInt(emp.get("file_category").toString()); + int dept_id = Integer.parseInt(emp.get("dept_id").toString()); + String temp_id = emp.get("temp_id").toString(); + + // Prepare the insert query + String insertQuery ="INSERT INTO pensioner_details_history (emp_no, emp_name, dept_name, designation,retirement_class,retirement_date,file_category_name,type_of_retirement,file_moved_date, remarks,file_category,file_status,file_entry_type,file_moved_by,dept_id,temp_id,pending_duration,reason_for_pending) VALUES (?,?,?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)"; + + // Execute the query + int rowsInserted = jdbcTemplate.update(insertQuery, empNo, empName, deptName,designation,retirementClass,retirementDate,typeOfCategory,typeOfRetirement,fileMovedDate,remarks,file_category,fileStatus,fileEntryType,filemovedby,dept_id,temp_id,pendingDuration,pendingReason); + System.out.println("Rows inserted in pdh:"+rowsInserted); + // Check if the insertion was successful + if (rowsInserted <= 0) { + return false; // Return false if any insertion fails + } + } + + return true; // Return true if all insertions succeed + } catch (Exception e) { + e.printStackTrace(); + return false; // Return false in case of any exception + } + } +} diff --git a/frontend/pensioner/department/audit/familypension.html b/frontend/pensioner/department/audit/familypension.html new file mode 100644 index 0000000..7641014 --- /dev/null +++ b/frontend/pensioner/department/audit/familypension.html @@ -0,0 +1,749 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
Audit- Family Pension
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/audit/pendency.html b/frontend/pensioner/department/audit/pendency.html new file mode 100644 index 0000000..d0e8981 --- /dev/null +++ b/frontend/pensioner/department/audit/pendency.html @@ -0,0 +1,731 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
Audit - Pendency
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile Category TypeFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/audit/retirement.html b/frontend/pensioner/department/audit/retirement.html new file mode 100644 index 0000000..3ed06c6 --- /dev/null +++ b/frontend/pensioner/department/audit/retirement.html @@ -0,0 +1,646 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
Audit- Retirement
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/closedList.html b/frontend/pensioner/department/closedList.html new file mode 100644 index 0000000..7511342 --- /dev/null +++ b/frontend/pensioner/department/closedList.html @@ -0,0 +1,1132 @@ + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
File Closing List
+
+ +
+ + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateView
+
+
+
+
+
+ + + +
+
+ + +
+
+
+ + + + + + + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/completed/contributorypensionscheme.html b/frontend/pensioner/department/completed/contributorypensionscheme.html new file mode 100644 index 0000000..04f7fea --- /dev/null +++ b/frontend/pensioner/department/completed/contributorypensionscheme.html @@ -0,0 +1,685 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+
+
+
+
 Department
+
Completed Contributory Pension Scheme
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeNameDepartmentDesignationFile Created DateFile TypeView
+ +
+
+
+
+
+
+ +
+ +
+ +
+
+ +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/completed/familypension.html b/frontend/pensioner/department/completed/familypension.html new file mode 100644 index 0000000..03f3c5d --- /dev/null +++ b/frontend/pensioner/department/completed/familypension.html @@ -0,0 +1,814 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+ +
 Department
+
Completed - Family Pension
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/completed/gis.html b/frontend/pensioner/department/completed/gis.html new file mode 100644 index 0000000..09bcf75 --- /dev/null +++ b/frontend/pensioner/department/completed/gis.html @@ -0,0 +1,547 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
Completed-GIS
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+ +
+
+ + +
+
+
+ + + + + + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/completed/pendency.html b/frontend/pensioner/department/completed/pendency.html new file mode 100644 index 0000000..ce62294 --- /dev/null +++ b/frontend/pensioner/department/completed/pendency.html @@ -0,0 +1,820 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+ +
 Department
+
Completed - Pendency
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/completed/provisionalretirement.html b/frontend/pensioner/department/completed/provisionalretirement.html new file mode 100644 index 0000000..4479023 --- /dev/null +++ b/frontend/pensioner/department/completed/provisionalretirement.html @@ -0,0 +1,695 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+ +
 Department
+
Completed - Provisional Retirement
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/completed/retirement.html b/frontend/pensioner/department/completed/retirement.html new file mode 100644 index 0000000..ae40e10 --- /dev/null +++ b/frontend/pensioner/department/completed/retirement.html @@ -0,0 +1,771 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+ +
 Department
+
Completed - Retirement
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/dashboard.html b/frontend/pensioner/department/dashboard.html new file mode 100644 index 0000000..c13aadd --- /dev/null +++ b/frontend/pensioner/department/dashboard.html @@ -0,0 +1,934 @@ + + + + + + + + +
+
+
+
+
+
+ +
+
+ +
+
+ +
+
Department
+
+ + + +
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+

File Category - Overall

+
+ +
+
+

File Category Stages Wise

+
+
+
+
+ +
+ +
+
+
+ +
+
+
+
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + diff --git a/frontend/pensioner/department/fileclosing.html b/frontend/pensioner/department/fileclosing.html new file mode 100644 index 0000000..2fb23f6 --- /dev/null +++ b/frontend/pensioner/department/fileclosing.html @@ -0,0 +1,1230 @@ + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
Retirement File Closing
+ +
+ + + + + +
+ + + +
+ +
+ + +
+
+
+
+ +
+
+
+ +
+
+
+
Retirement File Closing
+
+ +
+ + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+
+
+
+
+
+ + + +
+
+ + +
+
+
+ + + + + + + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/newentry/contributorypensionscheme.html b/frontend/pensioner/department/newentry/contributorypensionscheme.html new file mode 100644 index 0000000..e7088c0 --- /dev/null +++ b/frontend/pensioner/department/newentry/contributorypensionscheme.html @@ -0,0 +1,946 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
New Entry - Contributory Pension
+
+ +
+ + + +
+ + + +
+ +
+ + +
+
+
+
+ +
+
+ + + + +
+
+ + + + +
+
+
+ + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/newentry/familypension.html b/frontend/pensioner/department/newentry/familypension.html new file mode 100644 index 0000000..0568c26 --- /dev/null +++ b/frontend/pensioner/department/newentry/familypension.html @@ -0,0 +1,886 @@ + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
New Entry - Family Pension
+ +
+ + + + + +
+ + + +
+ +
+ + +
+
+
+
+ +
+
+ + + + + + + +
+
+ + +
+
+
+ + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/newentry/gis.html b/frontend/pensioner/department/newentry/gis.html new file mode 100644 index 0000000..e9afa85 --- /dev/null +++ b/frontend/pensioner/department/newentry/gis.html @@ -0,0 +1,1013 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
+
+ + New Entry - GIS +
+
+ +
+ + + + + +
+ + + +
+ + +
+ + + +
+ + +
+
+ + +
+ + +
+ +
+ + +
+
+ + +
+
+ + + + +
+
+
+ + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/newentry/pendency.html b/frontend/pensioner/department/newentry/pendency.html new file mode 100644 index 0000000..f620b2f --- /dev/null +++ b/frontend/pensioner/department/newentry/pendency.html @@ -0,0 +1,758 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+ +
 Department
+
New Entry - Pendency
+ +
+ +
+ + + +
+ +
+ + +
+
+
+
+ +
+
+ + +
+
+ + +
+
+
+ + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/newentry/provisionalretirement.html b/frontend/pensioner/department/newentry/provisionalretirement.html new file mode 100644 index 0000000..1e627c7 --- /dev/null +++ b/frontend/pensioner/department/newentry/provisionalretirement.html @@ -0,0 +1,849 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
New Entry - Provisional Retirement
+ +
+ +
+ + + +
+ +
+ + +
+
+
+
+ +
+
+ + + + + +
+
+ + + + +
+
+
+ + + + +
+ + + + + + + + + + + + + + + + diff --git a/frontend/pensioner/department/newentry/retirement.html b/frontend/pensioner/department/newentry/retirement.html new file mode 100644 index 0000000..d64dfae --- /dev/null +++ b/frontend/pensioner/department/newentry/retirement.html @@ -0,0 +1,802 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
+ New Entry - Retirement
+
+ +
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ +
+ + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DOBRetirement DateDepartmentDesignationView
+
+
+
+
+
+
+
+ + + +
+
+
+ + + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/partial/familypension.html b/frontend/pensioner/department/partial/familypension.html new file mode 100644 index 0000000..b72069e --- /dev/null +++ b/frontend/pensioner/department/partial/familypension.html @@ -0,0 +1,1190 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
Partially Completed - Family Pension
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/partial/pendency.html b/frontend/pensioner/department/partial/pendency.html new file mode 100644 index 0000000..f92076b --- /dev/null +++ b/frontend/pensioner/department/partial/pendency.html @@ -0,0 +1,1186 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
Partially Completed - Pendency
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/partial/retirement.html b/frontend/pensioner/department/partial/retirement.html new file mode 100644 index 0000000..e86d3f7 --- /dev/null +++ b/frontend/pensioner/department/partial/retirement.html @@ -0,0 +1,1158 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
Partially Completed - Retirement
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/received/familypension.html b/frontend/pensioner/department/received/familypension.html new file mode 100644 index 0000000..67e24e9 --- /dev/null +++ b/frontend/pensioner/department/received/familypension.html @@ -0,0 +1,997 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
Received From Pension - Family Pension
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/received/pendency.html b/frontend/pensioner/department/received/pendency.html new file mode 100644 index 0000000..b46a924 --- /dev/null +++ b/frontend/pensioner/department/received/pendency.html @@ -0,0 +1,972 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
Received From Pension - Pendency
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/received/provisionalretirement.html b/frontend/pensioner/department/received/provisionalretirement.html new file mode 100644 index 0000000..a72480d --- /dev/null +++ b/frontend/pensioner/department/received/provisionalretirement.html @@ -0,0 +1,909 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
Received From Pension - Provisional Retirement
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/received/retirement.html b/frontend/pensioner/department/received/retirement.html new file mode 100644 index 0000000..7f7566e --- /dev/null +++ b/frontend/pensioner/department/received/retirement.html @@ -0,0 +1,917 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
Received From Pension - Retirement
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/reports.html b/frontend/pensioner/department/reports.html new file mode 100644 index 0000000..73c3207 --- /dev/null +++ b/frontend/pensioner/department/reports.html @@ -0,0 +1,1150 @@ + + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
Zone Department/Report
+ +
 
+
+
+ + + + + +
+ + +
+
+ + +
+ + +
+ + +
+ + + + + + + + + + + +
+ + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + +
+
+
+ + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/return/familypension.html b/frontend/pensioner/department/return/familypension.html new file mode 100644 index 0000000..c91f3a1 --- /dev/null +++ b/frontend/pensioner/department/return/familypension.html @@ -0,0 +1,727 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
Return from Audit - Family Pension
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + diff --git a/frontend/pensioner/department/return/pendency.html b/frontend/pensioner/department/return/pendency.html new file mode 100644 index 0000000..841e11e --- /dev/null +++ b/frontend/pensioner/department/return/pendency.html @@ -0,0 +1,720 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
Return from Audit - Pendency
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile TypeFile Category TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/department/return/retirement.html b/frontend/pensioner/department/return/retirement.html new file mode 100644 index 0000000..0567281 --- /dev/null +++ b/frontend/pensioner/department/return/retirement.html @@ -0,0 +1,613 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
 Department
+
Return from Audit - Retirement
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + +
+ + + + + + + + + + + + + + diff --git a/frontend/pensioner/pensioner/audit/familypension.html b/frontend/pensioner/pensioner/audit/familypension.html new file mode 100644 index 0000000..fa5e745 --- /dev/null +++ b/frontend/pensioner/pensioner/audit/familypension.html @@ -0,0 +1,742 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
Audit- Family Pension
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + diff --git a/frontend/pensioner/pensioner/audit/pendency.html b/frontend/pensioner/pensioner/audit/pendency.html new file mode 100644 index 0000000..b80fafd --- /dev/null +++ b/frontend/pensioner/pensioner/audit/pendency.html @@ -0,0 +1,733 @@ + + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
Audit- Pendency
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile Category TypeFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/pensioner/pensioner/audit/retirement.html b/frontend/pensioner/pensioner/audit/retirement.html new file mode 100644 index 0000000..078f5e3 --- /dev/null +++ b/frontend/pensioner/pensioner/audit/retirement.html @@ -0,0 +1,614 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
Audit- Retirement
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+ +
+
+ + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/pensioner/completed/contributorypensionscheme.html b/frontend/pensioner/pensioner/completed/contributorypensionscheme.html new file mode 100644 index 0000000..06dec63 --- /dev/null +++ b/frontend/pensioner/pensioner/completed/contributorypensionscheme.html @@ -0,0 +1,687 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+
+
+
+
Completed Contributory Pension Scheme
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeNameDepartmentDesignationFile Created DateFile TypeView
+ +
+
+
+
+
+
+ +
+ +
+
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/pensioner/completed/familypension.html b/frontend/pensioner/pensioner/completed/familypension.html new file mode 100644 index 0000000..bd54080 --- /dev/null +++ b/frontend/pensioner/pensioner/completed/familypension.html @@ -0,0 +1,807 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+ +
Completed - Family Pension
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/pensioner/completed/gis.html b/frontend/pensioner/pensioner/completed/gis.html new file mode 100644 index 0000000..e60ff66 --- /dev/null +++ b/frontend/pensioner/pensioner/completed/gis.html @@ -0,0 +1,546 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
Completed-GIS
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+ +
+
+ + +
+
+
+ + + + + + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/pensioner/completed/pendency.html b/frontend/pensioner/pensioner/completed/pendency.html new file mode 100644 index 0000000..da1609f --- /dev/null +++ b/frontend/pensioner/pensioner/completed/pendency.html @@ -0,0 +1,807 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+ +
Completed - Pendency
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/pensioner/completed/provisionalretirement.html b/frontend/pensioner/pensioner/completed/provisionalretirement.html new file mode 100644 index 0000000..6de69a2 --- /dev/null +++ b/frontend/pensioner/pensioner/completed/provisionalretirement.html @@ -0,0 +1,716 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+ +
Completed - Provisional Retirement
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/pensioner/completed/retirement.html b/frontend/pensioner/pensioner/completed/retirement.html new file mode 100644 index 0000000..5e3b8cc --- /dev/null +++ b/frontend/pensioner/pensioner/completed/retirement.html @@ -0,0 +1,770 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+ +
Completed - Retirement
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/pensioner/dashboard.html b/frontend/pensioner/pensioner/dashboard.html new file mode 100644 index 0000000..dc9bd17 --- /dev/null +++ b/frontend/pensioner/pensioner/dashboard.html @@ -0,0 +1,915 @@ + + + + + + + + +
+
+
+
+
+
+ +
+
+ +
+
+
Pension Department
+ +
+ + + +
+ +
+
+ + +
+
+ + +
+
+ + +
+ + +
+ + +
+
+ + +
+
+
+

File Category - Overall

+
+ +
+
+

File Category Stages Wise

+
+
+
+
+ +
+
+
+ +
+ +
+
+
+
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + diff --git a/frontend/pensioner/pensioner/forward/familypension.html b/frontend/pensioner/pensioner/forward/familypension.html new file mode 100644 index 0000000..17313ea --- /dev/null +++ b/frontend/pensioner/pensioner/forward/familypension.html @@ -0,0 +1,731 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
Forward to Department- Family Pension
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + diff --git a/frontend/pensioner/pensioner/forward/pendency.html b/frontend/pensioner/pensioner/forward/pendency.html new file mode 100644 index 0000000..7278537 --- /dev/null +++ b/frontend/pensioner/pensioner/forward/pendency.html @@ -0,0 +1,725 @@ + + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
Forward to Department- Pendency
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile Category TypeFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + diff --git a/frontend/pensioner/pensioner/forward/retirement.html b/frontend/pensioner/pensioner/forward/retirement.html new file mode 100644 index 0000000..729e245 --- /dev/null +++ b/frontend/pensioner/pensioner/forward/retirement.html @@ -0,0 +1,595 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
Forward To Department - Retirement
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + +
+ + + + + + + + + + + + + + + + diff --git a/frontend/pensioner/pensioner/partial/familypension.html b/frontend/pensioner/pensioner/partial/familypension.html new file mode 100644 index 0000000..96db8d4 --- /dev/null +++ b/frontend/pensioner/pensioner/partial/familypension.html @@ -0,0 +1,1190 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + + +
+ +
+
+
+
Partially Completed - Family Pension
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/pensioner/partial/pendency.html b/frontend/pensioner/pensioner/partial/pendency.html new file mode 100644 index 0000000..4ab2ea6 --- /dev/null +++ b/frontend/pensioner/pensioner/partial/pendency.html @@ -0,0 +1,1184 @@ +f + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + + +
+ +
+
+
+
Partially Completed - Pendency
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/pensioner/partial/retirement.html b/frontend/pensioner/pensioner/partial/retirement.html new file mode 100644 index 0000000..f580e3e --- /dev/null +++ b/frontend/pensioner/pensioner/partial/retirement.html @@ -0,0 +1,1184 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + + +
+ +
+
+
+
Partially Completed - Retirement
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/pensioner/received/familypension.html b/frontend/pensioner/pensioner/received/familypension.html new file mode 100644 index 0000000..e5ccbb1 --- /dev/null +++ b/frontend/pensioner/pensioner/received/familypension.html @@ -0,0 +1,1373 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
Received From Department - Family Pension
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + +
+ + + + + + + + + + + + + + + + diff --git a/frontend/pensioner/pensioner/received/gis.html b/frontend/pensioner/pensioner/received/gis.html new file mode 100644 index 0000000..c0d1655 --- /dev/null +++ b/frontend/pensioner/pensioner/received/gis.html @@ -0,0 +1,726 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
Received From Department-GIS
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+ +
+
+ + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/pensioner/received/pendency.html b/frontend/pensioner/pensioner/received/pendency.html new file mode 100644 index 0000000..d1dd039 --- /dev/null +++ b/frontend/pensioner/pensioner/received/pendency.html @@ -0,0 +1,1348 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
Received From Department - Family Pension
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + +
+ + + + + + + + + + + + + + + + diff --git a/frontend/pensioner/pensioner/received/provisionalretirement.html b/frontend/pensioner/pensioner/received/provisionalretirement.html new file mode 100644 index 0000000..7609403 --- /dev/null +++ b/frontend/pensioner/pensioner/received/provisionalretirement.html @@ -0,0 +1,1000 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+ +
Received From Department - Provisional Retirement
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/pensioner/pensioner/received/retirement.html b/frontend/pensioner/pensioner/received/retirement.html new file mode 100644 index 0000000..bec7170 --- /dev/null +++ b/frontend/pensioner/pensioner/received/retirement.html @@ -0,0 +1,1306 @@ + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
Received From Department - Retirement
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoEmployee CodeName DepartmentDesignationFile Sent DateFile TypeView
+ +
+
+
+
+
+
+
+
+ + +
+
+
+ + + + + + +
+ + + + + + + + + + + + + + + + diff --git a/frontend/pensioner/pensioner/reports.html b/frontend/pensioner/pensioner/reports.html new file mode 100644 index 0000000..8828ae0 --- /dev/null +++ b/frontend/pensioner/pensioner/reports.html @@ -0,0 +1,1556 @@ + + + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+
+
+
Pensioner Report
+ +
 
+
+
+ +
+ + +
+
+ + +
+ + +
+ + +
+ + + + + + + + + + + + + + + + +
+ + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file