当前位置:网站首页>JeeSite新建报表
JeeSite新建报表
2022-08-05 03:42:00 【victor-gx】
JeeSite新建报表
一、新建报表
在jeesite
数据库新建报表report_ over_under_data
CREATE TABLE report_ over_under_data(
id VARCHAR(64) NOT NULL COMMENT '主键' ,
stat_month VARCHAR(10) COMMENT '日期' ,
report_number VARCHAR(10) COMMENT '报表' ,
remarks TEXT COMMENT '备注说明' ,
status VARCHAR(32) NOT NULL COMMENT '状态' ,
create_by VARCHAR(32) COMMENT '创建人' ,
create_date DATETIME COMMENT '创建时间' ,
update_by VARCHAR(32) COMMENT '更新人' ,
update_date DATETIME COMMENT '更新时间' ,
PRIMARY KEY (id)
) COMMENT = ' ';
二、生成代码
启动jeesite项目,登录超级管理员用户,系统管理 ——> 研发工具 ——> 代码生成工具
点击右上角新增,选择刚才新建的报表report_ over_under_data
,后点击下一步
在表中输入如下内容,点击保存并生成代码
此时在IDEA中,进入如下目录 web -> src -> main -> java -> com -> jeesite -> modules
,modules下会多一个report的文件夹,这个文件夹下存放的是java类,再进入 web -> src -> main -> resources -> mappings -> modules
,modules下同样会多一个report的文件夹,这个文件夹下存放的是xml文件,再进入 web -> src -> main -> resources -> views-> modules
,modules下同样会多一个report的文件夹,这个文件夹下存放的是html文件。
三、添加菜单选项
登录超级管理员用户,系统管理 -> 系统设置 -> 菜单管理
点击右上角新增,输入入下内容
链接内容,在新建的report文件下的web文件夹中的ReportOverUnderDataController
类中
权限标识同样在该类中
菜单权重尽量选择默认权重或者二级管理员,如果选择系统管理员,那么二级管理员将不会获得改权限,同样选择超级管理员,系统管理员和二级管理员均不会获得权限。
设置好后点保存。
然后重启项目。再次登录超级管理员用户,就会看到我们刚刚新建的菜单
四、测试功能
增
选择数据报告后,点击右上角新增,输入相关内容后,点击保存
保存后会回到数据报告界面,此时我们数据添加成功
删
点击右边删除按钮,此时数据也会删除,但是我们回到数据库查看,数据并没有被删除
但是我们会发现此时的status的数值为1,但我们将status的数值改为0,回到浏览器刷新页面,数据又回来了。
因为在页面的删除并不是真正物理意义的删除,只是逻辑删除,这样有利与数据恢复。
status数值为0表示正常,status数值为1表示删除,status数值为2表示停用
物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除的数据
逻辑删除:假删除,将对应数据中代表是否被删除字段的状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录
使用场景:可以进行数据恢复
改
点击右边绿色小笔按钮,更改数据后保存
查
我们在添加一组数据,点击右上角查询,输入我们要查询的内容,点击查询
我们再将test的status数值改为1,将test1的status数值改为2,再次查询test与test1
此时test1可查,test不可查。
正常、停用可查,删除不可查。
五、添加停用按钮
将reportOverUnderDataList.html
中第70-73行改为如下内容,
<% if(hasPermi('report:reportOverUnderData:edit')){ %>
actions.push('<a href="${ctx}/report/reportOverUnderData/form?id='+row.id+'" class="btnList" title="${text("编辑数据报表")}"><i class="fa fa-pencil"></i></a> ');
<% } %>
<% if(hasPermi('report:reportOverUnderData:edit')){ %>
if (row.status == Global.STATUS_NORMAL){
actions.push('<a href="${ctx}/report/reportOverUnderData/disable?id='+row.id+'" class="btnList" title="${text("停用数据报表")}" data-confirm="${text("确认要停用该报表吗?")}"><i class="glyphicon glyphicon-ban-circle"></i></a> ');
}else if (row.status == Global.STATUS_DISABLE || row.status == Global.STATUS_FREEZE || row.status == Global.STATUS_AUDIT){
actions.push('<a href="${ctx}/report/reportOverUnderData/enable?id='+row.id+'" class="btnList" title="${text("启用数据报表")}" data-confirm="${text("确认要启用该报表吗?")}"><i class="glyphicon glyphicon-ok-circle"></i></a> ');
}
<% } %>
<% if(hasPermi('report:reportOverUnderData:edit')){ %>
actions.push('<a href="${ctx}/report/reportOverUnderData/delete?id='+row.id+'" class="btnList" title="${text("删除数据报表")}" data-confirm="${text("确认要删除该数据报表吗?")}"><i class="fa fa-trash-o"></i></a> ');
<% } %>
在ReportOverUnderDataController.java
中添加如下代码
/** * 停用报表 */
@RequiresPermissions("report:reportOverUnderData:edit")
@RequestMapping(value = "disable")
@ResponseBody
public String disable(ReportOverUnderData reportOverUnderData, HttpServletRequest request, HttpServletResponse response, Model model) {
reportOverUnderData.setStatus(ReportOverUnderData.STATUS_DISABLE);
reportOverUnderDataService.updateStatus(reportOverUnderData);
return renderResult(Global.TRUE, text("停用报表''{0}''成功", reportOverUnderData.getReportNumber()));
}
/** * 启用报表 */
@RequiresPermissions("report:reportOverUnderData:edit")
@RequestMapping(value = "enable")
@ResponseBody
public String enable(ReportOverUnderData reportOverUnderData, HttpServletRequest request, HttpServletResponse response, Model model) {
reportOverUnderData.setStatus(ReportOverUnderData.STATUS_NORMAL);
reportOverUnderDataService.updateStatus(reportOverUnderData);
return renderResult(Global.TRUE, text("启用报表''{0}''成功", reportOverUnderData.getReportNumber()));
}
重启项目
测试停用功能
六、雪花算法
回到数据库,我们发现数据的id并不是递增的,而是一串随机的数据,这里的数据不是随机的,而是mybatisplus使用了雪花算法
核心思想:
长度共64bit(一个long型)。
首先是一个符号位,1bit标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0。
41bit时间截(毫秒级),存储的是时间截的差值(当前时间截 - 开始时间截),结果约等于69.73年。
10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID,可以部署在1024个节点)。
12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID)。
- 优点:整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞,并且效率较高。
边栏推荐
- iMedicalLIS监听程序(2)
- 21 Days Learning Challenge (2) Use of Graphical Device Trees
- sql怎么找字段里所有数据为空的字段
- 2022 High-level installation, maintenance, and removal of exam questions mock exam question bank and online mock exam
- Fifteen. Actual combat - MySQL database building table character set and collation
- 告白数字化转型时代,时速云镌刻价值新起点
- 静态方法获取配置文件数据
- Web3.0 Dapps——通往未来金融世界的道路
- Hard power or soft power, which is more important to testers?
- 2022.8.4-----leetcode.1403
猜你喜欢
MRTK3开发Hololens应用-手势拖拽、旋转 、缩放物体实现
Acid (ACID) Base (BASE) Principles for Database Design
Ice Scorpion V4.0 attack, security dog products can be fully detected
Spark基础【介绍、入门WordCount案例】
Use CH341A to program external Flash (W25Q16JV)
There are several common event handling methods in Swing?How to listen for events?
Developing Hololens encountered The type or namespace name 'HandMeshVertex' could not be found..
UE4 更改组件变量 (以修改第一人称角色模板的最大行走速度和跳跃高度为例)
Solana NFT开发指南
UE4 第一人称角色模板 添加生命值和调试伤害
随机推荐
Developing Hololens encountered The type or namespace name 'HandMeshVertex' could not be found..
Redis key基本命令
Android Practical Development - Kotlin Tutorial (Introduction - Login Function Implementation 3.3)
Spark基础【介绍、入门WordCount案例】
Spark Basics [Introduction, Getting Started with WordCount Cases]
DEJA_VU3D - Cesium功能集 之 057-百度地图纠偏
Leading the highland of digital medicine, Zhongshan Hospital explores to create a "new paradigm" for future hospitals
阿里本地生活单季营收106亿,大文娱营收72亿,菜鸟营收121亿
Dive into how it works together by simulating Vite
思考(八十八):使用 protobuf 自定义选项,做数据多版本管理
大佬们,我注意到mysql cdc connector有参数scan.incremental.sna
Common open source databases under Linux, how many do you know?
2022.8.4-----leetcode.1403
Swing有几种常用的事件处理方式?如何监听事件?
Queue Topic: Recent Requests
UE4 在游戏运行时更改变量 (通过鼠标滑轮来更改第一人称角色的最大行走速度)
High Item 02 Information System Project Management Fundamentals
public static <T> List<T> asList(T... a) 原型是怎么回事?
You may use special comments to disable some warnings. Three ways to report errors
Android 面试题——如何徒手写一个非阻塞线程安全队列 ConcurrentLinkedQueue?