/* * ContractMgmtController * * 1.0 * * 2021.10.01 * * Copyright ions */ package com.pms.salesmgmt.controller; import java.math.BigDecimal; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.pms.common.utils.CommonUtils; import com.pms.salesmgmt.service.ContractMgmtService; import com.pms.salesmgmt.service.SalesMgmtCommonService; import com.pms.salesmgmt.service.SalesNcollectMgmtService; import com.pms.service.CommonService; /** *
 * 매출수금관리 Controller
 * 
* @since 2021.11.05 * @author min * @version 1.0 * *
 * << 개정 이력 >>
 * 
 * 수정일 					수정자							 수정내용
 * ----------------		---------------------			--------------------------------------------------------
 * 2021.11.05			민상익							최초작성
 * 
 * 
* */ @Controller public class SalesNcollectMgmtController { /** 계약관리 Service */ @Autowired private ContractMgmtService contractMgmtService; /** 매출수금 Service */ @Autowired private SalesNcollectMgmtService salseNcollectMgmtService; /** 영업관리 공통 Service */ @Autowired private SalesMgmtCommonService salesMgmtCommonService; @Autowired private CommonService commonService; /** *
	 * 매출관리 메인 페이지 (메뉴 진입점)
	 * 
* @param request * @param paramMap - 검색 정보 * @return String * *
	 * << 개정 이력 >>
	 * 
	 * 수정일					수정자							수정내용
	 * ----------------		---------------------			----------------------------------------------------------
	 * 2025.10.15			수정							메뉴 URL 매핑 추가
	 * 
	 * 
*/ @RequestMapping(value = "/salesMgmt/salesMgmtList.do", method = RequestMethod.GET) public String salesMgmtList(HttpServletRequest request , @RequestParam Map paramMap) { // /salesNcollectMgmt/contractList.do로 리다이렉트 return salesContractList(request, paramMap); } /** *
	 * 매출관리 목록 페이지
	 * 
* @param request * @param paramMap - 검색 정보 * @return String */ @RequestMapping(value = "/contractMgmt/salesMgmtList.do", method = RequestMethod.GET) public String showSalesMgmtList(HttpServletRequest request, @RequestParam Map paramMap) { try { // 코드정보 Map codeMap = new HashMap(); // 주문유형 codeMap.put("orderTypeList", salesMgmtCommonService.bizMakeOptionList("GE", "", "salesMgmtCommon.getCodeList")); // 제품구분 codeMap.put("productTypeList", salesMgmtCommonService.bizMakeOptionList("", "", "salesMgmtCommon.getGoodsList")); // 국내/해외 codeMap.put("nationList", salesMgmtCommonService.bizMakeOptionList("AR", "", "salesMgmtCommon.getCodeList")); /* // 유/무상 codeMap.put("paymentTypeList", salesMgmtCommonService.bizMakeOptionList("0000156", "", "salesMgmtCommon.getCodeList")); */ // 수주상태 codeMap.put("orderStatusList", commonService.bizMakeOptionList("0000932", "", "common.getCodeselect")); // 출하대기 상태 codeMap.put("shippingStatusList", salesMgmtCommonService.bizMakeOptionList("SH", "", "salesMgmtCommon.getCodeList")); /* // 출고방법 codeMap.put("shippingMethodList", salesMgmtCommonService.bizMakeOptionList("SM", "", "salesMgmtCommon.getCodeList")); */ // 담당자 codeMap.put("managerList", salesMgmtCommonService.bizMakeOptionList("", "", "salesMgmtCommon.getSalesmanList")); /* // 인도조건 codeMap.put("incotermsList", salesMgmtCommonService.bizMakeOptionList("IT", "", "salesMgmtCommon.getCodeList")); */ request.setAttribute("codeMap", codeMap); } catch (Exception e) { e.printStackTrace(); } return "/salesmgmt/salesMgmt/salesMgmtList"; } /** *
	 * 매출관리 그리드 데이터 조회 (Tabulator용)
	 * 
* @param request * @param paramMap - 검색 정보 * @return Map */ @ResponseBody @RequestMapping(value = "/salesMgmt/salesMgmtGridList.do", method = RequestMethod.POST) public Map salesMgmtGridList(HttpServletRequest request, @RequestParam Map paramMap) { Map resultMap = new HashMap(); try { List> list = salseNcollectMgmtService.getSalesMgmtGridList(request, paramMap); int totalCount = salseNcollectMgmtService.getSalesMgmtGridListCount(paramMap); resultMap.put("RESULTLIST", list); resultMap.put("last_page", (int) Math.ceil((double)totalCount / Integer.parseInt(CommonUtils.checkNull(request.getParameter("size"), "10")))); } catch(Exception e) { e.printStackTrace(); // Tabulator는 에러 발생 시 빈 배열을 기대합니다. resultMap.put("RESULTLIST", new java.util.ArrayList<>()); resultMap.put("last_page", 0); } return resultMap; } /** *
	 * 계약관리 목록 조회
	 * 
* @param request * @param paramMap - 계약관리 검색 정보 * @return String * *
	 * << 개정 이력 >>
	 * 
	 * 수정일					수정자							수정내용
	 * ----------------		---------------------			----------------------------------------------------------
	 * 2021.11.05			민상익							최초작성
	 * 
	 * 
*/ @RequestMapping(value = "/salesNcollectMgmt/contractList.do", method = RequestMethod.GET) public String salesContractList(HttpServletRequest request , @RequestParam Map paramMap) { String orderNo = request.getParameter("orderNo"); try { List> list = contractMgmtService.getContractMgmtAll(request, paramMap); if (StringUtils.isBlank(orderNo) && list != null && !list.isEmpty()) { Map dataMap = list.get(0); orderNo = (String) dataMap.get("ORDERNO"); } request.setAttribute("LIST", list); request.setAttribute("orderNo", orderNo); } catch(Exception e) { e.printStackTrace(); } return "/salesmgmt/salesNcollectMgmt/contractMgmtList"; } /** *
	 * 매출등록 목록 조회
	 * 
* @param request * @param paramMap - 계약관리 검색 정보 * @return String * *
	 * << 개정 이력 >>
	 * 
	 * 수정일					수정자							수정내용
	 * ----------------		---------------------			----------------------------------------------------------
	 * 2021.11.05			민상익							최초작성
	 * 
	 * 
*/ @RequestMapping(value = "/salesNcollectMgmt/sales.do", method = RequestMethod.GET) public String sales(HttpServletRequest request , @RequestParam Map paramMap) { try { List> list = salseNcollectMgmtService.getSalseAllByOrderNo(request, paramMap); request.setAttribute("LIST", list); } catch(Exception e) { e.printStackTrace(); } return "/salesmgmt/salesNcollectMgmt/salesMgmt"; } /** *
	 * 매출등록 상세 조회
	 * 
* @param request * @param paramMap - 매출등록 검색 정보 * @return String * *
	 * << 개정 이력 >>
	 * 
	 * 수정일					수정자							수정내용
	 * ----------------		---------------------			----------------------------------------------------------
	 * 2021.11.05			민상익							최초작성
	 * 
	 * 
*/ @RequestMapping("/salesNcollectMgmt/salesMgmtFormPopup.do") public String salesMgmt(HttpServletRequest request , @RequestParam Map paramMap) { String saleNo = CommonUtils.checkNull(paramMap.get("saleNo")); Map info = null; try { if(StringUtils.isNotBlank(saleNo)) { // 매출관리 조회 info = salseNcollectMgmtService.getSalesMgmt(paramMap); } else { info = new HashMap(); } // 계약관리 조회 Map contractInfo = contractMgmtService.getContractMgmt(paramMap); if (info == null || !info.containsKey("SALENO")) { String custCd = (String) contractInfo.get("CUSTCD"); // 고객코드 String custNm = (String) contractInfo.get("CUSTNM"); // 고객명 int goodsQty = (Integer) contractInfo.get("GOODSQTY"); // 계약수량 long salePrice = Integer.parseInt(String.valueOf((BigDecimal) contractInfo.get("SALEPRICE"))); // 계약단가 long saleAmt = Integer.parseInt(String.valueOf((BigDecimal) contractInfo.get("SALEAMT"))); // 계약금액 long vatAmt = Integer.parseInt(String.valueOf((BigDecimal) contractInfo.get("VATAMT"))); // 부가세 info.put("CUSTCD", custCd); // 고객코드 info.put("CUSTNM", custNm); // 고객명 info.put("SUPPLYQTY", goodsQty); // 계약수량 info.put("SUPPLYPRICE", salePrice); // 계약단가 info.put("SUPPLYAMT", saleAmt); // 계약금액 info.put("SUPPLYVAT", vatAmt); // 부가세 } // 코드정보 Map codeMap = new HashMap(); //과세 유형 codeMap.put("taxTypeList", salesMgmtCommonService.bizMakeOptionList("DB", (String) info.get("TAXTYPE"), "salesMgmtCommon.getCodeList")); request.setAttribute("info", info); request.setAttribute("codeMap", codeMap); request.setAttribute("contractInfo", contractInfo); } catch(Exception e) { e.printStackTrace(); } return "/salesmgmt/salesNcollectMgmt/salesFormPopup"; } /** * 매출관리 저장 * @param request * @param paramMap - 고객관리 정보 * @return */ @ResponseBody @RequestMapping("/salesNcollectMgmt/saveSalesMgmt.do") public Map saveSalesMgmt(HttpServletRequest request , @RequestParam Map paramMap) { Map resultMap = new HashMap(); try { resultMap.put("RESULT", salseNcollectMgmtService.saveSalesMgmt(request, paramMap)); } catch(Exception e) { e.printStackTrace(); } return resultMap; } /** * 매출관리 삭제 * @param request * @param paramMap - 고객관리 정보 * @return */ @ResponseBody @RequestMapping("/salesNcollectMgmt/deleteSalesMgmt.do") public Map deleteSalesMgmt(HttpServletRequest request , @RequestParam Map paramMap) { Map resultMap = new HashMap(); try { resultMap.put("RESULT", salseNcollectMgmtService.deleteSalesMgmt(request, paramMap)); } catch(Exception e) { e.printStackTrace(); } return resultMap; } /******************************************************************************************************************************** ******************************************************************************************************************************** 수금관리 시작 ******************************************************************************************************************************** ********************************************************************************************************************************/ /** *
	 * 수금 목록 조회
	 * 
* @param request * @param paramMap - * @return String * *
	 * << 개정 이력 >>
	 * 
	 * 수정일					수정자							수정내용
	 * ----------------		---------------------			----------------------------------------------------------
	 * 2021.11.05			민상익							최초작성
	 * 
	 * 
*/ @RequestMapping(value = "/salesNcollectMgmt/collect.do", method = RequestMethod.GET) public String collect(HttpServletRequest request , @RequestParam Map paramMap) { try { List> list = salseNcollectMgmtService.getCollectAllByOrderNo(request, paramMap); request.setAttribute("LIST", list); } catch(Exception e) { e.printStackTrace(); } return "/salesmgmt/salesNcollectMgmt/collectMgmt"; } /** *
	 * 수금 상세 조회
	 * 
* @param session * @param request * @param paramMap - 매출 검색 정보 * @return String * *
	 * << 개정 이력 >>
	 * 
	 * 수정일					수정자							수정내용
	 * ----------------		---------------------			----------------------------------------------------------
	 * 2021.11.05			민상익							최초작성
	 * 
	 * 
*/ @RequestMapping("/salesNcollectMgmt/collectMgmtFormPopup.do") public String collectMgmt(HttpSession session , HttpServletRequest request , @RequestParam Map paramMap) { String saleNo = CommonUtils.checkNull(paramMap.get("rcptNo")); Map info = null; try { System.out.println("paramMap##################### " + paramMap); if(StringUtils.isNotBlank(saleNo)) { // 수금관리 조회 info = salseNcollectMgmtService.getCollectMgmt(paramMap); } else { info = new HashMap(); } // 계약관리 조회 Map contractInfo = contractMgmtService.getContractMgmt(paramMap); if (info == null || !info.containsKey("RCPTNO")) { String custCd = (String) contractInfo.get("CUSTCD"); // 고객코드 long saleAmt = Integer.parseInt(String.valueOf((BigDecimal) contractInfo.get("SALEAMT"))); // 계약금액 info.put("CUSTCD", custCd); // 고객코드 info.put("RCPTAMT", saleAmt); // 수금금액 } // 코드정보 Map codeMap = new HashMap(); System.out.println("info##################### " + info); //고객 codeMap.put("customerList", salesMgmtCommonService.bizMakeOptionList("", (String) info.get("CUSTCD"), "salesMgmtCommon.getCustomerList")); //계정과목 codeMap.put("accountTypeList", salesMgmtCommonService.bizMakeOptionList("AK", (String) info.get("ACCOUNTTYPE"), "salesMgmtCommon.getCodeList")); //자금구분 codeMap.put("fundsTypeList", salesMgmtCommonService.bizMakeOptionList("AM", (String) info.get("FUNDSTYPE"), "salesMgmtCommon.getCodeList")); //자금 유형 codeMap.put("aoTypeList", salesMgmtCommonService.bizMakeOptionList("AO", (String) info.get("AOTYPE"), "salesMgmtCommon.getCodeList")); /* // 영업부서 codeMap.put("deptList", salesMgmtCommonService.bizMakeOptionList("", (String) info.get("DEPTCD"), "salesMgmtCommon.getDeptList")); // 영업담당자 codeMap.put("SalesmanList", salesMgmtCommonService.bizMakeOptionList("", (String) info.get("SALESMAN"), "salesMgmtCommon.getSalesmanList")); // 고객지역 codeMap.put("areaList", salesMgmtCommonService.bizMakeOptionList("AR", (String) info.get("CUSTAREA"), "salesMgmtCommon.getCodeList")); */ //하단 그리드를 위한 수금 목록 조회 List> list = salseNcollectMgmtService.getCollectAllByOrderNo(request, paramMap); request.setAttribute("LIST", list); request.setAttribute("info", info); request.setAttribute("codeMap", codeMap); } catch(Exception e) { e.printStackTrace(); } return "/salesmgmt/salesNcollectMgmt/collectFormPopup"; } /** *
	 * 수금관리 저장
	 * 
* @param request * @param paramMap - * @return String * *
	 * << 개정 이력 >>
	 * 
	 * 수정일					수정자							수정내용
	 * ----------------		---------------------			----------------------------------------------------------
	 * 2021.11.05			민상익							최초작성
	 * 
	 * 
*/ @ResponseBody @RequestMapping("/salesNcollectMgmt/saveCollectMgmt.do") public Map saveCollectMgmt(HttpServletRequest request , @RequestParam Map paramMap) { Map resultMap = new HashMap(); System.out.println("ctr::paramMap##################### " + paramMap); try { resultMap.put("RESULT", salseNcollectMgmtService.saveCollectMgmt(request, paramMap)); } catch(Exception e) { e.printStackTrace(); } return resultMap; } /** * 수금관리 삭제 * @param request * @param paramMap - 고객관리 정보 * @return */ @ResponseBody @RequestMapping("/salesNcollectMgmt/deleteCollectMgmt.do") public Map deleteCollectMgmt(HttpServletRequest request , @RequestParam Map paramMap) { Map resultMap = new HashMap(); try { resultMap.put("RESULT", salseNcollectMgmtService.deleteCollectMgmt(request, paramMap)); } catch(Exception e) { e.printStackTrace(); } return resultMap; } }