| | |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
| | | <mapper namespace="com.ruoyi.inspect.mapper.DataAnalysisMapper"> |
| | | |
| | | <!-- 有非空白描述且符合原有 OA 条件的处理记录,才作为不合格依据。 --> |
| | | <sql id="countableUnqualifiedBatch"> |
| | | SELECT inventory_quantity_id, 1 AS has_unqualified |
| | | FROM ins_unqualified_handler |
| | | WHERE oa_state IS NOT NULL |
| | | AND oa_state != 4 |
| | | AND unqualified_desc REGEXP '[^[:space:] ]' |
| | | GROUP BY inventory_quantity_id |
| | | </sql> |
| | | |
| | | <!-- 获取本月的物料属性信息 --> |
| | | <!-- 获取本月的物料属性信息(按天,补全日期) --> |
| | | <select id="getRawPassRateByBarChartByDay" resultType="java.util.Map"> |
| | |
| | | SELECT |
| | | DATE(report_time) AS day, |
| | | COUNT(*) AS total, |
| | | SUM(CASE WHEN inspect_status = 1 and (iuh_id is null) THEN 1 ELSE 0 END) AS qualified, |
| | | SUM(CASE WHEN inspect_status != 1 or (iuh_id is not null) THEN 1 ELSE 0 END) AS unQualified |
| | | SUM(CASE WHEN has_unqualified = 0 THEN 1 ELSE 0 END) AS qualified, |
| | | SUM(CASE WHEN has_unqualified = 1 THEN 1 ELSE 0 END) AS unQualified |
| | | FROM (SELECT |
| | | IFNULL(iuh.feedback_time,io1.send_time) report_time, |
| | | iuh.id AS iuh_id, |
| | | COALESCE(counted_iuh.has_unqualified, 0) AS has_unqualified, |
| | | iiq.inspect_status |
| | | FROM ifs_inventory_quantity iiq |
| | | LEFT JOIN ins_order io1 |
| | | ON io1.ifs_inventory_id = iiq.id |
| | | AND io1.order_type = #{dto.orderType} |
| | | AND io1.state != -1 |
| | | LEFT JOIN ( |
| | | <include refid="countableUnqualifiedBatch"/> |
| | | ) counted_iuh ON counted_iuh.inventory_quantity_id = iiq.id |
| | | LEFT JOIN ( |
| | | SELECT |
| | | MAX(iuh.id) AS id, |
| | |
| | | SELECT |
| | | MONTH(report_time) AS month, |
| | | COUNT(*) AS total, |
| | | SUM(CASE WHEN inspect_status = 1 and (iuh_id is null) THEN 1 ELSE 0 END) AS qualified, |
| | | SUM(CASE WHEN inspect_status != 1 or (iuh_id is not null) THEN 1 ELSE 0 END) AS unQualified |
| | | SUM(CASE WHEN has_unqualified = 0 THEN 1 ELSE 0 END) AS qualified, |
| | | SUM(CASE WHEN has_unqualified = 1 THEN 1 ELSE 0 END) AS unQualified |
| | | FROM ( |
| | | SELECT |
| | | IFNULL(iuh.feedback_time,io1.send_time) report_time, |
| | | iuh.id AS iuh_id, |
| | | COALESCE(counted_iuh.has_unqualified, 0) AS has_unqualified, |
| | | iiq.inspect_status |
| | | FROM ifs_inventory_quantity iiq |
| | | LEFT JOIN ins_order io1 |
| | | ON io1.ifs_inventory_id = iiq.id |
| | | AND io1.order_type = #{dto.orderType} |
| | | AND io1.state != -1 |
| | | LEFT JOIN ( |
| | | <include refid="countableUnqualifiedBatch"/> |
| | | ) counted_iuh ON counted_iuh.inventory_quantity_id = iiq.id |
| | | LEFT JOIN ( |
| | | SELECT |
| | | MAX(iuh.id) AS id, |
| | |
| | | SELECT |
| | | COUNT(*) AS sum, |
| | | /* 合格 */ |
| | | SUM(CASE WHEN inspect_status = 1 and (iuh_id is null) THEN 1 ELSE 0 END) AS qualified, |
| | | SUM(CASE WHEN has_unqualified = 0 THEN 1 ELSE 0 END) AS qualified, |
| | | /* 不合格 */ |
| | | SUM(CASE WHEN inspect_status != 1 or (iuh_id is not null) THEN 1 ELSE 0 END) AS unQualified |
| | | SUM(CASE WHEN has_unqualified = 1 THEN 1 ELSE 0 END) AS unQualified |
| | | FROM ( |
| | | SELECT |
| | | iiq.inspect_status, |
| | | iuh.id AS iuh_id |
| | | COALESCE(counted_iuh.has_unqualified, 0) AS has_unqualified |
| | | FROM ifs_inventory_quantity iiq |
| | | INNER JOIN ins_order io1 |
| | | ON io1.ifs_inventory_id = iiq.id |
| | | LEFT JOIN ( |
| | | <include refid="countableUnqualifiedBatch"/> |
| | | ) counted_iuh ON counted_iuh.inventory_quantity_id = iiq.id |
| | | LEFT JOIN ( |
| | | SELECT |
| | | MAX(iuh.id) AS id, |
| | |
| | | SELECT |
| | | supplier_name, |
| | | COUNT(id) AS totalBatch, |
| | | SUM(CASE WHEN inspect_status != 1 or (iuh_id is not null) THEN 1 ELSE 0 END) AS unqualifiedBatch, |
| | | ROUND(SUM(CASE WHEN inspect_status = 1 and iuh_id is null THEN 1 ELSE 0 END) / COUNT(*)* 100, 2 ) AS passRate |
| | | SUM(CASE WHEN has_unqualified = 1 THEN 1 ELSE 0 END) AS unqualifiedBatch, |
| | | ROUND(SUM(CASE WHEN has_unqualified = 0 THEN 1 ELSE 0 END) / COUNT(*)* 100, 2 ) AS passRate |
| | | FROM |
| | | ( |
| | | SELECT |
| | | iiq.supplier_name, |
| | | iiq.id, |
| | | iuh.id AS iuh_id, |
| | | COALESCE(counted_iuh.has_unqualified, 0) AS has_unqualified, |
| | | iiq.inspect_status |
| | | FROM ifs_inventory_quantity iiq |
| | | INNER JOIN ins_order io1 |
| | | ON io1.ifs_inventory_id = iiq.id |
| | | AND io1.order_type = #{dto.orderType} |
| | | AND io1.state != -1 |
| | | LEFT JOIN ( |
| | | <include refid="countableUnqualifiedBatch"/> |
| | | ) counted_iuh ON counted_iuh.inventory_quantity_id = iiq.id |
| | | LEFT JOIN ( |
| | | SELECT |
| | | MAX(iuh.id) AS id, |
| | |
| | | <!-- 查询本月与上月合格率对比 --> |
| | | <select id="getRawUpMonth" resultType="java.util.Map"> |
| | | select DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') as month, |
| | | (select ROUND((COUNT(*) - SUM(CASE WHEN inspect_status in (2, 4) THEN 1 ELSE 0 END)) / COUNT(*) * |
| | | (select ROUND( |
| | | SUM(CASE WHEN counted_iuh.has_unqualified IS NULL THEN 1 ELSE 0 END) / COUNT(*) * |
| | | 100, |
| | | 2) passRate |
| | | from ifs_inventory_quantity iiq |
| | | LEFT JOIN ins_order io1 on io1.ifs_inventory_id = iiq.id |
| | | and io1.order_type = '进厂检验' |
| | | and io1.state != -1 |
| | | LEFT JOIN ( |
| | | <include refid="countableUnqualifiedBatch"/> |
| | | ) counted_iuh ON counted_iuh.inventory_quantity_id = iiq.id |
| | | where iiq.is_finish = 1 |
| | | and iiq.inspect_status not in (0, 3) |
| | | and (io1.send_time between DATE_FORMAT(DATE_SUB(DATE_FORMAT(NOW(), '%Y-%m-01'), INTERVAL 1 MONTH), |
| | |
| | | and DATE_FORMAT(LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)), '%Y-%m-%d 23:59:59'))) passRate |
| | | UNION ALL |
| | | select DATE_FORMAT(CURRENT_DATE, '%Y-%m') as month, |
| | | (select ROUND((COUNT(*) - SUM(CASE WHEN inspect_status in (2, 4) THEN 1 ELSE 0 END)) / COUNT(*) * |
| | | (select ROUND( |
| | | SUM(CASE WHEN counted_iuh.has_unqualified IS NULL THEN 1 ELSE 0 END) / COUNT(*) * |
| | | 100, |
| | | 2) passRate |
| | | from ifs_inventory_quantity iiq |
| | | LEFT JOIN ins_order io1 on io1.ifs_inventory_id = iiq.id |
| | | and io1.order_type = '进厂检验' |
| | | and io1.state != -1 |
| | | LEFT JOIN ( |
| | | <include refid="countableUnqualifiedBatch"/> |
| | | ) counted_iuh ON counted_iuh.inventory_quantity_id = iiq.id |
| | | where iiq.is_finish = 1 |
| | | and iiq.inspect_status not in (0, 3) |
| | | and (io1.send_time between |