mapper.ftl 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. <#if table.isExternal==0>
  2. <#assign tableName='W_'+table.tableName?upper_case >
  3. <#else>
  4. <#assign tableName=table.tableName>
  5. </#if>
  6. <#assign package=table.variable.package>
  7. <#assign class=table.variable.class>
  8. <#assign fieldList=table.fieldList>
  9. <#assign type="com.hotent."+system+".model."+package+"." +class>
  10. <#function getJdbcType dataType>
  11. <#assign dbtype=dataType?lower_case>
  12. <#assign rtn>
  13. <#if dbtype=="number" >
  14. NUMERIC
  15. <#elseif (dbtype?index_of("char")>-1) >
  16. VARCHAR
  17. <#elseif (dbtype=="date")>
  18. DATE
  19. <#elseif (dbtype?ends_with("clob")) >
  20. CLOB
  21. </#if></#assign>
  22. <#return rtn?trim>
  23. </#function>
  24. <#-- 模板开始 -->
  25. <?xml version="1.0" encoding="UTF-8"?>
  26. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  27. <mapper namespace="${type}">
  28. <resultMap id="${class}" type="${type}">
  29. <#if table.isExternal==0>
  30. <id property="id" column="ID" jdbcType="NUMERIC"/>
  31. <#if table.isMain==0>
  32. <result property="refId" column="REFID" jdbcType="NUMERIC"/>
  33. </#if>
  34. <#list fieldList as field>
  35. <result property="${field.fieldName}" column="F_${field.fieldName?upper_case}" jdbcType="${getJdbcType(field.fieldType)}"/>
  36. </#list>
  37. <#else>
  38. <#list fieldList as field>
  39. <#if table.pkField?lower_case==field.fieldName?lower_case>
  40. <id property="${table.pkField}" column="${field.fieldName?upper_case}" jdbcType="NUMERIC"/>
  41. </#if>
  42. </#list>
  43. <#list fieldList as field>
  44. <#if table.pkField?lower_case!=field.fieldName?lower_case>
  45. <result property="${field.fieldName}" column="${field.fieldName?upper_case}" jdbcType="${getJdbcType(field.fieldType)}"/>
  46. </#if>
  47. </#list>
  48. </#if>
  49. </resultMap>
  50. <#if flowKey?exists>
  51. <resultMap type="${type}" id="Ext${class}" extends="${class}">
  52. <id property="taskId" column="TASK_ID" jdbcType="NUMERIC"/>
  53. <id property="nodeId" column="TASK_DEF_KEY_" jdbcType="VARCHAR"/>
  54. <id property="nodeName" column="NODE_NAME_" jdbcType="VARCHAR"/>
  55. <id property="runId" column="FLOW_RUNID" jdbcType="NUMERIC"/>
  56. <id property="actInstId" column="PROC_INST_ID_" jdbcType="NUMERIC"/>
  57. </resultMap>
  58. </#if>
  59. <sql id="columns">
  60. <#if table.isExternal==0>
  61. ID,<#if table.isMain==0>REFID,</#if><#list fieldList as field>F_${field.fieldName?upper_case}<#if field_has_next>,</#if></#list>
  62. <#else>
  63. <#list fieldList as field>${field.fieldName?upper_case}<#if field_has_next>,</#if></#list>
  64. </#if>
  65. </sql>
  66. <sql id="wfColumns">
  67. <#if table.isExternal==0>
  68. ID,<#if table.isMain==0>REFID,</#if><#list fieldList as field>F_${field.fieldName?upper_case}<#if field_has_next>,</#if></#list>
  69. <#else>
  70. <#list fieldList as field>${field.fieldName?upper_case}<#if field_has_next>,</#if></#list>
  71. </#if>
  72. </sql>
  73. <sql id="dynamicWhere">
  74. <where>
  75. <#if table.isExternal==0>
  76. <#list fieldList as field>
  77. <#if (field.fieldType=="varchar")>
  78. <if test="@Ognl@isNotEmpty(${field.fieldName})"> AND F_${field.fieldName?upper_case} LIKE '%<#noparse>${</#noparse>${field.fieldName}}%' </if>
  79. <#else>
  80. <#if (field.fieldType=="date")>
  81. <if test="@Ognl@isNotEmpty(${field.fieldName})"> AND F_${field.fieldName?upper_case} =<#noparse>#{</#noparse>${field.fieldName}} </if>
  82. <if test="@Ognl@isNotEmpty(begin${field.fieldName})"> AND F_${field.fieldName?upper_case} >=<#noparse>#{</#noparse>begin${field.fieldName},jdbcType=DATE} </if>
  83. <if test="@Ognl@isNotEmpty(end${field.fieldName})"> AND F_${field.fieldName?upper_case} <![CDATA[ <=<#noparse>#{</#noparse>end${field.fieldName},jdbcType=DATE}]]> </if>
  84. <#else>
  85. <if test="@Ognl@isNotEmpty(${field.fieldName})"> AND F_${field.fieldName?upper_case} =<#noparse>#{</#noparse>${field.fieldName}} </if>
  86. </#if>
  87. </#if>
  88. </#list>
  89. <#else>
  90. <#list fieldList as field>
  91. <#if table.pkField?lower_case!=field.fieldName?lower_case>
  92. <#if (field.fieldType=="varchar")>
  93. <if test="@Ognl@isNotEmpty(${field.fieldName})"> AND ${field.fieldName?upper_case} LIKE '%<#noparse>${</#noparse>${field.fieldName}}%' </if>
  94. </#if>
  95. <#if (field.fieldType=="date")>
  96. <if test="@Ognl@isNotEmpty(${field.fieldName})"> AND ${field.fieldName?upper_case} =<#noparse>#{</#noparse>${field.fieldName}} </if>
  97. <if test="@Ognl@isNotEmpty(begin${field.fieldName})"> AND ${field.fieldName?upper_case} >=<#noparse>#{</#noparse>begin${field.fieldName},jdbcType=DATE} </if>
  98. <if test="@Ognl@isNotEmpty(end${field.fieldName})"> AND ${field.fieldName?upper_case} <![CDATA[ <=<#noparse>#{</#noparse>end${field.fieldName},jdbcType=DATE}]]> </if>
  99. </#if>
  100. <#else>
  101. <if test="@Ognl@isNotEmpty(${field.fieldName})"> AND ${field.fieldName?upper_case} =<#noparse>#{</#noparse>${field.fieldName}} </if>
  102. </#if>
  103. </#list>
  104. </#if>
  105. </where>
  106. </sql>
  107. <insert id="add" parameterType="${type}">
  108. INSERT INTO ${tableName}
  109. <#if table.isExternal==0>
  110. (ID,<#if table.isMain==0>REFID,</#if>
  111. <#list fieldList as field>F_${field.fieldName?upper_case}<#if field_has_next>,</#if></#list>)
  112. VALUES
  113. (<#noparse>#{</#noparse>id,jdbcType=NUMERIC},
  114. <#if table.isMain==0>
  115. <#noparse>#{</#noparse>refId,jdbcType=NUMERIC},
  116. </#if>
  117. <#list fieldList as field><#noparse>#{</#noparse>${field.fieldName},jdbcType=${getJdbcType(field.fieldType)}<#noparse>}</#noparse><#if field_has_next>, </#if></#list>)
  118. <#else>
  119. (<#list fieldList as field>${field.fieldName?upper_case}<#if field_has_next>,</#if></#list>)
  120. VALUES
  121. (<#list fieldList as field><#noparse>#{</#noparse>${field.fieldName},jdbcType=${getJdbcType(field.fieldType)}<#noparse>}</#noparse><#if field_has_next>, </#if></#list>)
  122. </#if>
  123. </insert>
  124. <delete id="delById" parameterType="java.lang.Long">
  125. DELETE FROM ${tableName}
  126. WHERE
  127. <#if table.isExternal==0>
  128. ID=<#noparse>#{</#noparse>id}
  129. <#else>
  130. ${table.pkField?upper_case}=<#noparse>#{</#noparse>${table.pkField}}
  131. </#if>
  132. </delete>
  133. <update id="update" parameterType="${type}">
  134. UPDATE ${tableName} SET
  135. <#if table.isExternal==0>
  136. <#if table.isMain==0>
  137. REFID=<#noparse>#{</#noparse>refId,jdbcType=NUMERIC},
  138. <#noparse>#{</#noparse>refId,jdbcType=NUMERIC},
  139. </#if>
  140. <#list fieldList as field>
  141. F_${field.fieldName?upper_case}=<#noparse>#{</#noparse>${field.fieldName},jdbcType=${getJdbcType(field.fieldType)}<#noparse>}</#noparse><#if field_has_next>,</#if>
  142. </#list>
  143. WHERE
  144. ID=<#noparse>#{</#noparse>id}
  145. <#else>
  146. <#list fieldList as field>
  147. <#if table.pkField?upper_case!=field.fieldName?upper_case>
  148. ${field.fieldName?upper_case}=<#noparse>#{</#noparse>${field.fieldName},jdbcType=${getJdbcType(field.fieldType)}<#noparse>}</#noparse><#if field_has_next>,</#if>
  149. </#if>
  150. </#list>
  151. WHERE
  152. ${table.pkField?upper_case}=<#noparse>#{</#noparse>${table.pkField}}
  153. </#if>
  154. </update>
  155. <#if table.isMain!=1>
  156. <delete id="delByMainId">
  157. DELETE FROM ${tableName}
  158. WHERE
  159. <#if table.isExternal==0>
  160. REFID=<#noparse>#{</#noparse>refId}
  161. <#else>
  162. ${table.relation?upper_case}=<#noparse>#{</#noparse>${table.relation?lower_case}}
  163. </#if>
  164. </delete>
  165. <select id="get${class}List" resultMap="${class}">
  166. SELECT <include refid="columns"/>
  167. FROM ${tableName}
  168. <#if table.isExternal==0>
  169. WHERE REFID=<#noparse>#{</#noparse>refId}
  170. <#else>
  171. WHERE ${table.relation?upper_case}=<#noparse>#{</#noparse>${table.relation?lower_case}}
  172. </#if>
  173. </select>
  174. </#if>
  175. <select id="getById" parameterType="java.lang.Long" resultMap="${class}">
  176. SELECT <include refid="columns"/>
  177. FROM ${tableName}
  178. WHERE
  179. <#if table.isExternal==0>
  180. ID=<#noparse>#{</#noparse>id}
  181. <#else>
  182. ${table.pkField?upper_case}=<#noparse>#{</#noparse>${table.pkField}}
  183. </#if>
  184. </select>
  185. <select id="getAll" resultMap="${class}">
  186. SELECT <include refid="columns"/>
  187. FROM ${tableName}
  188. <include refid="dynamicWhere" />
  189. <if test="@Ognl@isNotEmpty(orderField)">
  190. order by <#noparse>${orderField}</#noparse> <#noparse>${orderSeq}</#noparse>
  191. </if>
  192. <if test="@Ognl@isEmpty(orderField)">
  193. <#if table.isExternal==0>
  194. order by ID desc
  195. <#else>
  196. order by ${table.pkField?upper_case} desc
  197. </#if>
  198. </if>
  199. </select>
  200. <#if flowKey?exists>
  201. <select id="getDraftByUser" resultMap="${class}">
  202. SELECT <include refid="wfColumns"/> ,B.runId
  203. FROM ${tableName} A,BPM_PRO_RUN B
  204. WHERE A.${table.pkField?upper_case}=B.BUSINESSKEY_NUM AND B.STATUS=4
  205. and B.CREATORID=<#noparse>#{</#noparse>userId}
  206. order by B.CREATETIME DESC
  207. </select>
  208. <select id="getMyTodoTask" resultMap="Ext${class}">
  209. SELECT * FROM (
  210. SELECT <include refid="wfColumns"/> ,
  211. C.ID_ TASK_ID,C.TASK_DEF_KEY_,B.RUNID FLOW_RUNID,C.PROC_INST_ID_,
  212. C.NAME_ NODE_NAME_,C.CREATE_TIME_ TASK_CREATE_TIME_
  213. FROM ${tableName} A,BPM_PRO_RUN B ,
  214. ACT_RU_TASK C
  215. WHERE A.${table.pkField?upper_case}=B.BUSINESSKEY_NUM AND B.ACTINSTID=C.PROC_INST_ID_ AND C.ASSIGNEE_=<#noparse>#{</#noparse>userId}
  216. union
  217. SELECT <include refid="wfColumns"/>,
  218. C.ID_ TASK_ID,C.TASK_DEF_KEY_,B.RUNID FLOW_RUNID,C.PROC_INST_ID_,
  219. C.NAME_ NODE_NAME_,C.CREATE_TIME_ TASK_CREATE_TIME_
  220. FROM ${tableName} A,BPM_PRO_RUN B ,
  221. ACT_RU_TASK C,
  222. ACT_RU_IDENTITYLINK D
  223. WHERE A.${table.pkField?upper_case}=B.BUSINESSKEY_NUM AND B.ACTINSTID=C.PROC_INST_ID_
  224. AND C.id_ = D.TASK_ID_ AND D.USER_ID_ = <#noparse>#{</#noparse>userId}
  225. AND C.ASSIGNEE_ =0 and C.DESCRIPTION_!='39'
  226. UNION
  227. SELECT <include refid="wfColumns"/>,
  228. C.ID_ TASK_ID,C.TASK_DEF_KEY_,B.RUNID FLOW_RUNID,C.PROC_INST_ID_,
  229. C.NAME_ NODE_NAME_,C.CREATE_TIME_ TASK_CREATE_TIME_
  230. FROM ${tableName} A,BPM_PRO_RUN B ,
  231. ACT_RU_TASK C,
  232. ACT_RU_IDENTITYLINK D
  233. WHERE A.${table.pkField?upper_case}=B.BUSINESSKEY_NUM AND B.ACTINSTID=C.PROC_INST_ID_
  234. AND C.id_ = D.TASK_ID_
  235. AND C.ASSIGNEE_ =0 and C.DESCRIPTION_!='39'
  236. AND D.type_ = 'org' and D.group_id_ in (select uo.orgid from SYS_USER_POS uo where uo.userid= <#noparse>#{</#noparse>userId} )
  237. UNION
  238. SELECT <include refid="wfColumns"/>,
  239. C.ID_ TASK_ID,C.TASK_DEF_KEY_,B.RUNID FLOW_RUNID,C.PROC_INST_ID_,
  240. C.NAME_ NODE_NAME_,C.CREATE_TIME_ TASK_CREATE_TIME_
  241. FROM ${tableName} A,BPM_PRO_RUN B ,
  242. ACT_RU_TASK C,
  243. ACT_RU_IDENTITYLINK D
  244. WHERE A.${table.pkField?upper_case}=B.BUSINESSKEY_NUM AND B.ACTINSTID=C.PROC_INST_ID_
  245. AND C.id_ = D.TASK_ID_
  246. AND C.ASSIGNEE_ =0 and C.DESCRIPTION_!='39'
  247. AND D.type_ = 'role' and D.group_id_ in (select ur.roleid from sys_user_role ur where ur.userid=<#noparse>#{</#noparse>userId} )
  248. union
  249. SELECT <include refid="wfColumns"/>,
  250. C.ID_ TASK_ID,C.TASK_DEF_KEY_,B.RUNID FLOW_RUNID,C.PROC_INST_ID_,
  251. C.NAME_ NODE_NAME_,C.CREATE_TIME_ TASK_CREATE_TIME_
  252. FROM ${tableName} A,BPM_PRO_RUN B ,
  253. ACT_RU_TASK C,
  254. ACT_RU_IDENTITYLINK D
  255. WHERE A.${table.pkField?upper_case}=B.BUSINESSKEY_NUM AND B.ACTINSTID=C.PROC_INST_ID_
  256. AND C.id_ = D.TASK_ID_
  257. AND C.ASSIGNEE_ =0 and C.DESCRIPTION_!='39'
  258. AND D.type_ = 'pos' and D.group_id_ in (select up.posid from sys_user_pos up where up.userid= <#noparse>#{</#noparse>userId} )
  259. ) tmp
  260. <where>
  261. <if test="@Ognl@isNotEmpty(subject)"> AND upper(tmp.subject) LIKE <#noparse>#{</#noparse>subject} </if>
  262. <if test="@Ognl@isNotEmpty(processName)"> AND upper(tmp.processName) LIKE <#noparse>#{</#noparse>processName} </if>
  263. <if test="@Ognl@isNotEmpty(creatorId)">AND tmp.creatorId =<#noparse>#{</#noparse>creatorId} </if>
  264. <if test="@Ognl@isNotEmpty(beginCreateTime)">and tmp.TASK_CREATE_TIME_>=<#noparse>#{</#noparse>beginCreateTime,jdbcType=TIMESTAMP}</if>
  265. <if test="@Ognl@isNotEmpty(endCreateTime)">and tmp.TASK_CREATE_TIME_ &lt;=<#noparse>#{</#noparse>endCreateTime,jdbcType=TIMESTAMP}</if>
  266. <if test="@Ognl@isNotEmpty(type)">
  267. AND tmp.description_ = <#noparse>#{</#noparse>type}
  268. </if>
  269. </where>
  270. <if test="@Ognl@isEmpty(orderField)">
  271. order by tmp.TASK_CREATE_TIME_ desc
  272. </if>
  273. <if test="@Ognl@isNotEmpty(orderField)">
  274. order by <#noparse>${</#noparse>orderField} <#noparse>${</#noparse>orderSeq}
  275. </if>
  276. </select>
  277. <select id="getEndByUser" resultMap="${class}">
  278. SELECT <include refid="wfColumns"/> ,B.runId
  279. FROM ${tableName} A,BPM_PRO_RUN_HIS B
  280. WHERE A.${table.pkField?upper_case}=B.BUSINESSKEY_NUM
  281. and B.CREATORID=<#noparse>#{</#noparse>userId} and B.STATUS=2
  282. order by B.ENDTIME DESC
  283. </select>
  284. </#if>
  285. </mapper>