Files
wace_plm/src/com/pms/salesmgmt/controller/SalesNcollectMgmtController.java
2025-10-17 12:09:17 +09:00

546 lines
17 KiB
Java

/*
* 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;
/**
* <pre>
* 매출수금관리 Controller
* </pre>
* @since 2021.11.05
* @author min
* @version 1.0
*
* <pre>
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* ---------------- --------------------- --------------------------------------------------------
* 2021.11.05 민상익 최초작성
*
* </pre>
*
*/
@Controller
public class SalesNcollectMgmtController {
/** 계약관리 Service */
@Autowired
private ContractMgmtService contractMgmtService;
/** 매출수금 Service */
@Autowired
private SalesNcollectMgmtService salseNcollectMgmtService;
/** 영업관리 공통 Service */
@Autowired
private SalesMgmtCommonService salesMgmtCommonService;
@Autowired
private CommonService commonService;
/**
* <pre>
* 매출관리 메인 페이지 (메뉴 진입점)
* </pre>
* @param request
* @param paramMap - 검색 정보
* @return String
*
* <pre>
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* ---------------- --------------------- ----------------------------------------------------------
* 2025.10.15 수정 메뉴 URL 매핑 추가
*
* </pre>
*/
@RequestMapping(value = "/salesMgmt/salesMgmtList.do", method = RequestMethod.GET)
public String salesMgmtList(HttpServletRequest request
, @RequestParam Map<String, Object> paramMap) {
// /salesNcollectMgmt/contractList.do로 리다이렉트
return salesContractList(request, paramMap);
}
/**
* <pre>
* 매출관리 목록 페이지
* </pre>
* @param request
* @param paramMap - 검색 정보
* @return String
*/
@RequestMapping(value = "/contractMgmt/salesMgmtList.do", method = RequestMethod.GET)
public String showSalesMgmtList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap) {
try {
// 코드정보
Map<String, Object> codeMap = new HashMap<String, Object>();
// 주문유형
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";
}
/**
* <pre>
* 매출관리 그리드 데이터 조회 (Tabulator용)
* </pre>
* @param request
* @param paramMap - 검색 정보
* @return Map
*/
@ResponseBody
@RequestMapping(value = "/salesMgmt/salesMgmtGridList.do", method = RequestMethod.POST)
public Map<String, Object> salesMgmtGridList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap) {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
List<Map<String, Object>> 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;
}
/**
* <pre>
* 계약관리 목록 조회
* </pre>
* @param request
* @param paramMap - 계약관리 검색 정보
* @return String
*
* <pre>
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* ---------------- --------------------- ----------------------------------------------------------
* 2021.11.05 민상익 최초작성
*
* </pre>
*/
@RequestMapping(value = "/salesNcollectMgmt/contractList.do", method = RequestMethod.GET)
public String salesContractList(HttpServletRequest request
, @RequestParam Map<String, Object> paramMap) {
String orderNo = request.getParameter("orderNo");
try {
List<Map<String,Object>> list = contractMgmtService.getContractMgmtAll(request, paramMap);
if (StringUtils.isBlank(orderNo) && list != null && !list.isEmpty()) {
Map<String,Object> 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";
}
/**
* <pre>
* 매출등록 목록 조회
* </pre>
* @param request
* @param paramMap - 계약관리 검색 정보
* @return String
*
* <pre>
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* ---------------- --------------------- ----------------------------------------------------------
* 2021.11.05 민상익 최초작성
*
* </pre>
*/
@RequestMapping(value = "/salesNcollectMgmt/sales.do", method = RequestMethod.GET)
public String sales(HttpServletRequest request
, @RequestParam Map<String, Object> paramMap) {
try {
List<Map<String,Object>> list = salseNcollectMgmtService.getSalseAllByOrderNo(request, paramMap);
request.setAttribute("LIST", list);
} catch(Exception e) {
e.printStackTrace();
}
return "/salesmgmt/salesNcollectMgmt/salesMgmt";
}
/**
* <pre>
* 매출등록 상세 조회
* </pre>
* @param request
* @param paramMap - 매출등록 검색 정보
* @return String
*
* <pre>
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* ---------------- --------------------- ----------------------------------------------------------
* 2021.11.05 민상익 최초작성
*
* </pre>
*/
@RequestMapping("/salesNcollectMgmt/salesMgmtFormPopup.do")
public String salesMgmt(HttpServletRequest request
, @RequestParam Map<String, Object> paramMap) {
String saleNo = CommonUtils.checkNull(paramMap.get("saleNo"));
Map<String, Object> info = null;
try {
if(StringUtils.isNotBlank(saleNo)) {
// 매출관리 조회
info = salseNcollectMgmtService.getSalesMgmt(paramMap);
} else {
info = new HashMap<String, Object>();
}
// 계약관리 조회
Map<String, Object> 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<String, Object> codeMap = new HashMap<String, Object>();
//과세 유형
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<String, Object> saveSalesMgmt(HttpServletRequest request
, @RequestParam Map<String, Object> paramMap) {
Map<String, Object> resultMap = new HashMap<String, Object>();
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<String, Object> deleteSalesMgmt(HttpServletRequest request
, @RequestParam Map<String, Object> paramMap) {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
resultMap.put("RESULT", salseNcollectMgmtService.deleteSalesMgmt(request, paramMap));
} catch(Exception e) {
e.printStackTrace();
}
return resultMap;
}
/********************************************************************************************************************************
********************************************************************************************************************************
수금관리 시작
********************************************************************************************************************************
********************************************************************************************************************************/
/**
* <pre>
* 수금 목록 조회
* </pre>
* @param request
* @param paramMap -
* @return String
*
* <pre>
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* ---------------- --------------------- ----------------------------------------------------------
* 2021.11.05 민상익 최초작성
*
* </pre>
*/
@RequestMapping(value = "/salesNcollectMgmt/collect.do", method = RequestMethod.GET)
public String collect(HttpServletRequest request
, @RequestParam Map<String, Object> paramMap) {
try {
List<Map<String,Object>> list = salseNcollectMgmtService.getCollectAllByOrderNo(request, paramMap);
request.setAttribute("LIST", list);
} catch(Exception e) {
e.printStackTrace();
}
return "/salesmgmt/salesNcollectMgmt/collectMgmt";
}
/**
* <pre>
* 수금 상세 조회
* </pre>
* @param session
* @param request
* @param paramMap - 매출 검색 정보
* @return String
*
* <pre>
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* ---------------- --------------------- ----------------------------------------------------------
* 2021.11.05 민상익 최초작성
*
* </pre>
*/
@RequestMapping("/salesNcollectMgmt/collectMgmtFormPopup.do")
public String collectMgmt(HttpSession session
, HttpServletRequest request
, @RequestParam Map<String, Object> paramMap) {
String saleNo = CommonUtils.checkNull(paramMap.get("rcptNo"));
Map<String, Object> info = null;
try {
System.out.println("paramMap##################### " + paramMap);
if(StringUtils.isNotBlank(saleNo)) {
// 수금관리 조회
info = salseNcollectMgmtService.getCollectMgmt(paramMap);
} else {
info = new HashMap<String, Object>();
}
// 계약관리 조회
Map<String, Object> 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<String, Object> codeMap = new HashMap<String, Object>();
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<Map<String,Object>> 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";
}
/**
* <pre>
* 수금관리 저장
* </pre>
* @param request
* @param paramMap -
* @return String
*
* <pre>
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* ---------------- --------------------- ----------------------------------------------------------
* 2021.11.05 민상익 최초작성
*
* </pre>
*/
@ResponseBody
@RequestMapping("/salesNcollectMgmt/saveCollectMgmt.do")
public Map<String, Object> saveCollectMgmt(HttpServletRequest request
, @RequestParam Map<String, Object> paramMap) {
Map<String, Object> resultMap = new HashMap<String, Object>();
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<String, Object> deleteCollectMgmt(HttpServletRequest request
, @RequestParam Map<String, Object> paramMap) {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
resultMap.put("RESULT", salseNcollectMgmtService.deleteCollectMgmt(request, paramMap));
} catch(Exception e) {
e.printStackTrace();
}
return resultMap;
}
}