AvailablePositionsIndicatorMapper.xml 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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.sundot.airport.system.mapper.portrait.AvailablePositionsIndicatorMapper">
  6. <resultMap type="com.sundot.airport.system.domain.portrait.PositionInfo" id="PositionInfoResult">
  7. <result property="postId" column="post_id"/>
  8. <result property="postName" column="post_name"/>
  9. <result property="postCode" column="post_code"/>
  10. </resultMap>
  11. <resultMap type="com.sundot.airport.system.domain.portrait.PositionCompetencyStats"
  12. id="PositionCompetencyStatsResult">
  13. <result property="postName" column="post_name"/>
  14. <result property="competentCount" column="competent_count"/>
  15. <result property="totalCount" column="total_count"/>
  16. <result property="percentage" column="percentage"/>
  17. </resultMap>
  18. <sql id="userIdsCondition">
  19. <foreach collection="userIds" item="item" open="(" separator="," close=")">
  20. #{item}
  21. </foreach>
  22. </sql>
  23. <!-- 查询个人可上岗岗位列表 -->
  24. <select id="queryPersonalAvailablePositions" parameterType="Long" resultMap="PositionInfoResult">
  25. select p.post_name, p.post_id, p.post_code
  26. from sys_post p
  27. left join sys_user_post up on up.post_id = p.post_id
  28. left join sys_user u on u.user_id = up.user_id
  29. where u.user_id = #{userId}
  30. and u.del_flag = '0'
  31. and u.status = '0'
  32. </select>
  33. <!-- 查询组织岗位胜任统计 -->
  34. <select id="queryOrgPositionCompetencyStats" resultMap="PositionCompetencyStatsResult">
  35. SELECT
  36. p.post_id,
  37. p.post_name,
  38. COUNT(u.user_id) as competent_count,
  39. (SELECT COUNT(*) FROM sys_user WHERE user_id in
  40. <include refid="userIdsCondition"/>
  41. and del_flag='0' and status='0') as total_count,
  42. ROUND(COUNT(u.user_id) * 100.0 / (SELECT COUNT(*) FROM sys_user WHERE user_id in
  43. <include refid="userIdsCondition"/>
  44. and del_flag='0' and status='0'), 2) as percentage
  45. from sys_post p
  46. left join sys_user_post up on up.post_id = p.post_id
  47. left join sys_user u on u.user_id = up.user_id AND u.del_flag='0' and u.status='0'
  48. WHERE u.user_id in
  49. <include refid="userIdsCondition"/>
  50. and u.del_flag='0' and u.status='0'
  51. GROUP BY p.post_id, p.post_name
  52. </select>
  53. </mapper>