Merge pull request '판매관리, 매출관리 업데이트' (#8) from V2025101701 into main

Reviewed-on: #8
This commit was merged in pull request #8.
This commit is contained in:
2025-10-23 02:31:28 +00:00
7 changed files with 62 additions and 101 deletions

View File

@@ -975,7 +975,6 @@
/* INCOTERMS 필드 없음 - 검색 조건 무시 */
</if>
ORDER BY T.REGDATE DESC
LIMIT #{COUNT_PER_PAGE} OFFSET #{PAGE_START}
</select>
<!-- 매출관리 그리드 목록 개수 - project_mgmt 테이블 기반 -->

View File

@@ -45,13 +45,11 @@
//엔터키로 조회
$("input").keyup(function(e){
if(e.keyCode == 13){
$("#page").val("1");
fn_search();
}
});
$("#btnSearch").click(function(){
$("#page").val("1");
fn_search();
});
@@ -183,7 +181,7 @@ var columns = [
];
function fn_search(){
// 그리드 조회 및 Total 합계 업데이트
// 그리드 조회 및 Total 합계 업데이트를 위한 커스텀 AJAX
$.ajax({
url: "/revenueMgmt/revenueGridList.do",
type: "POST",
@@ -196,23 +194,23 @@ function fn_search(){
_endLoading();
},
success: function(response) {
console.log("Response:", response); // 디버깅용
// 그리드 데이터 설정
if(_tabulGrid){
_tabulGrid.setData(response.RESULTLIST || []);
} else {
// 그리드 초기화
_tabulGrid = fnc_tabul_search(_tabul_layout_fitColumns, _tabulGrid, "/revenueMgmt/revenueGridList.do", columns, true);
_tabulGrid = new Tabulator("#mainGrid", {
layout: _tabul_layout_fitColumns,
columns: columns,
data: response.RESULTLIST || []
});
// 그리드 초기화 후 Excel 버튼 이벤트 등록
fn_bindExcelButton();
}
// Total 합계 업데이트 (소문자 키 사용)
// Total 합계 업데이트
if(response && response.TOTALS){
var totals = response.TOTALS;
console.log("Totals:", totals); // 디버깅용
// PostgreSQL이 소문자로 반환하므로 소문자 키 사용
var supplyPrice = totals.total_supply_price || totals.TOTAL_SUPPLY_PRICE || 0;
var vat = totals.total_vat || totals.TOTAL_VAT || 0;
var amount = totals.total_amount || totals.TOTAL_AMOUNT || 0;
@@ -221,7 +219,6 @@ function fn_search(){
$("#totalVat").text(Number(vat).toLocaleString());
$("#totalAmount").text(Number(amount).toLocaleString());
} else {
console.log("No TOTALS in response"); // 디버깅용
$("#totalSupplyPrice").text("0");
$("#totalVat").text("0");
$("#totalAmount").text("0");
@@ -233,12 +230,10 @@ function fn_search(){
}
},
error: function(jqxhr, status, error){
console.error("Error:", jqxhr, status, error);
_endLoading();
alert("데이터 조회 중 오류가 발생했습니다.");
console.error(error);
}
});
_tabulGrid = fnc_tabul_search(_tabul_layout_fitColumns, _tabulGrid, "/revenueMgmt/revenueGridList.do", columns, true);
}
function _fnc_datepick(){
@@ -330,10 +325,10 @@ function fn_excel() {
function fn_FileRegist(objId, docType, docTypeName){
var popup_width = 800;
var popup_height = 350;
var popup_height = 680;
var params = "?targetObjId="+objId+"&docType="+docType+"&docTypeName="+docTypeName;
var url = "/common/FileRegistPopup.do"+params;
var url = "/contractMgmt/FileRegistPopup.do"+params;
fn_centerPopup(popup_width, popup_height, url);
}
@@ -347,9 +342,6 @@ function fn_FileRegist(objId, docType, docTypeName){
<form name="form1" id="form1" method="post">
<input type="hidden" name="actionType" id="actionType">
<input type="hidden" name="page" id="page" value="1">
<input type="hidden" name="COUNT_PER_PAGE" id="COUNT_PER_PAGE" value="10">
<input type="hidden" name="PAGE_START" id="PAGE_START" value="0">
<div class="min_part_enroll">
<div class="content-box">
<div class="content-box-s">

View File

@@ -18,18 +18,16 @@
fnc_datepick(); // 날짜 선택기 초기화
$('.select2').select2(); // select2 초기화
// 엔터키로 조회
$("input").keyup(function(e){
if(e.keyCode == 13){
$("#page").val("1");
fn_search();
}
});
// 엔터키로 조회
$("input").keyup(function(e){
if(e.keyCode == 13){
fn_search();
}
});
$("#btnSearch").click(function(){
$("#page").val("1");
fn_search();
});
$("#btnSearch").click(function(){
fn_search();
});
// 초기 데이터 조회
fn_search();
@@ -50,10 +48,10 @@
function fn_FileRegist(objId, docType, docTypeName){
var popup_width = 800;
var popup_height = 350;
var popup_height = 680;
var params = "?targetObjId="+objId+"&docType="+docType+"&docTypeName="+docTypeName;
var url = "/common/FileRegistPopup.do"+params;
var url = "/contractMgmt/FileRegistPopup.do"+params;
fn_centerPopup(popup_width, popup_height, url);
}
@@ -155,7 +153,6 @@ function fn_bulkRegister(){
</head>
<body>
<form name="form1" id="form1" method="post">
<input type="hidden" name="page" id="page" value="1">
<input type="hidden" name="actionType" id="actionType">
<div class="min_part_enroll">
<div class="content-box">

View File

@@ -139,10 +139,12 @@ function fnc_tabul_searchAjax(gridObj, searchURL, formId, hidePaging, checkValid
return;
}
var formData = $("#"+formId).serializeObject();
$.ajax({
url: searchURL,
type:"POST",
data:$("#"+formId).serializeObject(),
data:formData,
dataType:"json",
//async:false,
beforeSend:function(){
@@ -162,9 +164,8 @@ function fnc_tabul_searchAjax(gridObj, searchURL, formId, hidePaging, checkValid
//console.log(data);
},
error: function(jqxhr, status, error){
console.log(jqxhr);
console.log(status);
console.log(error);
alert("데이터 조회 중 오류가 발생했습니다.");
console.error(error);
}
});
}

View File

@@ -175,14 +175,13 @@ public class SalesNcollectMgmtController {
// 수주상태
codeMap.put("orderStatusList",
commonService.bizMakeOptionList("0000932", "", "common.getCodeselect"));
// 출하대기 상태
codeMap.put("shippingStatusList",
salesMgmtCommonService.bizMakeOptionList("SH", "", "salesMgmtCommon.getCodeList"));
// 담당자
codeMap.put("managerList",
salesMgmtCommonService.bizMakeOptionList("", "", "salesMgmtCommon.getSalesmanList"));
request.setAttribute("codeMap", codeMap);
// 출하대기 상태
codeMap.put("shippingStatusList",
salesMgmtCommonService.bizMakeOptionList("SH", "", "salesMgmtCommon.getCodeList"));
// 담당자
codeMap.put("managerList", commonService.bizMakeOptionList("", "", "common.getUserselect"));
request.setAttribute("codeMap", codeMap);
} catch (Exception e) {
e.printStackTrace();
}
@@ -200,39 +199,27 @@ public class SalesNcollectMgmtController {
@ResponseBody
@RequestMapping(value = "/revenueMgmt/revenueGridList.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 {
System.out.println("===== revenueGridList.do 파라미터 =====");
System.out.println("paramMap: " + paramMap);
// commonService.selectListPagingNew를 사용하여 페이지네이션 처리
commonService.selectListPagingNew("salesNcollectMgmt.getSalesMgmtGridList", request, paramMap);
List<Map<String, Object>> list = salesNcollectMgmtService.getSalesMgmtGridList(request, paramMap);
int totalCount = salesNcollectMgmtService.getSalesMgmtGridListCount(paramMap);
// Total 합계 조회 (기존 로직 유지)
Map<String, Object> totals = salesNcollectMgmtService.getSalesMgmtTotals(paramMap);
System.out.println("list size: " + list.size());
System.out.println("totalCount: " + totalCount);
System.out.println("totals: " + totals);
resultMap.put("RESULTLIST", list);
resultMap.put("last_page", (int) Math.ceil((double)totalCount / Integer.parseInt(CommonUtils.checkNull(request.getParameter("size"), "10"))));
resultMap.put("TOTALS", totals); // Total 공급가액, 부가세, 총액
paramMap.put("TOTALS", totals);
} catch(Exception e) {
e.printStackTrace();
// Tabulator는 에러 발생 시 빈 배열을 기대합니다.
resultMap.put("RESULTLIST", new java.util.ArrayList<>());
resultMap.put("last_page", 0);
// 에러 발생 시 빈 데이터 설정
paramMap.put("RESULTLIST", new java.util.ArrayList<>());
// Total 초기화
Map<String, Object> emptyTotals = new HashMap<String, Object>();
emptyTotals.put("TOTAL_SUPPLY_PRICE", 0);
emptyTotals.put("TOTAL_VAT", 0);
emptyTotals.put("TOTAL_AMOUNT", 0);
resultMap.put("TOTALS", emptyTotals);
paramMap.put("TOTALS", emptyTotals);
}
return resultMap;
return paramMap;
}
/**
@@ -264,8 +251,7 @@ public class SalesNcollectMgmtController {
Map<String, Object> codeMap = new HashMap<String, Object>();
// 담당자
codeMap.put("managerList",
salesMgmtCommonService.bizMakeOptionList("", "", "salesMgmtCommon.getSalesmanList"));
codeMap.put("managerList", commonService.bizMakeOptionList("", "", "common.getUserselect"));
// 기존 판매 정보 조회 후 환종(통화) 공통코드 세팅
Map<String, Object> saleInfo = null;
@@ -293,22 +279,9 @@ public class SalesNcollectMgmtController {
@RequestMapping(value = "/salesMgmt/salesMgmtGridList.do", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> getSalesMgmtGridList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap) {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
List<Map<String, Object>> list = salesNcollectMgmtService.getSalesMgmtGridList(request, paramMap);
int totalCount = salesNcollectMgmtService.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;
// commonService.selectListPagingNew를 사용하여 페이지네이션 HTML 생성
commonService.selectListPagingNew("salesNcollectMgmt.getSalesMgmtGridList", request, paramMap);
return paramMap;
}
@RequestMapping(value = "/salesMgmt/saveSales.do", method = RequestMethod.POST)

View File

@@ -975,7 +975,6 @@
/* INCOTERMS 필드 없음 - 검색 조건 무시 */
</if>
ORDER BY T.REGDATE DESC
LIMIT #{COUNT_PER_PAGE} OFFSET #{PAGE_START}
</select>
<!-- 매출관리 그리드 목록 개수 - project_mgmt 테이블 기반 -->

View File

@@ -2466,22 +2466,22 @@ public class CommonService extends BaseService {
//qryList = new StringBuffer();
selectListPaging2(sqlSession, log, sqlId, request, pageMap, query, resultList);
//결과 없으면 재검색 1번(240723 추가)
if(TOTAL_CNT_INT > 0 && (resultList == null || resultList.isEmpty()) ) { //!isFirstRecursive &&
pageMap.put("page", "1"); //1페이지 검색
pageMap = CommonUtils.setPagingInfo(request, rowCnt); //reset
//return selectListPagingAct(sqlId, request, paramMap, isNew, true);
selectListPaging2(sqlSession, log, sqlId, request, pageMap, query, resultList);
}
//#SET PAGE_HTML ///////////////////////////////////////////////////////
String PAGE_HTML = "";
if(isNew){
PAGE_HTML = CommonUtils.getPageingHtml2(request, resultList, false, pageMap);
}else{
PAGE_HTML = CommonUtils.getPageingHtml(request, resultList, false);
}
paramMap.put("PAGE_HTML", PAGE_HTML);
//결과 없으면 재검색 1번(240723 추가)
if(TOTAL_CNT_INT > 0 && (resultList == null || resultList.isEmpty()) ) { //!isFirstRecursive &&
pageMap.put("page", "1"); //1페이지 검색
pageMap = CommonUtils.setPagingInfo(request, rowCnt); //reset
//return selectListPagingAct(sqlId, request, paramMap, isNew, true);
selectListPaging2(sqlSession, log, sqlId, request, pageMap, query, resultList);
}
//#SET PAGE_HTML ///////////////////////////////////////////////////////
String PAGE_HTML = "";
if(isNew){
PAGE_HTML = CommonUtils.getPageingHtml2(request, resultList, false, pageMap);
}else{
PAGE_HTML = CommonUtils.getPageingHtml(request, resultList, false);
}
paramMap.put("PAGE_HTML", PAGE_HTML);
request.setAttribute("PAGE_HTML" , PAGE_HTML);
} catch (SQLException e) {
// TODO Auto-generated catch block