Browse Source

修改模板

zhangzaipeng 3 năm trước cách đây
mục cha
commit
5ffb7cc6d2

+ 137 - 0
single_table/groovy.ftl_en

@@ -0,0 +1,137 @@
+package ${packageName}
+
+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)}
+import com.yvan.model.YvanExt
+
+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)
+        </#if>
+        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  // 插入行计数11
+        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}))
+        </#switch>
+    </#list>
+</#if>
+            .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}))
+        </#switch>
+    </#list>
+</#if>
+                    .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)
+    }
+}

+ 9 - 0
single_table/mybatis.xml_en.ftl

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="Dict">
+
+    <select id="query">
+        ${sql!''}
+    </select>
+
+</mapper>

+ 70 - 0
single_table/single-controller.js_en.ftl

@@ -0,0 +1,70 @@
+import {invokeServer, msg, Scope} from 'yvan-ext'
+import _ from 'lodash'
+import vjson from "./${moduleName}.view"
+import model from "./${moduleName}.model"
+
+export default class ${moduleName} extends Scope {
+
+    path = '${invokeUrl!""}'
+
+    constructor() {
+        super({model, vjson});
+    }
+
+    onLoad() {
+    }
+
+    refresh() {
+        this.refs.grid1.reload()
+    }
+
+    grid1Select(sender, selected) {
+        this.viewModel.set('${primaryKey}', selected[0]?.data?.${primaryKey})
+    }
+
+<#switch editType>
+    <#case 1>
+        <#break>
+    <#case 2>
+        add() {
+            this.refs.grid1.appendEditRow({}, 1)
+        }
+        <#break>
+    <#case 3>
+        <#break>
+    <#default>
+</#switch>
+
+<#if delete>
+    remove() {
+        system.confirm(`${deleteTips!"真的要删除?"}`).then(() => {
+            this.refs.grid1.removeEditRow()
+        })
+    }
+</#if>
+
+<#if editType != 1 || delete>
+    save() {
+        let {newRows, modifyRows, removeRecords, rows, err} = system.getGridEditRows(this.refs.grid1)
+        if (err) {
+            return
+        }
+
+        const primaryKey = this.viewModel.get('primaryKey')
+        this.setLoading(true)
+        invokeServer('${invokeUrl!''}@saveItems', {
+            primaryKey,
+            newRows,
+            modifyRows,
+            removeRecords,
+        }).then(res => {
+            system.msg(res.msg)
+            this.refs.grid1.reload()
+        }).finally(() => {
+            this.setLoading(false)
+        })
+    }
+</#if>
+
+}
+

+ 16 - 0
single_table/single-model.js_en.ftl

@@ -0,0 +1,16 @@
+export default {
+    data: {
+        primaryKey : '${primaryKey}',
+        queryGrid1: {
+    <#if queryList??>
+        <#list queryList as query>
+            ${query.columnName} : '',
+        </#list>
+    </#if>
+        },
+        form : {
+
+        }
+    }
+}
+

+ 149 - 0
single_table/single-view.js_en.ftl

@@ -0,0 +1,149 @@
+export default {
+    title: '${menuName!"默认名称4"}',
+    layout: 'fit',
+    referenceHolder: true,
+    tbar: {
+    xtype: 'toolbar',
+    items: [
+            {
+                xtype: 'button',
+                text: '刷新',
+                iconCls: 'fa fa-refresh',
+                listeners: {
+                    click: 'scope.refresh'
+                },
+            },
+            <#switch editType>
+                <#case 1>
+                    <#break>
+                <#case 2>
+                    {
+                        xtype: 'button',
+                        text: '添加',
+                        iconCls: 'x-fa fa-plus',
+                        listeners: {
+                            click: 'scope.add'
+                        },
+                    },
+                    <#break>
+                <#case 3>
+                    {
+                        xtype: 'button',
+                        text: '添加',
+                        iconCls: 'x-fa fa-plus',
+                        listeners: {
+                            click: 'scope.add'
+                        },
+                    },
+                    {
+                        xtype: 'button',
+                        text: '编辑',
+                        iconCls: 'x-fa fa-edit',
+                        bind: {
+                            disabled: '{grid1.selection === null}'
+                        },
+                        listeners: {
+                            click: 'scope.edit'
+                        }
+                    },
+                    <#break>
+                <#default>
+            </#switch>
+            <#if delete?? && delete>
+                {
+                    xtype: 'button',
+                    text: '删除',
+                    iconCls: 'x-fa fa-remove',
+                    bind: {
+                    disabled: '{grid1.selection === null}'
+                    },
+                    listeners: {
+                        click: 'scope.remove'
+                    },
+                },
+            </#if>
+            <#if editType != 1 || delete>
+                {
+                    xtype: 'button',
+                    text: '保存',
+                    iconCls: 'x-fa fa-save',
+                    bind: {
+                    },
+                    listeners: {
+                        click: 'scope.save'
+                    },
+                },
+            </#if>
+            ]
+    },
+    items: [
+        {
+            layout: 'border',
+            items: [
+                {
+                    region: 'center',
+                    xtype: 'yvgrid',
+                    layout: 'fit',
+                    reference: 'grid1',
+                <#if pagination?? && pagination>
+                    pagination: true,
+                <#else>
+                    pagination: false,
+                </#if>
+                    selModel: {
+                        selType: 'rowmodel',
+                        mode: 'SINGLE',
+                    },
+                    dataSource: {
+                        method: 'invoke',
+                        url: '${invokeUrl!""}@query',
+                        params: {
+                    <#if queryList??>
+                        <#list queryList as query>
+                            ${query.columnName} : '{queryGrid1.${query.columnName}}',
+                        </#list>
+                    </#if>
+                        },
+                    },
+                    <#if editType != 1 || delete>
+                    listeners: {
+                        selectionchange: 'scope.grid1Select'
+                    },
+                    </#if>
+                    columns: [
+                        {
+                            xtype: "rownumberer",
+                            header: "序号"
+                        },
+        <#if columnList??>
+            <#list columnList as column>
+                <#switch column.componentType>
+                    <#case 1>
+                        { dataIndex: "${column.columnName}", header: "${column.chineseName}", fix: ['system.getDict("${column.dictKey}")'],
+                        <#break>
+                    <#case 2>
+                        { dataIndex: "${column.columnName}", header: "${column.chineseName}",
+                        <#break>
+                    <#default>
+                        { dataIndex: "${column.columnName}", header: "${column.chineseName}",
+                </#switch>
+
+                <#if editorList?seq_contains(column.columnName)>
+                    editor: {
+                        <#if column.componentType == 1>
+                            xtype : 'combo',
+                            fix: ['system.getDict("DICT_TYPE")']
+                        <#elseif column.componentType == 2>
+                            xtype : 'textfield',
+                        </#if>
+                    }
+                </#if>
+                },
+            </#list>
+        </#if>
+                    ]
+                }
+            ]
+        }
+    ]
+}