결재 조회 수정

This commit is contained in:
2025-06-04 12:35:27 +09:00
parent c64c2f1b17
commit 0078a74f7e
4 changed files with 222 additions and 211 deletions

View File

@@ -46,12 +46,11 @@ public class IntegratedApprController {
@GetMapping("/itg/appr/req") @GetMapping("/itg/appr/req")
public ResponseEntity findReq( public ResponseEntity findReq(
@Parameter(description = "결재제목") @RequestParam(value="title", required = false) String title, @Parameter(description = "결재제목") @RequestParam(value="title", required = false) String title,
@Parameter(description = "결재상태") @RequestParam(value="apprStat", required = false) String apprStat,
@Parameter(description = "페이지") @RequestParam("page") int page, @Parameter(description = "페이지") @RequestParam("page") int page,
@Parameter(description = "아이템갯수") @RequestParam("row") int row @Parameter(description = "아이템갯수") @RequestParam("row") int row
) { ) {
Pageable pageable = PageRequest.of(page -1, row); Pageable pageable = PageRequest.of(page -1, row);
return ResponseEntity.ok(integratedApprService.searchBySabun(title, apprStat, pageable)); return ResponseEntity.ok(integratedApprService.searchBySabun(title, pageable));
} }
@Operation(summary = "통합 결재 목록(부서) 조회", description = "통합 결재 목록 조회 (관리자 :전체, 일반사용자 :부서)") @Operation(summary = "통합 결재 목록(부서) 조회", description = "통합 결재 목록 조회 (관리자 :전체, 일반사용자 :부서)")

View File

@@ -58,174 +58,183 @@ public interface ApprReqRepository extends JpaRepository<ApprReq, ApprReqId> {
} }
@Query(value = "select *\n" + @Query(value = "select *\n" +
" from (with cte as (select appr_no,\n" + "from (select *\n" +
" appr_ord,\n" + " from (with cte as (select appr_no,\n" +
" sabun,\n" + " appr_ord,\n" +
" name,\n" + " sabun,\n" +
" appr_stat_cd,\n" + " name,\n" +
" '결재대기' AS appr_stat,\n" + " appr_stat_cd,\n" +
" row_number() over (partition by appr_no order by appr_ord) as num\n" + " '결재대기' AS\n" +
" from appr_req\n" + " appr_stat,\n" +
" where gubun_cd != ''\n" + " row_number() over (partition by appr_no order by appr_ord) as num\n" +
" and appr_stat_cd = '0000')\n" + " from appr_req\n" +
" select cte.appr_no,\n" + " where gubun_cd != ''\n" +
" cte.appr_ord,\n" + " and appr_stat_cd = '0000')\n" +
" p.title,\n" + " select cte.appr_no,\n" +
" cte.sabun,\n" + " cte.appr_ord,\n" +
" cte.name,\n" + " p.title,\n" +
" cte.appr_stat_cd,\n" + " cte.sabun,\n" +
" cte.appr_stat,\n" + " cte.name,\n" +
" cte.num,\n" + " cte.appr_stat_cd,\n" +
" am.reg_dt as reg_dt,\n" + " cte.appr_stat,\n" +
" 'SVCM' as gubun\n" + " cte.num,\n" +
" from cte\n" + " am.reg_dt as reg_dt,\n" +
" inner join appr_mst am on cte.appr_no = am.appr_no\n" + " 'SVCM'\n" +
" and am.appr_stat_cd in ('0000', '0100')\n" + " as gubun\n" +
" inner join prcs p on am.prcs_no = p.prcs_no \n" + " from cte\n" +
" and num = 1 and sabun = :sabun)\n" + " inner join appr_mst am on cte.appr_no = am.appr_no and am.appr_stat_cd in\n" +
"union all\n" + " ('0000', '0100')\n" +
"select cc.wkfid, cc.wkfsq, z11.wkftx, cc.bname, cc.btext, cc.wkfst, '결재대기', cc.num, to_char(to_date(cc.erdat||cc.erzet, 'yyyymmddHH24miss'), 'yyyy-mm-dd HH24:mi:ss') as erdt, 'SAP' from (\n" + " inner join prcs p on am.prcs_no = p.prcs_no and num = 1 and sabun = :sabun)\n" +
"WITH z2_counts AS (SELECT wkfid,\n" + " union all\n" +
" sum(case when wkfst = 'A' then 1 else 0 end) as z2_acount,\n" + " select cc.wkfid,\n" +
" sum(case when wkfst = 'I' then 1 else 0 end) as z2_count\n" + " cc.wkfsq,\n" +
" FROM zwf0012t group by wkfid),\n" + " z11.wkftx,\n" +
" z3_counts AS (SELECT wkfid,\n" + " cc.bname,\n" +
" sum(case when wkfst = 'A' then 1 else 0 end) as z3_acount,\n" + " cc.btext,\n" +
" sum(case when wkfst = 'I' then 1 else 0 end) as z3_count\n" + " cc.wkfst,\n" +
" FROM zwf0013t group by wkfid),\n" + " '결재대기',\n" +
" z2_data AS (SELECT wkfid,\n" + " cc.num,\n" +
" ROW_NUMBER() OVER (PARTITION BY wkfid ORDER BY lineclsf DESC, wkfsq) AS rn,\n" + " to_char(to_date(cc.erdat || cc.erzet, 'yyyymmddHH24miss'), 'yyyy-mm-dd HH24:mi:ss') as erdt,\n" +
" lineclsf,\n" + " 'SAP'\n" +
" 0 AS grpid,\n" + " from (WITH z2_counts AS (SELECT wkfid,\n" +
" wkfsq,\n" + " sum(case when wkfst = 'A' then 1 else 0 end)\n" +
" wkfst,\n" + " as z2_acount,\n" +
" abscd,\n" + " sum(case when wkfst = 'I' then 1 else 0 end) as z2_count\n" +
" bname,\n" + " FROM zwf0012t\n" +
" btext,\n" + " group by wkfid),\n" +
" posit,\n" + " z3_counts AS (SELECT wkfid,\n" +
" deptn,\n" + " sum(case when wkfst = 'A' then 1 else 0 end) as z3_acount,\n" +
" ernam,\n" + " sum(case when wkfst = 'I' then 1 else 0 end) as z3_count\n" +
" erdat,\n" + " FROM zwf0013t\n" +
" erzet,\n" + " group by wkfid),\n" +
" aenam,\n" + " z2_data\n" +
" aedat,\n" + " AS (SELECT wkfid,\n" +
" aezet,\n" + " ROW_NUMBER() OVER (PARTITION BY wkfid ORDER BY lineclsf DESC, wkfsq) AS rn,\n" +
" 0 AS wkfsq1\n" + " lineclsf,\n" +
" FROM zwf0012t\n" + " 0 AS grpid,\n" +
" WHERE wkfst = 'I'),\n" + " wkfsq,\n" +
" z3_data AS (SELECT wkfid,\n" + " wkfst,\n" +
" RANK() OVER (PARTITION BY grpid ORDER BY lineclsf DESC, wkfsq) AS rk,\n" + " abscd,\n" +
" lineclsf,\n" + " bname,\n" +
" grpid,\n" + " btext,\n" +
" wkfsq,\n" + " posit,\n" +
" wkfst,\n" + " deptn,\n" +
" abscd,\n" + " ernam,\n" +
" bname,\n" + " erdat,\n" +
" btext,\n" + " erzet,\n" +
" posit,\n" + " aenam,\n" +
" deptn,\n" + " aedat,\n" +
" ernam,\n" + " aezet,\n" +
" erdat,\n" + " 0 AS wkfsq1\n" +
" erzet,\n" + " FROM zwf0012t\n" +
" aenam,\n" + " WHERE wkfst = 'I'),\n" +
" aedat,\n" + " z3_data AS (SELECT wkfid,\n" +
" aezet,\n" + " RANK() OVER (PARTITION BY grpid ORDER BY lineclsf DESC, wkfsq) AS rk,\n" +
" wkfsq1\n" + " lineclsf,\n" +
" FROM zwf0013t\n" + " grpid,\n" +
" WHERE wkfst = 'I')\n" + " wkfsq,\n" +
"SELECT wkfid,\n" + " wkfst,\n" +
" num,\n" + " abscd,\n" +
" lineclsf,\n" + " bname,\n" +
" grpid,\n" + " btext,\n" +
" wkfsq,\n" + " posit,\n" +
" wkfst,\n" + " deptn,\n" +
" abscd,\n" + " ernam,\n" +
" bname,\n" + " erdat,\n" +
" btext,\n" + " erzet,\n" +
" posit,\n" + " aenam,\n" +
" deptn,\n" + " aedat,\n" +
" ernam,\n" + " aezet,\n" +
" erdat,\n" + " wkfsq1\n" +
" erzet,\n" + " FROM zwf0013t\n" +
" aenam,\n" + " WHERE wkfst = 'I')\n" +
" aedat,\n" + " SELECT wkfid,\n" +
" aezet,\n" + " num,\n" +
" wkfsq1\n" + " lineclsf,\n" +
"FROM (SELECT z2.wkfid,\n" + " grpid,\n" +
" CASE\n" + " wkfsq,\n" +
" WHEN z2c.z2_count <= 1 AND z3c.z3_count > 0 THEN 99\n" + " wkfst,\n" +
" ELSE z2.rn\n" + " abscd,\n" +
" END AS num,\n" + " bname,\n" +
" z2.lineclsf,\n" + " btext,\n" +
" z2.grpid,\n" + " posit,\n" +
" z2.wkfsq,\n" + " deptn,\n" +
" z2.wkfst,\n" + " ernam,\n" +
" z2.abscd,\n" + " erdat,\n" +
" z2.bname,\n" + " erzet,\n" +
" z2.btext,\n" + " aenam,\n" +
" z2.posit,\n" + " aedat,\n" +
" z2.deptn,\n" + " aezet,\n" +
" z2.ernam,\n" + " wkfsq1\n" +
" z2.erdat,\n" + " FROM (SELECT z2.wkfid,\n" +
" z2.erzet,\n" + " CASE WHEN z2c.z2_count <= 1 AND z3c.z3_count > 0 THEN 99 ELSE z2.rn END AS num,\n" +
" z2.aenam,\n" + " z2.lineclsf,\n" +
" z2.aedat,\n" + " z2.grpid,\n" +
" z2.aezet,\n" + " z2.wkfsq,\n" +
" z2.wkfsq1\n" + " z2.wkfst,\n" +
" FROM z2_data z2\n" + " z2.abscd,\n" +
" inner JOIN z2_counts z2c on z2c.wkfid = z2.wkfid\n" + " z2.bname,\n" +
" inner JOIN z3_counts z3c on z3c.wkfid = z2.wkfid\n" + " z2.btext,\n" +
" WHERE z2c.z2_count > 1\n" + " z2.posit,\n" +
" OR z3c.z3_count <= 0 \n" + " z2.deptn,\n" +
" UNION ALL\n" + " z2.ernam,\n" +
" SELECT z3.wkfid,\n" + " z2.erdat,\n" +
" z3.rk AS num,\n" + " z2.erzet,\n" +
" z3.lineclsf,\n" + " z2.aenam,\n" +
" z3.grpid,\n" + " z2.aedat,\n" +
" z3.wkfsq,\n" + " z2.aezet,\n" +
" z3.wkfst,\n" + " z2.wkfsq1\n" +
" z3.abscd,\n" + " FROM z2_data z2\n" +
" z3.bname,\n" + " inner JOIN z2_counts z2c\n" +
" z3.btext,\n" + " on z2c.wkfid = z2.wkfid\n" +
" z3.posit,\n" + " inner JOIN z3_counts z3c on z3c.wkfid = z2.wkfid\n" +
" z3.deptn,\n" + " WHERE z2c.z2_count\n" +
" z3.ernam,\n" + " > 1\n" +
" z3.erdat,\n" + " OR z3c.z3_count <= 0\n" +
" z3.erzet,\n" + " UNION ALL\n" +
" z3.aenam,\n" + " SELECT z3.wkfid,\n" +
" z3.aedat,\n" + " z3.rk AS num,\n" +
" z3.aezet,\n" + " z3.lineclsf,\n" +
" z3.wkfsq1\n" + " z3.grpid,\n" +
" FROM z3_data z3\n" + " z3.wkfsq,\n" +
"inner JOIN z2_counts z2c on z2c.wkfid = z3.wkfid \n" + " z3.wkfst,\n" +
" WHERE z2c.z2_count = 1) aa\n" + " z3.abscd,\n" +
"WHERE num = 1 and bname = :sabun\n" + " z3.bname,\n" +
") cc inner join zwf0011t z11 \n" + " z3.btext,\n" +
" on cc.wkfid = z11.wkfid\n" + " z3.posit,\n" +
" and z11.wkfst in ('Q', 'I')\n" + " z3.deptn,\n" +
" and (:title is null or :title = '' or z11.wkftx like concat('%', :title, '%'))\n" + " z3.ernam,\n" +
" and (:apprStat is null or :apprStat = '' or (select nm from code where id = 8 and cd = cc.wkfst) = :apprStat)\n" + " z3.erdat,\n" +
"order by reg_dt desc", " z3.erzet,\n" +
countQuery = "select count(appr_no)\n" + " z3.aenam,\n" +
" from (select appr_no,\n" + " z3.aedat,\n" +
" title,\n" + " z3.aezet,\n" +
" sabun,\n" + " z3.wkfsq1\n" +
" name,\n" + " FROM z3_data z3\n" +
" appr_stat_cd,\n" + " inner JOIN z2_counts z2c on z2c.wkfid = z3.wkfid\n" +
" appr_stat,\n" + " WHERE z2c.z2_count = 1) aa\n" +
" num,\n" + " WHERE num = 1\n" +
" reg_dt,\n" + " and bname = :sabun) cc\n" +
" gubun\n" + " inner join zwf0011t z11\n" +
" on cc.wkfid = z11.wkfid and z11.wkfst in ('Q', 'I'))\n" +
"where (:title is null or :title = '' or title like concat('%', :title, '%'))\n" +
"order by reg_dt desc\n" +
"\n",
countQuery = "select count(*) \n" +
"from (select *\n" +
" from (with cte as (select appr_no,\n" + " from (with cte as (select appr_no,\n" +
" appr_ord,\n" +
" sabun,\n" + " sabun,\n" +
" name,\n" + " name,\n" +
" appr_stat_cd,\n" + " appr_stat_cd,\n" +
" '결재대기' AS appr_stat,\n" + " '결재대기' AS\n" +
" appr_stat,\n" +
" row_number() over (partition by appr_no order by appr_ord) as num\n" + " row_number() over (partition by appr_no order by appr_ord) as num\n" +
" from appr_req\n" + " from appr_req\n" +
" where gubun_cd != ''\n" + " where gubun_cd != ''\n" +
" and appr_stat_cd = '0000')\n" + " and appr_stat_cd = '0000')\n" +
" select cte.appr_no,\n" + " select cte.appr_no,\n" +
" cte.appr_ord,\n" +
" p.title,\n" + " p.title,\n" +
" cte.sabun,\n" + " cte.sabun,\n" +
" cte.name,\n" + " cte.name,\n" +
@@ -233,14 +242,15 @@ public interface ApprReqRepository extends JpaRepository<ApprReq, ApprReqId> {
" cte.appr_stat,\n" + " cte.appr_stat,\n" +
" cte.num,\n" + " cte.num,\n" +
" am.reg_dt as reg_dt,\n" + " am.reg_dt as reg_dt,\n" +
" 'SAP' as gubun\n" + " 'SVCM'\n" +
" as gubun\n" +
" from cte\n" + " from cte\n" +
" inner join appr_mst am on cte.appr_no = am.appr_no\n" + " inner join appr_mst am on cte.appr_no = am.appr_no and am.appr_stat_cd in\n" +
" and am.appr_stat_cd in ('0000', '0100')\n" + " ('0000', '0100')\n" +
" inner join prcs p on am.prcs_no = p.prcs_no \n" + " inner join prcs p on am.prcs_no = p.prcs_no and num = 1 and sabun = :sabun)\n" +
" and num = 1 and sabun = :sabun)\n" +
" union all\n" + " union all\n" +
" select cc.wkfid,\n" + " select cc.wkfid,\n" +
" cc.wkfsq,\n" +
" z11.wkftx,\n" + " z11.wkftx,\n" +
" cc.bname,\n" + " cc.bname,\n" +
" cc.btext,\n" + " cc.btext,\n" +
@@ -250,33 +260,37 @@ public interface ApprReqRepository extends JpaRepository<ApprReq, ApprReqId> {
" to_char(to_date(cc.erdat || cc.erzet, 'yyyymmddHH24miss'), 'yyyy-mm-dd HH24:mi:ss') as erdt,\n" + " to_char(to_date(cc.erdat || cc.erzet, 'yyyymmddHH24miss'), 'yyyy-mm-dd HH24:mi:ss') as erdt,\n" +
" 'SAP'\n" + " 'SAP'\n" +
" from (WITH z2_counts AS (SELECT wkfid,\n" + " from (WITH z2_counts AS (SELECT wkfid,\n" +
" sum(case when wkfst = 'A' then 1 else 0 end) as z2_acount,\n" + " sum(case when wkfst = 'A' then 1 else 0 end)\n" +
" sum(case when wkfst = 'I' then 1 else 0 end) as z2_count\n" + " as z2_acount,\n" +
" FROM zwf0012t group by wkfid),\n" + " sum(case when wkfst = 'I' then 1 else 0 end) as z2_count\n" +
" FROM zwf0012t\n" +
" group by wkfid),\n" +
" z3_counts AS (SELECT wkfid,\n" + " z3_counts AS (SELECT wkfid,\n" +
" sum(case when wkfst = 'A' then 1 else 0 end) as z3_acount,\n" + " sum(case when wkfst = 'A' then 1 else 0 end) as z3_acount,\n" +
" sum(case when wkfst = 'I' then 1 else 0 end) as z3_count\n" + " sum(case when wkfst = 'I' then 1 else 0 end) as z3_count\n" +
" FROM zwf0013t group by wkfid),\n" + " FROM zwf0013t\n" +
" z2_data AS (SELECT wkfid,\n" + " group by wkfid),\n" +
" ROW_NUMBER() OVER (PARTITION BY wkfid ORDER BY lineclsf DESC, wkfsq) AS rn,\n" + " z2_data\n" +
" lineclsf,\n" + " AS (SELECT wkfid,\n" +
" 0 AS grpid,\n" + " ROW_NUMBER() OVER (PARTITION BY wkfid ORDER BY lineclsf DESC, wkfsq) AS rn,\n" +
" wkfsq,\n" + " lineclsf,\n" +
" wkfst,\n" + " 0 AS grpid,\n" +
" abscd,\n" + " wkfsq,\n" +
" bname,\n" + " wkfst,\n" +
" btext,\n" + " abscd,\n" +
" posit,\n" + " bname,\n" +
" deptn,\n" + " btext,\n" +
" ernam,\n" + " posit,\n" +
" erdat,\n" + " deptn,\n" +
" erzet,\n" + " ernam,\n" +
" aenam,\n" + " erdat,\n" +
" aedat,\n" + " erzet,\n" +
" aezet,\n" + " aenam,\n" +
" 0 AS wkfsq1\n" + " aedat,\n" +
" FROM zwf0012t\n" + " aezet,\n" +
" WHERE wkfst = 'I'),\n" + " 0 AS wkfsq1\n" +
" FROM zwf0012t\n" +
" WHERE wkfst = 'I'),\n" +
" z3_data AS (SELECT wkfid,\n" + " z3_data AS (SELECT wkfid,\n" +
" RANK() OVER (PARTITION BY grpid ORDER BY lineclsf DESC, wkfsq) AS rk,\n" + " RANK() OVER (PARTITION BY grpid ORDER BY lineclsf DESC, wkfsq) AS rk,\n" +
" lineclsf,\n" + " lineclsf,\n" +
@@ -316,10 +330,7 @@ public interface ApprReqRepository extends JpaRepository<ApprReq, ApprReqId> {
" aezet,\n" + " aezet,\n" +
" wkfsq1\n" + " wkfsq1\n" +
" FROM (SELECT z2.wkfid,\n" + " FROM (SELECT z2.wkfid,\n" +
" CASE\n" + " CASE WHEN z2c.z2_count <= 1 AND z3c.z3_count > 0 THEN 99 ELSE z2.rn END AS num,\n" +
" WHEN z2c.z2_count <= 1 AND z3c.z3_count > 0 THEN 99\n" +
" ELSE z2.rn\n" +
" END AS num,\n" +
" z2.lineclsf,\n" + " z2.lineclsf,\n" +
" z2.grpid,\n" + " z2.grpid,\n" +
" z2.wkfsq,\n" + " z2.wkfsq,\n" +
@@ -337,10 +348,12 @@ public interface ApprReqRepository extends JpaRepository<ApprReq, ApprReqId> {
" z2.aezet,\n" + " z2.aezet,\n" +
" z2.wkfsq1\n" + " z2.wkfsq1\n" +
" FROM z2_data z2\n" + " FROM z2_data z2\n" +
" inner JOIN z2_counts z2c on z2c.wkfid = z2.wkfid\n" + " inner JOIN z2_counts z2c\n" +
" inner JOIN z3_counts z3c on z3c.wkfid = z2.wkfid\n" + " on z2c.wkfid = z2.wkfid\n" +
" WHERE z2c.z2_count > 1\n" + " inner JOIN z3_counts z3c on z3c.wkfid = z2.wkfid\n" +
" OR z3c.z3_count <= 0 \n" + " WHERE z2c.z2_count\n" +
" > 1\n" +
" OR z3c.z3_count <= 0\n" +
" UNION ALL\n" + " UNION ALL\n" +
" SELECT z3.wkfid,\n" + " SELECT z3.wkfid,\n" +
" z3.rk AS num,\n" + " z3.rk AS num,\n" +
@@ -361,17 +374,16 @@ public interface ApprReqRepository extends JpaRepository<ApprReq, ApprReqId> {
" z3.aezet,\n" + " z3.aezet,\n" +
" z3.wkfsq1\n" + " z3.wkfsq1\n" +
" FROM z3_data z3\n" + " FROM z3_data z3\n" +
" inner join z2_counts z2c \n" + " inner JOIN z2_counts z2c on z2c.wkfid = z3.wkfid\n" +
" on z2c.z2_count = 1) aa\n" + " WHERE z2c.z2_count = 1) aa\n" +
" WHERE num = 1\n" + " WHERE num = 1\n" +
" and bname = :sabun) cc\n" + " and bname = :sabun) cc\n" +
" inner join zwf0011t z11 on cc.wkfid = z11.wkfid\n" + " inner join zwf0011t z11\n" +
" and z11.wkfst in ('Q', 'I') \n" + " on cc.wkfid = z11.wkfid and z11.wkfst in ('Q', 'I'))\n" +
" and (:title is null or :title = '' or z11.wkftx like concat('%', :title, '%'))\n" + "where (:title is null or :title = '' or title like concat('%', :title, '%'))\n" +
" and (:apprStat is null or :apprStat = '' or (select nm from code where id = 8 and cd = cc.wkfst) = :apprStat)\n" + "\n",
" order by reg_dt desc)",
nativeQuery = true) nativeQuery = true)
Page<igtApprReqDto> igtFindhBySabun(@Param("sabun") String sabun, @Param("title") String title, @Param("apprStat") String apprStat, Pageable pageable); Page<igtApprReqDto> igtFindhBySabun(@Param("sabun") String sabun, @Param("title") String title, Pageable pageable);
interface igtApprDto { interface igtApprDto {
String getApprNo(); String getApprNo();

View File

@@ -8,7 +8,7 @@ import org.springframework.data.domain.Pageable;
import java.util.List; import java.util.List;
public interface IntegratedApprService { public interface IntegratedApprService {
PageResponse searchBySabun(String title, String apprStat, Pageable pageable); PageResponse searchBySabun(String title, Pageable pageable);
PageResponse searchList(String title, Pageable pageable); PageResponse searchList(String title, Pageable pageable);
} }

View File

@@ -22,9 +22,9 @@ public class IntegratedApprServiceImpl implements IntegratedApprService {
@Transactional @Transactional
@Override @Override
public PageResponse searchBySabun(String title, String apprStat, Pageable pageable) { public PageResponse searchBySabun(String title, Pageable pageable) {
User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
Page<ApprReqRepository.igtApprReqDto> p = apprReqRepository.igtFindhBySabun(user.getSabun(), title, apprStat, pageable); Page<ApprReqRepository.igtApprReqDto> p = apprReqRepository.igtFindhBySabun(user.getSabun(), title, pageable);
return PageResponse.builder() return PageResponse.builder()
.totalPages(p.getTotalPages()) .totalPages(p.getTotalPages())
.totalElements(p.getTotalElements()) .totalElements(p.getTotalElements())