PC 회로구성도 처리 API 변경

This commit is contained in:
LAPTOP-L3VE7KK2\USER 2025-01-20 18:19:16 +09:00
parent 23272ffdc5
commit 3d9d326daa

View File

@ -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<ItemRequest> allModuleList = new ArrayList<ItemRequest>();
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<ItemRequest> 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<ItemRequest> getPcsCircuitList(
List<ItemRequest> pcsItemList, List<ItemRequest> 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<ItemRequest> 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<ItemRequest> circuitList) {
String circuitCfg = "";
if (circuitList != null && circuitList.size() > 0) {
// ArrayList 생성 변환
ArrayList<String> list = new ArrayList<String>();
for (ItemRequest pcsSerItemReq : circuitList) {
list.add(pcsSerItemReq.getCircuit());
}
// ArrayList 회로 중복수 오름차순 정렬
Set<String> set = new HashSet<String>(list);
List<String> setList = new ArrayList<>(set);
Collections.sort(
setList,
new Comparator<String>() {
@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;
}
}