From 73da60a0173dc88db131631d8fea81d32e66c931 Mon Sep 17 00:00:00 2001 From: ysCha Date: Wed, 1 Apr 2026 13:29:25 +0900 Subject: [PATCH 1/5] =?UTF-8?q?java=20=EB=B2=84=EC=A0=84=20=EB=A7=9E?= =?UTF-8?q?=EC=B6=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qcast/batch/estimate/EstimateSyncConfiguration.java | 4 +++- .../com/interplug/qcast/biz/estimate/EstimateService.java | 6 ++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/interplug/qcast/batch/estimate/EstimateSyncConfiguration.java b/src/main/java/com/interplug/qcast/batch/estimate/EstimateSyncConfiguration.java index e6a340c6..801d0a73 100644 --- a/src/main/java/com/interplug/qcast/batch/estimate/EstimateSyncConfiguration.java +++ b/src/main/java/com/interplug/qcast/batch/estimate/EstimateSyncConfiguration.java @@ -4,6 +4,7 @@ import com.interplug.qcast.biz.estimate.EstimateService; import com.interplug.qcast.biz.estimate.dto.EstimateSyncResponse; import com.interplug.qcast.biz.estimate.dto.PlanSyncResponse; import com.interplug.qcast.util.InterfaceQsp; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.springframework.batch.core.Job; @@ -77,7 +78,8 @@ public class EstimateSyncConfiguration implements JobExecutionListener { @Bean public ItemWriter estimateSyncWriter() { return items -> { - estimateService.setEstimateSyncSave((List) items.getItems()); + List planList = new ArrayList<>(items.getItems()); + estimateService.setEstimateSyncSave(planList); }; } } 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 d62ad457..b1a22c3c 100644 --- a/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java +++ b/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java @@ -20,7 +20,6 @@ import com.interplug.qcast.biz.canvaspopupstatus.CanvasPopupStatusService; import com.interplug.qcast.biz.canvaspopupstatus.dto.CanvasPopupStatus; import com.interplug.qcast.biz.estimate.dto.*; import com.interplug.qcast.biz.pwrGnrSimulation.dto.PwrGnrSimRoofResponse; -import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; @@ -32,7 +31,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; -import org.jxls.util.Util; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpMethod; @@ -1445,7 +1443,7 @@ public class EstimateService { InputStream imageInputStream = getClass().getResourceAsStream(imagePath); if (imageInputStream != null) { - byte[] degImg = Util.toByteArray(imageInputStream); + byte[] degImg = imageInputStream.readAllBytes(); roofInfoResponse.setCompasDegImg(degImg); imageInputStream.close(); } else { @@ -2992,7 +2990,7 @@ public class EstimateService { } } try (InputStream imageInputStream = connection.getInputStream()) { - return Util.toByteArray(imageInputStream); + return imageInputStream.readAllBytes(); } } catch (Exception e) { log.warn("Failed to load drawing image. url={}", url, e); -- 2.47.2 From 9b7620637ede0c94e342ffdd72b9186605e5d910 Mon Sep 17 00:00:00 2001 From: ysCha Date: Wed, 1 Apr 2026 13:44:37 +0900 Subject: [PATCH 2/5] =?UTF-8?q?java=20=EB=B2=84=EC=A0=84=20=EB=A7=9E?= =?UTF-8?q?=EC=B6=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qcast/biz/estimate/EstimateService.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 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 b1a22c3c..4621d767 100644 --- a/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java +++ b/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java @@ -1986,7 +1986,7 @@ public class EstimateService { if ("YJSS".equals(estimateType)) { pkgTotPrice = pkgAsp.multiply(totVol); - pkgTotPrice = pkgTotPrice.setScale(0, BigDecimal.ROUND_HALF_UP); + pkgTotPrice = pkgTotPrice.setScale(0, RoundingMode.HALF_UP); supplyPrice = supplyPrice.add(pkgTotPrice); } @@ -1996,14 +1996,14 @@ public class EstimateService { totPrice = totPrice.add(supplyPrice.add(vatPrice)); estimateResponse.setPkgTotPrice(String.valueOf(pkgTotPrice)); - estimateResponse.setTotAmount(String.valueOf(totAmount.setScale(0, BigDecimal.ROUND_HALF_UP))); + estimateResponse.setTotAmount(String.valueOf(totAmount.setScale(0, RoundingMode.HALF_UP))); estimateResponse.setTotVol(String.valueOf(totVol)); estimateResponse.setTotVolKw(String - .valueOf(totVol.multiply(new BigDecimal("0.001")).setScale(3, BigDecimal.ROUND_FLOOR))); + .valueOf(totVol.multiply(new BigDecimal("0.001")).setScale(3, RoundingMode.FLOOR))); estimateResponse - .setSupplyPrice(String.valueOf(supplyPrice.setScale(0, BigDecimal.ROUND_HALF_UP))); - estimateResponse.setVatPrice(String.valueOf(vatPrice.setScale(0, BigDecimal.ROUND_HALF_UP))); - estimateResponse.setTotPrice(String.valueOf(totPrice.setScale(0, BigDecimal.ROUND_HALF_UP))); + .setSupplyPrice(String.valueOf(supplyPrice.setScale(0, RoundingMode.HALF_UP))); + estimateResponse.setVatPrice(String.valueOf(vatPrice.setScale(0, RoundingMode.HALF_UP))); + estimateResponse.setTotPrice(String.valueOf(totPrice.setScale(0, RoundingMode.HALF_UP))); } private static final Set EXCEL_ITEM_NUMBER_FIELDS = new HashSet<>( @@ -2313,9 +2313,11 @@ public class EstimateService { .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); response = om.readValue(strResponse, EstimateApiResponse.class); + @SuppressWarnings("unchecked") Map result = (Map) response.getData(); if (result != null) { + @SuppressWarnings("unchecked") List> succList = (List>) result.get("successList"); for (Map succ : succList) { -- 2.47.2 From d68b1270011a3d122e59142d4ab338fd138904d7 Mon Sep 17 00:00:00 2001 From: ysCha Date: Wed, 1 Apr 2026 14:27:04 +0900 Subject: [PATCH 3/5] =?UTF-8?q?java=20=EB=B2=84=EC=A0=84=20=EB=A7=9E?= =?UTF-8?q?=EC=B6=A42?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../batch/estimate/PlanConfrimConfiguration.java | 3 ++- .../qcast/batch/master/BomConfiguration.java | 3 ++- .../qcast/batch/master/MaterialConfiguration.java | 2 +- .../qcast/batch/master/PriceJobConfiguration.java | 3 ++- .../master/SpecialNoteDispItemJobConfiguration.java | 3 ++- .../qcast/batch/master/StoreJobConfiguration.java | 3 ++- .../qcast/batch/system/AdminUserConfiguration.java | 3 ++- .../batch/system/BusinessChargerConfiguration.java | 3 ++- .../qcast/batch/system/CommonCodeConfiguration.java | 3 ++- .../qcast/config/json/HtmlCharacterEscapes.java | 4 ++-- .../java/com/interplug/qcast/util/InterfaceQsp.java | 13 ++++++++++--- 11 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/interplug/qcast/batch/estimate/PlanConfrimConfiguration.java b/src/main/java/com/interplug/qcast/batch/estimate/PlanConfrimConfiguration.java index 36afa1fb..36964244 100644 --- a/src/main/java/com/interplug/qcast/batch/estimate/PlanConfrimConfiguration.java +++ b/src/main/java/com/interplug/qcast/batch/estimate/PlanConfrimConfiguration.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.interplug.qcast.biz.estimate.EstimateService; import com.interplug.qcast.biz.estimate.dto.PlanSyncResponse; import com.interplug.qcast.util.InterfaceQsp; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.springframework.batch.core.Job; @@ -74,7 +75,7 @@ public class PlanConfrimConfiguration implements JobExecutionListener { @Bean public ItemWriter planConfirmWriter() { return items -> { - estimateService.setPlanConfirmSyncSave((List) items.getItems()); + estimateService.setPlanConfirmSyncSave(new ArrayList<>(items.getItems())); }; } } diff --git a/src/main/java/com/interplug/qcast/batch/master/BomConfiguration.java b/src/main/java/com/interplug/qcast/batch/master/BomConfiguration.java index 08320de1..c51147bc 100644 --- a/src/main/java/com/interplug/qcast/batch/master/BomConfiguration.java +++ b/src/main/java/com/interplug/qcast/batch/master/BomConfiguration.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.interplug.qcast.biz.displayItem.DisplayItemService; 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.List; import org.springframework.batch.core.Job; @@ -74,7 +75,7 @@ public class BomConfiguration implements JobExecutionListener { @Bean public ItemWriter bomWriter() { return items -> { - displayItemService.setBomSyncSave((List) items.getItems()); + displayItemService.setBomSyncSave(new ArrayList<>(items.getItems())); }; } } diff --git a/src/main/java/com/interplug/qcast/batch/master/MaterialConfiguration.java b/src/main/java/com/interplug/qcast/batch/master/MaterialConfiguration.java index b4e5ccb1..578d8eed 100644 --- a/src/main/java/com/interplug/qcast/batch/master/MaterialConfiguration.java +++ b/src/main/java/com/interplug/qcast/batch/master/MaterialConfiguration.java @@ -103,7 +103,7 @@ public class MaterialConfiguration implements JobExecutionListener { @Bean public ItemWriter materialWriter() { return items -> { - displayItemService.setItemSyncSave((List) items.getItems()); + displayItemService.setItemSyncSave(new ArrayList<>(items.getItems())); }; } } diff --git a/src/main/java/com/interplug/qcast/batch/master/PriceJobConfiguration.java b/src/main/java/com/interplug/qcast/batch/master/PriceJobConfiguration.java index 1843cb04..a57f3181 100644 --- a/src/main/java/com/interplug/qcast/batch/master/PriceJobConfiguration.java +++ b/src/main/java/com/interplug/qcast/batch/master/PriceJobConfiguration.java @@ -4,6 +4,7 @@ import com.interplug.qcast.biz.displayItem.DisplayItemService; import com.interplug.qcast.biz.displayItem.dto.PriceItemSyncResponse; import com.interplug.qcast.biz.displayItem.dto.PriceSyncResponse; import com.interplug.qcast.util.InterfaceQsp; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.function.Consumer; @@ -141,7 +142,7 @@ public class PriceJobConfiguration implements JobExecutionListener { private ItemWriter createWriter(Consumer> processor, String writerName) { return items -> { try { - List itemList = (List) items.getItems(); + List itemList = new ArrayList<>(items.getItems()); processor.accept(itemList); log.info("{}Writer: {} items 처리 완료", writerName, items.size()); } catch (Exception e) { diff --git a/src/main/java/com/interplug/qcast/batch/master/SpecialNoteDispItemJobConfiguration.java b/src/main/java/com/interplug/qcast/batch/master/SpecialNoteDispItemJobConfiguration.java index d1448c5e..c00b4304 100644 --- a/src/main/java/com/interplug/qcast/batch/master/SpecialNoteDispItemJobConfiguration.java +++ b/src/main/java/com/interplug/qcast/batch/master/SpecialNoteDispItemJobConfiguration.java @@ -5,6 +5,7 @@ import com.interplug.qcast.biz.specialNote.dto.SpecialNoteItemRequest; import com.interplug.qcast.biz.specialNote.dto.SpecialNoteRequest; import com.interplug.qcast.biz.specialNote.dto.SpecialNoteSyncResponse; import com.interplug.qcast.util.InterfaceQsp; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.function.Consumer; @@ -157,7 +158,7 @@ public class SpecialNoteDispItemJobConfiguration implements JobExecutionListener private ItemWriter createWriter(Consumer> processor, String writerName) { return items -> { try { - List itemList = (List) items.getItems(); + List itemList = new ArrayList<>(items.getItems()); processor.accept(itemList); log.info("{}Writer: {} items 처리 완료", writerName, items.size()); } catch (Exception e) { diff --git a/src/main/java/com/interplug/qcast/batch/master/StoreJobConfiguration.java b/src/main/java/com/interplug/qcast/batch/master/StoreJobConfiguration.java index 2155bfb1..0ceb5428 100644 --- a/src/main/java/com/interplug/qcast/batch/master/StoreJobConfiguration.java +++ b/src/main/java/com/interplug/qcast/batch/master/StoreJobConfiguration.java @@ -10,6 +10,7 @@ import com.interplug.qcast.biz.user.dto.StoreSyncResponse; import com.interplug.qcast.biz.user.dto.StoreSyncResquest; import com.interplug.qcast.biz.user.dto.UserRequest; import com.interplug.qcast.util.InterfaceQsp; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.function.Consumer; @@ -212,7 +213,7 @@ public class StoreJobConfiguration implements JobExecutionListener { private ItemWriter createWriter(Consumer> processor, String writerName) { return items -> { try { - List itemList = (List) items.getItems(); + List itemList = new ArrayList<>(items.getItems()); processor.accept(itemList); log.info("{}Writer: {} items 처리 완료", writerName, items.size()); } catch (Exception e) { diff --git a/src/main/java/com/interplug/qcast/batch/system/AdminUserConfiguration.java b/src/main/java/com/interplug/qcast/batch/system/AdminUserConfiguration.java index d071c82f..90ad18e8 100644 --- a/src/main/java/com/interplug/qcast/batch/system/AdminUserConfiguration.java +++ b/src/main/java/com/interplug/qcast/batch/system/AdminUserConfiguration.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.interplug.qcast.biz.user.UserService; import com.interplug.qcast.biz.user.dto.AdminUserSyncResponse; import com.interplug.qcast.util.InterfaceQsp; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.springframework.batch.core.Job; @@ -82,7 +83,7 @@ public class AdminUserConfiguration implements JobExecutionListener { @Bean public ItemWriter adminUserWriter() { return items -> { - userService.setAdminUserSyncSave((List) items.getItems()); + userService.setAdminUserSyncSave(new ArrayList<>(items.getItems())); }; } } diff --git a/src/main/java/com/interplug/qcast/batch/system/BusinessChargerConfiguration.java b/src/main/java/com/interplug/qcast/batch/system/BusinessChargerConfiguration.java index 4fc5c61a..df711080 100644 --- a/src/main/java/com/interplug/qcast/batch/system/BusinessChargerConfiguration.java +++ b/src/main/java/com/interplug/qcast/batch/system/BusinessChargerConfiguration.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.interplug.qcast.biz.user.UserService; import com.interplug.qcast.biz.user.dto.BusinessChargerSyncResponse; import com.interplug.qcast.util.InterfaceQsp; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.springframework.batch.core.Job; @@ -78,7 +79,7 @@ public class BusinessChargerConfiguration implements JobExecutionListener { @Bean public ItemWriter businessChargerWriter() { return items -> { - userService.setBusinessChargerSyncSave((List) items.getItems()); + userService.setBusinessChargerSyncSave(new ArrayList<>(items.getItems())); }; } } diff --git a/src/main/java/com/interplug/qcast/batch/system/CommonCodeConfiguration.java b/src/main/java/com/interplug/qcast/batch/system/CommonCodeConfiguration.java index f4d9936f..edcd5b55 100644 --- a/src/main/java/com/interplug/qcast/batch/system/CommonCodeConfiguration.java +++ b/src/main/java/com/interplug/qcast/batch/system/CommonCodeConfiguration.java @@ -1,5 +1,6 @@ package com.interplug.qcast.batch.system; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.function.Consumer; @@ -126,7 +127,7 @@ public class CommonCodeConfiguration implements JobExecutionListener { private ItemWriter createWriter(Consumer> processor, String writerName) { return items -> { try { - List itemList = (List) items.getItems(); + List itemList = new ArrayList<>(items.getItems()); processor.accept(itemList); log.info("{}Writer: {} items 처리 완료", writerName, items.size()); } catch (Exception e) { diff --git a/src/main/java/com/interplug/qcast/config/json/HtmlCharacterEscapes.java b/src/main/java/com/interplug/qcast/config/json/HtmlCharacterEscapes.java index 3e3ac620..c5138cc7 100644 --- a/src/main/java/com/interplug/qcast/config/json/HtmlCharacterEscapes.java +++ b/src/main/java/com/interplug/qcast/config/json/HtmlCharacterEscapes.java @@ -3,7 +3,7 @@ package com.interplug.qcast.config.json; import com.fasterxml.jackson.core.SerializableString; import com.fasterxml.jackson.core.io.CharacterEscapes; import com.fasterxml.jackson.core.io.SerializedString; -import org.apache.commons.lang3.StringEscapeUtils; +import org.springframework.web.util.HtmlUtils; /** *
@@ -50,7 +50,7 @@ public class HtmlCharacterEscapes extends CharacterEscapes {
 			sb.append(String.format("%04x", ch));
 			serializedString = new SerializedString(sb.toString());
 		} else {
-			serializedString = new SerializedString(StringEscapeUtils.escapeHtml4(Character.toString(charAt)));
+			serializedString = new SerializedString(HtmlUtils.htmlEscape(Character.toString(charAt)));
 		}
 
 		return serializedString;
diff --git a/src/main/java/com/interplug/qcast/util/InterfaceQsp.java b/src/main/java/com/interplug/qcast/util/InterfaceQsp.java
index 384b625f..d1c42b3c 100644
--- a/src/main/java/com/interplug/qcast/util/InterfaceQsp.java
+++ b/src/main/java/com/interplug/qcast/util/InterfaceQsp.java
@@ -53,6 +53,7 @@ public class InterfaceQsp {
       // GET 요청 시 requestObject를 쿼리 스트링으로 변환
       if (HttpMethod.GET.equals(httpMethod) && requestObject != null) {
         ObjectMapper om = new ObjectMapper();
+        @SuppressWarnings("unchecked")
         Map params = om.convertValue(requestObject, Map.class); // Object -> Map 변환
         String queryString =
             params.entrySet().stream()
@@ -159,11 +160,17 @@ public class InterfaceQsp {
       }
     }
     if (responseObject == null) {
-      return (T) dataJson;
+      @SuppressWarnings("unchecked")
+      T result = (T) dataJson;
+      return result;
     } else if (responseObject instanceof Class) {
-      return om.readValue(dataJson, (Class) responseObject);
+      @SuppressWarnings("unchecked")
+      Class responseClass = (Class) responseObject;
+      return om.readValue(dataJson, responseClass);
     } else if (responseObject instanceof TypeReference) {
-      return om.readValue(dataJson, (TypeReference) responseObject);
+      @SuppressWarnings("unchecked")
+      TypeReference responseType = (TypeReference) responseObject;
+      return om.readValue(dataJson, responseType);
     } else {
       throw new IllegalArgumentException("Unsupported responseType");
     }
-- 
2.47.2


From 037e320137a21d68f9ce378372d93fcdfd198d6b Mon Sep 17 00:00:00 2001
From: ysCha 
Date: Wed, 1 Apr 2026 14:30:47 +0900
Subject: [PATCH 4/5] =?UTF-8?q?java=20=EB=B2=84=EC=A0=84=20=EB=A7=9E?=
 =?UTF-8?q?=EC=B6=A43?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../java/com/interplug/qcast/biz/object/ObjectService.java | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/interplug/qcast/biz/object/ObjectService.java b/src/main/java/com/interplug/qcast/biz/object/ObjectService.java
index ac3ac90c..f66afc1a 100644
--- a/src/main/java/com/interplug/qcast/biz/object/ObjectService.java
+++ b/src/main/java/com/interplug/qcast/biz/object/ObjectService.java
@@ -378,6 +378,7 @@ public class ObjectService {
                 .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
         response = om.readValue(strResponse, PlanReqResponse.class);
 
+        @SuppressWarnings("unchecked")
         Map map = (Map) response.getResult();
         if ("E".equals(String.valueOf(map.get("resultCode")))) {
           throw new QcastException(ErrorCode.INTERNAL_SERVER_ERROR,
@@ -464,7 +465,8 @@ public class ObjectService {
                     .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
             response = om.readValue(strResponse, PlanReqResponse.class);
 
-            Map map = (Map) response.getResult();
+            @SuppressWarnings("unchecked")
+        Map map = (Map) response.getResult();
             if ("E".equals(String.valueOf(map.get("resultCode")))) {
               throw new QcastException(ErrorCode.INTERNAL_SERVER_ERROR,
                   String.valueOf(map.get("resultMsg")));
@@ -545,7 +547,8 @@ public class ObjectService {
                   .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
           response = om.readValue(strResponse, PlanReqResponse.class);
 
-          Map map = (Map) response.getResult();
+          @SuppressWarnings("unchecked")
+        Map map = (Map) response.getResult();
           if ("E".equals(String.valueOf(map.get("resultCode")))) {
             throw new QcastException(ErrorCode.INTERNAL_SERVER_ERROR,
                 String.valueOf(map.get("resultMsg")));
-- 
2.47.2


From 2b43fad25261e9ff2e7e4888818d44bc8afe7bfc Mon Sep 17 00:00:00 2001
From: ysCha 
Date: Wed, 1 Apr 2026 15:12:15 +0900
Subject: [PATCH 5/5] =?UTF-8?q?[1423]=EC=84=A4=EA=B3=84=20=EA=B0=80?=
 =?UTF-8?q?=EC=A0=B8=EC=98=A4=EA=B8=B0=20=EA=B8=B0=EB=8A=A5=EC=97=90=20?=
 =?UTF-8?q?=EB=8C=80=ED=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../interplug/qcast/biz/object/ObjectController.java  |  7 +++++++
 .../com/interplug/qcast/biz/object/ObjectMapper.java  |  3 +++
 .../com/interplug/qcast/biz/object/ObjectService.java |  8 ++++++++
 .../qcast/biz/object/dto/SaleStoreResponse.java       |  3 +++
 src/main/resources/mappers/object/objectMapper.xml    | 11 +++++++++++
 5 files changed, 32 insertions(+)

diff --git a/src/main/java/com/interplug/qcast/biz/object/ObjectController.java b/src/main/java/com/interplug/qcast/biz/object/ObjectController.java
index bf12d0ac..43efd463 100644
--- a/src/main/java/com/interplug/qcast/biz/object/ObjectController.java
+++ b/src/main/java/com/interplug/qcast/biz/object/ObjectController.java
@@ -63,6 +63,13 @@ public class ObjectController {
     return objectService.selectSaleStoreList(saleStoreId, firstFlg, userId);
   }
 
+  @Operation(description = "1차점 ID 및 판매점명을 조회한다. (saleStoreLevel=2 인 경우)")
+  @GetMapping("/saleStore/{saleStoreId}/firstAgent")
+  @ResponseStatus(HttpStatus.OK)
+  public SaleStoreResponse selectFirstAgentInfo(@PathVariable String saleStoreId) throws Exception {
+    return objectService.selectFirstAgentInfo(saleStoreId);
+  }
+
   @Operation(description = "물건정보 목록을 조회한다.")
   @GetMapping("/list")
   @ResponseStatus(HttpStatus.OK)
diff --git a/src/main/java/com/interplug/qcast/biz/object/ObjectMapper.java b/src/main/java/com/interplug/qcast/biz/object/ObjectMapper.java
index 2a090b77..25103967 100644
--- a/src/main/java/com/interplug/qcast/biz/object/ObjectMapper.java
+++ b/src/main/java/com/interplug/qcast/biz/object/ObjectMapper.java
@@ -25,6 +25,9 @@ public interface ObjectMapper {
   // 판매점 정보 조회
   public SaleStoreResponse selectSaleStoreInfo(String saleStoreId);
 
+  // 1차점 ID/명 조회 (saleStoreLevel = '2' 인 경우)
+  public SaleStoreResponse selectFirstAgentInfo(String saleStoreId);
+
   // 물건정보 메인 목록 조회
   public List selectObjectMainList(ObjectRequest objectRequest);
 
diff --git a/src/main/java/com/interplug/qcast/biz/object/ObjectService.java b/src/main/java/com/interplug/qcast/biz/object/ObjectService.java
index f66afc1a..640de433 100644
--- a/src/main/java/com/interplug/qcast/biz/object/ObjectService.java
+++ b/src/main/java/com/interplug/qcast/biz/object/ObjectService.java
@@ -166,6 +166,14 @@ public class ObjectService {
     return objectMapper.selectSaleStoreInfo(saleStoreId);
   }
 
+  public SaleStoreResponse selectFirstAgentInfo(String saleStoreId) throws Exception {
+    SaleStoreResponse result = objectMapper.selectFirstAgentInfo(saleStoreId);
+    if (result == null) {
+      throw new QcastException(ErrorCode.NOT_FOUND, message.getMessage("common.message.no.data"));
+    }
+    return result;
+  }
+
   /**
    * 물건정보 메인 목록 조회
    *
diff --git a/src/main/java/com/interplug/qcast/biz/object/dto/SaleStoreResponse.java b/src/main/java/com/interplug/qcast/biz/object/dto/SaleStoreResponse.java
index 8884ecd8..60fc775c 100644
--- a/src/main/java/com/interplug/qcast/biz/object/dto/SaleStoreResponse.java
+++ b/src/main/java/com/interplug/qcast/biz/object/dto/SaleStoreResponse.java
@@ -24,6 +24,9 @@ public class SaleStoreResponse {
   @Schema(description = "1차점판매점ID")
   private String firstAgentId;
 
+  @Schema(description = "1차점판매점명")
+  private String firstAgentName;
+
   @Schema(description = "영업사원명")
   private String businessCharger;
 
diff --git a/src/main/resources/mappers/object/objectMapper.xml b/src/main/resources/mappers/object/objectMapper.xml
index 6ccd9396..e68ac8bf 100644
--- a/src/main/resources/mappers/object/objectMapper.xml
+++ b/src/main/resources/mappers/object/objectMapper.xml
@@ -140,6 +140,17 @@
         WHERE A.SALE_STORE_ID = #{saleStoreId}
     
 
+    
+