<?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.FinancialGlorgbookMapper">
<resultMap id="BaseResultMap" type="com.dhcc.finance.main.model.CwBdAccsubjWeb">
    <result column="SUBJCODE" jdbcType="VARCHAR" property="subjcode" />
    <result column="SUBJNAME" jdbcType="VARCHAR" property="subjname" />
     <result column="BALANCE" jdbcType="DECIMAL" property="balance" />
  </resultMap>
<select id="selectCwBdGlorgbookForDetail" resultMap="BaseResultMap">
 SELECT a.SUBJCODE ,a.SUBJNAME,
           case when    BALANORIENT ='1' then  ifnull(sum(LOCALDEBITAMOUNT),0)-ifnull(sum(LOCALCREDITAMOUNT),0) else  ifnull(sum(LOCALCREDITAMOUNT),0)-ifnull(sum(LOCALDEBITAMOUNT),0) end  BALANCE
        FROM ( select SUBJCODE,SUBJNAME,BALANORIENT from CW_BD_ACCSUBJ where PK_SUBJSCHEME= (select PK_SUBJSCHEME from CW_BD_GLORGBOOK WHERE XTZXMBH =  #{xtzxmbh,jdbcType=VARCHAR} and USE_STATE ='1' )  
        and SUBJLEV!='0' and USE_STATE='1'and SUBJCODE not like '6%' and (SUBJCODE not like '4%' or SUBJCODE ='4001')  ) a
            left JOIN (
              select  detail.SUBJCODE,sum(detail.LOCALDEBITAMOUNT) LOCALDEBITAMOUNT,sum(detail.LOCALCREDITAMOUNT) LOCALCREDITAMOUNT from   (select PK_VOUCHER, USE_STATE from  CW_GL_VOUCHER  
             <![CDATA[  where   PREPAREDATE<#{dateTime,jdbcType=VARCHAR}   and  PK_GLORGBOOK =   (select PK_GLORGBOOK from CW_BD_GLORGBOOK where  XTZXMBH =  #{xtzxmbh,jdbcType=VARCHAR} and USE_STATE ='1' )    ) voucher  ]]>
              inner join  CW_GL_DETAIL detail on detail.PK_VOUCHER=voucher.PK_VOUCHER  
                where detail.USE_STATE= '1' and voucher.USE_STATE ='1' 
                GROUP BY detail.SUBJCODE order by null
            ) b 
 ON b.SUBJCODE  LIKE CONCAT(a.SUBJCODE,'%') where b.LOCALDEBITAMOUNT is not null and b.LOCALCREDITAMOUNT is not null  
 GROUP BY a.SUBJCODE
</select>
</mapper>