zouyu
2025-03-19 3647aa5008055528f075ee73002542a1399575ae
basic-server/src/main/resources/mapper/StandardTreeMapper.xml
@@ -21,85 +21,32 @@
        <result property="value" column="factory"/>
        <collection property="children" resultMap="LaboratoryDto"/>
    </resultMap>
    <resultMap id="LaboratoryDto" type="com.ruoyi.basic.dto.LaboratoryDto">
        <result property="label" column="laboratory"/>
        <result property="value" column="laboratory"/>
        <collection property="children" resultMap="SampleTypeDto"/>
    </resultMap>
    <resultMap id="SampleTypeDto" type="com.ruoyi.basic.dto.SampleTypeDto">
        <result property="label" column="sample_type"/>
        <result property="value" column="sample_type"/>
        <result property="sampleTypeId" column="sample_type_id"/>
        <result property="sort" column="sort"/>
        <result property="partNo" column="part_no"/>
        <result property="sampleTypeEn" column="sample_type_en"/>
        <collection property="children" resultMap="SampleDto"/>
    </resultMap>
    <resultMap id="SampleDto" type="com.ruoyi.basic.dto.SampleDto">
        <result property="label" column="sample"/>
        <result property="value" column="sample"/>
        <result property="partNo" column="sample_part_no"/>
        <result property="sampleEn" column="sample_en"/>
        <collection property="children" resultMap="ModelDto"/>
    </resultMap>
    <resultMap id="ModelDto" type="com.ruoyi.basic.dto.ModelDto">
        <result property="label" column="model"/>
        <result property="value" column="model"/>
    </resultMap>
    <sql id="selectStandardTree">
        sample    sample2,
               inspection_item,
               inspection_item_en,
               inspection_item_subclass,
               inspection_item_subclass_en,
               inspection_item_class,
               inspection_item_class_en,
               method,
               son_laboratory,
               unit,
               ask_tell  tell,
               ask,
               price,
               man_hour,
               man_hour_group,
               man_day,
               inspection_item_type,
               inspection_value_type,
               bsm,
               template_id,
               laboratory,
               checkout_number,
               section,
               dic,
               0         state,
        #{model}
        model,
        #{sample}
        sample,
        #{trees}
        tree,
        id
        structure_item_parameter_id,
        radius_list,
        rates
    </sql>
    <select id="selectStandardTreeList" resultMap="FactoryDto">
        select '中天科技检测中心'        factory,
               l.laboratory_name laboratory,
               sto.specimen_name sample_type,
               p.name            sample,
               st.model,
               sto.code,
               sto.id  sample_type_id,
               sto.sort,
               sto.specimen_name_en sample_type_en,
               p.name_en sample_en
               sto.code
        from laboratory l
                 left join structure_test_object sto on sto.laboratory_id = l.id
                 left join product p on p.object_id = sto.id
@@ -107,7 +54,6 @@
            and st.sample = p.name
        order by l.id, CAST(sto.code AS DECIMAL), p.id, ISNULL(st.id), st.id
    </select>
    <select id="selectStandardProductById" resultType="com.ruoyi.basic.pojo.StandardProductList">
        select inspection_item,
               inspection_item_subclass,
@@ -178,7 +124,35 @@
        group by sto.specimen_name
    </select>
    <select id="selectStandardProductListByTree" resultType="com.ruoyi.basic.pojo.StandardProductList">
        select <include refid="selectStandardTree"/>
        select sample    sample2,
               inspection_item,
               inspection_item_en,
               inspection_item_subclass,
               inspection_item_subclass_en,
               inspection_item_class,
               inspection_item_class_en,
               method,
               son_laboratory,
               unit,
               ask_tell  tell,
               ask,
               price,
               man_hour,
               man_hour_group,
               man_day,
               inspection_item_type,
               inspection_value_type,
               bsm,
               template_id,
               laboratory,
               checkout_number,
               section,
               dic,
               0         state,
               #{model}  model,
               #{sample} sample,
               #{trees}  tree,
               id        structure_item_parameter_id
        from structure_item_parameter
        where (
                sample is NULL
@@ -189,19 +163,63 @@
          and (laboratory is null
            or laboratory = ''
            or laboratory = #{laboratory})
        order by inspection_item_class, inspection_item, id asc
    </select>
        order by case
                     when man_hour_group is NULL then 1
                     when man_hour_group = '' then 1
                     else 0 end,
                 CASE
                     WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 如果以数字开头,则按照数字大小排序
                     WHEN man_hour_group REGEXP '[0-9]+'
                         THEN CAST(SUBSTRING(man_hour_group, 2) AS UNSIGNED) END -- 提取字母后面的数字部分
                , id asc
    </select>
    <select id="selectStandardProductListByTree2" resultType="com.ruoyi.basic.pojo.StandardProductList">
        select <include refid="selectStandardTree"/>
        select sample    sample2,
               inspection_item,
               inspection_item_en,
               inspection_item_subclass,
               inspection_item_subclass_en,
               inspection_item_class,
               inspection_item_class_en,
               method,
               son_laboratory,
               unit,
               ask_tell  tell,
               ask,
               price,
               man_hour,
               man_hour_group,
               man_day,
               inspection_item_type,
               inspection_value_type,
               bsm,
               template_id,
               laboratory,
               checkout_number,
               section,
               dic,
               0         state,
               #{model}  model,
               #{sample} sample,
               #{trees}  tree,
               id        structure_item_parameter_id
        from structure_item_parameter
        where sample LIKE CONCAT('%[', #{tree}, ']%')
          and (laboratory is null
            or laboratory = ''
            or laboratory = #{laboratory})
        order by inspection_item_class, inspection_item, id asc
    </select>
        order by case
                     when man_hour_group is NULL then 1
                     when man_hour_group = '' then 1
                     else 0 end,
                 CASE
                     WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 如果以数字开头,则按照数字大小排序
                     WHEN man_hour_group REGEXP '[0-9]+'
                         THEN CAST(SUBSTRING(man_hour_group, 2) AS UNSIGNED) END -- 提取字母后面的数字部分
                , id asc
    </select>
    <select id="getStandardTree2" resultMap="SampleTypeDto">
        select sto.specimen_name sample_type,
               p.name            sample,
@@ -211,7 +229,57 @@
                 left join standard_tree st on st.sample_type = sto.specimen_name
            and st.sample = p.name
    </select>
    <select id="selectStandardProductListByTree3" resultType="com.ruoyi.basic.pojo.StandardProductList">
        select sample    sample2,
               inspection_item,
               inspection_item_en,
               inspection_item_subclass,
               inspection_item_subclass_en,
               inspection_item_class,
               inspection_item_class_en,
               method,
               son_laboratory,
               unit,
               ask_tell  tell,
               ask,
               price,
               man_hour,
               man_hour_group,
               man_day,
               inspection_item_type,
               inspection_value_type,
               bsm,
               template_id,
               laboratory,
               checkout_number,
               section,
               dic,
               0         state,
               #{model}  model,
               #{sample} sample,
               #{trees}  tree,
               id        structure_item_parameter_id
        from structure_item_parameter
        where (
                sample is NULL
                OR sample = ''
                or sample = '[]'
                OR sample LIKE CONCAT('%', #{tree}, '%')
            )
          and (laboratory is null
            or laboratory = ''
            or laboratory = #{laboratory})
        order by case
                     when man_hour_group is NULL then 1
                     when man_hour_group = '' then 1
                     else 0 end,
                 CASE
                     WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 如果以数字开头,则按照数字大小排序
                     WHEN man_hour_group REGEXP '[0-9]+'
                         THEN CAST(SUBSTRING(man_hour_group, 2) AS UNSIGNED) END -- 提取字母后面的数字部分
                , id asc
    </select>
    <select id="getStandardTree3" resultType="com.ruoyi.basic.dto.SampleDto">
        select model label,
               model value
@@ -219,7 +287,6 @@
        where sample_type = #{sampleType}
          and sample is null
    </select>
    <select id="getLaboratory" resultType="java.lang.String">
        select l.laboratory_name
        from structure_test_object sto
@@ -251,134 +318,5 @@
        select name
        from product
        where name = #{name}
    </select>
    <select id="selectStandardTreeListByPartNo" resultMap="FactoryDto">
        select '中天科技检测中心' factory,
               l.laboratory_name  laboratory,
               sto.specimen_name  sample_type,
               p.name             sample,
               st.model,
               CASE
                   WHEN p.id = (SELECT pp.product_id
                                FROM product_part pp
                                WHERE pp.part_no = #{partNo})
                       THEN #{partNo}
                   ELSE NULL
                   END AS sample_part_no,
               CASE
                   WHEN sto.id = (SELECT sto.test_object_id
                                  FROM structure_test_object_part sto
                                  WHERE sto.part_no = #{partNo})
                       THEN #{partNo}
                   ELSE NULL
                   END AS part_no
        from laboratory l
                 left join structure_test_object sto on sto.laboratory_id = l.id
                 left join product p on p.object_id = sto.id
                 left join standard_tree st on st.sample_type = sto.specimen_name
            and st.sample = p.name
        where (p.id = (select pp.product_id
                       from product_part pp
                       where pp.part_no = #{partNo})
            or sto.id = (select sto.test_object_id
                         from structure_test_object_part sto
                         where sto.part_no = #{partNo}))
        order by l.id, CAST(sto.code AS DECIMAL), p.id, ISNULL(st.id), st.id
    </select>
    <sql id="getIfsOrder">
        select *
        from (SELECT ifs.*,
                     COALESCE(io1.create_user, io2.create_user)           create_user,
                     COALESCE(io1.entrust_code, io2.entrust_code)         entrust_code,
                     COALESCE(io1.send_time, io2.send_time)               send_time,
                     io1.id                                      enter_order_id,
                     ir1.id                                      enter_report_id,
                     ir1.url                                     enter_url,
                     ir1.url_s                                   enter_url_s,
                     io2.id                                      quarter_order_id,
                     ir2.id                                      quarter_report_id,
                     ir2.url                                     quarter_url,
                     ir2.url_s                                   quarter_url_s,
                     group_concat(distinct isa.sample_code, ' ')          sample_code,
                     group_concat(distinct isa.sample, ' ')               sample_name,
                     group_concat(distinct isa.model, ' ')                sample_model,
                     COALESCE(io1.state, io2.state)                       order_state,
                     COALESCE(isu.userName, COALESCE(u1.name, u2.name)) user_name,
                     group_concat(distinct iuh.unqualified_desc, ' ')    unqualified_desc,
                     io1.is_exemption
              FROM ifs_inventory_quantity ifs
                       LEFT JOIN ins_order io1 ON io1.ifs_inventory_id = ifs.id and io1.order_type = '进厂检验' and io1.state != -1
                       left join ins_report ir1 on io1.id = ir1.ins_order_id
                       left join user u1 on io1.create_user = u1.id
                       LEFT JOIN ins_order io2 ON io2.ifs_inventory_id = ifs.id and io2.order_type = 'Quarterly inspection' and io2.state != -1
                       left join ins_report ir2 on io2.id = ir2.ins_order_id
                       left join user u2 on io2.create_user = u2.id
                       LEFT JOIN ins_sample isa ON COALESCE(io1.id, io2.id) = isa.ins_order_id
                       LEFT JOIN (SELECT ins_sample_id, GROUP_CONCAT(DISTINCT uu.name SEPARATOR ',') AS userName
                                  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 = COALESCE(io1.id, io2.id)
                       left join ins_unqualified_handler iuh on iuh.inventory_quantity_id = ifs.id
              group by ifs.id) a
    </sql>
    <select id="getIfsByStateOne" resultType="com.ruoyi.basic.dto.IfsInventoryQuantityDto">
        <include refid="getIfsOrder"/>
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectIfsPage" resultType="com.ruoyi.basic.pojo.IfsInventoryQuantity">
        SELECT * from ifs_inventory_quantity ifs
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectIfsInventoryQuantity" resultType="com.ruoyi.basic.dto.IfsInventoryQuantityCheckDto">
        SELECT * from ifs_inventory_quantity ifs
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getIfsByOver" resultType="com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto">
        select * from (<include refid="getIfsOrder"/>
        <where>
            <if test="beginDeclareDate != null and beginDeclareDate != '' and endDeclareDate != null and endDeclareDate != ''">
                send_time between #{beginDeclareDate} and #{endDeclareDate}
            </if>
        </where>
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getIfsByOverList" resultType="com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto">
        select * from (<include refid="getIfsOrder"/>
            <where>
                <if test="beginDeclareDate != null and beginDeclareDate != '' and endDeclareDate != null and endDeclareDate != ''">
                    send_time between #{beginDeclareDate} and #{endDeclareDate}
                </if>
            </where>
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getIfsByQuarter" resultType="com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto">
        select * from (<include refid="getIfsOrder"/>
        <where>
            and (quarter_order_id is not null)
            <if test="beginDeclareDate != null and beginDeclareDate != '' and endDeclareDate != null and endDeclareDate != ''">
                and  send_time between #{beginDeclareDate} and #{endDeclareDate}
            </if>
        </where>
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>