<?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.zcloud.mapper.dsno3.eduStudy.ClassMapper">

    <!--表名 -->
    <sql id="tableName">
        BUS_CLASS
    </sql>

    <!--数据字典表名 -->
    <sql id="dicTableName">
        SYS_DICTIONARIES
    </sql>

    <!-- 字段 -->
    <sql id="Field">
        f
        .
        NAME
        ,
		f.ADMIN_DIVISION,
		f.START_TIME,
		f.END_TIME,
		f.PRINCIPAL,
		f.PRINCIPAL_PHONE,
		f.TRAINTYPE,
		f.POSTTYPE,
		f.INDUSTRY_END_ID,
		f.INDUSTRY_ALL_NAME,
		f.INDUSTRY_ALL_TYPE,
		f.TRAINLEVEL,
		f.TRAINERS_NUMBER,
		f.ISSUE,
		f.EXAM_TIME,
		f.ISCHECKPERIOD,
		f.CREATOR,
		f.CREATTIME,
		f.OPERATOR,
		f.OPERATTIME,
		f.ISDELETE,
		f.CORPINFO_ID,
		f.PROVINCE,
		f.CITY,
		f.COUNTY,
		f.VILLAGE,
		f.STREET,
		f.ISQUESTIONNAIRE,
		f.SAMPLINGNUMBER,
		f.CODE,
		f.STATE,
		f.SURVEY_ID,
		f.ENTERPRISE_ID,
		f.RECORDOR,
		f.ASSESSOR,
		f.SAFETYDEPTOR,
		f.ISFACE,
		f.EXAMINATION,
		f.NUMBEROFEXAMS,
		f.CLASS_ID,
        f.ISSTRENGTHEN,
        f.RELEASE_TYPE,
        f.PERSONNEL_TYPES
    </sql>

    <!-- 字段用于新增 -->
    <sql id="Field2">
        NAME
        ,
		ADMIN_DIVISION,
		START_TIME,
		END_TIME,
		PRINCIPAL,
		PRINCIPAL_PHONE,
		TRAINTYPE,
		POSTTYPE,
		INDUSTRY_END_ID,
		INDUSTRY_ALL_NAME,
		INDUSTRY_ALL_TYPE,
		TRAINLEVEL,
		TRAINERS_NUMBER,
		ISSUE,
		EXAM_TIME,
		ISCHECKPERIOD,
		CREATOR,
		CREATTIME,
		OPERATOR,
		OPERATTIME,
		ISDELETE,
		CORPINFO_ID,
		PROVINCE,
		CITY,
		COUNTY,
		VILLAGE,
		STREET,
		ISQUESTIONNAIRE,
		SAMPLINGNUMBER,
		CODE,
		STATE,
		SURVEY_ID,ENTERPRISE_ID,
		RECORDOR,
		ASSESSOR,
		SAFETYDEPTOR,
        NUMBEROFEXAMS,
        EXAMINATION,
		ISFACE,
		CLASS_ID,
        ISSTRENGTHEN,
        RELEASE_TYPE,
        PERSONNEL_TYPES
    </sql>

    <!-- 字段值 -->
    <sql id="FieldValue">
        #{NAME}
        ,
        #{ADMIN_DIVISION},
        #{START_TIME},
        #{END_TIME},
        #{PRINCIPAL},
        #{PRINCIPAL_PHONE},
        #{TRAINTYPE},
        #{POSTTYPE},
        #{INDUSTRY_END_ID},
        #{INDUSTRY_ALL_NAME},
        #{INDUSTRY_ALL_TYPE},
        #{TRAINLEVEL},
        #{TRAINERS_NUMBER},
        #{ISSUE},
        #{EXAM_TIME},
        #{ISCHECKPERIOD},
        #{CREATOR},
        #{CREATTIME},
        #{OPERATOR},
        #{OPERATTIME},
        #{ISDELETE},
        #{CORPINFO_ID},
        #{PROVINCE},
        #{CITY},
        #{COUNTY},
        #{VILLAGE},
        #{STREET},
        #{ISQUESTIONNAIRE},
        #{SAMPLINGNUMBER},
        #{CODE},
        #{STATE},
        #{SURVEY_ID},
        #{ENTERPRISE_ID},
        #{RECORDOR},
        #{ASSESSOR},
        #{SAFETYDEPTOR},
        #{NUMBEROFEXAMS},
        #{EXAMINATION},
        #{ISFACE},
        #{CLASS_ID},
        #{ISSTRENGTHEN},
        #{RELEASE_TYPE},
        #{PERSONNEL_TYPES}
    </sql>

    <!-- 新增-->
    <insert id="save" parameterType="pd">
        insert into
        <include refid="tableName"></include>
        (
        <include refid="Field2"></include>
        ) values (
        <include refid="FieldValue"></include>
        )
    </insert>

    <!-- 删除-->
    <delete id="delete" parameterType="pd">
        update
        <include refid="tableName"></include>
        set
        ISDELETE = '1',
        OPERATOR = #{OPERATOR},
        OPERATTIME = #{OPERATTIME}
        where
        CLASS_ID = #{CLASS_ID}
    </delete>
    <!-- 修改 -->
    <update id="editState" parameterType="pd">
        update
        <include refid="tableName"></include>
        set

        <if test="NEW_END_TIME != null and NEW_END_TIME != ''"><!-- 关键词检索 -->
            END_TIME = #{NEW_END_TIME},
        </if>
        STATE = #{STATE},
        OPERATOR = #{OPERATOR},
        OPERATTIME = #{OPERATTIME}
        where
        CLASS_ID = #{CLASS_ID}
    </update>

    <!-- 修改 -->
    <update id="edit" parameterType="pd">
        update
        <include refid="tableName"></include>
        set
        EXAMINATION = #{EXAMINATION},
        <if test="NAME != null and NAME != ''"><!-- 关键词检索 -->
            NAME = #{NAME},
        </if>
        <if test="ADMIN_DIVISION != null and ADMIN_DIVISION != ''"><!-- 关键词检索 -->
            ADMIN_DIVISION = #{ADMIN_DIVISION},
        </if>
        <if test="START_TIME != null and START_TIME != ''"><!-- 关键词检索 -->
            START_TIME = #{START_TIME},
        </if>
        <if test="END_TIME != null and END_TIME != ''"><!-- 关键词检索 -->
            END_TIME = #{END_TIME},
        </if>
        <if test="PRINCIPAL != null and PRINCIPAL != ''"><!-- 关键词检索 -->
            PRINCIPAL = #{PRINCIPAL},
        </if>
        <if test="PRINCIPAL_PHONE != null and PRINCIPAL_PHONE != ''"><!-- 关键词检索 -->
            PRINCIPAL_PHONE = #{PRINCIPAL_PHONE},
        </if>
        <if test="TRAINTYPE != null and TRAINTYPE != ''"><!-- 关键词检索 -->
            TRAINTYPE = #{TRAINTYPE},
        </if>
        <if test="POSTTYPE != null and POSTTYPE != ''"><!-- 关键词检索 -->
            POSTTYPE = #{POSTTYPE},
        </if>
        <if test="INDUSTRY_ALL_NAME != null and INDUSTRY_ALL_NAME != ''"><!-- 关键词检索 -->
            INDUSTRY_ALL_NAME = #{INDUSTRY_ALL_NAME},
        </if>
        <if test="TRAINLEVEL != null and TRAINLEVEL != ''"><!-- 关键词检索 -->
            TRAINLEVEL = #{TRAINLEVEL},
        </if>
        <if test="TRAINERS_NUMBER != null and TRAINERS_NUMBER != ''"><!-- 关键词检索 -->
            TRAINERS_NUMBER = #{TRAINERS_NUMBER},
        </if>

        <if test="ISSUE != null and ISSUE != ''"><!-- 关键词检索 -->
            ISSUE = #{ISSUE},
        </if>
        <if test="EXAM_TIME != null and EXAM_TIME != ''"><!-- 关键词检索 -->
            EXAM_TIME = #{EXAM_TIME},
        </if>
        <if test="ISCHECKPERIOD != null and ISCHECKPERIOD != ''"><!-- 关键词检索 -->
            ISCHECKPERIOD = #{ISCHECKPERIOD},
        </if>
        <if test="ISQUESTIONNAIRE != null and ISQUESTIONNAIRE != ''"><!-- 关键词检索 -->
            ISQUESTIONNAIRE = #{ISQUESTIONNAIRE},
        </if>
        <if test="SAMPLINGNUMBER != null and SAMPLINGNUMBER != ''"><!-- 关键词检索 -->
            SAMPLINGNUMBER = #{SAMPLINGNUMBER},
        </if>
        <if test="STATE != null and STATE != ''"><!-- 关键词检索 -->
            STATE = #{STATE},
        </if>
        <if test="OPERATOR != null and OPERATOR != ''"><!-- 关键词检索 -->
            OPERATOR = #{OPERATOR},
        </if>
        <if test="OPERATTIME != null and OPERATTIME != ''"><!-- 关键词检索 -->
            OPERATTIME = #{OPERATTIME},
        </if>
        <if test="SURVEY_ID != null and SURVEY_ID != ''"><!-- 关键词检索 -->
            SURVEY_ID = #{SURVEY_ID},
        </if>
        <if test="RECORDOR != null and RECORDOR != ''"><!-- 关键词检索 -->
            RECORDOR = #{RECORDOR},
        </if>
        <if test="ASSESSOR != null and ASSESSOR != ''"><!-- 关键词检索 -->
            ASSESSOR = #{ASSESSOR},
        </if>
        <if test="SAFETYDEPTOR != null and SAFETYDEPTOR != ''"><!-- 关键词检索 -->
            SAFETYDEPTOR = #{SAFETYDEPTOR},
        </if>
        <if test="ISFACE != null and ISFACE != ''"><!-- 关键词检索 -->
            ISFACE = #{ISFACE},
        </if>
        <if test="NUMBEROFEXAMS != null and NUMBEROFEXAMS != ''"><!-- 关键词检索 -->
            NUMBEROFEXAMS = #{NUMBEROFEXAMS},
        </if>
        <if test="ISSTRENGTHEN != null and ISSTRENGTHEN != ''"><!-- 关键词检索 -->
            ISSTRENGTHEN = #{ISSTRENGTHEN},
        </if>
        <if test="RELEASE_TYPE != null and RELEASE_TYPE != ''"><!-- 关键词检索 -->
            RELEASE_TYPE = #{RELEASE_TYPE},
        </if>
        <if test="PERSONNEL_TYPES != null and PERSONNEL_TYPES != ''"><!-- 关键词检索 -->
            PERSONNEL_TYPES = #{PERSONNEL_TYPES},
        </if>
        CLASS_ID = CLASS_ID
        where
        CLASS_ID = #{CLASS_ID}
    </update>

    <!-- 通过ID获取数据 -->
    <select id="findById" parameterType="pd" resultType="pd">
        select
        <include refid="Field"></include>,
        p.NAME POSTTYPE_NAME,
        t.NAME TRAININGTYPE_NAME,
        bci.OFFICIAL_SEAL_PATH,
        CONCAT_WS('-',IF( t.NAME= '',null ,t.NAME ),IF( lei.NAME= '',null , lei.NAME ),IF( p.NAME= '',null , p.NAME
        ),IF( tlt.NAME= '',null , tlt.NAME )) TYPENAME,
        tlt.NAME TRAINLEVEL_NAME,
        bci.CORP_NAME
        from
        <include refid="tableName"></include>
        f
        LEFT JOIN BUS_POST_TYPE p on p.POSTTYPE_ID = f.POSTTYPE
        left join bus_corp_info bci on f.CORPINFO_ID = bci.CORPINFO_ID
        LEFT JOIN BUS_TRAINING_TYPE t on t.TRAININGTYPE_ID = f.TRAINTYPE
        LEFT JOIN BUS_TRAIN_LEVEL_TYPE tlt on tlt.TRAINLEVEL_ID = f.TRAINLEVEL
        LEFT JOIN bus_industry_type lei ON lei.INDUSTRYTYPE_ID = f.INDUSTRY_END_ID
        WHERE
        f.CLASS_ID = #{CLASS_ID}
    </select>

    <!-- 获取学员试卷相关信息 -->
    <select id="getStuPaper" parameterType="pd" resultType="pd">
        SELECT s.POST_ID,
               pp.STAGEEXAMPAPERINPUT_ID,
               c.NUMBEROFEXAMS
        FROM BUS_STUDENT s
                 LEFT JOIN BUS_CLASS c ON c.CLASS_ID = s.CLASS_ID AND c.ISDELETE = '0'
                 LEFT JOIN BUS_POST_PAPER pp
                           ON pp.CLASS_ID = s.CLASS_ID AND pp.POST_ID = s.POST_ID AND pp.ISDELETE = '0'
        WHERE s.STUDENT_ID = #{STUDENT_ID}
    </select>


    <!-- 通过ID获取数据 -->
    <select id="findByIdForSign" parameterType="pd" resultType="pd">
        select
        <include refid="Field"></include>,
        us1.SIGN_PICTURE RECORDOR_SIGN, us2.SIGN_PICTURE ASSESSOR_SIGN, us3.SIGN_PICTURE SAFETYDEPTOR_SIGN
        from
        <include refid="tableName"></include>
        f
        left join SYS_USER_SIGN us1 ON us1.USERSIGNID = f.RECORDOR
        LEFT JOIN SYS_USER_SIGN us2 ON us2.USERSIGNID = f.ASSESSOR
        LEFT JOIN SYS_USER_SIGN us3 ON us3.USERSIGNID = f.SAFETYDEPTOR
        WHERE
        f.CLASS_ID = #{CLASS_ID}
        LIMIT 1
    </select>

    <!-- 通过ID获取数据 -->
    <select id="findByIdForArchives" parameterType="pd" resultType="pd">
        select
        <include refid="Field"></include>,
        p.NAME POSTTYPE_NAME,
        t.NAME TRAININGTYPE_NAME,
        iei.NAME INDUSTRY_END_NAME,
        tlt.NAME TRAINLEVEL_NAME,
        (select sum(cc.CLASSHOUR) from bus_class_curriculum cc where cc.CLASS_ID = f.CLASS_ID and cc.ISDELETE = '0')
        SUMCLASSHOUR,
        group_concat(distinct(cv.TEACHERNAME)) TEACHERS,
        group_concat(distinct(cv.COURSEWARENAME)) COURSEWARENAMES,
        group_concat(distinct(cu.CURRICULUMNAME)) CURRICULUMNAMES,
        ci.CORP_NAME CORP_NAME
        from
        <include refid="tableName"></include>
        f
        LEFT JOIN BUS_POST_TYPE p on p.POSTTYPE_ID = f.POSTTYPE
        LEFT JOIN BUS_TRAINING_TYPE t on t.TRAININGTYPE_ID = f.TRAINTYPE
        LEFT JOIN BUS_INDUSTRY_TYPE iei on iei.INDUSTRYTYPE_ID = f.INDUSTRY_END_ID
        LEFT JOIN BUS_TRAIN_LEVEL_TYPE tlt on tlt.TRAINLEVEL_ID = f.TRAINLEVEL
        LEFT JOIN BUS_CLASS_VIDEOCOURSEWARE cv ON cv.CLASS_ID = f.CLASS_ID AND cv.ISDELETE = '0'
        LEFT JOIN bus_class_curriculum cu ON cu.CLASS_ID = f.CLASS_ID AND cu.ISDELETE = '0'
        left join bus_corp_info ci on ci.CORPINFO_ID = f.CORPINFO_ID

        WHERE
        f.CLASS_ID = #{CLASS_ID}
        GROUP BY f.CLASS_ID
    </select>


    <!-- 列表 -->
    <select id="datalistPage" parameterType="page" resultType="pd">
        SELECT
        <include refid="Field"></include>,
        p.NAME POSTTYPE_NAME,
        t.NAME TRAININGTYPE_NAME,
        tlt.NAME TRAINLEVEL_NAME,
        sd1.NAME as PROVINCE_NAME,
        sd2.NAME as CITY_NAME,
        sd3.NAME as COUNTY_NAME,
        sd4.NAME as VILLAGE_NAME,
        sd5.NAME as STREET_NAME,
        (SELECT COUNT(cp.POST_ID) FROM BUS_CLASS_POST cp WHERE cp.CLASS_ID = f.CLASS_ID AND cp.ISDELETE = '0' ) POSTNUM,
        IFNULL(students.num ,0) AS STUDENT_NUM,
        pa.num as PASS_NUM,
        IFNULL(cvr.STUDYRECORDCNT, 0) AS STUDYRECORDCNT
        FROM
        <include refid="tableName"></include>
        f
        LEFT JOIN BUS_POST_TYPE p ON p.POSTTYPE_ID = f.POSTTYPE
        LEFT JOIN BUS_TRAINING_TYPE t ON t.TRAININGTYPE_ID = f.TRAINTYPE
        LEFT JOIN sys_dictionaries sd1 ON sd1.BIANMA = f.PROVINCE
        LEFT JOIN sys_dictionaries sd2 ON sd2.BIANMA = f.CITY
        LEFT JOIN sys_dictionaries sd3 ON sd3.BIANMA = f.COUNTY
        LEFT JOIN sys_dictionaries sd4 ON sd4.BIANMA = f.VILLAGE
        LEFT JOIN sys_dictionaries sd5 ON sd5.BIANMA = f.STREET
        LEFT JOIN BUS_TRAIN_LEVEL_TYPE tlt ON tlt.TRAINLEVEL_ID = f.TRAINLEVEL
        LEFT JOIN(SELECT COUNT(1) num,s.CLASS_ID FROM BUS_STUDENT s WHERE s.ISDELETE = '0' GROUP BY s.CLASS_ID )
        students ON students.CLASS_ID = f.CLASS_ID
        LEFT JOIN(SELECT COUNT(1) num,s.CLASS_ID FROM BUS_STUDENT s
        LEFT JOIN BUS_STAGESTUDENTRELATION rel on rel.STUDENT_ID = s.STUDENT_ID
        WHERE s.ISDELETE = '0' AND ((rel.STAGEEXAMSTATE = 0 AND rel.STUDYSTATE=2) or rel.STAGEEXAMSTATE = 2 OR
        rel.STUDYSTATE = 3) GROUP BY
        s.CLASS_ID) pa
        ON pa.CLASS_ID = f.CLASS_ID
        LEFT JOIN ( SELECT COUNT( 1 ) STUDYRECORDCNT,CLASS_ID FROM bus_coursestudyvideorecord  GROUP BY CLASS_ID) cvr ON cvr.CLASS_ID = f.CLASS_ID
        WHERE f.ISDELETE = '0'
        <if test="pd.KEYWORDS != null and pd.KEYWORDS != ''"><!-- 关键词检索 -->
            and ( f.NAME LIKE CONCAT(CONCAT('%', #{pd.KEYWORDS}),'%') )
        </if>
        <if test="pd.CODE != null and pd.CODE != ''"><!-- 关键词检索 -->
            and ( f.CODE LIKE CONCAT(CONCAT('%', #{pd.CODE}),'%') )
        </if>
        <if test="pd.PRINCIPAL != null and pd.PRINCIPAL != ''"><!-- 关键词检索 -->
            and ( f.PRINCIPAL LIKE CONCAT(CONCAT('%', #{pd.PRINCIPAL}),'%') )
        </if>
        <if test="pd.PRINCIPAL_PHONE != null and pd.PRINCIPAL_PHONE != ''"><!-- 关键词检索 -->
            and ( f.PRINCIPAL_PHONE LIKE CONCAT(CONCAT('%', #{pd.PRINCIPAL_PHONE}),'%') )
        </if>
        <if test="pd.POSTTYPE != null and pd.POSTTYPE != ''"><!-- 培训行业类型 -->
            and f.POSTTYPE = #{pd.POSTTYPE}
        </if>

        <if test="pd.INDUSTRY != null and pd.INDUSTRY != ''"><!-- 培训行业类型 -->
            and f.INDUSTRY_ALL_TYPE LIKE CONCAT(CONCAT('%', #{pd.INDUSTRY}),'%')
        </if>
        <if test="pd.TRAINLEVEL != null and pd.TRAINLEVEL != ''"><!-- 等级类型 -->
            and f.TRAINLEVEL = #{pd.TRAINLEVEL}
        </if>
        <if test="pd.STARTTIME != null and pd.STARTTIME != ''"><!-- 关键词检索 -->
            and f.START_TIME &gt;= #{pd.STARTTIME}
        </if>
        <if test="pd.ENDTIME != null and pd.ENDTIME != ''">
            and f.START_TIME &lt;= #{pd.ENDTIME}
        </if>
        <if test="pd.OVERSTARTTIME != null and pd.OVERSTARTTIME != ''"><!-- 关键词检索 -->
            and f.END_TIME &gt;= #{pd.OVERSTARTTIME}
        </if>
        <if test="pd.OVERENDTIME != null and pd.OVERENDTIME != ''">
            and f.END_TIME &lt;= #{pd.OVERENDTIME}
        </if>
        <if test="pd.POSSESSION != null and pd.POSSESSION != '' and pd.POSSESSIONLEVEL != null and pd.POSSESSIONLEVEL != '' ">

            <choose>
                <when test='pd.POSSESSIONLEVEL=="1"'>
                    and f.PROVINCE = #{pd.POSSESSION}
                </when>
                <when test='pd.POSSESSIONLEVEL=="2"'>
                    and f.CITY = #{pd.POSSESSION}
                </when>
                <when test='pd.POSSESSIONLEVEL=="3"'>
                    and f.COUNTY = #{pd.POSSESSION}
                </when>
                <when test='pd.POSSESSIONLEVEL=="4"'>
                    and f.VILLAGE = #{pd.POSSESSION}
                </when>
                <when test='pd.POSSESSIONLEVEL=="5"'>
                    and f.STREET = #{pd.POSSESSION}
                </when>

            </choose>
        </if>
        <if test="pd.STATE != null and pd.STATE != ''"><!-- 培训行业类型 -->
            and f.STATE = #{pd.STATE}
        </if>
        <if test="pd.PERSONNELTYPE != null and pd.PERSONNELTYPE != ''"><!-- 培训行业类型 -->
            and f.STATE !='1'
        </if>
        <if test="pd.ORGCOUNT != null and pd.ORGCOUNT != ''"><!-- 培训行业类型 -->
            and f.STATE != #{pd.ORGCOUNT}
        </if>
        <if test="pd.SURVEY_ID != null and pd.SURVEY_ID != ''"><!-- 培训行业类型 -->
            and f.SURVEY_ID = #{pd.SURVEY_ID}
        </if>
        <if test="pd.CORPINFO_ID != null and pd.CORPINFO_ID != ''"><!-- 培训行业类型 -->
            AND f.CORPINFO_ID = #{pd.CORPINFO_ID}
        </if>
        ORDER BY
        f.CREATTIME DESC
    </select>

    <!-- 列表(全部) -->
    <select id="listAll" parameterType="pd" resultType="pd">
        select
        <include refid="Field"></include>
        from
        <include refid="tableName"></include>
        f
        WHERE f.ISDELETE = '0'
        <if test="STATEARRAY != null and STATEARRAY != ''">
            and f.STATE in
            <foreach item="item" index="index" collection="STATEARRAY" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
    </select>

    <!-- 列表(全部)定时器使用 -->
    <select id="listAllScheduled" parameterType="pd" resultType="pd">
        select
        <include refid="Field"></include>
        from
        <include refid="tableName"></include>
        f
        WHERE f.ISDELETE = '0'
        <if test="STATEARRAY != null and STATEARRAY != ''">
            and f.STATE in
            <foreach item="item" index="index" collection="STATEARRAY" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        GROUP BY
        f.CLASS_ID
    </select>

    <select id="findClassInfo" resultType="com.zcloud.entity.PageData">
        select a.NAME as name, a.START_TIME as date, (select count(1) from bus_student b where b.CLASS_ID = a.CLASS_ID) as studentCount
        from bus_class a
        where a.CORPINFO_ID = #{CORPINFO_ID} and a.STATE != '1'
        order by str_to_date(a.START_TIME, '%Y-%m-%d %H:%i:%s') desc
            limit 0, 6;
    </select>

    <select id="findByTraining" resultType="com.zcloud.entity.PageData">
        select count(1) as value, a.TRAINTYPE, (select b.NAME from bus_training_type b where b.TRAININGTYPE_ID = a.TRAINTYPE) as name
        from bus_class a
        where a.TRAINTYPE in ('9cbe83925bbb4d84bc057b5eb5607a53'
            , 'bd73ea91fdcd4ef38ecd6f45a42f26af')
          and a.CORPINFO_ID = #{CORPINFO_ID}
        group by TRAINTYPE;
    </select>

    <select id="countByCorp" resultType="java.lang.Integer">
        select count(1) from bus_class f
        LEFT JOIN BUS_ENTERPRISE e ON e.ENTERPRISE_ID = f.ENTERPRISE_ID
        where f.ISDELETE = 0 and f.STATE != '1'
        <if test="AUTHORITY != null and AUTHORITY != ''"><!-- 培训类型 -->
            AND e.CREATOR = #{AUTHORITY}
        </if>
        <if test="CORPINFO_ID != null and CORPINFO_ID != ''">
            and f.CORPINFO_ID = #{CORPINFO_ID}
        </if>
        <if test="ENTERPRISE_ID != null and ENTERPRISE_ID != ''">
            and f.ENTERPRISE_ID = #{ENTERPRISE_ID}
        </if>
        <if test="USER_ID != null and USER_ID != ''">
            and exists(select 1 from bus_student s where s.ISDELETE = 0 and s.CLASS_ID = f.CLASS_ID and s.USER_ID =
            #{USER_ID})
        </if>
        <if test="YEAR != null and YEAR != ''">
            and YEAR(f.CREATTIME)=#{YEAR}
        </if>
        <if test="ACTIVATE != null and ACTIVATE != ''">
            and f.STATE = 5
        </if>
        <if test="FINISH != null and FINISH != ''">
            and f.STATE = 6
        </if>
    </select>

    <select id="getDateDashboardList" resultType="com.zcloud.entity.PageData">
        select count(1) as number ,DATE_FORMAT(a.CREATTIME,'%Y-%m') as CREATTIME
        from bus_class a
        where a.ISDELETE = 0 and a.STATE != '1'
        <if test="CORPINFO_ID != null and CORPINFO_ID != ''">
            and a.CORPINFO_ID = #{CORPINFO_ID}
        </if>
        <if test="ENTERPRISE_ID != null and ENTERPRISE_ID != ''">
            and a.ENTERPRISE_ID = #{ENTERPRISE_ID}
        </if>
        GROUP by DATE_FORMAT(a.CREATTIME,'%Y-%m-%d');
    </select>

    <select id="getMonthDashboardList" resultType="com.zcloud.entity.PageData">
        select count(1) as number ,DATE_FORMAT(a.CREATTIME,'%Y-%m') as CREATTIME
        from bus_class a LEFT JOIN bus_class c on a.CLASS_ID = c.CLASS_ID
        where a.ISDELETE = 0 and c.STATE != '1'
        <if test="CORPINFO_ID != null and CORPINFO_ID != ''">
            and a.CORPINFO_ID = #{CORPINFO_ID}
        </if>
        <if test="ENTERPRISE_ID != null and ENTERPRISE_ID != ''">
            and a.ENTERPRISE_ID = #{ENTERPRISE_ID}
        </if>
        GROUP by DATE_FORMAT(a.CREATTIME,'%Y-%m');
    </select>
    <select id="getClassNum" resultType="java.lang.Integer" parameterType="pd">
        select count(*)
        from
        bus_class c
        left join bus_enterprise e on c.ENTERPRISE_ID = e.ENTERPRISE_ID
        where c.ISDELETE = 0 and c.STATE != '1'
        <if test="USER_ID != null and USER_ID != ''"><!-- 培训类型 -->
            AND e.CREATOR = #{USER_ID}
        </if>
        <if test="CORPINFO_ID != null and CORPINFO_ID != ''">
            and c.CORPINFO_ID = #{CORPINFO_ID}
        </if>
        <if test="ENTERPRISE_ID != null and ENTERPRISE_ID != ''">
            and c.ENTERPRISE_ID = #{ENTERPRISE_ID}
        </if>
    </select>

    <!-- 批量删除 -->
    <delete id="deleteAll" parameterType="String">
        update
        <include refid="tableName"></include>
        set
        ISDELETE = '1'
        where
        CLASS_ID in
        <foreach item="item" index="index" collection="ArrayDATA_IDS" open="(" separator="," close=")">
            #{item}
        </foreach>
    </delete>

    <!-- 修改 -->
    <update id="editStateByDate" parameterType="pd">
        update
        <include refid="tableName"></include>
        set
        STATE = #{STATE},
        OPERATOR = #{OPERATOR},
        OPERATTIME = #{OPERATTIME}
        where
        ISDELETE = '0'
        <if test="STATE != null and STATE != ''"><!-- 培训行业类型 -->
            <choose>
                <when test='STATE == "3"'>
                    and DATE_FORMAT( NOW(), '%Y-%m-%d' ) &lt; DATE_FORMAT( APPLY_DEADLINE, '%Y-%m-%d' )
                    and STATE &lt; 3
                </when>
                <when test='STATE == "4"'>
                    and DATE_FORMAT( NOW(), '%Y-%m-%d' ) &lt; DATE_FORMAT( APPLY_DEADLINE, '%Y-%m-%d' )
                    and STATE &lt; 3
                </when>
            </choose>
        </if>
    </update>
    <update id="editNumberofexams">
        UPDATE <include refid="tableName"></include> SET NUMBEROFEXAMS = #{NUMBEROFEXAMS} WHERE CLASS_ID = #{CLASS_ID}
    </update>

    <update id="updateStagestudentrelation">
        update bus_stagestudentrelation
        set STAGEEXAMSTATE = #{STAGEEXAMSTATE},
            STUDYSTATE     = #{STUDYSTATE}
        where STAGESTUDENTRELATION_ID = #{STAGESTUDENTRELATION_ID}
    </update>

    <select id="sumClasshour" resultType="java.lang.Double">
        select
        IFNULL(SUM(ch.SUM_CLASSHOUR),0) SUM_CLASSHOUR
        from
        <include refid="tableName"></include>
        c
        LEFT JOIN
        BUS_STUDENT s ON c.CLASS_ID = s.CLASS_ID
        LEFT JOIN
        (SELECT IFNULL(SUM(cu.CLASSHOUR),0) SUM_CLASSHOUR,cp.CLASS_ID,cp.POST_ID
        FROM BUS_CURRICULUM_POST cp
        LEFT JOIN BUS_CLASS_CURRICULUM cu ON cu.CLASSCURRICULUM_ID = cp.CLASSCURRICULUM_ID
        GROUP BY cp.CLASS_ID,cp.POST_ID) ch ON ch.CLASS_ID=c.CLASS_ID and ch.POST_ID=s.POST_ID
        LEFT JOIN
        BUS_ENTERPRISE e on e.ENTERPRISE_ID = c.ENTERPRISE_ID
        WHERE s.ISDELETE = 0
        AND c.ISDELETE = 0
        AND c.STATE > 1
        AND s.ENTERPRISE_ID = #{ENTERPRISE_ID}
        <if test="ACTIVATE != null and ACTIVATE != ''">
            AND c.STATE = 5
        </if>
        <if test="FINISH != null and FINISH != ''">
            AND c.STATE = 6
        </if>
    </select>
    <select id="getStuInfo" parameterType="pd" resultType="pd">
        select c.*,
               s.NAME                                STUNAME,
               IFNULL(sum(ch.SUM_CLASSHOUR), 0)      SUM_CLASSHOUR,
               IFNULL(sum(sr.COMPLETE_CLASSHOUR), 0) COMPLETE_CLASSHOUR
        from BUS_CLASS c
                 LEFT JOIN
             BUS_STUDENT s ON c.CLASS_ID = s.CLASS_ID
                 LEFT JOIN
             (SELECT IFNULL(SUM(cu.CLASSHOUR), 0) SUM_CLASSHOUR, cp.CLASS_ID, cp.POST_ID
              FROM BUS_CURRICULUM_POST cp
                       LEFT JOIN BUS_CLASS_CURRICULUM cu ON cu.CLASSCURRICULUM_ID = cp.CLASSCURRICULUM_ID
              GROUP BY cp.CLASS_ID, cp.POST_ID) ch ON ch.CLASS_ID = c.CLASS_ID and ch.POST_ID = s.POST_ID
                 LEFT JOIN
             BUS_ENTERPRISE e on e.ENTERPRISE_ID = c.ENTERPRISE_ID
                 LEFT JOIN
             BUS_STAGESTUDENTRELATION sr ON sr.STUDENT_ID = s.STUDENT_ID
        WHERE s.ISDELETE = 0
          AND c.ISDELETE = 0
          AND c.STATE > 1
          AND s.ENTERPRISE_ID = #{ENTERPRISE_ID}
        GROUP BY s.USER_ID
        ORDER BY SUM_CLASSHOUR desc
    </select>
    <select id="getClassAllByCorp" resultType="com.zcloud.entity.PageData">
        SELECT
            c.CLASS_ID,
            c.`NAME`
        from bus_class c
        WHERE c.STATE > 1
        and c.ISDELETE = 0
        and c.CORPINFO_ID = #{CORPINFO_ID}
        <if test="TRAINTYPE_ID != NULL and TRAINTYPE_ID != ''">
            and c.TRAINTYPE != #{TRAINTYPE_ID}
        </if>
        ORDER BY c.`NAME`
    </select>
    <select id="listStrengthenByCorpNamelistPage" parameterType="page" resultType="pd">
        SELECT
        <include refid="Field"></include>,
        count(bt.STUDENT_ID) ALLSTUDENTCOUNT,
        count(bss.STUDENT_ID) PASSSTUDENTCOUNT,
        bc.CORP_NAME,
        bc.CORP_TYPE_NAME,
        bc.CONTACTS,
        bc.CONTACTS_PHONE
        FROM
        <include refid="tableName"></include>
        f
        LEFT JOIN ( SELECT * FROM bus_corp_info WHERE CORPINFO_ID = #{pd.CORPINFO_ID} AND ISDELETE = 0) bc ON bc.CORPINFO_ID =
        f.CORPINFO_ID
        left join bus_student bt on bt.CLASS_ID = f.CLASS_ID and bt.ISDELETE = '0'
        left join ( select * from bus_strengthenstudentrelation where STRENGTHENEXAMSTATE = '3' and ISDELETE = 0) bss on
        bss.STUDENT_ID = bt.STUDENT_ID
        left join (select * from bus_stagestudentrelation where STAGEEXAMSTATE = '3' and ISDELETE = 0) bsr on bsr.STUDENT_ID =
        bt.STUDENT_ID
        left join bus_stageexampaper_input bsi on bsi.STAGEEXAMPAPERINPUT_ID = bsr.STAGEEXAMPAPER_ID
        WHERE
        (  f.ISSTRENGTHEN = '1'
           OR f.ISSTRENGTHEN = '2' )
        AND f.ISDELETE = 0
        and bc.CORPINFO_ID = #{pd.CORPINFO_ID}
        and CEILING(bsr.STAGEEXAMSCORE) != bsi.EXAMSCORE
    </select>

    <select id="listStrengthenClassByIdlistPage" parameterType="page" resultType="pd">
        SELECT
        <include refid="Field"></include>,
        btt.`NAME` TRAINTYPENAME,
        bpt.`NAME` POSTTYPENAME,
        count(bs.STUDENT_ID) ALLSTUDENTCOUNT,
        count(bst.STUDENT_ID) PASSSTUDENTCOUNT
        FROM
        <include refid="tableName"></include>
        f
        left join bus_training_type btt on btt.TRAININGTYPE_ID = f.TRAINTYPE
        left join bus_post_type bpt on bpt.POSTTYPE_ID = f.POSTTYPE
        LEFT join bus_student bs on bs.CLASS_ID = f.CLASS_ID and bs.ISDELETE ='0'
        left join (select * from bus_strengthenstudentrelation where STRENGTHENEXAMSTATE = '3' and isdelete = 0) bst on
        bst.STUDENT_ID = bs.STUDENT_ID
        left join (select * from bus_stagestudentrelation where STAGEEXAMSTATE = '3' and isdelete = 0) bsr on bsr.STUDENT_ID =
        bs.STUDENT_ID
        left join bus_stageexampaper_input bsi on bsi.STAGEEXAMPAPERINPUT_ID = bsr.STAGEEXAMPAPER_ID
        WHERE
            f.CORPINFO_ID = #{pd.CORPINFO_ID}
        AND f.ISDELETE = 0
        and (  f.ISSTRENGTHEN = '1'
            OR f.ISSTRENGTHEN = '2' )
        and CEILING(bsr.STAGEEXAMSCORE) != bsi.EXAMSCORE
        <if test="pd.NAME != null and pd.NAME != ''">
            and f.NAME LIKE CONCAT(CONCAT('%', #{pd.NAME}),'%')
        </if>
        <if test="pd.YEAR != null and pd.YEAR != ''">
            and f.CREATTIME LIKE CONCAT(#{pd.YEAR},'%')
        </if>
        GROUP BY f.CLASS_ID
        ORDER BY f.NAME
    </select>
    <select id="listStrengthenStudentByIdlistPage" parameterType="page" resultType="pd">
        SELECT
        <include refid="Field"></include>,
        bs.STUDENT_ID,
        bs.name STUDENTNAME,
        bs.USER_ID_CARD USERIDCARD,
        bs.PHONE,
        bst.STRENGTHENEXAMSCORE,
        bst.STRENGTHENEXAMSTATE
        FROM
        <include refid="tableName"></include>
        f
        LEFT JOIN bus_student bs ON bs.CLASS_ID = f.CLASS_ID and bs.ISDELETE ='0'
        LEFT JOIN bus_strengthenstudentrelation bst ON bst.STUDENT_ID = bs.STUDENT_ID and bst.isdelete = 0
        left join (select * from bus_stagestudentrelation where STAGEEXAMSTATE = '3' and isdelete = 0) bsr on bsr.STUDENT_ID =
        bs.STUDENT_ID
        left join bus_stageexampaper_input bsi on bsi.STAGEEXAMPAPERINPUT_ID = bsr.STAGEEXAMPAPER_ID
        WHERE
        f.class_id = #{pd.CLASS_ID}
        and f.ISDELETE = 0
        and (  f.ISSTRENGTHEN = '1'
            OR f.ISSTRENGTHEN = '2' )
        and CEILING(bsr.STAGEEXAMSCORE) != bsi.EXAMSCORE
        <if test="pd.STUDENTNAME != null and pd.STUDENTNAME != ''">
            and bs.NAME LIKE CONCAT(CONCAT('%', #{pd.STUDENTNAME}),'%')
        </if>
        <if test="pd.YEAR != null and pd.YEAR != ''">
            and f.CREATTIME LIKE CONCAT(#{pd.YEAR},'%')
        </if>
        group by bs.STUDENT_ID
    </select>
    <select id="listallstrengthenlistlistPage" parameterType="page" resultType="pd">
        SELECT bci.*,
               count(DISTINCT bst.STUDENT_ID)
        FROM bus_class f
                 LEFT JOIN bus_corp_enterprise_contact bce ON bce.CORPINFO_ID = f.CORPINFO_ID
                 LEFT JOIN bus_corp_info bci ON bci.CORPINFO_ID = bce.CORPINFO_ID
                 left join bus_student bst on bst.CLASS_ID = f.CLASS_ID and bst.ISDELETE ='0'
                 left join (select * from bus_stagestudentrelation where STAGEEXAMSTATE = '3' and isdelete = 0) bsr
                           on bsr.STUDENT_ID = bst.STUDENT_ID
                 left join bus_stageexampaper_input bsi on bsi.STAGEEXAMPAPERINPUT_ID = bsr.STAGEEXAMPAPER_ID
        WHERE (  f.ISSTRENGTHEN = '1'
            OR f.ISSTRENGTHEN = '2' )
          AND f.ISDELETE = 0
          and bsr.STAGEEXAMSCORE != bsi.EXAMSCORE
        GROUP BY
            bci.CORPINFO_ID
    </select>
    <select id="listStudentStrengthenbyIdlistPage" resultType="com.zcloud.entity.PageData">
        SELECT
        f.*,
        bsc.STRENGTHENEXAMSTATE,
        bsc.STRENGTHENEXAMSCORE,
        bc.`NAME` CLASS_NAME,
        bc.INDUSTRY_ALL_NAME,
        bc.CODE,
        btt.`NAME` TRAINTYPENAME,
        bpt.`NAME` POSTTYPENAME
        FROM
        bus_student f
        left join bus_strengthenstudentrelation bsc on bsc.STUDENT_ID = f.STUDENT_ID  and bsc.isdelete = 0
        left join bus_class bc on bc.CLASS_ID = f.CLASS_ID
        left join bus_training_type btt on btt.TRAININGTYPE_ID = bc.TRAINTYPE
        left join bus_post_type bpt on bpt.POSTTYPE_ID = bc.POSTTYPE
        left join bus_stagestudentrelation bsr on bsr.CLASS_ID = bc.CLASS_ID and bsr.ISDELETE = 0
        left join bus_stageexampaper_input bsi on bsi.STAGEEXAMPAPERINPUT_ID = bsr.STAGEEXAMPAPER_ID
        and bsr.STAGEEXAMSTATE = '3'
        and bsr.STAGEEXAMSCORE != bsi.EXAMSCORE
        WHERE
        f.USER_ID = #{pd.USER_ID}
        AND f.ISDELETE = 0
        AND ( bc.isstrengthen = 1
            OR bc.isstrengthen = 2 )
        <if test="pd.YEAR != null and pd.YEAR != ''">
            and bc.CREATTIME LIKE CONCAT(#{pd.YEAR},'%')
        </if>
        group by f.STUDENT_ID
        order by bc.NAME
    </select>

    <select id="listStagestudentrelationByClassId" resultType="com.zcloud.entity.PageData">
        select STAGESTUDENTRELATION_ID,
               STAGEEXAMSTATE,
               STUDYSTATE,
               STUDENT_ID
        from bus_stagestudentrelation f
        where f.CLASS_ID = #{CLASS_ID}
          and f.ISDELETE = '0'
    </select>
    <!--效果评估表-->
    <select id="getEvaluation" resultType="com.zcloud.entity.PageData">
        select
               f.NAME                                                                                               as CLASS_NAME,
               f.START_TIME,
               f.END_TIME,
               bci.CORP_NAME,
               (select count(*)
                from bus_stagestudentrelation
                where (STAGEEXAMSTATE = '2' or STAGEEXAMSTATE = '3')
                  and CLASS_ID = f.CLASS_ID
                  and ISDELETE = 0)                                                                        as EXMA_COUNT,
               (select count(*)
                from bus_stagestudentrelation
                where STAGEEXAMSTATE = '3'
                  and CLASS_ID = f.CLASS_ID
                  and ISDELETE = 0)                                                                        as PASS_COUNT,
               (select count(*)
                from bus_stagestudentrelation
                where STAGEEXAMSTATE = '2'
                  and CLASS_ID = f.CLASS_ID
                  and ISDELETE = 0)                                                                        as NO_PASS_COUNT,
               (select count(*)
                from bus_strengthenstudentrelation
                where CLASS_ID = f.CLASS_ID
                and ISDELETE = 0)                                                                        as STR_EXMA_COUNT,
               (select count(*)
                from bus_strengthenstudentrelation
                where STRENGTHENEXAMSTATE = '3'
                  and CLASS_ID = f.CLASS_ID
                  and ISDELETE = 0)                                                                        as STR_PASS_COUNT
        from bus_class f
        LEFT JOIN BUS_CORP_INFO bci on bci.CORPINFO_ID = f.CORPINFO_ID
        where f.CLASS_ID = #{CLASS_ID}
    </select>

    <select id="getStrengthenStudent" resultType="com.zcloud.entity.PageData">
        select
        s.NAME,
        s.SEX,
        s.USER_ID_CARD,
        s.PHONE,
        s.STUDENT_ID,
        f.STRENGTHENEXAMSCORE
        from
        bus_strengthenstudentrelation f
        left join bus_student s on s.STUDENT_ID = f.STUDENT_ID
        where
        f.CLASS_ID = #{CLASS_ID}
        and f.ISDELETE = 0
        <if test="TYPE != null and TYPE != '' and TYPE == 'NO_PASS'">
            and f.STRENGTHENEXAMSTATE != 3
        </if>
        <if test="TYPE != null and TYPE != '' and TYPE == 'PASS'">
            and f.STRENGTHENEXAMSTATE = 3
        </if>

    </select>

    <!-- 培训类型是职业健康的列表 -->
    <select id="classForHealthlistPage" parameterType="page" resultType="pd">
        SELECT
        <include refid="Field"></include>,
        p.NAME POSTTYPE_NAME,
        t.NAME TRAININGTYPE_NAME,
        IFNULL(students.num ,0) AS STUDENT_NUM
        FROM
        <include refid="tableName"></include>
        f
        LEFT JOIN BUS_POST_TYPE p ON p.POSTTYPE_ID = f.POSTTYPE
        LEFT JOIN BUS_TRAINING_TYPE t ON t.TRAININGTYPE_ID = f.TRAINTYPE
        LEFT JOIN(SELECT COUNT(1) num,s.CLASS_ID FROM BUS_STUDENT s WHERE s.ISDELETE = '0' GROUP BY s.CLASS_ID ) students ON students.CLASS_ID = f.CLASS_ID
        WHERE f.ISDELETE = '0'
        AND   f.STATE > 1
        <if test="pd.TRAINTYPE_ID != null and pd.TRAINTYPE_ID != ''"><!-- 培训类型 -->
            AND f.TRAINTYPE = #{pd.TRAINTYPE_ID}
        </if>
        <if test="pd.KEYWORDS != null and pd.KEYWORDS != ''"><!-- 关键词检索 -->
            and ( f.NAME LIKE CONCAT(CONCAT('%', #{pd.KEYWORDS}),'%') )
        </if>
        <if test="pd.CODE != null and pd.CODE != ''"><!-- 关键词检索 -->
            and ( f.CODE LIKE CONCAT(CONCAT('%', #{pd.CODE}),'%') )
        </if>
        <if test="pd.CORPINFO_ID != null and pd.CORPINFO_ID != ''"><!-- 机构 -->
            AND f.CORPINFO_ID = #{pd.CORPINFO_ID}
        </if>
        ORDER BY f.CREATTIME DESC
    </select>

</mapper>