<?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.sundot.airport.ledger.mapper.LedgerSupervisionProblemMapper">

    <resultMap id="BaseResultMap" type="com.sundot.airport.ledger.domain.LedgerSupervisionProblem">
        <id     property="id"               column="id"               />
        <result property="recordDate"       column="record_date"      />
        <result property="deptName"         column="dept_name"        />
        <result property="deptId"           column="dept_id"          />
        <result property="teamName"         column="team_name"        />
        <result property="teamId"           column="team_id"          />
        <result property="groupName"        column="group_name"       />
        <result property="groupId"          column="group_id"         />
        <result property="areaId"           column="area_id"          />
        <result property="inspectorName"    column="inspector_name"   />
        <result property="inspectedName"    column="inspected_name"   />
        <result property="inspectedId"      column="inspected_id"     />
        <result property="problemType"      column="problem_type"     />
        <result property="problemLevel"     column="problem_level"    />
        <result property="problemDesc"      column="problem_desc"     />
        <result property="location"         column="location"         />
        <result property="channelNo"        column="channel_no"       />
        <result property="position"         column="position"         />
        <result property="positionId"       column="position_id"      />
        <result property="resultHandling"   column="result_handling"  />
        <result property="basis"            column="basis"            />
        <result property="qualityOfficer"   column="quality_officer"  />
        <result property="qualityPushLeader" column="quality_push_leader" />
        <result property="rectificationStatus" column="rectification_status" />
        <result property="evidenceMaterial" column="evidence_material" />
        <result property="sendToRelevant"   column="send_to_relevant" />
        <result property="monthlyProblemCount" column="monthly_problem_count" />
        <result property="lastMonthExceedThree" column="last_month_exceed_three" />
        <result property="checkPersonnel"   column="check_personnel"  />
        <result property="manageQcManager"  column="manage_qc_manager" />
        <result property="inputTime"        column="input_time"       />
        <result property="deptTrainingInstructor" column="dept_training_instructor" />
        <result property="teamInternalDuty" column="team_internal_duty" />
        <result property="teamLeader"       column="team_leader"      />
        <result property="deductScore"      column="deduct_score"     />
        <result property="addScore"         column="add_score"        />
        <result property="scoreDimension"   column="score_dimension"  />
        <result property="scoreIndicator"   column="score_indicator"  />
        <result property="evidenceFile"     column="evidence_file"    />
        <result property="remark"           column="remark"           />
        <result property="importBatch"      column="import_batch"     />
        <result property="sourceType"       column="source_type"      />
        <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="syncFlag" column="sync_flag" />
    </resultMap>

    <sql id="selectVo">
        SELECT id, record_date, dept_name, dept_id, team_name, team_id, group_name, group_id, area_id,
               inspector_name, inspected_name, inspected_id, problem_type, problem_level, problem_desc, location,
               channel_no, position, position_id, result_handling, basis, quality_officer, quality_push_leader,
               rectification_status, evidence_material, send_to_relevant, monthly_problem_count, last_month_exceed_three,
               check_personnel, manage_qc_manager, input_time, dept_training_instructor, team_internal_duty, team_leader,
               deduct_score, add_score, score_dimension, score_indicator, evidence_file, remark,
               import_batch, source_type, create_by, create_time, update_by, update_time, sync_flag
        FROM ledger_supervision_problem
        WHERE del_flag = '0'
    </sql>

    <select id="selectList" parameterType="com.sundot.airport.ledger.domain.LedgerSupervisionProblem" resultMap="BaseResultMap">
        <include refid="selectVo"/>
        <if test="deptName != null and deptName != ''">AND dept_name LIKE CONCAT('%', #{deptName}, '%')</if>
        <if test="teamName != null and teamName != ''">AND team_name LIKE CONCAT('%', #{teamName}, '%')</if>
        <if test="inspectorName != null and inspectorName != ''">AND inspector_name LIKE CONCAT('%', #{inspectorName}, '%')</if>
        <if test="inspectedName != null and inspectedName != ''">AND inspected_name LIKE CONCAT('%', #{inspectedName}, '%')</if>
        <if test="syncFlag != null and syncFlag != ''">AND sync_flag = #{syncFlag}</if>
        <if test="params != null and params.beginTime != null and params.beginTime != ''">
            AND record_date &gt;= #{params.beginTime}
        </if>
        <if test="params != null and params.endTime != null and params.endTime != ''">
            AND record_date &lt;= #{params.endTime}
        </if>
        ORDER BY record_date DESC, id DESC
    </select>

    <update id="updateSyncFlag">
        update ledger_supervision_problem
        set sync_flag = '1'
        where sync_flag = '0'
    </update>

    <select id="supervisionProblemPosition"
            parameterType="com.sundot.airport.common.dto.LedgerCommonQueryReqVO"
            resultType="com.sundot.airport.common.dto.LedgerCommonResVO">
        select position_id id,
        position name,
        count(1) total
        from ledger_supervision_problem
        where del_flag = '0'
        <if test="deptId != null">and dept_id = #{deptId}</if>
        <if test="teamId != null">and team_id = #{teamId}</if>
        <if test="groupId != null">and group_id = #{groupId}</if>
        <if test="userId != null">and inspected_id = #{userId}</if>
        <if test="startDate != null and endDate != null">
            and (record_date >= #{startDate}
            and record_date <![CDATA[ < ]]> date_add(#{endDate} , interval 1 day))
        </if>
        group by position_id, position
        order by total desc
    </select>

</mapper>
