Интерфейс репозитория:
Код: Выделить всё
package com.springboot.project.leavemonitoringapp.repository;
import com.springboot.project.leavemonitoringapp.model.LeaveApproval;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
public interface LeaveApprovalRepository extends JpaRepository {
@Query(value = "SELECT ROWNUM SRL_NUM,\n" +
" REPORT_HEADER_ID,\n" +
" NTF_RESPONDER,\n" +
" CASE\n" +
" WHEN APPROVER_NAME IS NULL THEN NTF_RESPONDER\n" +
" ELSE APPROVER_NAME\n" +
" END\n" +
" APPROVER_NAME,\n" +
" APPROVER_ACTION,\n" +
" NTF_NOTE NOTE,\n" +
" ACTION_DATE\n" +
" FROM --\n" +
" ( --\n" +
" SELECT SRL_NUM,\n" +
" REPORT_HEADER_ID,\n" +
" ACTION_DATE,\n" +
" NTF_RESPONDER,\n" +
" APPROVER_NAME,\n" +
" APPROVER_ACTION,\n" +
" NTF_NOTE\n" +
" FROM --\n" +
" ( SELECT X.SRL_NUM SRL_NUM,\n" +
" X.EXPENSE_REPORT_HDR_ID REPORT_HEADER_ID,\n" +
" X.NTF_RESPONDER,\n" +
" CASE\n" +
" WHEN PPF.FULL_NAME IS NULL\n" +
" THEN\n" +
" (SELECT DISPLAY_NAME\n" +
" FROM APPS.WF_ROLES\n" +
" WHERE NAME = X.NTF_RESPONDER)\n" +
" ELSE\n" +
" PPF.FULL_NAME\n" +
" END\n" +
" AS APPROVER_NAME,\n" +
" INITCAP (X.NTF_ACTION) AS APPROVER_ACTION,\n" +
" REPLACE (REPLACE (X.NTF_NOTE, CHR (13), ' '),\n" +
" CHR (10),\n" +
" '')\n" +
" AS NTF_NOTE,\n" +
" TO_CHAR (X.CREATION_DATE, 'DD-MON-RR HH24:MI')\n" +
" AS ACTION_DATE\n" +
" FROM --xxssgil_er_approval_hist x\n" +
" XXSSGIL.XXSSGIL_APPROVAL_HISTORYS_VV X,\n" +
" APPS.PER_ALL_PEOPLE_F PPF\n" +
" WHERE X.EMPLOYEE_ID = PPF.PERSON_ID(+)\n" +
" AND TRUNC (X.CREATION_DATE) BETWEEN PPF.EFFECTIVE_START_DATE(+)\n" +
" AND PPF.EFFECTIVE_END_DATE(+)\n" +
" AND X.EXPENSE_REPORT_HDR_ID = :L_INVOICE_ID\n" +
" ORDER BY X.SRL_NUM)\n" +
" UNION ALL\n" +
" (SELECT SRL_NUM,\n" +
" REPORT_HEADER_ID,\n" +
" ACTION_DATE,\n" +
" NTF_RESPONDER,\n" +
" APPROVER_NAME,\n" +
" APPROVER_ACTION,\n" +
" NTF_NOTE\n" +
" FROM (SELECT 0 AS SRL_NUM,\n" +
" H.REPORT_HEADER_ID,\n" +
" WUR.USER_NAME AS NTF_RESPONDER,\n" +
" (SELECT PAPF.FULL_NAME\n" +
" FROM APPS.PER_ALL_PEOPLE_F PAPF,\n" +
" APPS.PER_ALL_ASSIGNMENTS_F PAAF\n" +
" WHERE 1 = 1\n" +
" AND PAPF.BUSINESS_GROUP_ID = '84'\n" +
" AND PAPF.EMPLOYEE_NUMBER = WUR.USER_NAME --'3023'\n" +
" AND PAPF.PERSON_ID = PAAF.PERSON_ID\n" +
" AND TRUNC (SYSDATE) BETWEEN PAPF.EFFECTIVE_START_DATE\n" +
" AND PAPF.EFFECTIVE_END_DATE\n" +
" AND TRUNC (SYSDATE) BETWEEN PAAF.EFFECTIVE_START_DATE\n" +
" AND PAAF.EFFECTIVE_END_DATE)\n" +
" AS APPROVER_NAME,\n" +
" 'Pending' AS APPROVER_ACTION,\n" +
" '' AS NTF_NOTE,\n" +
" '' AS ACTION_DATE\n" +
" FROM APPS.XXSSGIL_APPROVAL_LV_HDR H,\n" +
" APPS.XXSSGIL_APPROVAL_LV_LINE L,\n" +
" APPS.WF_USER_ROLES WUR,\n" +
" APPS.WF_NOTIFICATIONS N\n" +
" WHERE 1 = 1\n" +
" AND H.REPORT_HEADER_ID = :L_INVOICE_ID\n" +
" AND WUR.ROLE_NAME = N.TO_USER\n" +
" AND H.WF_ITEM_KEY = N.ITEM_KEY\n" +
" AND L.REPORT_HEADER_ID = H.REPORT_HEADER_ID\n" +
" AND N.STATUS = 'OPEN'\n" +
" AND H.STATUS_FLG = 'In-Process')))\n" +
" order by SRL_NUM desc\n" +
" FETCH FIRST 1 ROW ONLY",nativeQuery = true)
List findLeaveApprovalRecord(@Param("L_INVOICE_ID") String headerId); //here L_INVOICE_ID is replace by report header id
}
Код: Выделить всё
@Service
public class AttendanceLeaveService {
@Autowired
private AttendanceLeaveRepository attendanceLeaveRepository;
@Autowired
private LeaveApprovalRepository leaveApprovalRepository;
@Autowired
private LeaveIssueRepository leaveIssueRepository;
@Autowired
private PFLoanRepository pfLoanRepository;
public List getAttendanceLeaveRecord(String status){
return attendanceLeaveRepository.findAttendanceLeaveRecord("");
}
public List getLeaveApprovalRecord(String headerId){
return leaveApprovalRepository.findLeaveApprovalRecord(headerId);
}
public PFLoan getPFInfo(String empId){
return pfLoanRepository.findPFInfo("",empId);
}
public Map getLeaveIssue(){
List headerIdList = List.of("17524","17527","17529");
Map unsolvedLeaves = new HashMap();
for (String headerId : headerIdList){
List leaveApproval = getLeaveApprovalRecord(headerId);
unsolvedLeaves.put(headerId,leaveApproval);
}
return unsolvedLeaves;
}
Код: Выделить всё
List leaveApproval = getLeaveApprovalRecord(headerId);
как показано ниже
Код: Выделить всё
{
"17524": [
{
"serialNumber": 3,
"headerId": "17524",
"responderName": "4939",
"approverName": "Mr. ABDUS SALAM (GM-Distribution)",
"approverAction": "Approved",
"note": null,
"actionDate": "24-APR-24 11:29"
}
],
"17527": [
{
"serialNumber": 2,
"headerId": "17527",
"responderName": "5284",
"approverName": "Mr. MD. MOTIUR RAHMAN (COO-Operations)",
"approverAction": "Approved",
"note": null,
"actionDate": "24-APR-24 15:58"
}
],
"17529": [
{
"serialNumber": 3,
"headerId": "17524",
"responderName": "4939",
"approverName": "Mr. ABDUS SALAM (GM-Distribution)",
"approverAction": "Approved",
"note": null,
"actionDate": "24-APR-24 11:29"
}
]
}
Почему это происходит?
Как исправить?
Подробнее здесь: https://stackoverflow.com/questions/783 ... t-data-jpa
Мобильная версия