From 3d9d326daa355ec662841462df7a17b6430c12ff Mon Sep 17 00:00:00 2001 From: "LAPTOP-L3VE7KK2\\USER" Date: Mon, 20 Jan 2025 18:19:16 +0900 Subject: [PATCH] =?UTF-8?q?PC=20=ED=9A=8C=EB=A1=9C=EA=B5=AC=EC=84=B1?= =?UTF-8?q?=EB=8F=84=20=EC=B2=98=EB=A6=AC=20API=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qcast/biz/estimate/EstimateService.java | 84 ++++++++++++++++++- 1 file changed, 81 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java b/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java index 1e40090c..b0ed5ca7 100644 --- a/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java +++ b/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java @@ -41,6 +41,7 @@ import java.io.InputStream; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -584,6 +585,7 @@ public class EstimateService { estimateMapper.deleteEstimateCircuitItemList(estimateRequest); // 견적서 지붕면/아이템 신규 추가 + List allModuleList = new ArrayList(); for (RoofRequest roofRequest : roofList) { roofRequest.setObjectNo(estimateRequest.getObjectNo()); roofRequest.setPlanNo(estimateRequest.getPlanNo()); @@ -611,6 +613,8 @@ public class EstimateService { itemRequest.setAmount("1"); roofItemList.add(itemRequest); } + + allModuleList.add(itemRequest); } for (ItemRequest itemRequest : roofItemList) { @@ -622,12 +626,14 @@ public class EstimateService { } } + // 견적서 PCS 아이템 회로 구성 + List circuitPcsItemList = + this.getPcsCircuitList(circuitItemList, allModuleList); + // 견적서 회로구성 아이템 신규 추가 - for (ItemRequest circuitItemRequest : circuitItemList) { + for (ItemRequest circuitItemRequest : circuitPcsItemList) { circuitItemRequest.setObjectNo(estimateRequest.getObjectNo()); circuitItemRequest.setPlanNo(estimateRequest.getPlanNo()); - circuitItemRequest.setItemId(circuitItemRequest.getItemId()); - circuitItemRequest.setCircuitCfg(circuitItemRequest.getCircuitCfg()); estimateMapper.insertEstimateCircuitItem(circuitItemRequest); } @@ -2135,4 +2141,76 @@ public class EstimateService { } return cnt; } + + /** + * PC 회로 구성도 설정 + * + * @param pcsItemList + * @param moduleList + * @return + */ + private List getPcsCircuitList( + List pcsItemList, List moduleList) { + + if (pcsItemList != null && pcsItemList.size() > 0) { + if (pcsItemList.size() == 1) { + pcsItemList.get(0).setCircuitCfg(this.getPcsCircuitCtg(moduleList)); + } else { + if (moduleList != null && moduleList.size() > 0) { + for (ItemRequest data : pcsItemList) { + String val = data.getItemId(); + + List resultList = + moduleList.stream() + .filter(t -> StringUtils.equals(val, t.getPcItemId())) + .collect(Collectors.toList()); + data.setCircuitCfg(this.getPcsCircuitCtg(resultList)); + } + } + } + } + + return pcsItemList; + } + + /** + * PC 회로구성도 조회 + * + * @param circuitList + * @return + */ + private String getPcsCircuitCtg(List circuitList) { + + String circuitCfg = ""; + + if (circuitList != null && circuitList.size() > 0) { + // ArrayList 생성 변환 + ArrayList list = new ArrayList(); + for (ItemRequest pcsSerItemReq : circuitList) { + list.add(pcsSerItemReq.getCircuit()); + } + + // ArrayList 회로 중복수 오름차순 정렬 + Set set = new HashSet(list); + List setList = new ArrayList<>(set); + + Collections.sort( + setList, + new Comparator() { + @Override + public int compare(String o1, String o2) { + int first = Integer.parseInt(o1.split("-")[0]); + int second = Integer.parseInt(o2.split("-")[0]); + return second > first ? -1 : second < first ? 1 : 0; // 오름차순 정렬 + } + }); + + for (String str : setList) { + if (!StringUtils.isEmpty(circuitCfg)) circuitCfg += ", "; + circuitCfg += Collections.frequency(list, str); + } + } + + return circuitCfg; + } }