groovy.ftl 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. package ${packageName}
  2. import com.yvan.core.DbConv
  3. import com.yvan.data.jdbc.DaoFactory
  4. import com.yvan.model.response.Model
  5. import com.yvan.model.response.ModelOps
  6. import org.slf4j.LoggerFactory
  7. import static com.galaxis.wms.query.Q${camelName1(tableName)}.${camelName(tableName)}
  8. import com.yvan.model.YvanExt
  9. // ${primaryKey}
  10. class ${moduleName} {
  11. static def log = LoggerFactory.getLogger(${moduleName}.class)
  12. static def queryDsl = DaoFactory.getQueryDSL()
  13. static def mybatis = DaoFactory.getMyBatis(${moduleName}.class)
  14. static def query(params) {
  15. <#if pagination>
  16. def list = mybatis.queryByPage("query", YvanExt.getQueryByPage(), params)
  17. <#else>
  18. def list = mybatis.queryMany("query", params)
  19. </#if>
  20. return Model.newSuccess(list)
  21. }
  22. static def saveItems(params) {
  23. long rowEffect = 0
  24. // 获取 queryDsl 针对某张表的 insert/update/remove 的操作对象
  25. def insert = queryDsl.insert(${camelName(tableName)}) // insert 操作对象
  26. def update = queryDsl.update(${camelName(tableName)}) // update 操作对象
  27. def remove = queryDsl.delete(${camelName(tableName)}) // remove 操作对象
  28. def i = 0 // 插入行计数11
  29. def u = 0 // 更新行计数
  30. def d = 0 // 删除行计数
  31. def msg = "" // 异常提示文本
  32. for (def row : params.removeRecords) {
  33. // 提取 removeRecords 全部删除的数据
  34. if (row._origin[primaryKey] != null) {
  35. // 构建删除条件,添加到 "批量执行(addBatch)" 的缓存中
  36. remove.where(
  37. ${camelName(tableName)}.${camelName(primaryKey)}.eq(
  38. <#switch primaryType>
  39. <#case contains('varchar')>
  40. DbConv.asString(row._origin["${primaryKey}"])
  41. <#break>
  42. <#case contains('int4')>
  43. DbConv.asInteger(row._origin["${primaryKey}"])
  44. <#break>
  45. <#case contains('int8')>
  46. DbConv.asLong(row._origin["${primaryKey}"])
  47. <#break>
  48. <#case contains('time')>
  49. DbConv.asDate(row._origin["${primaryKey}"])
  50. <#break>
  51. <#default>
  52. DbConv.asString(row._origin["${primaryKey}"])
  53. </#switch>
  54. )
  55. ).addBatch()
  56. d++ // 计数
  57. }
  58. }
  59. for (def row : params.newRows) {
  60. // 提取 newRows 全部新加的数据
  61. // 构建insert的queryDsl语句,并添加到 "批量执行(addBatch)" 的缓存中
  62. insert
  63. <#if columnList??>
  64. <#list columnList as column>
  65. <#--排除create_at create_by update_at update_by-->
  66. <#if column.columnName?upper_case != "CREATE_AT"
  67. && column.columnName?upper_case != "CREATE_BY"
  68. && column.columnName?upper_case != "UPDATE_AT"
  69. && column.columnName?upper_case != "UPDATE_BY"
  70. >
  71. <#switch column.dataType>
  72. <#case 1>
  73. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asString(row.${column.columnName}))
  74. <#break>
  75. <#case 2>
  76. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asInteger(row.${column.columnName}) as Integer)
  77. <#break>
  78. <#case 3>
  79. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asLong(row.${column.columnName}) as Long)
  80. <#break>
  81. <#case 4>
  82. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asDate(row.${column.columnName}) as Date)
  83. <#break>
  84. <#default>
  85. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asString(row.${column.columnName}))
  86. </#switch>
  87. </#if>
  88. </#list>
  89. </#if>
  90. .addBatch()
  91. i++ // 计数
  92. }
  93. for (def row : params.modifyRows) {
  94. // 提取 modifyRows 全部修改的数据
  95. // 构建update的queryDsl语句,并添加到 "批量执行(addBatch)" 的缓存中
  96. if (row._origin.["${primaryKey}"] != null) {
  97. update
  98. <#if columnList??>
  99. <#list columnList as column>
  100. <#if column.columnName?upper_case != "CREATE_AT"
  101. && column.columnName?upper_case != "CREATE_BY"
  102. && column.columnName?upper_case != "UPDATE_AT"
  103. && column.columnName?upper_case != "UPDATE_BY"
  104. >
  105. <#switch column.dataType>
  106. <#case 1>
  107. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asString(row.${column.columnName}))
  108. <#break>
  109. <#case 2>
  110. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asInteger(row.${column.columnName}) as Integer)
  111. <#break>
  112. <#case 3>
  113. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asLong(row.${column.columnName}) as Long)
  114. <#break>
  115. <#case 4>
  116. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asDate(row.${column.columnName}) as Date)
  117. <#break>
  118. <#default>
  119. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asString(row.${column.columnName}))
  120. </#switch>
  121. </#if>
  122. </#list>
  123. </#if>
  124. .where(
  125. // row._origin.xxx 就是修改前 xxx 属性的值
  126. ${camelName(tableName)}.${camelName(primaryKey)}.eq(
  127. <#switch primaryType>
  128. <#case contains('varchar')>
  129. DbConv.asString(row._origin["${primaryKey}"])
  130. <#break>
  131. <#case contains('int4')>
  132. DbConv.asInteger(row._origin["${primaryKey}"])
  133. <#break>
  134. <#case contains('int8')>
  135. DbConv.asLong(row._origin["${primaryKey}"])
  136. <#break>
  137. <#case contains('time')>
  138. DbConv.asDate(row._origin["${primaryKey}"])
  139. <#break>
  140. <#default>
  141. DbConv.asString(row._origin["${primaryKey}"])
  142. </#switch>
  143. )
  144. ).addBatch()
  145. u++ // 计数
  146. }
  147. }
  148. // 构建提示语句
  149. if (i > 0) {
  150. rowEffect += insert.execute()
  151. msg += ",插入" + i + "行"
  152. }
  153. if (u > 0) {
  154. rowEffect += update.execute()
  155. msg += ",更新" + u + "行"
  156. }
  157. if (d > 0) {
  158. rowEffect += remove.execute()
  159. msg += ",删除" + d + "行"
  160. }
  161. if (rowEffect <= 0) {
  162. return ModelOps.newSuccess().setMsg("没有要更新的内容")
  163. }
  164. // 返回前端
  165. return Model.newSuccess([
  166. update : u,
  167. insert : i,
  168. delete : d,
  169. rowEffect: rowEffect
  170. ]).setMsg("保存成功" + msg)
  171. }
  172. }