<?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="cn.ezhizao.project.business.salary.mapper.BizFinancialSalaryMapper">

    <resultMap type="cn.ezhizao.project.business.salary.domain.BizFinancialSalary" id="BizFinancialSalaryResult">
        <id column="id" property="id"/>
    </resultMap>


    <select id="getList" parameterType="BizFinancialSalary" resultMap="BizFinancialSalaryResult">
        SELECT t1.*, t2.name as company_name, t2.tax_type, t3.account_name as from_company_name
        FROM biz_financial_salary t1
        left join biz_company t2 on t2.id = t1.company_id
        left join biz_tenant t3 on t3.id = t1.tenant_id
        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
            t1.deleted = 0
            <if test="isStop != null ">AND is_stop = #{isStop}</if>
            <if test="companyName != null ">AND t2.name like concat('%', #{companyName}, '%')</if>
            <if test="taxType != null and taxType != ''">
                AND t2.tax_type = #{taxType}
            </if>
            <if test="workOrderId != null">
                AND t1.work_order_id = #{workOrderId}
            </if>
            <if test="fromCompanyName != null and fromCompanyName != ''">
                AND (t3.account_name like concat('%', #{fromCompanyName}, '%'))
            </if>
            <if test="month != null and year != null">
                <if test="tenantId != null">
                    AND exists (select 1 from biz_entrust eb
                    where eb.deleted = 0
                    and (eb.to_tenant_id = #{tenantId} or eb.from_tenant_id = #{tenantId})
                    and date_format(eb.current_month, '%Y%m') = concat(#{year}, #{month})
                    and eb.work_order_id = t1.work_order_id
                    )
                </if>
                <if test="status != null and status != 0">
                    AND exists (select 1 from biz_financial_salary_detail fsd where fsd.financial_salary_id = t1.id and
                    fsd.month = #{month} and fsd.year = #{year} and fsd.status = #{status})
                </if>
                <if test="status != null and status == 0">
                    AND not exists (select 1 from biz_financial_salary_detail fsd where fsd.financial_salary_id = t1.id and
                    fsd.month = #{month} and fsd.year = #{year})
                </if>
            </if>
        </trim>
    </select>

    <delete id="physicalDelete">
        DELETE FROM biz_financial_salary
        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
            <if test="id != null">
                id = #{id} AND
            </if>
            <!-- 删除条件为其他外键可以在这里加 -->
        </trim>
    </delete>
    <update id="updateByWorkOrderId"
            parameterType="java.util.List">
        update biz_financial_salary set is_stop=1
        WHERE work_order_id in
        <foreach collection="ids" item="id" index="index" open="(" separator="," close=")">
            #{id}
        </foreach>
    </update>
</mapper>
