From 31561200c28c9251a4c038b20a2a1411c8cdd1f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=8C=80=ED=99=98?= Date: Mon, 1 Jun 2026 15:49:41 +0900 Subject: [PATCH] =?UTF-8?q?=EC=84=A4=EC=A0=95=20>=20=EC=9B=90=EA=B0=80=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gcone/setup/cost/mapper/BOCostMapper.java | 34 ++ .../setup/cost/service/BOCostService.java | 94 ++++++ .../domain/gcone/setup/cost/vo/BOCostVO.java | 39 +++ .../mngr/setup/cost/CostController.java | 103 ++++++ .../mapper/gcone/setup/cost/CostMapper.xml | 57 ++++ .../views/mngr/setup/cost/CostPriceUpdtU.jsp | 309 ++++++++++++++++++ 6 files changed, 636 insertions(+) create mode 100644 src/main/java/com/wb/domainserver/domain/gcone/setup/cost/mapper/BOCostMapper.java create mode 100644 src/main/java/com/wb/domainserver/domain/gcone/setup/cost/service/BOCostService.java create mode 100644 src/main/java/com/wb/domainserver/domain/gcone/setup/cost/vo/BOCostVO.java create mode 100644 src/main/java/com/wb/domainserver/domain/mngr/setup/cost/CostController.java create mode 100644 src/main/resources/mybatis/xml/mapper/gcone/setup/cost/CostMapper.xml create mode 100644 src/main/webapp/WEB-INF/views/mngr/setup/cost/CostPriceUpdtU.jsp diff --git a/src/main/java/com/wb/domainserver/domain/gcone/setup/cost/mapper/BOCostMapper.java b/src/main/java/com/wb/domainserver/domain/gcone/setup/cost/mapper/BOCostMapper.java new file mode 100644 index 00000000..128cb288 --- /dev/null +++ b/src/main/java/com/wb/domainserver/domain/gcone/setup/cost/mapper/BOCostMapper.java @@ -0,0 +1,34 @@ +package com.wb.domainserver.domain.gcone.setup.cost.mapper; + +import com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO; +import com.wb.domainserver.util.dataaccess.DataMap; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Mapper +@Repository +public interface BOCostMapper { + + /** + * 원가 설정 목록 조회 + * @param vo + * @return + */ + public List selectBOCostPriceList(BOCostVO vo); + + /** + * 원가 설정 삭제 + * @param vo + * @return + */ + public int deleteBOCostPrice(BOCostVO vo); + + /** + * 원가 설정 추가 + * @param dm + * @return + */ + public int insertBOCostPrice(DataMap dm); +} diff --git a/src/main/java/com/wb/domainserver/domain/gcone/setup/cost/service/BOCostService.java b/src/main/java/com/wb/domainserver/domain/gcone/setup/cost/service/BOCostService.java new file mode 100644 index 00000000..fb04dd03 --- /dev/null +++ b/src/main/java/com/wb/domainserver/domain/gcone/setup/cost/service/BOCostService.java @@ -0,0 +1,94 @@ +package com.wb.domainserver.domain.gcone.setup.cost.service; + +import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService; +import com.wb.domainserver.domain.gcone.setup.cost.mapper.BOCostMapper; +import com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO; +import com.wb.domainserver.exception.WnbtRestException; +import com.wb.domainserver.exception.code.ErrorCode; +import com.wb.domainserver.util.dataaccess.DataMap; +import com.wb.domainserver.util.string.StringUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; + +/** + * 원가 설정 BO Serivce + * + * @author 이대환 + * @version 1.0 + * @see
+ * == (Modification Information) == 개정이력
+ *
+ * 수정일 수정자 수정내용
+ * ------- -------- ---------------------------
+ * 2026-05-29 이대환 최초 생성
+ *
+ * 
+ * @since 2026-05-29 + */ +@Slf4j +@Service +public class BOCostService { + @Autowired + private BOMaComncdService bOMaComncdService; + @Autowired + private BOCostMapper mapper; + + /** + * 원가 설정 목록 조회 + * @param vo + * @return List + */ + public List selectBOCostPriceList(BOCostVO vo) { + List costList = new ArrayList<>(); + costList = mapper.selectBOCostPriceList(vo); + + return costList; + } + + /** + * 원가 설정 수정 + * @param vo + */ + @Transactional + public DataMap updateBOCostPriceSetup(BOCostVO vo) { + DataMap message = new DataMap(); + + try { + mapper.deleteBOCostPrice(vo); + + DataMap paramMap = new DataMap(); + paramMap.put("regusr", vo.getRegusr()); + + int[] ctInnbArr = vo.getCtInnbArr(); + if (!ObjectUtils.isEmpty(ctInnbArr)) { + for (int i = 0; i < ctInnbArr.length; i++) { + paramMap.put("stdrDe", vo.getStdrDeArr()[i]); + paramMap.put("usdRate", vo.getUsdRateArr()[i]); + paramMap.put("jpDlvyCt", vo.getJpDlvyCtArr()[i]); + paramMap.put("intlDlvyAmt", vo.getIntlDlvyAmtArr()[i]); + paramMap.put("pltfomFee", vo.getPltfomFeeArr()[i]); + paramMap.put("expctTax", vo.getExpctTaxArr()[i]); + paramMap.put("cstmsFee", vo.getCstmsFeeArr()[i]); + paramMap.put("krDlvyCt", vo.getKrDlvyCtArr()[i]); + + mapper.insertBOCostPrice(paramMap); + } + } + + message.put("result", "success"); + } catch (WnbtRestException wre) { + throw new WnbtRestException(wre.getMessage()); + } catch (Exception e) { + throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR); + } + + return message; + } +} diff --git a/src/main/java/com/wb/domainserver/domain/gcone/setup/cost/vo/BOCostVO.java b/src/main/java/com/wb/domainserver/domain/gcone/setup/cost/vo/BOCostVO.java new file mode 100644 index 00000000..6fba0ab2 --- /dev/null +++ b/src/main/java/com/wb/domainserver/domain/gcone/setup/cost/vo/BOCostVO.java @@ -0,0 +1,39 @@ +package com.wb.domainserver.domain.gcone.setup.cost.vo; + +import com.wb.domainserver.domain.comm.vo.AbstractVO; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +@Data +@EqualsAndHashCode(callSuper=false) +public class BOCostVO extends AbstractVO { + + /** 원가 고유번호 */ + private int[] ctInnbArr; + + /** 기준일자 */ + private int[] stdrDeArr; + + /** USD 환율 (1,000 円) */ + private BigDecimal[] usdRateArr; + + /** 일본 내 물류비 */ + private int[] jpDlvyCtArr; + + /** 운임비용(JP) */ + private int[] intlDlvyAmtArr; + + /** 플랫폼 수수료율 */ + private BigDecimal[] pltfomFeeArr; + + /** 예상세율 */ + private BigDecimal[] expctTaxArr; + + /** 통관수수료 */ + private int[] cstmsFeeArr; + + /** 운임비용(KR) */ + private int[] krDlvyCtArr; +} diff --git a/src/main/java/com/wb/domainserver/domain/mngr/setup/cost/CostController.java b/src/main/java/com/wb/domainserver/domain/mngr/setup/cost/CostController.java new file mode 100644 index 00000000..2a719b9e --- /dev/null +++ b/src/main/java/com/wb/domainserver/domain/mngr/setup/cost/CostController.java @@ -0,0 +1,103 @@ +package com.wb.domainserver.domain.mngr.setup.cost; + +import com.wb.domainserver.common.msg.GconeMessageSource; +import com.wb.domainserver.domain.gcone.setup.cost.service.BOCostService; +import com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO; +import com.wb.domainserver.exception.WnbtRestException; +import com.wb.domainserver.response.WnbtResponse; +import com.wb.domainserver.response.WnbtResponseBody; +import com.wb.domainserver.response.WnbtWebClientResponseHandler; +import com.wb.domainserver.security.authentication.AnonymousUser; +import com.wb.domainserver.security.authentication.MemberJwtContextHolder; +import com.wb.domainserver.security.authorization.annotation.AuthPolicy; +import com.wb.domainserver.security.authorization.annotation.Policy; +import com.wb.domainserver.util.communicate.SendToResrc; +import com.wb.domainserver.util.communicate.ValidateResultConverter; +import com.wb.domainserver.util.dataaccess.DataMap; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.CookieValue; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * 원가 설정 Controller + * + * @author 이대환 + * @version 1.0 + * @see
+ * == (Modification Information) == 개정이력
+ *
+ * 수정일 수정자 수정내용
+ * ------- -------- ---------------------------
+ * 2026-05-29 이대환 최초 생성
+ *
+ * 
+ * @since 2026-05-29 + */ +@Controller +@RequestMapping("/mngr/setup/cost") +@Slf4j +public class CostController { + + /** WebClient 호출을 위한 wrapper */ + @Autowired + WnbtWebClientResponseHandler responseHandler; + + @Autowired + private SendToResrc sendToResrc; + + /** 공통 메시지 처리를 위한 메시지 객체 */ + @Autowired + private GconeMessageSource gconeMessageSource; + + @Autowired + private BOCostService service; + + /** + * 원가 설정 페이지 이동 + * + * @param vo + * @return CostPriceUpdtU.jsp + */ + @Policy(AuthPolicy.RESTRICTED) + @RequestMapping(value = "/selectCostPriceSetup") + public String selectCostPriceSetup(BOCostVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + DataMap content = new DataMap(); + + content.put("costList", service.selectBOCostPriceList(vo)); + + model.addAttribute("resultMap", content); + + return "mngr/setup/cost/CostPriceUpdtU"; + } + + + /** + * 원가 설정 수정 + * + * @param vo + * @return ResponseEntity + */ + @Policy(AuthPolicy.RESTRICTED) + @PostMapping(value = "/updateCostPriceSetup", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateCostPriceSetup(@Validated BOCostVO vo, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + if (bindingResult.hasErrors()) { + throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); + } + + DataMap message = service.updateBOCostPriceSetup(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() + ); + } +} diff --git a/src/main/resources/mybatis/xml/mapper/gcone/setup/cost/CostMapper.xml b/src/main/resources/mybatis/xml/mapper/gcone/setup/cost/CostMapper.xml new file mode 100644 index 00000000..384300dc --- /dev/null +++ b/src/main/resources/mybatis/xml/mapper/gcone/setup/cost/CostMapper.xml @@ -0,0 +1,57 @@ + + + + + + + + + DELETE FROM + GC_GOODS_COST + WHERE 1=1 + + + + + + SELECT IFNULL(MAX(CT_INNB), 0) + 1 + FROM GC_GOODS_COST + + INSERT INTO GC_GOODS_COST ( + CT_INNB, + STDR_DE, + USD_RATE, + JP_DLVY_CT, + INTL_DLVY_AMT, + PLTFOM_FEE, + EXPCT_TAX, + CSTMS_FEE, + KR_DLVY_CT + ) VALUES ( + #{ctInnb}, + #{stdrDe}, + #{usdRate}, + #{jpDlvyCt}, + #{intlDlvyAmt}, + #{pltfomFee}, + #{expctTax}, + #{cstmsFee}, + #{krDlvyCt} + ) + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/mngr/setup/cost/CostPriceUpdtU.jsp b/src/main/webapp/WEB-INF/views/mngr/setup/cost/CostPriceUpdtU.jsp new file mode 100644 index 00000000..fef00127 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/mngr/setup/cost/CostPriceUpdtU.jsp @@ -0,0 +1,309 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%-- + Class Name : CostPriceUpdtU.jsp + Description : 원가 설정 상세 + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2026-05-29 이대환 최초 생성 +--%> + + + + + + <%-- 공통 include --%> + <%@include file ="/WEB-INF/views/comm/mngr/Include.jsp" %> + + + +<%-- 상단메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%> +<%@include file ="/WEB-INF/views/comm/mngr/Header.jsp" %> +
+ <%-- 좌측메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%> + <%@include file ="/WEB-INF/views/comm/mngr/Left.jsp" %> +
+
+ +
+

원가 설정

+
+ +
+
+
+
+
+
+

원가 설정

+
+
+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
원가 설정
+ + 기준일자USD 환율 (1,000 円)일본 내 물류비운임비용(JP)플랫폼 수수료율예상세율통관수수료운임비용(KR)
+ + +
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
원가를 설정해 주세요.
+
+
+
+ +
+
+
+ + +