<?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="cn.timer.api.dao.kqmk.KqglAssoMonthPunchSummaryMapper">

    <resultMap id="BaseResultMap" type="cn.timer.api.bean.kqmk.KqglAssoMonthPunchSummary" >
                <id column="id" property="id" />
                <result column="name" property="name" />
                <result column="num" property="num" />
                <result column="dept" property="dept" />
                <result column="post" property="post" />
                <result column="att_group" property="attGroup" />
                <result column="shift" property="shift" />
                <result column="days_on_duty" property="daysOnDuty" />
                <result column="actual_att_days" property="actualAttDays" />
                <result column="days_off" property="daysOff" />
                <result column="working_hours" property="workingHours" />
                <result column="late_times" property="lateTimes" />
                <result column="late_hours" property="lateHours" />
                <result column="serious_late_times" property="seriousLateTimes" />
                <result column="serious_late_hours" property="seriousLateHours" />
                <result column="absen_late_times" property="absenLateTimes" />
                <result column="early_leave_times" property="earlyLeaveTimes" />
                <result column="length_early_leave" property="lengthEarlyLeave" />
                <result column="number_work_card_shortage" property="numberWorkCardShortage" />
                <result column="number_duty_card_shortage" property="numberDutyCardShortage" />
                <result column="absenteeism_days" property="absenteeismDays" />
                <result column="length_business_trip" property="lengthBusinessTrip" />
                <result column="time_out" property="timeOut" />
                <result column="total_overtime_hours" property="totalOvertimeHours" />
                <result column="working_turn_compen_leave" property="workingTurnCompenLeave" />
                <result column="rest_turn_compen_leave" property="restTurnCompenLeave" />
                <result column="holiday_turn_compen_leave" property="holidayTurnCompenLeave" />
                <result column="working_transfer_overtime" property="workingTransferOvertime" />
                <result column="rest_transfer_overtime" property="restTransferOvertime" />
                <result column="holiday_transfer_overtime" property="holidayTransferOvertime" />
                <result column="day1" property="day1" />
                <result column="day2" property="day2" />
                <result column="day3" property="day3" />
                <result column="day4" property="day4" />
                <result column="day5" property="day5" />
                <result column="day6" property="day6" />
                <result column="day7" property="day7" />
                <result column="day8" property="day8" />
                <result column="day9" property="day9" />
                <result column="day10" property="day10" />
                <result column="day11" property="day11" />
                <result column="day12" property="day12" />
                <result column="day13" property="day13" />
                <result column="day14" property="day14" />
                <result column="day15" property="day15" />
                <result column="day16" property="day16" />
                <result column="day17" property="day17" />
                <result column="day18" property="day18" />
                <result column="day19" property="day19" />
                <result column="day20" property="day20" />
                <result column="day21" property="day21" />
                <result column="day22" property="day22" />
                <result column="day23" property="day23" />
                <result column="day24" property="day24" />
                <result column="day25" property="day25" />
                <result column="day26" property="day26" />
                <result column="day27" property="day27" />
                <result column="day28" property="day28" />
                <result column="day29" property="day29" />
                <result column="day30" property="day30" />
                <result column="day31" property="day31" />
                <result column="belong_year" property="belongYear" />
                <result column="belong_month" property="belongMonth" />
                <result column="org_code" property="orgCode" />
                <result column="last_modified" property="lastModified" />
    </resultMap>
    
    <resultMap id="SummarydataMap" type="cn.timer.api.dto.kqmk.KqglAssoMonthPunchSummaryDto" >
                <id column="id" property="id" />
                <result column="name" property="name" />
                <result column="num" property="num" />
                <result column="dept" property="dept" />
                <result column="post" property="post" />
                <result column="att_group" property="attGroup" />
                <result column="attname" property="attname" />
                <result column="shift" property="shift" />
                <result column="days_on_duty" property="daysOnDuty" />
                <result column="actual_att_days" property="actualAttDays" />
                <result column="days_off" property="daysOff" />
                <result column="working_hours" property="workingHours" />
                <result column="late_times" property="lateTimes" />
                <result column="late_hours" property="lateHours" />
                <result column="serious_late_times" property="seriousLateTimes" />
                <result column="serious_late_hours" property="seriousLateHours" />
                <result column="absen_late_times" property="absenLateTimes" />
                <result column="early_leave_times" property="earlyLeaveTimes" />
                <result column="length_early_leave" property="lengthEarlyLeave" />
                <result column="number_work_card_shortage" property="numberWorkCardShortage" />
                <result column="number_duty_card_shortage" property="numberDutyCardShortage" />
                <result column="absenteeism_days" property="absenteeismDays" />
                <result column="length_business_trip" property="lengthBusinessTrip" />
                <result column="time_out" property="timeOut" />
                <result column="total_overtime_hours" property="totalOvertimeHours" />
                <result column="working_turn_compen_leave" property="workingTurnCompenLeave" />
                <result column="rest_turn_compen_leave" property="restTurnCompenLeave" />
                <result column="holiday_turn_compen_leave" property="holidayTurnCompenLeave" />
                <result column="working_transfer_overtime" property="workingTransferOvertime" />
                <result column="rest_transfer_overtime" property="restTransferOvertime" />
                <result column="holiday_transfer_overtime" property="holidayTransferOvertime" />
                <result column="day1" property="day1" />
                <result column="day2" property="day2" />
                <result column="day3" property="day3" />
                <result column="day4" property="day4" />
                <result column="day5" property="day5" />
                <result column="day6" property="day6" />
                <result column="day7" property="day7" />
                <result column="day8" property="day8" />
                <result column="day9" property="day9" />
                <result column="day10" property="day10" />
                <result column="day11" property="day11" />
                <result column="day12" property="day12" />
                <result column="day13" property="day13" />
                <result column="day14" property="day14" />
                <result column="day15" property="day15" />
                <result column="day16" property="day16" />
                <result column="day17" property="day17" />
                <result column="day18" property="day18" />
                <result column="day19" property="day19" />
                <result column="day20" property="day20" />
                <result column="day21" property="day21" />
                <result column="day22" property="day22" />
                <result column="day23" property="day23" />
                <result column="day24" property="day24" />
                <result column="day25" property="day25" />
                <result column="day26" property="day26" />
                <result column="day27" property="day27" />
                <result column="day28" property="day28" />
                <result column="day29" property="day29" />
                <result column="day30" property="day30" />
                <result column="day31" property="day31" />
                <result column="belong_year" property="belongYear" />
                <result column="belong_month" property="belongMonth" />
                <result column="org_code" property="orgCode" />
                <result column="last_modified" property="lastModified" />
                
                <collection property="balanceTo" ofType="cn.timer.api.dto.kqmk.BalanceSheetDataDto">
			   		<result column="leaverulesid" property="leaverulesid"/>
			   		<result column="balancedays" property="balancedays"/>
			    </collection>
    </resultMap>
    
    <resultMap id="DailyDetailsMap" type="cn.timer.api.dto.kqmk.DailyDetailsDto" >
                <result column="name" property="name" />
                <result column="num" property="num" />
                <result column="dept" property="dept" />
                <result column="post" property="post" />
                
                <result column="address" property="address" />
                <result column="remarks" property="remarks" />
                <result column="cardtype" property="cardtype" />
                <result column="macaddress" property="macaddress" />
                <result column="macname" property="macname" />
                
                 <result column="bcszid" property="bcszid" />
                 <result column="bcname" property="bcname" />
                 <result column="bcsbdk1" property="bcsbdk1" />
                 <result column="bcxbdk1" property="bcxbdk1" />
                 <result column="bcsbdk2" property="bcsbdk2" />
                 <result column="bcxbdk2" property="bcxbdk2" />
                 <result column="bcsbdk3" property="bcsbdk3" />
                 <result column="bcxbdk3" property="bcxbdk3" />
                
                <result column="attname" property="attname" />
                <result column="attdate" property="attdate" />
                <result column="userid" property="userid" />
                <result column="data" property="data" />
                <result column="sbdk1" property="sbdk1" />
                <result column="sbdk1jg" property="sbdk1jg" />
                <result column="xbdk1" property="xbdk1" />
                <result column="xbdk1jg" property="xbdk1jg" />
                <result column="sbdk2" property="sbdk2" />
                <result column="sbdk2jg" property="sbdk2jg" />
                <result column="xbdk2" property="xbdk2" />
                <result column="xbdk2jg" property="xbdk2jg" />
                <result column="sbdk3" property="sbdk3" />
                <result column="sbdk3jg" property="sbdk3jg" />
                <result column="xbdk3" property="xbdk3" />
                <result column="xbdk3jg" property="xbdk3jg" />
                <result column="ydkcs" property="ydkcs" />
                <result column="gzsc" property="gzsc" />
                <result column="qyid" property="qyid" />
                <result column="dksj" property="dksj" />
                <result column="yzcdcs" property="yzcdcs" />
                <result column="yzcdsc" property="yzcdsc" />
                <result column="kgcdfzs" property="kgcdfzs" />
                <result column="daysonduty" property="daysonduty" />
                <result column="daysoff" property="daysoff" />
				<result column="lengthbusinesstrip" property="lengthbusinesstrip" />
				<result column="timeout" property="timeout" />
				<result column="totalovertimehours" property="totalovertimehours" />
			    <result column="workingturncompenleave" property="workingturncompenleave" />
				<result column="restturncompenleave" property="restturncompenleave" />
				<result column="holidayturncompenleave" property="holidayturncompenleave" />
				<result column="workingtransferovertime" property="workingtransferovertime" />
				<result column="resttransferovertime" property="resttransferovertime" />
				<result column="holidaytransferovertime" property="holidaytransferovertime" />
			    <result column="leaverulesid" property="leaverulesid" />
			    <result column="duration" property="duration" />
			    
			    <collection property="balanceTo" ofType="cn.timer.api.dto.kqmk.BalanceSheetDataDto">
			   		<result column="leaverulesid" property="leaverulesid"/>
			   		<result column="balancedays" property="balancedays"/>
			    </collection>
    </resultMap>

    
     <select id="AttendanceSummaryData" resultMap="SummarydataMap">
     	select sum.*,
     	(select kqz.name from kqgl_main_kqz kqz where kqz.id = sum.att_group) as attname,
				yz.leaverulesid as leaverulesid,
				yz.duration as balancedays
			from kqgl_asso_month_punch_summary sum
			LEFT JOIN (SELECT les.id as leaverulesid,
						hz.user_id,
						hz.duration
			FROM kqgl_asso_leave_rules les
			LEFT JOIN (select ry.user_id,ry.leave_type_id,SUM(ry.duration) as duration
							from (
						select rel.user_id,rel.leave_type_id,rel.duration
						from kqgl_asso_relation_summary rel 
						where rel.approval_type = 2 
						and rel.app_time &gt;= #{param.staapptime}
						and rel.app_time &lt;= #{param.endapptime}
						GROUP BY rel.user_id,rel.leave_type_id,rel.duration
						) as ry
						GROUP BY ry.user_id,ry.leave_type_id
						) as hz on hz.leave_type_id = les.id
			WHERE les.org_code = #{param.orgCode}
			AND (les.leave_type = 2 OR les.is_open = 1)
			) as yz on yz.user_id = sum.num
			where sum.org_code = #{param.orgCode}
			and sum.belong_year = #{param.year}
			and sum.belong_month = #{param.month}
			<if test="param.query != null and param.query != ''">
				and (	sum.`name` like CONCAT('%',#{param.query},'%') or 
						sum.num like CONCAT('%',#{param.query},'%'))
			</if>
			<if test="param.attid != null and param.attid != ''">
				and sum.att_group = #{param.attid}
			</if>
			
     </select>

	<select id="Dailydetails" resultMap="DailyDetailsMap">
					select sum.`name`,sum.num,sum.dept,sum.post,
					(select kqz.name from kqgl_main_kqz kqz where kqz.id = sum.att_group) as attname,
					'' address,
					'' remarks,
					'' cardtype,
					'' macaddress,
					'' macname,
					IFNULL(rtj.bcszid, '') bcszid,
					IFNULL(rtj.bcname, '') bcname,
					IFNULL(rtj.bcsbdk1, '') bcsbdk1,
					IFNULL(rtj.bcxbdk1, '') bcxbdk1,
					IFNULL(rtj.bcsbdk2, '') bcsbdk2,
					IFNULL(rtj.bcxbdk2, '') bcxbdk2,
					IFNULL(rtj.bcsbdk3, '') bcsbdk3,
					IFNULL(rtj.bcxbdk3, '') bcxbdk3,
					IFNULL(rtj.attdate, '') attdate,
					IFNULL(rtj.userid,'') userid,
					IFNULL(rtj.data,'') data,
					IFNULL(rtj.sbdk1,'') sbdk1,
					IFNULL(rtj.sbdk1jg,'') sbdk1jg,
					IFNULL(rtj.xbdk1 ,'') xbdk1,
					IFNULL(rtj.xbdk1jg,'') xbdk1jg,
					IFNULL(rtj.sbdk2 ,'') sbdk2,
					IFNULL(rtj.sbdk2jg ,'') sbdk2jg,
					IFNULL(rtj.xbdk2 ,'') xbdk2,
					IFNULL(rtj.xbdk2jg,'') xbdk2jg,
					IFNULL(rtj.sbdk3 ,'') sbdk3,
					IFNULL(rtj.sbdk3jg ,'') sbdk3jg,
					IFNULL(rtj.xbdk3,'') xbdk3,
					IFNULL(rtj.xbdk3jg ,'') xbdk3jg,
					IFNULL(rtj.ydkcs ,'') ydkcs,
					IFNULL(rtj.gzsc ,'') gzsc,
					IFNULL(rtj.qyid,'') qyid,
					IFNULL(rtj.dksj ,'') dksj,
					IFNULL(rtj.yzcdcs ,'') yzcdcs,
					IFNULL(rtj.yzcdsc ,'') yzcdsc,
					IFNULL(rtj.kgcdfzs,'') kgcdfzs,
					sum.days_on_duty as daysonduty,
					sum.days_off as daysoff,
					sum.length_business_trip as lengthbusinesstrip,
					sum.time_out as timeout,
					sum.total_overtime_hours as totalovertimehours,
					sum.working_turn_compen_leave as workingturncompenleave,
					sum.rest_turn_compen_leave as restturncompenleave,
					sum.holiday_turn_compen_leave as holidayturncompenleave,
					sum.working_transfer_overtime as workingtransferovertime,
					sum.rest_transfer_overtime as resttransferovertime,
					sum.holiday_transfer_overtime as holidaytransferovertime,
					mrtj.leaverulesid,
					mrtj.duration as balancedays
			from kqgl_asso_month_punch_summary sum
			LEFT JOIN (
				select DISTINCT info.`name` as username , 
						dkjl.attdate,bcsz.id as bcszid,
						bcsz.`name` as bcname,bcsz.sbdk1 as bcsbdk1,bcsz.xbdk1 as bcxbdk1,bcsz.sbdk2 as bcsbdk2,bcsz.xbdk2 as bcxbdk2,bcsz.sbdk3 as bcsbdk3,bcsz.xbdk3 as bcxbdk3,
						dkmx.`userid`,dkmx.`data` ,dkmx.`sbdk1`,dkmx.`sbdk1jg`,dkmx.`xbdk1` ,dkmx.`xbdk1jg`,dkmx.`sbdk2` ,dkmx.`sbdk2jg` ,dkmx.`xbdk2` ,
						dkmx.`xbdk2jg`,dkmx.`sbdk3` ,dkmx.`sbdk3jg` ,dkmx.`xbdk3`,dkmx.`xbdk3jg` ,dkmx.`ydkcs` ,dkmx.`gzsc` ,dkmx.`qyid`,dkmx.`dksj` ,
						dkmx.`yzcdcs` ,dkmx.`yzcdsc` ,dkmx.`kgcdfzs`
					from kqgl_asso_dkmx dkmx 
					LEFT JOIN yggl_main_emp as info on info.emp_num = dkmx.userid and info.org_code = 117
					LEFT JOIN kqgl_asso_dkjl as dkjl on dkjl.dkmxid = dkmx.id
					LEFT JOIN kqgl_asso_bcsz as bcsz on bcsz.id = dkjl.bcid
					where dkmx.qyid = #{param.orgCode}
					and dkmx.`data` = #{param.times}
			) as rtj on rtj.userid = sum.num
			LEFT JOIN (SELECT les.id as leaverulesid,hz.user_id,hz.duration
						FROM kqgl_asso_leave_rules les
						LEFT JOIN (select ry.user_id,ry.leave_type_id,SUM(ry.duration) as duration
							from (
						select rel.user_id,rel.leave_type_id,rel.duration
						from kqgl_asso_relation_summary rel 
						where rel.approval_type = 2 
						and rel.app_time = #{param.times}
						GROUP BY rel.user_id,rel.leave_type_id,rel.duration
						) as ry
						GROUP BY ry.user_id,ry.leave_type_id) as hz on hz.leave_type_id = les.id
						WHERE les.org_code = #{param.orgCode}
						AND (les.leave_type = 2 OR les.is_open = 1)
				) as mrtj on mrtj.user_id = sum.num
			where sum.org_code = #{param.orgCode}
			and sum.belong_year = #{param.year}
			and sum.belong_month = #{param.month}
			<if test="param.query != null and param.query != ''">
				and (	sum.`name` like CONCAT('%',#{param.query},'%') or 
						sum.num like CONCAT('%',#{param.query},'%'))
			</if>
			<if test="param.attid != null and param.attid != ''">
				and sum.att_group = #{param.attid}
			</if>
	</select>


</mapper>