행이랑 검색필터 바꾸기 엑셀도 출하일 형식 맞추게 일단 로직 해놨음
This commit is contained in:
@@ -163,25 +163,38 @@ public class SalesNcollectMgmtController {
|
||||
// 코드정보 (기존 로직과 동일하게 설정 가능)
|
||||
Map<String, Object> codeMap = new HashMap<String, Object>();
|
||||
|
||||
// 주문유형
|
||||
// 주문유형 - 0000167 코드 사용 (판매, 개발, 수리, 개조)
|
||||
codeMap.put("orderTypeList",
|
||||
salesMgmtCommonService.bizMakeOptionList("GE", "", "salesMgmtCommon.getCodeList"));
|
||||
commonService.bizMakeOptionList("0000167", "", "common.getCodeselect"));
|
||||
// 제품구분
|
||||
codeMap.put("productTypeList",
|
||||
salesMgmtCommonService.bizMakeOptionList("", "", "salesMgmtCommon.getGoodsList"));
|
||||
commonService.bizMakeOptionList("0000001", "", "common.getCodeselect"));
|
||||
// 국내/해외
|
||||
codeMap.put("nationList",
|
||||
salesMgmtCommonService.bizMakeOptionList("AR", "", "salesMgmtCommon.getCodeList"));
|
||||
commonService.bizMakeOptionList("0001219", "", "common.getCodeselect"));
|
||||
// 고객사
|
||||
codeMap.put("customer_cd", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("customer_objid")), "common.getsupplyselect"));
|
||||
// 수주상태
|
||||
codeMap.put("orderStatusList",
|
||||
commonService.bizMakeOptionList("0000932", "", "common.getCodeselect"));
|
||||
// 출하대기 상태
|
||||
codeMap.put("shippingStatusList",
|
||||
salesMgmtCommonService.bizMakeOptionList("SH", "", "salesMgmtCommon.getCodeList"));
|
||||
// 담당자
|
||||
codeMap.put("managerList", commonService.bizMakeOptionList("", "", "common.getUserselect"));
|
||||
// 수주상태
|
||||
codeMap.put("orderStatusList",
|
||||
commonService.bizMakeOptionList("0000963", "", "common.getCodeselect"));
|
||||
// 출하지시상태 - COMM_CODE 테이블에서 조회 (PARENT_CODE_ID를 찾아서 사용)
|
||||
// 임시로 여러 코드를 시도해보거나, 직접 쿼리로 조회
|
||||
String shippingStatusList = commonService.bizMakeOptionList("SHIPPING_STATUS", "", "common.getCodeselect");
|
||||
if (shippingStatusList == null || shippingStatusList.trim().isEmpty()) {
|
||||
// SHIPPING_STATUS 코드가 없으면 다른 코드 시도
|
||||
shippingStatusList = commonService.bizMakeOptionList("0001300", "", "common.getCodeselect");
|
||||
}
|
||||
if (shippingStatusList == null || shippingStatusList.trim().isEmpty()) {
|
||||
// 그래도 없으면 하드코딩
|
||||
StringBuilder shippingStatusOptions = new StringBuilder();
|
||||
shippingStatusOptions.append("<option value='출하지시'>출하지시</option>");
|
||||
shippingStatusOptions.append("<option value='출하완료'>출하완료</option>");
|
||||
shippingStatusOptions.append("<option value='출하대기'>출하대기</option>");
|
||||
shippingStatusList = shippingStatusOptions.toString();
|
||||
}
|
||||
codeMap.put("shippingStatusList", shippingStatusList);
|
||||
// 담당자
|
||||
codeMap.put("managerList", commonService.bizMakeOptionList("", "", "common.getUserselect"));
|
||||
|
||||
request.setAttribute("codeMap", codeMap);
|
||||
} catch (Exception e) {
|
||||
@@ -320,8 +333,28 @@ public class SalesNcollectMgmtController {
|
||||
@RequestMapping(value = "/salesMgmt/salesMgmtGridList.do", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public Map<String, Object> getSalesMgmtGridList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap) {
|
||||
// 디버깅: 검색 파라미터 로그 출력
|
||||
System.out.println("=== 판매관리 조회 파라미터 (백엔드) ===");
|
||||
System.out.println("search_partObjId: [" + paramMap.get("search_partObjId") + "]");
|
||||
System.out.println("search_partNo: [" + paramMap.get("search_partNo") + "]");
|
||||
System.out.println("search_partName: [" + paramMap.get("search_partName") + "]");
|
||||
System.out.println("orderType: [" + paramMap.get("orderType") + "]");
|
||||
System.out.println("poNo: [" + paramMap.get("poNo") + "]");
|
||||
System.out.println("serialNo: [" + paramMap.get("serialNo") + "]");
|
||||
|
||||
// 품명/품번 파라미터가 비어있으면 경고
|
||||
if((paramMap.get("search_partNo") == null || paramMap.get("search_partNo").toString().isEmpty()) &&
|
||||
(paramMap.get("search_partName") == null || paramMap.get("search_partName").toString().isEmpty())) {
|
||||
System.out.println("⚠️ 품번/품명 파라미터가 비어있습니다!");
|
||||
}
|
||||
|
||||
// commonService.selectListPagingNew를 사용하여 페이지네이션 HTML 생성
|
||||
commonService.selectListPagingNew("salesNcollectMgmt.getSalesMgmtGridList", request, paramMap);
|
||||
|
||||
// 디버깅: 조회 결과 개수 출력
|
||||
List<?> resultList = (List<?>) paramMap.get("RESULTLIST");
|
||||
System.out.println("✅ 조회 결과 개수: " + (resultList != null ? resultList.size() : 0));
|
||||
|
||||
return paramMap;
|
||||
}
|
||||
|
||||
|
||||
@@ -755,35 +755,39 @@
|
||||
AND PAID_TYPE = #{paid_type}
|
||||
</if>
|
||||
|
||||
<!-- 품번/품명 검색: PART_OBJID로 정확하게 검색 -->
|
||||
<if test="search_partObjId != null and search_partObjId != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM CONTRACT_ITEM CI
|
||||
WHERE CI.CONTRACT_OBJID = T.OBJID
|
||||
AND CI.STATUS = 'ACTIVE'
|
||||
AND CI.PART_OBJID = #{search_partObjId}
|
||||
)
|
||||
</if>
|
||||
|
||||
<if test="search_serialNo != null and search_serialNo != ''">
|
||||
AND UPPER(SERIAL_NO) LIKE UPPER('%${search_serialNo}%')
|
||||
</if>
|
||||
|
||||
<if test="receipt_start_date != null and !''.equals(receipt_start_date)">
|
||||
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{receipt_start_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="receipt_end_date != null and !''.equals(receipt_end_date)">
|
||||
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{receipt_end_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<!-- 품번/품명 검색: PART_OBJID로 정확하게 검색 -->
|
||||
<if test="search_partObjId != null and search_partObjId != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM CONTRACT_ITEM CI
|
||||
WHERE CI.CONTRACT_OBJID = T.OBJID
|
||||
AND CI.STATUS = 'ACTIVE'
|
||||
AND CI.PART_OBJID = #{search_partObjId}
|
||||
)
|
||||
</if>
|
||||
|
||||
<if test="search_serialNo != null and search_serialNo != ''">
|
||||
AND UPPER(SERIAL_NO) LIKE UPPER('%${search_serialNo}%')
|
||||
</if>
|
||||
|
||||
<if test="search_poNo != null and search_poNo != ''">
|
||||
AND UPPER(PO_NO) LIKE UPPER('%${search_poNo}%')
|
||||
</if>
|
||||
|
||||
<if test="order_start_date != null and !''.equals(order_start_date)">
|
||||
AND TO_DATE(ORDER_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{order_start_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="order_end_date != null and !''.equals(order_end_date)">
|
||||
AND TO_DATE(ORDER_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{order_end_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
|
||||
<if test="due_start_date != null and !''.equals(due_start_date)">
|
||||
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{due_start_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="due_end_date != null and !''.equals(due_end_date)">
|
||||
AND TO_DATE(DUE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{due_end_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
ORDER BY REGDATE DESC
|
||||
<if test="due_start_date != null and !''.equals(due_start_date)">
|
||||
AND TO_DATE(DUE_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{due_start_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="due_end_date != null and !''.equals(due_end_date)">
|
||||
AND TO_DATE(DUE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{due_end_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
ORDER BY REGDATE DESC
|
||||
</select>
|
||||
|
||||
<select id="contractList_bak" parameterType="map" resultType="map">
|
||||
@@ -2316,6 +2320,9 @@ SELECT
|
||||
<if test="supply_name != null and supply_name != ''">
|
||||
AND UPPER(SUPPLY_NAME) LIKE UPPER('%${supply_name}%')
|
||||
</if>
|
||||
<if test="manager_name != null and manager_name != ''">
|
||||
AND UPPER(MANAGER1_NAME) LIKE UPPER('%${manager_name}%')
|
||||
</if>
|
||||
<if test="searchStatus != null and searchStatus != ''">
|
||||
AND UPPER(STATUS) LIKE UPPER('%${searchStatus}%')
|
||||
</if>
|
||||
@@ -4308,33 +4315,40 @@ WHERE
|
||||
AND PAID_TYPE = #{paid_type}
|
||||
</if>
|
||||
|
||||
<if test="search_partNo != null and search_partNo != ''">
|
||||
AND UPPER(PART_NO) LIKE UPPER('%${search_partNo}%')
|
||||
</if>
|
||||
|
||||
<if test="search_partName != null and search_partName != ''">
|
||||
AND UPPER(PART_NAME) LIKE UPPER('%${search_partName}%')
|
||||
</if>
|
||||
|
||||
<if test="search_serialNo != null and search_serialNo != ''">
|
||||
AND UPPER(SERIAL_NO) LIKE UPPER('%${search_serialNo}%')
|
||||
</if>
|
||||
|
||||
<if test="receipt_start_date != null and !''.equals(receipt_start_date)">
|
||||
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{receipt_start_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="receipt_end_date != null and !''.equals(receipt_end_date)">
|
||||
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{receipt_end_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<!-- 품번/품명 검색: PART_OBJID로 정확하게 검색 -->
|
||||
<if test="search_partObjId != null and search_partObjId != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM CONTRACT_ITEM CI
|
||||
WHERE CI.CONTRACT_OBJID = T.OBJID
|
||||
AND CI.STATUS = 'ACTIVE'
|
||||
AND CI.PART_OBJID = #{search_partObjId}
|
||||
)
|
||||
</if>
|
||||
|
||||
<if test="search_serialNo != null and search_serialNo != ''">
|
||||
AND UPPER(SERIAL_NO) LIKE UPPER('%${search_serialNo}%')
|
||||
</if>
|
||||
|
||||
<if test="search_poNo != null and search_poNo != ''">
|
||||
AND UPPER(PO_NO) LIKE UPPER('%${search_poNo}%')
|
||||
</if>
|
||||
|
||||
<if test="order_start_date != null and !''.equals(order_start_date)">
|
||||
AND TO_DATE(ORDER_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{order_start_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="order_end_date != null and !''.equals(order_end_date)">
|
||||
AND TO_DATE(ORDER_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{order_end_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
|
||||
<if test="due_start_date != null and !''.equals(due_start_date)">
|
||||
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{due_start_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="due_end_date != null and !''.equals(due_end_date)">
|
||||
AND TO_DATE(DUE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{due_end_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
ORDER BY REGDATE DESC
|
||||
</select>
|
||||
<if test="due_start_date != null and !''.equals(due_start_date)">
|
||||
AND TO_DATE(DUE_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{due_start_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="due_end_date != null and !''.equals(due_end_date)">
|
||||
AND TO_DATE(DUE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{due_end_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
ORDER BY REGDATE DESC
|
||||
</select>
|
||||
|
||||
<!-- 영업정보 조회 (수주등록용) -->
|
||||
<select id="getContractInfo" parameterType="map" resultType="map">
|
||||
@@ -4487,10 +4501,20 @@ WHERE
|
||||
AND OBJID = #{partObjId}
|
||||
</if>
|
||||
<if test="searchTerm != null and searchTerm != ''">
|
||||
AND (
|
||||
UPPER(PART_NO) LIKE '%' || UPPER(#{searchTerm}) || '%'
|
||||
OR UPPER(PART_NAME) LIKE '%' || UPPER(#{searchTerm}) || '%'
|
||||
)
|
||||
<choose>
|
||||
<when test="searchType == 'partNo'">
|
||||
AND UPPER(PART_NO) LIKE '%' || UPPER(#{searchTerm}) || '%'
|
||||
</when>
|
||||
<when test="searchType == 'partName'">
|
||||
AND UPPER(PART_NAME) LIKE '%' || UPPER(#{searchTerm}) || '%'
|
||||
</when>
|
||||
<otherwise>
|
||||
AND (
|
||||
UPPER(PART_NO) LIKE '%' || UPPER(#{searchTerm}) || '%'
|
||||
OR UPPER(PART_NAME) LIKE '%' || UPPER(#{searchTerm}) || '%'
|
||||
)
|
||||
</otherwise>
|
||||
</choose>
|
||||
</if>
|
||||
ORDER BY
|
||||
PART_NO
|
||||
|
||||
@@ -863,28 +863,46 @@
|
||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||
AND CI.PART_OBJID = T.PART_OBJID
|
||||
AND CI.STATUS = 'ACTIVE') AS CUSTOMER_REQUEST,
|
||||
CODE_NAME(T.CONTRACT_RESULT) AS ORDER_STATUS,
|
||||
T.PO_NO,
|
||||
COALESCE(T.CONTRACT_DATE, (SELECT CM.order_date FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID)) AS ORDER_DATE,
|
||||
CASE WHEN EXISTS(
|
||||
SELECT 1 FROM ATTACH_FILE_INFO
|
||||
WHERE TARGET_OBJID = T.CONTRACT_OBJID
|
||||
AND DOC_TYPE='ORDER_DOC'
|
||||
AND UPPER(STATUS) = 'ACTIVE'
|
||||
) THEN 'Y' ELSE 'N' END AS ORDER_ATTACH,
|
||||
(SELECT CM.PRODUCTION_STATUS FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PRODUCTION_STATUS,
|
||||
-- 판매 관련 필드들 (sales_registration 테이블에서 한 번에 가져오기)
|
||||
COALESCE(SR.shipping_order_status, '') AS SHIPPING_ORDER_STATUS,
|
||||
COALESCE(SR.sales_quantity, 0) AS SALES_QUANTITY,
|
||||
COALESCE(SR.sales_unit_price, 0) AS SALES_UNIT_PRICE,
|
||||
COALESCE(SR.sales_supply_price, 0) AS SALES_SUPPLY_PRICE,
|
||||
COALESCE(SR.sales_vat, 0) AS SALES_VAT,
|
||||
COALESCE(SR.sales_total_amount, 0) AS SALES_TOTAL_AMOUNT,
|
||||
COALESCE(SR.sales_total_amount, 0) AS SALES_TOTAL_AMOUNT_KRW,
|
||||
COALESCE(SR.sales_currency, T.CONTRACT_CURRENCY) AS SALES_CURRENCY,
|
||||
CODE_NAME(COALESCE(SR.sales_currency, T.CONTRACT_CURRENCY)) AS SALES_CURRENCY_NAME,
|
||||
COALESCE(SR.sales_exchange_rate, T.CONTRACT_PRICE_CURRENCY::numeric, 0) AS SALES_EXCHANGE_RATE,
|
||||
COALESCE(TO_CHAR(SR.shipping_date, 'YYYY-MM-DD'), '') AS SHIPPING_DATE,
|
||||
CODE_NAME(T.CONTRACT_RESULT) AS ORDER_STATUS,
|
||||
(SELECT CM.PO_NO FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PO_NO,
|
||||
COALESCE(T.CONTRACT_DATE, (SELECT CM.order_date FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID)) AS ORDER_DATE,
|
||||
CASE WHEN EXISTS(
|
||||
SELECT 1 FROM ATTACH_FILE_INFO
|
||||
WHERE TARGET_OBJID = T.CONTRACT_OBJID
|
||||
AND DOC_TYPE='ORDER_DOC'
|
||||
AND UPPER(STATUS) = 'ACTIVE'
|
||||
) THEN 'Y' ELSE 'N' END AS ORDER_ATTACH,
|
||||
(SELECT CM.PRODUCTION_STATUS FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PRODUCTION_STATUS,
|
||||
-- 판매 관련 필드들 (sales_registration 테이블에서 한 번에 가져오기)
|
||||
COALESCE(SR.shipping_order_status, '') AS SHIPPING_ORDER_STATUS,
|
||||
COALESCE(SR.sales_quantity, 0) AS SALES_QUANTITY,
|
||||
COALESCE(SR.sales_unit_price, 0) AS SALES_UNIT_PRICE,
|
||||
COALESCE(SR.sales_supply_price, 0) AS SALES_SUPPLY_PRICE,
|
||||
COALESCE(SR.sales_vat, 0) AS SALES_VAT,
|
||||
COALESCE(SR.sales_total_amount, 0) AS SALES_TOTAL_AMOUNT,
|
||||
COALESCE(SR.sales_total_amount, 0) AS SALES_TOTAL_AMOUNT_KRW,
|
||||
-- 잔량 계산: 수주수량 - 판매수량
|
||||
COALESCE(T.QUANTITY::numeric, 0) - COALESCE(SR.sales_quantity, 0) AS REMAINING_QUANTITY,
|
||||
-- 잔량원화총액 계산: (수주수량 - 판매수량) * 판매단가
|
||||
(COALESCE(T.QUANTITY::numeric, 0) - COALESCE(SR.sales_quantity, 0)) * COALESCE(SR.sales_unit_price, 0) AS REMAINING_AMOUNT_KRW,
|
||||
COALESCE(SR.sales_currency, T.CONTRACT_CURRENCY) AS SALES_CURRENCY,
|
||||
CODE_NAME(COALESCE(SR.sales_currency, T.CONTRACT_CURRENCY)) AS SALES_CURRENCY_NAME,
|
||||
COALESCE(SR.sales_exchange_rate, T.CONTRACT_PRICE_CURRENCY::numeric, 0) AS SALES_EXCHANGE_RATE,
|
||||
COALESCE(TO_CHAR(SR.shipping_date, 'YYYY-MM-DD'), '') AS SHIPPING_DATE,
|
||||
-- 출하일 (분할출하 포함): 엑셀 다운로드용
|
||||
COALESCE(
|
||||
(SELECT
|
||||
CASE
|
||||
WHEN COUNT(DISTINCT shipping_date) = 0 THEN ''
|
||||
WHEN COUNT(DISTINCT shipping_date) = 1 THEN TO_CHAR(MIN(shipping_date), 'YYYY-MM-DD')
|
||||
ELSE TO_CHAR(MIN(shipping_date), 'YYYY-MM-DD') || '외' || (COUNT(DISTINCT shipping_date) - 1)::TEXT
|
||||
END
|
||||
FROM shipment_log
|
||||
WHERE target_objid = T.OBJID::VARCHAR
|
||||
AND shipping_date IS NOT NULL
|
||||
AND UPPER(COALESCE(shipping_status, '')) != 'CANCELLED'),
|
||||
COALESCE(TO_CHAR(SR.shipping_date, 'YYYY-MM-DD'), '')
|
||||
) AS SHIPPING_DATE_WITH_COUNT,
|
||||
COALESCE(SR.shipping_method, '') AS SHIPPING_METHOD,
|
||||
COALESCE(
|
||||
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = SR.manager_user_id),
|
||||
@@ -929,70 +947,103 @@
|
||||
)
|
||||
)
|
||||
</if>
|
||||
<if test="productNo != null and productNo != ''">
|
||||
AND T.PART_NO LIKE CONCAT('%', #{productNo}, '%')
|
||||
</if>
|
||||
<if test="productName != null and productName != ''">
|
||||
AND T.PART_NAME LIKE CONCAT('%', #{productName}, '%')
|
||||
</if>
|
||||
<if test="serialNo != null and serialNo != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM CONTRACT_ITEM CI
|
||||
JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID
|
||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||
AND CIS.SERIAL_NO LIKE CONCAT('%', #{serialNo}, '%')
|
||||
AND UPPER(CIS.STATUS) = 'ACTIVE'
|
||||
)
|
||||
</if>
|
||||
<if test="orderStatus != null and orderStatus != ''">
|
||||
AND T.CONTRACT_RESULT = #{orderStatus}
|
||||
</if>
|
||||
<if test="poNo != null and poNo != ''">
|
||||
AND T.PO_NO LIKE CONCAT('%', #{poNo}, '%')
|
||||
</if>
|
||||
<if test="requestDateFrom != null and requestDateFrom != ''">
|
||||
AND T.DUE_DATE <![CDATA[>=]]> #{requestDateFrom}
|
||||
</if>
|
||||
<if test="requestDateTo != null and requestDateTo != ''">
|
||||
AND T.DUE_DATE <![CDATA[<=]]> #{requestDateTo}
|
||||
</if>
|
||||
<if test="orderDateFrom != null and orderDateFrom != ''">
|
||||
AND T.CONTRACT_DATE <![CDATA[>=]]> #{orderDateFrom}
|
||||
</if>
|
||||
<if test="orderDateTo != null and orderDateTo != ''">
|
||||
AND T.CONTRACT_DATE <![CDATA[<=]]> #{orderDateTo}
|
||||
</if>
|
||||
<if test="shippingStatus != null and shippingStatus != ''">
|
||||
/* SALES_STATUS 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="shippingDateFrom != null and shippingDateFrom != ''">
|
||||
/* SHIPPING_DATE 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="shippingDateTo != null and shippingDateTo != ''">
|
||||
/* SHIPPING_DATE 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="shippingMethod != null and shippingMethod != ''">
|
||||
/* SHIPPING_METHOD 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="manager != null and manager != ''">
|
||||
AND T.PM_USER_ID = #{manager}
|
||||
<!-- 품번/품명 검색: PART_NO 또는 PART_NAME으로 검색 (한글 포함) -->
|
||||
<if test="(search_partNo != null and search_partNo != '') or (search_partName != null and search_partName != '')">
|
||||
AND (
|
||||
<if test="search_partNo != null and search_partNo != ''">
|
||||
T.PART_NO = #{search_partNo}
|
||||
</if>
|
||||
<if test="(search_partNo != null and search_partNo != '') and (search_partName != null and search_partName != '')">
|
||||
OR
|
||||
</if>
|
||||
<if test="search_partName != null and search_partName != ''">
|
||||
T.PART_NAME = #{search_partName}
|
||||
</if>
|
||||
)
|
||||
</if>
|
||||
<if test="incoterms != null and incoterms != ''">
|
||||
/* INCOTERMS 필드 없음 - 검색 조건 무시 */
|
||||
<if test="serialNo != null and serialNo != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM CONTRACT_ITEM CI
|
||||
JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID
|
||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||
AND CI.PART_OBJID = T.PART_OBJID
|
||||
AND CI.STATUS = 'ACTIVE'
|
||||
AND UPPER(CIS.SERIAL_NO) LIKE UPPER(CONCAT('%', #{serialNo}, '%'))
|
||||
AND UPPER(CIS.STATUS) = 'ACTIVE'
|
||||
)
|
||||
</if>
|
||||
<if test="salesStatus != null and salesStatus != ''">
|
||||
<choose>
|
||||
<when test="salesStatus == 'NOT_CLOSED'">
|
||||
AND (T.SALES_STATUS IS NULL OR T.SALES_STATUS = '' OR T.SALES_STATUS != '완료')
|
||||
</when>
|
||||
<otherwise>
|
||||
AND T.SALES_STATUS = #{salesStatus}
|
||||
</otherwise>
|
||||
</choose>
|
||||
<if test="orderStatus != null and orderStatus != ''">
|
||||
AND T.CONTRACT_RESULT = #{orderStatus}
|
||||
</if>
|
||||
-- 등록일 기준 최신순 정렬 (프로젝트 번호는 보조 정렬)
|
||||
ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC
|
||||
</select>
|
||||
<if test="poNo != null and poNo != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM CONTRACT_MGMT CM
|
||||
WHERE CM.OBJID = T.CONTRACT_OBJID
|
||||
AND UPPER(CM.PO_NO) LIKE UPPER(CONCAT('%', #{poNo}, '%'))
|
||||
)
|
||||
</if>
|
||||
<if test="requestDateFrom != null and requestDateFrom != ''">
|
||||
AND T.DUE_DATE <![CDATA[>=]]> #{requestDateFrom}
|
||||
</if>
|
||||
<if test="requestDateTo != null and requestDateTo != ''">
|
||||
AND T.DUE_DATE <![CDATA[<=]]> #{requestDateTo}
|
||||
</if>
|
||||
<if test="orderDateFrom != null and orderDateFrom != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM CONTRACT_MGMT CM
|
||||
WHERE CM.OBJID = T.CONTRACT_OBJID
|
||||
AND TO_DATE(CM.ORDER_DATE, 'YYYY-MM-DD') <![CDATA[>=]]> TO_DATE(#{orderDateFrom}, 'YYYY-MM-DD')
|
||||
)
|
||||
</if>
|
||||
<if test="orderDateTo != null and orderDateTo != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM CONTRACT_MGMT CM
|
||||
WHERE CM.OBJID = T.CONTRACT_OBJID
|
||||
AND TO_DATE(CM.ORDER_DATE, 'YYYY-MM-DD') <![CDATA[<=]]> TO_DATE(#{orderDateTo}, 'YYYY-MM-DD')
|
||||
)
|
||||
</if>
|
||||
<if test="shippingStatus != null and shippingStatus != ''">
|
||||
AND SR.shipping_order_status = #{shippingStatus}
|
||||
</if>
|
||||
<if test="shippingDateFrom != null and shippingDateFrom != ''">
|
||||
AND SR.shipping_date IS NOT NULL
|
||||
AND TO_DATE(TO_CHAR(SR.shipping_date, 'YYYY-MM-DD'), 'YYYY-MM-DD') <![CDATA[>=]]> TO_DATE(#{shippingDateFrom}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="shippingDateTo != null and shippingDateTo != ''">
|
||||
AND SR.shipping_date IS NOT NULL
|
||||
AND TO_DATE(TO_CHAR(SR.shipping_date, 'YYYY-MM-DD'), 'YYYY-MM-DD') <![CDATA[<=]]> TO_DATE(#{shippingDateTo}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="shippingMethod != null and shippingMethod != ''">
|
||||
/* SHIPPING_METHOD 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="manager != null and manager != ''">
|
||||
AND T.PM_USER_ID = #{manager}
|
||||
</if>
|
||||
<if test="incoterms != null and incoterms != ''">
|
||||
/* INCOTERMS 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="salesStatus != null and salesStatus != ''">
|
||||
<choose>
|
||||
<when test="salesStatus == 'NOT_CLOSED'">
|
||||
AND (T.SALES_STATUS IS NULL OR T.SALES_STATUS = '' OR T.SALES_STATUS != '완료')
|
||||
</when>
|
||||
<otherwise>
|
||||
AND T.SALES_STATUS = #{salesStatus}
|
||||
</otherwise>
|
||||
</choose>
|
||||
</if>
|
||||
<!-- 매출마감 기간 검색 -->
|
||||
<if test="salesDeadlineFrom != null and salesDeadlineFrom != ''">
|
||||
AND T.SALES_DEADLINE_DATE IS NOT NULL
|
||||
AND TO_DATE(T.SALES_DEADLINE_DATE, 'YYYY-MM-DD') <![CDATA[>=]]> TO_DATE(#{salesDeadlineFrom}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="salesDeadlineTo != null and salesDeadlineTo != ''">
|
||||
AND T.SALES_DEADLINE_DATE IS NOT NULL
|
||||
AND TO_DATE(T.SALES_DEADLINE_DATE, 'YYYY-MM-DD') <![CDATA[<=]]> TO_DATE(#{salesDeadlineTo}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
-- 등록일 기준 최신순 정렬 (프로젝트 번호는 보조 정렬)
|
||||
ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC
|
||||
</select>
|
||||
|
||||
<!-- 매출관리 그리드 목록 개수 - project_mgmt 테이블 기반 -->
|
||||
<select id="getSalesMgmtGridListCount" parameterType="map" resultType="map">
|
||||
@@ -1033,67 +1084,112 @@
|
||||
)
|
||||
)
|
||||
</if>
|
||||
<if test="productNo != null and productNo != ''">
|
||||
AND T.PART_NO LIKE CONCAT('%', #{productNo}, '%')
|
||||
</if>
|
||||
<if test="productName != null and productName != ''">
|
||||
AND T.PART_NAME LIKE CONCAT('%', #{productName}, '%')
|
||||
</if>
|
||||
<if test="serialNo != null and serialNo != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM CONTRACT_ITEM CI
|
||||
JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID
|
||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||
AND CIS.SERIAL_NO LIKE CONCAT('%', #{serialNo}, '%')
|
||||
AND UPPER(CIS.STATUS) = 'ACTIVE'
|
||||
)
|
||||
</if>
|
||||
<if test="orderStatus != null and orderStatus != ''">
|
||||
AND T.CONTRACT_RESULT = #{orderStatus}
|
||||
</if>
|
||||
<if test="poNo != null and poNo != ''">
|
||||
AND T.PO_NO LIKE CONCAT('%', #{poNo}, '%')
|
||||
</if>
|
||||
<if test="requestDateFrom != null and requestDateFrom != ''">
|
||||
AND T.DUE_DATE <![CDATA[>=]]> #{requestDateFrom}
|
||||
</if>
|
||||
<if test="requestDateTo != null and requestDateTo != ''">
|
||||
AND T.DUE_DATE <![CDATA[<=]]> #{requestDateTo}
|
||||
</if>
|
||||
<if test="orderDateFrom != null and orderDateFrom != ''">
|
||||
AND T.CONTRACT_DATE <![CDATA[>=]]> #{orderDateFrom}
|
||||
</if>
|
||||
<if test="orderDateTo != null and orderDateTo != ''">
|
||||
AND T.CONTRACT_DATE <![CDATA[<=]]> #{orderDateTo}
|
||||
</if>
|
||||
<if test="shippingStatus != null and shippingStatus != ''">
|
||||
/* SALES_STATUS 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="shippingDateFrom != null and shippingDateFrom != ''">
|
||||
/* SHIPPING_DATE 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="shippingDateTo != null and shippingDateTo != ''">
|
||||
/* SHIPPING_DATE 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="shippingMethod != null and shippingMethod != ''">
|
||||
/* SHIPPING_METHOD 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="manager != null and manager != ''">
|
||||
AND T.PM_USER_ID = #{manager}
|
||||
<!-- 품번/품명 검색: PART_NO 또는 PART_NAME으로 검색 (한글 포함) -->
|
||||
<if test="(search_partNo != null and search_partNo != '') or (search_partName != null and search_partName != '')">
|
||||
AND (
|
||||
<if test="search_partNo != null and search_partNo != ''">
|
||||
T.PART_NO = #{search_partNo}
|
||||
</if>
|
||||
<if test="(search_partNo != null and search_partNo != '') and (search_partName != null and search_partName != '')">
|
||||
OR
|
||||
</if>
|
||||
<if test="search_partName != null and search_partName != ''">
|
||||
T.PART_NAME = #{search_partName}
|
||||
</if>
|
||||
)
|
||||
</if>
|
||||
<if test="incoterms != null and incoterms != ''">
|
||||
/* INCOTERMS 필드 없음 - 검색 조건 무시 */
|
||||
<if test="serialNo != null and serialNo != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM CONTRACT_ITEM CI
|
||||
JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID
|
||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||
AND CI.PART_OBJID = T.PART_OBJID
|
||||
AND CI.STATUS = 'ACTIVE'
|
||||
AND UPPER(CIS.SERIAL_NO) LIKE UPPER(CONCAT('%', #{serialNo}, '%'))
|
||||
AND UPPER(CIS.STATUS) = 'ACTIVE'
|
||||
)
|
||||
</if>
|
||||
<if test="salesStatus != null and salesStatus != ''">
|
||||
<choose>
|
||||
<when test="salesStatus == 'NOT_CLOSED'">
|
||||
AND (T.SALES_STATUS IS NULL OR T.SALES_STATUS = '' OR T.SALES_STATUS != '완료')
|
||||
</when>
|
||||
<otherwise>
|
||||
AND T.SALES_STATUS = #{salesStatus}
|
||||
</otherwise>
|
||||
</choose>
|
||||
<if test="orderStatus != null and orderStatus != ''">
|
||||
AND T.CONTRACT_RESULT = #{orderStatus}
|
||||
</if>
|
||||
<if test="poNo != null and poNo != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM CONTRACT_MGMT CM
|
||||
WHERE CM.OBJID = T.CONTRACT_OBJID
|
||||
AND UPPER(CM.PO_NO) LIKE UPPER(CONCAT('%', #{poNo}, '%'))
|
||||
)
|
||||
</if>
|
||||
<if test="requestDateFrom != null and requestDateFrom != ''">
|
||||
AND T.DUE_DATE <![CDATA[>=]]> #{requestDateFrom}
|
||||
</if>
|
||||
<if test="requestDateTo != null and requestDateTo != ''">
|
||||
AND T.DUE_DATE <![CDATA[<=]]> #{requestDateTo}
|
||||
</if>
|
||||
<if test="orderDateFrom != null and orderDateFrom != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM CONTRACT_MGMT CM
|
||||
WHERE CM.OBJID = T.CONTRACT_OBJID
|
||||
AND TO_DATE(CM.ORDER_DATE, 'YYYY-MM-DD') <![CDATA[>=]]> TO_DATE(#{orderDateFrom}, 'YYYY-MM-DD')
|
||||
)
|
||||
</if>
|
||||
<if test="orderDateTo != null and orderDateTo != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM CONTRACT_MGMT CM
|
||||
WHERE CM.OBJID = T.CONTRACT_OBJID
|
||||
AND TO_DATE(CM.ORDER_DATE, 'YYYY-MM-DD') <![CDATA[<=]]> TO_DATE(#{orderDateTo}, 'YYYY-MM-DD')
|
||||
)
|
||||
</if>
|
||||
<if test="shippingStatus != null and shippingStatus != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM sales_registration SR
|
||||
WHERE T.PROJECT_NO = SR.project_no
|
||||
AND SR.shipping_order_status = #{shippingStatus}
|
||||
)
|
||||
</if>
|
||||
<if test="shippingDateFrom != null and shippingDateFrom != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM sales_registration SR
|
||||
WHERE T.PROJECT_NO = SR.project_no
|
||||
AND SR.shipping_date IS NOT NULL
|
||||
AND TO_DATE(TO_CHAR(SR.shipping_date, 'YYYY-MM-DD'), 'YYYY-MM-DD') <![CDATA[>=]]> TO_DATE(#{shippingDateFrom}, 'YYYY-MM-DD')
|
||||
)
|
||||
</if>
|
||||
<if test="shippingDateTo != null and shippingDateTo != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM sales_registration SR
|
||||
WHERE T.PROJECT_NO = SR.project_no
|
||||
AND SR.shipping_date IS NOT NULL
|
||||
AND TO_DATE(TO_CHAR(SR.shipping_date, 'YYYY-MM-DD'), 'YYYY-MM-DD') <![CDATA[<=]]> TO_DATE(#{shippingDateTo}, 'YYYY-MM-DD')
|
||||
)
|
||||
</if>
|
||||
<if test="shippingMethod != null and shippingMethod != ''">
|
||||
/* SHIPPING_METHOD 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="manager != null and manager != ''">
|
||||
AND T.PM_USER_ID = #{manager}
|
||||
</if>
|
||||
<if test="incoterms != null and incoterms != ''">
|
||||
/* INCOTERMS 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="salesStatus != null and salesStatus != ''">
|
||||
<choose>
|
||||
<when test="salesStatus == 'NOT_CLOSED'">
|
||||
AND (T.SALES_STATUS IS NULL OR T.SALES_STATUS = '' OR T.SALES_STATUS != '완료')
|
||||
</when>
|
||||
<otherwise>
|
||||
AND T.SALES_STATUS = #{salesStatus}
|
||||
</otherwise>
|
||||
</choose>
|
||||
</if>
|
||||
<!-- 매출마감 기간 검색 -->
|
||||
<if test="salesDeadlineFrom != null and salesDeadlineFrom != ''">
|
||||
AND T.SALES_DEADLINE_DATE IS NOT NULL
|
||||
AND TO_DATE(T.SALES_DEADLINE_DATE, 'YYYY-MM-DD') <![CDATA[>=]]> TO_DATE(#{salesDeadlineFrom}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="salesDeadlineTo != null and salesDeadlineTo != ''">
|
||||
AND T.SALES_DEADLINE_DATE IS NOT NULL
|
||||
AND TO_DATE(T.SALES_DEADLINE_DATE, 'YYYY-MM-DD') <![CDATA[<=]]> TO_DATE(#{salesDeadlineTo}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 매출관리 합계 조회 (Total 공급가액, 부가세, 총액) -->
|
||||
|
||||
Reference in New Issue
Block a user