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