mapper.ftl 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. <#import "function.ftl" as func>
  2. <#assign package=model.variables.package>
  3. <#assign class=model.variables.class>
  4. <#assign system=vars.system>
  5. <#assign type="${vars.packagePre}."+system+".model."+package+"." +class>
  6. <#assign tableName=model.tableName>
  7. <#assign system=vars.system>
  8. <#assign foreignKey=model.foreignKey>
  9. <#assign sub=model.sub>
  10. <#assign colList=model.columnList>
  11. <#assign commonList=model.commonList>
  12. <#assign pk=func.getPk(model) >
  13. <#assign pkVar=func.getPkVar(model) >
  14. <?xml version="1.0" encoding="UTF-8"?>
  15. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  16. <mapper namespace="${type}">
  17. <resultMap id="${class}" type="${type}">
  18. <#list colList as col>
  19. <#assign colName=func.convertUnderLine(col.columnName)>
  20. <#if (col.isPK) >
  21. <id property="${colName}" column="${col.columnName}" jdbcType="${func.getJdbcType(col.colDbType)}"/>
  22. <#else>
  23. <result property="${colName}" column="${col.columnName}" jdbcType="${func.getJdbcType(col.colDbType)}"/>
  24. </#if>
  25. </#list>
  26. </resultMap>
  27. <#if func.supportFlow(model)>
  28. <resultMap type="${type}" id="Ext${class}" extends="${class}">
  29. <id property="taskId" column="TASK_ID" jdbcType="NUMERIC"/>
  30. <id property="nodeId" column="TASK_DEF_KEY_" jdbcType="VARCHAR"/>
  31. <id property="nodeName" column="NODE_NAME_" jdbcType="VARCHAR"/>
  32. <id property="runId" column="FLOW_RUNID" jdbcType="NUMERIC"/>
  33. <id property="actInstId" column="PROC_INST_ID_" jdbcType="NUMERIC"/>
  34. </resultMap>
  35. </#if>
  36. <sql id="columns">
  37. <#list colList as col>${col.columnName}<#if col_has_next>,</#if></#list>
  38. </sql>
  39. <#if func.supportFlow(model)>
  40. <sql id="wfColumns">
  41. <#list colList as col>${col.columnName}<#if col_has_next>,</#if></#list>
  42. </sql>
  43. </#if>
  44. <sql id="dynamicWhere">
  45. <where>
  46. <#list colList as col>
  47. <#assign colName=func.convertUnderLine(col.columnName)>
  48. <#if (col.colType=="String")>
  49. <if test="@Ognl@isNotEmpty(${colName})"> AND ${col.columnName} LIKE <#noparse>#{</#noparse>${colName}} </if>
  50. <#else>
  51. <#if (col.colType=="java.util.Date")>
  52. <if test="@Ognl@isNotEmpty(${colName})"> AND ${col.columnName} =<#noparse>#{</#noparse>${colName}} </if>
  53. <if test="@Ognl@isNotEmpty(begin${colName})"> AND ${col.columnName} >=<#noparse>#{</#noparse>begin${colName},jdbcType=DATE} </if>
  54. <if test="@Ognl@isNotEmpty(end${colName})"> AND ${col.columnName} <![CDATA[ <=<#noparse>#{</#noparse>end${colName},jdbcType=DATE}]]> </if>
  55. <#else>
  56. <if test="@Ognl@isNotEmpty(${colName})"> AND ${col.columnName} =<#noparse>#{</#noparse>${colName}} </if>
  57. </#if>
  58. </#if>
  59. </#list>
  60. </where>
  61. </sql>
  62. <insert id="add" parameterType="${type}">
  63. INSERT INTO ${tableName}
  64. (<#list colList as col>${col.columnName}<#if col_has_next>,</#if></#list>)
  65. VALUES
  66. (<#list colList as col><#assign colName=func.convertUnderLine(col.columnName)><#noparse>#{</#noparse>${colName},jdbcType=${func.getJdbcType(col.colDbType)}<#noparse>}</#noparse><#if col_has_next>, </#if></#list>)
  67. </insert>
  68. <delete id="delById" parameterType="java.lang.Long">
  69. DELETE FROM ${tableName}
  70. WHERE
  71. ${pk}=<#noparse>#{</#noparse>${func.convertUnderLine(pk)}}
  72. </delete>
  73. <update id="update" parameterType="${type}">
  74. UPDATE ${tableName} SET
  75. <#list commonList as col>
  76. <#assign colName=func.convertUnderLine(col.columnName)>
  77. ${col.columnName}=<#noparse>#{</#noparse>${colName},jdbcType=${func.getJdbcType(col.colDbType)}<#noparse>}</#noparse><#if col_has_next>,</#if>
  78. </#list>
  79. WHERE
  80. ${pk}=<#noparse>#{</#noparse>${func.convertUnderLine(pk)}}
  81. </update>
  82. <#--子表部分-->
  83. <#if sub?exists && sub>
  84. <#assign foreignKeyVar=func.convertUnderLine(foreignKey)>
  85. <delete id="delByMainId">
  86. DELETE FROM ${tableName}
  87. WHERE
  88. ${foreignKey}=<#noparse>#{</#noparse>${foreignKeyVar}}
  89. </delete>
  90. <select id="get${class}List" resultMap="${class}">
  91. SELECT <include refid="columns"/>
  92. FROM ${tableName}
  93. WHERE ${foreignKey}=<#noparse>#{</#noparse>${foreignKeyVar}}
  94. </select>
  95. </#if>
  96. <select id="getById" parameterType="java.lang.Long" resultMap="${class}">
  97. SELECT <include refid="columns"/>
  98. FROM ${tableName}
  99. WHERE
  100. ${pk}=<#noparse>#{</#noparse>${func.convertUnderLine(pk)}}
  101. </select>
  102. <select id="getAll" resultMap="${class}">
  103. SELECT <include refid="columns"/>
  104. FROM ${tableName}
  105. <include refid="dynamicWhere" />
  106. <if test="@Ognl@isNotEmpty(orderField)">
  107. order by <#noparse>${orderField}</#noparse> <#noparse>${orderSeq}</#noparse>
  108. </if>
  109. <if test="@Ognl@isEmpty(orderField)">
  110. order by ${pk} desc
  111. </if>
  112. </select>
  113. <#if func.supportFlow(model)>
  114. <select id="getDraftByUser" resultMap="Ext${class}">
  115. SELECT <include refid="wfColumns"/> ,B.runId
  116. FROM ${tableName} A,BPM_PRO_RUN B
  117. WHERE A.${pk}=B.BUSINESSKEY_NUM AND B.STATUS=4
  118. and B.CREATORID=<#noparse>#{</#noparse>userId}
  119. order by B.CREATETIME DESC
  120. </select>
  121. <select id="getMyTodoTask" resultMap="Ext${class}">
  122. SELECT * FROM (
  123. SELECT <include refid="wfColumns"/> ,
  124. C.ID_ TASK_ID,C.TASK_DEF_KEY_,B.RUNID FLOW_RUNID,C.PROC_INST_ID_,
  125. C.NAME_ NODE_NAME_,C.CREATE_TIME_ TASK_CREATE_TIME_
  126. FROM ${tableName} A,BPM_PRO_RUN B ,
  127. ACT_RU_TASK C
  128. WHERE A.${pk}=B.BUSINESSKEY_NUM AND B.ACTINSTID=C.PROC_INST_ID_ AND C.ASSIGNEE_=<#noparse>#{</#noparse>userId}
  129. union
  130. SELECT <include refid="wfColumns"/>,
  131. C.ID_ TASK_ID,C.TASK_DEF_KEY_,B.RUNID FLOW_RUNID,C.PROC_INST_ID_,
  132. C.NAME_ NODE_NAME_,C.CREATE_TIME_ TASK_CREATE_TIME_
  133. FROM ${tableName} A,BPM_PRO_RUN B ,
  134. ACT_RU_TASK C,
  135. ACT_RU_IDENTITYLINK D
  136. WHERE A.${pk}=B.BUSINESSKEY_NUM AND B.ACTINSTID=C.PROC_INST_ID_
  137. AND C.id_ = D.TASK_ID_ AND D.USER_ID_ = <#noparse>#{</#noparse>userId}
  138. AND C.ASSIGNEE_ =0 and C.DESCRIPTION_!='39'
  139. UNION
  140. SELECT <include refid="wfColumns"/>,
  141. C.ID_ TASK_ID,C.TASK_DEF_KEY_,B.RUNID FLOW_RUNID,C.PROC_INST_ID_,
  142. C.NAME_ NODE_NAME_,C.CREATE_TIME_ TASK_CREATE_TIME_
  143. FROM ${tableName} A,BPM_PRO_RUN B ,
  144. ACT_RU_TASK C,
  145. ACT_RU_IDENTITYLINK D
  146. WHERE A.${pk}=B.BUSINESSKEY_NUM AND B.ACTINSTID=C.PROC_INST_ID_
  147. AND C.id_ = D.TASK_ID_
  148. AND C.ASSIGNEE_ =0 and C.DESCRIPTION_!='39'
  149. AND D.type_ = 'org' and D.group_id_ in (select uo.orgid from SYS_USER_POS uo where uo.userid= <#noparse>#{</#noparse>userId} )
  150. UNION
  151. SELECT <include refid="wfColumns"/>,
  152. C.ID_ TASK_ID,C.TASK_DEF_KEY_,B.RUNID FLOW_RUNID,C.PROC_INST_ID_,
  153. C.NAME_ NODE_NAME_,C.CREATE_TIME_ TASK_CREATE_TIME_
  154. FROM ${tableName} A,BPM_PRO_RUN B ,
  155. ACT_RU_TASK C,
  156. ACT_RU_IDENTITYLINK D
  157. WHERE A.${pk}=B.BUSINESSKEY_NUM AND B.ACTINSTID=C.PROC_INST_ID_
  158. AND C.id_ = D.TASK_ID_
  159. AND C.ASSIGNEE_ =0 and C.DESCRIPTION_!='39'
  160. AND D.type_ = 'role' and D.group_id_ in (select ur.roleid from sys_user_role ur where ur.userid=<#noparse>#{</#noparse>userId} )
  161. union
  162. SELECT <include refid="wfColumns"/>,
  163. C.ID_ TASK_ID,C.TASK_DEF_KEY_,B.RUNID FLOW_RUNID,C.PROC_INST_ID_,
  164. C.NAME_ NODE_NAME_,C.CREATE_TIME_ TASK_CREATE_TIME_
  165. FROM ${tableName} A,BPM_PRO_RUN B ,
  166. ACT_RU_TASK C,
  167. ACT_RU_IDENTITYLINK D
  168. WHERE A.${pk}=B.BUSINESSKEY_NUM AND B.ACTINSTID=C.PROC_INST_ID_
  169. AND C.id_ = D.TASK_ID_
  170. AND C.ASSIGNEE_ =0 and C.DESCRIPTION_!='39'
  171. AND D.type_ = 'pos' and D.group_id_ in (select up.posid from sys_user_pos up where up.userid= <#noparse>#{</#noparse>userId} )
  172. ) tmp
  173. <where>
  174. <if test="@Ognl@isNotEmpty(subject)"> AND upper(tmp.subject) LIKE <#noparse>#{</#noparse>subject} </if>
  175. <if test="@Ognl@isNotEmpty(processName)"> AND upper(tmp.processName) LIKE <#noparse>#{</#noparse>processName} </if>
  176. <if test="@Ognl@isNotEmpty(creatorId)">AND tmp.creatorId =<#noparse>#{</#noparse>creatorId} </if>
  177. <if test="@Ognl@isNotEmpty(beginCreateTime)">and tmp.TASK_CREATE_TIME_>=<#noparse>#{</#noparse>beginCreateTime,jdbcType=TIMESTAMP}</if>
  178. <if test="@Ognl@isNotEmpty(endCreateTime)">and tmp.TASK_CREATE_TIME_ &lt;=<#noparse>#{</#noparse>endCreateTime,jdbcType=TIMESTAMP}</if>
  179. <if test="@Ognl@isNotEmpty(type)">
  180. AND tmp.description_ = <#noparse>#{</#noparse>type}
  181. </if>
  182. </where>
  183. <if test="@Ognl@isEmpty(orderField)">
  184. order by tmp.TASK_CREATE_TIME_ desc
  185. </if>
  186. <if test="@Ognl@isNotEmpty(orderField)">
  187. order by <#noparse>${</#noparse>orderField} <#noparse>${</#noparse>orderSeq}
  188. </if>
  189. </select>
  190. <select id="getEndByUser" resultMap="${class}">
  191. SELECT <include refid="wfColumns"/> ,B.runId
  192. FROM ${tableName} A,BPM_PRO_RUN_HIS B
  193. WHERE A.${pk}=B.BUSINESSKEY_NUM
  194. and B.CREATORID=<#noparse>#{</#noparse>userId} and B.STATUS=2
  195. order by B.ENDTIME DESC
  196. </select>
  197. </#if>
  198. </mapper>