SmartUserMapper.xml 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.template.mapper.SmartUserMapper">
  4. <resultMap type="com.template.model.vo.AffiliateUserVo" id="affiliateUserMap">
  5. <result property="id" column="id"/>
  6. <result property="name" column="name"/>
  7. <result property="cardNo" column="card_no"/>
  8. <result property="departmentId" column="department_id"/>
  9. <result property="headImage" column="head_image"/>
  10. </resultMap>
  11. <select id="queryAffiliateUserById" resultType="com.template.model.vo.AffiliateUserVo" resultMap="affiliateUserMap">
  12. select id,name,card_no,department_id,head_image from smart_user
  13. where find_in_set(id,(select affiliate from smart_user where
  14. deleted = 0
  15. <if test="id != null and id != ''">
  16. and id = #{id}
  17. </if>
  18. )) and deleted = 0
  19. </select>
  20. <resultMap type="com.template.model.vo.UserVo" id="smartUserPageMap">
  21. <result property="id" column="id"/>
  22. <result property="cardNo" column="card_no"/>
  23. <result property="name" column="name"/>
  24. <result property="identityId" column="identity_id"/>
  25. <result property="idCard" column="id_card"/>
  26. <result property="sexId" column="sex_id"/>
  27. <result property="departmentId" column="department_id"/>
  28. <result property="headImage" column="head_image"/>
  29. <result property="grade" column="grade"/>
  30. <result property="college" column="college"/>
  31. <result property="speciality" column="speciality"/>
  32. <result property="schoolClass" column="school_class"/>
  33. <result property="campus" column="campus"/>
  34. <result property="dormitoryNumber" column="dormitory_number"/>
  35. <result property="phone" column="phone"/>
  36. <result property="affiliate" column="affiliate"/>
  37. <result property="title" column="title"/>
  38. <result property="address" column="address"/>
  39. <result property="nation" column="nation"/>
  40. <result property="ofStudent" column="of_student"/>
  41. <result property="graduate" column="graduate"/>
  42. <result property="duties" column="duties"/>
  43. <result property="timeGroupId" column="time_group_id"/>
  44. </resultMap>
  45. <select id="querySmartUserPages" resultType="com.template.model.vo.UserVo" resultMap="smartUserPageMap">
  46. select
  47. id,card_no,name,identity_id,id_card,sex_id,department_id,head_image,grade,college,speciality,school_class,campus,dormitory_number,
  48. phone,affiliate,title,address,nation,of_student,graduate,duties,time_group_id
  49. from smart_user
  50. where deleted = 0 and is_cancel = 0
  51. <if test="departmentIds != null and departmentIds.size() > 0">
  52. and department_id in
  53. <foreach collection="departmentIds" item="departmentId" index="index" open="(" close=")" separator=",">
  54. ${departmentId}
  55. </foreach>
  56. </if>
  57. <if test="name != null and name != ''">
  58. and (name like '%' #{name} '%' or card_no like '%' #{name} '%')
  59. </if>
  60. </select>
  61. <resultMap type="com.template.model.pojo.SmartUser" id="smartUsersMap">
  62. <result property="cardNo" column="card_no"/>
  63. <result property="name" column="name"/>
  64. <result property="identityId" column="identity_id"/>
  65. <result property="idCard" column="id_card"/>
  66. <result property="sexId" column="sex_id"/>
  67. <result property="departmentId" column="department_id"/>
  68. <result property="headImage" column="head_image"/>
  69. <result property="grade" column="grade"/>
  70. <result property="college" column="college"/>
  71. <result property="speciality" column="speciality"/>
  72. <result property="schoolClass" column="school_class"/>
  73. <result property="campus" column="campus"/>
  74. <result property="dormitoryNumber" column="dormitory_number"/>
  75. <result property="phone" column="phone"/>
  76. <result property="affiliate" column="affiliate"/>
  77. <result property="title" column="title"/>
  78. <result property="address" column="address"/>
  79. <result property="nation" column="nation"/>
  80. <result property="ofStudent" column="of_student"/>
  81. <result property="graduate" column="graduate"/>
  82. <result property="duties" column="duties"/>
  83. </resultMap>
  84. <select id="querySmartUsers" resultType="com.template.model.pojo.SmartUser" resultMap="smartUsersMap">
  85. select
  86. card_no,name,identity_id,id_card,sex_id,department_id,head_image,grade,college,speciality,school_class,campus,dormitory_number,
  87. phone,affiliate,title,address,nation,of_student,graduate,duties from smart_user
  88. where deleted = 0 and is_cancel = 0
  89. <if test="departmentIds != null and departmentIds.size() > 0">
  90. and department_id in
  91. <foreach collection="departmentIds" item="departmentId" index="index" open="(" close=")" separator=",">
  92. ${departmentId}
  93. </foreach>
  94. </if>
  95. <if test="name != null and name != ''">
  96. and name like '%' #{name} '%'
  97. </if>
  98. </select>
  99. <resultMap type="com.template.model.vo.GradeVo" id="smartSecordUserPageMap">
  100. <result property="id" column="id"/>
  101. <result property="name" column="name"/>
  102. <result property="grade" column="grade"/>
  103. <result property="schoolClass" column="school_class"/>
  104. <result property="cardNo" column="card_no"/>
  105. </resultMap>
  106. <select id="querySmartSecordPage" resultType="com.template.model.vo.GradeVo" resultMap="smartSecordUserPageMap">
  107. select id,name,grade,school_class,card_no from smart_user
  108. where deleted = 0 and is_cancel = 0 and identity_id = 2
  109. <if test="name != null and name != ''">
  110. and name like '%' #{name} '%'
  111. </if>
  112. <if test="userId != null and userId != '' and userId != 0">
  113. and id != #{userId}
  114. </if>
  115. </select>
  116. <select id="warningUserList" resultType="com.template.model.dto.WarningUserDto">
  117. SELECT
  118. su.id AS id,
  119. su.`name` AS `name`,
  120. su.card_no AS cardNo,
  121. sd.`name` AS departmentName
  122. FROM
  123. `smart_user` su
  124. LEFT JOIN smart_department sd ON sd.id = su.department_id and sd.deleted=0
  125. where su.deleted = 0 and su.is_cancel = 0
  126. <if test="name != null and name != ''">
  127. and su.`name` like '%' #{name} '%'
  128. </if>
  129. </select>
  130. <select id="warningPushList" resultType="com.template.model.dto.WarningUserDto">
  131. SELECT su.id AS id,
  132. su.`name` AS `name`,
  133. su.card_no AS cardNo,
  134. sd.`name` AS departmentName
  135. FROM `smart_user` su
  136. LEFT JOIN smart_department sd ON sd.id = su.department_id and sd.deleted = 0
  137. WHERE su.is_push = 1
  138. and su.is_cancel = 0
  139. and su.deleted = 0
  140. </select>
  141. <resultMap type="com.template.model.vo.AffiliateParentVo" id="affiliateParentMap">
  142. <result property="id" column="id"/>
  143. <result property="name" column="name"/>
  144. </resultMap>
  145. <select id="queryAffiliateParents" resultType="com.template.model.vo.AffiliateParentVo"
  146. resultMap="affiliateParentMap">
  147. SELECT id,name FROM `smart_user`
  148. where deleted = 0 and is_cancel=0
  149. <if test="userId != null and userId != ''">
  150. and FIND_IN_SET(#{userId},affiliate)
  151. </if>
  152. </select>
  153. <select id="getAffiliateList" resultType="com.template.model.pojo.SmartUser">
  154. SELECT * FROM `smart_user`
  155. where deleted = 0 and is_cancel=0
  156. <if test="id != null and id != ''">
  157. and FIND_IN_SET(#{id},affiliate)
  158. </if>
  159. </select>
  160. <resultMap type="com.template.model.vo.SmartUserVo" id="smartUserMap">
  161. <result property="id" column="id"/>
  162. <result property="grade" column="grade"/>
  163. <result property="gradeId" column="grade_id"/>
  164. <result property="schoolClass" column="school_class"/>
  165. <result property="schoolClassId" column="school_class_id"/>
  166. <result property="name" column="name"/>
  167. <result property="cardNo" column="card_no"/>
  168. </resultMap>
  169. <select id="querySmartUserById" resultType="com.template.model.vo.SmartUserVo" resultMap="smartUserMap">
  170. select su.id,sg.name as grade,sg.id as grade_id,sc.name as school_class,sc.id as
  171. school_class_id,su.name,su.card_no
  172. from smart_user su
  173. left join smart_grade sg on sg.id = su.grade and sg.deleted = 0
  174. left join smart_class sc on sc.id = su.school_class and sc.deleted = 0
  175. where su.deleted = 0
  176. <if test="userId != null and userId != '' and userId != 0">
  177. and su.id = #{userId}
  178. </if>
  179. </select>
  180. <update id="deleteUserBatch" parameterType="com.template.model.vo.deleteUserVo">
  181. <foreach collection="list" item="item" index="index" open="" close="" separator=";">
  182. update smart_user
  183. <set>
  184. delete_reason=#{item.reason}
  185. </set>
  186. where id = ${item.id}
  187. </foreach>
  188. </update>
  189. <resultMap type="com.template.model.vo.UserDeleteVo" id="smartUserDeletePageMap">
  190. <result property="id" column="id"/>
  191. <result property="name" column="name"/>
  192. <result property="identityId" column="identity_id"/>
  193. <result property="departmentId" column="department_id"/>
  194. <result property="cardNo" column="card_no"/>
  195. <result property="headImage" column="head_image"/>
  196. <result property="deleteReason" column="delete_reason"/>
  197. </resultMap>
  198. <select id="queryUserDeletePage" resultType="com.template.model.vo.UserDeleteVo" resultMap="smartUserDeletePageMap">
  199. select id, name, identity_id, department_id, card_no, head_image, delete_reason
  200. from smart_user
  201. where delete_reason != '' or delete_reason != null
  202. order by update_time desc
  203. </select>
  204. <resultMap type="com.template.model.vo.SmartStudentVo" id="smartStudentMap">
  205. <result property="id" column="id"/>
  206. <result property="identityId" column="identity_id"/>
  207. <result property="bsStudentNo" column="bs_student_no"/>
  208. <result property="bsGradeNo" column="bs_grade_no"/>
  209. <result property="bsClassNo" column="bs_class_no"/>
  210. </resultMap>
  211. <select id="querySmartStudentById" resultType="com.template.model.vo.SmartStudentVo" resultMap="smartStudentMap">
  212. SELECT su.id,su.identity_id,su.bs_student_no,sg.bs_grade_no,sc.bs_class_no FROM smart_user su
  213. left join smart_grade sg on sg.deleted = 0 and sg.id = su.grade
  214. left join smart_class sc on sc.deleted = 0 and sc.id = su.school_class
  215. where su.deleted = 0
  216. <if test="userId != null and userId != '' and userId != 0">
  217. and su.id = #{userId}
  218. </if>
  219. </select>
  220. <select id="getAffiliateUser" resultType="com.template.model.vo.SmartUserAffiliateVo">
  221. SELECT su.*,sc.name as className FROM `smart_user` su
  222. left join smart_class sc on su.school_class=sc.id
  223. where su.deleted = 0 and su.is_cancel=0
  224. <if test="affiliate != null and affiliate != ''">
  225. and FIND_IN_SET(su.id,#{affiliate})
  226. </if>
  227. </select>
  228. <select id="studentSelect" resultType="com.template.model.vo.StudentSelectVo">
  229. SELECT su.`name` as name,
  230. su.head_image as headImage,
  231. su.card_no as cardNo,
  232. sc.`name` as className
  233. FROM `smart_user` su
  234. LEFT JOIN smart_class sc on su.school_class = sc.id
  235. WHERE su.deleted = 0
  236. AND su.is_cancel = 0
  237. AND su.identity_id = 2
  238. AND (su.`name` LIKE '%' #{keyWord} '%' or su.card_no= #{keyWord})
  239. </select>
  240. <select id="querySmartParentByIds" resultType="com.template.model.pojo.SmartUser">
  241. select * from smart_user
  242. where deleted = 0 and identity_id = 1 and is_cancel = 0
  243. <if test="studentIds != null and studentIds.size() > 0">
  244. and
  245. <foreach collection="studentIds" item="studentId" index="index" open="(" close=")" separator="or">
  246. FIND_IN_SET(${studentId},affiliate)
  247. </foreach>
  248. </if>
  249. </select>
  250. <select id="getAccessStatisticsCampus" resultType="com.template.model.vo.StatisticsCampusVo">
  251. SELECT su.id as userId,
  252. su.`name` as name,
  253. su.card_no as cardNo
  254. FROM `smart_user` su
  255. LEFT JOIN smart_access sa on sa.user_id = su.id
  256. WHERE su.deleted = 0
  257. AND su.is_cancel = 0
  258. AND su.identity_id = 2
  259. AND su.school_class = #{classId}
  260. AND sa.date_time >= #{startTime}
  261. AND #{endTime} >= sa.date_time
  262. GROUP BY su.id
  263. </select>
  264. <select id="getAttendanceStatisticsCampus" resultType="com.template.model.vo.StatisticsCampusVo">
  265. SELECT su.id as userId,
  266. su.`name` as name,
  267. su.card_no as cardNo
  268. FROM `smart_user` su
  269. LEFT JOIN smart_attendance sat on sat.user_id = su.id
  270. WHERE su.deleted = 0
  271. AND su.is_cancel = 0
  272. AND su.identity_id = 2
  273. AND su.school_class = #{classId}
  274. AND sat.`status`!=3
  275. AND sat.attend_time >= #{startTime}
  276. AND #{endTime} >= sat.attend_time
  277. GROUP BY su.id
  278. </select>
  279. <select id="getFaceDiscernStatisticsCampus" resultType="com.template.model.vo.StatisticsCampusVo">
  280. SELECT su.id as userId,
  281. su.`name` as name,
  282. su.card_no as cardNo
  283. FROM `smart_user` su
  284. LEFT JOIN smart_face_discern sfd on sfd.user_id = su.id
  285. WHERE su.deleted = 0
  286. AND su.is_cancel = 0
  287. AND su.identity_id = 2
  288. AND su.school_class = #{classId}
  289. AND sfd.date_time >= #{startTime}
  290. AND #{endTime} >= sfd.date_time
  291. GROUP BY su.id
  292. </select>
  293. <select id="getAckStatisticsCampus" resultType="com.template.model.vo.StatisticsCampusVo">
  294. SELECT su.id as userId,
  295. su.`name` as name,
  296. su.card_no as cardNo
  297. FROM `smart_user` su
  298. LEFT JOIN smart_attendance sat on sat.user_id = su.id
  299. WHERE su.deleted = 0
  300. AND su.is_cancel = 0
  301. AND su.identity_id = 2
  302. AND su.school_class = #{classId}
  303. AND sat.`status` = 6
  304. AND sat.initiate_time >= #{startTime}
  305. AND #{endTime} >= sat.initiate_time
  306. GROUP BY su.id
  307. </select>
  308. <select id="getClassStudent" resultType="com.template.model.vo.StatisticsCampusVo">
  309. SELECT su.id as userId,
  310. su.`name` as name,
  311. su.card_no as cardNo
  312. FROM `smart_user` su
  313. WHERE su.deleted = 0
  314. AND su.is_cancel = 0
  315. AND su.identity_id = 2
  316. AND su.school_class = #{classId}
  317. </select>
  318. <select id="getAccessStatisticsCampusManage" resultType="com.template.model.vo.StatisticsCampusManageVo">
  319. SELECT su.id as userId,
  320. su.`name` as name,
  321. su.card_no as cardNo,
  322. sc.`name` as className,
  323. sg.`name` as gradeName
  324. FROM `smart_user` su
  325. LEFT JOIN smart_access sa on sa.user_id = su.id
  326. LEFT JOIN smart_class sc on sc.id = su.school_class
  327. LEFT JOIN smart_grade sg on sg.id = sc.grade_id
  328. WHERE su.deleted = 0
  329. AND su.is_cancel = 0
  330. AND su.identity_id = 2
  331. AND sc.grade_id = #{gradeId}
  332. AND su.school_class = #{classId}
  333. AND sa.date_time >= #{startTime}
  334. AND #{endTime} >= sa.date_time
  335. <if test="keyWord != null and keyWord != '' ">
  336. and (su.name like '%' #{keyWord} '%' or su.card_no like '%' #{keyWord} '%')
  337. </if>
  338. GROUP BY su.id
  339. </select>
  340. <select id="getAttendanceStatisticsCampusManage"
  341. resultType="com.template.model.vo.StatisticsCampusManageVo">
  342. SELECT su.id as userId,
  343. su.`name` as name,
  344. su.card_no as cardNo,
  345. sc.`name` as className,
  346. sg.`name` as gradeName
  347. FROM `smart_user` su
  348. LEFT JOIN smart_attendance sat on sat.user_id = su.id
  349. LEFT JOIN smart_class sc on sc.id = su.school_class
  350. LEFT JOIN smart_grade sg on sg.id = sc.grade_id
  351. WHERE su.deleted = 0
  352. AND su.is_cancel = 0
  353. AND su.identity_id = 2
  354. AND sc.grade_id = #{gradeId}
  355. AND su.school_class = #{classId}
  356. AND sat.`status`!=3
  357. AND sat.attend_time >= #{startTime}
  358. AND #{endTime} >= sat.attend_time
  359. <if test="keyWord != null and keyWord != '' ">
  360. and (su.name like '%' #{keyWord} '%' or su.card_no like '%' #{keyWord} '%')
  361. </if>
  362. GROUP BY su.id
  363. </select>
  364. <select id="getFaceDiscernStatisticsCampusManage"
  365. resultType="com.template.model.vo.StatisticsCampusManageVo">
  366. SELECT su.id as userId,
  367. su.`name` as name,
  368. su.card_no as cardNo,
  369. sc.`name` as className,
  370. sg.`name` as gradeName
  371. FROM
  372. `smart_user` su
  373. LEFT JOIN smart_face_discern sfd on sfd.user_id=su.id
  374. LEFT JOIN smart_class sc on sc.id=su.school_class
  375. LEFT JOIN smart_grade sg on sg.id=sc.grade_id
  376. WHERE
  377. su.deleted = 0
  378. AND su.is_cancel = 0
  379. AND su.identity_id = 2
  380. AND sc.grade_id = #{gradeId}
  381. AND su.school_class=#{classId}
  382. AND sfd.date_time >= #{startTime}
  383. AND #{endTime} >= sfd.date_time
  384. <if test="keyWord != null and keyWord != '' ">
  385. and (su.name like '%' #{keyWord} '%' or su.card_no like '%' #{keyWord} '%')
  386. </if>
  387. GROUP BY su.id
  388. </select>
  389. <select id="getAckStatisticsCampusManage" resultType="com.template.model.vo.StatisticsCampusManageVo">
  390. SELECT su.id as userId,
  391. su.`name` as name,
  392. su.card_no as cardNo,
  393. sc.`name` as className,
  394. sg.`name` as gradeName
  395. FROM
  396. `smart_user` su
  397. LEFT JOIN smart_attendance sat on sat.user_id=su.id
  398. LEFT JOIN smart_class sc on sc.id=su.school_class
  399. LEFT JOIN smart_grade sg on sg.id=sc.grade_id
  400. WHERE
  401. su.deleted = 0
  402. AND su.is_cancel = 0
  403. AND su.identity_id = 2
  404. AND sc.grade_id = #{gradeId}
  405. AND su.school_class=#{classId}
  406. AND sat.`status`=6
  407. AND sat.initiate_time >= #{startTime}
  408. AND #{endTime} >= sat.initiate_time
  409. <if test="keyWord != null and keyWord != '' ">
  410. and (su.name like '%' #{keyWord} '%' or su.card_no like '%' #{keyWord} '%')
  411. </if>
  412. GROUP BY su.id
  413. </select>
  414. <select id="getClassStudentManage" resultType="com.template.model.vo.StatisticsCampusManageVo">
  415. SELECT su.id as userId,
  416. su.`name` as name,
  417. su.card_no as cardNo,
  418. sc.`name` as className,
  419. sg.`name` as gradeName
  420. FROM `smart_user` su
  421. LEFT JOIN smart_class sc on sc.id = su.school_class
  422. LEFT JOIN smart_grade sg on sg.id = sc.grade_id
  423. WHERE su.deleted = 0
  424. AND su.is_cancel = 0
  425. AND su.identity_id = 2
  426. AND sc.grade_id = #{gradeId}
  427. AND su.school_class = #{classId}
  428. <if test="keyWord != null and keyWord != '' ">
  429. and (su.name like '%' #{keyWord} '%' or su.card_no like '%' #{keyWord} '%')
  430. </if>
  431. </select>
  432. <select id="getPage" resultType="com.template.model.vo.SmartUserPageVo">
  433. SELECT su.id as id,
  434. su.`name` as name,
  435. su.card_no as cardNo,
  436. sc.`name` as className
  437. FROM `smart_user` su
  438. LEFT JOIN smart_class sc on sc.id = su.school_class
  439. WHERE su.deleted = 0
  440. AND su.is_cancel = 0
  441. AND su.identity_id = 2
  442. <if test="schoolClass != null and schoolClass != '' ">
  443. AND su.school_class = #{schoolClass}
  444. </if>
  445. <if test="keyWord != null and keyWord != '' ">
  446. and su.name like '%' #{keyWord} '%'
  447. </if>
  448. </select>
  449. <select id="getUserClassTotal" resultType="com.template.model.vo.StatisticsStatement">
  450. SELECT
  451. sc.`name` AS className,
  452. sg.`name` AS gradeName,
  453. count( su.id ) as count,
  454. sc.id as classId,
  455. sg.id as gradeId
  456. FROM
  457. smart_user su
  458. LEFT JOIN smart_class sc ON sc.id = su.school_class
  459. LEFT JOIN smart_grade sg ON sg.id = sc.grade_id
  460. WHERE
  461. su.deleted = 0
  462. AND su.is_cancel = 0
  463. AND su.identity_id = 2
  464. GROUP BY
  465. sc.id
  466. </select>
  467. <select id="getUserAckTotal" resultType="com.template.model.vo.StatisticsStatement">
  468. SELECT
  469. sc.`name` AS className,
  470. sg.`name` AS gradeName,
  471. count( su.id ) as count,
  472. sc.id as classId,
  473. sg.id as gradeId
  474. FROM
  475. `smart_user` su
  476. LEFT JOIN smart_class sc ON sc.id = su.school_class
  477. LEFT JOIN smart_grade sg ON sg.id = sc.grade_id
  478. LEFT JOIN smart_attendance sat ON sat.user_id = su.id
  479. WHERE
  480. su.deleted = 0
  481. AND su.is_cancel = 0
  482. AND su.identity_id = 2
  483. AND sat.initiate_time >= #{startTime}
  484. AND #{endTime} >= sat.initiate_time
  485. AND sat.`status` = 6
  486. GROUP BY
  487. sc.id
  488. </select>
  489. <select id="getUserNormalTotal" resultType="com.template.model.vo.StatisticsStatement">
  490. SELECT
  491. sc.`name` AS className,
  492. sg.`name` AS gradeName,
  493. count( su.id ) as count,
  494. sc.id as classId,
  495. sg.id as gradeId
  496. FROM
  497. `smart_user` su
  498. LEFT JOIN smart_class sc ON sc.id = su.school_class
  499. LEFT JOIN smart_grade sg ON sg.id = sc.grade_id
  500. LEFT JOIN ( SELECT DISTINCT ( user_id ) FROM smart_access sa WHERE sa.date_time >= #{startTime} AND #{endTime} >= sa.date_time ) a ON su.id = a.user_id
  501. LEFT JOIN ( SELECT DISTINCT ( user_id ) FROM smart_face_discern sfd WHERE sfd.date_time >= #{startTime} AND #{endTime} >= sfd.date_time ) b ON su.id = b.user_id
  502. LEFT JOIN (
  503. SELECT DISTINCT
  504. ( user_id )
  505. FROM
  506. smart_attendance sat
  507. WHERE
  508. ( sat.attend_time >= #{startTime} AND #{endTime} >= sat.attend_time AND sat.`status` != 3 )
  509. OR ( sat.initiate_time >= #{startTime} AND #{endTime} >= sat.initiate_time AND sat.`status` = 6 )
  510. ) c ON su.id = c.user_id
  511. WHERE
  512. su.deleted = 0
  513. AND su.is_cancel = 0
  514. AND su.identity_id = 2
  515. AND ( a.user_id IS NOT NULL OR b.user_id IS NOT NULL OR c.user_id IS NOT NULL )
  516. GROUP BY
  517. sc.id
  518. </select>
  519. </mapper>