ContractChangeApplicationMapper.xml 2.74 KB
<?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.lframework.xingyun.sc.mappers.ContractChangeApplicationMapper">

    <select id="querySelectableContracts" resultType="com.lframework.xingyun.sc.entity.ContractDistributorStandard">
        SELECT tb.id,
               tb.code,
               tb.buyer,
               tb.dept_id,
               tb.region,
               tb.stock_up_company_id,
               tb.order_date,
               tb.unit,
               tb.workshop_id,
               tb.total_quantity,
               tb.total_amount_including_tax,
               tb.status,
               tb.type,
               tb.parent_id,
               tb.formal_approved,
               tb.standard_approved,
               tb.price_spec_locked,
               tb.change_reason,
               tb.create_by,
               tb.create_by_id,
               tb.create_time
        FROM tbl_contract_distributor_standard tb
        WHERE tb.status != 'DELETED'
          <if test="vo.code != null and vo.code != ''">
              AND tb.code LIKE CONCAT('%', #{vo.code}, '%')
          </if>
          <if test="vo.type != null and vo.type != ''">
              AND tb.type = #{vo.type}
          </if>
          <if test="vo.contractStage != null and vo.contractStage != ''">
              AND tb.status = #{vo.contractStage}
          </if>
          AND (
              (tb.type = 'DISTRIB_STD' AND tb.status = 'STANDARD' AND tb.standard_approved = 'PASS')
              OR (tb.type = 'DIST_STOCK_CONTRACT' AND (
                  (tb.status = 'FORMAL' AND tb.formal_approved = 'PASS')
                  OR (tb.status = 'STANDARD' AND tb.standard_approved = 'PASS')
              ))
              OR (tb.type = 'DRAFT_DIST_AGMT' AND tb.status = 'STANDARD' AND tb.standard_approved = 'PASS')
              OR (tb.type = 'INTL_STD_CONTRACT' AND tb.status = 'STANDARD' AND tb.standard_approved = 'PASS')
              OR (tb.type = 'INTL_INVENTORY_AGMT' AND (
                  (tb.status = 'FORMAL' AND tb.formal_approved = 'PASS')
                  OR (tb.status = 'STANDARD' AND tb.standard_approved = 'PASS')
              ))
              OR (tb.type = 'INTL_OPEN_SPEC_AGMT' AND tb.status = 'STANDARD' AND tb.standard_approved = 'PASS')
              OR (tb.type = 'PROCESS_STD_AGMT' AND tb.status = 'STANDARD' AND tb.standard_approved = 'PASS')
          )
          AND NOT EXISTS (
              SELECT 1
              FROM tbl_contract_change_application cca
              WHERE cca.root_contract_id = IFNULL(NULLIF(tb.parent_id, ''), tb.id)
                AND cca.approval_status NOT IN ('PASS', 'CANCEL')
          )
        ORDER BY tb.create_time DESC
    </select>
</mapper>