chenrui
2025-04-07 5ac3cab3bc6a877c59719cc4b4de758444ea4dd8
basic-server/src/main/resources/mapper/StructureItemParameterMapper.xml
@@ -3,13 +3,65 @@
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.basic.mapper.StructureItemParameterMapper">
    <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,
        #{trees}
        tree,
        id
        structure_item_parameter_id,
        radius_list,
        rates
    </sql>
    <delete id="removeNoSample">
        delete
        from structure_item_parameter
        where sample like concat('%', #{sample}, '%')
    </delete>
    <select id="selectItemParameterList" resultType="com.ruoyi.basic.pojo.StructureItemParameter">
        select * from (select A.id,
        WITH temp_sample AS (
        SELECT
        *,
        CASE
        WHEN INSTR(sample, ',') > 0 THEN
        SUBSTRING_INDEX(SUBSTRING_INDEX(sample, '","', 1), '"', -1)
        WHEN sample = '[""]' THEN
        NULL
        WHEN sample = '[]' THEN
        NULL
        ELSE
        TRIM(BOTH '["]' FROM SUBSTRING_INDEX(REPLACE(sample, '[["', ''), '"]]', 1))
        END AS samples
        FROM
        structure_item_parameter
        ),
        temp_join AS (
        SELECT DISTINCT
        A.id,
        inspection_item,
        inspection_item_en,
        inspection_item_subclass,
@@ -41,31 +93,39 @@
        code,
        radius_list,
        rates
        from (select *,
        CASE
        WHEN INSTR(sample, ',') > 0 THEN
        SUBSTRING_INDEX(SUBSTRING_INDEX(sample, '","', 1), '"', -1)
        when sample = '[""]' then null
        when sample = '[]' then null
        ELSE
        TRIM(BOTH '["]' FROM SUBSTRING_INDEX(REPLACE(sample, '[["', ''), '"]]', 1))
        END AS samples
        from structure_item_parameter) A
        left join structure_test_object sto on samples = specimen_name
        FROM
        temp_sample A
        LEFT JOIN
        structure_test_object sto ON A.samples = sto.specimen_name
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>)B
        order by CASE
        </if>
        )
        SELECT
        *
        FROM
        temp_join
        ORDER BY
        -- 处理 code 字段的排序
        CASE
        WHEN code IS NULL THEN 1
        ELSE 0
        END,
        CAST(code AS UNSIGNED),
        case when man_hour_group is NULL then 1
        when man_hour_group ='' then 1 else 0 end,
        -- 处理 man_hour_group 字段的排序
        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
        WHEN man_hour_group IS NULL OR 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)
        ELSE
        NULL
        END,
        id ASC
    </select>
    <resultMap id="getInsProductions" type="map">
@@ -118,4 +178,23 @@
        <result column="pId" property="id"/>
        <result column="pName" property="name"/>
    </resultMap>
    <select id="selectItemParameterBySample" resultType="com.ruoyi.basic.pojo.StructureItemParameter">
        select *
        from structure_item_parameter
        where (
        sample is NULL
        OR sample = ''
        or sample = '[]'
        OR sample LIKE CONCAT('%', #{sample}, '%')
        )
        order by id asc
    </select>
    <select id="getItemTreeProduct" resultMap="itemDto">
        select sto.id sId, sto.specimen_name sName, p.id pId, p.name pName
        from structure_test_object sto
                 left join product p on p.object_id = sto.id
        WHERE sto.object_type = #{objectType}
    </select>
</mapper>