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/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/biz/estimate/EstimateService.java b/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java index d62ad457..4621d767 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 { @@ -1988,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); } @@ -1998,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<>( @@ -2315,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) { @@ -2992,7 +2992,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); 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 ac3ac90c..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; + } + /** * 물건정보 메인 목록 조회 * @@ -378,6 +386,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 +473,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 +555,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"))); 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/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");
     }
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}
     
 
+    
+