From 018688520de7324503a861c16d345054dfe69ee6 Mon Sep 17 00:00:00 2001 From: Johngreen Date: Fri, 17 Oct 2025 12:09:17 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A7=A4=EC=B6=9C=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salesmgmt/mapper/salesNcollectMgmt.xml | 183 +++++++++++++++++ .../salesmgmt/salesMgmt/salesMgmtList.jsp | 192 ++++++++++++++++++ .../salesNcollectMgmt/collectMgmt.jsp | 147 ++++++++------ .../salesmgmt/salesNcollectMgmt/salesMgmt.jsp | 187 +++++++++-------- docker-compose.dev.yml | 3 +- rebuild-and-restart.sh | 74 +++++++ .../SalesNcollectMgmtController.java | 112 ++++++++++ .../salesmgmt/mapper/salesNcollectMgmt.xml | 183 +++++++++++++++++ .../service/SalesNcollectMgmtService.java | 64 ++++++ start-docker-linux.sh | 0 10 files changed, 991 insertions(+), 154 deletions(-) create mode 100644 WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp create mode 100755 rebuild-and-restart.sh mode change 100644 => 100755 start-docker-linux.sh diff --git a/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml b/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml index 5a76e95..61b6849 100644 --- a/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml +++ b/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml @@ -812,5 +812,188 @@ ,editEmpNo = #{cretEmpNo} /* 수정자 */ + + + + + + diff --git a/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp b/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp new file mode 100644 index 0000000..74d2bcb --- /dev/null +++ b/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp @@ -0,0 +1,192 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.pms.common.utils.*"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ page import="java.util.*" %> +<%@include file= "/init.jsp" %> +<% + PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); + String connector = person.getUserId(); +%> + + + + +<%=Constants.SYSTEM_NAME%> + + + + + + +
+ + +
+ +
+ +
+
+
+
+

+ 영업관리_매출관리 +

+
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + ~
~ ~
+
+ + <%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %> +
+
+
+
+ + diff --git a/WebContent/WEB-INF/view/salesmgmt/salesNcollectMgmt/collectMgmt.jsp b/WebContent/WEB-INF/view/salesmgmt/salesNcollectMgmt/collectMgmt.jsp index 4520f41..e8fface 100644 --- a/WebContent/WEB-INF/view/salesmgmt/salesNcollectMgmt/collectMgmt.jsp +++ b/WebContent/WEB-INF/view/salesmgmt/salesNcollectMgmt/collectMgmt.jsp @@ -75,73 +75,88 @@ function openCollectFormPopup(rcptNo, orderNo){ -
- - - - - -
-
- +
+
+
+

+ 영업관리> 매출관리> 수금등록 +

+ + + + + + + +
+

수금 리스트

+
+
+ +
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
수금번호수금일자계정과목수금금액자금구분자금유형비고
조회된 데이터가 없습니다.
${item.RCPTNO} + + + ${item.ACCOUNTTYPENM}${item.FUNDSTYPENM}${item.AOTYPENM}${item.REMARK}
+
+
+ +
+ +
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
수금번호수금일자계정과목수금금액자금구분자금유형비고
조회된 데이터가 없습니다.
${item.RCPTNO} - - - ${item.ACCOUNTTYPENM}${item.FUNDSTYPENM}${item.AOTYPENM}${item.REMARK}
-
-
- - +
\ No newline at end of file diff --git a/WebContent/WEB-INF/view/salesmgmt/salesNcollectMgmt/salesMgmt.jsp b/WebContent/WEB-INF/view/salesmgmt/salesNcollectMgmt/salesMgmt.jsp index 0b0f42b..ef18e3d 100644 --- a/WebContent/WEB-INF/view/salesmgmt/salesNcollectMgmt/salesMgmt.jsp +++ b/WebContent/WEB-INF/view/salesmgmt/salesNcollectMgmt/salesMgmt.jsp @@ -75,94 +75,109 @@ function openSalesFormPopup(saleNo, orderNo){ -
- - - - - -
-
- +
+
+
+

+ 영업관리> 매출관리> 매출등록 +

-
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + +
+

매출 리스트

+
+
+ +
+
+ + +
+
+
매출번호매출일자고객매출부서매출자매출자동결의서과세유형비고
수량단가공급가부가세합계
조회된 데이터가 없습니다.
${item.SALENO} - - - ${item.CUSTNM}${item.DEPTNM}${item.SALESMANNM}${item.RESOLUTIONNO}${item.TAXTYPENM}${item.REMARK}
+ + + + + + + + + + + + + + + + + + + + + + + + + + - - - -
매출번호매출일자고객매출부서매출자매출자동결의서과세유형비고
-
+ + 수량 + 단가 + 공급가 + 부가세 + 합계 + + + + + + + 조회된 데이터가 없습니다. + + + + + + ${item.SALENO} + + + + + ${item.CUSTNM} + ${item.DEPTNM} + ${item.SALESMANNM} + + + + + + ${item.RESOLUTIONNO} + ${item.TAXTYPENM} + ${item.REMARK} + + + + + + +
+
+ + + +
- - +
\ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 3d6f3e2..4a4885a 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -15,9 +15,8 @@ services: -DDB_PASSWORD=waceplm0909!! volumes: - wace-plm-project_data:/data_storage - - wace-plm-app_data:/path/inside/container + - ./WebContent:/usr/local/tomcat/webapps/ROOT restart: unless-stopped volumes: wace-plm-project_data: - wace-plm-app_data: diff --git a/rebuild-and-restart.sh b/rebuild-and-restart.sh new file mode 100755 index 0000000..67a94f7 --- /dev/null +++ b/rebuild-and-restart.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +# 색상 정의 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +echo -e "${BLUE}================================${NC}" +echo -e "${BLUE} 개발 환경 재빌드 & 재시작${NC}" +echo -e "${BLUE}================================${NC}" +echo "" + +# 1단계: 컴파일 +echo -e "${YELLOW}[1/3] Java 소스 컴파일 중...${NC}" +./compile_only.sh +if [ $? -ne 0 ]; then + echo -e "${RED}✗ 컴파일 실패!${NC}" + exit 1 +fi +echo -e "${GREEN}✓ 컴파일 완료${NC}" +echo "" + +# 2단계: 도커 중지 및 삭제 +echo -e "${YELLOW}[2/3] 기존 도커 컨테이너 중지 및 삭제 중...${NC}" +docker-compose -f docker-compose.dev.yml down 2>&1 | grep -v "level=warning" +if [ $? -ne 0 ]; then + echo -e "${RED}✗ 도커 중지 실패!${NC}" + exit 1 +fi +echo -e "${GREEN}✓ 기존 컨테이너 삭제 완료${NC}" +echo "" + +# 3단계: 도커 이미지 재빌드 및 시작 +echo -e "${YELLOW}[3/3] 도커 이미지 재빌드 및 시작 중...${NC}" +docker-compose -f docker-compose.dev.yml build --no-cache 2>&1 | grep -v "level=warning" | tail -5 +if [ $? -ne 0 ]; then + echo -e "${RED}✗ 도커 빌드 실패!${NC}" + exit 1 +fi + +docker-compose -f docker-compose.dev.yml up -d 2>&1 | grep -v "level=warning" +if [ $? -ne 0 ]; then + echo -e "${RED}✗ 도커 시작 실패!${NC}" + exit 1 +fi +echo -e "${GREEN}✓ 도커 컨테이너 시작 완료${NC}" +echo "" + +# Tomcat 시작 대기 +echo -e "${YELLOW}Tomcat 시작 대기 중...${NC}" +sleep 10 + +# 상태 확인 +docker ps | grep wace-plm-dev > /dev/null +if [ $? -eq 0 ]; then + echo "" + echo -e "${GREEN}================================${NC}" + echo -e "${GREEN} 🎉 재빌드 완료!${NC}" + echo -e "${GREEN}================================${NC}" + echo "" + echo -e "${BLUE}서버 접속: ${NC}http://localhost:9090" + echo "" + + # 로그 확인 팁 + echo -e "${YELLOW}💡 로그 확인: ${NC}docker logs -f wace-plm-dev" + echo -e "${YELLOW}💡 컨테이너 중지: ${NC}docker-compose -f docker-compose.dev.yml down" +else + echo -e "${RED}✗ 컨테이너가 실행되지 않았습니다!${NC}" + echo -e "${YELLOW}로그 확인: ${NC}docker logs wace-plm-dev" + exit 1 +fi + diff --git a/src/com/pms/salesmgmt/controller/SalesNcollectMgmtController.java b/src/com/pms/salesmgmt/controller/SalesNcollectMgmtController.java index bb8317c..10aafaf 100644 --- a/src/com/pms/salesmgmt/controller/SalesNcollectMgmtController.java +++ b/src/com/pms/salesmgmt/controller/SalesNcollectMgmtController.java @@ -29,6 +29,7 @@ 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; /** *
@@ -63,6 +64,117 @@ public class SalesNcollectMgmtController {
 	@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; + } + /** *
 	 * 계약관리 목록 조회
diff --git a/src/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml b/src/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml
index 5a76e95..61b6849 100644
--- a/src/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml
+++ b/src/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml
@@ -812,5 +812,188 @@
 			,editEmpNo = #{cretEmpNo}			/* 수정자 */
 	
 	
+	
+	
+	
+	
+	
+	
 
 
diff --git a/src/com/pms/salesmgmt/service/SalesNcollectMgmtService.java b/src/com/pms/salesmgmt/service/SalesNcollectMgmtService.java
index 8c6eb00..b2b71ae 100644
--- a/src/com/pms/salesmgmt/service/SalesNcollectMgmtService.java
+++ b/src/com/pms/salesmgmt/service/SalesNcollectMgmtService.java
@@ -129,6 +129,70 @@ public class SalesNcollectMgmtService {
 		return CommonUtils.toUpperCaseMapKey(resultMap);
 	}
 	
+	/**
+	 * 
+	 * 매출 목록 조회 (Tabulator Grid)
+	 * 
+ * @param request + * @param paramMap - 매출관리 검색 정보 + * @return List> + */ + @SuppressWarnings({ "rawtypes", "unchecked" }) + public List> getSalesMgmtGridList(HttpServletRequest request + , Map paramMap) { + + List> resultList = new ArrayList>(); + SqlSession sqlSession = null; + + try { + sqlSession = SqlMapConfig.getInstance().getSqlSession(); + + // Tabulator는 page, size 파라미터를 사용 + String page = CommonUtils.checkNull(request.getParameter("page"), "1"); + String size = CommonUtils.checkNull(request.getParameter("size"), Constants.ADMIN_COUNT_PER_PAGE+""); + int pageNum = Integer.parseInt(page); + int sizeNum = Integer.parseInt(size); + + paramMap.put("PAGE_START", (pageNum - 1) * sizeNum); + paramMap.put("COUNT_PER_PAGE", sizeNum); + + resultList = (ArrayList) sqlSession.selectList("salesNcollectMgmt.getSalesMgmtGridList", paramMap); + } catch(Exception e) { + e.printStackTrace(); + } finally { + if(sqlSession != null) { + sqlSession.close(); + } + } + + return CommonUtils.toUpperCaseMapKey(resultList); + } + + /** + *
+	 * 매출 목록 카운트 조회 (Tabulator Grid)
+	 * 
+ * @param paramMap + * @return int + */ + public int getSalesMgmtGridListCount(Map paramMap) { + int totalCount = 0; + SqlSession sqlSession = null; + + try { + sqlSession = SqlMapConfig.getInstance().getSqlSession(); + totalCount = sqlSession.selectOne("salesNcollectMgmt.getSalesMgmtGridListCount", paramMap); + } catch(Exception e) { + e.printStackTrace(); + } finally { + if(sqlSession != null) { + sqlSession.close(); + } + } + + return totalCount; + } + /** *
 	 * 매출관리 등록
diff --git a/start-docker-linux.sh b/start-docker-linux.sh
old mode 100644
new mode 100755