groovy.ftl 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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. DbConv.asLong(row._origin.${primaryKey})
  38. )
  39. ).addBatch()
  40. d++ // 计数
  41. }
  42. }
  43. for (def row : params.newRows) {
  44. // 提取 newRows 全部新加的数据
  45. // 构建insert的queryDsl语句,并添加到 "批量执行(addBatch)" 的缓存中
  46. insert
  47. <#if columnList??>
  48. <#list columnList as column>
  49. <#--排除create_at create_by update_at update_by-->
  50. <#if column.columnName?upper_case != "CREATE_AT"
  51. && column.columnName?upper_case != "CREATE_BY"
  52. && column.columnName?upper_case != "UPDATE_AT"
  53. && column.columnName?upper_case != "UPDATE_BY"
  54. >
  55. <#switch column.dataType>
  56. <#case 1>
  57. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asString(row.${column.columnName}))
  58. <#break>
  59. <#case 2>
  60. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asInteger(row.${column.columnName}) as Integer)
  61. <#break>
  62. <#case 3>
  63. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asLong(row.${column.columnName}) as Long)
  64. <#break>
  65. <#case 4>
  66. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asDate(row.${column.columnName}) as Date)
  67. <#break>
  68. <#default>
  69. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asString(row.${column.columnName}))
  70. </#switch>
  71. </#if>
  72. </#list>
  73. </#if>
  74. .addBatch()
  75. i++ // 计数
  76. }
  77. for (def row : params.modifyRows) {
  78. // 提取 modifyRows 全部修改的数据
  79. // 构建update的queryDsl语句,并添加到 "批量执行(addBatch)" 的缓存中
  80. if (row._origin.["${primaryKey}"] != null) {
  81. update
  82. <#if columnList??>
  83. <#list columnList as column>
  84. <#if column.columnName?upper_case != "CREATE_AT"
  85. && column.columnName?upper_case != "CREATE_BY"
  86. && column.columnName?upper_case != "UPDATE_AT"
  87. && column.columnName?upper_case != "UPDATE_BY"
  88. >
  89. <#switch column.dataType>
  90. <#case 1>
  91. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asString(row.${column.columnName}))
  92. <#break>
  93. <#case 2>
  94. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asInteger(row.${column.columnName}) as Integer)
  95. <#break>
  96. <#case 3>
  97. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asLong(row.${column.columnName}) as Long)
  98. <#break>
  99. <#case 4>
  100. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asDate(row.${column.columnName}) as Date)
  101. <#break>
  102. <#default>
  103. .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asString(row.${column.columnName}))
  104. </#switch>
  105. </#if>
  106. </#list>
  107. </#if>
  108. .where(
  109. // row._origin.xxx 就是修改前 xxx 属性的值
  110. ${camelName(tableName)}.${camelName(primaryKey)}.eq(
  111. DbConv.asLong(row._origin.${primaryKey})
  112. )
  113. ).addBatch()
  114. u++ // 计数
  115. }
  116. }
  117. // 构建提示语句
  118. if (i > 0) {
  119. rowEffect += insert.execute()
  120. msg += ",插入" + i + "行"
  121. }
  122. if (u > 0) {
  123. rowEffect += update.execute()
  124. msg += ",更新" + u + "行"
  125. }
  126. if (d > 0) {
  127. rowEffect += remove.execute()
  128. msg += ",删除" + d + "行"
  129. }
  130. if (rowEffect <= 0) {
  131. return ModelOps.newSuccess().setMsg("没有要更新的内容")
  132. }
  133. // 返回前端
  134. return Model.newSuccess([
  135. update : u,
  136. insert : i,
  137. delete : d,
  138. rowEffect: rowEffect
  139. ]).setMsg("保存成功" + msg)
  140. }
  141. }