diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml index 121c909d15..4888b359fd 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml @@ -92,29 +92,45 @@ COUNT( ID ) AS "count", SUM( IFNULL( b.score, 80 ) ) AS "ratio" FROM - ( SELECT f.ID, f.AGENCY_ID FROM fact_origin_project_main_daily f - INNER JOIN dim_agency da ON f.FINISH_ORG_IDS LIKE concat('%', da.ID, '%') - AND da.AGENCY_DIM_TYPE = 'all' - AND da.`LEVEL` = #{level} - AND da.CUSTOMER_ID = #{customerId} - WHERE 1=1 - AND f.MONTH_ID = #{monthId}) a - LEFT JOIN ( - SELECT - PROJECT_ID, - AVG( CASE ACTION_CODE WHEN 'bad' THEN 60 WHEN 'perfect' THEN 100 ELSE 80 END ) AS score - FROM - fact_origin_project_log_daily - WHERE - (ACTION_CODE = 'bad' - OR ACTION_CODE = 'good' - OR ACTION_CODE = 'perfect') - AND CUSTOMER_ID = #{customerId} - AND MONTH_ID = #{monthId} - GROUP BY - PROJECT_ID + ( + SELECT + f.ID, + f.AGENCY_ID + FROM + fact_origin_project_main_daily f + INNER JOIN dim_agency da ON f.PIDS LIKE concat( '%', da.ID, '%' ) + AND da.AGENCY_DIM_TYPE = 'all' + AND da.`LEVEL` = #{level} + AND da.CUSTOMER_ID = #{customerId} + INNER JOIN fact_origin_project_log_daily log ON f.ID = log.PROJECT_ID + AND log.ACTION_CODE = 'close' + AND log.DEL_FLAG = '0' + AND log.CUSTOMER_ID = #{customerId} + AND log.MONTH_ID = #{monthId} + WHERE + 1 = 1 + AND f.ORIGIN = 'issue' + AND f.PROJECT_STATUS = 'closed' + AND f.CUSTOMER_ID = #{customerId} + ) a + LEFT JOIN ( + SELECT + l1.PROJECT_ID, + AVG( CASE l1.ACTION_CODE WHEN 'bad' THEN 60 WHEN 'perfect' THEN 100 ELSE 80 END ) AS score + FROM + fact_origin_project_log_daily l1 + INNER JOIN fact_origin_project_log_daily l2 ON l1.PROJECT_ID = l2.PROJECT_ID + AND l2.ACTION_CODE = 'close' + AND l2.MONTH_ID = #{monthId} + AND l2.CUSTOMER_ID = #{customerId} + WHERE + ( l1.ACTION_CODE = 'bad' OR l1.ACTION_CODE = 'good' OR l1.ACTION_CODE = 'perfect' ) + AND l1.CUSTOMER_ID = #{customerId} + GROUP BY + PROJECT_ID ) b ON a.ID = b.PROJECT_ID - GROUP BY AGENCY_ID + GROUP BY + AGENCY_ID