수수료 조회 수정
This commit is contained in:
+45
-31
@@ -6,6 +6,7 @@ import com.eactive.apim.portal.apps.commission.dto.CommissionSearch;
|
|||||||
import com.eactive.apim.portal.apps.commission.exception.ErrorUtil;
|
import com.eactive.apim.portal.apps.commission.exception.ErrorUtil;
|
||||||
import com.eactive.apim.portal.apps.commission.service.ExternalService;
|
import com.eactive.apim.portal.apps.commission.service.ExternalService;
|
||||||
import com.eactive.apim.portal.common.util.SecurityUtil;
|
import com.eactive.apim.portal.common.util.SecurityUtil;
|
||||||
|
import com.eactive.apim.portal.portalproperty.service.PortalPropertyService;
|
||||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -16,7 +17,6 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import org.apache.commons.collections.MapUtils;
|
import org.apache.commons.collections.MapUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.security.access.annotation.Secured;
|
import org.springframework.security.access.annotation.Secured;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
@@ -38,14 +38,7 @@ public class CommissionController {
|
|||||||
private final Logger log = LoggerFactory.getLogger(CommissionController.class);
|
private final Logger log = LoggerFactory.getLogger(CommissionController.class);
|
||||||
|
|
||||||
private final ExternalService externalService;
|
private final ExternalService externalService;
|
||||||
|
private final PortalPropertyService portalPropertyService;
|
||||||
@Value("${obm-url:http://localhost:8080}")
|
|
||||||
private String obmUrl;
|
|
||||||
|
|
||||||
@Value("${provider-code:100001-01}")
|
|
||||||
private String providerCode;
|
|
||||||
|
|
||||||
// ==================== View Controllers ====================
|
|
||||||
|
|
||||||
@GetMapping("/manage")
|
@GetMapping("/manage")
|
||||||
public String commissionManagePage(Model model) {
|
public String commissionManagePage(Model model) {
|
||||||
@@ -66,11 +59,10 @@ public class CommissionController {
|
|||||||
search.setYear(year);
|
search.setYear(year);
|
||||||
search.setMonth(month);
|
search.setMonth(month);
|
||||||
|
|
||||||
search.setProvider(providerCode);
|
|
||||||
|
|
||||||
if (!StringUtils.isEmpty(search.getPartnerCode())) {
|
if (!StringUtils.isEmpty(search.getPartnerCode())) {
|
||||||
try {
|
try {
|
||||||
String url = obmUrl + Constants.COMMISSION_URL;
|
String obmUrl = portalPropertyService.getPortalPropertiesAsMap("Portal").getOrDefault("obp.obm.url", "");
|
||||||
|
String url = obmUrl + Constants.COMMISSION_PRINT_URL;
|
||||||
String result = externalService.getResponseHttpPost(url, toJson(search));
|
String result = externalService.getResponseHttpPost(url, toJson(search));
|
||||||
HashMap<String, Object> returnObj = new ObjectMapper().readValue(result, HashMap.class);
|
HashMap<String, Object> returnObj = new ObjectMapper().readValue(result, HashMap.class);
|
||||||
|
|
||||||
@@ -85,10 +77,10 @@ public class CommissionController {
|
|||||||
search.setPartnerCode("000002-02");
|
search.setPartnerCode("000002-02");
|
||||||
String togetherResult = externalService.getResponseHttpPost(url, toJson(search));
|
String togetherResult = externalService.getResponseHttpPost(url, toJson(search));
|
||||||
|
|
||||||
HashMap<String, Object> togetherLendingReturnObj = new ObjectMapper().readValue(togetherResult, HashMap.class);
|
HashMap togetherLendingReturnObj = new ObjectMapper().readValue(togetherResult, HashMap.class);
|
||||||
log.debug("togetherLendingReturnObj : " + togetherLendingReturnObj.toString());
|
log.debug("togetherLendingReturnObj : " + togetherLendingReturnObj.toString());
|
||||||
if (!StringUtils.isEmpty(togetherLendingReturnObj.get("error"))) {
|
if (!StringUtils.isEmpty(togetherLendingReturnObj.get("error"))) {
|
||||||
HashMap<String, Object> error = (HashMap) togetherLendingReturnObj.get("error");
|
HashMap error = (HashMap) togetherLendingReturnObj.get("error");
|
||||||
model.addAttribute("error", error.get("message").toString());
|
model.addAttribute("error", error.get("message").toString());
|
||||||
return "apps/commission/commissionPrint";
|
return "apps/commission/commissionPrint";
|
||||||
}
|
}
|
||||||
@@ -119,11 +111,11 @@ public class CommissionController {
|
|||||||
@PostMapping()
|
@PostMapping()
|
||||||
public ResponseEntity<?> list(@RequestBody CommissionSearch search) {
|
public ResponseEntity<?> list(@RequestBody CommissionSearch search) {
|
||||||
CommissionDTO commissionDTO = null;
|
CommissionDTO commissionDTO = null;
|
||||||
search.setProvider(providerCode);
|
|
||||||
search.setPartnerCode(SecurityUtil.getUserOrg().getOrgCode());
|
search.setPartnerCode(SecurityUtil.getUserOrg().getOrgCode());
|
||||||
|
|
||||||
if (!StringUtils.isEmpty(search.getPartnerCode())) {
|
if (!StringUtils.isEmpty(search.getPartnerCode())) {
|
||||||
try {
|
try {
|
||||||
|
String obmUrl = portalPropertyService.getPortalPropertiesAsMap("Portal").getOrDefault("obp.obm.url", "");
|
||||||
String url = obmUrl + Constants.COMMISSION_URL;
|
String url = obmUrl + Constants.COMMISSION_URL;
|
||||||
String result = externalService.getResponseHttpPost(url, toJson(search));
|
String result = externalService.getResponseHttpPost(url, toJson(search));
|
||||||
HashMap<String, Object> returnObj = new ObjectMapper().readValue(result, HashMap.class);
|
HashMap<String, Object> returnObj = new ObjectMapper().readValue(result, HashMap.class);
|
||||||
@@ -170,6 +162,28 @@ public class CommissionController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Safely parse double value from HashMap
|
||||||
|
* Handles both numeric types and string representations
|
||||||
|
*/
|
||||||
|
private double safeGetDouble(HashMap<String, Object> map, String key) {
|
||||||
|
Object value = map.get(key);
|
||||||
|
if (value == null) {
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if (value instanceof Number) {
|
||||||
|
return ((Number) value).doubleValue();
|
||||||
|
} else if (value instanceof String) {
|
||||||
|
return Double.parseDouble((String) value);
|
||||||
|
}
|
||||||
|
return 0.0;
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
log.warn("Failed to parse double value for key: {} with value: {}", key, value);
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public HashMap<String, Object> mergeCommissionData(HashMap<String, Object> o1, HashMap<String, Object> o2) {
|
public HashMap<String, Object> mergeCommissionData(HashMap<String, Object> o1, HashMap<String, Object> o2) {
|
||||||
|
|
||||||
HashMap<String, Object> mergeMap = new HashMap<String, Object>();
|
HashMap<String, Object> mergeMap = new HashMap<String, Object>();
|
||||||
@@ -182,22 +196,22 @@ public class CommissionController {
|
|||||||
} else {
|
} else {
|
||||||
resultStatus = o2Status;
|
resultStatus = o2Status;
|
||||||
}
|
}
|
||||||
double apiTotalValueSum = MapUtils.getDouble(o1, "apiTotalValueSum") + MapUtils.getDouble(o2, "apiTotalValueSum");
|
double apiTotalValueSum = safeGetDouble(o1, "apiTotalValueSum") + safeGetDouble(o2, "apiTotalValueSum");
|
||||||
double apiSum = MapUtils.getDouble(o1, "apiSum") + MapUtils.getDouble(o2, "apiSum");
|
double apiSum = safeGetDouble(o1, "apiSum") + safeGetDouble(o2, "apiSum");
|
||||||
double apiTotalValueSum2 = MapUtils.getDouble(o1, "apiTotalValueSum2") + MapUtils.getDouble(o2, "apiTotalValueSum2");
|
double apiTotalValueSum2 = safeGetDouble(o1, "apiTotalValueSum2") + safeGetDouble(o2, "apiTotalValueSum2");
|
||||||
double apiSum2 = MapUtils.getDouble(o1, "apiSum2") + MapUtils.getDouble(o2, "apiSum2");
|
double apiSum2 = safeGetDouble(o1, "apiSum2") + safeGetDouble(o2, "apiSum2");
|
||||||
double productTotalValueCountSum = MapUtils.getDouble(o1, "productTotalValueCountSum") + MapUtils.getDouble(o2, "productTotalValueCountSum");
|
double productTotalValueCountSum = safeGetDouble(o1, "productTotalValueCountSum") + safeGetDouble(o2, "productTotalValueCountSum");
|
||||||
double productTotalValueAmountSum = MapUtils.getDouble(o1, "productTotalValueAmountSum") + MapUtils.getDouble(o2, "productTotalValueAmountSum");
|
double productTotalValueAmountSum = safeGetDouble(o1, "productTotalValueAmountSum") + safeGetDouble(o2, "productTotalValueAmountSum");
|
||||||
double productSum = MapUtils.getDouble(o1, "productSum") + MapUtils.getDouble(o2, "productSum");
|
double productSum = safeGetDouble(o1, "productSum") + safeGetDouble(o2, "productSum");
|
||||||
double productTotalValueCountSum2 = MapUtils.getDouble(o1, "productTotalValueCountSum2") + MapUtils.getDouble(o2, "productTotalValueCountSum2");
|
double productTotalValueCountSum2 = safeGetDouble(o1, "productTotalValueCountSum2") + safeGetDouble(o2, "productTotalValueCountSum2");
|
||||||
double productTotalValueAmountSum2 = MapUtils.getDouble(o1, "productTotalValueAmountSum2") + MapUtils.getDouble(o2, "productTotalValueAmountSum2");
|
double productTotalValueAmountSum2 = safeGetDouble(o1, "productTotalValueAmountSum2") + safeGetDouble(o2, "productTotalValueAmountSum2");
|
||||||
double productSum2 = MapUtils.getDouble(o1, "productSum2") + MapUtils.getDouble(o2, "productSum2");
|
double productSum2 = safeGetDouble(o1, "productSum2") + safeGetDouble(o2, "productSum2");
|
||||||
double totalValueCountSum = MapUtils.getDouble(o1, "totalValueCountSum") + MapUtils.getDouble(o2, "totalValueCountSum");
|
double totalValueCountSum = safeGetDouble(o1, "totalValueCountSum") + safeGetDouble(o2, "totalValueCountSum");
|
||||||
double totalValueCountSum2 = MapUtils.getDouble(o1, "totalValueCountSum2") + MapUtils.getDouble(o2, "totalValueCountSum2");
|
double totalValueCountSum2 = safeGetDouble(o1, "totalValueCountSum2") + safeGetDouble(o2, "totalValueCountSum2");
|
||||||
double totalValueAmountSum = MapUtils.getDouble(o1, "totalValueAmountSum") + MapUtils.getDouble(o2, "totalValueAmountSum");
|
double totalValueAmountSum = safeGetDouble(o1, "totalValueAmountSum") + safeGetDouble(o2, "totalValueAmountSum");
|
||||||
double totalValueAmountSum2 = MapUtils.getDouble(o1, "totalValueAmountSum2") + MapUtils.getDouble(o2, "totalValueAmountSum2");
|
double totalValueAmountSum2 = safeGetDouble(o1, "totalValueAmountSum2") + safeGetDouble(o2, "totalValueAmountSum2");
|
||||||
double sum = MapUtils.getDouble(o1, "sum") + MapUtils.getDouble(o2, "sum");
|
double sum = safeGetDouble(o1, "sum") + safeGetDouble(o2, "sum");
|
||||||
double sum2 = MapUtils.getDouble(o1, "sum2") + MapUtils.getDouble(o2, "sum2");
|
double sum2 = safeGetDouble(o1, "sum2") + safeGetDouble(o2, "sum2");
|
||||||
|
|
||||||
List<Map> o1List = (ArrayList) o1.get("list");
|
List<Map> o1List = (ArrayList) o1.get("list");
|
||||||
List<Map> o2pList = (ArrayList) o2.get("list");
|
List<Map> o2pList = (ArrayList) o2.get("list");
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.eactive.apim.portal.apps.commission.dto;
|
package com.eactive.apim.portal.apps.commission.dto;
|
||||||
|
|
||||||
import com.eactive.apim.portal.portalorg.entity.PortalOrg;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -15,7 +14,4 @@ public class CommissionSearch {
|
|||||||
|
|
||||||
private String partnerCode;
|
private String partnerCode;
|
||||||
|
|
||||||
private PortalOrg organization;
|
|
||||||
|
|
||||||
private String provider;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
package com.eactive.apim.portal.apps.commission.service;
|
package com.eactive.apim.portal.apps.commission.service;
|
||||||
|
|
||||||
import com.eactive.apim.portal.apps.commission.constant.Constants;
|
import com.eactive.apim.portal.apps.commission.constant.Constants;
|
||||||
|
import com.eactive.apim.portal.portalproperty.service.PortalPropertyService;
|
||||||
|
import java.util.Map;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.http.HttpEntity;
|
import org.springframework.http.HttpEntity;
|
||||||
@@ -22,16 +25,13 @@ import org.springframework.web.client.RestTemplate;
|
|||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Transactional
|
@Transactional
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class ExternalService {
|
public class ExternalService {
|
||||||
|
|
||||||
private final Logger log = LoggerFactory.getLogger(ExternalService.class);
|
private final Logger log = LoggerFactory.getLogger(ExternalService.class);
|
||||||
|
|
||||||
private final RestTemplate restTemplate;
|
private final RestTemplate restTemplate;
|
||||||
|
private final PortalPropertyService portalPropertyService;
|
||||||
@Inject
|
|
||||||
public ExternalService(RestTemplate restTemplate) {
|
|
||||||
this.restTemplate = restTemplate;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HTTP POST 요청을 통해 외부 API를 호출하고 응답을 받습니다.
|
* HTTP POST 요청을 통해 외부 API를 호출하고 응답을 받습니다.
|
||||||
@@ -42,11 +42,14 @@ public class ExternalService {
|
|||||||
*/
|
*/
|
||||||
public String getResponseHttpPost(String url, String payload) {
|
public String getResponseHttpPost(String url, String payload) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
Map<String, String> portalProperties = portalPropertyService.getPortalPropertiesAsMap("Portal");
|
||||||
|
|
||||||
// HTTP 헤더 설정
|
// HTTP 헤더 설정
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||||
headers.set(Constants.APIM_FOR_OBP_KEY, Constants.APIM_FOR_OBP_VALUE);
|
headers.set(Constants.APIM_FOR_OBP_KEY, portalProperties.getOrDefault("obp.api_key","APIMPT-0002-QVBJTVBULTAwMDI="));
|
||||||
headers.set(Constants.APIM_CODE_FOR_OBP_KEY, Constants.APIM_CODE_FOR_OBP_VALUE);
|
headers.set(Constants.APIM_CODE_FOR_OBP_KEY, portalProperties.getOrDefault("obp.partner_code","100001-01"));
|
||||||
|
|
||||||
// HTTP 요청 엔티티 생성 (헤더 + 본문)
|
// HTTP 요청 엔티티 생성 (헤더 + 본문)
|
||||||
HttpEntity<String> requestEntity = new HttpEntity<>(payload, headers);
|
HttpEntity<String> requestEntity = new HttpEntity<>(payload, headers);
|
||||||
|
|||||||
@@ -49,9 +49,11 @@ public final class SecurityUtil {
|
|||||||
|
|
||||||
public static PortalOrgDTO getUserOrg() {
|
public static PortalOrgDTO getUserOrg() {
|
||||||
PortalOrgDTO portalOrgDTO = new PortalOrgDTO();
|
PortalOrgDTO portalOrgDTO = new PortalOrgDTO();
|
||||||
if (Objects.requireNonNull(getPortalAuthenticatedUser()).getPortalOrg() != null) {
|
PortalAuthenticatedUser portalAuthenticatedUser = getPortalAuthenticatedUser();
|
||||||
portalOrgDTO.setOrgName(getPortalAuthenticatedUser().getPortalOrg().getOrgName());
|
if (Objects.requireNonNull(portalAuthenticatedUser).getPortalOrg() != null) {
|
||||||
portalOrgDTO.setId(getPortalAuthenticatedUser().getPortalOrg().getId());
|
portalOrgDTO.setOrgName(portalAuthenticatedUser.getPortalOrg().getOrgName());
|
||||||
|
portalOrgDTO.setId(portalAuthenticatedUser.getPortalOrg().getId());
|
||||||
|
portalOrgDTO.setOrgCode(portalAuthenticatedUser.getPortalOrg().getOrgCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
return portalOrgDTO;
|
return portalOrgDTO;
|
||||||
|
|||||||
Reference in New Issue
Block a user