How to deal with complex oracle sql query in spring boot?

37 Views Asked by At

I am new in spring boot technology. Recently I have started a project to process data from complex oracle sql query. Here is my query...

SELECT ROWNUM SRL_NUM,
       TRUNC (
          ( (ACT_OUT_TIME - ACT_IN_TIME)) * 24 * 60 * 60 / (24 * 60 * 60))
       || ':'
       || TRUNC (
             MOD ( ( (ACT_OUT_TIME - ACT_IN_TIME)) * 24 * 60 * 60,
                  (24 * 60 * 60))
             / (60 * 60))
       || ':'
       || TRUNC (
             MOD ( ( (ACT_OUT_TIME - ACT_IN_TIME)) * 24 * 60 * 60, (60 * 60))
             / 60)
       || ':'
       || TRUNC (MOD ( ( (ACT_OUT_TIME - ACT_IN_TIME)) * 24 * 60 * 60, 60))
          W_HOUR,
       TO_CHAR (ACT_IN_TIME, 'HH:MI:SS AM ') ACT_IN_TIME,
       TO_CHAR (ACT_OUT_TIME, 'HH:MI:SS AM ') ACT_OUT_TIME,
       EMPLOYEE_NUMBER,
       EMPLOYMENT_CATEGORY,
       DEPT,
       GROUP_NAME,
       WORKING_DATE,
       WORKING_DAY,
       CASE
          WHEN STATUS = 'P' THEN 'Present'
          WHEN STATUS = 'H' THEN 'Holiday'
          WHEN STATUS = 'LV' THEN 'Leave'
          WHEN STATUS = 'A' THEN 'Absent'
          WHEN STATUS = 'L' THEN 'Late'
          WHEN STATUS = 'O' THEN 'Offday'
          ELSE NULL
       END
          AS STATUS,
       Leave_Type,
       LOCATION_CODE,
       PAYROLL_NAME,
       VAL
  FROM (  SELECT DISTINCT
                 TO_DATE (ACT_IN_TIME, 'DD-MON-YYYY HH24:MI:SS ') ACT_IN_TIME,
                 TO_DATE (ACT_OUT_TIME, 'DD-MON-YYYY HH24:MI:SS ') ACT_OUT_TIME,
                 (   PAPF.FIRST_NAME
                  || ' '
                  || PAPF.MIDDLE_NAMES
                  || ' '
                  || PAPF.LAST_NAME)
                    AS EMP_NAME,
                 PAPF.EMPLOYEE_NUMBER,
                 FLV.MEANING EMPLOYMENT_CATEGORY,
                 HAOU.NAME DEPT,
                 --  pj.NAME,
                 PPG.GROUP_NAME,
                 XESD.WORKING_DATE,
                 TO_CHAR (XESD.WORKING_DATE, 'Day') WORKING_DAY,
                 XESD.STATUS,
                 paat.name Leave_Type,
                 HL.LOCATION_CODE,
                 PAYROLL.PAYROLL_NAME,
                 DECODE (FLV2.MEANING,
                         'Sales Field Officer', 'Sales',
                         'Hospital Employee', 'Hospital',
                         NULL)
                    VAL
            FROM XXSSGIL.XXSSGIL_EMP_SHIFT_PATT_ALLOC XESP,
                 XXSSGIL.XXSSGIL_SHIFT_PATTERN_DEFN XSPD,
                 XXSSGIL.XXSSGIL_EMP_SHIFT_ALLOC_DET XESD,
                 APPS.PER_ALL_PEOPLE_F PAPF,
                 --per_jobs pj,
                 APPS.PER_ALL_ASSIGNMENTS_F PAAF,
                 APPS.HR_LOCATIONS HL,
                 APPLSYS.FND_LOOKUP_VALUES FLV,
                 APPS.HR_ALL_ORGANIZATION_UNITS HAOU,
                 APPS.PAY_PEOPLE_GROUPS PPG,
                 APPS.PAY_ALL_PAYROLLS_F PAYROLL,
                 APPS.PER_PAY_BASES PPB,
                 APPS.PER_ABSENCE_ATTENDANCES PAT,
                 APPS.PER_ABSENCE_ATTENDANCE_TYPES PAAT,
                 APPLSYS.FND_LOOKUP_VALUES FLV2
           WHERE PAPF.PERSON_ID = XESP.PERSON_ID
                 AND XESP.CREATION_DATE BETWEEN PAPF.EFFECTIVE_START_DATE
                                            AND PAPF.EFFECTIVE_END_DATE
                 AND PAAF.PERSON_ID = PAPF.PERSON_ID
                 AND HL.LOCATION_ID(+) = PAAF.LOCATION_ID
                 AND FLV.LOOKUP_CODE(+) = PPB.NAME
                 AND UPPER (FLV.LOOKUP_TYPE(+)) =
                        UPPER ('SSGIL_BD_EMPL_CAT_SALARY_BASIS')
                 AND FLV.ENABLED_FLAG(+) = 'Y'
                 AND HAOU.ORGANIZATION_ID = PAAF.ORGANIZATION_ID
                 AND PPG.PEOPLE_GROUP_ID(+) = PAAF.PEOPLE_GROUP_ID
                 AND PPG.ENABLED_FLAG(+) = 'Y'
                 AND PPG.END_DATE_ACTIVE(+) IS NULL
                 AND XSPD.PATTERN_NUMBER = XESP.SHIFT_PATTERN
                 AND XESD.PATT_ALLOC_ID = XESP.PATT_ALLOC_ID
                 AND PAAF.CREATION_DATE BETWEEN PAYROLL.EFFECTIVE_START_DATE(+)
                                            AND PAYROLL.EFFECTIVE_END_DATE(+)
                 AND PAYROLL.PAYROLL_ID(+) = PAAF.PAYROLL_ID
                 AND XESD.WORKING_DATE BETWEEN XESP.START_DATE
                                           AND XESP.END_DATE
                 AND PAAF.PAY_BASIS_ID = PPB.PAY_BASIS_ID
                 AND XESD.PERSON_ID = PAT.PERSON_ID(+)
                 AND XESD.WORKING_DATE BETWEEN PAT.DATE_START(+)
                                           AND PAT.DATE_END(+)
                 AND PAT.ABSENCE_ATTENDANCE_TYPE_ID =
                        PAAT.ABSENCE_ATTENDANCE_TYPE_ID(+)
                 AND PAAT.DATE_END(+) IS NULL
                 AND FLV2.LOOKUP_TYPE(+) = 'EMPLOYEE_CATG'
                 AND FLV2.ENABLED_FLAG(+) = 'Y'
                 AND FLV2.END_DATE_ACTIVE(+) IS NULL
                 AND FLV2.MEANING(+) IN
                        ('Sales Field Officer', 'Hospital Employee')
                 AND PAAF.EMPLOYEE_CATEGORY = FLV2.LOOKUP_CODE(+)
                 AND XESD.WORKING_DATE BETWEEN PAAF.EFFECTIVE_START_DATE
                                           AND PAAF.EFFECTIVE_END_DATE
                 AND PAAF.PERSON_ID = XESD.PERSON_ID
                 AND TRUNC (XESD.WORKING_DATE) BETWEEN '26-Feb-2024'
                                                   AND '25-Mar-2024' --:P_DATE_TO
                 AND PAPF.EMPLOYEE_NUMBER = :P_EMPLOYEE_ID
                 AND CASE
                        WHEN STATUS = 'P' THEN 'Present'
                        WHEN STATUS = 'H' THEN 'Holiday'
                        WHEN STATUS = 'LV' THEN 'Leave'
                        WHEN STATUS = 'A' THEN 'Absent'
                        WHEN STATUS = 'L' THEN 'Late'
                        WHEN STATUS = 'O' THEN 'Offday'
                        ELSE NULL
                     END =
                        NVL (
                           :P_STATUS,
                           CASE
                              WHEN STATUS = 'P' THEN 'Present'
                              WHEN STATUS = 'H' THEN 'Holiday'
                              WHEN STATUS = 'LV' THEN 'Leave'
                              WHEN STATUS = 'A' THEN 'Absent'
                              WHEN STATUS = 'L' THEN 'Late'
                              WHEN STATUS = 'O' THEN 'Offday'
                              ELSE NULL
                           END)
        ORDER BY XESD.WORKING_DATE, PAPF.EMPLOYEE_NUMBER ASC)

In this query there are many table like subquery are used to fetch data. This table give below type result.. Query result sample data

I want to process this table data and make api to fetch all the table data. Now, how to process this query using spring boot?

0

There are 0 best solutions below