From 3c2135eb2d7cb447211a77a762df983e42b9b843 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 4 Mar 2025 10:37:17 +0530 Subject: [PATCH 1/3] Bulk registration --- pom.xml | 4 + .../BulkRegistrationController.java | 84 +++ .../iemr/admin/data/bulkuser/Employee.java | 94 ++++ .../admin/data/bulkuser/EmployeeList.java | 17 + .../BulkRegistrationService.java | 5 + .../BulkRegistrationServiceImpl.java | 482 ++++++++++++++++++ .../bulkRegistration/EmployeeXmlService.java | 21 + .../employeemaster/EmployeeMasterInter.java | 1 + .../EmployeeMasterServiceImpl.java | 10 + .../service/rolemaster/Role_MasterInter.java | 15 +- .../rolemaster/Role_Master_ServiceImpl.java | 18 +- 11 files changed, 736 insertions(+), 15 deletions(-) create mode 100644 src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java create mode 100644 src/main/java/com/iemr/admin/data/bulkuser/Employee.java create mode 100644 src/main/java/com/iemr/admin/data/bulkuser/EmployeeList.java create mode 100644 src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java create mode 100644 src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java create mode 100644 src/main/java/com/iemr/admin/service/bulkRegistration/EmployeeXmlService.java diff --git a/pom.xml b/pom.xml index 080d7a2..13d9b28 100644 --- a/pom.xml +++ b/pom.xml @@ -54,6 +54,10 @@ org.springframework.boot spring-boot-devtools + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + org.springframework.boot spring-boot-starter diff --git a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java new file mode 100644 index 0000000..9275237 --- /dev/null +++ b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java @@ -0,0 +1,84 @@ +package com.iemr.admin.controller.bulkRegistration; + +import com.iemr.admin.repo.employeemaster.EmployeeMasterRepoo; +import com.iemr.admin.service.bulkRegistration.BulkRegistrationService; +import com.iemr.admin.service.bulkRegistration.BulkRegistrationServiceImpl; +import com.iemr.admin.service.bulkRegistration.EmployeeXmlService; +import com.iemr.admin.service.locationmaster.LocationMasterServiceInter; +import io.swagger.v3.oas.annotations.Operation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.Map; + +@RestController + +public class BulkRegistrationController { + @Autowired + private EmployeeXmlService employeeXmlService; + @Autowired + BulkRegistrationServiceImpl bulkRegistrationServiceimpl; + private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + + + @Autowired + BulkRegistrationService bulkRegistrationService; + + @Autowired + private EmployeeMasterRepoo employeeMasterRepoo; + private Map errorResponse = new HashMap<>(); + @Autowired + private LocationMasterServiceInter locationMasterServiceInter; + private Map response = new HashMap<>(); + + + @CrossOrigin() + @RequestMapping(value = "/bulkRegistration",method = RequestMethod.POST,headers = "Authorization") + public ResponseEntity> registerBulkUser(@RequestBody String m_user) throws Exception { + logger.info("M_user Request"+m_user.toString()); + try { + bulkRegistrationService.registerBulkUser(m_user); + response.put("status","Success"); + response.put("statusCode",200); + response.put("totalUser",bulkRegistrationServiceimpl.totalEmployeeListSize); + response.put("registeredUser",bulkRegistrationServiceimpl.m_bulkUser.size()); + response.put("error",bulkRegistrationServiceimpl.errorLogs.toString()); + + bulkRegistrationServiceimpl.m_bulkUser.clear(); + bulkRegistrationServiceimpl.m_UserDemographics.clear(); + bulkRegistrationServiceimpl.errorLogs.clear(); + bulkRegistrationServiceimpl.validationErrors.clear(); + + } catch (Exception e) { + response.put("status","Fail"); + response.put("statusCode",500); + throw new RuntimeException(e); + } + return ResponseEntity.ok(response); + + } + @CrossOrigin() + @Operation(description = "Download formatted Excel sheet") + @RequestMapping(value = {"/downloadExcelSheet"},method = {RequestMethod.GET},consumes = {"application/octet-stream"}) + public ResponseEntity exportIntoExcelFile(){ + + // Load the Excel file from resources + ClassPathResource excelFile = new ClassPathResource("xlsxfile/bulkuser_excel_sheet.xlsx"); + + // Return the Excel file as a response with proper headers + return ResponseEntity.ok() + .contentType(MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")) + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + excelFile.getFilename() + "\"") + .body(excelFile); + } + + + +} diff --git a/src/main/java/com/iemr/admin/data/bulkuser/Employee.java b/src/main/java/com/iemr/admin/data/bulkuser/Employee.java new file mode 100644 index 0000000..74a1483 --- /dev/null +++ b/src/main/java/com/iemr/admin/data/bulkuser/Employee.java @@ -0,0 +1,94 @@ +package com.iemr.admin.data.bulkuser; + +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import lombok.Data; + +@Data +@JacksonXmlRootElement(localName = "Employee") +public class Employee { + + @JacksonXmlProperty(localName = "Title") + private String title; + + @JacksonXmlProperty(localName = "FirstName") + private String firstName; + + @JacksonXmlProperty(localName = "MiddleName") + private String middleName; + + @JacksonXmlProperty(localName = "LastName") + private String lastName; + + @JacksonXmlProperty(localName = "Gender") + private String gender; + + @JacksonXmlProperty(localName = "ContactNo") + private String contactNo; + + @JacksonXmlProperty(localName = "Designation") + private String designation; + + @JacksonXmlProperty(localName = "EmergencyContactNo") + private String emergencyContactNo; + + @JacksonXmlProperty(localName = "DOB") + private String dob; + + @JacksonXmlProperty(localName = "Age") + private int age; + + @JacksonXmlProperty(localName = "Email") + private String email; + + @JacksonXmlProperty(localName = "MaritalStatus") + private String maritalStatus; + + @JacksonXmlProperty(localName = "AadhaarNo") + private String aadhaarNo; + + @JacksonXmlProperty(localName = "PAN") + private String pan; + + @JacksonXmlProperty(localName = "Qualification") + private String qualification; + + @JacksonXmlProperty(localName = "FatherName") + private String fatherName; + + @JacksonXmlProperty(localName = "MotherName") + private String motherName; + + @JacksonXmlProperty(localName = "Community") + private String community; + + @JacksonXmlProperty(localName = "Religion") + private String religion; + + @JacksonXmlProperty(localName = "AddressLine1") + private String addressLine1; + + @JacksonXmlProperty(localName = "State") + private String state; + + @JacksonXmlProperty(localName = "District") + private String district; + + @JacksonXmlProperty(localName = "Pincode") + private String pincode; + + @JacksonXmlProperty(localName = "PermanentAddressLine1") + private String permanentAddressLine1; + + @JacksonXmlProperty(localName = "PermanentState") + private String permanentState; + + @JacksonXmlProperty(localName = "PermanentDistrict") + private String permanentDistrict; + + @JacksonXmlProperty(localName = "PermanentPincode") + private String permanentPincode; + + @JacksonXmlProperty(localName = "DateOfJoining") + private String dateOfJoining; +} diff --git a/src/main/java/com/iemr/admin/data/bulkuser/EmployeeList.java b/src/main/java/com/iemr/admin/data/bulkuser/EmployeeList.java new file mode 100644 index 0000000..7d656d2 --- /dev/null +++ b/src/main/java/com/iemr/admin/data/bulkuser/EmployeeList.java @@ -0,0 +1,17 @@ +package com.iemr.admin.data.bulkuser; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import lombok.Data; + +import java.util.List; + +@Data +@JacksonXmlRootElement(localName = "Employees") +public class EmployeeList { + + @JsonProperty("Employee") + @JacksonXmlElementWrapper(useWrapping = false) // To avoid extra nested array in XML + private List employees; +} diff --git a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java new file mode 100644 index 0000000..55f42b7 --- /dev/null +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java @@ -0,0 +1,5 @@ +package com.iemr.admin.service.bulkRegistration; + +public interface BulkRegistrationService { + void registerBulkUser(String user); +} diff --git a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java new file mode 100644 index 0000000..b961385 --- /dev/null +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -0,0 +1,482 @@ +package com.iemr.admin.service.bulkRegistration; + +import com.iemr.admin.data.bulkuser.Employee; +import com.iemr.admin.data.bulkuser.EmployeeList; +import com.iemr.admin.data.employeemaster.*; +import com.iemr.admin.data.locationmaster.M_District; +import com.iemr.admin.data.rolemaster.StateMasterForRole; +import com.iemr.admin.service.employeemaster.EmployeeMasterInter; +import com.iemr.admin.service.locationmaster.LocationMasterServiceInter; +import com.iemr.admin.service.rolemaster.Role_MasterInter; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.DateUtil; +import org.apache.poi.ss.usermodel.Row; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.PBEKeySpec; +import java.io.ByteArrayOutputStream; +import java.math.BigInteger; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.security.spec.InvalidKeySpecException; +import java.sql.Date; +import java.sql.Timestamp; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +@Service +public class BulkRegistrationServiceImpl implements BulkRegistrationService { + private static final String PAN_REGEX = "^[A-Z]{8}[0-9]{3}$"; + private static final String EMAIL_REGEX = "^[\\w-.]+@[\\w-]+\\.[a-zA-Z]{2,}$"; + public Integer totalEmployeeListSize = 0; + private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + + @Autowired + private EmployeeMasterInter employeeMasterInter; + @Autowired + private Role_MasterInter roleMasterInter; + @Autowired + private LocationMasterServiceInter locationMasterServiceInter; + + ByteArrayOutputStream out; + @Autowired + EmployeeXmlService employeeXmlService; + public List validationErrors = new ArrayList<>(); + + public List errorLogs = new ArrayList<>(); + public ArrayList m_bulkUser = new ArrayList<>(); + // public ArrayList m_bulkUser1 = new ArrayList<>(); + public ArrayList m_UserDemographics = new ArrayList<>(); + + private List m_districts; + + public List getValidationError() { + return validationErrors; + + } + + + + + @Override + public void registerBulkUser(String xml) { + try { + EmployeeList employeeList = employeeXmlService.parseXml(xml); + logger.info("employee_list" + employeeList.getEmployees().toString()); + totalEmployeeListSize = employeeList.getEmployees().size(); + for (int i = 0; i < employeeList.getEmployees().size(); i++) { + saveUserUser(employeeList.getEmployees().get(i), i); + + } + + + } catch (Exception e) { + System.out.println(e.getMessage()); + } + + + } + + + private void saveUserUser(Employee employee, Integer row) throws Exception { + logger.info("employee_list after for loop" + employee.toString()); + + + + if (employee.getTitle() == null || employee.getTitle().isEmpty() || getTitleId(employee.getTitle()) == 0) { + validationErrors.add("Title is missing or invalid."); + } + if (employee.getFirstName() == null || employee.getFirstName().isEmpty()) { + validationErrors.add("First Name is missing."); + } + if (employee.getLastName() == null || employee.getLastName().isEmpty()) { + validationErrors.add("Last Name is missing."); + } + if (employee.getEmail() == null || !employee.getEmail().matches(EMAIL_REGEX)) { + validationErrors.add("Invalid Email format."); + } + if (!isValidPhoneNumber(String.valueOf(employee.getContactNo()))) { + validationErrors.add("Contact Number must be exactly 10 digits."); + } + if (!isValidPhoneNumber(String.valueOf(employee.getEmergencyContactNo()))) { + validationErrors.add("Emergency Contact Number must be exactly 10 digits."); + } + if (!String.valueOf(employee.getAge()).matches("\\d{1,2}")) { + validationErrors.add("Age should be a 1 or 2-digit number."); + } + if (employee.getDob() == null || employee.getDob().toString().isEmpty()) { + validationErrors.add("Date of Birth is invalid."); + } + if (employee.getDateOfJoining() == null || employee.getDateOfJoining().toString().isEmpty()) { + validationErrors.add("Date of Joining is invalid."); + } + if (getStateId(employee.getState()) == 0) { + validationErrors.add("State is invalid."); + } + if (getDistrictId(employee.getDistrict()) == 0) { + validationErrors.add("District is invalid."); + } + + if (getStateId(employee.getPermanentState()) == 0) { + validationErrors.add("Permanent State is invalid."); + } + if (getDistrictId(employee.getPermanentDistrict()) == 0) { + validationErrors.add("Permanent District is invalid."); + } + if(employee.getPincode()==null|| employee.getPincode().isEmpty()){ + validationErrors.add("Pincode is invalid."); + + } + if(employee.getPermanentPincode()==null|| employee.getPermanentPincode().isEmpty()){ + validationErrors.add("Permanent Pincode is invalid."); + + } + if(isValidPAN(employee.getPan())){ + validationErrors.add("PAN is invalid."); + + } + + if (!validationErrors.isEmpty()) { + errorLogs.add("Row " + (row + 1) + ": " + String.join(", ", validationErrors)); + } + + + try { + logger.info("Title: " + employee.getTitle()); + logger.info("Title Id: " + getTitleId(employee.getTitle())); + logger.info("First Name: " + employee.getFirstName()); + logger.info("Last Name: " + employee.getLastName()); + logger.info("Email: " + employee.getEmail()); + logger.info("Contact No: " + employee.getContactNo()); + logger.info("Emergency Contact No: " + employee.getEmergencyContactNo()); + logger.info("Age: " + employee.getAge()); + logger.info("DOB: " + employee.getDob()); + logger.info("State: " + employee.getState()); + logger.info("State ID: " + getStateId(employee.getState())); + logger.info("District: " + employee.getDistrict()); + logger.info("District ID: " + getDistrictId(employee.getDistrict())); + logger.info("Designation: " + employee.getDesignation()); + logger.info("Designation Id: " + getDesignationId(employee.getDesignation())); + logger.info("Qualification: " + employee.getQualification()); + logger.info("Father Name: " + employee.getFatherName()); + logger.info("Mother Name: " + employee.getMotherName()); + logger.info("Address Line 1: " + employee.getAddressLine1()); + logger.info("Permanent Address: " + employee.getPermanentAddressLine1()); + logger.info("Aadhaar No: " + employee.getAadhaarNo()); + logger.info("PAN: " + employee.getPan()); + logger.info("Gender: " + employee.getGender()); + logger.info("Date of Joining: " + employee.getDateOfJoining()); + logger.info("Religion: " + employee.getReligion()); + logger.info("Community: " + employee.getCommunity()); + logger.info("Pincode: " + employee.getPincode()); + + + + M_User1 mUser = new M_User1(); + M_UserDemographics mUserDemographics = new M_UserDemographics(); + + mUser.setTitleID(getTitleId(employee.getTitle())); + mUser.setDesignationID(getDesignationId(employee.getDesignation())); + mUser.setDesignationName("ASHA"); + mUser.setFirstName(employee.getFirstName()); + mUser.setLastName(employee.getLastName()); + mUser.setUserName(employee.getContactNo()); + mUser.setdOB(convertStringIntoDate(employee.getDob())); + mUser.setEmployeeID(employee.getContactNo()); + mUser.setEmergencyContactNo(String.valueOf(employee.getEmergencyContactNo())); + mUser.setContactNo(String.valueOf(employee.getContactNo())); + mUser.setMiddleName(employee.getMiddleName()); + mUser.setAadhaarNo(String.valueOf(employee.getAadhaarNo())); + mUser.setpAN(employee.getPan()); +// mUser.setMaritalStatusID(getMaritalStatusID(employee.getMaritalStatus())); + mUser.setMaritalStatusID(1); + mUser.setEmailID(employee.getEmail()); + mUser.setGenderID(Short.parseShort(String.valueOf(getGenderId(employee.getGender())))); + mUser.setQualificationID(getQualificationId(employee.getQualification())); + mUser.setdOJ(convertStringIntoDate(employee.getDateOfJoining())); + mUser.setCreatedBy("PSMRIL2"); + mUser.setModifiedBy("PSMRIL2"); + mUser.setIsSupervisor(false); + mUser.setServiceProviderID(15); + mUser.setPassword(generateStrongPassword("Test@123")); + logger.info("M_user" + mUser); + M_User1 bulkUserID = employeeMasterInter.saveBulkUserEmployee(mUser); + System.out.println("bulk_userID" + bulkUserID.getUserID().toString()); + logger.info("M_user Id" + bulkUserID.getUserID()); + mUserDemographics.setUserID(bulkUserID.getUserID()); + mUserDemographics.setCountryID(91); + mUserDemographics.setCommunityID(getCommunityId(employee.getCommunity())); + mUserDemographics.setReligionID(getReligionStringId(employee.getReligion())); + mUserDemographics.setFathersName(employee.getFatherName()); + mUserDemographics.setCreatedBy("PSMRIL2"); + mUserDemographics.setAddressLine1(employee.getAddressLine1()); + mUserDemographics.setPermAddressLine1(employee.getPermanentAddressLine1()); + mUserDemographics.setPermStateID(getStateId(employee.getPermanentState())); + mUserDemographics.setPermDistrictID(getDistrictId(employee.getPermanentDistrict())); + mUserDemographics.setIsPermanent(false); + mUserDemographics.setPermPinCode(Integer.valueOf(employee.getPermanentPincode())); + mUserDemographics.setMothersName(employee.getMotherName()); + mUserDemographics.setAddressLine1(employee.getPermanentAddressLine1()); + mUserDemographics.setStateID(getStateId(employee.getState())); + mUserDemographics.setIsPresent(false); + mUserDemographics.setStateID(getStateId(employee.getState())); + mUserDemographics.setDistrictID(getDistrictId(employee.getDistrict())); + mUserDemographics.setPinCode(employee.getPincode().toString()); + employeeMasterInter.saveDemography(mUserDemographics); + m_bulkUser.add(mUser); + m_UserDemographics.add(mUserDemographics); + + } catch (Exception e) { + errorLogs.add("Row : " + (row+1) + e.getMessage()); + } + + + } + + + + + public int getGenderId(String genderString) { + int genderId = employeeMasterInter.getAllGender() + .stream() + .filter(gender -> gender.getGenderName().equalsIgnoreCase(genderString)) + .map(M_Gender::getGenderID) + .findFirst() + .orElse(0); + + if (genderId == 0) { + System.out.println("Gender name not found: " + genderString); + } else { + System.out.println("Gender ID: " + genderId); + } + + return genderId; + } + + + + + public int getTitleId(String titleString) { + int titleId = employeeMasterInter.getAllTitle() + .stream() + .filter(title -> title.getTitleName().equalsIgnoreCase(titleString)) + .map(M_Title::getTitleID) + .findFirst() + .orElse(0); + + + return titleId; + } + + + + public int getDesignationId(String designationString) { + + return 20; + } + + + public int getCommunityId(String communityString) { + int communityId = employeeMasterInter.getAllCommunity() + .stream() + .filter(community -> community.getCommunityType().equalsIgnoreCase(communityString)) + .map(M_Community::getCommunityID) + .findFirst() + .orElse(0); + + + return communityId; + } + + public int getQualificationId(String qualificationString) { + int qualificationId = employeeMasterInter.getQualification() + .stream() + .filter(q -> q.getUserQualificationDesc().equalsIgnoreCase(qualificationString)) + .map(M_Userqualification::getQualificationID) + .findFirst() + .orElse(0); + + + + return qualificationId; + } + + + //Religion + public int getReligionStringId(String religionString) { + return employeeMasterInter.getAllReligion() + .stream() + .filter(religion -> religion.getReligionType().equalsIgnoreCase(religionString)) + .map(M_Religion::getReligionID) + .findFirst() + .orElse(0); + } + + + public int getDistrictId(String districtName) { + return m_districts.stream() + .filter(m_district -> m_district.getDistrictName().equalsIgnoreCase(districtName)) + .map(M_District::getDistrictID) + .findFirst() + .orElse(0); + + } + + + public ArrayList getAllState() { + return roleMasterInter.getAllState(); + } + + + public int getStateId(String stateName) { + int stateId = roleMasterInter.getAllState() + .stream() + .filter(state -> state.getStateName().equalsIgnoreCase(stateName)) + .map(StateMasterForRole::getStateID) + .findFirst() + .orElse(0); + + if (stateId == 0) { + logger.info("State name not found: " + stateName); + } else { + System.out.println("State ID: " + stateId); + m_districts = locationMasterServiceInter.getAllDistrictByStateId(stateId); + } + + return stateId; + } + + + + + + private boolean isValidPAN(String pan) { + // Check if the PAN matches the regex + return Pattern.matches(PAN_REGEX, pan); + } + + private boolean isValidPhoneNumber(String phoneNumber) { + // Correct regex: Phone number must start with 6, 7, 8, or 9 and be exactly 10 digits + System.out.println("Phone Number" + phoneNumber); + String regex = "^[6789]\\d{9}$"; + + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(phoneNumber); + + return matcher.matches(); + } + + private Map getHeaderMap(Row headerRow) { + Map headerMap = new HashMap<>(); + for (Cell cell : headerRow) { + headerMap.put(cell.getStringCellValue().trim(), cell.getColumnIndex()); + } + return headerMap; + } + + private Integer getIntegerValue(Row row, Integer cellIndex) { + if (cellIndex == null) return null; + Cell cell = row.getCell(cellIndex); + return (cell != null && cell.getCellType() == CellType.NUMERIC) ? (int) cell.getNumericCellValue() : null; + } + + private Long getLongValue(Row row, Integer cellIndex) { + if (cellIndex == null) return null; + Cell cell = row.getCell(cellIndex); + return (cell != null && cell.getCellType() == CellType.NUMERIC) ? (long) cell.getNumericCellValue() : null; + } + + + private String getStringValue(Row row, Integer cellIndex) { + if (cellIndex == null || row.getCell(cellIndex) == null) return null; + Cell cell = row.getCell(cellIndex); + return (cell.getCellType() == CellType.STRING) ? cell.getStringCellValue().trim() : null; + } + + private void validateHeaders(Map headerMap, List requiredHeaders) { + for (String header : requiredHeaders) { + if (!headerMap.containsKey(header)) { + throw new RuntimeException("Missing required header: " + header); + } + } + } + + private Timestamp getTimestampValue(Row row, Integer cellIndex) { + if (cellIndex == null) return null; + Cell cell = row.getCell(cellIndex); + if (cell != null && cell.getCellType() == CellType.NUMERIC && DateUtil.isCellDateFormatted(cell)) { + return new Timestamp(cell.getDateCellValue().getTime()); + } + return null; + } + + + public Date convertStringIntoDate(String dateString) throws ParseException { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime dateTime = LocalDateTime.parse(dateString+" "+"00:00:00", formatter); + + + // Convert String to Date + return Date.valueOf(String.valueOf(dateTime)); + + } + + + private Timestamp getTimestampValue(String dateString) { + if (dateString == null || dateString.trim().isEmpty()) { + } + + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // + try { + return new Timestamp(dateFormat.parse(dateString).getTime()); + } catch (ParseException e) { + e.printStackTrace(); // + return null; + } + } + + + public String generateStrongPassword(String password) throws NoSuchAlgorithmException, InvalidKeySpecException { + int iterations = 1001; + char[] chars = password.toCharArray(); + byte[] salt = getSalt(); + + PBEKeySpec spec = new PBEKeySpec(chars, salt, iterations, 512); + SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA512"); + byte[] hash = skf.generateSecret(spec).getEncoded(); + return iterations + ":" + toHex(salt) + ":" + toHex(hash); + } + + private byte[] getSalt() throws NoSuchAlgorithmException { + SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); + byte[] salt = new byte[16]; + sr.nextBytes(salt); + return salt; + } + + private String toHex(byte[] array) throws NoSuchAlgorithmException { + BigInteger bi = new BigInteger(1, array); + String hex = bi.toString(16); + int paddingLength = array.length * 2 - hex.length(); + if (paddingLength > 0) { + return String.format(new StringBuilder().append("%0").append(paddingLength).append("d").toString(), + new Object[]{Integer.valueOf(0)}) + hex; + } + return hex; + } + + +} \ No newline at end of file diff --git a/src/main/java/com/iemr/admin/service/bulkRegistration/EmployeeXmlService.java b/src/main/java/com/iemr/admin/service/bulkRegistration/EmployeeXmlService.java new file mode 100644 index 0000000..7c10bb8 --- /dev/null +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/EmployeeXmlService.java @@ -0,0 +1,21 @@ +package com.iemr.admin.service.bulkRegistration; + + +import com.fasterxml.jackson.dataformat.xml.XmlMapper; +import com.iemr.admin.data.bulkuser.EmployeeList; +import org.springframework.stereotype.Service; + +@Service +public class EmployeeXmlService { + + private final XmlMapper xmlMapper = new XmlMapper(); + + // Convert XML to EmployeeList (Java Object) + public EmployeeList parseXml(String xmlData) throws Exception { + System.out.println("user_xml_date"+xmlData.toString()); + + return xmlMapper.readValue(xmlData, EmployeeList.class); + } + + +} diff --git a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterInter.java b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterInter.java index aae5837..d91d8c7 100644 --- a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterInter.java +++ b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterInter.java @@ -184,4 +184,5 @@ Boolean checkingEmpDetails(String userName, String aadhaarNo, String getpAN, Str M_UserServiceRoleMapping2 deleteuserrolemapTM(M_UserServiceRoleMapping2 pre) throws Exception; + M_User1 saveBulkUserEmployee(M_User1 mUser); } diff --git a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterServiceImpl.java b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterServiceImpl.java index 41ee880..28d5072 100644 --- a/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/employeemaster/EmployeeMasterServiceImpl.java @@ -1178,4 +1178,14 @@ public M_UserServiceRoleMapping2 deleteuserrolemapTM(M_UserServiceRoleMapping2 u return dataout; } + @Override + public M_User1 saveBulkUserEmployee(M_User1 mUser) { + logger.info("EmployeeMasterServiceImpl.saveEmployee - start"); + M_User1 data = employeeMasterRepo11.save(mUser); +// logger.info("Encrypt password returned " + encryptUserPassword.encryptUserCredentials(data).toString()); + Integer data1 = data.getUserID(); + logger.info("EmployeeMasterServiceImpl.saveEmployee - finish"); + return data; + } + } diff --git a/src/main/java/com/iemr/admin/service/rolemaster/Role_MasterInter.java b/src/main/java/com/iemr/admin/service/rolemaster/Role_MasterInter.java index 6cc99a4..9c432d9 100644 --- a/src/main/java/com/iemr/admin/service/rolemaster/Role_MasterInter.java +++ b/src/main/java/com/iemr/admin/service/rolemaster/Role_MasterInter.java @@ -24,12 +24,7 @@ import java.util.ArrayList; import java.util.List; -import com.iemr.admin.data.rolemaster.RoleMaster; -import com.iemr.admin.data.rolemaster.M_Role104; -import com.iemr.admin.data.rolemaster.M_Screen; -import com.iemr.admin.data.rolemaster.M_UserservicerolemappingForRoleProviderAdmin; -import com.iemr.admin.data.rolemaster.RoleScreenMapping; -import com.iemr.admin.data.rolemaster.StateServiceMapping; +import com.iemr.admin.data.rolemaster.*; public interface Role_MasterInter { @@ -56,7 +51,7 @@ public interface Role_MasterInter { List mapScreen(RoleScreenMapping mRoles2); String settingScreenId(Integer sRSMappingID, Integer screenID); - + public ArrayList getProStateServRoles1(int pssmID); List mapfeature(List mRoles3); @@ -64,7 +59,7 @@ public interface Role_MasterInter { ArrayList getServiceByServiceProviderIds(Integer userID); ArrayList getStateByServiceProviderIdAndServiceLines(Integer userID, - Integer serviceID,Boolean isNational); + Integer serviceID,Boolean isNational); ArrayList getAllByMapId(Integer serviceProviderID, Integer serviceID); @@ -76,8 +71,10 @@ ArrayList getStateByServiceProvide RoleMaster configWrapUpTime(RoleMaster role) throws Exception; + ArrayList getAllState(); + + - } diff --git a/src/main/java/com/iemr/admin/service/rolemaster/Role_Master_ServiceImpl.java b/src/main/java/com/iemr/admin/service/rolemaster/Role_Master_ServiceImpl.java index 1471395..683487d 100644 --- a/src/main/java/com/iemr/admin/service/rolemaster/Role_Master_ServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/rolemaster/Role_Master_ServiceImpl.java @@ -46,8 +46,8 @@ import jakarta.persistence.EntityManager; @Service -public class Role_Master_ServiceImpl implements Role_MasterInter -{ +public class Role_Master_ServiceImpl implements Role_MasterInter { + @Autowired private StateMasterRepo stateMasterRepo; @@ -62,7 +62,7 @@ public class Role_Master_ServiceImpl implements Role_MasterInter @Autowired private RoleScreenMappingRepo roleScreenMappingRepo; - + @Autowired private M_ScreenRepo m_ScreenRepo; @@ -279,7 +279,7 @@ public ArrayList getServiceByServi @Override public ArrayList - getStateByServiceProviderIdAndServiceLines(Integer userID, Integer serviceID, Boolean isNational) + getStateByServiceProviderIdAndServiceLines(Integer userID, Integer serviceID, Boolean isNational) { if (isNational == false) { @@ -364,7 +364,7 @@ public ArrayList getProStateServRolesActive(Integer providerServiceM public RoleMaster configWrapUpTime(RoleMaster role) throws Exception { // TODO Auto-generated method stub RoleMaster buff=mRoleRepo.findByRoleID(role.getRoleID()); - + if(buff==null) { throw new Exception("Invalid Role"); } @@ -374,8 +374,14 @@ public RoleMaster configWrapUpTime(RoleMaster role) throws Exception { buff.setIsWrapUpTime(role.getIsWrapUpTime()); buff.setWrapUpTime(role.getWrapUpTime()); buff.setModifiedBy(role.getModifiedBy()); - + return mRoleRepo.save(buff); } + @Override + public ArrayList getAllState() { + return stateMasterRepo.getAllState(); + } + + } From 23cccacd1126a01a5a3c39ad33dcf405535524c7 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 11 Mar 2025 14:10:44 +0530 Subject: [PATCH 2/3] Bulk registration --- .../controller/bulkRegistration/BulkRegistrationController.java | 2 -- .../service/bulkRegistration/BulkRegistrationServiceImpl.java | 1 - 2 files changed, 3 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java index 9275237..dde1937 100644 --- a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java +++ b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java @@ -39,7 +39,6 @@ public class BulkRegistrationController { private Map response = new HashMap<>(); - @CrossOrigin() @RequestMapping(value = "/bulkRegistration",method = RequestMethod.POST,headers = "Authorization") public ResponseEntity> registerBulkUser(@RequestBody String m_user) throws Exception { logger.info("M_user Request"+m_user.toString()); @@ -64,7 +63,6 @@ public ResponseEntity> registerBulkUser(@RequestBody String return ResponseEntity.ok(response); } - @CrossOrigin() @Operation(description = "Download formatted Excel sheet") @RequestMapping(value = {"/downloadExcelSheet"},method = {RequestMethod.GET},consumes = {"application/octet-stream"}) public ResponseEntity exportIntoExcelFile(){ diff --git a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java index b961385..b4b1cfc 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -443,7 +443,6 @@ private Timestamp getTimestampValue(String dateString) { try { return new Timestamp(dateFormat.parse(dateString).getTime()); } catch (ParseException e) { - e.printStackTrace(); // return null; } } From 83f693ebb9bfb5be3f58631548e34ee7f70922f5 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 13 Mar 2025 11:30:50 +0530 Subject: [PATCH 3/3] Bulk registration --- .../BulkRegistrationController.java | 6 +- .../BulkRegistrationService.java | 2 +- .../BulkRegistrationServiceImpl.java | 131 +++--------------- 3 files changed, 20 insertions(+), 119 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java index dde1937..24b146a 100644 --- a/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java +++ b/src/main/java/com/iemr/admin/controller/bulkRegistration/BulkRegistrationController.java @@ -40,10 +40,10 @@ public class BulkRegistrationController { @RequestMapping(value = "/bulkRegistration",method = RequestMethod.POST,headers = "Authorization") - public ResponseEntity> registerBulkUser(@RequestBody String m_user) throws Exception { - logger.info("M_user Request"+m_user.toString()); + public ResponseEntity> registerBulkUser(@RequestBody String m_user,@RequestHeader String authorization) throws Exception { + logger.info("Bulk registration request received. Request payload is omitted from logs."); try { - bulkRegistrationService.registerBulkUser(m_user); + bulkRegistrationService.registerBulkUser(m_user,authorization); response.put("status","Success"); response.put("statusCode",200); response.put("totalUser",bulkRegistrationServiceimpl.totalEmployeeListSize); diff --git a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java index 55f42b7..2e5d0dd 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationService.java @@ -1,5 +1,5 @@ package com.iemr.admin.service.bulkRegistration; public interface BulkRegistrationService { - void registerBulkUser(String user); + void registerBulkUser(String user,String authorization); } diff --git a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java index b4b1cfc..c7c7e99 100644 --- a/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/bulkRegistration/BulkRegistrationServiceImpl.java @@ -8,9 +8,8 @@ import com.iemr.admin.service.employeemaster.EmployeeMasterInter; import com.iemr.admin.service.locationmaster.LocationMasterServiceInter; import com.iemr.admin.service.rolemaster.Role_MasterInter; +import com.iemr.admin.utils.JwtUtil; import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CellType; -import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Row; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,9 +24,7 @@ import java.security.SecureRandom; import java.security.spec.InvalidKeySpecException; import java.sql.Date; -import java.sql.Timestamp; import java.text.ParseException; -import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -43,6 +40,8 @@ public class BulkRegistrationServiceImpl implements BulkRegistrationService { private static final String EMAIL_REGEX = "^[\\w-.]+@[\\w-]+\\.[a-zA-Z]{2,}$"; public Integer totalEmployeeListSize = 0; private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + @Autowired + JwtUtil jwtUtil; @Autowired private EmployeeMasterInter employeeMasterInter; @@ -58,7 +57,6 @@ public class BulkRegistrationServiceImpl implements BulkRegistrationService { public List errorLogs = new ArrayList<>(); public ArrayList m_bulkUser = new ArrayList<>(); - // public ArrayList m_bulkUser1 = new ArrayList<>(); public ArrayList m_UserDemographics = new ArrayList<>(); private List m_districts; @@ -69,33 +67,29 @@ public List getValidationError() { } - - @Override - public void registerBulkUser(String xml) { + public void registerBulkUser(String xml, String authorization) { try { EmployeeList employeeList = employeeXmlService.parseXml(xml); logger.info("employee_list" + employeeList.getEmployees().toString()); totalEmployeeListSize = employeeList.getEmployees().size(); for (int i = 0; i < employeeList.getEmployees().size(); i++) { - saveUserUser(employeeList.getEmployees().get(i), i); + saveUserUser(employeeList.getEmployees().get(i), i, authorization); } } catch (Exception e) { - System.out.println(e.getMessage()); + logger.error("Exception:" + e.getMessage()); } } - private void saveUserUser(Employee employee, Integer row) throws Exception { + private void saveUserUser(Employee employee, Integer row, String authorization) throws Exception { logger.info("employee_list after for loop" + employee.toString()); - - if (employee.getTitle() == null || employee.getTitle().isEmpty() || getTitleId(employee.getTitle()) == 0) { validationErrors.add("Title is missing or invalid."); } @@ -136,15 +130,15 @@ private void saveUserUser(Employee employee, Integer row) throws Exception { if (getDistrictId(employee.getPermanentDistrict()) == 0) { validationErrors.add("Permanent District is invalid."); } - if(employee.getPincode()==null|| employee.getPincode().isEmpty()){ + if (employee.getPincode() == null || employee.getPincode().isEmpty()) { validationErrors.add("Pincode is invalid."); } - if(employee.getPermanentPincode()==null|| employee.getPermanentPincode().isEmpty()){ + if (employee.getPermanentPincode() == null || employee.getPermanentPincode().isEmpty()) { validationErrors.add("Permanent Pincode is invalid."); } - if(isValidPAN(employee.getPan())){ + if (!isValidPAN(employee.getPan())) { validationErrors.add("PAN is invalid."); } @@ -155,35 +149,6 @@ private void saveUserUser(Employee employee, Integer row) throws Exception { try { - logger.info("Title: " + employee.getTitle()); - logger.info("Title Id: " + getTitleId(employee.getTitle())); - logger.info("First Name: " + employee.getFirstName()); - logger.info("Last Name: " + employee.getLastName()); - logger.info("Email: " + employee.getEmail()); - logger.info("Contact No: " + employee.getContactNo()); - logger.info("Emergency Contact No: " + employee.getEmergencyContactNo()); - logger.info("Age: " + employee.getAge()); - logger.info("DOB: " + employee.getDob()); - logger.info("State: " + employee.getState()); - logger.info("State ID: " + getStateId(employee.getState())); - logger.info("District: " + employee.getDistrict()); - logger.info("District ID: " + getDistrictId(employee.getDistrict())); - logger.info("Designation: " + employee.getDesignation()); - logger.info("Designation Id: " + getDesignationId(employee.getDesignation())); - logger.info("Qualification: " + employee.getQualification()); - logger.info("Father Name: " + employee.getFatherName()); - logger.info("Mother Name: " + employee.getMotherName()); - logger.info("Address Line 1: " + employee.getAddressLine1()); - logger.info("Permanent Address: " + employee.getPermanentAddressLine1()); - logger.info("Aadhaar No: " + employee.getAadhaarNo()); - logger.info("PAN: " + employee.getPan()); - logger.info("Gender: " + employee.getGender()); - logger.info("Date of Joining: " + employee.getDateOfJoining()); - logger.info("Religion: " + employee.getReligion()); - logger.info("Community: " + employee.getCommunity()); - logger.info("Pincode: " + employee.getPincode()); - - M_User1 mUser = new M_User1(); M_UserDemographics mUserDemographics = new M_UserDemographics(); @@ -201,27 +166,23 @@ private void saveUserUser(Employee employee, Integer row) throws Exception { mUser.setMiddleName(employee.getMiddleName()); mUser.setAadhaarNo(String.valueOf(employee.getAadhaarNo())); mUser.setpAN(employee.getPan()); -// mUser.setMaritalStatusID(getMaritalStatusID(employee.getMaritalStatus())); mUser.setMaritalStatusID(1); mUser.setEmailID(employee.getEmail()); mUser.setGenderID(Short.parseShort(String.valueOf(getGenderId(employee.getGender())))); mUser.setQualificationID(getQualificationId(employee.getQualification())); mUser.setdOJ(convertStringIntoDate(employee.getDateOfJoining())); - mUser.setCreatedBy("PSMRIL2"); - mUser.setModifiedBy("PSMRIL2"); + mUser.setCreatedBy(jwtUtil.extractUsername(authorization)); + mUser.setModifiedBy(jwtUtil.extractUsername(authorization)); mUser.setIsSupervisor(false); mUser.setServiceProviderID(15); mUser.setPassword(generateStrongPassword("Test@123")); - logger.info("M_user" + mUser); M_User1 bulkUserID = employeeMasterInter.saveBulkUserEmployee(mUser); - System.out.println("bulk_userID" + bulkUserID.getUserID().toString()); - logger.info("M_user Id" + bulkUserID.getUserID()); mUserDemographics.setUserID(bulkUserID.getUserID()); mUserDemographics.setCountryID(91); mUserDemographics.setCommunityID(getCommunityId(employee.getCommunity())); mUserDemographics.setReligionID(getReligionStringId(employee.getReligion())); mUserDemographics.setFathersName(employee.getFatherName()); - mUserDemographics.setCreatedBy("PSMRIL2"); + mUserDemographics.setCreatedBy(jwtUtil.extractUsername(authorization)); mUserDemographics.setAddressLine1(employee.getAddressLine1()); mUserDemographics.setPermAddressLine1(employee.getPermanentAddressLine1()); mUserDemographics.setPermStateID(getStateId(employee.getPermanentState())); @@ -240,15 +201,13 @@ private void saveUserUser(Employee employee, Integer row) throws Exception { m_UserDemographics.add(mUserDemographics); } catch (Exception e) { - errorLogs.add("Row : " + (row+1) + e.getMessage()); + errorLogs.add("Row : " + (row + 1) + e.getMessage()); } } - - public int getGenderId(String genderString) { int genderId = employeeMasterInter.getAllGender() .stream() @@ -267,8 +226,6 @@ public int getGenderId(String genderString) { } - - public int getTitleId(String titleString) { int titleId = employeeMasterInter.getAllTitle() .stream() @@ -282,7 +239,6 @@ public int getTitleId(String titleString) { } - public int getDesignationId(String designationString) { return 20; @@ -310,11 +266,9 @@ public int getQualificationId(String qualificationString) { .orElse(0); - return qualificationId; } - //Religion public int getReligionStringId(String religionString) { return employeeMasterInter.getAllReligion() @@ -359,10 +313,6 @@ public int getStateId(String stateName) { return stateId; } - - - - private boolean isValidPAN(String pan) { // Check if the PAN matches the regex return Pattern.matches(PAN_REGEX, pan); @@ -387,64 +337,15 @@ private Map getHeaderMap(Row headerRow) { return headerMap; } - private Integer getIntegerValue(Row row, Integer cellIndex) { - if (cellIndex == null) return null; - Cell cell = row.getCell(cellIndex); - return (cell != null && cell.getCellType() == CellType.NUMERIC) ? (int) cell.getNumericCellValue() : null; - } - - private Long getLongValue(Row row, Integer cellIndex) { - if (cellIndex == null) return null; - Cell cell = row.getCell(cellIndex); - return (cell != null && cell.getCellType() == CellType.NUMERIC) ? (long) cell.getNumericCellValue() : null; - } - - - private String getStringValue(Row row, Integer cellIndex) { - if (cellIndex == null || row.getCell(cellIndex) == null) return null; - Cell cell = row.getCell(cellIndex); - return (cell.getCellType() == CellType.STRING) ? cell.getStringCellValue().trim() : null; - } - - private void validateHeaders(Map headerMap, List requiredHeaders) { - for (String header : requiredHeaders) { - if (!headerMap.containsKey(header)) { - throw new RuntimeException("Missing required header: " + header); - } - } - } - - private Timestamp getTimestampValue(Row row, Integer cellIndex) { - if (cellIndex == null) return null; - Cell cell = row.getCell(cellIndex); - if (cell != null && cell.getCellType() == CellType.NUMERIC && DateUtil.isCellDateFormatted(cell)) { - return new Timestamp(cell.getDateCellValue().getTime()); - } - return null; - } - public Date convertStringIntoDate(String dateString) throws ParseException { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - LocalDateTime dateTime = LocalDateTime.parse(dateString+" "+"00:00:00", formatter); + LocalDateTime dateTime = LocalDateTime.parse(dateString + " " + "00:00:00", formatter); // Convert String to Date - return Date.valueOf(String.valueOf(dateTime)); - - } - + return Date.valueOf(String.valueOf(dateTime)); - private Timestamp getTimestampValue(String dateString) { - if (dateString == null || dateString.trim().isEmpty()) { - } - - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // - try { - return new Timestamp(dateFormat.parse(dateString).getTime()); - } catch (ParseException e) { - return null; - } }