DASHBOARD 수정

This commit is contained in:
2026-02-02 13:52:29 +09:00
parent 607ac675da
commit d04c08c1f6
3 changed files with 156 additions and 129 deletions

View File

@@ -154,7 +154,7 @@ $(document).ready(function() {
['Supply', 'CNT'],
<c:forEach var="item" items="${LISTSUPPLY}" varStatus="status">
['${item.SUPPLY_NAME}',${item.TOTAL_SUPPLY_UNIT_CNT}],
['${item.CLIENT_NM}',${item.TOTAL_SUPPLY_UNIT_CNT}],
</c:forEach>
]);
@@ -2175,7 +2175,7 @@ function fn_projectFilter(statusNm, cnt){
</div>
-->
<div class="graph_section " id="piechart2" style=" width:120%; overflow:hidden;margin-left:-17px;">
</div>
</div>
</div>
</div>
<div class="float_r ">
@@ -2487,7 +2487,7 @@ function fn_projectFilter(statusNm, cnt){
-->
<div class="contents_section50">
<!--3단 start-->
<div class="n_wrap2" style="margin:100px 20px">
<div class="n_wrap2" style="margin:0px 20px">
<div class="float_l w70"><!-- asd_box -->
<div class="section_title">
<div>
@@ -2561,23 +2561,20 @@ function fn_projectFilter(statusNm, cnt){
</div>
</div>
<div class="float_l w100 " style="margin-top:20px;"><!-- asd_box -->
<!-- <div class="float_l w100 " style="margin-top:20px;">
<div class="section_title">
<div>
<i class="fa-solid fa-square-poll-vertical"></i>투입원가현황
</div>
</div>
<div class="tablebox"> <!-- tableBox -->
<table class=" n_table2"><!-- scrolltable -->
<div class="tablebox">
<table class=" n_table2">
<colgroup>
<col width="12%">
<col width="25%">
<col width="20%">
<col width="20%">
<col width="13%">
<%--
<col width="10%">
--%>
</colgroup>
<thead>
<tr class="">
@@ -2586,16 +2583,13 @@ function fn_projectFilter(statusNm, cnt){
<th>목표원가(원)</th>
<th>투입원가(원)</th>
<th>투입율(%)</th>
<!--
<th>상태</th>
-->
</tr>
</thead>
<tbody id="costStatusListArea" style="height: 205px;">
</tbody>
</table>
</div>
</div>
</div> -->
<div class="float_l w70" style="margin-top:20px;">
<div class="section_title">

View File

@@ -3055,8 +3055,68 @@ ORDER BY COALESCE(T.REVISION, '1.0')
SELECT
P.OBJID::VARCHAR AS CODE_ID
,P.PROJECT_NO AS CODE_NAME
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG SM WHERE SM.OBJID::VARCHAR = P.CUSTOMER_OBJID) || ' ' || P.PROJECT_NO || ' ' || C.PROJECT_NAME AS PROJ_INFO
,P.REQ_DEL_DATE
,(SELECT CLIENT_NM FROM CLIENT_MNG SM WHERE 'C_' || SM.OBJID::VARCHAR = P.CUSTOMER_OBJID) || ' ' || P.PROJECT_NO AS PROJ_INFO
,P.DUE_DATE
FROM PROJECT_MGMT P
INNER JOIN CONTRACT_MGMT C
ON C.OBJID = P.CONTRACT_OBJID
LEFT OUTER JOIN (
SELECT
T.CONTRACT_OBJID,
CASE
WHEN COUNT(CASE WHEN PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '' THEN 1 END) = 0 THEN 0
ELSE ROUND((
COUNT(CASE WHEN SETUP_ACT_END != '' AND SETUP_ACT_END IS NOT NULL AND PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '' THEN 1 END)::FLOAT
/
COUNT(CASE WHEN PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '' THEN 1 END)
* 100
)::numeric, 1)
END AS SETUP_RATETOTAL
FROM
SETUP_WBS_TASK T
GROUP BY
T.CONTRACT_OBJID
) ST ON ST.CONTRACT_OBJID = P.OBJID
LEFT OUTER JOIN (
SELECT
CONTRACT_OBJID,
COUNT(CASE WHEN DESIGN_act_start IS NOT NULL AND DESIGN_act_start!='' THEN 1 END) AS DESIGN_START_COUNT
FROM
PMS_WBS_TASK
GROUP BY
CONTRACT_OBJID
) WT ON WT.CONTRACT_OBJID = P.OBJID
WHERE (C.CONTRACT_RESULT = '0000964' or C.CONTRACT_RESULT = '0000968')
<if test="SEARCH_PROJECT_YEAR != null and SEARCH_PROJECT_YEAR !=''">
<!-- AND #{SEARCH_PROJECT_YEAR} BETWEEN
(SELECT
LEAST(
MIN(TO_CHAR(TO_DATE(NULLIF(PURCHASE_PLAN_START, ''), 'YYYY'), 'YYYY')),
MIN(TO_CHAR(TO_DATE(NULLIF(PRODUCE_PLAN_START , ''), 'YYYY'), 'YYYY')),
MIN(TO_CHAR(TO_DATE(NULLIF(DESIGN_PLAN_START , ''), 'YYYY'), 'YYYY')),
MIN(TO_CHAR(TO_DATE(NULLIF(SETUP_PLAN_START , ''), 'YYYY'), 'YYYY'))
)
FROM PMS_WBS_TASK O
WHERE O.CONTRACT_OBJID=P.OBJID)
AND (SELECT
GREATEST(
MAX(TO_CHAR(TO_DATE(NULLIF(PURCHASE_PLAN_END, ''), 'YYYY'), 'YYYY')),
MAX(TO_CHAR(TO_DATE(NULLIF(PRODUCE_PLAN_END , ''), 'YYYY'), 'YYYY')),
MAX(TO_CHAR(TO_DATE(NULLIF(DESIGN_PLAN_END , ''), 'YYYY'), 'YYYY')),
MAX(TO_CHAR(TO_DATE(NULLIF(SETUP_PLAN_END , ''), 'YYYY'), 'YYYY'))
)
FROM PMS_WBS_TASK O
WHERE O.CONTRACT_OBJID=P.OBJID) -->
</if>
ORDER BY SUBSTRING(P.PROJECT_NO,POSITION('-' IN P.PROJECT_NO)+1) DESC
</select>
<select id="getProgressProjectNoList_old" parameterType="map" resultType="map">
SELECT
P.OBJID::VARCHAR AS CODE_ID
,P.PROJECT_NO AS CODE_NAME
,(SELECT CLIENT_NM FROM CLIENT_MNG SM WHERE 'C_' || SM.OBJID::VARCHAR = P.CUSTOMER_OBJID) || ' ' || P.PROJECT_NO AS PROJ_INFO
,P.DUE_DATE
FROM PROJECT_MGMT P
INNER JOIN CONTRACT_MGMT C
ON C.OBJID = P.CONTRACT_OBJID
@@ -3117,7 +3177,7 @@ ORDER BY COALESCE(T.REVISION, '1.0')
-->
ORDER BY SUBSTRING(P.PROJECT_NO,POSITION('-' IN P.PROJECT_NO)+1) DESC
</select>
<!-- //유저 ID 조회 -->
<select id="getUserInfo" resultType="map" parameterType="map">
SELECT

View File

@@ -3556,54 +3556,56 @@ SELECT (CASE WHEN GROUPING(cc.code_id) = 1 THEN '소계' ELSE cc.CODE_ID END) AS
</select>
<select id="getContractDashBoard" parameterType="map" resultType="map">
/* contractMgmt.getContractDashBoard - 수주현황 대시보드 (ORDER_TOTAL_AMOUNT 기준) */
WITH WITH_BASE_DATA AS (
SELECT *
, CAST(DATE_TRUNC('MONTH', TO_DATE(CD.YEAR_MONTH2, 'YYYY-MM')) AS DATE) AS MONTH_FIRST_DAY
, (DATE_TRUNC('MONTH', TO_DATE(CD.YEAR_MONTH2, 'YYYY-MM')) + INTERVAL '1 MONTH - 1 DAY')::DATE AS MONTH_LAST_DAY
, (DATE_TRUNC('MONTH', TO_DATE(CD.YEAR_MONTH2, 'YYYY-MM')) + INTERVAL '1 MONTH - 1 DAY')::DATE AS MONTH_LAST_DAY
FROM
(
(SELECT
OBJID
, CODE_ID
, CODE_NAME
FROM COMM_CODE CC
WHERE PARENT_CODE_ID = '0000001'
) CD
INNER JOIN (SELECT #{Year}|| RIGHT('0' || LINE_VALUE, 2) YEAR_MONTH
,#{Year}|| '-'||RIGHT('0' || LINE_VALUE, 2) YEAR_MONTH2
,LINE_VALUE MM
FROM GENERATE_SERIES(1,12) AS TBL(LINE_VALUE)) YEAR_MONTH
ON 1=1
) CD
LEFT OUTER JOIN(
SELECT
CM.PRODUCT
,TO_CHAR(TO_DATE(CM.CONTRACT_DATE,'YYYY-MM-DD'),'YYYYMM') AS CONTRACT_YEAR_MONTH
,SUM(COALESCE(CM.CONTRACT_PRICE::FLOAT,0)) CONTRACT_COST
,COUNT(1) CONTRACT_CNT
,SUM(CM.QTY) QTY
FROM
(SELECT CM.PRODUCT
,CM.CONTRACT_DATE
,(CASE WHEN NVL(CM.CONTRACT_PRICE, '0') != '0' THEN NVL(CM.CONTRACT_PRICE, '0')
WHEN CONTRACT_CURRENCY = '0001566' AND NVL(CM.CONTRACT_PRICE_CURRENCY, '0') != '0' THEN NVL(CM.CONTRACT_PRICE_CURRENCY, '0')
ELSE NVL(CM.CONTRACT_PRICE, '0')
END) CONTRACT_PRICE
,( SELECT COUNT(1) QTY
FROM PROJECT_MGMT AS PM
RIGHT JOIN RELEASE_MGMT AS RM
ON PM.OBJID = RM.PARENT_OBJID
WHERE CM.OBJID = PM.CONTRACT_OBJID
) QTY
FROM CONTRACT_MGMT CM
LEFT OUTER JOIN SUPPLY_MNG SM
(
(SELECT
OBJID
, CODE_ID
, CODE_NAME
FROM COMM_CODE CC
WHERE PARENT_CODE_ID = '0000001'
) CD
INNER JOIN (
SELECT #{Year}|| RIGHT('0' || LINE_VALUE, 2) YEAR_MONTH
,#{Year}|| '-'||RIGHT('0' || LINE_VALUE, 2) YEAR_MONTH2
,LINE_VALUE MM
FROM GENERATE_SERIES(1,12) AS TBL(LINE_VALUE)
) YEAR_MONTH
ON 1=1
) CD
LEFT OUTER JOIN(
SELECT
CM.PRODUCT
,TO_CHAR(TO_DATE(CM.ORDER_DATE,'YYYY-MM-DD'),'YYYYMM') AS CONTRACT_YEAR_MONTH
,SUM(COALESCE(NULLIF(CM.ORDER_SUPPLY_PRICE,'')::NUMERIC, 0)) ORDER_SUPPLY_PRICE
,SUM(COALESCE(NULLIF(CM.ORDER_VAT,'')::NUMERIC, 0)) ORDER_VAT
,SUM(COALESCE(NULLIF(CM.ORDER_TOTAL_AMOUNT,'')::NUMERIC, 0)) ORDER_TOTAL_AMOUNT
,COUNT(1) CONTRACT_CNT
,SUM(CM.QTY) QTY
FROM
(SELECT CM.PRODUCT
,CM.ORDER_DATE
,CM.ORDER_SUPPLY_PRICE
,CM.ORDER_VAT
,CM.ORDER_TOTAL_AMOUNT
,( SELECT COUNT(1) QTY
FROM PROJECT_MGMT AS PM
RIGHT JOIN RELEASE_MGMT AS RM
ON PM.OBJID = RM.PARENT_OBJID
WHERE CM.OBJID = PM.CONTRACT_OBJID
) QTY
FROM CONTRACT_MGMT CM
LEFT OUTER JOIN SUPPLY_MNG SM
ON CM.CUSTOMER_OBJID = SM.OBJID::VARCHAR
WHERE CM.CONTRACT_DATE IS NOT NULL
AND CM.CONTRACT_RESULT = '0000964'
WHERE CM.ORDER_DATE IS NOT NULL
AND CM.CONTRACT_RESULT = '0000964'
<if test="Year !=null and Year != '' ">
<!-- AND TO_CHAR(CM.REGDATE,'YYYY') = #{Year} -->
AND TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
AND TO_CHAR(TO_DATE(ORDER_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND UPPER(CUSTOMER_OBJID) LIKE UPPER('%${customer_objid}%')
@@ -3612,58 +3614,36 @@ SELECT (CASE WHEN GROUPING(cc.code_id) = 1 THEN '소계' ELSE cc.CODE_ID END) AS
AND PRODUCER_CD = #{producer_cd}
</if>
<if test="category_cd !=null and category_cd != '' ">
AND CATEGORY_CD = #{category_cd}
</if>
<if test="product !=null and product != '' ">
AND CATEGORY_CD = #{category_cd}
</if>
<if test="product !=null and product != '' ">
AND CM.PRODUCT = #{product}
</if>
) CM
GROUP BY CM.PRODUCT
,TO_CHAR(TO_DATE(CM.CONTRACT_DATE,'YYYY-MM-DD'),'YYYYMM')
) CT
ON CD.CODE_ID = CT.PRODUCT
AND CD.YEAR_MONTH = CT.CONTRACT_YEAR_MONTH
<!-- 240822 아래쿼리는 문제 있어서 위 서브쿼리로 이동(QTY 출고수량)
LEFT OUTER JOIN(
SELECT RM1.PRODUCT
,TO_CHAR(TO_DATE(RM1.RELEASE_DATE,'YYYY-MM-DD'),'MM') AS RELEASE_YEAR_MONTH
,1 AS QTY
FROM CONTRACT_MGMT CM1,(SELECT RM.*,PM.CONTRACT_OBJID FROM PROJECT_MGMT AS PM RIGHT JOIN RELEASE_MGMT AS RM
ON PM.OBJID = RM.PARENT_OBJID) AS RM1
WHERE CM1.OBJID = RM1.CONTRACT_OBJID
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(RM1.RELEASE_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
</if>
<if test="category_cd !=null and category_cd != '' ">
AND CATEGORY_CD = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND CUSTOMER_OBJID = #{customer_objid}
</if>
<if test="product !=null and product != '' ">
AND RM1.PRODUCT = #{product}
</if>
) AS RM
ON CD.CODE_ID = RM.PRODUCT
AND CD.YEAR_MONTH = RM.RELEASE_YEAR_MONTH
-->
GROUP BY CM.PRODUCT
,TO_CHAR(TO_DATE(CM.ORDER_DATE,'YYYY-MM-DD'),'YYYYMM')
) CT
ON CD.CODE_ID = CT.PRODUCT
AND CD.YEAR_MONTH = CT.CONTRACT_YEAR_MONTH
)
SELECT
'1' ORDER_NO
,YEAR_MONTH
,MM
,SUM(COALESCE(CONTRACT_CNT, 0)) CONTRACT_CNT_YEAR
,SUM(COALESCE(CONTRACT_COST, 0)) CONTRACT_COST_YEAR_ORG
,SUM(COALESCE(CONTRACT_COST, 0))/100000000 CONTRACT_COST_YEAR
,SUM(COALESCE(QTY, 0)) RELEASE_CNT_YEAR
<foreach collection="moldKindCdList" item="obj">
,SUM(CASE WHEN CODE_ID = '${obj.CODE}' THEN CONTRACT_CNT ELSE 0 END) CONTRACT_CNT_MONTH_${obj.CODE}
,SUM(CASE WHEN CODE_ID = '${obj.CODE}' THEN CONTRACT_COST ELSE 0 END) CONTRACT_COST_MONTH_${obj.CODE}
'1' ORDER_NO
,YEAR_MONTH
,MM
,SUM(COALESCE(CONTRACT_CNT, 0)) CONTRACT_CNT_YEAR
,SUM(COALESCE(ORDER_SUPPLY_PRICE, 0)) ORDER_SUPPLY_PRICE_YEAR
,SUM(COALESCE(ORDER_VAT, 0)) ORDER_VAT_YEAR
,SUM(COALESCE(ORDER_TOTAL_AMOUNT, 0)) CONTRACT_COST_YEAR_ORG
,SUM(COALESCE(ORDER_TOTAL_AMOUNT, 0))/100000000 CONTRACT_COST_YEAR
,SUM(COALESCE(QTY, 0)) RELEASE_CNT_YEAR
<foreach collection="moldKindCdList" item="obj">
,SUM(CASE WHEN CODE_ID = '${obj.CODE}' THEN CONTRACT_CNT ELSE 0 END) CONTRACT_CNT_MONTH_${obj.CODE}
,SUM(CASE WHEN CODE_ID = '${obj.CODE}' THEN ORDER_TOTAL_AMOUNT ELSE 0 END) CONTRACT_COST_MONTH_${obj.CODE}
</foreach>
,#{Year} AS TARGET_YEAR
FROM WITH_BASE_DATA
GROUP BY ROLLUP (
(YEAR_MONTH, MM) )
(YEAR_MONTH, MM) )
ORDER BY YEAR_MONTH
</select>
@@ -3682,23 +3662,20 @@ SELECT year, annual, five
<!-- 영업목표 -->
<select id="getYearGoalInfo" parameterType="map" resultType="map">
/* contractMgmt.getYearGoalInfo - 연간 목표 대비 실적 (ORDER_TOTAL_AMOUNT 기준) */
WITH W_CM AS (
SELECT
AREA_CD,
<!-- (SUM(COALESCE( -->
(CASE WHEN NVL(CM.CONTRACT_PRICE, '0') != '0' THEN NVL(CM.CONTRACT_PRICE, '0')
WHEN CONTRACT_CURRENCY = '0001566' AND NVL(CM.CONTRACT_PRICE_CURRENCY, '0') != '0' THEN NVL(CM.CONTRACT_PRICE_CURRENCY, '0')
ELSE NVL(CM.CONTRACT_PRICE, '0')
END) CONTRACT_PRICE
<!-- ::FLOAT, 0))) CONTRACT_PRICE -->
FROM CONTRACT_MGMT CM
WHERE CM.CONTRACT_RESULT = '0000964'
AND TO_CHAR(TO_DATE(CONTRACT_DATE, 'YYYY-MM-DD'), 'YYYY') = #{Year}
)
SELECT
AREA_CD,
COALESCE(NULLIF(CM.ORDER_TOTAL_AMOUNT, '')::NUMERIC, 0) AS ORDER_TOTAL_AMOUNT
FROM CONTRACT_MGMT CM
WHERE (CM.CONTRACT_RESULT = '0000964' or CM.CONTRACT_RESULT = '0000968')
AND CM.ORDER_DATE IS NOT NULL
AND TO_CHAR(TO_DATE(ORDER_DATE, 'YYYY-MM-DD'), 'YYYY') = #{Year}
)
SELECT
*
,CASE WHEN CONTRACT_CNT_YEAR_ALL IS NULL OR CONTRACT_CNT_YEAR_ALL = 0 THEN NULL
ELSE CONTRACT_CNT_YEAR / CONTRACT_CNT_YEAR_ALL * 100 END AS CONTRACT_CNT_YEAR_RATE
ELSE CONTRACT_CNT_YEAR / CONTRACT_CNT_YEAR_ALL * 100 END AS CONTRACT_CNT_YEAR_RATE
FROM(
SELECT
OBJID YEAR_GOAL_OBJID
@@ -3706,23 +3683,19 @@ SELECT year, annual, five
,PRICE::integer
,WRITER
,REGDATE
,(SELECT count(1) FROM CONTRACT_MGMT WHERE TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYY-MM-DD'),'YYYY') = #{Year} ) AS CONTRACT_CNT_YEAR_ALL
,(SELECT count(1) FROM CONTRACT_MGMT WHERE ORDER_DATE IS NOT NULL AND TO_CHAR(TO_DATE(ORDER_DATE,'YYYY-MM-DD'),'YYYY') = #{Year} ) AS CONTRACT_CNT_YEAR_ALL
,(SELECT count(1) FROM W_CM CM ) AS CONTRACT_CNT_YEAR
,(SELECT count(1) FROM W_CM CM WHERE AREA_CD = '0001220' ) AS CONTRACT_CNT_YEAR_IN
,(SELECT count(1) FROM W_CM CM WHERE AREA_CD = '0001221' ) AS CONTRACT_CNT_YEAR_OUT
,coalesce((SELECT (SUM(coalesce(NVL(CM.CONTRACT_PRICE, '0')::FLOAT, 0)))/100000000 FROM W_CM CM )::integer,0) AS CONTRACT_COST_YEAR
<!-- ,(SELECT ROUND(SUM(CASE WHEN CONTRACT_PRICE IS NULL OR CONTRACT_PRICE = '' THEN '0' ELSE CONTRACT_PRICE::INTEGER END) / 100000000.0, 1) FROM CONTRACT_MGMT WHERE TO_CHAR(CONTRACT_DATE::DATE, 'YYYY') = #{Year}) AS CONTRACT_COST_YEAR-->
,COALESCE((SELECT SUM(ORDER_TOTAL_AMOUNT)/100000000 FROM W_CM CM)::integer, 0) AS CONTRACT_COST_YEAR
,CASE
WHEN PRICE IS NULL OR PRICE::integer = 0
THEN 0
ELSE coalesce((((select (SUM(coalesce(NVL(CM.CONTRACT_PRICE, '0')::FLOAT, 0)))/100000000 FROM W_CM CM) / price::integer) * 100),0)
END AS GOAL_RATE
WHEN PRICE IS NULL OR PRICE::integer = 0
THEN 0
ELSE COALESCE((((SELECT SUM(ORDER_TOTAL_AMOUNT)/100000000 FROM W_CM CM) / price::integer) * 100), 0)
END AS GOAL_RATE
FROM
PMS_PJT_YEAR_GOAL FMB
WHERE 1=1
<!--
AND OBJID = #{OBJID}
-->
<if test="YEAR_GOAL_OBJID != null and !''.equals(YEAR_GOAL_OBJID)">
AND OBJID = #{YEAR_GOAL_OBJID}
</if>
@@ -3772,10 +3745,10 @@ SELECT year, annual, five
<select id="getContractCNTBySupply" parameterType="map" resultType="map">
SELECT
ASM.OBJID
,ASM.SUPPLY_NAME
,ASM.CLIENT_NM
,S1.*
FROM
SUPPLY_MNG ASM
CLIENT_MNG ASM
,(
SELECT
CM.CUSTOMER_OBJID
@@ -3784,12 +3757,12 @@ FROM
FROM
CONTRACT_MGMT CM
WHERE CM.CONTRACT_RESULT = '0000964'
AND TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
AND TO_CHAR(TO_DATE(ORDER_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
GROUP BY CM.CUSTOMER_OBJID
) AS S1
WHERE 1=1
AND ASM.OBJID::VARCHAR = S1.CUSTOMER_OBJID
ORDER BY ASM.SUPPLY_NAME
AND 'C_' || ASM.OBJID::VARCHAR = S1.CUSTOMER_OBJID
ORDER BY ASM.CLIENT_NM
</select>