<?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.srs.comprehensive.mapper.CphGoodApplyMapper">

    <resultMap type="CphGoodApply" id="CphGoodApplyResult">
        <result property="id"    column="id"    />
        <result property="stuNo"    column="stu_no"    />
        <result property="zzmm"    column="zzmm"    />
        <result property="bornTime"    column="born_time"    />
        <result property="typeCode"    column="type_code"    />
        <result property="classPost"    column="class_post"    />
        <result property="bankCard"    column="bank_card"    />
        <result property="bankAddr"    column="bank_addr"    />
        <result property="goodHis"    column="good_his"    />
        <result property="mainHis"    column="main_his"    />
        <result property="courseScore"    column="course_score"    />
        <result property="applyStatus"    column="apply_status"    />
        <result property="applyTime"    column="apply_time"    />
        <result property="status"    column="status"    />
        <result property="delFlag"    column="del_flag"    />
        <result property="createBy"    column="create_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
        <result property="material"    column="material"    />
        <result property="classtwoSure"    column="classtwo_sure"    />
        <result property="youthPercent"    column="youth_percent"    />
    </resultMap>

    <sql id="selectCphGoodApplyVo">
        select id, stu_no, zzmm, born_time, type_code, class_post,material,classtwo_sure,youth_percent, bank_card, bank_addr,
               good_his, main_his, course_score, apply_status, apply_time, status, del_flag, create_by, create_time,
               update_by, update_time from cph_good_apply
    </sql>

    <select id="selectCphGoodApplyList" parameterType="CphGoodApply" resultMap="CphGoodApplyResult">
        <include refid="selectCphGoodApplyVo"/>
        <where>
            <if test="stuNo != null  and stuNo != ''"> and stu_no = #{stuNo}</if>
            <if test="zzmm != null  and zzmm != ''"> and zzmm = #{zzmm}</if>
            <if test="bornTime != null  and bornTime != ''"> and born_time = #{bornTime}</if>
            <if test="typeCode != null  and typeCode != ''"> and type_code = #{typeCode}</if>
            <if test="classPost != null  and classPost != ''"> and class_post = #{classPost}</if>
            <if test="bankCard != null  and bankCard != ''"> and bank_card = #{bankCard}</if>
            <if test="bankAddr != null  and bankAddr != ''"> and bank_addr = #{bankAddr}</if>
            <if test="goodHis != null  and goodHis != ''"> and good_his = #{goodHis}</if>
            <if test="mainHis != null  and mainHis != ''"> and main_his = #{mainHis}</if>
            <if test="courseScore != null  and courseScore != ''"> and course_score = #{courseScore}</if>
            <if test="applyStatus != null  and applyStatus != ''"> and apply_status = #{applyStatus}</if>
            <if test="applyTime != null "> and apply_time = #{applyTime}</if>
            <if test="status != null  and status != ''"> and status = #{status}</if>
            <if test="material != null  and material != ''"> and material = #{material}</if>
            <if test="classtwoSure != null  and classtwoSure != ''"> and classtwo_sure = #{classtwoSure}</if>
            <if test="youthPercent != null  and youthPercent != ''"> and youth_percent = #{youthPercent}</if>
        </where>
    </select>

    <select id="listTermByYear" resultType="CphTerm" parameterType="Long">
        SELECT * from cph_term
        where stu_year_id = #{id}
    </select>

    <select id="listOwnScoreClassRank" resultType="com.srs.comprehensive.domain.Vo.CphClassRankScore">
        select t2.* ,sc.class_name,
               (select count(1) from srs_student where `status` = '01' and class_id = sc.class_id) as class_count,
               (select count(1) from srs_student as f1
                left join srs_class as f2 on f1.class_id = f2.class_id
                where f1.`status` = '01' and f2.major_id = sc.major_id and f2.grade_id = sc.grade_id) as major_count
        from
            (select t1.* from (
                select a.stu_no,a.stu_year_id,b.stu_year_name,a.stu_score,a.cph_score,a.sport_score,
                RANK() OVER(PARTITION BY c.class_id,a.stu_year_id,d.grade_id ORDER BY a.cph_score DESC ) as cph_class_rank,
                RANK() OVER(PARTITION BY c.class_id,a.stu_year_id,d.grade_id ORDER BY a.stu_score DESC ) as stu_class_rank,
                RANK() OVER(PARTITION BY d.major_id,a.stu_year_id,d.grade_id ORDER BY a.stu_score DESC ) as stu_major_rank
                from cph_total_score as a
                left join srs_stu_year as b on a.stu_year_id = b.id
                left join srs_student as c on a.stu_no = c.stu_no
                left join srs_class as d on c.class_id = d.class_id
                )as t1
            where t1.stu_no = #{stuNo} and t1.stu_year_id in (
                select id from srs_stu_year as b where b.`status` = 1
                )
            )as t2
            left join srs_student as ss on t2.stu_no = ss.stu_no
            left join srs_class as sc on ss.class_id = sc.class_id
    </select>

    <select id="listOwnYearCourseScore" resultType="CphCourseNameScore">
        select a.cj as course_score,b.course_name,c.term_name,d.stu_year_name,a.is_pass,sci.exam_method,a.fzlx
        from cph_stu_score_middle as a
                 left join srs_course_info as b on a.kcdm = b.course_no
                 left join cph_term as c on a.xqdm = c.term_code
                 left join srs_stu_year as d on c.stu_year_id = d.id
                 left join srs_course_info as sci on sci.course_no=a.kcdm
        where a.stu_no = #{stuNo}
        ORDER BY c.term_name
    </select>

    <select id="countOwnPass" resultType="CphCoursePassCount">
        select count(a.is_pass) as course_count,sum(case when a.is_pass='true' then 1 else 0 end ) as pass_count,
               sum(case when a.is_pass='false' then 1 else 0 end ) as unpass_count , b.stu_year_name
        from cph_stu_score_middle as a
        left join srs_stu_year as b on a.xndm = b.xndm
        where a.stu_no = #{stuNo}
        GROUP BY b.id
    </select>

    <select id="countOwnIam" resultType="CphIamSitCount">
        select d.stu_year_name,
               count(1) as iam_count,
               sum(case when c.max_score > 0 then 1 else 0 end ) as add_count,
               sum(case when c.max_score &lt; 0 then 1 else 0 end ) as minus_count
        from cph_iam as a
                 left join srs_student as b on a.to_add = b.stu_id
                 left join cph_rules as c on a.rule_id = c.rule_id
                 left join srs_stu_year as d on a.stu_year_id = d.id
        where b.stu_no = #{stuNo} and a.audit_status = 6
        GROUP BY a.stu_year_id
    </select>

    <select id="getOwnPassCountByCode" resultType="CphCoursePassCount">
        select count(a.is_pass) as course_count,sum(case when a.is_pass='1' then 1 else 0 end ) as pass_count,
               sum(case when a.is_pass='0' then 1 else 0 end ) as unpass_count , b.stu_year_name
        from cph_stu_score_middle as a
        left join srs_stu_year as b on a.xndm = b.xndm
        where a.stu_no = #{stuNo} and a.xndm = (select t2.xndm from cph_own_good_type as t1
            left join srs_stu_year as t2 on t1.stu_year_id = t2.id where t1.type_code = #{code})
        GROUP BY b.id
    </select>

    <select id="getOwnIamCountByCode" resultType="CphIamSitCount">
        select d.stu_year_name,
        count(1) as iam_count,
        sum(case when c.max_score > 0 then 1 else 0 end ) as add_count,
        sum(case when c.max_score &lt; 0 then 1 else 0 end ) as minus_count
        from cph_iam as a
        left join srs_student as b on a.to_add = b.stu_id
        left join cph_rules as c on a.rule_id = c.rule_id
        left join srs_stu_year as d on a.stu_year_id = d.id
        where b.stu_no = #{stuNo} and a.audit_status = 6
        and a.stu_year_id = (select stu_year_id from cph_own_good_type as t where t.type_code = #{code})
        GROUP BY a.stu_year_id
    </select>

    <select id="listOwnXyjxjApply" resultType="com.srs.comprehensive.domain.Vo.CphGoodApplyVo">
        select a.* ,b.type_name,c.fdy_comment,c.dept_comment,c.final_comment
        from cph_good_apply as a
        left join cph_own_good_type as b on a.type_code = b.type_code
        left join cph_good_audit as c on a.id = c.apply_id
        where a.stu_no = #{stuNo} and b.parent_code = "XYJXJ"
        ORDER BY create_time DESC
    </select>

    <select id="listFdyAudit" resultType="CphGoodAuditFdyVo" parameterType="CphSearch">
        select c.stu_no,c.`name` as stu_name,d.class_name,b.apply_status,f.type_name,a.*
        from cph_good_audit as a
                 left join cph_good_apply as b on a.apply_id = b.id
                 left join srs_student as c on b.stu_no = c.stu_no
                 left join srs_class as d on c.class_id = d.class_id
                 left join cph_teacher as e on d.teacher_id = e.teacher_id
                 left join cph_own_good_type as f on b.type_code = f.type_code
        <where>
            e.employee_id = #{tNo}
            <if test="status != null  and status != ''"> and b.apply_status = #{status}</if>
            <if test="code != null  and code != ''"> and f.type_code like concat('%', #{code}, '%')</if>
            <if test="stuNo != null  and stuNo != ''"> and c.stu_no = #{stuNo}</if>
            <if test="stuName != null  and stuName != ''"> and c.`name` = #{stuName}</if>
        </where>
        ORDER BY fdy_status asc,id desc
    </select>

    <select id="listXwAudit" resultType="CphGoodAuditFdyVo" parameterType="CphSearch">
        select b.apply_status,c.stu_no,c.`name` as stu_name,d.class_name,f.type_name,a.*,e.major_id,e.major_name,e.major_type_name,
               d.class_name
        from cph_good_audit as a
                 left join cph_good_apply as b on a.apply_id = b.id
                 left join srs_student as c on b.stu_no = c.stu_no
                 left join srs_class as d on c.class_id = d.class_id
                 left join cph_own_good_type as f on b.type_code = f.type_code
                 left join srs_majors as e on d.major_id = e.major_id
        <where>
            <if test="deptId != null  and deptId != ''"> and  e.college_id = #{deptId}</if>
            <if test="majorId != null  and majorId != ''"> and  d.major_id = #{majorId}</if>
            <if test="classId != null  and classId != ''"> and  c.class_id = #{classId}</if>
            <if test="status != null  and status != ''"> and  b.apply_status = #{status}</if>
            <if test="stuNo != null  and stuNo != ''"> and c.stu_no = #{stuNo}</if>
            <if test="stuName != null  and stuName != ''"> and c.`name` = #{stuName}</if>
            <if test="code != null  and code != ''"> and f.type_code like concat('%', #{code}, '%')</if>
        </where>
        ORDER BY id desc
    </select>

    <select id="importYxbg" resultType="CphGoodApplyVo" parameterType="CphSearch">
        select d.stu_year_name,e.class_name,a.stu_no,b.`name` as stu_name,c.type_name,NOW() as import_time,f.major_type_name,
        f.major_name,g.dept_name,
        case
        when a.apply_status = 1 then '已提交待辅导员审核'
        when a.apply_status = 6 then '学工审核通过'
        when a.apply_status = 10 then '驳回'
        when a.apply_status = 12 then '作废'
        when a.apply_status = 11 then '拒绝'
        when a.apply_status = 2 then '辅导员审核通过'
        when a.apply_status = 3 then '学院审核通过'
        else '无状态' end as apply_status,
        h.`name` as teacherName

        from cph_good_apply as a
        left join srs_student as b on a.stu_no = b.stu_no
        left join cph_own_good_type as c on a.type_code = c.type_code
        left join srs_stu_year as d on c.stu_year_id = d.id
        left join srs_class as e on b.class_id = e.class_id
        left join srs_majors as f on e.major_id = f.major_id
        left join sys_dept as g on f.college_id = g.dept_id
        left join cph_teacher as h on e.teacher_id = h.teacher_id
        <where>
            c.type_code like "%YXXSGB%" and a.apply_status not in (14)
            <if test="stuYearId != null  and stuYearId != ''"> and d.id = #{stuYearId}</if>
            <if test="deptId != null  and deptId != ''"> and g.dept_id = #{deptId}</if>
            <if test="majorId != null  and majorId != ''"> and f.major_id = #{majorId}</if>
            <if test="classId != null  and classId != ''"> and e.class_id = #{classId}</if>
            <if test="tNo != null  and tNo != ''"> and h.employee_id = #{tNo}</if>
        </where>
    </select>

    <select id="importShxs" resultType="CphGoodApplyVo" parameterType="CphSearch">
        select d.stu_year_name,e.class_name,a.stu_no,b.`name` as stu_name,c.type_name,NOW() as import_time,f.major_type_name,
               f.major_name,g.dept_name,
        case
        when a.apply_status = 1 then '已提交待辅导员审核'
        when a.apply_status = 6 then '学工审核通过'
        when a.apply_status = 10 then '驳回'
        when a.apply_status = 11 then '拒绝'
        when a.apply_status = 12 then '作废'
        when a.apply_status = 2 then '辅导员审核通过'
        when a.apply_status = 3 then '学院审核通过'
        else '无状态' end as apply_status,
        h.`name` as teacherName

        from cph_good_apply as a
        left join srs_student as b on a.stu_no = b.stu_no
        left join cph_own_good_type as c on a.type_code = c.type_code
        left join srs_stu_year as d on c.stu_year_id = d.id
        left join srs_class as e on b.class_id = e.class_id
        left join srs_majors as f on e.major_id = f.major_id
        left join sys_dept as g on f.college_id = g.dept_id
        left join cph_teacher as h on e.teacher_id = h.teacher_id
        <where>
            c.type_code like "%SHXS%" and a.apply_status not in (14)
            <if test="stuYearId != null  and stuYearId != ''"> and d.id = #{stuYearId}</if>
            <if test="deptId != null  and deptId != ''"> and g.dept_id = #{deptId}</if>
            <if test="majorId != null  and majorId != ''"> and f.major_id = #{majorId}</if>
            <if test="classId != null  and classId != ''"> and e.class_id = #{classId}</if>
            <if test="tNo != null  and tNo != ''"> and h.employee_id = #{tNo}</if>
        </where>
    </select>

    <select id="importXyjxj" resultType="CphGoodApplyVo" parameterType="CphSearch">
        select d.stu_year_name,e.class_name,a.stu_no,b.`name` as stu_name,c.type_name,a.bank_card,a.bank_addr,NOW() as import_time,f.major_type_name,
        f.major_name,g.dept_name,
        case
        when a.apply_status = 1 then '已提交待辅导员审核'
        when a.apply_status = 6 then '学工审核通过'
        when a.apply_status = 10 then '驳回'
        when a.apply_status = 11 then '拒绝'
        when a.apply_status = 12 then '作废'
        when a.apply_status = 2 then '辅导员审核通过'
        when a.apply_status = 3 then '学院审核通过'
        else '无状态' end as apply_status,
        h.`name` as teacherName

        from cph_good_apply as a
        left join srs_student as b on a.stu_no = b.stu_no
        left join cph_own_good_type as c on a.type_code = c.type_code
        left join srs_stu_year as d on c.stu_year_id = d.id
        left join srs_class as e on b.class_id = e.class_id
        left join srs_majors as f on e.major_id = f.major_id
        left join sys_dept as g on f.college_id = g.dept_id
        left join cph_teacher as h on e.teacher_id = h.teacher_id
        <where>
            c.parent_code = "XYJXJ" and a.apply_status not in (14)
            <if test="stuYearId != null  and stuYearId != ''"> and d.id = #{stuYearId}</if>
            <if test="deptId != null  and deptId != ''"> and g.dept_id = #{deptId}</if>
            <if test="majorId != null  and majorId != ''"> and f.major_id = #{majorId}</if>
            <if test="classId != null  and classId != ''"> and e.class_id = #{classId}</if>
            <if test="tNo != null  and tNo != ''"> and h.employee_id = #{tNo}</if>
        </where>

    </select>


    <select id="listXyjxjCanType" resultType="com.srs.comprehensive.domain.Vo.CphGoodTypeCode">
        select concat(b.stu_year_name,a.type_name) as type_name , a.type_code,a.stu_year_id
        from cph_own_good_type as a
        left join srs_stu_year as b on a.stu_year_id = b.id
        where a.parent_code = 'XYJXJ' and enable_status = 1 and start_status = 1
    </select>

    <select id="selectByOnlyCodeStuNo" resultType="CphGoodApply">
        SELECT a.*
        from cph_good_apply as a
                 left join cph_own_good_type as b on a.type_code = b.type_code
        where a.stu_no = #{stuNo} and b.only_code = #{code} and a.apply_status not in (11,12,14)
    </select>


    <select id="lookDetail" parameterType="Long" resultType="CphGoodApplyVo">
        select a.*,b.fdy_comment,b.fdy_time,f.nick_name as fdy_no_name,b.fdy_status,
               b.dept_comment,b.dept_time,g.nick_name as dept_no_name,b.dept_status,
               b.final_comment,b.final_time,h.nick_name as final_no_name,b.final_status,
               c.type_name,d.`name` as stuName,e.class_name,b.id as audit_id
        from cph_good_apply as a
                 left join cph_good_audit as b on a.id = b.apply_id
                 left join cph_own_good_type as c on a.type_code = c.type_code
                 left join srs_student as d on a.stu_no = d.stu_no
                 left join srs_class as e on d.class_id = e.class_id
                 left join sys_user as f on b.fdy_no = f.user_name
                 left join sys_user as g on b.dept_no = g.user_name
                 left join sys_user as h on b.final_no = h.user_name
        where a.id = #{id}
    </select>


    <select id="selectCphGoodApplyById" parameterType="Long" resultMap="CphGoodApplyResult">
        <include refid="selectCphGoodApplyVo"/>
        where id = #{id}
    </select>
    <select id="getGrades" resultType="java.util.Map" parameterType="CphGoodApply">
        SELECT cph_good_apply.id as applyId,cph_good_apply.stu_no as stuNo,cph_good_apply.zzmm,cph_good_apply.born_time as bornTime
             ,cph_good_apply.type_code as typeCode,cph_good_apply.class_post as classPost,
              cph_good_apply.good_his as goodHis,cph_good_apply.main_his as mainHis
             ,cph_good_apply.material,cph_good_apply.apply_status as applyStatus,cph_good_apply.apply_time as applyTime,
              cph_good_audit.*,cph_own_good_type.type_name as typeName,cph_own_good_type.stu_year_id as stuYearId
                ,cph_good_audit.fdy_comment as fdyComment,cph_good_audit.dept_comment as deptComment,cph_good_audit.final_comment as finalComment
                ,cph_good_apply.classtwo_sure as classtwoSure,cph_good_apply.youth_percent as youthPercent
              from cph_good_apply
                 LEFT JOIN cph_good_audit ON cph_good_apply.id = cph_good_audit.apply_id
                left join cph_own_good_type on cph_good_apply.type_code=cph_own_good_type.type_code
        where stu_no = #{stuNo}
          and cph_good_apply.type_code like '%SHXS%'
        order by cph_good_apply.id desc
    </select>
    <select id="getMyApply" resultType="com.srs.comprehensive.domain.Vo.ApplyYxgbVo">
	    select cpa.id, cpa.zzmm,cpa.class_post,stu_no, cpa.type_code, type_name, stu_year_name, apply_time,cpa.youth_percent,cpa.classtwo_sure,cpa.good_his,cpa.main_his, cpa.apply_status AS `status`,fdy_comment,dept_comment,final_comment
	    from cph_good_apply cpa
		         left join cph_good_audit cga on cpa.id = cga.apply_id
		         left join cph_own_good_type cogt on cpa.type_code = cogt.type_code
		         left join srs_stu_year ssy on cogt.stu_year_id = ssy.id
	    where stu_no = #{username}
		  and cpa.type_code like '%YXXSGB%'
        order by cpa.id desc
    </select>

    <select id="getOwnRankByCode" parameterType="CphSearch" resultType="CphClassRankScore">
        select t2.* ,sc.class_name,
               (select count(1) from srs_student where `status` = '01' and class_id = sc.class_id) as class_count,
               (select count(1) from srs_student as f1
                left join srs_class as f2 on f1.class_id = f2.class_id
                where f1.`status` = '01' and f2.major_id = sc.major_id and f2.grade_id = sc.grade_id) as major_count
        from
            (select t1.* from (
                select a.stu_no,a.stu_year_id,b.stu_year_name,a.stu_score,a.cph_score,a.sport_score,
                    RANK() OVER(PARTITION BY c.class_id,a.stu_year_id,d.grade_id ORDER BY a.cph_score DESC ) as cph_class_rank,
                    RANK() OVER(PARTITION BY c.class_id,a.stu_year_id,d.grade_id ORDER BY a.stu_score DESC ) as stu_class_rank,
                    RANK() OVER(PARTITION BY d.major_id,a.stu_year_id,d.grade_id ORDER BY a.stu_score DESC ) as stu_major_rank
                    from cph_total_score as a
                            left join srs_stu_year as b on a.stu_year_id = b.id
                            left join srs_student as c on a.stu_no = c.stu_no
                            left join srs_class as d on c.class_id = d.class_id
            )as t1
            where t1.stu_no = #{stuNo}
            and t1.stu_year_id = (
                 select stu_year_id from cph_own_good_type where type_code = #{code}
             ))as t2
                left join srs_student as ss on t2.stu_no = ss.stu_no
                left join srs_class as sc on ss.class_id = sc.class_id
    </select>


    <insert id="insertCphGoodApply" parameterType="CphGoodApply" useGeneratedKeys="true" keyProperty="id">
        insert into cph_good_apply
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="stuNo != null">stu_no,</if>
            <if test="zzmm != null">zzmm,</if>
            <if test="bornTime != null">born_time,</if>
            <if test="typeCode != null">type_code,</if>
            <if test="classPost != null">class_post,</if>
            <if test="bankCard != null">bank_card,</if>
            <if test="bankAddr != null">bank_addr,</if>
            <if test="goodHis != null">good_his,</if>
            <if test="mainHis != null">main_his,</if>
            <if test="courseScore != null">course_score,</if>
            <if test="applyStatus != null">apply_status,</if>
            <if test="applyTime != null">apply_time,</if>
            <if test="status != null">status,</if>
            <if test="delFlag != null and delFlag != ''">del_flag,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="material != null">material,</if>
            <if test="classtwoSure != null">classtwo_sure,</if>
            <if test="youthPercent != null">youth_percent,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="stuNo != null">#{stuNo},</if>
            <if test="zzmm != null">#{zzmm},</if>
            <if test="bornTime != null">#{bornTime},</if>
            <if test="typeCode != null">#{typeCode},</if>
            <if test="classPost != null">#{classPost},</if>
            <if test="bankCard != null">#{bankCard},</if>
            <if test="bankAddr != null">#{bankAddr},</if>
            <if test="goodHis != null">#{goodHis},</if>
            <if test="mainHis != null">#{mainHis},</if>
            <if test="courseScore != null">#{courseScore},</if>
            <if test="applyStatus != null">#{applyStatus},</if>
            <if test="applyTime != null">#{applyTime},</if>
            <if test="status != null">#{status},</if>
            <if test="delFlag != null and delFlag != ''">#{delFlag},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
            <if test="material != null">#{material},</if>
            <if test="classtwoSure != null">#{classtwoSure},</if>
            <if test="youthPercent != null">#{youthPercent},</if>
         </trim>
    </insert>

    <update id="updateCphGoodApply" parameterType="CphGoodApply">
        update cph_good_apply
        <trim prefix="SET" suffixOverrides=",">
            <if test="stuNo != null">stu_no = #{stuNo},</if>
            <if test="zzmm != null">zzmm = #{zzmm},</if>
            <if test="bornTime != null">born_time = #{bornTime},</if>
            <if test="typeCode != null">type_code = #{typeCode},</if>
            <if test="classPost != null">class_post = #{classPost},</if>
            <if test="bankCard != null">bank_card = #{bankCard},</if>
            <if test="bankAddr != null">bank_addr = #{bankAddr},</if>
            <if test="goodHis != null">good_his = #{goodHis},</if>
            <if test="mainHis != null">main_his = #{mainHis},</if>
            <if test="courseScore != null">course_score = #{courseScore},</if>
            <if test="applyStatus != null">apply_status = #{applyStatus},</if>
            <if test="applyTime != null">apply_time = #{applyTime},</if>
            <if test="status != null">status = #{status},</if>
            <if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="material != null">material = #{material},</if>
            <if test="classtwoSure != null">classtwo_sure = #{classtwoSure},</if>
            <if test="youthPercent != null">youth_percent = #{youthPercent},</if>
        </trim>
        where id = #{id}
    </update>

    <delete id="deleteCphGoodApplyById" parameterType="Long">
        delete from cph_good_apply where id = #{id}
    </delete>

    <delete id="deleteCphGoodApplyByIds" parameterType="String">
        delete from cph_good_apply where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>

     <select id="countJwcUnDo" resultType="String">
        select concat('good-',count(a.id)) as `all`
        from cph_good_apply as a
        where a.apply_status = 3
        union
        select concat('lake-',count(a.id)) as `all`
        from cph_lake_apply as a
        where a.apply_status = 3
        union
        select concat('biye-',count(a.id)) as `all`
        from cph_biye_apply as a
        where a.apply_status = 3
        union
        select concat('dms-',count(a.id)) as `all`
        from dms_manage_application as a
        where a.`status` = 2
        union
        select concat('kn-',count(a.id)) as `all`
        from srs_knrd_apply as a
        where a.`step` = 4
        union
        select concat('zx-',count(a.id)) as `all`
        from srs_zxj_apply as a
        where a.`step` = 3
    </select>

    <select id="countStuUnDo" resultType="String" parameterType="String">
        select concat('good-',count(a.id)) as `all`
        from cph_good_apply as a
        where a.apply_status = 6 and a.stu_no = #{stuNo}
        union
        select concat('lake-',count(a.id)) as `all`
        from cph_lake_apply as a
        where a.apply_status = 6 and a.stu_no = #{stuNo}
        union
        select concat('biye-',count(a.id)) as `all`
        from cph_biye_apply as a
        where a.apply_status = 6 and a.stu_no = #{stuNo}
        union
        select concat('dms-',count(a.id)) as `all`
        from dms_manage_application as a
        where a.`status` = 3 and a.stu_no = #{stuNo}
        union
        select concat('kn-',count(a.id)) as `all`
        from srs_knrd_apply as a
        where a.`step` = 5 and a.xh = #{stuNo}
        union
        select concat('zx-',count(a.id)) as `all`
        from srs_zxj_apply as a
        where a.`step` = 4 and a.xh = #{stuNo}
    </select>


    <select id="countXwUnDo" resultType="String" parameterType="Long">
        select concat('good-',count(a.id)) as `all`
        from cph_good_apply as a
                 left join view_stu_info as b on a.stu_no = b.stu_no
        where a.apply_status = 2 and b.dept_id = #{id}
        union
        select concat('lake-',count(a.id)) as `all`
        from cph_lake_apply as a
                 left join view_stu_info as b on a.stu_no = b.stu_no
        where a.apply_status = 2 and b.dept_id = #{id}
        union
        select concat('biye-',count(a.id)) as `all`
        from cph_biye_apply as a
                 left join view_stu_info as b on a.stu_no = b.stu_no
        where a.apply_status = 2 and b.dept_id = #{id}
        union
        select concat('dms-',count(a.id)) as `all`
        from dms_manage_application as a
                 left join view_stu_info as b on a.stu_no = b.stu_no
        where a.`status` = 1 and b.dept_id = #{id}
        union
        select concat('kn-',count(a.id)) as `all`
        from srs_knrd_apply as a
                 left join view_stu_info as b on a.xh = b.stu_no
        where a.`step` = 3 and b.dept_id = #{id}
          and
            EXISTS(
                    SELECT m.*  FROM sys_role r
                                         LEFT JOIN sys_role_menu rm on r.role_id = rm.role_id
                                         LEFT JOIN sys_menu m on rm.menu_id = m.menu_id
                    where r.role_key ='stumanger' and m.component = 'poverty/povertyapply/xw'
            )
        union
        select concat('zx-',count(a.id)) as `all`
        from srs_zxj_apply as a
                 left join view_stu_info as b on a.xh = b.stu_no
        where a.`step` = 2 and b.dept_id = #{id}
          and
            EXISTS(
                    SELECT m.*  FROM sys_role r
                                         LEFT JOIN sys_role_menu rm on r.role_id = rm.role_id
                                         LEFT JOIN sys_menu m on rm.menu_id = m.menu_id
                    where r.role_key ='stumanger' and m.component = 'poverty/xw'
                )
    </select>

    <select id="countFdyUnDo" resultType="String" parameterType="String">
        select concat('good-',count(a.id)) as `all`
        from cph_good_apply as a
                 left join view_stu_info as b on a.stu_no = b.stu_no
        where a.apply_status = 1 and b.t_no = #{tNo}
        union
        select concat('lake-',count(a.id)) as `all`
        from cph_lake_apply as a
                 left join view_stu_info as b on a.stu_no = b.stu_no
        where a.apply_status = 1 and b.t_no = #{tNo}
        union
        select concat('biye-',count(a.id)) as `all`
        from cph_biye_apply as a
                 left join view_stu_info as b on a.stu_no = b.stu_no
        where a.apply_status = 1 and b.t_no = #{tNo}
        union
        select concat('dms-',count(a.id)) as `all`
        from dms_manage_application as a
                 left join view_stu_info as b on a.stu_no = b.stu_no
        where a.`status` = 0 and b.t_no = #{tNo}
        union
        select concat('kn-',count(a.id)) as `all`
        from srs_knrd_apply as a
                 left join view_stu_info as b on a.xh = b.stu_no
        where a.`step` = 2 and b.t_no = #{tNo}
        union
        select concat('zx-',count(a.id)) as `all`
        from srs_zxj_apply as a
                 left join view_stu_info as b on a.xh = b.stu_no
        where a.`step` = 1 and b.t_no = #{tNo}
        union
        select concat('qgzxgw-',count(a.id)) as `all`
        from qgzx_stu_post as a
                 left join qgzx_post as b on a.post_id = b.id
                 left join sys_dept as c on b.dept_code = c.dept_code
                 left join view_stu_info as d on a.stu_no = d.stu_no
        where  b.zdls_no = #{tNo} and a.apply_status = '1'
        union
        select concat('qgzxgzjl-',count(a.id)) as `all`
        from qgzx_stu_post as a
                 left join qgzx_post as b on a.post_id = b.id
                 left join sys_dept as c on b.dept_code = c.dept_code
                 left join view_stu_info as d on a.stu_no = d.stu_no
        where  b.zdls_no = #{tNo} and a.apply_status = '1'
    </select>


    <select id="countBiyeYearDept" resultType="CphBiyeApplyVo">
        select count(a.id) as major_count,c.stu_year_name,b.dept_name
        from cph_biye_apply as a
                 left join view_stu_info as b on a.stu_no = b.stu_no
                 left join srs_stu_year as c on a.stu_year_id = c.id
        where a.apply_status = 6
        GROUP BY b.dept_id,c.id
    </select>
    <select id="countSjUnDo" resultType="String" parameterType="Long">
        select concat('sj-',count(a.application_id)) as `all`
        from rt_stu_disciplinary_application as a
                 left join view_stu_info as b on a.stu_no = b.stu_no
        where a.penalty_status=3 and b.dept_id = #{id}
          and
            EXISTS(
                    SELECT m.*  FROM sys_role r
                                         LEFT JOIN sys_role_menu rm on r.role_id = rm.role_id
                                         LEFT JOIN sys_menu m on rm.menu_id = m.menu_id
                    where r.role_key ='Junior_college_leader'
                )

    </select>

</mapper>
