From 4e90f5a6baf7df1881918ee684d31a71568737a8 Mon Sep 17 00:00:00 2001 From: bangae1 Date: Thu, 5 Jun 2025 14:40:41 +0900 Subject: [PATCH] =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../svcm/controller/SapApprController.java | 21 +++++++++++++++++++ .../com/kospo/svcm/dto/res/SlipResponse.java | 2 ++ .../svcm/repository/ApprReqRepository.java | 18 +++++++++++----- .../svcm/repository/Zwf0012tRepository.java | 14 +++++++++++++ .../svcm/repository/Zwf0013tRepository.java | 16 ++++++++++++++ .../com/kospo/svcm/service/SapService.java | 4 ++++ .../svcm/service/impl/SapServiceImpl.java | 16 ++++++++++---- .../svcm/service/impl/SlipServiceImpl.java | 8 ++++++- src/main/resources/application.yml | 2 +- 9 files changed, 90 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/kospo/svcm/controller/SapApprController.java b/src/main/java/com/kospo/svcm/controller/SapApprController.java index f1779e4..91939aa 100644 --- a/src/main/java/com/kospo/svcm/controller/SapApprController.java +++ b/src/main/java/com/kospo/svcm/controller/SapApprController.java @@ -7,6 +7,7 @@ import com.kospo.svcm.dto.res.PageResponse; import com.kospo.svcm.dto.res.Zwf0011tResponse; import com.kospo.svcm.service.SapService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; @@ -135,6 +136,26 @@ public class SapApprController { ) { return ResponseEntity.ok(sapService.approve(zwfApprApprovalRequest)); } + + @Operation(summary = "SAP 결재번호로 계약번호 변경", description = "SAP결재번호 TO 계약번호") + @ApiResponses({ + @ApiResponse(description = "Success", responseCode = "200", + content = @Content(mediaType = "application/json", array = @ArraySchema( + schema = @Schema(oneOf = {Zwf0011tResponse.class}) + ))), + @ApiResponse(description = "Not found", responseCode = "404", + content = @Content(mediaType = "text/plain", schema = @Schema(oneOf = + {String.class}))), + @ApiResponse(description = "Internal Error", responseCode = "500", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {CustomErrorResponse.class }))) + }) + @PutMapping("/sap/appr/converter/{apprNo}") + public ResponseEntity converter( + @Parameter(description = "sap 결재번호") @PathVariable("apprNo") String apprNo + ) { + return ResponseEntity.ok(sapService.apprNoToContNo(apprNo)); + } // @Operation(summary = "본인 결재목록 조회", description = "가격조사 결재 조회") // @ApiResponses({ // @ApiResponse(description = "Success", responseCode = "200", diff --git a/src/main/java/com/kospo/svcm/dto/res/SlipResponse.java b/src/main/java/com/kospo/svcm/dto/res/SlipResponse.java index c67ecd6..61f5fd0 100644 --- a/src/main/java/com/kospo/svcm/dto/res/SlipResponse.java +++ b/src/main/java/com/kospo/svcm/dto/res/SlipResponse.java @@ -77,6 +77,8 @@ public class SlipResponse implements Serializable { String regSabun; @Schema(name = "regDt", description = "등록일시") String regDt; + @Schema(name = "compNm", description = "업체명") + String compNm; List slipAtts; Zwf0011tResponse zwf0011t; diff --git a/src/main/java/com/kospo/svcm/repository/ApprReqRepository.java b/src/main/java/com/kospo/svcm/repository/ApprReqRepository.java index 0307594..71b84ea 100644 --- a/src/main/java/com/kospo/svcm/repository/ApprReqRepository.java +++ b/src/main/java/com/kospo/svcm/repository/ApprReqRepository.java @@ -94,7 +94,7 @@ public interface ApprReqRepository extends JpaRepository { " cc.wkfst,\n" + " '결재대기',\n" + " cc.num,\n" + - " to_char(to_date(cc.erdat || cc.erzet, 'yyyymmddHH24miss'), 'yyyy-mm-dd HH24:mi:ss') as erdt,\n" + + " to_char(to_timestamp(cc.erdat || cc.erzet, 'yyyymmddHH24miss'), 'yyyy-mm-dd HH24:mi:ss') as erdt,\n" + " 'SAP'\n" + " from (WITH z2_counts AS (SELECT wkfid,\n" + " sum(case when wkfst = 'A' then 1 else 0 end)\n" + @@ -257,7 +257,7 @@ public interface ApprReqRepository extends JpaRepository { " cc.wkfst,\n" + " '결재대기',\n" + " cc.num,\n" + - " to_char(to_date(cc.erdat || cc.erzet, 'yyyymmddHH24miss'), 'yyyy-mm-dd HH24:mi:ss') as erdt,\n" + + " to_char(to_timestamp(cc.erdat || cc.erzet, 'yyyymmddHH24miss'), 'yyyy-mm-dd HH24:mi:ss') as erdt,\n" + " 'SAP'\n" + " from (WITH z2_counts AS (SELECT wkfid,\n" + " sum(case when wkfst = 'A' then 1 else 0 end)\n" + @@ -536,20 +536,28 @@ public interface ApprReqRepository extends JpaRepository { interface ZwfApprDto { String getWkfid(); int getWkfsq(); - String getLIneclsf(); + String getLineclsf(); + String getLineclsfnm(); String getBname(); String getBtext(); String getPosit(); String getWkfst(); String getAbscd(); } - @Query(value = "with cte as (\n" + + @Query(value = "\n" + + "with cte as (\n" + " select wkfid, wkfsq, lineclsf, bname, btext, posit, wkfst, abscd\n" + " from public.zwf0012t\n" + " union \n" + " select wkfid, wkfsq, lineclsf, bname, btext, posit, wkfst, abscd\n" + " from public.zwf0013t\n" + " order by lineclsf desc\n" + - ") select * from cte where wkfid = :wkfid order by lineclsf desc ", nativeQuery = true) + "),\n" + + " cod as (\n" + + " select * from code where id = '9'\n" + + " )\n" + + "select\n" + + " wkfid, wkfsq, lineclsf, (select nm from cod where cd = cte.lineclsf) as lineclsfnm, bname, btext, posit, wkfst, abscd\n" + + " from cte where wkfid = :wkfid order by lineclsf desc ", nativeQuery = true) List findByWkfid(@Param("wkfid") String wkfid); } \ No newline at end of file diff --git a/src/main/java/com/kospo/svcm/repository/Zwf0012tRepository.java b/src/main/java/com/kospo/svcm/repository/Zwf0012tRepository.java index ba23d01..613b29d 100644 --- a/src/main/java/com/kospo/svcm/repository/Zwf0012tRepository.java +++ b/src/main/java/com/kospo/svcm/repository/Zwf0012tRepository.java @@ -12,6 +12,20 @@ public interface Zwf0012tRepository extends JpaRepository List findByIdWkfidOrderByLineclsfDesc(String WkfId); Zwf0012t findByIdWkfidAndIdWkfsqAndBname(String wkfid, Integer wkfsq, String bname); + @Query(value = "\n" + + "with cte as (\n" + + " select wkfid, wkfsq, lineclsf, bname, btext, posit, wkfst, abscd\n" + + " from public.zwf0012t\n" + + " order by lineclsf desc\n" + + "),\n" + + " cod as (\n" + + " select * from code where id = '9'\n" + + " )\n" + + "select\n" + + " wkfid, wkfsq, lineclsf, (select nm from cod where cd = cte.lineclsf) as lineclsfnm, bname, btext, posit, wkfst, abscd\n" + + " from cte where wkfid = :wkfid order by lineclsf desc ", nativeQuery = true) + List findByWkfid(@Param("wkfid") String wkfid); + interface SapApprReqDto { String getWkfid(); String getWkftx(); diff --git a/src/main/java/com/kospo/svcm/repository/Zwf0013tRepository.java b/src/main/java/com/kospo/svcm/repository/Zwf0013tRepository.java index c516f08..5f082a4 100644 --- a/src/main/java/com/kospo/svcm/repository/Zwf0013tRepository.java +++ b/src/main/java/com/kospo/svcm/repository/Zwf0013tRepository.java @@ -3,6 +3,8 @@ package com.kospo.svcm.repository; import com.kospo.svcm.model.Zwf0013t; import com.kospo.svcm.model.Zwf0013tId; 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; @@ -12,4 +14,18 @@ public interface Zwf0013tRepository extends JpaRepository Zwf0013t findByWkfsqAndIdWkfidAndIdBname(Integer wkfsq, String idWkfid, String idBname); void deleteByIdWkfid(String wkfid); + + @Query(value = "\n" + + "with cte as (\n" + + " select wkfid, wkfsq, lineclsf, bname, btext, posit, wkfst, abscd\n" + + " from public.zwf0013t\n" + + " order by lineclsf desc\n" + + "),\n" + + " cod as (\n" + + " select * from code where id = '9'\n" + + " )\n" + + "select\n" + + " wkfid, wkfsq, lineclsf, (select nm from cod where cd = cte.lineclsf) as lineclsfnm, bname, btext, posit, wkfst, abscd\n" + + " from cte where wkfid = :wkfid order by lineclsf desc ", nativeQuery = true) + List findByWkfid(@Param("wkfid") String wkfid); } \ No newline at end of file diff --git a/src/main/java/com/kospo/svcm/service/SapService.java b/src/main/java/com/kospo/svcm/service/SapService.java index a295b0d..a2de191 100644 --- a/src/main/java/com/kospo/svcm/service/SapService.java +++ b/src/main/java/com/kospo/svcm/service/SapService.java @@ -8,6 +8,7 @@ import com.kospo.svcm.dto.res.ZwfApprResponse; import jakarta.transaction.Transactional; import org.springframework.data.domain.Pageable; +import java.util.HashMap; import java.util.List; public interface SapService { @@ -23,4 +24,7 @@ public interface SapService { Zwf0011tResponse save(Zwf0011tSaveRequest zwf0011tSaveRequest); List approve(ZwfApprApprovalRequest zwfApprApprovalRequest); + + @Transactional + HashMap apprNoToContNo(String apprNo); } diff --git a/src/main/java/com/kospo/svcm/service/impl/SapServiceImpl.java b/src/main/java/com/kospo/svcm/service/impl/SapServiceImpl.java index 606d77d..09c6ed1 100644 --- a/src/main/java/com/kospo/svcm/service/impl/SapServiceImpl.java +++ b/src/main/java/com/kospo/svcm/service/impl/SapServiceImpl.java @@ -18,10 +18,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -381,4 +378,15 @@ public class SapServiceImpl implements SapService { } + @Transactional + @Override + public HashMap apprNoToContNo(String apprNo) { + Zwf0011t zwf0011t = zwf0011tRepository.findByIdWkfid(apprNo); + String belnr = zwf0011t.getObkey().substring(0, 10); + Slip slip = slipRepository.findByBelnr(belnr); + + HashMap map = new HashMap(); + map.put("contNo", slip.getContNo()); + return map; + } } diff --git a/src/main/java/com/kospo/svcm/service/impl/SlipServiceImpl.java b/src/main/java/com/kospo/svcm/service/impl/SlipServiceImpl.java index e0c2f46..502bb9e 100644 --- a/src/main/java/com/kospo/svcm/service/impl/SlipServiceImpl.java +++ b/src/main/java/com/kospo/svcm/service/impl/SlipServiceImpl.java @@ -61,6 +61,8 @@ public class SlipServiceImpl implements SlipService { .value(zwfApprDtos) .build())); slipResponse.setZwf0011t(zwf0011tResponse); + Cont cont = contRepository.findById(contNo).get(); + slipResponse.setCompNm(cont.getCompNm()); return slipResponse; } else { throw new CustomException(ErrorCode.FIND_ERR); @@ -72,6 +74,7 @@ public class SlipServiceImpl implements SlipService { public SlipResponse findByDetailContNo(String contNo) { Optional optionalSlip = slipRepository.findById(contNo); if(optionalSlip.isPresent()) { + List codes = codeRepository.findByIdId(9); SlipResponse slipResponse = SlipResponse.to(optionalSlip.get()); String obkey = slipResponse.getBelnr() + slipResponse.getGjahr() + "1000"; Zwf0011t zwf0011t = zwf0011tRepository.findByObkey(obkey); @@ -80,7 +83,7 @@ public class SlipServiceImpl implements SlipService { List grpResponseList = new ArrayList<>(); grpResponseList.add(ZwfApprGrpResponse.builder() .label("결재") - .value(zwf0012tRepository.findByIdWkfidOrderByLineclsfDesc((zwf0011t.getId().getWkfid()))) + .value(zwf0012tRepository.findByWkfid((zwf0011t.getId().getWkfid()))) .build()); List zwf0013ts = zwf0013tRepository.findByIdWkfidOrderByLineclsfDesc(zwf0011t.getId().getWkfid()); int groupIdx = zwf0013ts.stream().mapToInt(z -> z.getGrpid()).max().orElse(0); @@ -94,6 +97,9 @@ public class SlipServiceImpl implements SlipService { zwf0011tResponse.setApprs(grpResponseList); slipResponse.setZwf0011t(zwf0011tResponse); + Cont cont = contRepository.findById(contNo).get(); + slipResponse.setCompNm(cont.getCompNm()); + return slipResponse; } else { throw new CustomException(ErrorCode.FIND_ERR); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ef46c2a..caf4dfc 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: local \ No newline at end of file + active: dev \ No newline at end of file