Browse Source

changes in view-file-details page added updated date

master
yoganandhan 9 months ago
parent
commit
f91caac9af
  1. 6
      src/main/java/com/adjustment_file_management_system/springboot/mapper/FileDataMapper.java
  2. 3
      src/main/java/com/adjustment_file_management_system/springboot/request_dto/AddFileDataRequestDTO.java
  3. 1
      src/main/java/com/adjustment_file_management_system/springboot/request_dto/FileDataRequestDTO.java
  4. 1
      src/main/java/com/adjustment_file_management_system/springboot/response_dto/FileDataResponseDTO.java
  5. 60
      src/main/java/com/adjustment_file_management_system/springboot/service/FileDataService.java
  6. 37
      src/main/resources/static/js/view-file-detail-script.js
  7. 20
      src/main/resources/templates/file/view-file-detail.html

6
src/main/java/com/adjustment_file_management_system/springboot/mapper/FileDataMapper.java

@ -23,7 +23,7 @@ public class FileDataMapper {
@Autowired
private AdvanceTypeMapper advTypeMap;
public FileData toFileDataEnt(FileDataResponseDTO fileDataResDTO) {
FileData fileData = new FileData();
fileData.setAdvType(advTypeRepo.findById(fileDataResDTO.getAdvTypeResDTO().getAdvTypeId()).get());
@ -54,6 +54,7 @@ public class FileDataMapper {
fileData.setTcFileGenDate(fileDataResDTO.getTcFileGenDate());
fileData.setTcFilePath(fileDataResDTO.getTcFilePath());
fileData.setVendName(fileDataResDTO.getVendName());
fileData.setDbUpdatedTimestamp(fileDataResDTO.getUpdatedDate());
return fileData;
}
@ -67,7 +68,7 @@ public class FileDataMapper {
fileData.setBalAmt(fileDataReqDTO.getBalAmt());
fileData.setDcFilePath(fileDataReqDTO.getDcFilePath());
fileData.setEjvNum(fileDataReqDTO.getEjvNum());
fileData.setEjvNumFilePath(fileDataReqDTO.getEjvNumFilePath());
// fileData.setEjvNumFilePath(fileDataReqDTO.getEjvNumFilePath());
fileData.setFiAmt(fileDataReqDTO.getFiAmt());
fileData.setFiFileGenDate(fileDataReqDTO.getFiFileGenDate());
fileData.setFiFilePath(fileDataReqDTO.getFiFilePath());
@ -121,6 +122,7 @@ public class FileDataMapper {
fileDataResDTO.setTcFilePath(fileData.getTcFilePath());
fileDataResDTO.setVendName(fileData.getVendName());
fileDataResDTO.setEjvNumFileGenDate(fileData.getEjvNumFileGenDate());
fileDataResDTO.setUpdatedDate(fileData.getDbUpdatedTimestamp());
return fileDataResDTO;
}

3
src/main/java/com/adjustment_file_management_system/springboot/request_dto/AddFileDataRequestDTO.java

@ -22,6 +22,9 @@ public class AddFileDataRequestDTO {
@DateTimeFormat(pattern = "dd-MM-yyyy")
private Date asFileGenDate;
@DateTimeFormat(pattern = "dd-MM-yyyy")
private Date updatedDate;
@DateTimeFormat(pattern = "dd-MM-yyyy")
private Date createdDate;
private Date piFileGenDate;
private Double piAmt;
private String fileRmrk;

1
src/main/java/com/adjustment_file_management_system/springboot/request_dto/FileDataRequestDTO.java

@ -31,6 +31,7 @@ public class FileDataRequestDTO {
private String irFilePath;
private String asFinalFilePath;
private Date asFinalFileGenDate;
private Date updatedDate;
private String ejvNum;
private String ejvNumFilePath;
private String tcFilePath;

1
src/main/java/com/adjustment_file_management_system/springboot/response_dto/FileDataResponseDTO.java

@ -43,4 +43,5 @@ public class FileDataResponseDTO {
private Date ejvNumFileGenDate;
private FundTypeResponseDTO fundTypeResDTO;
private Long daysPass;
private Date updatedDate;
}

60
src/main/java/com/adjustment_file_management_system/springboot/service/FileDataService.java

@ -162,18 +162,18 @@ public class FileDataService {
private MultipartFile getFileByType(Object obj, String type) {
if (obj instanceof AddFileDataRequestDTO addFileDataReqDTO) {
return switch (type) {
case "AS" -> addFileDataReqDTO.getAsFile();
case "PI" -> addFileDataReqDTO.getPiFile();
default -> null;
case "AS" -> addFileDataReqDTO.getAsFile();
case "PI" -> addFileDataReqDTO.getPiFile();
default -> null;
};
} else if (obj instanceof UpdateFileDataRequestDTO updFileDataReqDTO) {
return switch (type) {
case "AS" -> updFileDataReqDTO.getAsFile();
case "PI" -> updFileDataReqDTO.getPiFile();
case "FI" -> updFileDataReqDTO.getFiFile();
case "AS-Final" -> updFileDataReqDTO.getAsFinalFile();
case "TC" -> updFileDataReqDTO.getTcFile();
default -> null;
case "AS" -> updFileDataReqDTO.getAsFile();
case "PI" -> updFileDataReqDTO.getPiFile();
case "FI" -> updFileDataReqDTO.getFiFile();
case "AS-Final" -> updFileDataReqDTO.getAsFinalFile();
case "TC" -> updFileDataReqDTO.getTcFile();
default -> null;
};
}
return null;
@ -244,26 +244,26 @@ public class FileDataService {
}
switch (fileType) {
case "AS", "PI", "RTGS", "PO", "DC", "SR", "IR", "EJV-Number", "AS-Final", "FI", "TC" -> {
// Remove duplicate prefix from filePath if present
if (filePath.startsWith("/uploads/file-data/")) {
filePath = filePath.substring("/uploads/file-data/".length());
} else if (filePath.startsWith("uploads/file-data/")) {
filePath = filePath.substring("uploads/file-data/".length());
}
// Resolve relative path inside uploadDir
File baseDir = fileDataPropsConfig.getUploadDirFile();
Path fullPath = Path.of(baseDir.getAbsolutePath(), filePath).normalize();
if (!Files.exists(fullPath)) {
throw new IOException("File not found for file number: " + fileNum);
case "AS", "PI", "RTGS", "PO", "DC", "SR", "IR", "EJV-Number", "AS-Final", "FI", "TC" -> {
// Remove duplicate prefix from filePath if present
if (filePath.startsWith("/uploads/file-data/")) {
filePath = filePath.substring("/uploads/file-data/".length());
} else if (filePath.startsWith("uploads/file-data/")) {
filePath = filePath.substring("uploads/file-data/".length());
}
// Resolve relative path inside uploadDir
File baseDir = fileDataPropsConfig.getUploadDirFile();
Path fullPath = Path.of(baseDir.getAbsolutePath(), filePath).normalize();
if (!Files.exists(fullPath)) {
throw new IOException("File not found for file number: " + fileNum);
}
return Files.readAllBytes(fullPath);
}
return Files.readAllBytes(fullPath);
}
default ->
throw new IllegalArgumentException("Unknown file type: " + fileType + " for file number: " + fileNum);
default ->
throw new IllegalArgumentException("Unknown file type: " + fileType + " for file number: " + fileNum);
}
}
@ -299,6 +299,7 @@ public class FileDataService {
try {
String fileNum = addFileDataReqDTO.getFileNum().trim();
String vendName = (addFileDataReqDTO.getVendName() != null
&& !addFileDataReqDTO.getVendName().trim().isEmpty())
? addFileDataReqDTO.getVendName().trim().toUpperCase()
@ -309,6 +310,8 @@ public class FileDataService {
: placeHolderDate;
Date asFileGenDate = addFileDataReqDTO.getAsFileGenDate() != null ? addFileDataReqDTO.getAsFileGenDate()
: placeHolderDate;
Date asUpdatedDate = addFileDataReqDTO.getUpdatedDate() != null ? addFileDataReqDTO.getUpdatedDate()
: placeHolderDate;
// 1️. Get or create AdvanceType
AdvanceTypeResponseDTO advTypeResDTO = advTypeMap
@ -328,6 +331,7 @@ public class FileDataService {
fileDataReqDTO.setPiAmt(piAmt);
fileDataReqDTO.setAsFileGenDate(asFileGenDate);
fileDataReqDTO.setPiFileGenDate(piFileGenDate);
fileDataReqDTO.setUpdatedDate(asUpdatedDate);
// Set default values
setDefaultFileDataValues(fileDataReqDTO);

37
src/main/resources/static/js/view-file-detail-script.js

@ -1,3 +1,12 @@
$(document).ready(function () {
const today = new Date().toLocaleDateString("en-GB");
$("#updatedDate").text("Updated Date : " + today);
});
// Function to view Supporting Document in modal
function viewFileInModal(fileNum, fileType, filePath) {
var pdfModal = new bootstrap.Modal(document.getElementById('pdf-modal'));
@ -21,12 +30,12 @@ function viewFileInModal(fileNum, fileType, filePath) {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: params.toString()
}).then(function(response) {
}).then(function (response) {
if (!response.ok) {
throw new Error('Failed to fetch PDF: ' + response.statusText);
}
return response.arrayBuffer();
}).then(function(pdfData) {
}).then(function (pdfData) {
var blob = new Blob([pdfData], { type: 'application/pdf' });
var blobUrl = URL.createObjectURL(blob);
@ -36,9 +45,9 @@ function viewFileInModal(fileNum, fileType, filePath) {
downloadBtn.download = fileName;
return pdfjsLib.getDocument({ data: pdfData }).promise;
}).then(function(pdf) {
let renderPage = function(pageNum) {
return pdf.getPage(pageNum).then(function(page) {
}).then(function (pdf) {
let renderPage = function (pageNum) {
return pdf.getPage(pageNum).then(function (page) {
var viewport = page.getViewport({ scale: 1.5 });
var canvas = document.createElement('canvas');
canvas.classList.add('mb-3');
@ -59,14 +68,14 @@ function viewFileInModal(fileNum, fileType, filePath) {
}
return sequence;
}).then(function() {
}).then(function () {
pdfModal.show();
}).catch(function(error) {
}).catch(function (error) {
alert('Error loading PDF: ' + error.message);
});
}
$(document).ready(function() {
$(document).ready(function () {
// Initialize DataTable
var table = $('#file-data-det-tbl').DataTable({
@ -86,7 +95,7 @@ $(document).ready(function() {
{
orderable: false,
targets: 0, // S.No column
render: function(data, type, row, meta) {
render: function (data, type, row, meta) {
return meta.row + 1;
}
}
@ -110,19 +119,19 @@ $(document).ready(function() {
$('#custom-length').html($('.dataTables_length'));
// Custom export buttons
$('#export-excel').on('click', function() {
$('#export-excel').on('click', function () {
table.button('.buttons-excel').trigger();
});
$('#export-pdf').on('click', function() {
$('#export-pdf').on('click', function () {
var originalLength = table.page.len();
table.one('draw', function() {
table.one('draw', function () {
var tableClone = $('#file-det-tbl').clone();
tableClone.removeClass('dataTable');
tableClone.find('thead, tbody, tfoot').removeAttr('style');
// Remove "Supporting Documents" column (13th col = index 12)
tableClone.find('tr').each(function() {
tableClone.find('tr').each(function () {
$(this).find('th:eq(12), td:eq(12)').remove();
});
@ -147,7 +156,7 @@ $(document).ready(function() {
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 2, useCORS: true },
jsPDF: { unit: 'in', format: 'a3', orientation: 'landscape' }
}).from(pdfContainer[0]).save().then(function() {
}).from(pdfContainer[0]).save().then(function () {
table.page.len(originalLength).draw();
pdfContainer.hide();
});

20
src/main/resources/templates/file/view-file-detail.html

@ -26,9 +26,27 @@
<th:block th:replace="~{fragments/navbar :: navbar(${curPage})}"></th:block>
<div class="container">
<div class="form-container">
<div class="header-row">
<!-- <div class="header-row">
<button class="back-button" onclick="goBack()">&#8592; Back</button>
</div> -->
<div class="header-row justify-content-between align-items-center">
<!-- Left -->
<button class="back-button" onclick="goBack()">&#8592; Back</button>
<!-- Right -->
<!-- <span id="updatedDate" value="09-12-2025" class="text-muted fw-semibold"></span> -->
<span>
<strong>Updated Date:</strong>
<span style="text-transform: uppercase;"
th:text="${#dates.format(fileDatum.updatedDate, 'dd-MM-yyyy hh:mm a')}"></span>
</span>
</div>
<h2 class="form-title">File Details</h2>
<div class="row mb-3 align-items-center g-3 ms-md-5 ms-0">
<div class="col-12 col-md-4">

Loading…
Cancel
Save