<?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.boco.nbd.wios.manage.mapper.extdb.SingleMapperEx" >

    <insert id="saveSingleMaterials" >
        insert into t_single_materials (signal_id,materials_id,quantity)
        values
        <foreach collection="singleMaterialsList" item="item" index="index"
                 separator=",">
        (#{item.signalId},#{item.materialsId},#{item.quantity})
        </foreach>
    </insert>


    <select id="qrySingle" resultType="com.boco.nbd.wios.manage.entity.bo.SingleQo">
        SELECT
            ts.id id,
            ts.create_time createTime,
            ts.create_account createAccount,
            ts.info info,
            ts.type type,
            (select name from t_warehouse where id = ts.transfer_in) as transferInName,
            (select name from t_warehouse where id = ts.transfer_out) as transferOutName,
            ts.shipping_address shippingAddress,
            ts.contact_number contactNumber,
            ts.receiver receiver,
            tw.service_provider serviceProviderIn,
            tw1.service_provider serviceProviderOut
        FROM
            t_single ts
            LEFT JOIN t_single_materials tsm ON ts.id = tsm.signal_id
            LEFT JOIN t_materials tm ON tsm.materials_id = tm.id
            LEFT JOIN t_warehouse tw on ts.transfer_in = tw.id
            LEFT JOIN t_warehouse tw1 on ts.transfer_out = tw1.id
            where ts.appkey = #{appkey}
            <if test="singleId != null and singleId != ''">
                and ts.id = #{singleId}
            </if>
            <if test="type != null">
                and ts.type = #{type}
            </if>
            <if test="transferIn != null and transferIn != ''">
                and ts.transfer_in = #{transferIn}
            </if>
            <if test="transferOut != null and transferOut != '' ">
                and ts.transfer_out = #{transferOut}
            </if>
            <if test="materialsCode != null and materialsCode != ''">
                and tm.materials_code like CONCAT('%',#{materialsCode},'%')
            </if>
            <if test="shippingAddress != null and shippingAddress != ''">
                and ts.shipping_address like CONCAT('%',#{shippingAddress},'%')
            </if>
            <if test="contactNumber != null and contactNumber != ''">
                and ts.contact_number like CONCAT('%',#{contactNumber},'%')
            </if>
            <if test="receiver != null and receiver != ''">
                and ts.receiver like CONCAT('%',#{receiver},'%')
            </if>
            <if test="serviceProviders != null and serviceProviders.size() > 0">
                and (tw.service_provider in
                <foreach collection="serviceProviders" item="item" index="index"
                         open="(" close=")" separator=",">
                    #{item}
                </foreach>
                or  tw1.service_provider in
                <foreach collection="serviceProviders" item="item" index="index"
                         open="(" close=")" separator=",">
                    #{item}
                </foreach>
                )
            </if>
            GROUP BY ts.id  order by ts.create_time desc
    </select>

    <select id="qrySingleMaterialsBySingleId" parameterType="string" resultType="com.boco.nbd.wios.manage.entity.bo.SingleMaterialsQo">
        SELECT
             tsm.quantity quantity,
             tm.materials_name materialsName,
             tm.materials_code materialsCode,
             tm.unit unit,
             tm.regular_model regularModel
        FROM
            t_single_materials tsm
            LEFT JOIN t_materials tm ON tsm.materials_id = tm.id
            where tsm.signal_id = #{singleId}
    </select>
</mapper>