YgglMainEmpMapper.xml 13.8 KB
Newer Older
东州 翁 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
<?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.yggl.YgglMainEmpMapper">

    <resultMap id="BaseResultMap" type="cn.timer.api.bean.yggl.YgglMainEmp" >
        	<id column="id" property="id" />
                <result column="emp_num" property="empNum" />
                <result column="phone" property="phone" />
                <result column="password" property="password" />
                <result column="head_url" property="headUrl" />
                <result column="name" property="name" />
                <result column="english_name" property="englishName" />
                <result column="sex" property="sex" />
                <result column="zj_type" property="zjType" />
                <result column="zj_num" property="zjNum" />
                <result column="sfzyx_time" property="sfzyxTime" />
                <result column="birthday" property="birthday" />
                <result column="age" property="age" />
                <result column="is_married" property="isMarried" />
                <result column="is_pregnant" property="isPregnant" />
                <result column="area" property="area" />
                <result column="mz" property="mz" />
                <result column="zzmm" property="zzmm" />
                <result column="jg" property="jg" />
                <result column="city" property="city" />
                <result column="hk_type" property="hkType" />
                <result column="hk_address" property="hkAddress" />
                <result column="qq" property="qq" />
                <result column="wechat" property="wechat" />
                <result column="email" property="email" />
                <result column="blood_type" property="bloodType" />
                <result column="language" property="language" />
                <result column="edu" property="edu" />
                <result column="zy" property="zy" />
                <result column="zz_remark" property="zzRemark" />
                <result column="job_type" property="jobType" />
                <result column="job_status" property="jobStatus" />
                <result column="rz_time" property="rzTime" />
                <result column="syq" property="syq" />
                <result column="zz_time" property="zzTime" />
                <result column="sjzz_time" property="sjzzTime" />
                <result column="is_jrkq" property="isJrkq" />
                <result column="job_num" property="jobNum" />
                <result column="work_address" property="workAddress" />
                <result column="work_phone" property="workPhone" />
                <result column="work_email" property="workEmail" />
                <result column="zpqd" property="zpqd" />
                <result column="bmgw_id" property="bmgwId" />
50
                <result column="bmgw_name" property="bmgwName" />
ilal committed
51
                <result column="custom_num" property="customNum" />
52
                
东州 翁 committed
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
                <result column="org_code" property="orgCode" />
                <result column="unionid" property="unionid" />
                <result column="openid" property="openid" />
                <result column="mpopenid" property="mpopenid" />
                <result column="appopenid" property="appopenid" />
    </resultMap>
    
   <resultMap id="Bintu" type="cn.timer.api.dto.yggl.YgbintuDto" >
   		<id column="id" property="id" />
   			<result column="age" property="age" />
   			<result column="bmgwId" property="bmgwId" />
   			<result column="gw" property="gw" />
   			<result column="bm" property="bm" />
   			<result column="proname" property="proname" />
   			<result column="eduname" property="eduname" />
   			<result column="jobStatus" property="jobStatus" />
   			<result column="workage" property="workage" />
   </resultMap>
lal committed
71 72 73 74 75 76 77 78
   
   <resultMap id="DepartmentStaffMap" type="cn.timer.api.dto.zzgl.DepartmentStaffDto" >
   			<id column="id" property="id" />
   			<result column="empNum" property="empNum" />
   			<result column="name" property="name" />
   			<result column="phone" property="phone" />
   			<result column="bmgwname" property="bmgwname" />
   </resultMap>
东州 翁 committed
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127

    <sql id="Base_Column_List">
                id,
                emp_num,
                phone,
                password,
                head_url,
                name,
                english_name,
                sex,
                zj_type,
                zj_num,
                sfzyx_time,
                birthday,
                age,
                is_married,
                is_pregnant,
                area,
                mz,
                zzmm,
                jg,
                city,
                hk_type,
                hk_address,
                qq,
                wechat,
                email,
                blood_type,
                language,
                edu,
                zy,
                zz_remark,
                job_type,
                job_status,
                rz_time,
                syq,
                zz_time,
                sjzz_time,
                is_jrkq,
                job_num,
                work_address,
                work_phone,
                work_email,
                zpqd,
                bmgw_id,
                org_code,
                unionid,
                openid,
                mpopenid,
ilal committed
128 129
                appopenid,
                custom_num
东州 翁 committed
130 131
    </sql>
    
132 133 134 135 136 137 138 139 140 141 142 143 144 145
    <sql id="Base_Column_List_a">
                a.id,
                a.emp_num,
                a.phone,
                a.head_url,
                a.name,
                a.english_name,
                a.sex,
                a.birthday,
                a.jg,
                a.job_type,
                a.job_status,
                a.rz_time,
                a.bmgw_id,
tangzhaoqian committed
146 147 148
                a.org_code,
                a.zj_type,
                a.zj_num,
lal committed
149
                a.syq,
ilal committed
150 151
                a.zz_time,
                a.custom_num
tangzhaoqian committed
152
                
153 154
    </sql>
    
东州 翁 committed
155 156
     <!-- rsybp人事仪表盘 -->
    <select id="rsybp" resultMap="Bintu">
157 158 159
    	SELECT e.id AS id,IFNULL(e.age,0) AS age,IFNULL(e.bmgw_id,0) AS bmgwId,IFNULL(b.`name`,'null') AS gw,
    	IFNULL(bb.`name`,'null') AS bm,IFNULL( p.`name`,'null') AS proname,IFNULL(d.`name` ,'null')AS eduname,
    	IFNULL(e.job_status,0) AS jobStatus,IFNULL(datediff(CURDATE(),e.rz_time),0)AS workage
东州 翁 committed
160 161 162 163 164
		FROM yggl_main_emp e 
		LEFT JOIN zzgl_bmgw_m b ON b.id = e.bmgw_id 
		LEFT JOIN zzgl_bmgw_m bb ON bb.id = b.up_id
		LEFT JOIN province_class p ON  left (e.`jg`,2) = p.province
		LEFT JOIN education_class d ON d.number = e.edu
165
		WHERE e.org_code = #{orgCode}
东州 翁 committed
166
    </select>
167
    
lal committed
168 169 170 171 172 173 174 175 176 177 178
    <select id="DepartmentStaff" resultMap="DepartmentStaffMap">
    	select em.emp_num as empNum,
    		   em.`name` as empname,
    		   bm.`name` as bmgwname,
    		   em.phone 
			from yggl_main_emp em 
			LEFT JOIN zzgl_bmgw_m as bm on bm.id = em.bmgw_id
			where em.org_code = #{orgcode}
			and em.bmgw_id in (select bm.id from zzgl_bmgw_m bm
			WHERE bm.up_id = #{upid})
    </select>
179 180 181 182 183 184 185 186
    
    <select id="selectME" resultMap="BaseResultMap">
        SELECT 
        	<include refid="Base_Column_List_a" />,
        	(SELECT name FROM zzgl_bmgw_m WHERE id = (SELECT up_id FROM zzgl_bmgw_m WHERE id = a.bmgw_id limit 1) limit 1) as bmgw_name
        FROM yggl_main_emp a
        <where>
        	AND a.org_code = #{param.orgCode}
tangzhaoqian committed
187
        	AND a.job_status IN (0,1,2)
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217
        	<if test="param.jobType != null">
        		AND a.job_type = #{param.jobType}
        	</if>
        	<if test="param.jobStatus != null">
        		AND a.job_status = #{param.jobStatus}
        	</if>
        	<if test="param.query != null and param.query != ''">
        		AND (
        			a.name like CONCAT('%',#{param.query},'%') or
        			a.phone like CONCAT('%',#{param.query},'%')
        		)
        	</if>
        	<if test="param.empNums != null and param.empNums.size() > 0">
        		<choose>
					<when test="param.empNums.size() > 1">
						AND a.emp_num IN
						(
						<foreach item="it" index="index" collection="param.empNums" separator="," close="" >
				        	#{it}
						</foreach>
						) 
					</when>
					<otherwise>
						AND a.emp_num = #{param.empNums[0]}
					</otherwise>
				</choose>
        	</if>
        </where>
    </select>
    
218 219 220 221 222 223 224 225 226 227
    <!-- benyueLz本月离职人数 -->
    <select id="benyueLz" resultType="Integer">
		SELECT COUNT(datediff(CURDATE(),l.sjlz_time)) FROM yggl_main_lzb l WHERE datediff(CURDATE(),l.sjlz_time) <![CDATA[ <= ]]> 30 AND org_code = #{orgCode};
    </select>
    
     <!-- benyueZz本月转正人数 -->
    <select id="benyueZz" resultType="Integer">
    	SELECT COUNT(datediff(CURDATE(),e.sjzz_time)) FROM yggl_main_emp e WHERE datediff(CURDATE(),e.sjzz_time) <![CDATA[ <= ]]> 30 AND org_code = #{orgCode};
    </select>
    
东州 翁 committed
228 229 230
    <!-- 查询员工信息 搜索 分页 -->
	<select id="queryEmpMessage" resultType="cn.timer.api.dto.yggl.YgQueryDto">
    	SELECT
231
			a.name empName,
东州 翁 committed
232
			a.emp_num empNum,
233
			b.name deptName,
东州 翁 committed
234 235 236
			a.rz_time rzTime,
			a.job_type jobType,
			a.phone phone,
237
			a.job_status jobStatus,
邓实川 committed
238 239
			a.head_url headUrl,
			a.sex sex
东州 翁 committed
240 241 242 243 244 245
		FROM
			yggl_main_emp a
		LEFT JOIN zzgl_bmgw_m b ON a.bmgw_id = b.id
		WHERE
			a.org_code = #{orgCode}
		AND
246
			a.job_status in (0,1,2)
东州 翁 committed
247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365
		ORDER BY
			emp_num DESC
    </select>
    
	<!-- 查询在职员工(试用员工人数+正式员工人数) -->
	<select id="queryInservice" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
    	SELECT
			SUM(job_status=1) AS probation,
			SUM(job_status=2) AS regular
		FROM 
			yggl_main_emp
		WHERE
			org_code=#{orgCode}
    </select>
    
    <!-- 查询当月入职人数 -->
    <select id="queryInduction" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
    	SELECT
			EXTRACT(MONTH FROM rz_time) AS month,
			COUNT(emp_num) induction
		FROM 
			yggl_main_emp
		WHERE
			org_code=#{orgCode}
    </select>
    
    
    <!-- 查询本月转正人数  -->
    <select id="queryPositive" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
		SELECT
			EXTRACT(MONTH FROM sjzz_time) AS month,
			COUNT(emp_num) positive 
		FROM 
			yggl_main_emp
		WHERE
			org_code=#{orgCode}
	</select>
	
	<!-- 查询员工平均年龄  -->
    <select id="queryAvgAge" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
		SELECT
			avg(age) avgAge
		FROM
			yggl_main_emp
		WHERE
			org_code=#{orgCode}
	</select>
	
	<!-- 查询岗位上级部门id及名称及人数  -->
    <select id="queryDepartmentNum" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
		SELECT
			IFNULL(c.name,'null') updeptname,
			IFNULL(b.up_id,0) updeptid,
			count(1) updeptnum
		FROM
			yggl_main_emp y
		LEFT JOIN zzgl_bmgw_m b ON y.bmgw_id = b.id
		LEFT JOIN zzgl_bmgw_m c ON c.id = b.up_id
		WHERE
			y.org_code = #{orgCode}
		GROUP BY
			c.name,
			b.up_id
	</select>
	
	<!-- 查询岗位名称及人数 -->
	<select id="queryJobsNum" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
		SELECT
			IFNULL(b.name,'null') jobname,
			IFNULL(y.bmgw_id,0) jobid,
			count(1) jobnum
		FROM
			yggl_main_emp y
		LEFT JOIN zzgl_bmgw_m b ON y.bmgw_id = b.id
		WHERE
			y.org_code = #{orgCode}
		GROUP BY
			y.bmgw_id,
			b.name;
	</select>
	
	<!-- 学历及人数查询 -->
	<select id="queryEducation" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
		SELECT
			IFNULL(e.name,'null') education,count(y.edu) educationNum
		FROM
			yggl_main_emp y
		LEFT JOIN
			education_class e
		ON
			y.edu = e.id
		WHERE
			org_code = #{orgCode}
		GROUP BY
			e.name
		ORDER BY
			e.id ASC
	</select>
	
	<!-- 员工年龄分布查询 -->
	<select id="queryEmpAge" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
		<![CDATA[
		SELECT 
			SUM((CASE WHEN age < 0.5 THEN 1 ELSE 0 END)) AS lowerEighteen,
			SUM((CASE WHEN age >= 18 AND age < 25 THEN 1 ELSE 0 END)) AS eighteenToTwentyfive,
			SUM((CASE WHEN age >= 25 AND age < 32 THEN 1 ELSE 0 END)) AS twentyfiveToThirtytwo,
			SUM((CASE WHEN age >= 32 AND age < 38 THEN 1 ELSE 0 END)) AS thirtytwoToThirtyeight,
			SUM((CASE WHEN age >= 38 AND age < 45 THEN 1 ELSE 0 END)) AS thirtyeightToFortyfive,
			SUM((CASE WHEN age >=45 THEN 1 ELSE 0 END)) AS higherFortyfive
		FROM 
			yggl_main_emp
		WHERE
			org_code = #{orgCode}
			]]>
	</select>
	
	<!-- 籍贯统计(省份)查询 -->
	<select id="queryNativeplace" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
		SELECT
366
			IFNULL(c.city_name,'null') province,count(y.jg_id) provinceNum
东州 翁 committed
367 368 369
		FROM
			yggl_main_emp y
		LEFT JOIN
370
			common_area c
东州 翁 committed
371
		ON
372
			y.jg_id = c.code_id
东州 翁 committed
373 374 375
		WHERE
			org_code = #{orgCode}
		GROUP BY
376
			c.city_name
东州 翁 committed
377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395
	</select>
	
	<!-- 员工工龄分布查询 -->
	<select id="queryWorkingAge" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
	<![CDATA[
		SELECT 
			SUM((CASE WHEN TIMESTAMPDIFF(day, rz_time,now())/365 < 0.5 THEN 1 ELSE 0 END)) AS lowerHalfyear,
			SUM((CASE WHEN TIMESTAMPDIFF(day, rz_time,now())/365 >= 0.5 AND TIMESTAMPDIFF(day, rz_time,now())/365 < 1 THEN 1 ELSE 0 END)) AS halfYear,
			SUM((CASE WHEN TIMESTAMPDIFF(day, rz_time,now())/365 >= 1 AND TIMESTAMPDIFF(day, rz_time,now())/365 < 1.5 THEN 1 ELSE 0 END)) AS oneYear,
			SUM((CASE WHEN TIMESTAMPDIFF(day, rz_time,now())/365 >= 1.5 AND TIMESTAMPDIFF(day, rz_time,now())/365 < 2 THEN 1 ELSE 0 END)) AS onehalfYear,
			SUM((CASE WHEN TIMESTAMPDIFF(day, rz_time,now())/365 >= 2 AND TIMESTAMPDIFF(day, rz_time,now())/365 < 2.5 THEN 1 ELSE 0 END)) AS twoYear,
			SUM((CASE WHEN TIMESTAMPDIFF(day, rz_time,now())/365 >=2.5 THEN 1 ELSE 0 END)) AS higherTwohalfYear
		FROM 
			yggl_main_emp
		WHERE
			org_code = #{orgCode}
			]]>
	</select>

yuquan.zhu committed
396
</mapper>