shiyunteng
2026-05-25 633a003d232e37c79b7135ccda35eda1c69952c6
platformx-business-finance-biz/src/main/resources/mapper/ContractMapper.xml
@@ -184,7 +184,7 @@
   <select id="contractIncomeAnalysis"
         resultType="com.by4cloud.platformx.business.vo.ContractIncomeAnalysisVo">
      SELECT
         compName,
         compId,
         SUM(CASE WHEN month_num = 1 THEN total_amount ELSE 0 END) AS 'srMonth1',
            SUM(CASE WHEN month_num = 1 AND pay_type = 1 THEN total_amount ELSE 0 END) AS 'xhMonth1',
            SUM(CASE WHEN month_num = 1 AND pay_type = 2 THEN total_amount ELSE 0 END) AS 'cdMonth1',
@@ -202,9 +202,9 @@
            SUM(CASE WHEN month_num = 4 AND pay_type = 2 THEN total_amount ELSE 0 END) AS 'cdMonth4',
            SUM(CASE WHEN month_num = 4 AND pay_type = 3 THEN total_amount ELSE 0 END) AS 'qtMonth4',
            SUM(CASE WHEN month_num = 5 THEN total_amount ELSE 0 END) AS 'srMonth5',
            SUM(CASE WHEN month_num = 5 AND pay_type = 0 THEN total_amount ELSE 0 END) AS 'xhMonth5',
            SUM(CASE WHEN month_num = 5 AND pay_type = 1 THEN total_amount ELSE 0 END) AS 'cdMonth5',
            SUM(CASE WHEN month_num = 5 AND pay_type = 2 THEN total_amount ELSE 0 END) AS 'qtMonth5',
            SUM(CASE WHEN month_num = 5 AND pay_type = 1 THEN total_amount ELSE 0 END) AS 'xhMonth5',
            SUM(CASE WHEN month_num = 5 AND pay_type = 2 THEN total_amount ELSE 0 END) AS 'cdMonth5',
            SUM(CASE WHEN month_num = 5 AND pay_type = 3 THEN total_amount ELSE 0 END) AS 'qtMonth5',
            SUM(CASE WHEN month_num = 6 THEN total_amount ELSE 0 END) AS 'srMonth6',
            SUM(CASE WHEN month_num = 6 AND pay_type = 1 THEN total_amount ELSE 0 END) AS 'xhMonth6',
            SUM(CASE WHEN month_num = 6 AND pay_type = 2 THEN total_amount ELSE 0 END) AS 'cdMonth6',
@@ -235,7 +235,7 @@
            SUM(CASE WHEN month_num = 12 AND pay_type = 3 THEN total_amount ELSE 0 END) AS 'qtMonth12'
      FROM (
      SELECT
      COALESCE(pc.payee_comp_id, '未知单位') AS compName,
      COALESCE(pc.payee_comp_id, '未知单位') AS compId,
      MONTH(payment_time) AS month_num,
      pay_type,
      COALESCE(payment_amount, 0) AS total_amount
@@ -250,7 +250,7 @@
         #{id}
      </foreach>
          ) AS source_data
      GROUP BY compName
      GROUP BY compId
   </select>
   <select id="contractIncomeAnalysisByComp"
@@ -746,9 +746,11 @@
      SELECT
      SUM( amount )
      FROM
      contract
      contract ct
      WHERE
      party_b_id IN
            ct.del_flag = '0'
      and  ct.supply_attribute = c.supply_attribute
      and ct.party_b_id IN
      <foreach collection="compIds" item="id" open="(" close=")" separator=",">
         #{id}
      </foreach>
@@ -761,9 +763,11 @@
      SELECT
      SUM( amount )
      FROM
      contract
      contract ct
      WHERE
      party_b_id IN
      ct.del_flag = '0'
      and  ct.supply_attribute = c.supply_attribute
      and ct.party_b_id IN
      <foreach collection="compIds" item="id" open="(" close=")" separator=",">
         #{id}
      </foreach>
@@ -776,9 +780,11 @@
      SELECT
      SUM( amount )
      FROM
      contract
      contract ct
      WHERE
      party_b_id IN
      ct.del_flag = '0'
      and  ct.supply_attribute = c.supply_attribute
      and ct.party_b_id IN
      <foreach collection="compIds" item="id" open="(" close=")" separator=",">
         #{id}
      </foreach>
@@ -791,9 +797,11 @@
      SELECT
      SUM( amount )
      FROM
      contract
      contract ct
      WHERE
      party_b_id IN
      ct.del_flag = '0'
      and  ct.supply_attribute = c.supply_attribute
      and ct.party_b_id IN
      <foreach collection="compIds" item="id" open="(" close=")" separator=",">
         #{id}
      </foreach>
@@ -806,9 +814,11 @@
      SELECT
      SUM( amount )
      FROM
      contract
      contract ct
      WHERE
      party_b_id IN
      ct.del_flag = '0'
      and  ct.supply_attribute = c.supply_attribute
      and ct.party_b_id IN
      <foreach collection="compIds" item="id" open="(" close=")" separator=",">
         #{id}
      </foreach>
@@ -818,7 +828,8 @@
      FROM
      contract c
      WHERE
      c.supply_attribute IS NOT NULL
         c.del_flag = '0'
      and c.supply_attribute IS NOT NULL
      AND YEAR ( sign_date ) = #{queryDTO.year}
      GROUP BY
      c.supply_attribute
@@ -888,4 +899,113 @@
      ORDER BY m.month_num
   </select>
   <select id="contractAmountAnalysisBySaleModel"
         resultType="com.by4cloud.platformx.business.vo.ContractIncomeAnalysisAreaVo">
      SELECT
      b.sales_model area_id,
      SUM( CASE WHEN c.party_b_id = #{sgbCompId} THEN c.amount ELSE 0 END ) AS sgbze,
      ROUND(
      SUM( CASE WHEN c.party_b_id = #{sgbCompId} THEN c.amount ELSE 0 END ) / (
      SELECT
      SUM( amount )
      FROM
      contract c, business_customer bc
      WHERE
      bc.id = c.party_a_id
      and c.del_flag = '0'
      and bc.del_flag = '0'
      and bc.sales_model = b.sales_model
      and party_b_id IN
      <foreach collection="compIds" item="id" open="(" close=")" separator=",">
         #{id}
      </foreach>
      ) * 100,
      2
      ) AS sgbzb,
      SUM( CASE WHEN c.party_b_id = #{jxcCompId} THEN c.amount ELSE 0 END ) AS jxcze,
      ROUND(
      SUM( CASE WHEN c.party_b_id = #{jxcCompId} THEN c.amount ELSE 0 END ) / (
      SELECT
      SUM( amount )
      FROM
      contract c, business_customer bc
      WHERE
      bc.id = c.party_a_id
      and c.del_flag = '0'
      and bc.del_flag = '0'
      and bc.sales_model = b.sales_model
      and party_b_id IN
      <foreach collection="compIds" item="id" open="(" close=")" separator=",">
         #{id}
      </foreach>
      ) * 100,
      2
      ) AS jxczb ,
      SUM( CASE WHEN c.party_b_id = #{smjCompId} THEN c.amount ELSE 0 END ) AS smjze,
      ROUND(
      SUM( CASE WHEN c.party_b_id = #{smjCompId} THEN c.amount ELSE 0 END ) / (
      SELECT
      SUM( amount )
      FROM
      contract c, business_customer bc
      WHERE
      bc.id = c.party_a_id
      and c.del_flag = '0'
      and bc.del_flag = '0'
      and bc.sales_model = b.sales_model
      and party_b_id IN
      <foreach collection="compIds" item="id" open="(" close=")" separator=",">
         #{id}
      </foreach>
      ) * 100,
      2
      ) AS smjzb ,
      SUM( CASE WHEN c.party_b_id = #{ymjCompId} THEN c.amount ELSE 0 END ) AS ymjze,
      ROUND(
      SUM( CASE WHEN c.party_b_id = #{ymjCompId} THEN c.amount ELSE 0 END ) / (
      SELECT
      SUM( amount )
      FROM
      contract c, business_customer bc
      WHERE
      bc.id = c.party_a_id
      and c.del_flag = '0'
      and bc.del_flag = '0'
      and bc.sales_model = b.sales_model
      and party_b_id IN
      <foreach collection="compIds" item="id" open="(" close=")" separator=",">
         #{id}
      </foreach>
      ) * 100,
      2
      ) AS ymjzb ,
      SUM( CASE WHEN c.party_b_id = #{tfCompId} THEN c.amount ELSE 0 END ) AS tfze,
      ROUND(
      SUM( CASE WHEN c.party_b_id = #{tfCompId} THEN c.amount ELSE 0 END ) / (
      SELECT
      SUM( amount )
      FROM
      contract c, business_customer bc
      WHERE
      bc.id = c.party_a_id
      and c.del_flag = '0'
      and bc.del_flag = '0'
      and bc.sales_model = b.sales_model
      and party_b_id IN
      <foreach collection="compIds" item="id" open="(" close=")" separator=",">
         #{id}
      </foreach>
      ) * 100,
      2
      ) AS tfzb
      FROM
      contract c
      JOIN business_customer b ON c.party_a_id = b.id
      WHERE
      b.sales_model IS NOT NULL
      AND YEAR ( sign_date ) = #{queryDTO.year}
      GROUP BY
      b.sales_model
   </select>
</mapper>