| | |
| | | <!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"> |
| | | |
| | | <!-- 获取本周的物料属性信息 --> |
| | | <select id="getRawPassRateByBarChartByWeek" resultType="java.util.Map"> |
| | | WITH RECURSIVE AllWeeks AS ( |
| | | SELECT 1 AS week |
| | | UNION ALL |
| | | SELECT week + 1 FROM AllWeeks WHERE week < 7 |
| | | ) |
| | | SELECT |
| | | COALESCE(sub.qualified, 0) AS qualified, |
| | | COALESCE(sub.unQualified, 0) AS unQualified, |
| | | CASE am.week |
| | | WHEN 1 THEN '星期日' |
| | | WHEN 2 THEN '星期一' |
| | | WHEN 3 THEN '星期二' |
| | | WHEN 4 THEN '星期三' |
| | | WHEN 5 THEN '星期四' |
| | | WHEN 6 THEN '星期五' |
| | | WHEN 7 THEN '星期六' |
| | | END AS searchTime |
| | | FROM AllWeeks am |
| | | LEFT JOIN ( |
| | | SELECT |
| | | DAYOFWEEK(io1.send_time) AS week, |
| | | SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) AS qualified, |
| | | SUM(CASE WHEN iiq.inspect_status = 2 or iiq.inspect_status = 4 THEN 1 ELSE 0 END) AS unQualified |
| | | FROM ifs_inventory_quantity iiq |
| | | INNER JOIN ins_order io1 |
| | | ON io1.ifs_inventory_id = iiq.id |
| | | LEFT JOIN ( |
| | | SELECT ins_order_id, MAX(sample) AS sample, MAX(model) AS model |
| | | FROM ins_sample |
| | | GROUP BY ins_order_id |
| | | ) ins ON ins.ins_order_id = io1.id |
| | | WHERE |
| | | iiq.is_finish = 1 |
| | | AND iiq.inspect_status IN (1, 2,4) |
| | | AND io1.order_type = #{dto.orderType} |
| | | AND io1.state != -1 |
| | | AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate} |
| | | |
| | | <if test="dto.materialProp != null and dto.materialProp.trim() != ''"> |
| | | AND IFNULL(iiq.material_prop,'') LIKE CONCAT('%',#{dto.materialProp},'%') |
| | | </if> |
| | | <if test="dto.sampleName != null and dto.sampleName.trim() != ''"> |
| | | AND IFNULL(ins.sample,'') LIKE CONCAT('%',#{dto.sampleName},'%') |
| | | </if> |
| | | <if test="dto.modelName != null and dto.modelName.trim() != ''"> |
| | | AND IFNULL(ins.model,'') LIKE CONCAT('%',#{dto.modelName},'%') |
| | | </if> |
| | | <if test="dto.supplierName != null and dto.supplierName.trim() != ''"> |
| | | AND IFNULL(iiq.supplier_name,'') LIKE CONCAT('%',#{dto.supplierName},'%') |
| | | </if> |
| | | |
| | | GROUP BY DAYOFWEEK(io1.send_time) |
| | | ) sub ON am.week = sub.week |
| | | ORDER BY am.week |
| | | |
| | | </select> |
| | | |
| | | |
| | | <!-- 获取本月的物料属性信息 --> |
| | | <!-- 获取本月的物料属性信息(按天,补全日期) --> |
| | | <select id="getRawPassRateByBarChartByDay" resultType="java.util.Map"> |
| | |
| | | FROM AllDays ad |
| | | LEFT JOIN ( |
| | | SELECT |
| | | DATE(io1.send_time) AS day, |
| | | DATE(report_time) AS day, |
| | | COUNT(*) AS total, |
| | | SUM(CASE WHEN iiq.inspect_status = 1 and (iuh.id is null) THEN 1 ELSE 0 END) AS qualified, |
| | | SUM(CASE WHEN iiq.inspect_status != 1 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified |
| | | 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 |
| | | FROM (SELECT |
| | | IFNULL(iuh.feedback_time,io1.send_time) report_time, |
| | | iuh.id AS iuh_id, |
| | | 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 |
| | | AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate} |
| | | LEFT JOIN ( |
| | | SELECT |
| | | MAX(iuh.id) AS id, |
| | | iuh.inventory_quantity_id |
| | | FROM ins_unqualified_handler iuh |
| | | WHERE iuh.oa_state !=4 AND iuh.oa_state is not null |
| | | GROUP BY iuh.inventory_quantity_id |
| | | SELECT |
| | | MAX(iuh.id) AS id, |
| | | iuh.inventory_quantity_id, |
| | | iuh.feedback_time |
| | | FROM ins_unqualified_handler iuh |
| | | WHERE iuh.oa_state !=4 AND iuh.oa_state is not null |
| | | GROUP BY iuh.inventory_quantity_id |
| | | ) iuh ON iiq.id = iuh.inventory_quantity_id |
| | | LEFT JOIN ( |
| | | SELECT ins_order_id, MAX(sample) AS sample, MAX(model) AS model |
| | |
| | | WHERE |
| | | iiq.is_finish = 1 |
| | | AND iiq.inspect_status IN (1,2,4) |
| | | |
| | | AND IFNULL(iuh.feedback_time,io1.send_time) BETWEEN #{dto.beginDate} AND #{dto.endDate} |
| | | <if test="dto.materialProp != null and dto.materialProp != ''"> |
| | | AND IFNULL(iiq.material_prop,'') LIKE CONCAT('%',#{dto.materialProp},'%') |
| | | AND iiq.material_prop = #{dto.materialProp} |
| | | </if> |
| | | <if test="dto.sampleName != null and dto.sampleName != ''"> |
| | | AND IFNULL(ins.sample,'') LIKE CONCAT('%',#{dto.sampleName},'%') |
| | |
| | | AND IFNULL(iiq.supplier_name,'') LIKE CONCAT('%',#{dto.supplierName},'%') |
| | | </if> |
| | | <if test="dto.contract != null and dto.contract != ''"> |
| | | AND IFNULL(iiq.contract,'') = #{dto.contract} |
| | | </if> |
| | | GROUP BY DATE(io1.send_time) |
| | | AND iiq.contract = #{dto.contract} |
| | | </if>)temp |
| | | GROUP BY day |
| | | ) sub ON ad.day = sub.day |
| | | ORDER BY ad.day |
| | | </select> |
| | |
| | | FROM AllMonths am |
| | | LEFT JOIN ( |
| | | SELECT |
| | | MONTH(io1.send_time) AS month, |
| | | COUNT(*) AS total, |
| | | SUM(CASE WHEN iiq.inspect_status = 1 and (iuh.id is null) THEN 1 ELSE 0 END) AS qualified, |
| | | SUM(CASE WHEN iiq.inspect_status != 1 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified |
| | | 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 |
| | | FROM ( |
| | | SELECT |
| | | IFNULL(iuh.feedback_time,io1.send_time) report_time, |
| | | iuh.id AS iuh_id, |
| | | 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 |
| | | AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate} |
| | | LEFT JOIN ( |
| | | SELECT |
| | | MAX(iuh.id) AS id, |
| | | iuh.inventory_quantity_id |
| | | FROM ins_unqualified_handler iuh |
| | | WHERE iuh.oa_state !=4 AND iuh.oa_state is not null |
| | | GROUP BY iuh.inventory_quantity_id |
| | | SELECT |
| | | MAX(iuh.id) AS id, |
| | | iuh.inventory_quantity_id, |
| | | iuh.feedback_time |
| | | FROM ins_unqualified_handler iuh |
| | | WHERE iuh.oa_state !=4 AND iuh.oa_state is not null |
| | | GROUP BY iuh.inventory_quantity_id |
| | | ) iuh ON iiq.id = iuh.inventory_quantity_id |
| | | LEFT JOIN ( |
| | | SELECT ins_order_id, MAX(sample) AS sample, MAX(model) AS model |
| | |
| | | WHERE |
| | | iiq.is_finish = 1 |
| | | AND iiq.inspect_status IN (1,2,4) |
| | | AND IFNULL(iuh.feedback_time,io1.send_time) BETWEEN #{dto.beginDate} AND #{dto.endDate} |
| | | |
| | | <if test="dto.materialProp != null and dto.materialProp != ''"> |
| | | AND IFNULL(iiq.material_prop,'') LIKE CONCAT('%',#{dto.materialProp},'%') |
| | | AND iiq.material_prop = #{dto.materialProp} |
| | | </if> |
| | | <if test="dto.sampleName != null and dto.sampleName != ''"> |
| | | AND IFNULL(ins.sample,'') LIKE CONCAT('%',#{dto.sampleName},'%') |
| | |
| | | AND IFNULL(iiq.supplier_name,'') LIKE CONCAT('%',#{dto.supplierName},'%') |
| | | </if> |
| | | <if test="dto.contract != null and dto.contract != ''"> |
| | | AND IFNULL(iiq.contract,'') = #{dto.contract} |
| | | </if> |
| | | GROUP BY MONTH(io1.send_time) |
| | | AND iiq.contract = #{dto.contract} |
| | | </if>)temp |
| | | GROUP BY month |
| | | ) sub ON am.month = sub.month |
| | | ORDER BY am.month |
| | | </select> |
| | |
| | | <!-- 查看物料属性饼状图 --> |
| | | <select id="getRawPassRateByCake" resultType="java.util.Map"> |
| | | SELECT |
| | | COUNT(*) AS sum, |
| | | /* 合格 */ |
| | | SUM(CASE WHEN iiq.inspect_status = 1 and (iuh.id is null) THEN 1 ELSE 0 END) AS qualified, |
| | | /* 不合格 */ |
| | | SUM(CASE WHEN iiq.inspect_status != 1 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified |
| | | COUNT(*) AS sum, |
| | | /* 合格 */ |
| | | 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 |
| | | FROM ( |
| | | SELECT |
| | | iiq.inspect_status, |
| | | iuh.id AS iuh_id |
| | | FROM ifs_inventory_quantity iiq |
| | | INNER JOIN ins_order io1 |
| | | ON io1.ifs_inventory_id = iiq.id |
| | | LEFT JOIN ( |
| | | SELECT |
| | | MAX(iuh.id) AS id, |
| | | iuh.inventory_quantity_id |
| | | FROM ins_unqualified_handler iuh |
| | | WHERE iuh.oa_state !=4 AND iuh.oa_state is not null |
| | | GROUP BY iuh.inventory_quantity_id |
| | | SELECT |
| | | MAX(iuh.id) AS id, |
| | | iuh.inventory_quantity_id, |
| | | iuh.feedback_time |
| | | FROM ins_unqualified_handler iuh |
| | | WHERE iuh.oa_state !=4 AND iuh.oa_state is not null |
| | | GROUP BY iuh.inventory_quantity_id |
| | | ) iuh ON iiq.id = iuh.inventory_quantity_id |
| | | LEFT JOIN ( |
| | | SELECT |
| | |
| | | AND iiq.inspect_status IN (1, 2,4) |
| | | AND io1.order_type = #{dto.orderType} |
| | | AND io1.state != -1 |
| | | AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate} |
| | | |
| | | AND IFNULL(iuh.feedback_time,io1.send_time) BETWEEN #{dto.beginDate} AND #{dto.endDate} |
| | | <if test="dto.materialProp != null and dto.materialProp.trim() != ''"> |
| | | AND IFNULL(iiq.material_prop, '') LIKE CONCAT('%', #{dto.materialProp}, '%') |
| | | AND iiq.material_prop = #{dto.materialProp} |
| | | </if> |
| | | <if test="dto.sampleName != null and dto.sampleName.trim() != ''"> |
| | | AND IFNULL(ins.sample, '') LIKE CONCAT('%', #{dto.sampleName}, '%') |
| | |
| | | AND IFNULL(iiq.supplier_name, '') LIKE CONCAT('%', #{dto.supplierName}, '%') |
| | | </if> |
| | | <if test="dto.contract != null and dto.contract != ''"> |
| | | AND IFNULL(iiq.contract,'') = #{dto.contract} |
| | | AND iiq.contract = #{dto.contract} |
| | | </if> |
| | | )temp |
| | | </select> |
| | | |
| | | <select id="getMaterialPropTable" resultType="com.ruoyi.inspect.dto.MaterialPropTableDTO"> |
| | | SELECT |
| | | iiq.supplier_name AS supplierName, |
| | | COUNT(iiq.id) AS totalBatch, |
| | | SUM(CASE WHEN iiq.inspect_status != 1 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unqualifiedBatch, |
| | | ROUND(SUM(CASE WHEN iiq.inspect_status = 1 and iuh.id is null THEN 1 ELSE 0 END) / COUNT(*)* 100, 2 ) AS passRate |
| | | 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 |
| | | AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate} |
| | | LEFT JOIN ( |
| | | 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 |
| | | FROM |
| | | ( |
| | | SELECT |
| | | MAX(iuh.id) AS id, |
| | | iuh.inventory_quantity_id |
| | | FROM ins_unqualified_handler iuh |
| | | WHERE iuh.oa_state !=4 AND iuh.oa_state is not null |
| | | GROUP BY iuh.inventory_quantity_id |
| | | ) iuh ON iiq.id = iuh.inventory_quantity_id |
| | | LEFT JOIN ( |
| | | SELECT |
| | | ins_order_id, |
| | | MAX(sample) AS sample, |
| | | MAX(model) AS model |
| | | FROM ins_sample |
| | | GROUP BY ins_order_id |
| | | ) ins ON ins.ins_order_id = io1.id |
| | | iiq.supplier_name, |
| | | iiq.id, |
| | | iuh.id AS iuh_id, |
| | | 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 ( |
| | | SELECT |
| | | MAX(iuh.id) AS id, |
| | | iuh.inventory_quantity_id, |
| | | iuh.feedback_time |
| | | FROM ins_unqualified_handler iuh |
| | | WHERE iuh.oa_state !=4 AND iuh.oa_state is not null |
| | | GROUP BY iuh.inventory_quantity_id |
| | | ) iuh ON iiq.id = iuh.inventory_quantity_id |
| | | LEFT JOIN ( |
| | | SELECT |
| | | ins_order_id, |
| | | MAX(sample) AS sample, |
| | | MAX(model) AS model |
| | | FROM ins_sample |
| | | GROUP BY ins_order_id |
| | | ) ins ON ins.ins_order_id = io1.id |
| | | WHERE |
| | | iiq.is_finish = 1 |
| | | AND iiq.inspect_status IN (1,2,4) |
| | | AND IFNULL(iuh.feedback_time,io1.send_time) between #{dto.beginDate} and #{dto.endDate} |
| | | <if test="dto.materialProp != null and dto.materialProp != ''"> |
| | | AND iiq.material_prop = #{dto.materialProp} |
| | | </if> |
| | | |
| | | WHERE |
| | | iiq.is_finish = 1 |
| | | AND iiq.inspect_status IN (1,2,4) |
| | | <if test="dto.sampleName != null and dto.sampleName != ''"> |
| | | AND IFNULL(ins.sample,'') LIKE CONCAT('%',#{dto.sampleName},'%') |
| | | </if> |
| | | |
| | | <if test="dto.materialProp != null and dto.materialProp != ''"> |
| | | AND IFNULL(iiq.material_prop,'') LIKE CONCAT('%',#{dto.materialProp},'%') |
| | | </if> |
| | | <if test="dto.modelName != null and dto.modelName != ''"> |
| | | AND IFNULL(ins.model,'') LIKE CONCAT('%',#{dto.modelName},'%') |
| | | </if> |
| | | |
| | | <if test="dto.sampleName != null and dto.sampleName != ''"> |
| | | AND IFNULL(ins.sample,'') LIKE CONCAT('%',#{dto.sampleName},'%') |
| | | </if> |
| | | |
| | | <if test="dto.modelName != null and dto.modelName != ''"> |
| | | AND IFNULL(ins.model,'') LIKE CONCAT('%',#{dto.modelName},'%') |
| | | </if> |
| | | |
| | | <if test="dto.supplierName != null and dto.supplierName != ''"> |
| | | AND IFNULL(iiq.supplier_name,'') LIKE CONCAT('%',#{dto.supplierName},'%') |
| | | </if> |
| | | <if test="dto.contract != null and dto.contract != ''"> |
| | | AND IFNULL(iiq.contract,'') = #{dto.contract} |
| | | </if> |
| | | GROUP BY |
| | | iiq.supplier_name |
| | | |
| | | ORDER BY |
| | | passRate DESC; |
| | | <if test="dto.supplierName != null and dto.supplierName != ''"> |
| | | AND IFNULL(iiq.supplier_name,'') LIKE CONCAT('%',#{dto.supplierName},'%') |
| | | </if> |
| | | <if test="dto.contract != null and dto.contract != ''"> |
| | | AND iiq.contract = #{dto.contract} |
| | | </if> |
| | | )temp |
| | | GROUP BY supplier_name |
| | | ORDER BY passRate DESC; |
| | | |
| | | </select> |
| | | |