결재 테스트

This commit is contained in:
2025-05-30 10:40:00 +09:00
parent 349730d958
commit fea9c79db5
7 changed files with 48 additions and 50 deletions

View File

@@ -2,10 +2,10 @@ PUT http://localhost:8010//api/prcs
Content-Type: application/json Content-Type: application/json
{ {
"prcsNo": "PRCS-20250521019", "prcsNo": "PRCS-20250530003",
"cateCd": "0200", "cateCd": "0200",
"title": "5층 파티션 구매", "title": "가격조사 결재 테스트",
"content": "싼거 찾아요111", "content": "시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n",
"regSdat": "2025-04-01", "regSdat": "2025-04-01",
"regEdat": "2025-07-30", "regEdat": "2025-07-30",
"prvYn": false, "prvYn": false,
@@ -19,26 +19,23 @@ Content-Type: application/json
"apprReqs": [ "apprReqs": [
{ {
"gubunCd": "", "gubunCd": "",
"apprNo": "APPR-20250514013", "apprNo": "APPR-0000000066",
"apprOrd": 10,
"sabun": "psn14020", "sabun": "psn14020",
"name": "조진우", "name": "조진우",
"attendCd": "" "attendCd": ""
}, },
{ {
"gubunCd": "0100", "gubunCd": "0100",
"apprNo": "APPR-20250514013", "apprNo": "APPR-0000000066",
"apprOrd": 20,
"sabun": "17131303", "sabun": "17131303",
"name": "김진형1", "name": "김진형",
"attendCd": "" "attendCd": ""
}, },
{ {
"gubunCd": "0200", "gubunCd": "0200",
"apprNo": "APPR-20250514013", "apprNo": "APPR-0000000066",
"apprOrd": 30,
"sabun": "17131304", "sabun": "17131304",
"name": "손원장1", "name": "손원장",
"attendCd": "01" "attendCd": "01"
} }
], ],

View File

@@ -3,7 +3,7 @@ Content-Type: application/json
{ {
"cateCd": "0100", "cateCd": "0100",
"title": "가격조사 시나리오 테스트22", "title": "가격조사 결재 테스트",
"content": "시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n", "content": "시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n",
"regSdat": "2025-04-01", "regSdat": "2025-04-01",
"regEdat": "2025-05-22", "regEdat": "2025-05-22",
@@ -30,25 +30,25 @@ Content-Type: application/json
"gubunCd": "", "gubunCd": "",
"sabun": "psn14020", "sabun": "psn14020",
"name": "조진우", "name": "조진우",
"attendCd": null "attendCd": ""
}, },
{ {
"gubunCd": "0100", "gubunCd": "0100",
"sabun": "psn25226", "sabun": "psn25226",
"name": "김건", "name": "김건",
"attendCd": null "attendCd": ""
}, },
{ {
"gubunCd": "0100", "gubunCd": "0100",
"sabun": "17131303", "sabun": "17131303",
"name": "김진형", "name": "김진형",
"attendCd": null "attendCd": ""
}, },
{ {
"gubunCd": "0200", "gubunCd": "0200",
"sabun": "17131304", "sabun": "17131304",
"name": "손원장", "name": "손원장",
"attendCd": null "attendCd": ""
} }
], ],
"prcsBizs": [ "prcsBizs": [

View File

@@ -22,6 +22,10 @@ import java.util.stream.Collectors;
public class EstimateDetailResponse implements Serializable { public class EstimateDetailResponse implements Serializable {
@Schema(name = "estNo", description = "견적관리번호") @Schema(name = "estNo", description = "견적관리번호")
String estNo; String estNo;
@Schema(name = "compNm", description = "회사명")
String compNm;
@Schema(name = "repNm", description = "사업자명")
String repNm;
@Schema(name = "mngNm", description = "담당자명") @Schema(name = "mngNm", description = "담당자명")
String mngNm; String mngNm;
@Schema(name = "unitPrc", description = "단가") @Schema(name = "unitPrc", description = "단가")
@@ -40,6 +44,8 @@ public class EstimateDetailResponse implements Serializable {
.dtlSpNo(estimate.getDtlSpNo()) .dtlSpNo(estimate.getDtlSpNo())
.unitPrc(estimate.getUnitPrc()) .unitPrc(estimate.getUnitPrc())
.amt(estimate.getAmt()) .amt(estimate.getAmt())
.compNm(estimate.getBusiness().getCompNm())
.repNm(estimate.getBusiness().getRepNm())
.regDt(estimate.getRegDt()) .regDt(estimate.getRegDt())
.build(); .build();
} }

View File

@@ -35,6 +35,7 @@ public class PrcsBizDetailResponse implements Serializable {
@Schema(name = "totAmt", description = "합계금액") @Schema(name = "totAmt", description = "합계금액")
int totAmt; int totAmt;
List<EstimateDetailResponse> estimates; List<EstimateDetailResponse> estimates;
List<PbAttResponse> pbAtts;
public static PrcsBizDetailResponse from(PrcsBiz prcsBiz) { public static PrcsBizDetailResponse from(PrcsBiz prcsBiz) {
return PrcsBizDetailResponse.builder() return PrcsBizDetailResponse.builder()

View File

@@ -1,6 +1,7 @@
package com.kospo.svcm.dto.res; package com.kospo.svcm.dto.res;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.kospo.svcm.model.PbAtt;
import com.kospo.svcm.model.Prcs; import com.kospo.svcm.model.Prcs;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;

View File

@@ -4,5 +4,9 @@ import com.kospo.svcm.model.PbAtt;
import com.kospo.svcm.model.PbAttId; import com.kospo.svcm.model.PbAttId;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface PbAttRepository extends JpaRepository<PbAtt, PbAttId> { public interface PbAttRepository extends JpaRepository<PbAtt, PbAttId> {
List<PbAtt> findByIdPrcsNoAndIdBizNo(String prcsNo, String bizNo);
List<PbAtt> findByIdPrcsNo(String prcsNo);
} }

View File

@@ -48,6 +48,8 @@ public class PrcsServiceImpl implements PrcsService {
private final MailUtils mailUtils; private final MailUtils mailUtils;
private final SequenceUtils sequenceUtils; private final SequenceUtils sequenceUtils;
private final UserRepository userRepository; private final UserRepository userRepository;
private final BusinessRepository businessRepository;
private final PbAttRepository pbAttRepository;
@Value("${server.attach}") @Value("${server.attach}")
private String filePath; private String filePath;
@@ -124,11 +126,14 @@ public class PrcsServiceImpl implements PrcsService {
List<Estimate> estimates = estimateRepository.findByBizNoAndPrcsNo(prcsBiz.getBizNo(), prcsBiz.getPrcsNo()); List<Estimate> estimates = estimateRepository.findByBizNoAndPrcsNo(prcsBiz.getBizNo(), prcsBiz.getPrcsNo());
int totAmt = estimates.stream().mapToInt(Estimate::getAmt).sum(); int totAmt = estimates.stream().mapToInt(Estimate::getAmt).sum();
prcsBiz.setTotAmt(totAmt); prcsBiz.setTotAmt(totAmt);
List<PbAtt> pbAttList = pbAttRepository.findByIdPrcsNoAndIdBizNo(prcsNo, prcsBiz.getBizNo());
prcsBiz.setPbAtts(pbAttList.stream().map(PbAttResponse::from).toList());
prcsBiz.setEstimates(estimates.stream().map(estimate ->{ prcsBiz.setEstimates(estimates.stream().map(estimate ->{
EstimateDetailResponse estimateDetailResponse = EstimateDetailResponse.from(estimate); EstimateDetailResponse estimateDetailResponse = EstimateDetailResponse.from(estimate);
return estimateDetailResponse; return estimateDetailResponse;
}).toList()); }).toList());
}); });
return prcsResponse; return prcsResponse;
} else { } else {
throw new CustomException(ErrorCode.FIND_ERR); throw new CustomException(ErrorCode.FIND_ERR);
@@ -456,44 +461,28 @@ public class PrcsServiceImpl implements PrcsService {
List<ApprReq> apprReqs = new ArrayList<>(); List<ApprReq> apprReqs = new ArrayList<>();
ApprMst getApprMst = apprMstRepository.findByPrcsNo(prcsRequest.getPrcsNo()); ApprMst getApprMst = apprMstRepository.findByPrcsNo(prcsRequest.getPrcsNo());
apprReqRepository.deleteByIdApprNo(getApprMst.getApprNo());
IntStream.range(0, prcsRequest.getApprReqs().size()).forEach(idx -> { IntStream.range(0, prcsRequest.getApprReqs().size()).forEach(idx -> {
PrcsUpdateRequest.ApprReqUpdateRequest apprReqRequest = prcsRequest.getApprReqs().get(idx); PrcsUpdateRequest.ApprReqUpdateRequest apprReqRequest = prcsRequest.getApprReqs().get(idx);
User apprUser = userRepository.findById(apprReqRequest.getSabun()).get(); User apprUser = userRepository.findById(apprReqRequest.getSabun()).get();
if (apprReqRequest.getApprNo() != null) { apprReqs.add(ApprReq.builder()
ApprReq apprReq = apprReqRepository.findById(ApprReqId.builder() .id(ApprReqId.builder()
.apprOrd(apprReqRequest.getApprOrd()) .apprNo(getApprMst.getApprNo())
.apprNo(getApprMst.getApprNo()) .apprOrd(apprOrd.incrementAndGet())
.build()).get(); .build())
apprReq.setName(apprReqRequest.getName()); .sabun(apprReqRequest.getSabun())
apprReq.setSabun(apprReqRequest.getSabun()); .name(apprReqRequest.getName())
apprReq.setAttendCd(apprReqRequest.getAttendCd()); .apprDt("")
apprReq.setAttendNm(StringUtil.isBlank(apprReqRequest.getAttendCd()) ? "재중" : CommonUtils.getCodeNm(attendCodes, apprReqRequest.getAttendCd())); .apprStatCd(apprCodeCd)
apprReq.setGubunCd(apprReqRequest.getGubunCd()); .apprStat(CommonUtils.getCodeNm(apprCodes, apprCodeCd))
apprReq.setGubunNm(StringUtil.isBlank(apprReqRequest.getGubunCd()) ? "입안" : CommonUtils.getCodeNm(gubunCodes, apprReqRequest.getGubunCd())); .gubunCd(apprReqRequest.getGubunCd())
apprReq.setDeptCd(apprUser.getDept().getDeptCd()); .gubunNm(CommonUtils.getCodeNm(gubunCodes, apprReqRequest.getGubunCd()))
apprReq.setDeptNm(apprUser.getDept().getDeptNm()); .attendCd(apprReqRequest.getAttendCd())
apprReqs.add(apprReq); .attendNm(CommonUtils.getCodeNm(attendCodes, apprReqRequest.getAttendCd()))
apprOrd.incrementAndGet(); .deptCd(apprUser.getDept().getDeptCd())
} else { .deptNm(apprUser.getDept().getDeptNm())
apprReqs.add(ApprReq.builder() .build());
.id(ApprReqId.builder()
.apprNo(getApprMst.getApprNo())
.apprOrd(apprOrd.incrementAndGet())
.build())
.sabun(apprReqRequest.getSabun())
.name(apprReqRequest.getName())
.apprDt("")
.apprStatCd(apprCodeCd)
.apprStat(CommonUtils.getCodeNm(apprCodes, apprCodeCd))
.gubunCd(apprReqRequest.getGubunCd())
.gubunNm(CommonUtils.getCodeNm(gubunCodes, apprReqRequest.getGubunCd()))
.attendCd(apprReqRequest.getAttendCd())
.attendNm(CommonUtils.getCodeNm(attendCodes, apprReqRequest.getAttendCd()))
.deptCd(apprUser.getDept().getDeptCd())
.deptNm(apprUser.getDept().getDeptNm())
.build());
}
}); });
getApprMst.setApprReqs(apprReqs); getApprMst.setApprReqs(apprReqs);