package ${packagePath} import com.yvan.core.DbConv import com.yvan.data.jdbc.DaoFactory import com.yvan.model.response.Model import com.yvan.model.response.ModelOps import org.slf4j.LoggerFactory import static com.galaxis.wms.query.Q${camelName1(tableName)}.${camelName(tableName)} class ${moduleName} { static def log = LoggerFactory.getLogger(${moduleName}.class) static def queryDsl = DaoFactory.getQueryDSL() static def mybatis = DaoFactory.getMyBatis(${moduleName}.class) static def query(params) { <#if pagination> def list = mybatis.queryByPage("query", YvanExt.getQueryByPage(), params) <#else> def list = mybatis.queryMany("query", params) return Model.newSuccess(list) } static def saveItems(params) { long rowEffect = 0 def primaryKey = DbConv.asString(params.primaryKey) // 获取 queryDsl 针对某张表的 insert/update/remove 的操作对象 def insert = queryDsl.insert(${camelName(tableName)}) // insert 操作对象 def update = queryDsl.update(${camelName(tableName)}) // update 操作对象 def remove = queryDsl.delete(${camelName(tableName)}) // remove 操作对象 def i = 0 // 插入行计数 def u = 0 // 更新行计数 def d = 0 // 删除行计数 def msg = "" // 异常提示文本 for (def row : params.removeRecords) { // 提取 removeRecords 全部删除的数据 if (row._origin[primaryKey] != null) { // 构建删除条件,添加到 "批量执行(addBatch)" 的缓存中 remove.where( ${camelName(tableName)}.${camelName(primaryKey)}.eq(DbConv.asString(row._origin[primaryKey])) ).addBatch() d++ // 计数 } } for (def row : params.newRows) { // 提取 newRows 全部新加的数据 // 构建insert的queryDsl语句,并添加到 "批量执行(addBatch)" 的缓存中 insert <#if columnList??> <#list columnList as column> <#switch column.dataType> <#case 1> .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asString(row.${column.columnName})) <#break> <#case 2> .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asInteger(row.${column.columnName}) as Integer) <#break> <#case 3> .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asLong(row.${column.columnName}) as Long) <#break> <#case 4> .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asDate(row.${column.columnName}) as Date) <#break> <#default> .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asString(row.${column.columnName})) .addBatch() i++ // 计数 } for (def row : params.modifyRows) { // 提取 modifyRows 全部修改的数据 // 构建update的queryDsl语句,并添加到 "批量执行(addBatch)" 的缓存中 if (row._origin.dict_value != null) { update <#if columnList??> <#list columnList as column> <#switch column.dataType> <#case 1> .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asString(row.${column.columnName})) <#break> <#case 2> .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asInteger(row.${column.columnName}) as Integer) <#break> <#case 3> .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asLong(row.${column.columnName}) as Long) <#break> <#case 4> .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asDate(row.${column.columnName}) as Date) <#break> <#default> .set(${camelName(tableName)}.${camelName(column.columnName)}, DbConv.asString(row.${column.columnName})) .where( // row._origin.xxx 就是修改前 xxx 属性的值 ${camelName(tableName)}.${camelName(primaryKey)}.eq(DbConv.asString(row._origin[primaryKey])) ).addBatch() u++ // 计数 } } // 构建提示语句 if (i > 0) { rowEffect += insert.execute() msg += ",插入" + i + "行" } if (u > 0) { rowEffect += update.execute() msg += ",更新" + u + "行" } if (d > 0) { rowEffect += remove.execute() msg += ",删除" + d + "行" } if (rowEffect <= 0) { return ModelOps.newSuccess().setMsg("没有要更新的内容") } // 返回前端 return Model.newSuccess([ update : u, insert : i, delete : d, rowEffect: rowEffect ]).setMsg("保存成功" + msg) } }