inspect-server/src/main/resources/mapper/StandardTreeMapper.xml
@@ -3,18 +3,17 @@
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yuanchu.mom.mapper.StandardTreeMapper">
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.StandardTree">
            <id property="id" column="id" jdbcType="INTEGER"/>
            <result property="factory" column="factory" jdbcType="VARCHAR"/>
            <result property="laboratory" column="laboratory" jdbcType="VARCHAR"/>
            <result property="sampleType" column="sample_type" jdbcType="VARCHAR"/>
            <result property="sample" column="sample" jdbcType="VARCHAR"/>
            <result property="model" column="model" jdbcType="VARCHAR"/>
            <result property="createUser" column="create_user" jdbcType="INTEGER"/>
            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
            <result property="updateUser" column="update_user" jdbcType="INTEGER"/>
            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
        <id property="id" column="id" jdbcType="INTEGER"/>
        <result property="factory" column="factory" jdbcType="VARCHAR"/>
        <result property="laboratory" column="laboratory" jdbcType="VARCHAR"/>
        <result property="sampleType" column="sample_type" jdbcType="VARCHAR"/>
        <result property="sample" column="sample" jdbcType="VARCHAR"/>
        <result property="model" column="model" jdbcType="VARCHAR"/>
        <result property="createUser" column="create_user" jdbcType="INTEGER"/>
        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
        <result property="updateUser" column="update_user" jdbcType="INTEGER"/>
        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
    </resultMap>
    <resultMap id="FactoryDto" type="com.yuanchu.mom.dto.FactoryDto">
@@ -47,30 +46,37 @@
    </resultMap>
    <select id="selectStandardTreeList" resultMap="FactoryDto">
        select factory,laboratory,sample_type,sample,model from standard_tree
        select '中天科技检测中心'        factory,
               l.laboratory_name laboratory,
               sto.specimen_name sample_type,
               p.name            sample,
               st.model,
               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
                 left join standard_tree st on st.sample_type = sto.specimen_name
            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.yuanchu.mom.pojo.StandardProductList">
        select
            inspection_item,
            inspection_item_classify,
            inspection_item_subclass,
            laboratory,
            son_laboratory,
            unit,
            price,
            man_hour,
            man_hour_group,
            inspection_item_type,
            inspection_value_type,
            device_group,
            checkout_number,
            section,
            value_type,
            method,
            man_day,
            bsm,
            template_id
        select inspection_item,
               inspection_item_subclass,
               laboratory,
               son_laboratory,
               unit,
               price,
               man_hour,
               man_hour_group,
               inspection_item_type,
               inspection_value_type,
               checkout_number,
               section,
               method,
               man_day,
               bsm,
               template_id
        from structure_item_parameter
        where id = #{id}
    </select>
@@ -85,24 +91,275 @@
               man_hour_group,
               inspection_item_type,
               inspection_value_type,
               device_group,
               checkout_number,
               section,
               value_type,
               method,
               man_day,
               sample,
               bsm,
               template_id,
               dic
               dic,
               ask,
               ask_tell as tell
        from structure_item_parameter sp
        left join structure_test_object sto on sto.id = sp.sample
        where sto.specimen_name = #{sampleType}
        where sp.sample = #{sampleType}
           or sp.sample = ''
           or sp.sample = '[]'
    </select>
    <select id="getStandardMethodListBySample" resultType="com.yuanchu.mom.pojo.StandardMethodList">
        select sm.code,sm.name,sm.remark from standard_method sm
        left join structure_test_object sto on sm.structure_test_object_id = sto.id
        where is_use = 1
        and is_product = 1
        <if test="sampleType != null">
            and sto.specimen_name = #{sampleType}
        </if>
    </select>
    <select id="selectStandardTreeList2" resultType="com.yuanchu.mom.pojo.StandardTree">
        select '中天科技检测中心'        factory,
               l.laboratory_name laboratory,
               sto.specimen_name sample_type,
               p.name            sample
        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.laboratory = l.laboratory_name
            and st.sample_type = sto.specimen_name
            and st.sample = p.name
        where sto.specimen_name = #{sampleType}
        and is_use = 1
        group by sto.specimen_name
    </select>
    <select id="selectStandardProductListByTree" resultType="com.yuanchu.mom.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="selectStandardProductListByTree2" resultType="com.yuanchu.mom.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 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="getStandardTree2" resultMap="SampleTypeDto">
        select sto.specimen_name sample_type,
               p.name            sample,
               st.model
        from structure_test_object sto
                 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
    </select>
    <select id="selectStandardProductListByTree3" resultType="com.yuanchu.mom.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.yuanchu.mom.dto.SampleDto">
        select model label,
               model value
        from standard_tree
        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
                 left join laboratory l on sto.laboratory_id = l.id
        where sto.specimen_name = #{str}
    </select>
    <select id="getStructureItemParameterId" resultType="java.lang.Integer">
        select id from structure_item_parameter
        where sample like concat('%', #{sampleType}, '%')
        and inspection_item = #{item}
        <if test="itemChild != null and itemChild != ''">
            and inspection_item_subclass = #{itemChild}
        </if>
        <if test="inspectionItemClass != null and inspectionItemClass != ''">
            and inspection_item_class = #{inspectionItemClass}
        </if>
        <if test="itemChild == null or itemChild == ''">
            and (inspection_item_subclass is null or inspection_item_subclass = '')
        </if>
    </select>
    <select id="selectPList" resultType="com.yuanchu.mom.dto.ProductDto">
        select p.name
        from structure_test_object sto
                 left join product p on p.object_id = sto.id
        where sto.specimen_name = #{name}
        order by p.id
    </select>
    <select id="selSample" resultType="java.lang.String">
        select name
        from product
        where name = #{name}
    </select>
    <select id="exportStandTree" resultType="com.yuanchu.mom.dto.standardTreeDto">
        select
               inspection_item,
               inspection_item_en,
               inspection_item_subclass,
               inspection_item_subclass_en,
               laboratory,
               sample_type,
               sample,
               model,
               son_laboratory,
               unit,
               price,
               man_hour,
               man_hour_group,
               case when inspection_item_type='1' then '采集类型'
                        else  '非采集类型' end  as inspection_item_type ,
               case when inspection_value_type='1' then '数值'
                    when inspection_value_type='2' then '文本'
                    when inspection_value_type='5' then '下拉'
                    else  '/' end  as inspection_value_type,
               method_s,
               man_day,
               bsm,
               ask,
               tell,
               st.name  templateName,
               sml.code standardMethodNo
        from standard_product_list spl
                 left join standard_template st on spl.template_id = st.id
                 left join standard_method sml on spl.standard_method_list_id = sml.id
        where spl.state = 1
        order by spl.sample_type
    </select>
</mapper>