fix : 관리자 구독서비스 상품준비 관리

This commit is contained in:
jazz
2026-02-06 16:22:16 +09:00
parent 543a05b5f5
commit 006d3f5a09
14 changed files with 1581 additions and 22 deletions

View File

@@ -86,7 +86,7 @@ public class SubsvcController {
@Value("${mngrfo.common.subsvc.dft-goods-optn-innb}")
private String dftGoodsOptnInnb;
@Autowired
private BOSubsvcService service;
private BOSubsvcService boSubsvcService;
@Autowired
private BOCommonService commonService;
@Autowired
@@ -112,7 +112,7 @@ public class SubsvcController {
content.put("paramVO", vo);
// 조회조건 구독서비스
List<?> SrchSubsvcList = service.selectBOMngrSrchSubsvcList(vo);
List<?> SrchSubsvcList = boSubsvcService.selectBOMngrSrchSubsvcList(vo);
content.put("srchSubsvcList", SrchSubsvcList);
//조회조건 판매상태
@@ -148,7 +148,7 @@ public class SubsvcController {
content.put("paramVO", vo);
// 구독서비스 상세조회
DataMap subsvcDtl = service.selectBOSubsvcDetail(vo);
DataMap subsvcDtl = boSubsvcService.selectBOSubsvcDetail(vo);
content.put("subsvcDtl", subsvcDtl);
//판매상태
@@ -210,7 +210,7 @@ public class SubsvcController {
//파일 업로드 관련 END
Map<String, Object> message = new HashMap<>();
String result = service.updateBOMngrSubsvc(vo);
String result = boSubsvcService.updateBOMngrSubsvc(vo);
message.put("message",result);
return ResponseEntity.ok(
@@ -238,7 +238,7 @@ public class SubsvcController {
content.put("paramVO", vo);
// 구독서비스 상세조회
DataMap subsvcDtl = service.selectBOSubsvcDetail(vo);
DataMap subsvcDtl = boSubsvcService.selectBOSubsvcDetail(vo);
content.put("subsvcDtl", subsvcDtl);
//판매상태
@@ -303,7 +303,7 @@ public class SubsvcController {
vo.setDftGoodsOptnInnb(dftGoodsOptnInnb);
Map<String, Object> message = new HashMap<>();
String result = service.insertBOMngrSubsvc(vo);
String result = boSubsvcService.insertBOMngrSubsvc(vo);
message.put("message",result);
return ResponseEntity.ok(
@@ -345,7 +345,7 @@ public class SubsvcController {
}
// 목록 조회
List<DataMap> list = service.selectBOMngrSubsvcList(vo);
List<DataMap> list = boSubsvcService.selectBOMngrSubsvcList(vo);
Map<String, Object> content = new HashMap<>();
content.put("paramVO", vo);
@@ -373,7 +373,7 @@ public class SubsvcController {
}
DataMap message = new DataMap();
String result = service.selectBOMngrSubsvcNmDupCheck(vo);
String result = boSubsvcService.selectBOMngrSubsvcNmDupCheck(vo);
message.put("message", result);
return ResponseEntity.ok(
@@ -401,7 +401,7 @@ public class SubsvcController {
}
DataMap message = new DataMap();
String result = service.deleteBOMngrSubsvc(vo);
String result = boSubsvcService.deleteBOMngrSubsvc(vo);
message.put("message", result);
return ResponseEntity.ok(
@@ -429,7 +429,7 @@ public class SubsvcController {
Map<String, Object> content = new HashMap<>();
// 조회조건 구독서비스
List<DataMap> SrchSubsvcGnrList = service.selectBOMngrSrchSubsvcGnrList(vo);
List<DataMap> SrchSubsvcGnrList = boSubsvcService.selectBOMngrSrchSubsvcGnrList(vo);
content.put("srchSubsvcGnrList", SrchSubsvcGnrList);
return ResponseEntity.ok(

View File

@@ -0,0 +1,251 @@
package com.wb.domainserver.domain.mngr.ordr.subsvc.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.wb.domainserver.common.msg.GconeMessageSource;
import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationInfo;
import com.wb.domainserver.common.prop.PaginationProperties;
import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService;
import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService;
import com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO;
import com.wb.domainserver.domain.gcone.common.service.BOCommonService;
import com.wb.domainserver.domain.gcone.goods.purchs.service.BOOrderService;
import com.wb.domainserver.domain.gcone.goods.purchs.vo.BOOrderLogVO;
import com.wb.domainserver.domain.gcone.goods.subsvc.service.BOSubsvcService;
import com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO;
import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrService;
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.*;
import com.wb.domainserver.domain.gcone.ordr.pay.vo.BOPayVO;
import com.wb.domainserver.domain.gcone.ordr.subsvc.service.BOSubsvcOrdrService;
import com.wb.domainserver.domain.gcone.ordr.subsvc.vo.BOSubsvcOrderVO;
import com.wb.domainserver.domain.gcone.setup.dlvygrp.service.BODlvygrpService;
import com.wb.domainserver.domain.gcone.setup.nbkk.service.BONbkkService;
import com.wb.domainserver.domain.gcone.setup.nbkk.vo.BOSetupNbkkVO;
import com.wb.domainserver.domain.mngr.ordr.ordrmngr.vo.DwldItmVO;
import com.wb.domainserver.domain.mngr.ordr.ordrmngr.vo.OrdrShippingVO;
import com.wb.domainserver.domain.mngr.ordr.ordrmngr.vo.OrdrSrchVO;
import com.wb.domainserver.exception.WnbtRestException;
import com.wb.domainserver.exception.code.ErrorCode;
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 com.wb.domainserver.util.excel.ExcelDownloadUtil;
import io.micrometer.common.util.StringUtils;
import jakarta.servlet.http.HttpServletResponse;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import java.io.IOException;
import java.math.BigInteger;
import java.util.*;
/**
* 구독서비스 주문 관리 Controller
*
* @author jazz
* @since 2026-02-05
* @version 1.0
* @see
*
* <pre>
* == (Modification Information) == 개정이력
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2026-02-05 jazz 최초 생성
*
* </pre>
*/
@Controller
@RequestMapping("/mngr/ordr/subsvc")
@Slf4j
public class SubsvcOrdrController {
/** WebClient 호출을 위한 wrapper */
@Autowired
private WnbtWebClientResponseHandler responseHandler;
/** WebClient 호출을 위한 wrapper */
@Autowired
private SendToResrc sendToResrc;
/** 공통 메시지 처리를 위한 메시지 객체 */
@Autowired
private GconeMessageSource gconeMessageSource;
@Autowired
private BOSubsvcOrdrService boSubsvcOrdrService;
@Autowired
private BOSubsvcService boSubsvcService;
@Autowired
private PaginationProperties paginationProperties;
/**
* 구독서비스 상품준비 조회 폼
* @param subsvcVO,subsvcOrderVO,model,authSopmalCd
* @return SubsvcOrdrListForm.jsp
*/
@Policy(AuthPolicy.RESTRICTED)
@RequestMapping(value="/selectSubsvcOrdrListForm")
public String selectSubsvcListForm(BOSubsvcVO subsvcVO, BOSubsvcOrderVO subsvcOrderVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
subsvcVO.setSopmalCd(authSopmalCd);
subsvcOrderVO.setSopmalCd(authSopmalCd);
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
if("01".equals(user.getSysDvCd())){
subsvcVO.setSopmalCd(user.getSopmalCd());
subsvcOrderVO.setSopmalCd(user.getSopmalCd());
}
Map<String, Object> content = new HashMap<>();
content.put("paramVO", subsvcOrderVO);
// 조회조건 구독서비스
List<?> SrchSubsvcList = boSubsvcService.selectBOMngrSrchSubsvcList(subsvcVO);
content.put("srchSubsvcList", SrchSubsvcList);
model.addAttribute("resultMap", content);
return "mngr/ordr/subsvc/SubsvcOrdrListForm";
}
/**
* 구독서비스 상품준비 목록 조회 리스트
* @param subsvcOrderVO
* @param model
* @return SubsvcOrdrList.jsp
*/
@Policy(AuthPolicy.RESTRICTED)
@RequestMapping(value = "/selectSubsvcOrdrList")
public String selectSubsvcList(BOSubsvcOrderVO subsvcOrderVO,ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
subsvcOrderVO.setSopmalCd(authSopmalCd);
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
if("01".equals(user.getSysDvCd())){
subsvcOrderVO.setSopmalCd(user.getSopmalCd());
}
// 페이징 객체 생성 & 페이징정보 할당
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(subsvcOrderVO.getPageIndex());
paginationInfo.setRecordCountPerPage(subsvcOrderVO.getPageUnit());
paginationInfo.setPageSize(paginationProperties.getPageSize());
subsvcOrderVO.setPaginationInfo(paginationInfo);
subsvcOrderVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
subsvcOrderVO.setLastIndex(paginationInfo.getLastRecordIndex());
subsvcOrderVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if(StringUtils.isEmpty(subsvcOrderVO.getSortDv())){
//정렬기준 초기값 셋팅
subsvcOrderVO.setSortDv("subsvcGnrAsc");
}
// 목록 조회
List<DataMap> list = boSubsvcOrdrService.selectBOSubsvcOrderList(subsvcOrderVO);
Map<String, Object> content = new HashMap<>();
content.put("paramVO", subsvcOrderVO);
content.put("list", list);
content.put("paginationInfo", subsvcOrderVO.getPaginationInfo());
model.addAttribute("resultMap", content);
return "mngr/ordr/subsvc/SubsvcOrdrList";
}
/**
* 구독서비스 상품준비 일괄처리
* @param subsvcOrderVO
* @return ResponseEntity<WnbtResponse>
*/
@Policy(AuthPolicy.RESTRICTED)
@RequestMapping(value = "/updateSubsvcOrdrReady", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<WnbtResponse> updateSubsvcOrdrReady(BOSubsvcOrderVO subsvcOrderVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
subsvcOrderVO.setSopmalCd(authSopmalCd);
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
if("01".equals(user.getSysDvCd())){
subsvcOrderVO.setSopmalCd(user.getSopmalCd());
}
/**
* 체크대상정보 파싱
* 형태 : 주문고유번호@주문상품고유번호@주문상품옵션고유번호@주문배송고유번호
* */
subsvcOrderVO.setArrOrdrInnb(new ArrayList<String>());
subsvcOrderVO.setArrOrdrGoodsInnb(new ArrayList<String>());
subsvcOrderVO.setArrOrdrGoodsOptnInnb(new ArrayList<String>());
subsvcOrderVO.setArrOrdrDlvyInnb(new ArrayList<String>());
ArrayList<String> arrCheck = (ArrayList<String>)subsvcOrderVO.getArrCheck();
((ArrayList<String>)subsvcOrderVO.getArrCheck()).forEach(check -> {
String[] innb = check.split("@");
subsvcOrderVO.getArrOrdrInnb().add(innb[0]);
subsvcOrderVO.getArrOrdrGoodsInnb().add(innb[1]);
subsvcOrderVO.getArrOrdrGoodsOptnInnb().add(innb[2]);
subsvcOrderVO.getArrOrdrDlvyInnb().add(innb[3]);
});
DataMap message = new DataMap();
String result = "";
try{
result = boSubsvcOrdrService.updateSubsvcOrdrReady(subsvcOrderVO);
}catch(Exception e){
log.error(e.getMessage());
result = "fail";
}
message.put("message", result);
return ResponseEntity.ok(
WnbtResponse.builder()
.resBody(new WnbtResponseBody(message))
.build()
);
}
/**
* 구독서비스 상품준비 배송내역 목록 팝업
* @param subsvcOrderVO
* @param model
* @return SubsvcOrdrList.jsp
*/
@Policy(AuthPolicy.RESTRICTED)
@RequestMapping(value = "/selectSubsvcOrdrDlvyListPop")
public String selectSubsvcOrdrDlvyListPop(BOSubsvcOrderVO subsvcOrderVO,ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
subsvcOrderVO.setSopmalCd(authSopmalCd);
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
if("01".equals(user.getSysDvCd())){
subsvcOrderVO.setSopmalCd(user.getSopmalCd());
}
// 목록 조회
List<DataMap> list = boSubsvcOrdrService.selectBOSubsvcOrderDlvyList(subsvcOrderVO);
Map<String, Object> content = new HashMap<>();
content.put("paramVO", subsvcOrderVO);
content.put("list", list);
model.addAttribute("resultMap", content);
return "mngr/ordr/subsvc/SubsvcOrdrDlvyListPop";
}
}