LaborPersonMapper.xml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.zhgd.scs.mapper.LaborPersonMapper">
  6. <select id="pagelist" resultType="com.zhgd.scs.domain.vo.LaborPersonPageVo">
  7. SELECT p.*,
  8. wt.name workerTypeName,
  9. u.abbr_name unitName,
  10. d.name departmentName
  11. FROM labor_person p
  12. LEFT JOIN sys_worker_type wt ON p.worker_type_id = wt.id
  13. LEFT JOIN labor_unit u ON p.unit_id = u.id
  14. LEFT JOIN labor_department d ON p.department_id = d.id
  15. WHERE p.deleted=0
  16. <if test="projectId!=null">
  17. AND p.project_id = #{projectId}
  18. </if>
  19. <if test="unitId!=null">
  20. AND p.unit_id = #{unitId}
  21. </if>
  22. <if test="departmentId!=null">
  23. AND p.department_id = #{departmentId}
  24. </if>
  25. <if test="workerTypeId!=null">
  26. AND p.worker_type_id = #{workerTypeId}
  27. </if>
  28. <if test="name!=null and name!= ''">
  29. AND p.name LIKE concat('%',#{name},'%')
  30. </if>
  31. <if test="startDate!=null and startDate!= '' and endDate!=null and endDate!= ''">
  32. AND p.in_date BETWEEN #{startDate} AND #{endDate}
  33. </if>
  34. </select>
  35. <select id="gettotalNumberOn" resultType="java.lang.Integer">
  36. select count(l.id)
  37. from access_latest_record l
  38. left join labor_person p on l.idcard = p.id_card and p.deleted=0 and p.state=1
  39. where l.project_id=#{projectId} and l.record_type = 0
  40. </select>
  41. <select id="gettotalNumberToday" resultType="java.lang.Integer">
  42. SELECT count(*) AS in_count
  43. FROM access_date_attendance_data d
  44. left join labor_person p on p.id_card = d.idcard and p.deleted=0 and p.state=1
  45. where d.project_id = #{projectId} and d.date = DATE(now())
  46. </select>
  47. <select id="dueList" resultType="com.zhgd.scs.domain.vo.LaborPersonDueVo">
  48. SELECT p.*,
  49. wt.name workerTypeName,
  50. u.name unitName,
  51. d.name departmentName,
  52. p.${dueDate} dueDate,
  53. p.${dueNo} dueNo
  54. FROM labor_person p
  55. LEFT JOIN sys_worker_type wt ON p.worker_type_id = wt.id
  56. LEFT JOIN labor_unit u ON p.unit_id = u.id
  57. LEFT JOIN labor_department d ON p.department_id = d.id
  58. WHERE p.project_id=#{projectId} and p.state=1 and p.deleted=0
  59. <choose>
  60. <when test="due == 1 ">
  61. and p.${dueDate} between #{now} and #{dayAfter}
  62. </when>
  63. <otherwise>
  64. and p.${dueDate} &lt; #{now}
  65. </otherwise>
  66. </choose>
  67. </select>
  68. <select id="unitClassify" resultType="com.zhgd.scs.domain.vo.NameCountVo">
  69. SELECT lu.abbr_name name, COUNT(lp.unit_id) AS count
  70. FROM labor_unit lu
  71. LEFT JOIN labor_person lp ON lu.id = lp.unit_id AND lp.state = 1 and lp.deleted=0
  72. WHERE lu.project_id=#{projectId}
  73. GROUP BY lu.id
  74. ORDER BY count DESC
  75. </select>
  76. <select id="workerTypeClassify" resultType="com.zhgd.scs.domain.vo.NameCountVo">
  77. SELECT wt.name, COUNT(lp.worker_type_id) AS count,wt.id
  78. FROM sys_worker_type wt
  79. 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
  80. GROUP BY wt.id
  81. ORDER BY count DESC
  82. </select>
  83. <select id="typeClassify" resultType="com.zhgd.scs.domain.vo.NameCountVo">
  84. SELECT lp.type name, COUNT(lp.type) AS count
  85. FROM labor_person AS lp
  86. WHERE lp.state = 1 AND lp.project_id = #{projectId} and lp.deleted=0
  87. GROUP BY lp.type
  88. ORDER BY count DESC;
  89. </select>
  90. <select id="getInfoById" resultType="com.zhgd.scs.domain.vo.LaborPersonPageVo">
  91. SELECT p.*,
  92. wt.name workerTypeName,
  93. u.abbr_name unitName,
  94. d.name departmentName
  95. FROM labor_person p
  96. LEFT JOIN sys_worker_type wt ON p.worker_type_id = wt.id
  97. LEFT JOIN labor_unit u ON p.unit_id = u.id
  98. LEFT JOIN labor_department d ON p.department_id = d.id
  99. WHERE p.id = #{id}
  100. </select>
  101. <select id="getInfoByIdCard" resultType="com.zhgd.scs.domain.vo.LaborPersonPageVo">
  102. SELECT p.*,
  103. wt.name workerTypeName,
  104. u.abbr_name unitName,
  105. d.name departmentName
  106. FROM labor_person p
  107. LEFT JOIN sys_worker_type wt ON p.worker_type_id = wt.id
  108. LEFT JOIN labor_unit u ON p.unit_id = u.id
  109. LEFT JOIN labor_department d ON p.department_id = d.id
  110. WHERE p.id_card = #{idCard}
  111. AND p.state = 1
  112. AND p.deleted = 0
  113. </select>
  114. <select id="getLatestRecord" resultType="com.zhgd.scs.domain.vo.LaborPersonPageVo">
  115. SELECT p.*,
  116. wt.name workerTypeName,
  117. u.abbr_name unitName,
  118. d.name departmentName,
  119. r.time,
  120. r.flag
  121. FROM
  122. ( SELECT * FROM access_person_record WHERE project_id=#{projectId} ORDER BY time DESC LIMIT 5 ) r
  123. LEFT JOIN labor_person p ON r.person_id = p.id
  124. LEFT JOIN sys_worker_type wt ON p.worker_type_id = wt.id
  125. LEFT JOIN labor_unit u ON p.unit_id = u.id
  126. LEFT JOIN labor_department d ON p.department_id = d.id
  127. ORDER BY
  128. r.time DESC
  129. </select>
  130. <select id="getDashPostClassify" resultType="com.zhgd.scs.domain.vo.NameOnAllRate">
  131. select a.name, a.count_all, ifnull(b.count_on, 0) count_on,a.id
  132. from (
  133. SELECT c.name,
  134. c.id,
  135. count(p.id) count_all
  136. FROM labor_person p
  137. LEFT JOIN sys_worker_type c ON p.worker_type_id = c.id
  138. WHERE c.id IS NOT NULL
  139. and p.state = 1
  140. and p.deleted = 0
  141. and p.project_id=#{projectId}
  142. GROUP BY c.id) a
  143. left join (
  144. select c.id,
  145. count(l.id) count_on
  146. from access_latest_record l
  147. LEFT JOIN labor_person p ON p.id = l.person_id
  148. LEFT JOIN sys_worker_type c ON p.worker_type_id = c.id
  149. where DATE(record_time) = date(now())
  150. and c.id IS NOT NULL
  151. and p.state = 1
  152. and p.deleted = 0
  153. and l.record_type = 0
  154. and l.project_id=#{projectId}
  155. GROUP BY c.id) b on a.id = b.id
  156. </select>
  157. <select id="getDashCompanyClassify" resultType="com.zhgd.scs.domain.vo.NameOnAllRate">
  158. select a.count_all, a.name name, ifnull(b.count_on, 0) count_on
  159. from (SELECT u.abbr_name name,
  160. p.unit_id,
  161. count(p.id) count_all
  162. FROM labor_person p
  163. left join labor_unit u on u.id=p.unit_id
  164. WHERE p.unit_id IS NOT NULL
  165. and p.state = 1
  166. and p.deleted = 0
  167. and p.project_id=#{projectId}
  168. GROUP BY p.unit_id) a
  169. left join (select p.unit_id,
  170. count(l.id) count_on
  171. from access_latest_record l
  172. LEFT JOIN labor_person p ON p.id = l.person_id
  173. where DATE(record_time) = date(now())
  174. and p.unit_id IS NOT NULL
  175. and p.state = 1
  176. and p.deleted = 0
  177. and l.record_type = 0
  178. and l.project_id=#{projectId}
  179. GROUP BY p.unit_id) b on a.unit_id = b.unit_id
  180. </select>
  181. <select id="ageClassifyAll" resultType="com.zhgd.scs.domain.vo.AgeVO">
  182. SELECT age_temp AS age, COUNT(*) AS count
  183. FROM (
  184. SELECT
  185. CASE
  186. WHEN (YEAR(NOW()) - born_year) BETWEEN 20 AND 29 THEN '20-29'
  187. WHEN (YEAR(NOW()) - born_year) BETWEEN 30 AND 39 THEN '30-39'
  188. WHEN (YEAR(NOW()) - born_year) BETWEEN 40 AND 49 THEN '40-49'
  189. WHEN (YEAR(NOW()) - born_year) BETWEEN 50 AND 59 THEN '50-59'
  190. END AS age_temp
  191. FROM labor_person
  192. WHERE born_year IS NOT NULL
  193. AND (YEAR(NOW()) - born_year) BETWEEN 20 AND 59
  194. AND state = 1 and deleted =0 and project_id =#{projectId}
  195. ) AS a
  196. GROUP BY age_temp;
  197. </select>
  198. <select id="ageClassifyOn" resultType="com.zhgd.scs.domain.vo.AgeVO">
  199. SELECT age_temp AS age, COUNT(*) AS count
  200. FROM (
  201. SELECT
  202. CASE
  203. WHEN (YEAR(NOW()) - p.born_year) BETWEEN 20 AND 29 THEN '20-29'
  204. WHEN (YEAR(NOW()) - p.born_year) BETWEEN 30 AND 39 THEN '30-39'
  205. WHEN (YEAR(NOW()) - p.born_year) BETWEEN 40 AND 49 THEN '40-49'
  206. WHEN (YEAR(NOW()) - p.born_year) BETWEEN 50 AND 59 THEN '50-59'
  207. END AS age_temp
  208. FROM labor_person p
  209. JOIN access_latest_record l ON p.id = l.person_id
  210. WHERE p.born_year IS NOT NULL
  211. AND (YEAR(NOW()) - p.born_year) BETWEEN 20 AND 59
  212. AND l.record_type = 0
  213. AND p.state = 1
  214. and p.deleted =0
  215. and l.project_id =#{projectId}
  216. ) AS USER
  217. GROUP BY age_temp;
  218. </select>
  219. <select id="sexClassifyAll" resultType="com.zhgd.scs.domain.vo.SexVo">
  220. SELECT p.gender,
  221. count(*) value
  222. FROM (select gender
  223. from labor_person
  224. WHERE state = 1 and deleted =0
  225. and project_id =#{projectId}
  226. ) p
  227. group by p.gender
  228. </select>
  229. <select id="sexClassifyOn" resultType="com.zhgd.scs.domain.vo.SexVo">
  230. SELECT p.gender, count(*) value
  231. FROM (
  232. SELECT gender
  233. FROM labor_person,
  234. access_latest_record
  235. where labor_person.id = access_latest_record.person_id
  236. and access_latest_record.record_type = 0 and labor_person.project_id =#{projectId}
  237. ) p
  238. group by p.gender
  239. </select>
  240. <select id="genderClassify" resultType="com.zhgd.scs.domain.vo.NameCountVo">
  241. SELECT lp.gender name, COUNT(lp.id) AS count
  242. FROM labor_person lp
  243. WHERE lp.state = 1 and lp.deleted=0 and lp.project_id=#{projectId}
  244. GROUP BY lp.gender
  245. ORDER BY count DESC
  246. </select>
  247. <select id="exportPage" resultType="com.zhgd.scs.domain.vo.LaborPersonExportVo">
  248. SELECT p.*,
  249. wt.name workerTypeName,
  250. u.abbr_name unitName,
  251. d.name departmentName
  252. FROM labor_person p
  253. LEFT JOIN sys_worker_type wt ON p.worker_type_id = wt.id
  254. LEFT JOIN labor_unit u ON p.unit_id = u.id
  255. LEFT JOIN labor_department d ON p.department_id = d.id
  256. WHERE p.deleted=0
  257. <if test="projectId!=null">
  258. AND p.project_id = #{projectId}
  259. </if>
  260. <if test="unitId!=null">
  261. AND p.unit_id = #{unitId}
  262. </if>
  263. <if test="departmentId!=null">
  264. AND p.department_id = #{departmentId}
  265. </if>
  266. <if test="workerTypeId!=null">
  267. AND p.worker_type_id = #{workerTypeId}
  268. </if>
  269. <if test="name!=null and name!= ''">
  270. AND p.name LIKE concat('%',#{name},'%')
  271. </if>
  272. <if test="startDate!=null and startDate!= '' and endDate!=null and endDate!= ''">
  273. AND p.in_date BETWEEN #{startDate} AND #{endDate}
  274. </if>
  275. </select>
  276. </mapper>