一二三应用开发平台应用开发示例(2)——创建应用、模块、实体及配置模型

创建应用

文档管理系统对于开发平台是一个业务应用。
业务应用是通过平台内置的数据字典来维护的,因此访问系统管理模块下的数据字典管理功能,在实体配置分组下找到“应用编码”,点击行记录上的“字典项”。
image.png
在打开的新窗口中,在原有开发平台的基础上,新建1条文档管理系统的记录,注意遵循常量值的命名规范,使用EDOC,如下图所示:
image.png

创建模块

访问系统管理模块下的“模块”功能,新建一条记录,注意应用选择上面新建的“文档管理系统”,编码输入edoc,会对应到包名,包路径输入tech.abc.edoc,缩略码为ed,平台依据实体生成库表时,会将缩略码作为库表的前缀。
image.png

新建实体

在完成应用与模块的配置后,以文件夹为例,进行实体配置工作。
访问实体配置模块下的实体菜单,点击新建按钮,选择上面创建的“文档管理”模块,输入实体的名称和编码,平台在生成代码时将编码作为实体名,因此规范遵循java类的命名规范,首字母大写,保存后完成创建工作。
image.png

配置数据模型

在实体列表中通过查询功能,找到新建的“文件夹”实体,点击行记录上的“配置”按钮,如下图所示:
image.png
打开实体配置页面,如下图所示:
image.png
如左侧导航所示,实体配置分为两大步,数据模型和视图,前者对应着数据库表、实体类等,后者对应着前端页面,默认进入的是数据模型。
数据模型是实体重要的元数据,系统会参照数据模型的配置信息,生成数据库表,以及实体类、服务接口、服务实现、控制器和视图对象类。
为了提升开发效率,平台会参照实体配置信息自动生成1个同名的数据模型。

补充说明一点,实体与数据模型一对一只是最常见的一种情况,实际业务需求存在一对多的情况,如销售订单,不仅有订单,还有订单明细,可以使用平台添加新的数据模型。

设置自关联

当前配置的“文件夹”实体,通过父级可以形成树形结构,也就是自关联关系,因此这里需要点击行记录上的“修改”按钮,将“是否自关联”由否调整为是,如下图所示。
image.png
对于自关联的实体模型,平台会在代码生成环节做一些额外的逻辑处理,在控制器里增加树形数据的接口处理,如下所示:

    <#if entityModelSelfReferenceFlag=="YES">//region 树操作/*** 获取树数据** @return*/@GetMapping("/tree")@PreAuthorize("hasPermission(null,'${package.ModuleName}:${entity?uncap_first}:query')")public ResponseEntity<Result> tree() {QueryWrapper<${entity}> queryWrapper = new QueryWrapper<>();<#list entityModelPropertyList as item><#if item.code=="status">queryWrapper.lambda().eq(${entity}::getStatus, StatusEnum.NORMAL.toString());</#if><#if item.code=="orderNo">// 附加按照排序号排序queryWrapper.orderByAsc(TableFieldConstant.DEFAULT_SORT_FILED);</#if></#list>List<${entity}> list = ${entity?uncap_first}Service.list(queryWrapper);// 转化成树结构数据List<TreeVO> treeList = list.stream().map(e -> convert2TreeVO(e)).collect(Collectors.toList());List<TreeVO> tree = TreeUtil.buildTree(treeList, TreeDefaultConstant.DEFAULT_TREE_ROOT_PARENT_ID);return ResultUtil.success(tree);}/*** 转换为树视图对象*/private TreeVO convert2TreeVO(${entity} entity) {TreeVO tree = new TreeVO();tree.setId(entity.getId());tree.setParentId(entity.get${parentPropertyCode?cap_first}());tree.setLabel(entity.get${mainPropertyCode?cap_first}());return tree;}//endregion</#if>

配置属性

数据模型的属性,对应着java中实体类的属性,同时也对应着数据库中的字段。

上级

点击数据模型行记录上的“配置属性”按钮,打开属性列表,点击“新增”按钮,创建一条“上级”的属性。
image.png
该属性用于自关联,所以需要将“是否上级属性”的值设置为“是”。平台通过该标识来寻找上级关系,从而构建树状层次结构。

注:上级实际数据类型应该选择“实体”,但关联实体相对比较复杂,作为介绍平台使用的引导性范例,上来就是一个复杂的属性配置,不利于入门,因此这里先做基本的文本属性处理,完成基本的配置后,再做调整。
个别属性不需要存储到数据库,如多个属性组合成的属性则可以将“是否库表存储”的值由默认的是调整为否。

名称

按照同样操作新增名称属性,如下图所示:
image.png
注意红框标记的三处设置。
是否可为空:设置为否,平台会在生成代码时对前端和后端都附加必填验证,实现的效果也就是文件夹名称不能为空。
是否唯一:设置为是,且选择唯一性参照为“上级”,平台会在后端服务保存数据时附加验证“同一上级节点下不能存在名称相同的节点”,实现的效果也就是文件夹下不能存在两个名称相同的文件夹。
是否主属性:设置为是,主属性是指该实体的主要显示属性,当该实体作为关联对象时,标记为主属性的属性作为主要显示内容,例如,文件夹的上级也是文件夹,关联上级后,会显示上级文件夹的名称。

父级模型

通过上面操作,为文件夹数据模型设置了2个属性:上级、名称,然后就结束了。
实际上,平台会为实体自动附加一些通用公共属性,如标识、创建人、创建时间、修改人、修改时间、版本号、逻辑删除标识位,并不需要人工来对每个实体配置,如何实现的呢?通过模型继承来做到这一点的,这里的继承,与面向对象中的继承是同一个实现思路。

在数据模型的属性中,可以选择父级模型,系统预置了三个模型:标识模型(只有标识id属性)、业务模型(继承于标识模型,附加了创建人、创建时间、修改人、修改时间、乐观锁、逻辑删除标识位属性)、流程模型(继承于业务模型,附加了与流程相关的一系列发起人、流程状态等属性)。
image.png
并且模型既可以通过继承现有模型的方式扩展,也可以添加新的独立模型,从而达到复用的目的。

补充一点,模型的配置,是放在了一个基础模型的实体中,如下图所示:
image.png
平台在生成库表逻辑处理中,会递归找到该模型所有的父级模型,把字段补全;生成代码逻辑处理中,会使用继承来建立类关系。

开发平台资料

平台名称:一二三应用开发平台
平台简介:企业级通用低代码应用开发平台,免费全开源可商用
设计资料:csdn专栏
开源地址:Gitee
开源协议:MIT

应用系统资料

应用名称:一二三文档管理系统
应用简介: 企事业单位一站式文档管理系统,让组织内文档管理有序,协作高效、安全可控
设计文档:csdn专栏
开源地址:Gitee
开源协议:MIT

如果您在阅读本文时获得了帮助或受到了启发,希望您能够喜欢并收藏这篇文章,为它点赞~
请在评论区与我分享您的想法和心得,一起交流学习,不断进步,遇见更加优秀的自己!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/348468.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CTFHUB-SQL注入-MySQL结构

目录 sqlmap工具夺flag 查看数据库名 查看数据库中表名 查看第一个表中数据 查看第二个表的数据 手动注入 判断是否存在注入 判断字段数量 查询注入点 查询数据库版本 查询数据库名 查看所有数据库 查看表名 查看表中字段 查看表中数据 本题用到sqlmap工具&…

采用ava+B/S架构开发的工业级UWB(Ultra-Wideband)室内定系统源码UWB定位系统技术接口及技术特点

采用avaB/S架构开发的工业级UWB&#xff08;Ultra-Wideband&#xff09;室内定系统源码UWB定位系统技术接口及技术特点 UWB&#xff08;Ultra-Wideband&#xff09;定位技术本身并不直接连接蓝牙或其他无线通信技术进行定位。然而&#xff0c;在实际应用中&#xff0c;UWB定位技…

鸿蒙轻内核A核源码分析系列五 虚实映射(5)虚实映射解除

虚实映射解除函数LOS_ArchMmuUnmap解除进程空间虚拟地址区间与物理地址区间的映射关系&#xff0c;其中参数包含MMU结构体、解除映射的虚拟地址和解除映射的数量count,数量的单位是内存页数。 ⑴处函数OsGetPte1用于获取指定虚拟地址对应的L1页表项数据。⑵处计算需要解除的无效…

使用MATLAB对地铁站、公交站等求解最短路径

使用MATLAB对城市的地铁站、公交站等站点&#xff0c;根据站点的经纬度坐标和彼此之间的权重&#xff0c;求解其最短路径、途径站点和路程 已知的数据如图&#xff0c;是西安市地铁站点的数据&#xff0c;保存在一个Excel里 如图&#xff0c;每列的内容都在上面&#xff0c;不…

Go singlefight 源码详解|图解

写在前面 通俗的来说就是 singleflight 将相同的并发请求合并成一个请求&#xff0c;进而减少对下层服务的压力&#xff0c;通常用于解决缓存击穿的问题。 详解 基础结构 golang.org/x/sync/singleflight singleflight结构体&#xff1a; type call struct {wg sync.WaitGro…

Tabby:一款革新的Mac/Win现代化终端模拟器

在信息技术日新月异的今天&#xff0c;终端操作已成为众多开发者、系统管理员和技术爱好者的日常必备工具。然而&#xff0c;传统的终端模拟器往往功能单一、界面陈旧&#xff0c;无法满足用户对于高效、便捷操作体验的追求。Tabby应运而生&#xff0c;作为一款现代化、功能强大…

基于多传感器数据和周期性采样的滚动轴承故障诊断方法(Python)

代码较为简单&#xff0c;算法结构如下&#xff1a; from scipy.io import loadmat import numpy as np import os from sklearn import preprocessing # 0-1编码 import torch from torch.utils import data as da# 用训练集标准差标准化训练集以及测试集 def scalar_stand(d…

【Android面试八股文】1. 你说一说Handler机制吧 2. 你知道Handler的同步屏障吗? 3. Looper一直在循环,会造成阻塞吗?为什么?

文章目录 一. 你说一说Handler机制吧二、你知道Handler的同步屏障吗&#xff1f;2.1 Handler消息的分类2.2 什么是同步屏障2.3 为什么要设计同步屏障2.4 同步屏障的用法 三、Looper一直在循环&#xff0c;会造成阻塞吗&#xff1f;为什么&#xff1f;扩展阅读 一. 你说一说Hand…

现货黄金交易多少克一手?国内外情况大不同

如果大家想参与国际市场上的现货黄金交易&#xff0c;就应该从它交易细则的入手&#xff0c;先彻底认识这个品种&#xff0c;因为它是来自欧美市场的投资方式&#xff0c;所以无论是从合约的计的单位&#xff0c;计价的货币&#xff0c;交易的具体时间&#xff0c;以及买卖过程…

AI大模型在健康睡眠监测中的深度融合与实践案例

文章目录 1. 应用方案2. 技术实现2.1 数据采集与预处理2.2 构建与训练模型2.3 个性化建议生成 3. 优化策略4. 应用示例&#xff1a;多模态数据融合与实时监测4.1 数据采集4.2 实时监测与反馈 5. 深入分析模型选择和优化5.1 LSTM模型的优势和优化策略5.2 CNN模型的优势和优化策略…

【安装笔记-20240612-Linux-内网穿透服务之cpolar极点云】

安装笔记-系列文章目录 安装笔记-20240612-Linux-内网穿透服务之 cpolar 极点云 文章目录 安装笔记-系列文章目录安装笔记-20240612-Linux-内网穿透服务之 cpolar 极点云 前言一、软件介绍名称&#xff1a;cpolar极点云主页官方介绍 二、安装步骤测试版本&#xff1a;openwrt-…

0601 模拟集成电路中的直流偏置技术

模拟集成电路中的直流偏置技术 6.1.1 BJT 电流源6.1.2 FET电流源6.1.3电流源做作有源负载![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c5381fff64bd48a1b28ba9bee179b18f.png) 6.1.1 BJT 电流源 6.1.2 FET电流源 6.1.3电流源做作有源负载

tmega128单片机控制的智能小车设计

第1章 绪论1.1 选题背景和意义 自第一台工业机器人诞生以来,机器人的民展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人工作的机器一…

2.线性神经网络

目录 1.线性回归一个简化模型线性模型&#xff1a;可以看做是单层神经网络衡量预估质量训练数据参数学习显示解总结 2.基础优化方法小批量随机梯度下降总结 3.Softmax回归&#xff1a;其实是一个分类问题回归VS分类从回归到多类分类---均方损失Softmax和交叉熵损失 4.损失函数L…

阿里云香港服务器怎么样?

大家都知道阿里云是国内最受欢迎的云服务商&#xff0c;那么阿里云香港服务器究竟怎么样呢&#xff1f;和硅云的香港服务器用于做外贸网站等业务相比各有哪些优缺点呢&#xff1f; 阿里云和硅云在香港云服务领域有着广泛的应用和良好的口碑。然而&#xff0c;它们各自的特点和…

借助大语言模型快速学习金仓数据库 KES

基础概念 KES 人大金仓数据库管理系统 KingbaseES&#xff08;KES&#xff09; 是由 北京人大金仓信息技术股份有限公司 (以下简称“人大金仓”)自主研发的面向全行业、全客户关键应用的企业级大型通用数据库管理系统。产品融合了人大金仓在数据库领域几十年的产品研发和企业级…

SQL中distinct去重关键字的使用和count统计组合的使用

文章目录 SQL中distinct的使用1、distinct作用于单列2、distinct作用于多列3、 count()、distinct组合使用conut扩展知识 SQL中distinct的使用 1、distinct作用于单列 语法&#xff1a; select distinct 列名 from 表&#xff1b; distinct必须在列的前面&#xff0c;否则直…

Unity HoloLens2 MRTK 空间锚点 基础教程

Unity HoloLens2 MRTK 空间锚点 基础教程 Unity HoloLens2 空间锚点MRTK 空间锚点 准备Unity 工程创建设置切换 UWP 平台UWP 平台设置 下载并安装混合现实功能工具导入混合现实工具包和 OpenXR 包 Unity 编辑器 UWP 设置Unity 2019.4.40 设置Unity 2022.3.0 设置Unity 2022.3.0…

嵌入式仪器模块:音频综测仪和自动化测试软件

• 24 位分辨率 • 192 KHz 采样率 • 支持多种模拟/数字音频信号的输入/输出 应用场景 • 音频信号分析&#xff1a;幅值、频率、占空比、THD、THDN 等指标 • 模拟音频测试&#xff1a;耳机、麦克风、扬声器测试&#xff0c;串扰测试 • 数字音频测试&#xff1a;平板电…

天锐绿盾 | 无感知加密软件、透明加密系统、数据防泄漏软件

摘要&#xff1a;文件加密软件,包含禁止非授权的文件泄密和抄袭复制解决方案即使被复制泄密都是自动加密无法阅读,透明加密,反复制软件,内网监控,文件加密,网络安全方案,透明文件加密,加密文件,图纸加密,知识产权保护,加密数据; 通过绿盾信息安全管理软件&#xff0c;系统在不改…