ProjectMapper.xml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  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.hssx.cloudmodel.mapper.ProjectMapper">
  4. <!-- 通用查询映射结果 -->
  5. <resultMap id="BaseResultMap" type="com.hssx.cloudmodel.entity.Project">
  6. <id column="id" property="id" />
  7. <result column="project_name" property="projectName" />
  8. <result column="project_no" property="projectNo" />
  9. <result column="start_time" property="startTime" />
  10. <result column="end_time" property="endTime" />
  11. <result column="content" property="content" />
  12. <result column="creator_id" property="creatorId" />
  13. <result column="creator" property="creator" />
  14. <result column="is_delete" property="isDelete" />
  15. <result column="owner_company" property="ownerCompany" />
  16. <result column="owner_company_name" property="ownerCompanyName" />
  17. <result column="indate" property="indate" />
  18. <result column="manager_id" property="managerId" />
  19. <result column="manager" property="manager" />
  20. </resultMap>
  21. <resultMap id="BaseResultMapList" type="com.hssx.cloudmodel.entity.vo.ProjectVO">
  22. <id column="id" property="id" />
  23. <result column="project_name" property="projectName" />
  24. <result column="project_no" property="projectNo" />
  25. <result column="start_time" property="startTime" />
  26. <result column="end_time" property="endTime" />
  27. <result column="content" property="content" />
  28. <result column="creator_id" property="creatorId" />
  29. <result column="creator" property="creator" />
  30. <result column="is_delete" property="isDelete" />
  31. <result column="owner_company" property="ownerCompany" />
  32. <result column="owner_company_name" property="ownerCompanyName" />
  33. <result column="indate" property="indate" />
  34. <result column="manager_id" property="managerId" />
  35. <result column="manager" property="manager" />
  36. <!--以下是分页插件的一对多-->
  37. <collection property="customCompanies" javaType="java.util.List" ofType="com.hssx.cloudmodel.entity.CustomCompany"
  38. select="queryCustomCompaniesId" column="id">
  39. </collection>
  40. </resultMap>
  41. <!-- 以上一对多的映射-->
  42. <resultMap id="getCustomCompany" type="com.hssx.cloudmodel.entity.CustomCompany">
  43. <result column="company_id" property="companyId" />
  44. <result column="company_name" property="companyName" />
  45. </resultMap>
  46. <select id="getProjectListByUid" resultMap="BaseResultMapList">
  47. select
  48. p.id id,p.project_name project_name, p.creator creator,p.owner_company owner_company,
  49. p.owner_company_name owner_company_name,p.manager_id manager_id,p.manager manager,
  50. p.indate indate
  51. from
  52. tb_project p
  53. left join tb_project_user pu
  54. on p.id = pu.project_id
  55. left join tb_project_approve tpa
  56. on tpa.project_id = p.id
  57. <where>
  58. <!--<if test="currentUser.id != 1">
  59. pu.user_id = #{currentUser.id} OR p.`creator_id` = #{currentUser.id} OR p.`manager_id` = #{currentUser.id} OR tpa.approver_id = #{currentUser.id}
  60. </if>-->
  61. <if test="keyName != null and keyName != ''">
  62. AND p.project_name like concat('%',#{keyName},'%')
  63. </if>
  64. </where>
  65. GROUP BY p.id
  66. order by p.id desc
  67. </select>
  68. <select id="getProjectListByUidInProjectIds" resultMap="BaseResultMapList">
  69. select
  70. p.id id,p.project_name project_name, p.creator creator,p.owner_company owner_company,
  71. p.owner_company_name owner_company_name,p.manager_id manager_id,p.manager manager,
  72. p.indate indate
  73. from
  74. tb_project p
  75. left join tb_project_user pu
  76. on p.id = pu.project_id
  77. left join tb_project_approve tpa
  78. on tpa.project_id = p.id
  79. <where>
  80. p.id in <foreach collection="list" separator="," close=")" item="item" open="(" index="index">
  81. #{item}
  82. </foreach>
  83. <!--<if test="currentUser.id != 1">
  84. pu.user_id = #{currentUser.id} OR p.`creator_id` = #{currentUser.id} OR p.`manager_id` = #{currentUser.id} OR tpa.approver_id = #{currentUser.id}
  85. </if>-->
  86. <if test="keyName != null and keyName != ''">
  87. AND p.project_name like concat('%',#{keyName},'%')
  88. </if>
  89. </where>
  90. GROUP BY p.id
  91. order by p.id desc
  92. </select>
  93. <!--一对多的子查询 queryCustomCompaniesId-->
  94. <select id="queryCustomCompaniesId" resultMap="getCustomCompany">
  95. SELECT
  96. c.company_id company_id,c.company_name company_name
  97. from
  98. tb_project p
  99. RIGHT JOIN
  100. tb_custom_company c
  101. on
  102. c.project_id = p.id
  103. WHERE
  104. p.id = #{id}
  105. GROUP BY c.company_id
  106. </select>
  107. <!-- 通用查询结果列 -->
  108. <sql id="Base_Column_List">
  109. id, project_name, project_no, start_time, end_time, content, creator_id, creator, is_delete, owner_company, owner_company_name, indate, manager_id, manager
  110. </sql>
  111. <resultMap id="BaseResultMapVO" type="com.hssx.cloudmodel.entity.vo.ProjectVO">
  112. <id column="id" property="id" />
  113. <result column="project_name" property="projectName" />
  114. <result column="project_no" property="projectNo" />
  115. <result column="creator_id" property="creatorId" />
  116. <result column="creator" property="creator" />
  117. <result column="is_delete" property="isDelete" />
  118. <result column="pindate" property="indate" />
  119. <result column="manager_id" property="managerId" />
  120. <result column="manager" property="manager" />
  121. <result column="owner_company" property="ownerCompany" />
  122. <result column="owner_company_name" property="ownerCompanyName" />
  123. <collection property="models" ofType="com.hssx.cloudmodel.entity.Mould">
  124. <id column="model_id" property="id" />
  125. <result column="model_no" property="modelNo" />
  126. <result column="model_name" property="modelName" />
  127. <result column="produce_company_id" property="produceCompanyId" />
  128. <result column="belong_project_grade" property="belongProjectGrade" />
  129. <result column="produce_company_name" property="produceCompanyName" />
  130. </collection>
  131. <collection property="approves" ofType="com.hssx.cloudmodel.entity.ProjectApprove">
  132. <result column="approver_id" property="approverId" />
  133. <result column="approver_name" property="approverName" />
  134. <result column="company_id" property="companyId" />
  135. <result column="company_name" property="companyName" />
  136. <result column="subordinate_type" property="subordinateType" />
  137. <result column="project_id" property="projectId" />
  138. </collection>
  139. <collection property="customCompanies" ofType="com.hssx.cloudmodel.entity.CustomCompany">
  140. <result column="companyid" property="companyId" />
  141. <result column="companyname" property="companyName" />
  142. </collection>
  143. </resultMap>
  144. <select id="getProjectById" resultMap="BaseResultMapVO">
  145. select
  146. p.id id, p.project_name project_name, p.project_no project_no, p.creator_id creator_id,p.manager_id manager_id,p.manager manager,
  147. p.creator creator, p.owner_company owner_company,p.owner_company_name owner_company_name,p.indate pindate,m.belong_project_grade,
  148. m.id model_id, m.model_no model_no,m.model_name model_name,a.approver_id approver_id,a.approver_name approver_name,a.subordinate_type subordinate_type,
  149. c.company_id companyid,c.company_name companyname,tbc.company_name produce_company_name,tbc.id produce_company_id
  150. from
  151. tb_project p
  152. left join tb_mould m
  153. on p.id = m.project_id
  154. left join tb_project_approve a
  155. on p.id = a.project_id
  156. left join tb_custom_company c
  157. on c.project_id = p.id
  158. LEFT JOIN tb_company tbc
  159. ON tbc.`id` = m.`produce_company_id`
  160. where
  161. p.id = #{id}
  162. </select>
  163. <resultMap id="UserResultMap" type="com.hssx.cloudmodel.entity.User">
  164. <id column="id" property="id" />
  165. <result column="username" property="username" />
  166. <result column="role_type" property="roleType" />
  167. <result column="company_id" property="companyId" />
  168. <result column="head_imgurl" property="headImgurl" />
  169. <result column="subordinate_type" property="subordinateType" />
  170. </resultMap>
  171. <select id="getProjectUserById" resultMap="UserResultMap">
  172. select
  173. u.id id, u.username username, u.indate indate, u.head_imgurl head_imgurl, u.subordinate_type subordinate_type
  174. from
  175. tb_project_user pu
  176. RIGHT join
  177. tb_user u
  178. on
  179. pu.user_id = u.id
  180. where
  181. pu.project_id = #{id} and pu.role_type IS NULL
  182. </select>
  183. <resultMap id="BaseResultMapPowerList" type="com.hssx.cloudmodel.entity.vo.ProjectVO">
  184. <id column="id" property="id" />
  185. <result column="project_name" property="projectName" />
  186. <result column="project_id" property="projectId" />
  187. <result column="user_id" property="userId" />
  188. <result column="company_name" property="companyName" />
  189. <result column="powerString" property="powerString" />
  190. </resultMap>
  191. <select id="selectUserPowerList1" resultMap="BaseResultMapPowerList">
  192. SELECT
  193. tbpu.user_id ,tbpu.project_id ,GROUP_CONCAT(tbpu.power_type) powerString,
  194. tbu.username ,tbc.company_name,
  195. tbp.project_name
  196. FROM `tb_power` tbpu
  197. left join
  198. tb_project tbp
  199. on tbp.id = tbpu.project_id
  200. left join
  201. tb_user tbu
  202. on tbpu.user_id = tbu.id
  203. left join
  204. tb_company tbc
  205. on tbc.id = tbu.company_id
  206. <where>
  207. <if test="user.projectId != null">
  208. tbpu.project_id = #{user.projectId}
  209. </if>
  210. <if test="user.companyId != null">
  211. tbu.company_id = #{user.companyId}
  212. </if>
  213. <if test="user.keyName != null and user.keyName != ''">
  214. tbu.username like concat('%',#{user.keyName},'%')
  215. </if>
  216. <if test="type == 0">
  217. tbp.creator_id = #{user.id}
  218. </if>
  219. <if test="type == 1">
  220. tbp.manager_id = #{user.id}
  221. </if>
  222. </where>
  223. GROUP BY tbpu.user_id ,tbpu.project_id;
  224. order by tbpu.user_id
  225. </select>
  226. <resultMap id="BaseResultMapPower" type="com.hssx.cloudmodel.entity.vo.ProjectVO">
  227. <id column="id" property="id" />
  228. <result column="project_name" property="projectName" />
  229. <result column="project_id" property="projectId" />
  230. <result column="user_id" property="userId" />
  231. <result column="username" property="username"/>
  232. <result column="company_name" property="companyName" />
  233. <result column="powerString" property="powerString" />
  234. <collection property="powers" javaType="java.util.List" ofType="com.hssx.cloudmodel.entity.Power"
  235. select="queryPowerByUserIdAndProject" column="{userId = user_id,projectId = project_id}">
  236. </collection>
  237. </resultMap>
  238. <resultMap id="BasePower" type="com.hssx.cloudmodel.entity.Power">
  239. <result column="power_type" property="powerType" />
  240. <result column="user_id" property="userId" />
  241. <result column="project_id" property="projectId" />
  242. </resultMap>
  243. <select id="selectUserPowerList" resultMap="BaseResultMapPower">
  244. SELECT
  245. tbpu.user_id user_id,tbpu.project_id project_id,tbu.username username,tbc.company_name,
  246. tbp.project_name
  247. FROM
  248. `tb_project_user` tbpu
  249. LEFT JOIN
  250. tb_project tbp
  251. ON tbp.id = tbpu.project_id
  252. LEFT JOIN
  253. tb_user tbu
  254. ON tbpu.user_id = tbu.id
  255. LEFT JOIN
  256. tb_company tbc
  257. ON tbc.id = tbu.company_id
  258. <where>
  259. <if test="user.projectId != null and user.projectId !=''">
  260. AND tbpu.project_id = #{user.projectId}
  261. </if>
  262. <if test="user.cId != null and user.cId !=''">
  263. AND tbu.company_id = #{user.cId}
  264. </if>
  265. <if test="user.keyName != null and user.keyName != ''">
  266. AND tbu.username like concat('%',#{user.keyName},'%')
  267. </if>
  268. <if test="type == 0">
  269. AND tbp.creator_id = #{user.id}
  270. </if>
  271. <if test="type == 1">
  272. AND tbp.manager_id = #{user.id}
  273. </if>
  274. </where>
  275. </select>
  276. <!--一对多的子查询 queryCustomCompaniesId-->
  277. <select id="queryPowerByUserIdAndProject" resultMap="BasePower" parameterType="java.util.Map">
  278. SELECT
  279. tbpw.user_id,tbpw.project_id,tbpw.power_type
  280. from
  281. `tb_power` tbpw
  282. WHERE
  283. tbpw.project_id = #{projectId}
  284. and
  285. tbpw.user_id =#{userId}
  286. </select>
  287. </mapper>