DcDocumentMapper.xml 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  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.gqy.document.mapper.DocumentMapper">
  6. <resultMap type="Document" id="DocumentResult">
  7. <id property="id" column="id" />
  8. <result property="title" column="title" />
  9. <result property="data" column="data" />
  10. <result property="user_id" column="user_id" />
  11. <result property="category_id" column="category_id" />
  12. <result property="is_template" column="is_template" />
  13. <result property="status" column="status" />
  14. <result property="create_time" column="create_time" />
  15. <result property="update_time" column="update_time" />
  16. <result property="create_by" column="create_by" />
  17. <result property="update_by" column="update_by" />
  18. </resultMap>
  19. <insert id="insertDocument" parameterType="Document" useGeneratedKeys="true" keyProperty="id">
  20. insert into dc_document(
  21. <if test="title != null and title != ''">title,</if>
  22. <if test="data != null">data,</if>
  23. <if test="user_id != null">user_id,</if>
  24. <if test="category_id != null">category_id,</if>
  25. <if test="is_template != null">is_template,</if>
  26. <if test="status != null">status,</if>
  27. <if test="create_by != null">create_by,</if>
  28. create_time,
  29. update_time
  30. )values(
  31. <if test="title != null and title != ''">#{title},</if>
  32. <if test="data != null">#{data},</if>
  33. <if test="user_id != null">#{user_id},</if>
  34. <if test="category_id != null">#{category_id},</if>
  35. <if test="is_template != null">#{is_template},</if>
  36. <if test="status != null">#{status},</if>
  37. <if test="create_by != null">#{create_by},</if>
  38. sysdate(),
  39. sysdate()
  40. )
  41. </insert>
  42. <select id="checkDocumentTitleUnique" resultMap="DocumentResult">
  43. select id, title, is_template
  44. from dc_document
  45. where title = #{title}
  46. and is_template = #{is_template}
  47. and status != 4
  48. limit 1
  49. </select>
  50. <sql id="selectDocumentVo">
  51. SELECT d.id, d.title, d.data, d.user_id, d.create_time, d.update_time,
  52. d.status, d.category_id, d.is_template,
  53. c.name as type_name, u.user_name
  54. FROM dc_document d
  55. LEFT JOIN dc_document_category c ON d.category_id = c.id
  56. LEFT JOIN sys_user u ON d.user_id = u.user_id
  57. </sql>
  58. <select id="selectDocumentList" parameterType="Document" resultMap="DocumentResult">
  59. <include refid="selectDocumentVo"/>
  60. <where>
  61. AND d.status = 5
  62. <if test="title != null and title != ''">
  63. AND d.title like concat('%', #{title}, '%')
  64. </if>
  65. <if test="category_id != null">
  66. AND d.category_id = #{categoryId}
  67. </if>
  68. <if test="user_id != null">
  69. AND d.user_id = #{userId}
  70. </if>
  71. <if test="params.isAdmin != null and params.isAdmin == true">
  72. AND d.is_template = 0
  73. </if>
  74. <if test="params.isAdmin != null and params.isAdmin == false">
  75. AND d.is_template = 0 AND d.user_id = #{params.loginUserId}
  76. </if>
  77. </where>
  78. ORDER BY d.id DESC
  79. </select>
  80. <!-- 分页查询文档列表 -->
  81. <select id="pageDocument" resultType="map">
  82. SELECT
  83. d.id,
  84. d.title,
  85. d.category_id,
  86. d.user_id,
  87. d.create_time,
  88. d.status,
  89. d.is_template,
  90. c.name as type_name,
  91. u.user_name
  92. FROM dc_document d
  93. LEFT JOIN dc_document_category c ON d.category_id = c.id AND c.status = 5
  94. LEFT JOIN sys_user u ON d.user_id = u.user_id
  95. <where>
  96. AND d.status = #{status}
  97. <if test="title != null and title != ''">
  98. AND d.title LIKE CONCAT('%', #{title}, '%')
  99. </if>
  100. <if test="category_id != null">
  101. AND d.category_id = #{category_id}
  102. </if>
  103. <if test="user_id != null">
  104. AND d.user_id = #{user_id}
  105. </if>
  106. <if test="current_user_id != null">
  107. AND (
  108. d.user_id = #{current_user_id}
  109. OR (
  110. d.is_template = 1
  111. AND d.user_id IN (
  112. SELECT user_id FROM sys_user
  113. WHERE is_admin = 1
  114. )
  115. )
  116. )
  117. </if>
  118. </where>
  119. ORDER BY d.create_time DESC
  120. </select>
  121. <!-- ================ info -->
  122. <resultMap type="Document" id="DocumentResultInfo">
  123. <id property="id" column="id" />
  124. <result property="title" column="title" />
  125. <result property="data" column="data" />
  126. <result property="user_id" column="user_id" />
  127. <result property="category_id" column="category_id" />
  128. <result property="create_time" column="create_time" />
  129. <result property="update_time" column="update_time" />
  130. <result property="status" column="status" />
  131. <result property="is_template" column="is_template" />
  132. <!-- 非数据库字段 -->
  133. <result property="category_name" column="category_name"/>
  134. <result property="user_name" column="user_name" />
  135. </resultMap>
  136. <sql id="selectDocumentVoInfo">
  137. SELECT d.id, d.title, d.data, d.user_id, d.category_id,
  138. d.create_time, d.update_time, d.status, d.is_template,
  139. c.name as category_name,
  140. u.user_name as user_name
  141. FROM dc_document d
  142. LEFT JOIN dc_document_category c ON d.category_id = c.id
  143. LEFT JOIN sys_user u ON d.user_id = u.user_id
  144. </sql>
  145. <select id="info" parameterType="Long" resultMap="DocumentResult">
  146. <include refid="selectDocumentVoInfo"/>
  147. <where>
  148. AND d.id = #{id}
  149. AND d.status != 4
  150. </where>
  151. </select>
  152. <!-- ================ info -->
  153. <!-- 获取文档关联的产品ID列表 -->
  154. <select id="selectProductDocumentsByDocId" parameterType="Long" resultType="Long">
  155. select product_id
  156. from dc_product_document
  157. where document_id = #{documentId}
  158. and status != 4
  159. </select>
  160. <!-- 获取文档关联的项目ID列表 -->
  161. <select id="selectProjectDocumentsByDocId" parameterType="Long" resultType="Long">
  162. select project_id
  163. from dc_project_document
  164. where doc_id = #{documentId}
  165. and status != 4
  166. </select>
  167. </mapper>