123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- <?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.zhgd.scs.mapper.LaborPersonMapper">
- <select id="pagelist" resultType="com.zhgd.scs.domain.vo.LaborPersonPageVo">
- SELECT p.*,
- wt.name workerTypeName,
- u.abbr_name unitName,
- d.name departmentName
- FROM labor_person p
- LEFT JOIN sys_worker_type wt ON p.worker_type_id = wt.id
- LEFT JOIN labor_unit u ON p.unit_id = u.id
- LEFT JOIN labor_department d ON p.department_id = d.id
- WHERE p.deleted=0
- <if test="projectId!=null">
- AND p.project_id = #{projectId}
- </if>
- <if test="unitId!=null">
- AND p.unit_id = #{unitId}
- </if>
- <if test="departmentId!=null">
- AND p.department_id = #{departmentId}
- </if>
- <if test="workerTypeId!=null">
- AND p.worker_type_id = #{workerTypeId}
- </if>
- <if test="name!=null and name!= ''">
- AND p.name LIKE concat('%',#{name},'%')
- </if>
- <if test="startDate!=null and startDate!= '' and endDate!=null and endDate!= ''">
- AND p.in_date BETWEEN #{startDate} AND #{endDate}
- </if>
- </select>
- <select id="gettotalNumberOn" resultType="java.lang.Integer">
- select count(l.id)
- from access_latest_record l
- left join labor_person p on l.idcard = p.id_card and p.deleted=0 and p.state=1
- where l.project_id=#{projectId} and l.record_type = 0
- </select>
- <select id="gettotalNumberToday" resultType="java.lang.Integer">
- SELECT count(*) AS in_count
- FROM access_date_attendance_data d
- left join labor_person p on p.id_card = d.idcard and p.deleted=0 and p.state=1
- where d.project_id = #{projectId} and d.date = DATE(now())
- </select>
- <select id="dueList" resultType="com.zhgd.scs.domain.vo.LaborPersonDueVo">
- SELECT p.*,
- wt.name workerTypeName,
- u.name unitName,
- d.name departmentName,
- p.${dueDate} dueDate,
- p.${dueNo} dueNo
- FROM labor_person p
- LEFT JOIN sys_worker_type wt ON p.worker_type_id = wt.id
- LEFT JOIN labor_unit u ON p.unit_id = u.id
- LEFT JOIN labor_department d ON p.department_id = d.id
- WHERE p.project_id=#{projectId} and p.state=1 and p.deleted=0
- <choose>
- <when test="due == 1 ">
- and p.${dueDate} between #{now} and #{dayAfter}
- </when>
- <otherwise>
- and p.${dueDate} < #{now}
- </otherwise>
- </choose>
- </select>
- <select id="unitClassify" resultType="com.zhgd.scs.domain.vo.NameCountVo">
- SELECT lu.abbr_name name, COUNT(lp.unit_id) AS count
- FROM labor_unit lu
- LEFT JOIN labor_person lp ON lu.id = lp.unit_id AND lp.state = 1 and lp.deleted=0
- WHERE lu.project_id=#{projectId}
- GROUP BY lu.id
- ORDER BY count DESC
- </select>
- <select id="workerTypeClassify" resultType="com.zhgd.scs.domain.vo.NameCountVo">
- SELECT wt.name, COUNT(lp.worker_type_id) AS count,wt.id
- FROM sys_worker_type wt
- LEFT JOIN labor_person lp ON wt.id = lp.worker_type_id AND lp.state = 1 AND lp.project_id=#{projectId} and lp.deleted=0
- GROUP BY wt.id
- ORDER BY count DESC
- </select>
- <select id="typeClassify" resultType="com.zhgd.scs.domain.vo.NameCountVo">
- SELECT lp.type name, COUNT(lp.type) AS count
- FROM labor_person AS lp
- WHERE lp.state = 1 AND lp.project_id = #{projectId} and lp.deleted=0
- GROUP BY lp.type
- ORDER BY count DESC;
- </select>
- <select id="getInfoById" resultType="com.zhgd.scs.domain.vo.LaborPersonPageVo">
- SELECT p.*,
- wt.name workerTypeName,
- u.abbr_name unitName,
- d.name departmentName
- FROM labor_person p
- LEFT JOIN sys_worker_type wt ON p.worker_type_id = wt.id
- LEFT JOIN labor_unit u ON p.unit_id = u.id
- LEFT JOIN labor_department d ON p.department_id = d.id
- WHERE p.id = #{id}
- </select>
- <select id="getInfoByIdCard" resultType="com.zhgd.scs.domain.vo.LaborPersonPageVo">
- SELECT p.*,
- wt.name workerTypeName,
- u.abbr_name unitName,
- d.name departmentName
- FROM labor_person p
- LEFT JOIN sys_worker_type wt ON p.worker_type_id = wt.id
- LEFT JOIN labor_unit u ON p.unit_id = u.id
- LEFT JOIN labor_department d ON p.department_id = d.id
- WHERE p.id_card = #{idCard}
- AND p.state = 1
- AND p.deleted = 0
- </select>
- <select id="getLatestRecord" resultType="com.zhgd.scs.domain.vo.LaborPersonPageVo">
- SELECT p.*,
- wt.name workerTypeName,
- u.abbr_name unitName,
- d.name departmentName,
- r.time,
- r.flag
- FROM
- ( SELECT * FROM access_person_record WHERE project_id=#{projectId} ORDER BY time DESC LIMIT 5 ) r
- LEFT JOIN labor_person p ON r.person_id = p.id
- LEFT JOIN sys_worker_type wt ON p.worker_type_id = wt.id
- LEFT JOIN labor_unit u ON p.unit_id = u.id
- LEFT JOIN labor_department d ON p.department_id = d.id
- ORDER BY
- r.time DESC
- </select>
- <select id="getDashPostClassify" resultType="com.zhgd.scs.domain.vo.NameOnAllRate">
- select a.name, a.count_all, ifnull(b.count_on, 0) count_on,a.id
- from (
- SELECT c.name,
- c.id,
- count(p.id) count_all
- FROM labor_person p
- LEFT JOIN sys_worker_type c ON p.worker_type_id = c.id
- WHERE c.id IS NOT NULL
- and p.state = 1
- and p.deleted = 0
- and p.project_id=#{projectId}
- GROUP BY c.id) a
- left join (
- select c.id,
- count(l.id) count_on
- from access_latest_record l
- LEFT JOIN labor_person p ON p.id = l.person_id
- LEFT JOIN sys_worker_type c ON p.worker_type_id = c.id
- where DATE(record_time) = date(now())
- and c.id IS NOT NULL
- and p.state = 1
- and p.deleted = 0
- and l.record_type = 0
- and l.project_id=#{projectId}
- GROUP BY c.id) b on a.id = b.id
- </select>
- <select id="getDashCompanyClassify" resultType="com.zhgd.scs.domain.vo.NameOnAllRate">
- select a.count_all, a.name name, ifnull(b.count_on, 0) count_on
- from (SELECT u.abbr_name name,
- p.unit_id,
- count(p.id) count_all
- FROM labor_person p
- left join labor_unit u on u.id=p.unit_id
- WHERE p.unit_id IS NOT NULL
- and p.state = 1
- and p.deleted = 0
- and p.project_id=#{projectId}
- GROUP BY p.unit_id) a
- left join (select p.unit_id,
- count(l.id) count_on
- from access_latest_record l
- LEFT JOIN labor_person p ON p.id = l.person_id
- where DATE(record_time) = date(now())
- and p.unit_id IS NOT NULL
- and p.state = 1
- and p.deleted = 0
- and l.record_type = 0
- and l.project_id=#{projectId}
- GROUP BY p.unit_id) b on a.unit_id = b.unit_id
- </select>
- <select id="ageClassifyAll" resultType="com.zhgd.scs.domain.vo.AgeVO">
- SELECT age_temp AS age, COUNT(*) AS count
- FROM (
- SELECT
- CASE
- WHEN (YEAR(NOW()) - born_year) BETWEEN 20 AND 29 THEN '20-29'
- WHEN (YEAR(NOW()) - born_year) BETWEEN 30 AND 39 THEN '30-39'
- WHEN (YEAR(NOW()) - born_year) BETWEEN 40 AND 49 THEN '40-49'
- WHEN (YEAR(NOW()) - born_year) BETWEEN 50 AND 59 THEN '50-59'
- END AS age_temp
- FROM labor_person
- WHERE born_year IS NOT NULL
- AND (YEAR(NOW()) - born_year) BETWEEN 20 AND 59
- AND state = 1 and deleted =0 and project_id =#{projectId}
- ) AS a
- GROUP BY age_temp;
- </select>
- <select id="ageClassifyOn" resultType="com.zhgd.scs.domain.vo.AgeVO">
- SELECT age_temp AS age, COUNT(*) AS count
- FROM (
- SELECT
- CASE
- WHEN (YEAR(NOW()) - p.born_year) BETWEEN 20 AND 29 THEN '20-29'
- WHEN (YEAR(NOW()) - p.born_year) BETWEEN 30 AND 39 THEN '30-39'
- WHEN (YEAR(NOW()) - p.born_year) BETWEEN 40 AND 49 THEN '40-49'
- WHEN (YEAR(NOW()) - p.born_year) BETWEEN 50 AND 59 THEN '50-59'
- END AS age_temp
- FROM labor_person p
- JOIN access_latest_record l ON p.id = l.person_id
- WHERE p.born_year IS NOT NULL
- AND (YEAR(NOW()) - p.born_year) BETWEEN 20 AND 59
- AND l.record_type = 0
- AND p.state = 1
- and p.deleted =0
- and l.project_id =#{projectId}
- ) AS USER
- GROUP BY age_temp;
- </select>
- <select id="sexClassifyAll" resultType="com.zhgd.scs.domain.vo.SexVo">
- SELECT p.gender,
- count(*) value
- FROM (select gender
- from labor_person
- WHERE state = 1 and deleted =0
- and project_id =#{projectId}
- ) p
- group by p.gender
- </select>
- <select id="sexClassifyOn" resultType="com.zhgd.scs.domain.vo.SexVo">
- SELECT p.gender, count(*) value
- FROM (
- SELECT gender
- FROM labor_person,
- access_latest_record
- where labor_person.id = access_latest_record.person_id
- and access_latest_record.record_type = 0 and labor_person.project_id =#{projectId}
- ) p
- group by p.gender
- </select>
- <select id="genderClassify" resultType="com.zhgd.scs.domain.vo.NameCountVo">
- SELECT lp.gender name, COUNT(lp.id) AS count
- FROM labor_person lp
- WHERE lp.state = 1 and lp.deleted=0 and lp.project_id=#{projectId}
- GROUP BY lp.gender
- ORDER BY count DESC
- </select>
- <select id="exportPage" resultType="com.zhgd.scs.domain.vo.LaborPersonExportVo">
- SELECT p.*,
- wt.name workerTypeName,
- u.abbr_name unitName,
- d.name departmentName
- FROM labor_person p
- LEFT JOIN sys_worker_type wt ON p.worker_type_id = wt.id
- LEFT JOIN labor_unit u ON p.unit_id = u.id
- LEFT JOIN labor_department d ON p.department_id = d.id
- WHERE p.deleted=0
- <if test="projectId!=null">
- AND p.project_id = #{projectId}
- </if>
- <if test="unitId!=null">
- AND p.unit_id = #{unitId}
- </if>
- <if test="departmentId!=null">
- AND p.department_id = #{departmentId}
- </if>
- <if test="workerTypeId!=null">
- AND p.worker_type_id = #{workerTypeId}
- </if>
- <if test="name!=null and name!= ''">
- AND p.name LIKE concat('%',#{name},'%')
- </if>
- <if test="startDate!=null and startDate!= '' and endDate!=null and endDate!= ''">
- AND p.in_date BETWEEN #{startDate} AND #{endDate}
- </if>
- </select>
- </mapper>
|