| | |
| | | |
| | | </select> |
| | | |
| | | <sql id="personGroupRateJoin"> |
| | | FROM quality_inspect qi |
| | | INNER JOIN production_product_main ppm ON qi.product_main_id = ppm.id |
| | | LEFT JOIN ( |
| | | SELECT production_product_main_id, |
| | | CAST(SUM(IFNULL(scrap_qty, 0)) AS DECIMAL(18,4)) AS scrapCount |
| | | FROM production_product_output |
| | | GROUP BY production_product_main_id |
| | | ) ppo ON ppo.production_product_main_id = ppm.id |
| | | LEFT JOIN ( |
| | | SELECT inspect_id, |
| | | CAST(SUM(CASE WHEN deal_type IN (0, 1) THEN IFNULL(quantity, 0) ELSE 0 END) AS DECIMAL(18,4)) AS reworkCount |
| | | FROM quality_unqualified |
| | | WHERE inspect_state = 1 |
| | | GROUP BY inspect_id |
| | | ) qu ON qu.inspect_id = qi.id |
| | | </sql> |
| | | |
| | | <sql id="personGroupRateWhere"> |
| | | WHERE qi.inspect_type IN (1, 2) |
| | | AND qi.inspect_state = 1 |
| | | AND qi.product_main_id IS NOT NULL |
| | | </sql> |
| | | |
| | | <select id="getPersonRateStatistics" resultType="com.ruoyi.quality.dto.QualityPersonGroupRateDto"> |
| | | SELECT ppm.user_id AS dimensionId, |
| | | COALESCE(NULLIF(ppm.user_name, ''), su.nick_name, CONCAT('用户', ppm.user_id)) AS dimensionName, |
| | | CAST(SUM(IFNULL(qi.quantity, 0)) AS DECIMAL(18,4)) AS totalCount, |
| | | CAST(SUM(IFNULL(qi.qualified_quantity, 0)) AS DECIMAL(18,4)) AS qualifiedCount, |
| | | CAST(SUM(IFNULL(qi.unqualified_quantity, 0)) AS DECIMAL(18,4)) AS unqualifiedCount, |
| | | CAST(SUM(IFNULL(qu.reworkCount, 0)) AS DECIMAL(18,4)) AS reworkCount, |
| | | CAST(SUM(IFNULL(ppo.scrapCount, 0)) AS DECIMAL(18,4)) AS scrapCount, |
| | | CAST(IF(SUM(IFNULL(qi.quantity, 0)) = 0, 0, |
| | | ROUND(SUM(IFNULL(qi.qualified_quantity, 0)) / SUM(IFNULL(qi.quantity, 0)) * 100, 2)) AS DECIMAL(18,2)) AS passRate, |
| | | CAST(IF(SUM(IFNULL(qi.quantity, 0)) = 0, 0, |
| | | ROUND(SUM(IFNULL(qu.reworkCount, 0)) / SUM(IFNULL(qi.quantity, 0)) * 100, 2)) AS DECIMAL(18,2)) AS reworkRate, |
| | | CAST(IF(SUM(IFNULL(qi.quantity, 0)) + SUM(IFNULL(ppo.scrapCount, 0)) = 0, 0, |
| | | ROUND(SUM(IFNULL(ppo.scrapCount, 0)) / (SUM(IFNULL(qi.quantity, 0)) + SUM(IFNULL(ppo.scrapCount, 0))) * 100, 2)) AS DECIMAL(18,2)) AS scrapRate |
| | | <include refid="personGroupRateJoin"/> |
| | | LEFT JOIN sys_user su ON su.user_id = ppm.user_id |
| | | <include refid="personGroupRateWhere"/> |
| | | GROUP BY ppm.user_id, COALESCE(NULLIF(ppm.user_name, ''), su.nick_name, CONCAT('用户', ppm.user_id)) |
| | | ORDER BY passRate DESC, totalCount DESC, dimensionId ASC |
| | | </select> |
| | | |
| | | <select id="getGroupRateStatistics" resultType="com.ruoyi.quality.dto.QualityPersonGroupRateDto"> |
| | | SELECT ppm.user_id AS dimensionId, |
| | | COALESCE(NULLIF(ppm.user_name, ''), su.nick_name, CONCAT('班组人员', ppm.user_id)) AS dimensionName, |
| | | CAST(SUM(IFNULL(qi.quantity, 0)) AS DECIMAL(18,4)) AS totalCount, |
| | | CAST(SUM(IFNULL(qi.qualified_quantity, 0)) AS DECIMAL(18,4)) AS qualifiedCount, |
| | | CAST(SUM(IFNULL(qi.unqualified_quantity, 0)) AS DECIMAL(18,4)) AS unqualifiedCount, |
| | | CAST(SUM(IFNULL(qu.reworkCount, 0)) AS DECIMAL(18,4)) AS reworkCount, |
| | | CAST(SUM(IFNULL(ppo.scrapCount, 0)) AS DECIMAL(18,4)) AS scrapCount, |
| | | CAST(IF(SUM(IFNULL(qi.quantity, 0)) = 0, 0, |
| | | ROUND(SUM(IFNULL(qi.qualified_quantity, 0)) / SUM(IFNULL(qi.quantity, 0)) * 100, 2)) AS DECIMAL(18,2)) AS passRate, |
| | | CAST(IF(SUM(IFNULL(qi.quantity, 0)) = 0, 0, |
| | | ROUND(SUM(IFNULL(qu.reworkCount, 0)) / SUM(IFNULL(qi.quantity, 0)) * 100, 2)) AS DECIMAL(18,2)) AS reworkRate, |
| | | CAST(IF(SUM(IFNULL(qi.quantity, 0)) + SUM(IFNULL(ppo.scrapCount, 0)) = 0, 0, |
| | | ROUND(SUM(IFNULL(ppo.scrapCount, 0)) / (SUM(IFNULL(qi.quantity, 0)) + SUM(IFNULL(ppo.scrapCount, 0))) * 100, 2)) AS DECIMAL(18,2)) AS scrapRate |
| | | <include refid="personGroupRateJoin"/> |
| | | LEFT JOIN sys_user su ON su.user_id = ppm.user_id |
| | | <include refid="personGroupRateWhere"/> |
| | | GROUP BY ppm.user_id, COALESCE(NULLIF(ppm.user_name, ''), su.nick_name, CONCAT('班组人员', ppm.user_id)) |
| | | ORDER BY passRate DESC, totalCount DESC, dimensionId ASC |
| | | </select> |
| | | |
| | | |
| | | </mapper> |