DutyRosterSMapper.xml 13.9 KB
<?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.zteits.park.mapper.smapper.DutyRosterSMapper">
    <resultMap id="BaseResultMap" type="com.zteits.park.domain.DutyRoster">
        <id column="id" jdbcType="BIGINT" property="id" />
        <result column="org_id" jdbcType="BIGINT" property="orgId" />
        <result column="plan_id" jdbcType="BIGINT" property="planId" />
        <result column="duty_type" jdbcType="INTEGER" property="dutyType" />
        <result column="charger_code" jdbcType="VARCHAR" property="chargerCode" />
        <result column="charger_name" jdbcType="VARCHAR" property="chargerName" />
        <result column="duty_day" jdbcType="DATE" property="dutyDay" />
        <result column="day_num" jdbcType="INTEGER" property="dayNum" />
        <result column="duty_cycle" jdbcType="INTEGER" property="dutyCycle" />
        <result column="work_state" jdbcType="INTEGER" property="workState" />
        <result column="pl_no" jdbcType="VARCHAR" property="plNo" />
        <result column="pl_name" jdbcType="VARCHAR" property="plName" />
        <result column="berth_range_no" jdbcType="VARCHAR" property="berthRangeNo" />
        <result column="berth_range_name" jdbcType="VARCHAR" property="berthRangeName" />
        <result column="berth_num" jdbcType="INTEGER" property="berthNum" />
        <result column="group_id" jdbcType="BIGINT" property="groupId" />
        <result column="group_name" jdbcType="VARCHAR" property="groupName" />
        <result column="group_start_time" jdbcType="TIMESTAMP" property="groupStartTime" />
        <result column="group_end_time" jdbcType="TIMESTAMP" property="groupEndTime" />
        <result column="charger_code_rep" jdbcType="VARCHAR" property="chargerCodeRep" />
        <result column="charger_name_rep" jdbcType="VARCHAR" property="chargerNameRep" />
        <result column="data_status" jdbcType="INTEGER" property="dataStatus" />
        <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
        <result column="create_op" jdbcType="BIGINT" property="createOp" />
        <result column="modify_time" jdbcType="TIMESTAMP" property="modifyTime" />
        <result column="modify_op" jdbcType="BIGINT" property="modifyOp" />
        <result column="sign_state" jdbcType="INTEGER" property="signState" />
        <result column="sign_in_time" jdbcType="TIMESTAMP" property="signInTime" />
        <result column="sign_in_distance" jdbcType="INTEGER" property="signInDistance" />
        <result column="sign_out_time" jdbcType="TIMESTAMP" property="signOutTime" />
        <result column="sign_out_distance" jdbcType="INTEGER" property="signOutDistance" />
    </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">
        id, org_id, plan_id, duty_type, charger_code, charger_name, duty_day, day_num, duty_cycle,
        work_state, pl_no, pl_name, berth_range_no, berth_range_name, berth_num, group_id,
        group_name, group_start_time, group_end_time, charger_code_rep, charger_name_rep,
        data_status, create_time, create_op, modify_time, modify_op, sign_state, sign_in_time,
        sign_in_distance, sign_out_time, sign_out_distance
    </sql>

    <insert id="insertDutyRosterForList" parameterType="java.util.List">
        insert into duty_roster (org_id, plan_id, duty_type, charger_code,
        charger_name, duty_day, day_num,
        duty_cycle, work_state, pl_no,
        pl_name, berth_range_no, berth_range_name,
        berth_num, group_id, group_name,
        group_start_time, group_end_time, charger_code_rep,
        charger_name_rep, data_status, create_time,
        create_op, modify_time, modify_op
        )
        values
        <foreach collection="dutyRosterList" index="index" item="item" separator=",">
            (#{item.orgId,jdbcType=BIGINT}, #{item.planId,jdbcType=BIGINT}, #{item.dutyType,jdbcType=INTEGER},  #{item.chargerCode,jdbcType=VARCHAR},
            #{item.chargerName,jdbcType=VARCHAR}, #{item.dutyDay,jdbcType=DATE}, #{item.dayNum,jdbcType=INTEGER},
            #{item.dutyCycle,jdbcType=INTEGER}, #{item.workState,jdbcType=INTEGER}, #{item.plNo,jdbcType=VARCHAR},
            #{item.plName,jdbcType=VARCHAR}, #{item.berthRangeNo,jdbcType=VARCHAR},
            #{item.berthRangeName,jdbcType=VARCHAR},
            #{item.berthNum,jdbcType=INTEGER}, #{item.groupId,jdbcType=BIGINT}, #{item.groupName,jdbcType=VARCHAR},
            #{item.groupStartTime,jdbcType=TIMESTAMP}, #{item.groupEndTime,jdbcType=TIMESTAMP},
            #{item.chargerCodeRep,jdbcType=VARCHAR},
            #{item.chargerNameRep,jdbcType=VARCHAR}, #{item.dataStatus,jdbcType=INTEGER},
            #{item.createTime,jdbcType=TIMESTAMP},
            #{item.createOp,jdbcType=BIGINT}, #{item.modifyTime,jdbcType=TIMESTAMP}, #{item.modifyOp,jdbcType=BIGINT}
            )
        </foreach>
    </insert>
    <select id="queryPlanIdsByPlNo" resultType="java.lang.Long">
        SELECT DISTINCT plan_id
        FROM duty_roster
        WHERE data_status = 1 AND pl_no = #{plNo}
        <if test="planIds != null and planIds.size>0">
            AND plan_id IN
            <foreach collection="planIds" item="planId" separator="," open="(" close=")">
                #{planId}
            </foreach>
        </if>

        <if test="dutyType != null">
           and duty_type = #{dutyType}
        </if>

    </select>

    <!--查询当前组织下面的休息的收费员信息-->
    <select id="queryRelaxChargerList" resultType="com.zteits.park.domain.DutyRoster"
            parameterType="com.zteits.clouds.api.dto.park.param.dutyroster.DutyRosterRelaxChargerQueryReq">
        SELECT charger_code chargerCode,charger_name chargerName
        FROM duty_roster
        <where>
        AND    data_status = 1
        AND duty_day = DATE_FORMAT(#{dutyDay},'%Y-%m-%d')
        and org_id = #{orgId}
        <if test="planId !=null">
            and plan_id = #{planId}
        </if>
            AND (
        <if test="workStates !=null and workStates.size >0">
             work_state IN
            <foreach collection="workStates" item="workState" separator="," open="(" close=")">
                #{workState}
            </foreach>
        </if>
        <if test="groupId !=null and groupId != ''">
            or group_id != #{groupId}
        </if>)

        <if test="dutyType != null">
            and duty_type = #{dutyType}
        </if>
        </where>
    </select>

    <!-- 查询值班日 某组织ID下 对应工作状态的 收费员编码-->
    <select id="queryChargerCodeForWorkState" resultType="java.lang.String" parameterType="com.zteits.clouds.api.dto.park.param.dutyroster.ChargerCodeQueryForWorkStateReq">

        SELECT DISTINCT charger_code
        FROM duty_roster
        WHERE data_status = 1
        AND org_id = #{orgId}
        AND duty_day = DATE_FORMAT(#{dutyDay},'%Y-%m-%d')
        <if test="planId !=null">
            and plan_id = #{planId}
        </if>
        <if test="workStates !=null and workStates.size >0">
            AND work_state IN
            <foreach collection="workStates" item="workState" separator="," open="(" close=")">
                #{workState}
            </foreach>
        </if>

        <if test="dutyType != null">
            and duty_type = #{dutyType}
        </if>

    </select>


    <update id="exchangeDutyRoster" parameterType="com.zteits.clouds.api.dto.park.param.dutyroster.DutyRosteExchangeReq">
        UPDATE duty_roster a, duty_roster b
        SET
            a.charger_code = b.charger_code,
            a.charger_name = b.charger_name,
            b.charger_code = a.charger_code,
            b.charger_name = a.charger_name
        WHERE
            a.charger_code = #{souceChargerCode}
          AND b.charger_code = #{targetChargerCode}
          AND a.data_status = 1
          AND b.data_status = 1
          <if test=" exchangeType == null or (exchangeType != 1 and exchangeType !=2)">
           and 1 =2
          </if>

          <if test="dutyType != null">
            and a.duty_type = #{dutyType}
            and b.duty_type = #{dutyType}
          </if>

          <if test="1 == exchangeType">
              AND a.duty_day BETWEEN #{dutyDay} AND #{dutyDay}
              AND b.duty_day BETWEEN #{dutyDay} AND #{dutyDay}
          </if>

        <if test="2 == exchangeType">
            AND a.duty_day BETWEEN #{dutyDay} AND '2099-01-01'
            AND b.duty_day BETWEEN #{dutyDay} AND '2099-01-01'
        </if>
    </update>

	<!-- 查询收费签到信息数量-->
    <select id="queryChargerSignInfoNumber" resultType="com.zteits.clouds.api.dto.park.dto.ChargerSignNumberStatisticsDTO"
    	parameterType="com.zteits.clouds.api.dto.clouds.param.QueryEmployeeRequest">
    	select IFNULL(count(1),0) as allTollCollector,
    		SUM(CASE WHEN (sign_state = 20
    		<if test="inBeginTime != null and inBeginTime !=''">
	         	AND TIME(sign_in_time) >= #{inBeginTime}
	         </if>
	         <if test="inEndTime != null and inEndTime !=''">
	         	AND TIME(sign_in_time) &lt;= #{inEndTime}
	         </if>
    		) THEN 1 ELSE 0 END ) as signInTollCollector
    		from duty_roster
   		WHERE data_status = 1
   		AND work_state in(10,40)
    		<if test="plNos != null and plNos.size>0">
	            AND pl_no IN
	            <foreach collection="plNos" item="plNo" separator="," open="(" close=")">
	                #{plNo}
	            </foreach>
	        </if>
    		<if test="chargerCodes != null and chargerCodes.size>0">
	            AND charger_code IN
	            <foreach collection="chargerCodes" item="chargerCode" separator="," open="(" close=")">
	                #{chargerCode}
	            </foreach>
	        </if>
         AND duty_day BETWEEN #{beginTime} AND #{endTime}

    </select>

	<!-- 查询排班详情(签到未签到人员)-->
    <select id="queryChargerDutyDetailByCondition" resultMap="BaseResultMap"
    	parameterType="com.zteits.clouds.api.dto.clouds.param.QueryEmployeeRequest">
    	select *

    		from duty_roster
   		WHERE data_status = 1
   		AND work_state in(10,40)
    		<if test="plNos != null and plNos.size>0">
	            AND pl_no IN
	            <foreach collection="plNos" item="plNo" separator="," open="(" close=")">
	                #{plNo}
	            </foreach>
	        </if>
    		<if test="chargerCodes != null and chargerCodes.size>0">
	            AND charger_code IN
	            <foreach collection="chargerCodes" item="chargerCode" separator="," open="(" close=")">
	                #{chargerCode}
	            </foreach>
	        </if>
	         <if test="signState !=null">
	            and sign_state = #{signState}
	        </if>
         AND duty_day BETWEEN #{beginTime} AND #{endTime}
    </select>
    <select id="queryDutyRosterMaxDateByPlanId" resultType="java.lang.String"
            parameterType="com.zteits.clouds.api.dto.park.param.dutyroster.ChargerCodeQueryForWorkStateReq">
        SELECT
            max(duty_day)
        FROM duty_roster
        WHERE data_status = 1
          AND plan_id = #{planId}
    </select>
</mapper>