Compare commits
7 Commits
0b57a90d51
...
0bbead4fc5
| Author | SHA1 | Date | |
|---|---|---|---|
| 0bbead4fc5 | |||
| 0b3603d138 | |||
| 33a4a580e7 | |||
| 2fc55f3a24 | |||
| cd047bbeed | |||
| 8ce07e71df | |||
| d69a9253d6 |
@ -6,6 +6,7 @@ import com.interplug.qcast.biz.displayItem.dto.BomSyncResponse;
|
||||
import com.interplug.qcast.util.InterfaceQsp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import org.springframework.batch.core.Job;
|
||||
import org.springframework.batch.core.JobExecutionListener;
|
||||
@ -62,9 +63,16 @@ public class BomConfiguration implements JobExecutionListener {
|
||||
this.bomSyncList =
|
||||
interfaceQsp.callApiData(
|
||||
HttpMethod.GET, qspInterfaceUrl, null, new TypeReference<List<BomSyncResponse>>() {});
|
||||
return (bomSyncList != null)
|
||||
? new ListItemReader<>(bomSyncList)
|
||||
: new ListItemReader<>(Collections.emptyList());
|
||||
if (bomSyncList == null) {
|
||||
return new ListItemReader<>(Collections.emptyList());
|
||||
}
|
||||
// 2026-05-20 청크 경계에서 같은 키 A/D 가 분리되어 A 가 먼저 MERGE 된 뒤
|
||||
// 다음 청크의 D 가 그것을 삭제해버리는 리스크를 차단하기 위해,
|
||||
// 전체 리스트를 statCd='D' 우선으로 정렬한다. (Spring Batch 는 청크를 순차 처리하므로
|
||||
// 모든 D 청크가 끝난 뒤에 A/U 청크가 시작되어 전역적으로 'A 가 이김' 이 보장됨)
|
||||
bomSyncList.sort(
|
||||
Comparator.comparingInt((BomSyncResponse b) -> "D".equals(b.getStatCd()) ? 0 : 1));
|
||||
return new ListItemReader<>(bomSyncList);
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
@ -1916,17 +1916,29 @@ public class EstimateService {
|
||||
// schDrawingFlg / schWeightFlg(위쪽 분기)로 선택된 부속 시트
|
||||
// (割付図・系統図 / 架台図 / 発電シミュレーション / 重量算出シート 등)는 그대로 유지한다.
|
||||
if ("EXCEL2".equals(estimateRequest.getSchDownload())) {
|
||||
// 旧見積書書式: 신 양식 견적서 시트(見積書) 제거 후, 구 양식(見積書.)을 맨 앞으로 이동
|
||||
// 旧見積書書式: 신 양식 견적서 시트(見積書) 제거 후, 구 양식(御見積書)을 맨 앞으로 이동
|
||||
// 2026-06-01 시트명 변경: 見積書. → 御見積書
|
||||
safeRemoveSheet(workbook, "見積書");
|
||||
if (workbook.getSheetIndex("見積書.") > 0) {
|
||||
workbook.setSheetOrder("見積書.", 0);
|
||||
if (workbook.getSheetIndex("御見積書") > 0) {
|
||||
workbook.setSheetOrder("御見積書", 0);
|
||||
}
|
||||
} else {
|
||||
// 신(통상) 견적서 양식: 구 양식 견적서 시트(見積書.)만 제거
|
||||
safeRemoveSheet(workbook, "見積書.");
|
||||
// 신(통상) 견적서 양식: 구 양식 견적서 시트(御見積書)만 제거
|
||||
safeRemoveSheet(workbook, "御見積書");
|
||||
}
|
||||
safeRemoveSheet(workbook, "特異事項");
|
||||
|
||||
// 2026-06-04 시트 제거/정렬 후 활성 시트가 첫 시트가 아니게 되는 문제 보정
|
||||
// 템플릿 첫 시트(見積書)에 tabSelected 가 걸려 있어, EXCEL2 에서 해당 시트 제거 시
|
||||
// 선택 상태가 사라져 다운로드 결과가 두 번째 시트부터 열림 → 첫 시트로 강제 고정
|
||||
if (workbook.getNumberOfSheets() > 0) {
|
||||
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
|
||||
workbook.getSheetAt(i).setSelected(false);
|
||||
}
|
||||
workbook.setActiveSheet(0);
|
||||
workbook.getSheetAt(0).setSelected(true);
|
||||
}
|
||||
|
||||
applyExcelNumberFormat(workbook);
|
||||
// applyExcelFixedNumberFormat(workbook, Arrays.asList("H25", "C12"), "#,##0.00");
|
||||
// applyExcelFixedNumberFormat(workbook, Arrays.asList("X32", "I44"), "#,##0.00");
|
||||
|
||||
@ -197,6 +197,9 @@ public class EstimateResponse {
|
||||
@Schema(description = "지역명")
|
||||
private String areaName;
|
||||
|
||||
@Schema(description = "계약조건")
|
||||
private String conType;
|
||||
|
||||
@Schema(description = "물건정보 비고")
|
||||
private String objectRemarks;
|
||||
|
||||
|
||||
@ -64,6 +64,7 @@
|
||||
, B.SALE_STORE_ID AS SAP_SALE_STORE_ID
|
||||
, B.SAP_SALES_STORE_CD
|
||||
, OI.AREA_ID
|
||||
, OI.CON_TYPE
|
||||
, ISNULL(OI.COLD_REGION_FLG, '0') AS COLD_REGION_FLG
|
||||
, ISNULL(OI.SALT_AREA_FLG, '0') AS SALT_AREA_FLG
|
||||
, SS.FIRST_AGENT_ID
|
||||
@ -466,7 +467,9 @@
|
||||
GROUP BY CIRCUIT_NO, CIRCUIT_ITEM_ID, CIRCUIT_CFG, CIRCUIT_SUM, PNOW_W
|
||||
)
|
||||
|
||||
SELECT ROUND((SUM(MIN_VALUE) / 1000), 4) AS CERT_VOL_KW
|
||||
-- 2026-05-22: FLOAT ROUND 결과의 IEEE754 잔여(예: 5.5600000000000005) 차단 위해 DECIMAL 캐스팅
|
||||
-- 2026-06-02: モジュール容量(totVolKw, setScale(3,FLOOR))과 동일 표시 위해 3자리 절사 + DECIMAL(18,3) 마감 (ROUND 3번째 인자=1 → 절사)
|
||||
SELECT CAST(ROUND((SUM(MIN_VALUE) / 1000), 3, 1) AS DECIMAL(18,3)) AS CERT_VOL_KW
|
||||
FROM CIRCUIT_AGG
|
||||
|
||||
]]>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user