<?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.dhcc.finance.main.dao.CwProjectCheckMapper">
  <resultMap id="BaseResultMap" type="com.dhcc.finance.main.model.CwProjectCheckWeb">
    <result column="xtxmbh" jdbcType="VARCHAR" property="xtxmbh" />
    <result column="xtzxmbh" jdbcType="VARCHAR" property="xtzxmbh" />
    <result column="xtzxmqc" jdbcType="VARCHAR" property="xtzxmqc" />
    <result column="user_name" jdbcType="VARCHAR" property="accountMan" />
    <result column="subjcode" jdbcType="VARCHAR" property="subjcode" />
    <result column="subjname" jdbcType="VARCHAR" property="subjname" />
    <result column="balance" jdbcType="DECIMAL" property="balance" />
    <result column="XMYJZZR" jdbcType="VARCHAR" property="xmyjzzr" />
    <result column="XMZZR" jdbcType="VARCHAR" property="xmzzr" />
    <result column="XMZT" jdbcType="VARCHAR" property="xmzt" />
    <result column="CHECKTYPE" jdbcType="VARCHAR" property="checkType" />
    <result column="balance_freevalue" jdbcType="DECIMAL" property="balanceFreevalue" />
    <result column="balance_advance" jdbcType="DECIMAL" property="companyAdvance" />
   	<result column="checkvalue" jdbcType="VARCHAR" property="checkValue" />
   	<result column="valuename" jdbcType="VARCHAR" property="valueName" />     
  </resultMap>
  <!-- 单个科目余额出现负数 -->
  <select id="selectSingleSubjectBalance" resultMap="BaseResultMap">
   select  a.XTXMBH, a.XTZXMBH, a.XTZXMQC, b.USER_NAME, c.XMZT, c.XMZZR, a.SUBJCODE, a.SUBJNAME, a.balance
   from 
	 (select b.XTXMBH, b.XTZXMBH, b.NAME as XTZXMQC, a.DEBITAMOUNT, a.CREDITAMOUNT, a.PK_ACCSUBJ, c.SUBJCODE, c.SUBJNAME, 
	    CASE  c.BALANORIENT
	    when '1' then sum(a.DEBITAMOUNT)-sum(a.CREDITAMOUNT) 
	    else sum(a.CREDITAMOUNT)-sum(a.DEBITAMOUNT) 
	    END balance
	  from cw_gl_detail a 
	  LEFT JOIN cw_bd_glorgbook b on a.PK_GLORGBOOK=b.PK_GLORGBOOK
	  LEFT JOIN CW_BD_ACCSUBJ c on a.PK_ACCSUBJ=c.PK_ACCSUBJ and c.PK_SUBJSCHEME=b.PK_SUBJSCHEME 
	  where  a.PREPAREDATE<![CDATA[ <= ]]> #{jzrq,jdbcType=VARCHAR}
	  and left(c.SUBJCODE,6)<![CDATA[ <> ]]>'110102' 
	  and left(c.SUBJCODE,6)<![CDATA[ <> ]]>'150302' 
	  and left(c.SUBJCODE,4)<![CDATA[ <> ]]>'4103' 
	  and left(c.SUBJCODE,4)<![CDATA[ <> ]]>'4104' 
	  and left(c.SUBJCODE,4)<![CDATA[ <> ]]>'4003' 
	  and left(c.SUBJCODE,1)<![CDATA[ <> ]]>'6' 
	  and a.USE_STATE='1' 
	  GROUP BY b.XTXMBH, b.XTZXMBH, a.PK_ACCSUBJ HAVING balance <![CDATA[ < ]]>0
	 ) a
	LEFT JOIN pm_project_child c on a.XTZXMBH = c.XTZXMBH
	LEFT JOIN (
	  select m.project_id, n.USER_ID,p.USER_NAME from pm_pgroup_rel m 
	  LEFT JOIN w_gu_ref n on m.g_id=n.g_id
	  LEFT JOIN sys_user_info p on n.USER_ID=p.USER_ID
	  where n.G_ROLE='5'
	) b on a.XTZXMBH=b.project_id
    <where> 
    <if test="xtxmbh != null">
       and a.XTXMBH = #{xtxmbh,jdbcType=VARCHAR}
     </if>
     <if test="xtzxmbh != null">
       and a.XTZXMBH = #{xtzxmbh,jdbcType=VARCHAR}
     </if>
     <if test="userId != null">
       and b.USER_ID = #{userId,jdbcType=VARCHAR}
     </if>
   	 </where> 
  </select>


	<!-- 查询未结束项目无信托规模 -->
	<select id="selectNoScaleNoClosed" resultMap="BaseResultMap">
        select b.XTXMBH, a.XTZXMBH, b.XTZXMQC, b.XMZT,b.XMYJZZR, e.USER_NAME from
        (
			select b.XTZXMBH, sum(a.LOCALCREDITAMOUNT-a.LOCALDEBITAMOUNT) as balance from cw_gl_detail a
			left join cw_bd_glorgbook b on a.PK_GLORGBOOK=b.PK_GLORGBOOK
			where  a.SUBJCODE like '4001%' and a.use_state='1'
			and a.PREPAREDATE <![CDATA[ <= ]]> #{jzrq,jdbcType=VARCHAR}
			GROUP BY b.XTZXMBH
		) a
		left join pm_project_child b on a.XTZXMBH=b.XTZXMBH
        LEFT JOIN
        (
	        select m.project_id, n.USER_ID,p.USER_NAME from pm_pgroup_rel m
	        LEFT JOIN w_gu_ref n on  m.g_id=n.g_id
	        LEFT JOIN sys_user_info p on n.USER_ID=p.USER_ID
	        where n.G_ROLE='5'
        )e on a.XTZXMBH=e.project_id
		where a.balance=0 and b.XMZT not in ('11','12')
		<if test="xtxmbh != null">
			and b.XTXMBH = #{xtxmbh,jdbcType=VARCHAR}
		</if>
		<if test="xtzxmbh != null">
			and a.XTZXMBH = #{xtzxmbh,jdbcType=VARCHAR}
		</if>
		<if test="userId != null">
			and e.USER_ID = #{userId,jdbcType=VARCHAR}
		</if>
	</select>






  <!-- 未分配利润出现负数 -->
  <select id="selectUndistributedProfit" resultMap="BaseResultMap">
    select a.XTXMBH, a.XTZXMBH, a.NAME as XTZXMQC, e.USER_NAME, f.XMZT, f.XMZZR, ifnull(b.ye,0)+ifnull(c.sr,0)-ifnull(d.fy,0) as balance  
    from cw_bd_glorgbook a 
	left join pm_project_child f on a.XTZXMBH=f.XTZXMBH
	left join (
	  SELECT
	   PK_GLORGBOOK,ifnull(sum(LOCALCREDITAMOUNT-LOCALDEBITAMOUNT), 0) as ye
	  FROM
	   cw_gl_detail 
	  WHERE
	   LEFT(SUBJCODE, 4) IN ('4103', '4104') AND PREPAREDATE<![CDATA[ <= ]]> #{jzrq,jdbcType=VARCHAR}
	   AND USE_STATE = '1' group by PK_GLORGBOOK
	) b on a.PK_GLORGBOOK=b.PK_GLORGBOOK 
	left join (
	  SELECT
	   PK_GLORGBOOK,ifnull( sum( LOCALCREDITAMOUNT-LOCALDEBITAMOUNT ), 0 ) as sr
	  FROM
	   cw_gl_detail
	  WHERE
	   LEFT(SUBJCODE, 4) IN ('6011', '6041', '6061', '6101', '6111', '6302', '6901') and PREPAREDATE<![CDATA[ <= ]]> #{jzrq,jdbcType=VARCHAR}
	   AND USE_STATE = '1' group by PK_GLORGBOOK
	) c on a.PK_GLORGBOOK=c.PK_GLORGBOOK 
	left join (
	  SELECT
	   PK_GLORGBOOK,ifnull( sum( LOCALDEBITAMOUNT-LOCALCREDITAMOUNT ), 0 ) as fy
	  FROM
	   cw_gl_detail 
	  WHERE
	   LEFT(SUBJCODE, 4) IN ('6404', '6406', '6407', '6408', '6409', '6605', '6403', '6701', '6402') and PREPAREDATE<![CDATA[ <= ]]> #{jzrq,jdbcType=VARCHAR}
	   AND USE_STATE = '1' group by PK_GLORGBOOK
	) d on a.PK_GLORGBOOK=d.PK_GLORGBOOK 
	left join (
	  select m.project_id, n.USER_ID,p.USER_NAME from pm_pgroup_rel m 
	  LEFT JOIN w_gu_ref n on m.g_id=n.g_id
	  LEFT JOIN sys_user_info p on n.USER_ID=p.USER_ID
	  where n.G_ROLE='5'
	 ) e on a.XTZXMBH=e.project_id
	<where> 
    <if test="xtxmbh != null">
       and a.XTXMBH = #{xtxmbh,jdbcType=VARCHAR}
     </if>
     <if test="xtzxmbh != null">
       and a.XTZXMBH = #{xtzxmbh,jdbcType=VARCHAR}
     </if>
     <if test="userId != null">
       and e.USER_ID = #{userId,jdbcType=VARCHAR}
     </if>
   	 </where>
	GROUP BY a.XTXMBH, a.XTZXMBH having balance<![CDATA[ < ]]>0
  </select>
  <!-- 科目余额与辅助账余额不一致 -->
  <select id="selectDifferentBalance" resultMap="BaseResultMap">
  <if test="kmlx == 1"> 
    select c.XTXMBH, c.XTZXMBH, d.XTZXMQC, d.XMZT, d.XMZZR, e.USER_NAME, a.SUBJCODE, b.NAME as CHECKTYPE, a.BALANCE as balance_freevalue, f.balance from (   
	SELECT a.PK_GLORGBOOK, a.SUBJCODE, b.CHECKTYPE, SUM(b.DEBITAMOUNT)-SUM(b.CREDITAMOUNT) AS BALANCE
	        FROM ( SELECT  PK_GLORGBOOK, PK_ACCSUBJ, SUBJCODE, ASSID
	                FROM CW_GL_DETAIL 
	                WHERE SUBJCODE like '1%' and SUBJCODE not in ('1002','1021','101201','101203','113102','113206','113207','122199','11110101')
	                AND PREPAREDATE<![CDATA[ <= ]]> #{jzrq,jdbcType=VARCHAR} AND USE_STATE= '1' 
	            ) a
	        INNER JOIN
	      ( SELECT  PK_FREEVALUE, ASSID, CHECKTYPE, CHECKVALUE, VALUENAME, DEBITAMOUNT, CREDITAMOUNT FROM cw_gl_freevalue 
	        where CHECKTYPE <![CDATA[ <> ]]>'' 
	            ) b
	        ON a.assid=b.assid
	    GROUP BY a.PK_GLORGBOOK, a.PK_ACCSUBJ, b.CHECKTYPE 
	) a 
	LEFT JOIN CW_BD_ACCASSITEM b on a.checktype = b.PK_ACCASSITEM
	left join ( 
	  select a.PK_GLORGBOOK, a.SUBJCODE, sum(a.LOCALDEBITAMOUNT-a.LOCALCREDITAMOUNT) balance from cw_gl_detail a 
	  where left(SUBJCODE, 1)='1' and a.PREPAREDATE<![CDATA[ <= ]]> #{jzrq,jdbcType=VARCHAR} and a.use_state='1' GROUP BY a.PK_GLORGBOOK, a.SUBJCODE
	) f on a.PK_GLORGBOOK=f.PK_GLORGBOOK and a.SUBJCODE=f.SUBJCODE
	LEFT JOIN CW_BD_GLORGBOOK c on a.PK_GLORGBOOK = c.PK_GLORGBOOK
	LEFT JOIN pm_project_child d on c.XTZXMBH=d.XTZXMBH
	LEFT JOIN 
	  (
	   select m.project_id, n.USER_ID, p.USER_NAME from pm_pgroup_rel m 
	   LEFT JOIN w_gu_ref n on  m.g_id=n.g_id
	   LEFT JOIN sys_user_info p on n.USER_ID=p.USER_ID
	   where n.G_ROLE='5'
	  ) e on d.XTZXMBH=e.project_id
	where a.BALANCE<![CDATA[ <> ]]>f.balance and a.CHECKTYPE in ('2019032120300101100009','2019032120300101100008')
	<if test="xtxmbh != null">
       and c.XTXMBH = #{xtxmbh,jdbcType=VARCHAR}
    </if>
    <if test="xtzxmbh != null">
       and c.XTZXMBH = #{xtzxmbh,jdbcType=VARCHAR}
    </if>
    <if test="userId != null">
       and e.USER_ID = #{userId,jdbcType=VARCHAR}
    </if>
  </if>
  <if test="kmlx == 2">
    select c.XTXMBH, c.XTZXMBH, d.XTZXMQC, d.XMZT, d.XMZZR, e.USER_NAME, a.SUBJCODE, b.NAME as CHECKTYPE, a.BALANCE as balance_freevalue, f.balance from (   
	SELECT a.PK_GLORGBOOK, a.SUBJCODE, b.CHECKTYPE, SUM(b.CREDITAMOUNT)-SUM(b.DEBITAMOUNT) AS BALANCE
	        FROM ( SELECT  PK_GLORGBOOK, PK_ACCSUBJ, SUBJCODE, ASSID
	                FROM CW_GL_DETAIL WHERE SUBJCODE like '4001%' AND PREPAREDATE<![CDATA[ <= ]]> #{jzrq,jdbcType=VARCHAR} AND USE_STATE= '1' 
	            ) a
	        INNER JOIN
	      ( SELECT  PK_FREEVALUE, ASSID, CHECKTYPE, CHECKVALUE, VALUENAME, DEBITAMOUNT, CREDITAMOUNT FROM cw_gl_freevalue 
	        where CHECKVALUE is not null  
	            ) b
	        ON a.assid=b.assid
	    GROUP BY a.PK_GLORGBOOK, a.PK_ACCSUBJ, b.CHECKTYPE 
	) a 
	LEFT JOIN CW_BD_ACCASSITEM b on a.checktype = b.PK_ACCASSITEM
	left join ( 
	select a.PK_GLORGBOOK, a.SUBJCODE, sum(a.LOCALCREDITAMOUNT-a.LOCALDEBITAMOUNT) balance from cw_gl_detail a 
	where a.SUBJCODE like '4001%' and a.PREPAREDATE<![CDATA[ <= ]]> #{jzrq,jdbcType=VARCHAR} and a.use_state='1' GROUP BY a.PK_GLORGBOOK, a.SUBJCODE
	) f on a.PK_GLORGBOOK=f.PK_GLORGBOOK and a.SUBJCODE=f.SUBJCODE
	LEFT JOIN CW_BD_GLORGBOOK c on a.PK_GLORGBOOK = c.PK_GLORGBOOK
	LEFT JOIN pm_project_child d on c.XTZXMBH=d.XTZXMBH
	LEFT JOIN 
	  (
	   select m.project_id, n.USER_ID, p.USER_NAME from pm_pgroup_rel m 
	   LEFT JOIN w_gu_ref n on  m.g_id=n.g_id
	   LEFT JOIN sys_user_info p on n.USER_ID=p.USER_ID
	   where n.G_ROLE='5'
	  ) e on d.XTZXMBH=e.project_id
	where a.BALANCE<![CDATA[ <> ]]>f.balance and a.CHECKTYPE in ('2019032120300101100004','2019032120300101100017')
	<if test="xtxmbh != null">
       and c.XTXMBH = #{xtxmbh,jdbcType=VARCHAR}
    </if>
    <if test="xtzxmbh != null">
       and c.XTZXMBH = #{xtzxmbh,jdbcType=VARCHAR}
    </if>
    <if test="userId != null">
       and e.USER_ID = #{userId,jdbcType=VARCHAR}
    </if>
  </if>
  </select>
  <!-- 已结束项目存在信托规模 -->
  <select id="selectScaleOfClosedProjects" resultMap="BaseResultMap">
    select a.XTXMBH, a.XTZXMBH, a.XTZXMQC, c.USER_NAME, a.XMYJZZR, a.XMZZR, a.XMZT, b.balance from (
	  select XTXMBH, XTZXMBH, XTZXMQC, XMYJZZR, XMZZR, XMZT 
	  from pm_project_child where XMYJZZR<![CDATA[ <= ]]>#{xmyjzzr,jdbcType=VARCHAR}) a 
	inner join 
	( select b.XTZXMBH, sum(a.LOCALCREDITAMOUNT-a.LOCALDEBITAMOUNT) balance from cw_gl_detail a left join cw_bd_glorgbook b on a.PK_GLORGBOOK=b.PK_GLORGBOOK 
	  where a.SUBJCODE like '4001%' and a.PREPAREDATE<![CDATA[ <= ]]> #{xmyjzzr,jdbcType=VARCHAR} and a.use_state='1'  
	  GROUP BY b.XTZXMBH having balance<![CDATA[ > ]]>0
	) b on a.XTZXMBH=b.XTZXMBH
	left join (
	 select m.project_id, n.USER_ID,p.USER_NAME from pm_pgroup_rel m 
	 LEFT JOIN w_gu_ref n on  m.g_id=n.g_id
	 LEFT JOIN sys_user_info p on n.USER_ID=p.USER_ID
	 where n.G_ROLE='5'
	) c on a.XTZXMBH=c.project_id
    <where> 
    <if test="xtxmbh != null">
       and a.XTXMBH = #{xtxmbh,jdbcType=VARCHAR}
     </if>
     <if test="xtzxmbh != null">
       and a.XTZXMBH = #{xtzxmbh,jdbcType=VARCHAR}
     </if>
     <if test="userId != null">
       and c.USER_ID = #{userId,jdbcType=VARCHAR}
     </if>
   	 </where> 
  </select>
  <!-- 科目辅助账存在负数 -->
  <select id="selectAssetAccountBalance" resultMap="BaseResultMap">
   <if test="kmlx == 1"> 
    select c.XTXMBH, c.XTZXMBH, d.XTZXMQC, e.USER_NAME, d.XMZT,d.XMZZR, a.SUBJCODE, a.SUBJNAME, b.name as CHECKTYPE, a.CHECKVALUE, a.VALUENAME, a.BALANCE 
    from ( 
	        SELECT a.PK_GLORGBOOK, a.SUBJCODE, a.SUBJNAME, b.CHECKTYPE, b.CHECKVALUE, b.VALUENAME, SUM(b.DEBITAMOUNT)-SUM(b.CREDITAMOUNT) AS BALANCE
	        FROM ( SELECT  PK_GLORGBOOK, PK_ACCSUBJ, SUBJCODE, SUBJNAME, ASSID
	                FROM CW_GL_DETAIL WHERE SUBJCODE like '1%' and locate('150302',SUBJCODE) != 1 and locate('110102',SUBJCODE) != 1
	                and SUBJCODE not in ('1002','1021','101201','101203','11010201','11010203','113102','113203','113206','113207','113299','1101020205','1101020207') 
	                AND PREPAREDATE<![CDATA[ <= ]]> #{jzrq,jdbcType=VARCHAR} AND USE_STATE= '1' 
	            ) a
	        INNER JOIN
	        ( SELECT  PK_FREEVALUE, ASSID, CHECKTYPE, CHECKVALUE, VALUENAME, DEBITAMOUNT, CREDITAMOUNT FROM cw_gl_freevalue 
	        where CHECKVALUE is not null  
	            ) b
	        ON a.assid=b.assid
	    GROUP BY a.PK_GLORGBOOK, a.PK_ACCSUBJ, b.CHECKTYPE, b.CHECKVALUE having BALANCE<![CDATA[ < ]]>0
	) a 
	LEFT JOIN CW_BD_ACCASSITEM b on a.checktype = b.PK_ACCASSITEM
	LEFT JOIN CW_BD_GLORGBOOK c on a.PK_GLORGBOOK = c.PK_GLORGBOOK
	LEFT JOIN pm_project_child d on c.XTZXMBH=d.XTZXMBH
	LEFT JOIN 
	  (
	   select m.project_id, n.USER_ID, p.USER_NAME from pm_pgroup_rel m 
	   LEFT JOIN w_gu_ref n on  m.g_id=n.g_id
	   LEFT JOIN sys_user_info p on n.USER_ID=p.USER_ID
	   where n.G_ROLE='5'
	) e on d.XTZXMBH=e.project_id
  	<where> 
    <if test="xtxmbh != null">
       and c.XTXMBH = #{xtxmbh,jdbcType=VARCHAR}
     </if>
     <if test="xtzxmbh != null">
       and c.XTZXMBH = #{xtzxmbh,jdbcType=VARCHAR}
     </if>
     <if test="userId != null">
       and e.USER_ID = #{userId,jdbcType=VARCHAR}
     </if>
   	 </where> 
   	 order by c.XTXMBH, c.XTZXMBH, b.name
   	</if>
   	<if test="kmlx == 2"> 
   	 select c.XTXMBH, c.XTZXMBH, d.XTZXMQC, e.USER_NAME, d.XMZT,d.XMZZR, a.SUBJCODE, a.SUBJNAME, b.name as CHECKTYPE, a.CHECKVALUE, a.VALUENAME, a.BALANCE 
   	 from ( 
	  SELECT a.PK_GLORGBOOK, a.SUBJCODE, a.SUBJNAME, b.CHECKTYPE, b.CHECKVALUE, b.VALUENAME, SUM(b.CREDITAMOUNT)-SUM(b.DEBITAMOUNT) AS BALANCE
	        FROM ( SELECT  PK_GLORGBOOK, PK_ACCSUBJ, SUBJCODE, SUBJNAME, ASSID
	                FROM CW_GL_DETAIL WHERE SUBJCODE like '4001%' AND PREPAREDATE<![CDATA[ <= ]]> #{jzrq,jdbcType=VARCHAR} AND USE_STATE= '1' 
	            ) a
	        INNER JOIN
	      ( SELECT  PK_FREEVALUE, ASSID, CHECKTYPE, CHECKVALUE, VALUENAME, DEBITAMOUNT, CREDITAMOUNT FROM cw_gl_freevalue 
	        where CHECKTYPE in ('2019032120300101100004','2019032120300101100017') 
	            ) b
	        ON a.assid=b.assid
	    GROUP BY a.PK_GLORGBOOK, a.PK_ACCSUBJ, b.CHECKTYPE, b.CHECKVALUE having BALANCE<![CDATA[ < ]]> 0
	 ) a 
	 LEFT JOIN CW_BD_ACCASSITEM b on a.checktype = b.PK_ACCASSITEM
	 LEFT JOIN CW_BD_GLORGBOOK c on a.PK_GLORGBOOK = c.PK_GLORGBOOK
	 LEFT JOIN pm_project_child d on c.XTZXMBH=d.XTZXMBH
	 LEFT JOIN 
	 (
	   select m.project_id, n.USER_ID, p.USER_NAME from pm_pgroup_rel m 
	   LEFT JOIN w_gu_ref n on  m.g_id=n.g_id
	   LEFT JOIN sys_user_info p on n.USER_ID=p.USER_ID
	   where n.G_ROLE='5'
	 ) e on d.XTZXMBH=e.project_id
	 <where> 
     <if test="xtxmbh != null">
       and c.XTXMBH = #{xtxmbh,jdbcType=VARCHAR}
     </if>
     <if test="xtzxmbh != null">
       and c.XTZXMBH = #{xtzxmbh,jdbcType=VARCHAR}
     </if>
     <if test="userId != null">
       and e.USER_ID = #{userId,jdbcType=VARCHAR}
     </if>
   	 </where> 
	 order by c.XTXMBH, c.XTZXMBH, b.name
   	</if>
  </select>
  <!-- 应付受益人收益有余额 -->
  <select id="selectAccruedIncomeBalance" resultMap="BaseResultMap"> 	
    select b.XTXMBH, a.XTZXMBH, b.XTZXMQC,b.XMZT, b.XMZZR, c.USER_NAME, a.balance from 
	(
	 select b.XTZXMBH, sum(a.LOCALCREDITAMOUNT-a.LOCALDEBITAMOUNT) balance 
	 from cw_gl_detail a 
	 left join cw_bd_glorgbook b on a.PK_GLORGBOOK=b.PK_GLORGBOOK 
	 where a.SUBJCODE like '2205%' and a.PREPAREDATE<![CDATA[ <= ]]> #{jzrq,jdbcType=VARCHAR} and a.use_state='1'  
	 GROUP BY b.XTZXMBH having balance<![CDATA[ > ]]>0
	) a 
	left join pm_project_child b on a.XTZXMBH=b.XTZXMBH
	left join (
	 select m.project_id, n.USER_ID,p.USER_NAME from pm_pgroup_rel m 
	 LEFT JOIN w_gu_ref n on  m.g_id=n.g_id
	 LEFT JOIN sys_user_info p on n.USER_ID=p.USER_ID
	 where n.G_ROLE='5'
	) c on a.XTZXMBH=c.project_id	
  	<where> 
    <if test="xtxmbh != null">
       and b.XTXMBH = #{xtxmbh,jdbcType=VARCHAR}
     </if>
     <if test="xtzxmbh != null">
       and a.XTZXMBH = #{xtzxmbh,jdbcType=VARCHAR}
     </if>
     <if test="userId != null">
       and c.USER_ID = #{userId,jdbcType=VARCHAR}
     </if>     
   	 </where> 
  </select>
  <!-- 其他应付款余额超过100万 -->
  <select id="selectOtherPayablesBalance" resultMap="BaseResultMap">
    select b.XTXMBH, a.XTZXMBH, b.XTZXMQC, b.XMZT, b.XMZZR, c.USER_NAME, a.balance from 
	(
		select b.XTZXMBH, sum(a.LOCALCREDITAMOUNT-a.LOCALDEBITAMOUNT) balance 
		from cw_gl_detail a 
		left join cw_bd_glorgbook b on a.PK_GLORGBOOK=b.PK_GLORGBOOK 
		where a.SUBJCODE like '2241%' and a.PREPAREDATE<![CDATA[ <= ]]> #{jzrq,jdbcType=VARCHAR} and a.use_state='1'  
		GROUP BY b.XTZXMBH having balance<![CDATA[ >= ]]>1000000
	) a 
	left join pm_project_child b on a.XTZXMBH=b.XTZXMBH
	left join (
	 select m.project_id, n.USER_ID,p.USER_NAME from pm_pgroup_rel m 
	 LEFT JOIN w_gu_ref n on  m.g_id=n.g_id
	 LEFT JOIN sys_user_info p on n.USER_ID=p.USER_ID
	 where n.G_ROLE='5'
	) c on a.XTZXMBH=c.project_id		  	
  	<where> 
    <if test="xtxmbh != null">
       and b.XTXMBH = #{xtxmbh,jdbcType=VARCHAR}
     </if>
     <if test="xtzxmbh != null">
       and a.XTZXMBH = #{xtzxmbh,jdbcType=VARCHAR}
     </if>
     <if test="userId != null">
       and c.USER_ID = #{userId,jdbcType=VARCHAR}
     </if>     
   	 </where> 
  </select>
  <!-- 未归还固有代垫款项目 -->
  <select id="selectEntrustRewardBalance" resultMap="BaseResultMap">
    select  d.XTXMBH, a.XTZXMBH, d.XTZXMQC, d.XMZT, d.XMZZR, e.USER_NAME, a.balance_2206 as balance, a.balance_224102 as balance_advance from 
	(  
	  SELECT a.PK_GLORGBOOK, a.XTZXMBH,  IFNULL(a.balance,0) balance_2206, IFNULL(b.balance,0) balance_224102  FROM
	  (
	    select gb.PK_GLORGBOOK, gb.XTZXMBH, a.balance  from 
	    (  
	      SELECT a.PK_GLORGBOOK, sum(a.LOCALDEBITAMOUNT) balance from cw_gl_detail a 
	      where left(a.SUBJCODE, 4)='2206' 
	      and a.PREPAREDATE<![CDATA[ > ]]>date_format(last_day(date_add(#{jzrq,jdbcType=VARCHAR}, interval -1 month)),'%Y%m%d') 
	      and a.PREPAREDATE<![CDATA[ <= ]]> #{jzrq,jdbcType=VARCHAR}
	      and a.USE_STATE='1'
	      GROUP BY  a.PK_GLORGBOOK 
	    )a 
	    LEFT JOIN CW_BD_GLORGBOOK gb on gb.PK_GLORGBOOK = a.PK_GLORGBOOK
	  )a
	  INNER JOIN
	  (
	    select gb.PK_GLORGBOOK, gb.XTZXMBH, a.balance  from 
	    (
	      SELECT a.PK_GLORGBOOK, sum(a.LOCALCREDITAMOUNT)-sum(a.LOCALDEBITAMOUNT) balance from cw_gl_detail a 
	      where left(a.SUBJCODE, 6)='224102' 
	      and a.PREPAREDATE<![CDATA[ <= ]]> #{jzrq,jdbcType=VARCHAR}
	   and a.USE_STATE='1'
	      GROUP BY  a.PK_GLORGBOOK 
	    )a 
	    LEFT JOIN CW_BD_GLORGBOOK gb on gb.PK_GLORGBOOK = a.PK_GLORGBOOK
	  )b on a.PK_GLORGBOOK = b.PK_GLORGBOOK
	  where a.balance > b.balance and b.balance<![CDATA[ <> ]]>0
	)a
	LEFT JOIN pm_project_child d on d.XTZXMBH=a.XTZXMBH
	LEFT JOIN 
	(
	 select m.project_id, n.USER_ID,p.USER_NAME from pm_pgroup_rel m 
	 LEFT JOIN w_gu_ref n on  m.g_id=n.g_id
	 LEFT JOIN sys_user_info p on n.USER_ID=p.USER_ID
	 where n.G_ROLE='5'
	)e on d.XTZXMBH=e.project_id
    <where> 
    <if test="xtxmbh != null">
       and d.XTXMBH = #{xtxmbh,jdbcType=VARCHAR}
     </if>
     <if test="xtzxmbh != null">
       and a.XTZXMBH = #{xtzxmbh,jdbcType=VARCHAR}
     </if>
     <if test="userId != null">
       and e.USER_ID = #{userId,jdbcType=VARCHAR}
     </if>      
   	 </where> 
  </select>
</mapper>