<?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.CwBdAccsubjMapper">
  <resultMap id="BaseResultMap" type="com.dhcc.finance.main.domain.CwBdAccsubj">
    <id column="PK_ACCSUBJ" jdbcType="VARCHAR" property="pkAccsubj" />
    <result column="PK_SUBJSCHEME" jdbcType="VARCHAR" property="pkSubjscheme" />
    <result column="SUBJCODE" jdbcType="VARCHAR" property="subjcode" />
    <result column="SUBJNAME" jdbcType="VARCHAR" property="subjname" />
    <result column="SUBJLEV" jdbcType="VARCHAR" property="subjlev" />
    <result column="DISPNAME" jdbcType="VARCHAR" property="dispname" />
    <result column="RULE" jdbcType="VARCHAR" property="rule" />
    <result column="PK_SUBJTYPE" jdbcType="VARCHAR" property="pkSubjtype" />
    <result column="PK_SUBJTYPE_SUB" jdbcType="VARCHAR" property="pkSubjtypeSub" />
    <result column="BALANORIENT" jdbcType="VARCHAR" property="balanorient" />
    <result column="BALANFLAG" jdbcType="VARCHAR" property="balanflag" />
    <result column="ICURFLAG" jdbcType="VARCHAR" property="icurflag" />
    <result column="CURRENCY" jdbcType="VARCHAR" property="currency" />
    <result column="AUXFLAG" jdbcType="VARCHAR" property="auxflag" />
    <result column="PARENTID" jdbcType="VARCHAR" property="parentid" />
    <result column="FINALSTAGE" jdbcType="VARCHAR" property="finalstage" />
    <result column="UNITS" jdbcType="VARCHAR" property="units" />
    <result column="ENABLESTATE" jdbcType="VARCHAR" property="enablestate" />
    <result column="USE_STATE" jdbcType="VARCHAR" property="useState" />
    <result column="CREATE_USER" jdbcType="VARCHAR" property="createUser" />
    <result column="CREATE_TIME" jdbcType="TIMESTAMP" property="createTime" />
    <result column="UPDATE_USER" jdbcType="VARCHAR" property="updateUser" />
    <result column="UPDATE_TIME" jdbcType="TIMESTAMP" property="updateTime" />
    <result column="REMARK" jdbcType="VARCHAR" property="remark" />
  </resultMap>
  <sql id="Example_Where_Clause">
    <where>
      <foreach collection="oredCriteria" item="criteria" separator="or">
        <if test="criteria.valid">
          <trim prefix="(" prefixOverrides="and" suffix=")">
            <foreach collection="criteria.criteria" item="criterion">
              <choose>
                <when test="criterion.noValue">
                  and ${criterion.condition}
                </when>
                <when test="criterion.singleValue">
                  and ${criterion.condition} #{criterion.value}
                </when>
                <when test="criterion.betweenValue">
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                </when>
                <when test="criterion.listValue">
                  and ${criterion.condition}
                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
                    #{listItem}
                  </foreach>
                </when>
              </choose>
            </foreach>
          </trim>
        </if>
      </foreach>
    </where>
  </sql>
  <sql id="Update_By_Example_Where_Clause">
    <where>
      <foreach collection="example.oredCriteria" item="criteria" separator="or">
        <if test="criteria.valid">
          <trim prefix="(" prefixOverrides="and" suffix=")">
            <foreach collection="criteria.criteria" item="criterion">
              <choose>
                <when test="criterion.noValue">
                  and ${criterion.condition}
                </when>
                <when test="criterion.singleValue">
                  and ${criterion.condition} #{criterion.value}
                </when>
                <when test="criterion.betweenValue">
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                </when>
                <when test="criterion.listValue">
                  and ${criterion.condition}
                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
                    #{listItem}
                  </foreach>
                </when>
              </choose>
            </foreach>
          </trim>
        </if>
      </foreach>
    </where>
  </sql>
  <sql id="Base_Column_List">
    PK_ACCSUBJ, PK_SUBJSCHEME, SUBJCODE, SUBJNAME, SUBJLEV, DISPNAME, RULE, PK_SUBJTYPE,PK_SUBJTYPE_SUB, 
    BALANORIENT, BALANFLAG, ICURFLAG, CURRENCY, AUXFLAG, PARENTID, FINALSTAGE, UNITS, 
    ENABLESTATE, USE_STATE, CREATE_USER, CREATE_TIME, UPDATE_USER, UPDATE_TIME, REMARK
  </sql>
  <select id="selectByExample" parameterType="com.dhcc.finance.main.domain.CwBdAccsubjExample" resultMap="BaseResultMap">
    select
    <if test="distinct">
      distinct
    </if>
    <include refid="Base_Column_List" />
    from cw_bd_accsubj
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
    <if test="orderByClause != null">
      order by ${orderByClause}
    </if>
  </select>
  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from cw_bd_accsubj
    where PK_ACCSUBJ = #{pkAccsubj,jdbcType=VARCHAR}
    and USE_STATE='1'
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
    delete from cw_bd_accsubj
    where PK_ACCSUBJ = #{pkAccsubj,jdbcType=VARCHAR}
  </delete>
  <delete id="deleteByExample" parameterType="com.dhcc.finance.main.domain.CwBdAccsubjExample">
    delete from cw_bd_accsubj
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
  </delete>
  <insert id="insert" parameterType="com.dhcc.finance.main.domain.CwBdAccsubj">
    insert into cw_bd_accsubj (PK_ACCSUBJ, PK_SUBJSCHEME, SUBJCODE, 
      SUBJNAME, SUBJLEV, DISPNAME, 
      RULE, PK_SUBJTYPE,PK_SUBJTYPE_SUB,BALANORIENT, 
      BALANFLAG, ICURFLAG, CURRENCY, 
      AUXFLAG, PARENTID, FINALSTAGE, 
      UNITS, ENABLESTATE, USE_STATE, 
      CREATE_USER, CREATE_TIME, UPDATE_USER, 
      UPDATE_TIME, REMARK)
    values (#{pkAccsubj,jdbcType=VARCHAR}, #{pkSubjscheme,jdbcType=VARCHAR}, #{subjcode,jdbcType=VARCHAR}, 
      #{subjname,jdbcType=VARCHAR}, #{subjlev,jdbcType=VARCHAR}, #{dispname,jdbcType=VARCHAR}, 
      #{rule,jdbcType=VARCHAR}, #{pkSubjtype,jdbcType=VARCHAR},#{pkSubjtypeSub,jdbcType=VARCHAR}, #{balanorient,jdbcType=VARCHAR}, 
      #{balanflag,jdbcType=VARCHAR}, #{icurflag,jdbcType=VARCHAR}, #{currency,jdbcType=VARCHAR}, 
      #{auxflag,jdbcType=VARCHAR}, #{parentid,jdbcType=VARCHAR}, #{finalstage,jdbcType=VARCHAR}, 
      #{units,jdbcType=VARCHAR}, #{enablestate,jdbcType=VARCHAR}, #{useState,jdbcType=VARCHAR}, 
      #{createUser,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{updateUser,jdbcType=VARCHAR}, 
      #{updateTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR})
  </insert>
  <insert id="inserts" parameterType="java.util.List">
  insert into cw_bd_accsubj (PK_ACCSUBJ, PK_SUBJSCHEME, SUBJCODE, 
      SUBJNAME, SUBJLEV, DISPNAME, 
      RULE, PK_SUBJTYPE, BALANORIENT, 
      BALANFLAG, ICURFLAG, CURRENCY, 
      AUXFLAG, PARENTID, FINALSTAGE, 
      UNITS, ENABLESTATE, USE_STATE, 
      CREATE_USER, CREATE_TIME, UPDATE_USER, 
      UPDATE_TIME, REMARK)
    values
    <foreach collection="records" item="item" index="index" separator=",">
     (#{item.pkAccsubj,jdbcType=VARCHAR}, #{item.pkSubjscheme,jdbcType=VARCHAR}, #{item.subjcode,jdbcType=VARCHAR}, 
      #{item.subjname,jdbcType=VARCHAR}, #{item.subjlev,jdbcType=VARCHAR}, #{item.dispname,jdbcType=VARCHAR}, 
      #{item.rule,jdbcType=VARCHAR}, #{item.pkSubjtype,jdbcType=VARCHAR}, #{item.balanorient,jdbcType=VARCHAR}, 
      #{item.balanflag,jdbcType=VARCHAR}, #{item.icurflag,jdbcType=VARCHAR}, #{item.currency,jdbcType=VARCHAR}, 
      #{item.auxflag,jdbcType=VARCHAR}, #{item.parentid,jdbcType=VARCHAR}, #{item.finalstage,jdbcType=VARCHAR}, 
      #{item.units,jdbcType=VARCHAR}, #{item.enablestate,jdbcType=VARCHAR}, #{item.useState,jdbcType=VARCHAR}, 
      #{item.createUser,jdbcType=VARCHAR}, #{item.createTime,jdbcType=TIMESTAMP}, #{item.updateUser,jdbcType=VARCHAR}, 
      #{item.updateTime,jdbcType=TIMESTAMP}, #{item.remark,jdbcType=VARCHAR})
      </foreach>
  </insert>
  <insert id="insertSelective" parameterType="com.dhcc.finance.main.domain.CwBdAccsubj">
    insert into cw_bd_accsubj
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="pkAccsubj != null">
        PK_ACCSUBJ,
      </if>
      <if test="pkSubjscheme != null">
        PK_SUBJSCHEME,
      </if>
      <if test="subjcode != null">
        SUBJCODE,
      </if>
      <if test="subjname != null">
        SUBJNAME,
      </if>
      <if test="subjlev != null">
        SUBJLEV,
      </if>
      <if test="dispname != null">
        DISPNAME,
      </if>
      <if test="rule != null">
        RULE,
      </if>
      <if test="pkSubjtype != null">
        PK_SUBJTYPE,
      </if>
      <if test="balanorient != null">
        BALANORIENT,
      </if>
      <if test="balanflag != null">
        BALANFLAG,
      </if>
      <if test="icurflag != null">
        ICURFLAG,
      </if>
      <if test="currency != null">
        CURRENCY,
      </if>
      <if test="auxflag != null">
        AUXFLAG,
      </if>
      <if test="parentid != null">
        PARENTID,
      </if>
      <if test="finalstage != null">
        FINALSTAGE,
      </if>
      <if test="units != null">
        UNITS,
      </if>
      <if test="enablestate != null">
        ENABLESTATE,
      </if>
      <if test="useState != null">
        USE_STATE,
      </if>
      <if test="createUser != null">
        CREATE_USER,
      </if>
      <if test="createTime != null">
        CREATE_TIME,
      </if>
      <if test="updateUser != null">
        UPDATE_USER,
      </if>
      <if test="updateTime != null">
        UPDATE_TIME,
      </if>
      <if test="remark != null">
        REMARK,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="pkAccsubj != null">
        #{pkAccsubj,jdbcType=VARCHAR},
      </if>
      <if test="pkSubjscheme != null">
        #{pkSubjscheme,jdbcType=VARCHAR},
      </if>
      <if test="subjcode != null">
        #{subjcode,jdbcType=VARCHAR},
      </if>
      <if test="subjname != null">
        #{subjname,jdbcType=VARCHAR},
      </if>
      <if test="subjlev != null">
        #{subjlev,jdbcType=VARCHAR},
      </if>
      <if test="dispname != null">
        #{dispname,jdbcType=VARCHAR},
      </if>
      <if test="rule != null">
        #{rule,jdbcType=VARCHAR},
      </if>
      <if test="pkSubjtype != null">
        #{pkSubjtype,jdbcType=VARCHAR},
      </if>
      <if test="balanorient != null">
        #{balanorient,jdbcType=VARCHAR},
      </if>
      <if test="balanflag != null">
        #{balanflag,jdbcType=VARCHAR},
      </if>
      <if test="icurflag != null">
        #{icurflag,jdbcType=VARCHAR},
      </if>
      <if test="currency != null">
        #{currency,jdbcType=VARCHAR},
      </if>
      <if test="auxflag != null">
        #{auxflag,jdbcType=VARCHAR},
      </if>
      <if test="parentid != null">
        #{parentid,jdbcType=VARCHAR},
      </if>
      <if test="finalstage != null">
        #{finalstage,jdbcType=VARCHAR},
      </if>
      <if test="units != null">
        #{units,jdbcType=VARCHAR},
      </if>
      <if test="enablestate != null">
        #{enablestate,jdbcType=VARCHAR},
      </if>
      <if test="useState != null">
        #{useState,jdbcType=VARCHAR},
      </if>
      <if test="createUser != null">
        #{createUser,jdbcType=VARCHAR},
      </if>
      <if test="createTime != null">
        #{createTime,jdbcType=TIMESTAMP},
      </if>
      <if test="updateUser != null">
        #{updateUser,jdbcType=VARCHAR},
      </if>
      <if test="updateTime != null">
        #{updateTime,jdbcType=TIMESTAMP},
      </if>
      <if test="remark != null">
        #{remark,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
  <select id="countByExample" parameterType="com.dhcc.finance.main.domain.CwBdAccsubjExample" resultType="java.lang.Long">
    select count(*) from cw_bd_accsubj
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
  </select>
  <update id="updateByExampleSelective" parameterType="map">
    update cw_bd_accsubj
    <set>
      <if test="record.pkAccsubj != null">
        PK_ACCSUBJ = #{record.pkAccsubj,jdbcType=VARCHAR},
      </if>
      <if test="record.pkSubjscheme != null">
        PK_SUBJSCHEME = #{record.pkSubjscheme,jdbcType=VARCHAR},
      </if>
      <if test="record.subjcode != null">
        SUBJCODE = #{record.subjcode,jdbcType=VARCHAR},
      </if>
      <if test="record.subjname != null">
        SUBJNAME = #{record.subjname,jdbcType=VARCHAR},
      </if>
      <if test="record.subjlev != null">
        SUBJLEV = #{record.subjlev,jdbcType=VARCHAR},
      </if>
      <if test="record.dispname != null">
        DISPNAME = #{record.dispname,jdbcType=VARCHAR},
      </if>
      <if test="record.rule != null">
        RULE = #{record.rule,jdbcType=VARCHAR},
      </if>
      <if test="record.pkSubjtype != null">
        PK_SUBJTYPE = #{record.pkSubjtype,jdbcType=VARCHAR},
      </if>
      <if test="record.balanorient != null">
        BALANORIENT = #{record.balanorient,jdbcType=VARCHAR},
      </if>
      <if test="record.balanflag != null">
        BALANFLAG = #{record.balanflag,jdbcType=VARCHAR},
      </if>
      <if test="record.icurflag != null">
        ICURFLAG = #{record.icurflag,jdbcType=VARCHAR},
      </if>
      <if test="record.currency != null">
        CURRENCY = #{record.currency,jdbcType=VARCHAR},
      </if>
      <if test="record.auxflag != null">
        AUXFLAG = #{record.auxflag,jdbcType=VARCHAR},
      </if>
      <if test="record.parentid != null">
        PARENTID = #{record.parentid,jdbcType=VARCHAR},
      </if>
      <if test="record.finalstage != null">
        FINALSTAGE = #{record.finalstage,jdbcType=VARCHAR},
      </if>
      <if test="record.units != null">
        UNITS = #{record.units,jdbcType=VARCHAR},
      </if>
      <if test="record.enablestate != null">
        ENABLESTATE = #{record.enablestate,jdbcType=VARCHAR},
      </if>
      <if test="record.useState != null">
        USE_STATE = #{record.useState,jdbcType=VARCHAR},
      </if>
      <if test="record.createUser != null">
        CREATE_USER = #{record.createUser,jdbcType=VARCHAR},
      </if>
      <if test="record.createTime != null">
        CREATE_TIME = #{record.createTime,jdbcType=TIMESTAMP},
      </if>
      <if test="record.updateUser != null">
        UPDATE_USER = #{record.updateUser,jdbcType=VARCHAR},
      </if>
      <if test="record.updateTime != null">
        UPDATE_TIME = #{record.updateTime,jdbcType=TIMESTAMP},
      </if>
      <if test="record.remark != null">
        REMARK = #{record.remark,jdbcType=VARCHAR},
      </if>
    </set>
    <if test="_parameter != null">
      <include refid="Update_By_Example_Where_Clause" />
    </if>
  </update>
  <update id="updateByExample" parameterType="map">
    update cw_bd_accsubj
    set PK_ACCSUBJ = #{record.pkAccsubj,jdbcType=VARCHAR},
      PK_SUBJSCHEME = #{record.pkSubjscheme,jdbcType=VARCHAR},
      SUBJCODE = #{record.subjcode,jdbcType=VARCHAR},
      SUBJNAME = #{record.subjname,jdbcType=VARCHAR},
      SUBJLEV = #{record.subjlev,jdbcType=VARCHAR},
      DISPNAME = #{record.dispname,jdbcType=VARCHAR},
      RULE = #{record.rule,jdbcType=VARCHAR},
      PK_SUBJTYPE = #{record.pkSubjtype,jdbcType=VARCHAR},
      BALANORIENT = #{record.balanorient,jdbcType=VARCHAR},
      BALANFLAG = #{record.balanflag,jdbcType=VARCHAR},
      ICURFLAG = #{record.icurflag,jdbcType=VARCHAR},
      CURRENCY = #{record.currency,jdbcType=VARCHAR},
      AUXFLAG = #{record.auxflag,jdbcType=VARCHAR},
      PARENTID = #{record.parentid,jdbcType=VARCHAR},
      FINALSTAGE = #{record.finalstage,jdbcType=VARCHAR},
      UNITS = #{record.units,jdbcType=VARCHAR},
      ENABLESTATE = #{record.enablestate,jdbcType=VARCHAR},
      USE_STATE = #{record.useState,jdbcType=VARCHAR},
      CREATE_USER = #{record.createUser,jdbcType=VARCHAR},
      CREATE_TIME = #{record.createTime,jdbcType=TIMESTAMP},
      UPDATE_USER = #{record.updateUser,jdbcType=VARCHAR},
      UPDATE_TIME = #{record.updateTime,jdbcType=TIMESTAMP},
      REMARK = #{record.remark,jdbcType=VARCHAR}
    <if test="_parameter != null">
      <include refid="Update_By_Example_Where_Clause" />
    </if>
  </update>
  <update id="updateByPrimaryKeySelective" parameterType="com.dhcc.finance.main.domain.CwBdAccsubj">
    update cw_bd_accsubj
    <set>
      <if test="pkSubjscheme != null">
        PK_SUBJSCHEME = #{pkSubjscheme,jdbcType=VARCHAR},
      </if>
      <if test="subjcode != null">
        SUBJCODE = #{subjcode,jdbcType=VARCHAR},
      </if>
      <if test="subjname != null">
        SUBJNAME = #{subjname,jdbcType=VARCHAR},
      </if>
      <if test="subjlev != null">
        SUBJLEV = #{subjlev,jdbcType=VARCHAR},
      </if>
      <if test="dispname != null">
        DISPNAME = #{dispname,jdbcType=VARCHAR},
      </if>
      <if test="rule != null">
        RULE = #{rule,jdbcType=VARCHAR},
      </if>
      <if test="pkSubjtype != null">
        PK_SUBJTYPE = #{pkSubjtype,jdbcType=VARCHAR},
      </if>
      <if test="pkSubjtypeSub != null"> 
        PK_SUBJTYPE_SUB = #{pkSubjtypeSub,jdbcType=VARCHAR},
      </if>
      <if test="balanorient != null">
        BALANORIENT = #{balanorient,jdbcType=VARCHAR},
      </if>
      <if test="balanflag != null">
        BALANFLAG = #{balanflag,jdbcType=VARCHAR},
      </if>
      <if test="icurflag != null">
        ICURFLAG = #{icurflag,jdbcType=VARCHAR},
      </if>
      <if test="currency != null">
        CURRENCY = #{currency,jdbcType=VARCHAR},
      </if>
      <if test="auxflag != null">
        AUXFLAG = #{auxflag,jdbcType=VARCHAR},
      </if>
      <if test="parentid != null">
        PARENTID = #{parentid,jdbcType=VARCHAR},
      </if>
      <if test="finalstage != null">
        FINALSTAGE = #{finalstage,jdbcType=VARCHAR},
      </if>
      <if test="units != null">
        UNITS = #{units,jdbcType=VARCHAR},
      </if>
      <if test="enablestate != null">
        ENABLESTATE = #{enablestate,jdbcType=VARCHAR},
      </if>
      <if test="useState != null">
        USE_STATE = #{useState,jdbcType=VARCHAR},
      </if>
      <if test="createUser != null">
        CREATE_USER = #{createUser,jdbcType=VARCHAR},
      </if>
      <if test="createTime != null">
        CREATE_TIME = #{createTime,jdbcType=TIMESTAMP},
      </if>
      <if test="updateUser != null">
        UPDATE_USER = #{updateUser,jdbcType=VARCHAR},
      </if>
      <if test="updateTime != null">
        UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP},
      </if>
      <if test="remark != null">
        REMARK = #{remark,jdbcType=VARCHAR},
      </if>
    </set>
    where PK_ACCSUBJ = #{pkAccsubj,jdbcType=VARCHAR}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dhcc.finance.main.domain.CwBdAccsubj">
    update cw_bd_accsubj
    set PK_SUBJSCHEME = #{pkSubjscheme,jdbcType=VARCHAR},
      SUBJCODE = #{subjcode,jdbcType=VARCHAR},
      SUBJNAME = #{subjname,jdbcType=VARCHAR},
      SUBJLEV = #{subjlev,jdbcType=VARCHAR},
      DISPNAME = #{dispname,jdbcType=VARCHAR},
      RULE = #{rule,jdbcType=VARCHAR},
      PK_SUBJTYPE = #{pkSubjtype,jdbcType=VARCHAR},
      BALANORIENT = #{balanorient,jdbcType=VARCHAR},
      BALANFLAG = #{balanflag,jdbcType=VARCHAR},
      ICURFLAG = #{icurflag,jdbcType=VARCHAR},
      CURRENCY = #{currency,jdbcType=VARCHAR},
      AUXFLAG = #{auxflag,jdbcType=VARCHAR},
      PARENTID = #{parentid,jdbcType=VARCHAR},
      FINALSTAGE = #{finalstage,jdbcType=VARCHAR},
      UNITS = #{units,jdbcType=VARCHAR},
      ENABLESTATE = #{enablestate,jdbcType=VARCHAR},
      USE_STATE = #{useState,jdbcType=VARCHAR},
      CREATE_USER = #{createUser,jdbcType=VARCHAR},
      CREATE_TIME = #{createTime,jdbcType=TIMESTAMP},
      UPDATE_USER = #{updateUser,jdbcType=VARCHAR},
      UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP},
      REMARK = #{remark,jdbcType=VARCHAR}
    where PK_ACCSUBJ = #{pkAccsubj,jdbcType=VARCHAR}
  </update>
  <sql id="Ex_Base_Column_List2">
    b.PK_ACCASS, b.PK_SUBJSCHEME, b.PK_ACCSUBJ, b.ASSORDER, b.PK_ACCASSITEM, b.ISMUST, 
    b.USE_STATE, b.CREATE_USER, b.CREATE_TIME, b.UPDATE_USER, b.UPDATE_TIME, b.REMARK
  </sql>
  <sql id="Ex_Base_Column_List">
    a.PK_ACCSUBJ, a.PK_SUBJSCHEME, a.SUBJCODE, a.SUBJNAME, a.SUBJLEV, a.DISPNAME, a.RULE, a.PK_SUBJTYPE, 
    a.BALANORIENT, a.BALANFLAG, a.ICURFLAG, a.CURRENCY, a.AUXFLAG, a.PARENTID, a.FINALSTAGE, a.UNITS, 
    a.ENABLESTATE, a.USE_STATE, a.CREATE_USER, a.CREATE_TIME, a.UPDATE_USER, a.UPDATE_TIME, a.REMARK
  </sql>
  <!-- dml查询节点和节点下所有子节点数据 -->
  <!--修改查询节点语句在新版mysql里查询慢的问题-->
  <select id="selectByNode" parameterType="java.lang.String" resultMap="BaseResultMap">
	 select <include refid="Base_Column_List" /> from (
	 select
	     <include refid="Base_Column_List" />
	    from cw_bd_accsubj where PK_ACCSUBJ in  (
	         select PK_ACCSUBJ from (
			      select t1.PK_ACCSUBJ,if(find_in_set(PARENTID,CONVERT(@pids2 USING utf8) COLLATE utf8_unicode_ci) > 0, @pids2 := concat(@pids2, ',', PK_ACCSUBJ), '0') as ischild 
			            from (
			                 select PK_ACCSUBJ,PARENTID  from CW_BD_ACCSUBJ t 
			                 where t.PK_SUBJSCHEME=#{pkSubjscheme,jdbcType=VARCHAR} 
			                 and USE_STATE='1'  order by SUBJCODE,PARENTID
			                  ) t1,
			            (select @pids2 :=(#{pkAccsubj,jdbcType=VARCHAR}) ) t2
	          ) t3 where ischild  != '0')
	 union 
	  select <include refid="Base_Column_List" />
	  from cw_bd_accsubj where PK_ACCSUBJ = #{pkAccsubj,jdbcType=VARCHAR} ) a
	 where <![CDATA[  SUBJLEV <> '0']]> order by SUBJCODE
  </select>
  <!-- <select id="selectByNode" parameterType="java.lang.String" resultMap="BaseResultMap">
     select
     <include refid="Base_Column_List" />
    from cw_bd_accsubj where PK_ACCSUBJ in  (
         select PK_ACCSUBJ from (
		      select t1.PK_ACCSUBJ,if(find_in_set(PARENTID,CONVERT(@pids2 USING utf8) COLLATE utf8_unicode_ci) > 0, @pids2 := concat(@pids2, ',', PK_ACCSUBJ), '0') as ischild 
		            from (
		                 select PK_ACCSUBJ,PARENTID  from CW_BD_ACCSUBJ t 
		                 where t.PK_SUBJSCHEME=#{pkSubjscheme,jdbcType=VARCHAR} 
		                 and USE_STATE='1'  order by SUBJCODE,PARENTID
		                  ) t1,
		            (select @pids2 :=(#{pkAccsubj,jdbcType=VARCHAR}) ) t2
          ) t3 where ischild  != '0'
          union 
          select PK_ACCSUBJ from cw_bd_accsubj where PK_ACCSUBJ = #{pkAccsubj,jdbcType=VARCHAR}
       )  <![CDATA[ and SUBJLEV <> '0']]> order by SUBJCODE
  </select> -->
  <!-- <select id="selectByNode"  resultMap="BaseResultMap" statementType="CALLABLE">
      {
         call allSubjNodeChild(
              #{pkAccsubj,jdbcType=VARCHAR},
              #{pkSubjscheme,jdbcType=VARCHAR}
         )
         }
  </select> -->
   <!-- select <include refid="Base_Column_List" /> from (
    <if test="subjcode != null">
      select <include refid="Base_Column_List" /> from cw_bd_accsubj where SUBJCODE= #{subjcode,jdbcType=VARCHAR} and SYZT='1' 
	  union all 
      select <include refid="Base_Column_List" /> from cw_bd_accsubj where PARENTID=#{subjcode,jdbcType=VARCHAR} and SYZT='1' 
      union all 
      select <include refid="Base_Column_List" /> from cw_bd_accsubj where PARENTID in (select SUBJCODE  from cw_bd_accsubj where PARENTID=#{subjcode,jdbcType=VARCHAR} and SYZT='1' ) and SYZT='1' 
      union all 
      select <include refid="Base_Column_List" /> from cw_bd_accsubj where PARENTID in (select SUBJCODE from cw_bd_accsubj where PARENTID in (select SUBJCODE  from cw_bd_accsubj where PARENTID=#{subjcode,jdbcType=VARCHAR} and SYZT='1' ) and SYZT='1' ) and SYZT='1' 
      union all
      select <include refid="Base_Column_List" /> from cw_bd_accsubj where PARENTID in( select  SUBJCODE  from cw_bd_accsubj where PARENTID in (select SUBJCODE from cw_bd_accsubj where PARENTID in (select SUBJCODE  from cw_bd_accsubj where PARENTID=#{subjcode,jdbcType=VARCHAR}and SYZT='1' ) and SYZT='1' ) and SYZT='1'   )and SYZT='1' 
     union all 
      select <include refid="Base_Column_List" /> from cw_bd_accsubj where PARENTID in(  select SUBJCODE from cw_bd_accsubj where PARENTID in( select  SUBJCODE  from cw_bd_accsubj where PARENTID in (select SUBJCODE from cw_bd_accsubj where PARENTID in (select SUBJCODE  from cw_bd_accsubj where PARENTID=#{subjcode,jdbcType=VARCHAR} and SYZT='1' ) and SYZT='1' ) and SYZT='1'   )and SYZT='1'  )and SYZT='1' 
    </if>
    ) a where   <![CDATA[ a.SYZT='1' 
     and a.SUBJLEV <> '0'
     and a.PK_SUBJSCHEME = #{pkSubjscheme,jdbcType=VARCHAR} 
     order by a.SUBJCODE
     ]]> -->
  <!-- 逻辑删除某节点所有会计科目 -->
  <update id="updateSubjschemeBatch" parameterType="java.util.Map">
    update cw_bd_accsubj
    set 
      USE_STATE = '0',
      UPDATE_USER = #{updateUser,jdbcType=VARCHAR},
      UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP}
    where PK_ACCSUBJ in
    <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
       #{item}
   </foreach>
  </update>
  
  <!-- 逻辑删除某版本下所有会计科目 -->
  <update id="updateByPkSubjscheme" parameterType="com.dhcc.finance.main.domain.CwBdSubjscheme">
    update cw_bd_accsubj
    set 
      USE_STATE = '0',
      UPDATE_USER = #{updateUser,jdbcType=VARCHAR},
      UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP}
    where PK_SUBJSCHEME = #{pkSubjscheme,jdbcType=VARCHAR}
  </update>
  <!-- 会计科目复制 -->
  <insert id="insertCpCwBdAccsubj" parameterType="com.dhcc.finance.main.model.CwBdSubjschemeAdd">
    insert into cw_bd_accsubj (PK_ACCSUBJ, PK_SUBJSCHEME, SUBJCODE, SUBJNAME, SUBJLEV, DISPNAME, RULE, PK_SUBJTYPE, 
    BALANORIENT, BALANFLAG, ICURFLAG, CURRENCY, AUXFLAG, PARENTID, FINALSTAGE, UNITS, 
    ENABLESTATE, USE_STATE, CREATE_USER, CREATE_TIME, UPDATE_USER, UPDATE_TIME, REMARK)
    select  MD5(uuid()) as PK_ACCSUBJ,#{pkSubjscheme,jdbcType=VARCHAR} as PK_SUBJSCHEME, SUBJCODE, 
      SUBJNAME, SUBJLEV, DISPNAME, 
      RULE, PK_SUBJTYPE, BALANORIENT, 
      BALANFLAG, ICURFLAG, CURRENCY, 
      AUXFLAG, PARENTID, FINALSTAGE, 
      UNITS, ENABLESTATE, USE_STATE, 
      #{createUser,jdbcType=VARCHAR} as CREATE_USER,
      #{createTime,jdbcType=TIMESTAMP} as CREATE_TIME,
      UPDATE_USER, UPDATE_TIME, REMARK
      from cw_bd_accsubj where PK_SUBJSCHEME= #{choosesubject,jdbcType=VARCHAR} and USE_STATE='1'
  </insert>
  <!-- 查询现在正启用的版本下的所有科目 -->
  <select id="selectNowUseCwBdAccsubj"  resultMap="BaseResultMap">
    select <include refid="Base_Column_List" />
    from  CW_BD_ACCSUBJ    
    where PK_SUBJSCHEME= (select  PK_SUBJSCHEME from  cw_bd_subjscheme b  where  b.ENABLESTATE='1'  and b.USE_STATE='1')
      and USE_STATE='1'
  </select>
  
  <!--  查询全部会计科目及其相关联的全部会计科目辅助信息-->
  <!-- <select id="selectAllAccassAndAccsubj" parameterType="java.lang.String" resultMap="BaseResultMap2">
   select 
  <include refid="Ex_Base_Column_List" />,
  <include refid="Ex_Base_Column_List2" />
   from   cw_bd_accsubj a
  		left join   ( select <include refid="Ex_Base_Column_List2" /> from cw_bd_accass b where  b.SYZT='1') b 
  		on  a.PK_ACCSUBJ=b.PK_ACCSUBJ 
   where a.PK_SUBJSCHEME= #{pkSubjscheme,jdbcType=VARCHAR} 
         and a.SYZT='1'
  </select> -->
  <!-- 复制完毕后刷新科目父节点 -->
  <update id="updateParentid" parameterType="com.dhcc.finance.main.model.CwBdSubjschemeAdd">
    update CW_BD_ACCSUBJ m 
	inner join
	(	select a.PK_ACCSUBJ ,temp.ONE_PK_ACCSUBJ    from CW_BD_ACCSUBJ a
		inner join (    
		select   b.PK_ACCSUBJ  ONE_PK_ACCSUBJ ,c.SUBJCODE  OLD_SUBJCODE  from  
		CW_BD_ACCSUBJ b 
		inner join CW_BD_ACCSUBJ c on  b.PARENTID = c.PK_ACCSUBJ and c.PK_SUBJSCHEME =#{choosesubject,jdbcType=VARCHAR} AND c.USE_STATE='1'
		where b.PK_SUBJSCHEME =#{pkSubjscheme,jdbcType=VARCHAR} AND  b.USE_STATE='1'
		)temp
		on a.SUBJCODE=temp.OLD_SUBJCODE
		where a.PK_SUBJSCHEME =#{pkSubjscheme,jdbcType=VARCHAR} and a.USE_STATE='1'
	) n 
	on  m.PK_ACCSUBJ=n.ONE_PK_ACCSUBJ
	set  m.PARENTID=n.PK_ACCSUBJ
	where m.PK_SUBJSCHEME =#{pkSubjscheme,jdbcType=VARCHAR} and m.USE_STATE='1'
  </update>
<!--   根据subjcode去查询信息 -->
  <select id="selectCwBdAccsubjBySubcode" resultMap="BaseResultMap">
  	select <include refid="Base_Column_List" />
    from  CW_BD_ACCSUBJ   where SUBJCODE = #{subjcode,jdbcType=VARCHAR} and USE_STATE='1' and 
    PK_SUBJSCHEME =#{pkSubjscheme,jdbcType=VARCHAR}
  </select>
 <!--   查询科目下凭证的数量 -->
  <select  id="selectIsExistsSubForVoucher" parameterType="java.lang.String" resultType="java.lang.Long">
  	  select count(*) from cw_bd_accsubj as a where  SUBJCODE
       in (select distinct SUBJCODE from (select  * from cw_gl_detail as b where  b. PK_VOUCHER 
        in(select PK_VOUCHER from cw_gl_voucher as  c where c.USE_STATE='1')and b. USE_STATE='1')g
       where g.USE_STATE='1') and PK_ACCSUBJ=#{pkAccsubj,jdbcType=VARCHAR} and a.USE_STATE='1'
  </select>
<!--    查询科目的子级科目 -->
  <select id="selectParentSubject" parameterType="java.lang.String" resultType="java.lang.String">
  select  PK_ACCSUBJ from CW_BD_ACCSUBJ a  where a.PK_SUBJSCHEME= #{pkSubjscheme,jdbcType=VARCHAR} 
	and a.PK_ACCSUBJ=#{pkSrcaccsubj,jdbcType=VARCHAR} 
	union 
	select PK_ACCSUBJ from (
      select t1.PK_ACCSUBJ,if(find_in_set(PARENTID, CONVERT(@pids USING utf8) COLLATE utf8_unicode_ci) > 0, @pids := concat(@pids, ',', PK_ACCSUBJ), '0') as ischild
            from (
                 select PK_ACCSUBJ,PARENTID from CW_BD_ACCSUBJ t where t.PK_SUBJSCHEME= #{pkSubjscheme,jdbcType=VARCHAR}    
                 and t.USE_STATE = '1' order by SUBJCODE,PARENTID
                  ) t1,
                 (select @pids := #{pkSrcaccsubj,jdbcType=VARCHAR}  ) t2
	) t3 where ischild != '0'
  </select>
</mapper>