diff --git a/src/main/resources/mappers/estimate/estimateMapper.xml b/src/main/resources/mappers/estimate/estimateMapper.xml index 005ce9f1..afbc6180 100644 --- a/src/main/resources/mappers/estimate/estimateMapper.xml +++ b/src/main/resources/mappers/estimate/estimateMapper.xml @@ -368,119 +368,111 @@ /* sqlid : com.interplug.qcast.biz.estimate.selectEstimateRoofCertVolKw */ ' + REPLACE(ISNULL(Z.CIRCUIT_CFG, ''), ',', '') + '' AS XML - ) - ) A(X) - ) SPLIT - ), + FROM ( + SELECT CAST('' + REPLACE(ISNULL(Z.CIRCUIT_CFG, ''), ',', '') + '' AS XML) + ) A(X) + ) SPLIT + ), Y AS ( - SELECT - ZC.ROOF_ITEM_NO, - ZC.M_ITEM_ID, - ZC.M_SPEC, - ZC.M_AMT, - (ZC.M_1 + ZC.M_2 + ZC.M_3) AS M_AMT2, - ZC.P_ITEM_ID, - TE.SPECIFICATION AS P_SPEC, - ZC.P_AMT, - ( - SELECT - SPECIFICATION - FROM - T_PART_ROOF_ITEM_ESTIMATE TRI - INNER JOIN T_PART_ROOF_ESTIMATE TR ON TRI.ROOF_SURFACE_ID = TR.ROOF_SURFACE_ID - AND TRI.OBJECT_NO = TR.OBJECT_NO - AND TRI.PLAN_NO = TR.PLAN_NO - WHERE - TRI.OBJECT_NO = ZC.OBJECT_NO - AND TRI.PLAN_NO = ZC.PLAN_NO - AND TRI.ROOF_ITEM_NO = (ZC.ROOF_ITEM_NO + 1) - ) AS M_SPEC2 - FROM - Z_CFG ZC - INNER JOIN T_PART_ESTIMATE TE ON ZC.OBJECT_NO = TE.OBJECT_NO - AND ZC.PLAN_NO = TE.PLAN_NO - AND 0 < CAST(TE.SPECIFICATION AS FLOAT) + SELECT + ZC.ROOF_ITEM_NO, + ZC.M_ITEM_ID, + ZC.M_SPEC, + ZC.M_AMT, + (ZC.M_1 + ZC.M_2 + ZC.M_3) AS M_AMT2, + ZC.P_ITEM_ID, + ZC.P_AMT, + ZC.PC_ITEM_ID, + ZC.QCAST_CUST_PRD_ID, + CASE + WHEN ZC.P_SPEC != '0' THEN P_SPEC + WHEN ZC.CUST_SPEC != '0' THEN CUST_SPEC + WHEN ZC.PC_SPEC != '0' THEN PC_SPEC + ELSE '0' + END + AS P_SPEC, + (SELECT SPECIFICATION + FROM T_PART_ROOF_ITEM_ESTIMATE + WHERE OBJECT_NO = ZC.OBJECT_NO + AND PLAN_NO = ZC.PLAN_NO + AND ROOF_ITEM_NO = (ZC.ROOF_ITEM_NO + 1)) AS M_SPEC2 + FROM Z_CFG ZC + INNER JOIN T_PART_ESTIMATE TE + ON ZC.OBJECT_NO = TE.OBJECT_NO + AND ZC.PLAN_NO = TE.PLAN_NO AND TE.ITEM_ID IN (ZC.P_ITEM_ID, ZC.PC_ITEM_ID, ZC.QCAST_CUST_PRD_ID) ), X AS ( - SELECT + SELECT Y.M_ITEM_ID, Y.M_SPEC, (Y.M_AMT2 - Y.M_AMT) AS M_CNT, - ROUND((Y.M_AMT * CAST(ISNULL(Y.M_SPEC, 0) AS FLOAT) / 1000), 4) AS M_VOL, - ROUND( - (Y.M_AMT2 * CAST(ISNULL(Y.M_SPEC, 0) AS FLOAT) / 1000),4) AS M_VOL2, - ROUND(((Y.M_AMT2 - Y.M_AMT) * CAST(ISNULL(Y.M_SPEC, 0) AS FLOAT) / 1000),4) AS R_VOL, + ROUND((Y.M_AMT * CAST(ISNULL(Y.M_SPEC, 0) AS FLOAT) / 1000), 4) AS M_VOL, + ROUND((Y.M_AMT2 * CAST(ISNULL(Y.M_SPEC, 0) AS FLOAT) / 1000), 4) AS M_VOL2, + ROUND(((Y.M_AMT2 - Y.M_AMT) * CAST(ISNULL(Y.M_SPEC, 0) AS FLOAT) / 1000), 4) AS R_VOL, CASE - WHEN Y.M_AMT < Y.M_AMT2 THEN ROUND((Y.M_AMT * CAST(ISNULL(Y.M_SPEC, 0) AS FLOAT) / 1000), 4) - ELSE ROUND((Y.M_AMT2 * CAST(ISNULL(Y.M_SPEC, 0) AS FLOAT) / 1000), 4 ) + WHEN Y.M_AMT < Y.M_AMT2 + THEN ROUND((Y.M_AMT * CAST(ISNULL(Y.M_SPEC, 0) AS FLOAT) / 1000), 4) + ELSE + ROUND((Y.M_AMT2 * CAST(ISNULL(Y.M_SPEC, 0) AS FLOAT) / 1000), 4) END AS M_VOL_KW, ROUND((Y.P_AMT * CAST(ISNULL(Y.P_SPEC, 0) AS FLOAT) / 1000), 4) AS PC_VOL_KW, CASE - WHEN 0 < (Y.M_AMT2 - Y.M_AMT) THEN ROUND(((Y.M_AMT2 - Y.M_AMT) * CAST(ISNULL(Y.M_SPEC2, 0) AS FLOAT) / 1000),4) + WHEN 0 < (Y.M_AMT2 - Y.M_AMT) + THEN ROUND(((Y.M_AMT2 - Y.M_AMT) * CAST(ISNULL(Y.M_SPEC2, 0) AS FLOAT) / 1000), 4) ELSE 0 END AS M_VOL_KW2 - FROM - Y ) + FROM Y + ) SELECT CAST( SUM(