zhuo
2025-05-12 f201f17d7e25e71d22b9c8b821e387bdc8fba52d
inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -45,6 +45,61 @@
        ip.cable_tag
    </sql>
    <sql id="selectInsOrderExport">
        SELECT
            io.*,
            isau.user_id assign,
            ir.id report_id,
            ir.url,
            ir.url_s,
            sample_counts.sample_num,
            CONCAT(ROUND(approved_product_counts.approved_count / total_product_counts.total_count * 100, 2), '%') AS insProgress,
            io.sample_view AS sample_name,
            GROUP_CONCAT(DISTINCT isa.model SEPARATOR ' ') AS sample_model,
            u.name,
            testing_name,
            case when io.type = 0 then '普通'
                 when io.type = 1 then '优先'
                 when io.type = 2 then '紧急'
                end typeString,
            case when io.ins_result = 1 then '合格'
                 when io.ins_result = 0 then '不合格'
                 else '待检验' end insResultString
        FROM
            ins_order io
                LEFT JOIN
            ins_sample isa ON io.id = isa.ins_order_id
                LEFT JOIN
            ins_sample_user isau ON isau.ins_sample_id = io.id
                LEFT JOIN
            (SELECT id, ins_order_id, is_ratify, url, url_s FROM ins_report WHERE is_ratify = 1) ir ON io.id = ir.ins_order_id
                LEFT JOIN
            user u ON io.create_user = u.id
                LEFT JOIN
            (SELECT ins_order_id, COUNT(*) AS sample_num
             FROM ins_sample
             WHERE id in(select id1 from (select is2.id id1 ,ip.id from ins_sample is2 left join ins_product ip on is2.id = ip.ins_sample_id where ip.id is not null)s )
             GROUP BY ins_order_id) sample_counts ON io.id = sample_counts.ins_order_id
                LEFT JOIN
            (SELECT ins_sample.ins_order_id, COUNT(*) AS total_count
             FROM ins_product
                      JOIN ins_sample ON ins_product.ins_sample_id = ins_sample.id
             WHERE ins_product.state = 1
             GROUP BY ins_sample.ins_order_id) total_product_counts ON io.id = total_product_counts.ins_order_id
                LEFT JOIN
            (SELECT ins_sample.ins_order_id, COUNT(*) AS approved_count
             FROM ins_product
                      JOIN ins_sample ON ins_product.ins_sample_id = ins_sample.id
             WHERE ins_product.state = 1 AND ins_product.ins_result IS NOT NULL
             GROUP BY ins_sample.ins_order_id) approved_product_counts ON io.id = approved_product_counts.ins_order_id
                LEFT JOIN (SELECT ins_sample_id, GROUP_CONCAT(DISTINCT uu.name SEPARATOR ',') AS testing_name
                           FROM ins_sample_user u
                                    LEFT JOIN user uu ON u.user_id = uu.id
                           WHERE u.state = 0
                           GROUP BY ins_sample_id
                           ORDER BY ins_sample_id) isu ON isu.ins_sample_id = io.id
    </sql>
    <select id="selectInsOrderPage" resultType="com.ruoyi.inspect.dto.SampleOrderDto">
        select *
        from (
@@ -178,60 +233,7 @@
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectCostStatistics" resultType="com.ruoyi.inspect.dto.CostStatisticsDto">
        select * from (
        SELECT A.id,
        A.entrust_code,
        A.create_time,
        A.sample,
        A.model,
        A.inspection_item,
        A.company,
        A.`name`,
        COUNT(1) num,
        SUM(A.price) price,
        SUM(A.cost) cost
        FROM
        (SELECT
        i.id,
        i.entrust_code,
        i.create_time,
        isa.sample,
        isa.sample_code,
        isa.model,
        c.price,
        c.cost,
        c.inspection_item,
        i.company,
        u.`name`,
        i.create_user,
        c.ins_sample_id
        FROM
        ins_order i
        LEFT JOIN ins_sample isa ON isa.ins_order_id = i.id
        LEFT JOIN `user` u ON u.id = i.user_id
        left join custom cus on cus.id = u.company
        LEFT JOIN (select SUM(b.price) price, sum(b.man_hour) cost,b.ins_sample_id,
        GROUP_CONCAT(b.inspection_item2
        SEPARATOR ',')
        inspection_item from (select * ,
        GROUP_CONCAT(CONCAT(inspection_item,'@',inspection_item_subclass) SEPARATOR ',')inspection_item2 from ins_product where state = 1 and template_id IS NOT NULL GROUP BY ins_sample_id,man_hour_group) b GROUP
        BY b.ins_sample_id) c ON c.ins_sample_id = isa.id
        where (i.state = 1 or i.state = 3 or i.state = 4) and c.ins_sample_id IS not  NULL)A
        GROUP BY
        A.id,
        A.entrust_code,
        A.create_time,
        A.sample,
        A.model,
        A.inspection_item,
        A.company,
        A.`name`
        ) B
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectDeviceList" resultType="java.util.Map">
        select device_name,
               en_device_name,
@@ -241,7 +243,7 @@
        latest_traceability
        from device
        where device.management_number in
        <foreach collection="names" index="index" open="(" separator="," close=")" item="val">
        <foreach collection="managementNumbers" index="index" open="(" separator="," close=")" item="val">
            #{val}
        </foreach>
    </select>
@@ -272,28 +274,6 @@
        </if>
    </select>
    <select id="getCount" resultType="long">
        select count(1)
        from (
        SELECT io.entrust_code,sam.sample,ip.inspection_item,u.name,b.create_time, sam.id
        from ins_order io
        left JOIN ins_sample sam on io.id=sam.ins_order_id
        LEFT JOIN ins_product ip on ip.ins_sample_id=sam.id
        LEFT JOIN
        (SELECT create_time,create_user,ins_product_id FROM (select * FROM ins_product_user ORDER BY
        ins_product_user.create_time DESC) a GROUP BY a.ins_product_id) b
        on b.ins_product_id=ip.id
        left JOIN `user` u on u.id=b.create_user
        where (ip.ins_result=0 OR ip.state=0)
        <if test="inspectionItems != null and inspectionItems != ''">
            and inspection_item like concat('%', #{inspectionItems}, '%')
        </if>
        <if test="orderNumber != null and orderNumber != ''">
            and io.entrust_code like concat('%', #{orderNumber}, '%')
        </if>
        ) temp
    </select>
    <select id="getStandardMethodCode" resultType="java.lang.String">
        select code
        from standard_method
@@ -312,77 +292,6 @@
                     where son_laboratory = #{laboratory}
                       and ins_sample_id in
                           (select id from ins_sample where ins_order_id = #{id}))
    </select>
    <select id="selectCostStatistics2" resultType="com.ruoyi.inspect.dto.CostStatisticsDto">
        select * from (
        SELECT A.id,
        A.entrust_code,
        A.create_time,
        A.sample,
        A.model,
        A.inspection_item,
        A.company,
        A.`name`,
        production,
        engineering,
        COUNT(1) num,
        SUM(A.price) price,
        SUM(A.cost) cost
        FROM
        (SELECT
        i.id,
        i.entrust_code,
        i.create_time,
        isa.sample,
        isa.sample_code,
        isa.model,
        c.price,
        c.cost,
        c.inspection_item,
        i.company,
        u.`name`,
        i.create_user,
        c.ins_sample_id,
        production,
        engineering
        FROM
        ins_order i
        LEFT JOIN ins_sample isa ON isa.ins_order_id = i.id
        LEFT JOIN `user` u ON u.id = i.user_id
        left join custom cus on cus.id = u.company
        LEFT JOIN (select SUM(b.price) price, sum(b.man_hour) cost,b.ins_sample_id,
        GROUP_CONCAT(b.inspection_item2
        SEPARATOR ',')
        inspection_item from (select * ,
        GROUP_CONCAT(CONCAT(inspection_item,'@',inspection_item_subclass) SEPARATOR ',')inspection_item2 from ins_product where state = 1 and template_id IS NOT NULL GROUP BY ins_sample_id,man_hour_group) b GROUP
        BY b.ins_sample_id) c ON c.ins_sample_id = isa.id
        where (i.state = 1 or i.state = 3 or i.state = 4) and c.ins_sample_id IS not  NULL)A
        GROUP BY
        A.id,
        A.entrust_code,
        A.create_time,
        A.sample,
        A.model,
        A.inspection_item,
        A.company,
        A.`name`,
        production,
        engineering
        ORDER BY
        A.id,
        A.entrust_code,
        A.create_time,
        A.sample,
        A.model,
        A.inspection_item,
        A.company,
        A.`name`,
        production,
        engineering) B
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="seldepLimsId" resultType="java.lang.String">
@@ -410,6 +319,7 @@
                 LEFT JOIN ins_product ip ON isa.id = ip.ins_sample_id
        WHERE ip.state = 1
          AND isa.id = #{id}
          and ip.is_binding != 1
        GROUP BY ip.inspection_item,
                 ip.inspection_item_subclass,
                 ip.inspection_item_class
@@ -501,59 +411,7 @@
    <!-- 查询检验单数据 -->
    <select id="rawAllInsOrderExport" resultType="com.ruoyi.inspect.dto.SampleOrderDto">
        select *
        from (
        SELECT
        io.*,
        isau.user_id assign,
        ir.id report_id,
        ir.url,
        ir.url_s,
        sample_counts.sample_num,
        CONCAT(ROUND(approved_product_counts.approved_count / total_product_counts.total_count * 100, 2), '%') AS insProgress,
        io.sample_view AS sample_name,
        GROUP_CONCAT(DISTINCT isa.model SEPARATOR ' ') AS sample_model,
        u.name,
        testing_name,
        case when io.type = 0 then '普通'
        when io.type = 1 then '优先'
        when io.type = 2 then '紧急'
            end typeString,
        case when io.ins_result = 1 then '合格'
        when io.ins_result = 0 then '不合格'
        else '待检验' end insResultString
        FROM
        ins_order io
        LEFT JOIN
        ins_sample isa ON io.id = isa.ins_order_id
        LEFT JOIN
        ins_sample_user isau ON isau.ins_sample_id = io.id
        LEFT JOIN
        (SELECT id, ins_order_id, is_ratify, url, url_s FROM ins_report WHERE is_ratify = 1) ir ON io.id = ir.ins_order_id
        LEFT JOIN
        user u ON io.create_user = u.id
        LEFT JOIN
        (SELECT ins_order_id, COUNT(*) AS sample_num
        FROM ins_sample
        WHERE id in(select id1 from (select is2.id id1 ,ip.id from ins_sample is2 left join ins_product ip on is2.id = ip.ins_sample_id where ip.id is not null)s )
        GROUP BY ins_order_id) sample_counts ON io.id = sample_counts.ins_order_id
        LEFT JOIN
        (SELECT ins_sample.ins_order_id, COUNT(*) AS total_count
        FROM ins_product
        JOIN ins_sample ON ins_product.ins_sample_id = ins_sample.id
        WHERE ins_product.state = 1
        GROUP BY ins_sample.ins_order_id) total_product_counts ON io.id = total_product_counts.ins_order_id
        LEFT JOIN
        (SELECT ins_sample.ins_order_id, COUNT(*) AS approved_count
        FROM ins_product
        JOIN ins_sample ON ins_product.ins_sample_id = ins_sample.id
        WHERE ins_product.state = 1 AND ins_product.ins_result IS NOT NULL
        GROUP BY ins_sample.ins_order_id) approved_product_counts ON io.id = approved_product_counts.ins_order_id
        LEFT JOIN (SELECT ins_sample_id, GROUP_CONCAT(DISTINCT uu.name SEPARATOR ',') AS testing_name
        FROM ins_sample_user u
        LEFT JOIN user uu ON u.user_id = uu.id
        WHERE u.state = 0
        GROUP BY ins_sample_id
        ORDER BY ins_sample_id) isu ON isu.ins_sample_id = io.id
        from ( <include refid="selectInsOrderExport"/>
        where (io.ifs_inventory_id IS NULL OR TRIM(io.ifs_inventory_id)  = '')
        <if test="isOrderAll != null and isOrderAll != ''">
            AND io.state in (1, 4)
@@ -585,4 +443,30 @@
                 left join ins_sample is2 on is2.ins_order_id = io.id
        where is2.id = #{insSampleId}
    </select>
    <!-- 根据订单id查询订单导出信息 -->
    <select id="getInsOrderExportByIds" resultType="com.ruoyi.inspect.dto.SampleOrderDto">
        <include refid="selectInsOrderExport"/>
        where (io.ifs_inventory_id IS NULL OR TRIM(io.ifs_inventory_id)  = '')
        and io.id in
        <foreach item="id" collection="orderIds" open="(" separator="," close=")">
            #{id}
        </foreach>
        GROUP BY io.id,type
        order by type desc,io.id desc
    </select>
    <!-- 查询当前时间是否有该检测项的抽样计划订单 -->
    <select id="selectNotSpotCheckOrder" resultType="java.lang.Integer">
        select count(*)
        from (select io.id
              from ins_product ip
                       left join ins_sample is2 on is2.id = ip.ins_sample_id
                       left join ins_order io on io.id = is2.ins_order_id
                       left join spot_check_quarter_item scqi on scqi.quarter_item_id = io.quarter_item_id
              where io.quarter_item_id is not null
                and scqi.spot_check_time between #{startTime} and #{endTime}
                and ip.structure_item_parameter_id = #{itmeId}
              group by io.id) a
    </select>
</mapper>