| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!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 |
| | | WITH RECURSIVE AllWeeks AS ( |
| | | SELECT 1 AS week |
| | | UNION ALL |
| | | SELECT week + 1 |
| | | FROM AllWeeks |
| | | WHERE week < 7) |
| | | SELECT COALESCE(sub.sum, 0) AS sum, |
| | | 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 5 THEN '星期四' |
| | | WHEN 6 THEN '星期五' |
| | | WHEN 7 THEN '星期六' |
| | | END AS searchTime, |
| | | COALESCE(sub.passRate, 0) AS passRate |
| | | END AS searchTime |
| | | FROM AllWeeks am |
| | | LEFT JOIN (select COUNT(*) sum, |
| | | DAYOFWEEK(io1.send_time) searchTime, |
| | | ROUND((COUNT(*) - SUM(CASE WHEN inspect_status in (2, 4) 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 = #{dto.orderType} |
| | | and io1.state != -1 |
| | | left join (select is2.ins_order_id, |
| | | is2.sample_type, |
| | | is2.model, |
| | | is2.sample |
| | | from ins_sample is2 |
| | | group by is2.ins_order_id) ins on ins.ins_order_id = io1.id |
| | | where iiq.is_finish = 1 |
| | | and iiq.inspect_status not in (0, 3) |
| | | and (io1.send_time between #{dto.beginDate} and #{dto.endDate}) |
| | | <if test="dto.sampleName != null and dto.sampleName != ''"> |
| | | and ins.sample like concat('%', #{dto.sampleName}, '%') |
| | | 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 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) |
| | | 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.modelName != null and dto.modelName != ''"> |
| | | and ins.model like concat('%', #{dto.modelName}, '%') |
| | | <if test="dto.sampleName != null and dto.sampleName.trim() != ''"> |
| | | AND IFNULL(ins.sample,'') LIKE CONCAT('%',#{dto.sampleName},'%') |
| | | </if> |
| | | <if test="dto.supplierName != null and dto.supplierName != ''"> |
| | | and iiq.supplier_name like concat('%', #{dto.supplierName}, '%') |
| | | <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) |
| | | having searchTime is not null) sub ON am.week = sub.searchTime |
| | | WHERE am.week BETWEEN 1 AND 7 |
| | | ) sub ON am.week = sub.week |
| | | ORDER BY am.week |
| | | |
| | | </select> |
| | | |
| | | <!-- 获取本月的原材料信息 --> |
| | | |
| | | <!-- 获取本月的物料属性信息 --> |
| | | <!-- 获取本月的物料属性信息(按天,补全日期) --> |
| | | <select id="getRawPassRateByBarChartByDay" resultType="java.util.Map"> |
| | | select COUNT(*) sum, |
| | | DATE_FORMAT(io1.send_time, '%Y-%m-%d') searchTime, |
| | | ROUND((COUNT(*) - SUM(CASE WHEN inspect_status in (2, 4) 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 = #{dto.orderType} |
| | | and io1.state != -1 |
| | | left join (select is2.ins_order_id, |
| | | is2.sample_type, |
| | | is2.model, |
| | | is2.sample |
| | | from ins_sample is2 |
| | | group by is2.ins_order_id) ins on ins.ins_order_id = io1.id |
| | | where iiq.is_finish = 1 |
| | | and iiq.inspect_status not in (0, 3) |
| | | and (io1.send_time between #{dto.beginDate} and #{dto.endDate}) |
| | | WITH RECURSIVE AllDays AS ( |
| | | SELECT DATE(#{dto.beginDate}) AS day |
| | | UNION ALL |
| | | SELECT DATE_ADD(day, INTERVAL 1 DAY) |
| | | FROM AllDays |
| | | WHERE day < DATE(#{dto.endDate}) |
| | | ) |
| | | SELECT |
| | | DATE_FORMAT(ad.day,'%Y-%m-%d') AS searchTime, |
| | | COALESCE(sub.qualified,0) AS qualified, |
| | | COALESCE(sub.unQualified,0) AS unQualified, |
| | | CASE |
| | | WHEN COALESCE(sub.total,0) = 0 THEN 0 |
| | | ELSE ROUND(sub.qualified / sub.total * 100, 2) |
| | | END AS passRate |
| | | FROM AllDays ad |
| | | LEFT JOIN ( |
| | | SELECT |
| | | DATE(io1.send_time) AS day, |
| | | COUNT(*) AS total, |
| | | SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) AS qualified, |
| | | SUM(CASE WHEN iiq.inspect_status = 2 THEN 1 ELSE 0 END) AS unQualified |
| | | 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 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) |
| | | |
| | | <if test="dto.materialProp != null and dto.materialProp != ''"> |
| | | AND IFNULL(iiq.material_prop,'') LIKE CONCAT('%',#{dto.materialProp},'%') |
| | | </if> |
| | | <if test="dto.sampleName != null and dto.sampleName != ''"> |
| | | and ins.sample like concat('%', #{dto.sampleName}, '%') |
| | | AND IFNULL(ins.sample,'') LIKE CONCAT('%',#{dto.sampleName},'%') |
| | | </if> |
| | | <if test="dto.modelName != null and dto.modelName != ''"> |
| | | and ins.model like concat('%', #{dto.modelName}, '%') |
| | | AND IFNULL(ins.model,'') LIKE CONCAT('%',#{dto.modelName},'%') |
| | | </if> |
| | | <if test="dto.supplierName != null and dto.supplierName != ''"> |
| | | and iiq.supplier_name like concat('%', #{dto.supplierName}, '%') |
| | | AND IFNULL(iiq.supplier_name,'') LIKE CONCAT('%',#{dto.supplierName},'%') |
| | | </if> |
| | | GROUP BY DATE_FORMAT(io1.send_time, '%Y-%m-%d') |
| | | having searchTime is not null |
| | | order by searchTime |
| | | |
| | | GROUP BY DATE(io1.send_time) |
| | | ) sub ON ad.day = sub.day |
| | | ORDER BY ad.day |
| | | </select> |
| | | |
| | | <!-- 获取本年的原材料信息 --> |
| | | |
| | | <!-- 获取本年的物料属性信息 --> |
| | | <!-- 获取本年的物料属性信息 --> |
| | | <select id="getRawPassRateByBarChartByYear" resultType="java.util.Map"> |
| | | WITH RECURSIVE AllMonths AS (SELECT 1 AS month |
| | | WITH RECURSIVE AllMonths AS ( |
| | | SELECT 1 AS month |
| | | UNION ALL |
| | | SELECT month + 1 |
| | | FROM AllMonths |
| | | WHERE month < 12) |
| | | SELECT COALESCE(sub.sum, 0) AS sum, |
| | | SELECT month + 1 FROM AllMonths WHERE month |
| | | < |
| | | 12 |
| | | ) |
| | | SELECT |
| | | CASE am.month |
| | | WHEN 1 THEN '1月' |
| | | WHEN 2 THEN '2月' |
| | |
| | | WHEN 11 THEN '11月' |
| | | WHEN 12 THEN '12月' |
| | | END AS searchTime, |
| | | COALESCE(sub.passRate, 0) AS passRate |
| | | COALESCE(sub.qualified,0) AS qualified, |
| | | COALESCE(sub.unQualified,0) AS unQualified, |
| | | CASE |
| | | WHEN COALESCE(sub.total,0) = 0 THEN 0 |
| | | ELSE ROUND(sub.qualified / sub.total * 100, 2) |
| | | END AS passRate |
| | | FROM AllMonths am |
| | | LEFT JOIN (select COUNT(*) sum, |
| | | DATE_FORMAT(io1.send_time, '%m') searchTime, |
| | | ROUND((COUNT(*) - SUM(CASE WHEN inspect_status in (2, 4) 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 = #{dto.orderType} |
| | | and io1.state != -1 |
| | | left join (select is2.ins_order_id, |
| | | is2.sample_type, |
| | | is2.model, |
| | | is2.sample |
| | | from ins_sample is2 |
| | | group by is2.ins_order_id) ins on ins.ins_order_id = io1.id |
| | | where iiq.is_finish = 1 |
| | | and iiq.inspect_status not in (0, 3) |
| | | and (io1.send_time between #{dto.beginDate} and #{dto.endDate}) |
| | | LEFT JOIN ( |
| | | SELECT |
| | | MONTH(io1.send_time) AS month, |
| | | COUNT(*) AS total, |
| | | SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) AS qualified, |
| | | SUM(CASE WHEN iiq.inspect_status = 2 THEN 1 ELSE 0 END) AS unQualified |
| | | 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 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) |
| | | |
| | | <if test="dto.materialProp != null and dto.materialProp != ''"> |
| | | AND IFNULL(iiq.material_prop,'') LIKE CONCAT('%',#{dto.materialProp},'%') |
| | | </if> |
| | | <if test="dto.sampleName != null and dto.sampleName != ''"> |
| | | and ins.sample like concat('%', #{dto.sampleName}, '%') |
| | | AND IFNULL(ins.sample,'') LIKE CONCAT('%',#{dto.sampleName},'%') |
| | | </if> |
| | | <if test="dto.modelName != null and dto.modelName != ''"> |
| | | and ins.model like concat('%', #{dto.modelName}, '%') |
| | | AND IFNULL(ins.model,'') LIKE CONCAT('%',#{dto.modelName},'%') |
| | | </if> |
| | | <if test="dto.supplierName != null and dto.supplierName != ''"> |
| | | and iiq.supplier_name like concat('%', #{dto.supplierName}, '%') |
| | | AND IFNULL(iiq.supplier_name,'') LIKE CONCAT('%',#{dto.supplierName},'%') |
| | | </if> |
| | | GROUP BY DATE_FORMAT(io1.send_time, '%Y-%m') |
| | | having searchTime is not null) sub ON am.month = sub.searchTime |
| | | WHERE am.month BETWEEN 1 AND 12 |
| | | |
| | | GROUP BY MONTH(io1.send_time) |
| | | ) sub ON am.month = sub.month |
| | | ORDER BY am.month |
| | | </select> |
| | | |
| | | <!-- 查看原材料饼状图 --> |
| | | |
| | | <!-- 查看物料属性饼状图 --> |
| | | <select id="getRawPassRateByCake" resultType="java.util.Map"> |
| | | select COUNT(*) sum, |
| | | (COUNT(*) - SUM(CASE WHEN inspect_status in (2, 4) THEN 1 ELSE 0 END)) qualified, |
| | | (COUNT(*) - SUM(CASE WHEN inspect_status = 1 THEN 1 ELSE 0 END)) unQualified, |
| | | ROUND((COUNT(*) - SUM(CASE WHEN inspect_status in (2, 4) THEN 1 ELSE 0 END)) / COUNT(*) * 100, |
| | | 2) AS passRate |
| | | 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 (select is2.ins_order_id, |
| | | is2.sample_type, |
| | | is2.model, |
| | | is2.sample |
| | | from ins_sample is2 |
| | | group by is2.ins_order_id) ins on ins.ins_order_id = io1.id |
| | | where iiq.is_finish = 1 |
| | | and iiq.inspect_status not in (0, 3) |
| | | and (io1.send_time between #{dto.beginDate} and #{dto.endDate}) |
| | | SELECT |
| | | COUNT(*) AS sum, |
| | | /* 合格 */ |
| | | SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) AS qualified, |
| | | /* 不合格 */ |
| | | SUM(CASE WHEN iiq.inspect_status = 2 THEN 1 ELSE 0 END) AS unQualified, |
| | | ROUND( |
| | | SUM(CASE WHEN iiq.inspect_status = 1 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 |
| | | LEFT JOIN ( |
| | | SELECT |
| | | is2.ins_order_id, |
| | | MAX(is2.sample_type) AS sample_type, |
| | | MAX(is2.model) AS model, |
| | | MAX(is2.sample) AS sample |
| | | FROM ins_sample is2 |
| | | GROUP BY is2.ins_order_id |
| | | ) ins ON ins.ins_order_id = io1.id |
| | | WHERE |
| | | iiq.is_finish = 1 |
| | | AND iiq.inspect_status IN (1, 2) |
| | | 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> |
| | | </select> |
| | | |
| | | <select id="getMaterialPropTable" resultType="com.ruoyi.inspect.dto.MaterialPropTableDTO"> |
| | | SELECT |
| | | iiq.update_batch_no AS updateBatchNo, -- 修改后批次号 |
| | | iiq.qty_arrived AS qtyArrived, -- 抵达的采购数量 |
| | | iiq.part_desc AS partDesc, -- 零件描述 |
| | | iiq.inspect_status AS inspectStatus, -- 合格状态 |
| | | io1.send_time AS sendTime -- 下发时间 |
| | | 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 ( |
| | | 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) |
| | | |
| | | <if test="dto.materialProp != null and dto.materialProp != ''"> |
| | | AND IFNULL(iiq.material_prop,'') LIKE CONCAT('%',#{dto.materialProp},'%') |
| | | </if> |
| | | |
| | | <if test="dto.sampleName != null and dto.sampleName != ''"> |
| | | and ins.sample like concat('%', #{dto.sampleName}, '%') |
| | | AND IFNULL(ins.sample,'') LIKE CONCAT('%',#{dto.sampleName},'%') |
| | | </if> |
| | | |
| | | <if test="dto.modelName != null and dto.modelName != ''"> |
| | | and ins.model like concat('%', #{dto.modelName}, '%') |
| | | AND IFNULL(ins.model,'') LIKE CONCAT('%',#{dto.modelName},'%') |
| | | </if> |
| | | |
| | | <if test="dto.supplierName != null and dto.supplierName != ''"> |
| | | and iiq.supplier_name like concat('%', #{dto.supplierName}, '%') |
| | | AND IFNULL(iiq.supplier_name,'') LIKE CONCAT('%',#{dto.supplierName},'%') |
| | | </if> |
| | | |
| | | ORDER BY io1.send_time DESC |
| | | </select> |
| | | |
| | | <select id="getRawProductAnalysisAllSample" resultType="com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto"> |
| | |
| | | and io1.state != -1 |
| | | 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), '%Y-%m-%d %H:%i:%s') |
| | | and (io1.send_time between DATE_FORMAT(DATE_SUB(DATE_FORMAT(NOW(), '%Y-%m-01'), INTERVAL 1 MONTH), |
| | | '%Y-%m-%d %H:%i:%s') |
| | | 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, |