Merge branch 'feature/develop1.0'

This commit is contained in:
459816669@qq.com 2021-02-26 22:39:21 +08:00
commit 3314dfb077
60 changed files with 83602 additions and 8743 deletions

View File

@ -22,11 +22,11 @@
17. 连接池监视监视当前系统数据库连接池状态可进行分析SQL找出系统性能瓶颈。
18. **钉钉管理:钉钉用户,部门体系数据同步,请假单,采购单流程**
19. **流程管理: 流程模型在线设计,流程组管理,待办钉钉通知**
20. **支付管理:一键导入支付宝和微信账单,可系统化管理账单**
20. **账单管理:一键导入支付宝和微信账单,可系统化管理账单**
21. **系统序列设置:每日凌晨更新序列号,系统按照日期生成自增序列单号**
22. **可视化大屏:智能化科技大屏,实时了解钉钉数据,流程数据状态**
## 在线体验
暂未开放数据库,有需要的可以加群,项目可搭建流程平台商业化
暂未开放数据库,有需要的可以加群,项目可用于搭建流程平台商业化
- QQ群: 577813338
- admin/admin123
@ -42,27 +42,52 @@
<table>
<tr>
<td><img src="https://qimetons.oss-cn-beijing.aliyuncs.com/094981bad3844c25b4e0e9ae5fdfb253.png"/></td>
<td><img src="https://qimetons.oss-cn-beijing.aliyuncs.com/a5b69fa27ba147a89efc229d90e1d27e.png"/></td>
</tr>
<tr>
<td><img src="https://qimetons.oss-cn-beijing.aliyuncs.com/694936c6e1b34af4a9c2525bf25156ba.png"/></td>
</tr>
<tr>
<td><img src="https://qimetons.oss-cn-beijing.aliyuncs.com/102a95b10c5b4094ae9eea060ed3d0c4.png"/></td>
<td><img src="https://qimetons.oss-cn-beijing.aliyuncs.com/de48282f792d4300ba26b7a397464d71.png"/></td>
</tr>
<tr>
<td><img src="https://qimetons.oss-cn-beijing.aliyuncs.com/de48282f792d4300ba26b7a397464d71.png"/></td>
<td><img src="https://qimetons.oss-cn-beijing.aliyuncs.com/952eaddf26164feaae13ec9ffdbeab35.png"/></td>
</tr>
<tr>
<td><img src="https://qimetons.oss-cn-beijing.aliyuncs.com/416ffa7c1f1f42f8807a24dc2e63a08d.png"/></td>
<td><img src="https://qimetons.oss-cn-beijing.aliyuncs.com/0ffee016a6be4d5eb5b5f18a0291353e.png"/></td>
</tr>
</table>
## 版本发布
v1.0 2021-2-24 ding-flow首发
- 1.0 集成flowable官方设计器
- 2.0 抛弃官方设计器用户组使用ding-flow自带用户流程角色。流程角色实现向下兼容即流程某节点配置父角色其父角色下所有子角色都具有流程审批权限
- 3.0 系统自带请假申请和采购单申请采用类form表单提交保存流程资源表。反序列化表单实现流程中取业务数据。接口通用一个接口按照规定格式设计流程即可。
- 4.0 全局监听器抽象设计,实现任务创建时,钉钉消息通知,待办人实时接收消息,及时处理任务。
- 5.0 任务监听器抽象设计,满足各种节点自定义业务需求,按照各种开发即可。
- 6.0 系统创建用户和部门,同步到钉钉用户和部门。实现钉钉移动化办公。
- 7.0 钉钉修改用户和部门,系统异步监听数据变化,实时修改系统数据。实现钉钉和系统数据同步。
- 8.0 账单管理,导出支付宝,微信账单。一键导入系统,系统轻松管理账单数据,日常消费明了清晰。
v1.1 2021-2-26
- 1.0 集成ding-flow数据大屏智能化科技大屏实时了解钉钉数据流程数据状态
- 2.0 修复流程历史数据保存失败问题
- 3.0 调整待办,增加已办功能
## 未来规划
TODO 1.0
- 1.0 角色与钉钉打通
- 2.0 流程表单设计
- 3.0 钉钉工作流与系统工作流打通(让流程移动化)
- 4.0 钉钉同步数据失败后,手工重试
- 5.0 记录消息通知轨迹
- 6.0 钉钉流程和系统流程打通,让流程移动化
## 交流群
QQ群: 577813338 欢迎入群讨论,我们的口号:借助钉钉,致力于流程,让流程更简单
- QQ群: 577813338 欢迎入群讨论,我们的口号:借助钉钉,致力于流程,让流程更简单
## 我有话说
开源离不开您的参与、支持与鼓励。开源不易如果您觉得项目对您有帮助请您动动小手star一下也是对作者的最大帮助。
## 感谢诺依系统提供框架
诺依系统地址 http://ruoyi.vip
诺依系统地址 http://ruoyi.vip

18
pom.xml
View File

@ -8,11 +8,11 @@
<version>4.3.1</version>
<name>snow</name>
<url>http://www.ruoyi.vip</url>
<url>http://snowblog.shop.csj361.com</url>
<description>snow管理系统</description>
<properties>
<ruoyi.version>4.3.1</ruoyi.version>
<snow.version>4.3.1</snow.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
@ -171,49 +171,49 @@
<dependency>
<groupId>com.snow</groupId>
<artifactId>snow-quartz</artifactId>
<version>${ruoyi.version}</version>
<version>${snow.version}</version>
</dependency>
<!-- 代码生成-->
<dependency>
<groupId>com.snow</groupId>
<artifactId>snow-generator</artifactId>
<version>${ruoyi.version}</version>
<version>${snow.version}</version>
</dependency>
<!-- 核心模块-->
<dependency>
<groupId>com.snow</groupId>
<artifactId>snow-framework</artifactId>
<version>${ruoyi.version}</version>
<version>${snow.version}</version>
</dependency>
<!-- 系统模块-->
<dependency>
<groupId>com.snow</groupId>
<artifactId>snow-system</artifactId>
<version>${ruoyi.version}</version>
<version>${snow.version}</version>
</dependency>
<!-- 通用工具-->
<dependency>
<groupId>com.snow</groupId>
<artifactId>snow-common</artifactId>
<version>${ruoyi.version}</version>
<version>${snow.version}</version>
</dependency>
<!--钉钉模块-->
<dependency>
<groupId>com.snow</groupId>
<artifactId>snow-dingtalk</artifactId>
<version>${ruoyi.version}</version>
<version>${snow.version}</version>
</dependency>
<!--工作流模块-->
<dependency>
<groupId>com.snow</groupId>
<artifactId>snow-flowable</artifactId>
<version>${ruoyi.version}</version>
<version>${snow.version}</version>
</dependency>
</dependencies>

86
ry.sh
View File

@ -1,86 +0,0 @@
#!/bin/bash
AppName=ruoyi-admin.jar
#JVM参数
JVM_OPTS="-Dname=$AppName -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
APP_HOME=`pwd`
LOG_PATH=$APP_HOME/logs/$AppName.log
if [ "$1" = "" ];
then
echo -e "\033[0;31m 未输入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m"
exit 1
fi
if [ "$AppName" = "" ];
then
echo -e "\033[0;31m 未输入应用名 \033[0m"
exit 1
fi
function start()
{
PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
if [ x"$PID" != x"" ]; then
echo "$AppName is running..."
else
nohup java -jar $JVM_OPTS target/$AppName > /dev/null 2>&1 &
echo "Start $AppName success..."
fi
}
function stop()
{
echo "Stop $AppName"
PID=""
query(){
PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
}
query
if [ x"$PID" != x"" ]; then
kill -TERM $PID
echo "$AppName (pid:$PID) exiting..."
while [ x"$PID" != x"" ]
do
sleep 1
query
done
echo "$AppName exited."
else
echo "$AppName already stopped."
fi
}
function restart()
{
stop
sleep 2
start
}
function status()
{
PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`
if [ $PID != 0 ];then
echo "$AppName is running..."
else
echo "$AppName is not running..."
fi
}
case $1 in
start)
start;;
stop)
stop;;
restart)
restart;;
status)
status;;
*)
esac

View File

@ -78,6 +78,17 @@ public class FlowController extends BaseController {
return AjaxResult.success();
}
/**
* 跳转待办页
* @return
*/
@RequiresPermissions("flow:get:todoList")
@GetMapping("/toDoMyTask")
public String todoTask()
{
return prefix+"/myTask";
}
/**
* 获取我的待办
*/

View File

@ -61,7 +61,11 @@ public class FinanceFlowController extends BaseController
@ResponseBody
public TableDataInfo list(FinanceAlipayFlow financeAlipayFlow)
{
SysUser user = ShiroUtils.getSysUser();
startPage();
if(!user.isAdmin()){
financeAlipayFlow.setBelongUserId(user.getUserId());
}
List<FinanceAlipayFlow> list = financeAlipayFlowService.selectFinanceAlipayFlowList(financeAlipayFlow);
return getDataTable(list);
}

View File

@ -1,33 +1,39 @@
package com.snow.web.controller.system;
import java.util.Date;
import java.util.List;
import cn.hutool.core.date.DateUtil;
import com.snow.common.config.Global;
import com.snow.common.constant.ShiroConstants;
import com.snow.common.core.controller.BaseController;
import com.snow.common.core.domain.AjaxResult;
import com.snow.common.core.text.Convert;
import com.snow.common.utils.CookieUtils;
import com.snow.common.utils.DateUtils;
import com.snow.common.utils.ServletUtils;
import com.snow.common.utils.StringUtils;
import com.snow.flowable.domain.FlowGeneralSituationVO;
import com.snow.flowable.domain.ProcessInstanceDTO;
import com.snow.flowable.domain.ProcessInstanceVO;
import com.snow.flowable.service.FlowableService;
import com.snow.framework.shiro.service.SysPasswordService;
import com.snow.framework.util.ShiroUtils;
import com.snow.system.domain.*;
import com.snow.system.service.ISysConfigService;
import com.snow.system.service.ISysMenuService;
import com.snow.system.service.ISysOperLogService;
import com.snow.system.service.impl.FinanceAlipayFlowServiceImpl;
import com.snow.system.service.impl.SysDingtalkSyncLogServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import com.snow.common.config.Global;
import com.snow.common.core.controller.BaseController;
import com.snow.framework.util.ShiroUtils;
import com.snow.system.domain.SysMenu;
import com.snow.system.domain.SysUser;
import com.snow.system.service.ISysConfigService;
import com.snow.system.service.ISysMenuService;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.List;
/**
* 首页 业务处理
@ -47,6 +53,18 @@ public class SysIndexController extends BaseController
@Autowired
private SysPasswordService passwordService;
@Autowired
private FlowableService flowableService;
@Autowired
private SysDingtalkSyncLogServiceImpl sysDingtalkSyncLogService;
@Autowired
private FinanceAlipayFlowServiceImpl financeAlipayFlowService;
@Autowired
private ISysOperLogService operLogService;
// 系统首页
@GetMapping("/index")
public String index(ModelMap mmap)
@ -161,4 +179,39 @@ public class SysIndexController extends BaseController
}
return false;
}
/**
* 数据大屏 后面改成接口的形式获取
* @param mmap
* @return
*/
@GetMapping("/system/bigScreen")
public String bigScreen(ModelMap mmap)
{
String date= DateUtil.formatDate(new Date());
mmap.put("date",date);
SysUser user = ShiroUtils.getSysUser();
//流程概况
FlowGeneralSituationVO flowGeneralSituation = flowableService.getFlowGeneralSituation(String.valueOf(user.getUserId()));
mmap.put("flowGeneralSituation",flowGeneralSituation);
//钉钉概况
SysDingtalkSyncLog sysDingtalkSyncLog=new SysDingtalkSyncLog();
SysDingtalkSyncSituationVO sysDingtalkSyncSituation = sysDingtalkSyncLogService.getSysDingtalkSyncSituation(sysDingtalkSyncLog);
mmap.put("DingTalkSituation",sysDingtalkSyncSituation);
//账单概况
FinanceBillSituationVO financeAlipayFlowSituation = financeAlipayFlowService.getFinanceAlipayFlowSituation(user.getUserId());
mmap.put("financeBillSituation",financeAlipayFlowSituation);
//暂时先存放操作失败的日志
SysOperLog sysOperLog=new SysOperLog();
sysOperLog.setStatus(1);
List<SysOperLog> sysOperLogs = operLogService.selectOperLogList(sysOperLog);
mmap.put("sysOperLogs",sysOperLogs);
ProcessInstanceDTO processInstanceDTO=new ProcessInstanceDTO();
//获取当天发起的流程
processInstanceDTO.setStartedAfter(DateUtils.parseDate(DateUtils.getDate()+"00:00:00"));
processInstanceDTO.setStartedBefore(DateUtils.parseDate(DateUtils.getDate()+"23:59:59"));
List<ProcessInstanceVO> historicProcessInstanceList = flowableService.getHistoricProcessInstanceList(processInstanceDTO);
mmap.put("historicProcessInstanceList",historicProcessInstanceList);
return "big_screen";
}
}

View File

@ -6,9 +6,9 @@ spring:
druid:
# 主库数据源
master:
url: jdbc:mysql://localhost:3306/snow?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root
url: jdbc:mysql://rm-bp1j1554xv1qs04295o.mysql.rds.aliyuncs.com:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: cloud_root
password: Jin!152377
# 从库数据源
slave:
# 从数据源开关/默认关闭

View File

@ -5,7 +5,7 @@ snow:
# 版本
version: 4.3.1
# 版权年份
copyrightYear: 2020
copyrightYear: 2021
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/snow/uploadPathLinux配置 /home/snow/uploadPath

View File

@ -0,0 +1,166 @@
@charset "utf-8";
*{
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box}
*,body{padding:0px; margin:0px;color: #222;font-family: "微软雅黑";}
body{ background:#000d4a url(../images/bg1.jpg) center top; background-size:cover;color:#666; padding-bottom: 30px;font-size: .1rem;}
li{ list-style-type:none;}
table{}
i{ margin:0px; padding:0px; text-indent:0px;}
img{ border:none; max-width: 100%;}
a{ text-decoration:none; color:#399bff;}
a.active,a:focus{ outline:none!important; text-decoration:none;}
ol,ul,p,h1,h2,h3,h4,h5,h6{ padding:0; margin:0}
a:hover{ color:#06c; text-decoration: none!important}
.clearfix:after, .clearfix:before {
display: table;
content: " "
}
.clearfix:after {
clear: both
}
.pulll_left{float:left;}
.pulll_right{float:right;}
/*谷哥滚动条样式*/
::-webkit-scrollbar {width:5px;height:5px;position:absolute}
::-webkit-scrollbar-thumb {background-color:#5bc0de}
::-webkit-scrollbar-track {background-color:#ddd}
/***/
.loading{position:fixed; left:0; top:0; font-size:.3rem; z-index:100000000;width:100%; height:100%; background:#1a1a1c; text-align:center;}
.loadbox{position:absolute; width:160px;height:150px; color: #324e93; left:50%; top:50%; margin-top:-100px; margin-left:-75px;}
.loadbox img{ margin:10px auto; display:block; width:40px;}
.copyright{ background:rgba(19,31,64,.32); border: 1px solid rgba(255,255,255,.05); line-height:.5rem; text-align: center; padding-right: 15px; bottom: 0; color:rgba(255,255,255,.7); font-size: .16rem; }
.head{ height:1.05rem; background: url(../images/head_bg.png) no-repeat center center; background-size: 100% 100%; position: relative}
.head h1{ color:#fff; text-align: center; font-size: .42rem; line-height:.75rem;}
.head h1 img{ width:1.5rem; display: inline-block; vertical-align: middle; margin-right: .2rem}
.weather{ position:absolute; right:.3rem; top:0; line-height: .75rem;}
.weather img{ width:.37rem; display: inline-block; vertical-align: middle;}
.weather span{color:rgba(255,255,255,.7); font-size: .18rem; padding-right: .1rem;}
.mainbox{ padding:.4rem .4rem 0rem .4rem;}
.mainbox>ul{ margin-left:-.4rem; margin-right:-.4rem;}
.mainbox>ul>li{ float: left; padding: 0 .4rem}
.mainbox>ul>li{ width: 30%}
.mainbox>ul>li:nth-child(2){ width: 40%}
.boxall{ border: 1px solid rgba(25,186,139,.17); padding:0 .3rem .3rem .3rem; background: rgba(255,255,255,.04) url(../images/line.png); background-size: 100% auto; position: relative; margin-bottom: .3rem; z-index: 10;}
.boxall:before,
.boxall:after{ position:absolute; width: .1rem; height: .1rem; content: ""; border-top: 2px solid #02a6b5; top: 0;}
.boxall:before,.boxfoot:before{border-left: 2px solid #02a6b5;left: 0;}
.boxall:after,.boxfoot:after{border-right: 2px solid #02a6b5; right: 0;}
.alltitle{ font-size:.24rem; color:#fff; text-align: center; line-height: .6rem; border-bottom:1px solid rgba(255,255,255,.2)}
.boxfoot{ position:absolute; bottom: 0; width: 100%; left: 0;}
.boxfoot:before,
.boxfoot:after{ position:absolute; width: .1rem; height: .1rem; content: "";border-bottom: 2px solid #02a6b5; bottom: 0;}
.bar{background:rgba(101,132,226,.1); padding: .15rem;}
.barbox li,.barbox2 li{ width:50%; text-align: center; position: relative;}
.barbox:before,
.barbox:after{ position:absolute; width: .3rem; height: .1rem; content: ""; }
.barbox:before{border-left: 2px solid #02a6b5;left: 0;border-top: 2px solid #02a6b5; }
.barbox:after{border-right: 2px solid #02a6b5; right: 0; bottom: 0;border-bottom: 2px solid #02a6b5; }
.barbox li:first-child:before{ position:absolute; content: ""; height:50%; width: 1px; background: rgba(255,255,255,.2); right: 0; top: 25%;}
.barbox{ border: 1px solid rgba(25,186,139,.17); position: relative;}
.barbox li{ font-size: .6rem; color: #ffeb7b; padding: .05rem 0; font-family: Gotham, "Helvetica Neue", Helvetica, Arial, "sans-serif"; font-weight: bold;}
.barbox2 li{ font-size: .19rem; color: #637c9f; padding-top: .1rem;}
.map{ position:relative; height: 7.2rem; z-index: 9;}
.map4{ width: 200%; height:7rem; position: relative; left: -50%; top: 4%; margin-top: .2rem; z-index: 5;}
.map1,.map2,.map3{ position:absolute;}
.map1{ width:6.43rem; z-index: 2;top:.45rem; left: .4rem; animation: myfirst2 15s infinite linear;}
.map2{ width:5.66rem; top:.85rem; left: .77rem; z-index: 3; opacity: 0.2; animation: myfirst 10s infinite linear;}
.map3{ width:5.18rem; top:1.07rem; left: 1.13rem; z-index: 1;}
#echarts1,#echarts9,#echarts2,#echarts3,#echarts6,#echarts7,#echarts8,#echarts10{ position:relative;}
#echarts1:before,
#echarts9:before,
#echarts2:before,
#echarts3:before,
#echarts6:before,
#echarts7:before,
#echarts8:before,
#echarts10:before { position:absolute; content: "23124"; width: 100%; text-align: center; bottom: .15rem; color: #fff; opacity: .7; font-size: .18rem;}
#echarts1:before{ content: "成功数"}
#echarts9:before{ content: "失败数"}
#echarts2:before{ content: "成功占比"}
#echarts3:before{ content: "失败占比"}
#echarts6:before{ content: "出勤比"}
#echarts7:before{ content: "缺勤比"}
#echarts8:before{ content: "钉钉流程数"}
#echarts10:before{ content: "钉钉待办数"}
.tabs { text-align: center; padding: .1rem 0 0 0;}
.tabs a {
position: relative;
display: inline-block;
margin-left: 1px;
padding:.05rem .2rem;
color: #898989;
transition: all .3s ease-out 0s;
font-size: 14px;
}
.tabs li{ display:inline-block;}
.tabs a:after {
position: absolute;
width: 1px;
height: 10px;
background-color: rgba(255,255,255,.1);
content: '';
margin-left:0; right:-1px; margin-top: 7px;
}
.tabs li a.active {border: 1px solid rgba(25,186,139,.17); background: rgba(255,255,255,.05); color:#fff;}
.tit02{ text-align:center; margin: .1rem 0; position: relative}
.tit02 span{border: 1px solid rgba(25,186,139,.17); letter-spacing: 2px; padding: .01rem .2rem; background: rgba(255,255,255,.05); font-size: .18rem; color: #49bcf7;}
.tit02:before,.tit02:after{ position:absolute; width:26%; height: 1px;background: rgba(25,186,139,.2); content: ""; top: .12rem;}
.tit02:after{ right:0;}
.tit02:before{ left:0;}
.wrap{ height:2.54rem; overflow: hidden;}
.wrap li{ line-height:.42rem; height:.42rem; font-size: .18rem; text-indent: .24rem; margin-bottom: .1rem; }
.wrap li span{color: rgba(255,255,255,.6); }
.sy{ float:left; width: 24%; height: 2.2rem; margin-top: -.25rem;}
.adduser{ height:1.5rem; overflow: hidden;}
.adduser li{height:.5rem;}
.adduser img{ width: .40rem; border-radius: .5rem; margin-right: .1rem; display: inline-block; vertical-align: middle;}
.adduser span{ line-height:.5rem; font-size: .18rem;color: rgba(255,255,255,.6); }
.sycm ul{ margin-left:-.5rem;margin-right:-.5rem; padding: .16rem 0;}
.sycm li{ float: left; width: 33.33%; text-align: center; position: relative}
.sycm li:before{ position:absolute; content: ""; height:30%; width: 1px; background: rgba(255,255,255,.1); right: 0; top: 15%;}
.sycm li:last-child:before{ width: 0;}
.sycm li h2{ font-size:.3rem; color: #c5ccff;}
.sycm li span{ font-size:.18rem; color: #fff; opacity: .5;}
@keyframes myfirst2
{
from {transform: rotate(0deg);}
to {transform: rotate(359deg);}
}
@keyframes myfirst
{
from {transform: rotate(0deg);}
to {transform: rotate(-359deg);}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,354 @@
$.getJSON('js/map.json', function(data){
$.each(data, function (infoIndex, info){
var city = info.children;
for(var i =0;i<city.length;i++){
var citydetail = new Array();
var name = city[i].name;
geoCoordMap[name]= citydetail;
var lat = parseFloat(city[i].lat);
var log = parseFloat(city[i].log);
citydetail.push(log);
citydetail.push(lat);
}
})
map_1_option.series[0].data = convertData(data2.sort(function (a, b) {
return b.value - a.value;
})),
/* }).slice(0, 6)),
*/ map_1.setOption(map_1_option);
});
var geoCoordMap = {
};
var data2 = [
{name: '商丘', value: 9},
{name: '鄂尔多斯', value: 12},
{name: '招远', value: 12},
{name: '舟山', value: 12},
{name: '齐齐哈尔', value: 14},
{name: '盐城', value: 15},
{name: '赤峰', value: 16},
{name: '青岛', value: 18},
{name: '乳山', value: 18},
{name: '金昌', value: 19},
{name: '泉州', value: 21},
{name: '莱西', value: 21},
{name: '日照', value: 21},
{name: '胶南', value: 22},
{name: '南通', value: 23},
{name: '拉萨', value: 24},
{name: '云浮', value: 24},
{name: '梅州', value: 25},
{name: '文登', value: 25},
{name: '上海', value: 25},
{name: '攀枝花', value: 25},
{name: '威海', value: 25},
{name: '承德', value: 25},
{name: '厦门', value: 26},
{name: '汕尾', value: 26},
{name: '潮州', value: 26},
{name: '丹东', value: 27},
{name: '太仓', value: 27},
{name: '曲靖', value: 27},
{name: '烟台', value: 28},
{name: '福州', value: 29},
{name: '瓦房店', value: 30},
{name: '即墨', value: 30},
{name: '抚顺', value: 31},
{name: '玉溪', value: 31},
{name: '张家口', value: 31},
{name: '阳泉', value: 31},
{name: '莱州', value: 32},
{name: '湖州', value: 32},
{name: '汕头', value: 32},
{name: '昆山', value: 33},
{name: '宁波', value: 33},
{name: '湛江', value: 33},
{name: '揭阳', value: 34},
{name: '荣成', value: 34},
{name: '连云港', value: 35},
{name: '葫芦岛', value: 35},
{name: '常熟', value: 36},
{name: '东莞', value: 36},
{name: '河源', value: 36},
{name: '淮安', value: 36},
{name: '泰州', value: 36},
{name: '南宁', value: 37},
{name: '营口', value: 37},
{name: '惠州', value: 37},
{name: '江阴', value: 37},
{name: '蓬莱', value: 37},
{name: '韶关', value: 38},
{name: '嘉峪关', value: 38},
{name: '广州', value: 38},
{name: '延安', value: 38},
{name: '太原', value: 39},
{name: '清远', value: 39},
{name: '中山', value: 39},
{name: '昆明', value: 39},
{name: '寿光', value: 40},
{name: '盘锦', value: 40},
{name: '长治', value: 41},
{name: '深圳', value: 41},
{name: '珠海', value: 42},
{name: '宿迁', value: 43},
{name: '咸阳', value: 43},
{name: '铜川', value: 44},
{name: '平度', value: 44},
{name: '佛山', value: 44},
{name: '海口', value: 44},
{name: '江门', value: 45},
{name: '章丘', value: 45},
{name: '肇庆', value: 46},
{name: '大连', value: 47},
{name: '临汾', value: 47},
{name: '吴江', value: 47},
{name: '石嘴山', value: 49},
{name: '沈阳', value: 50},
{name: '苏州', value: 50},
{name: '茂名', value: 50},
{name: '嘉兴', value: 51},
{name: '长春', value: 51},
{name: '胶州', value: 52},
{name: '银川', value: 52},
{name: '张家港', value: 52},
{name: '三门峡', value: 53},
{name: '锦州', value: 54},
{name: '南昌', value: 54},
{name: '柳州', value: 54},
{name: '三亚', value: 54},
{name: '自贡', value: 56},
{name: '吉林', value: 56},
{name: '阳江', value: 57},
{name: '泸州', value: 57},
{name: '西宁', value: 57},
{name: '宜宾', value: 58},
{name: '呼和浩特', value: 58},
{name: '成都', value: 58},
{name: '大同', value: 58},
{name: '镇江', value: 59},
{name: '桂林', value: 59},
{name: '张家界', value: 59},
{name: '宜兴', value: 59},
{name: '北海', value: 60},
{name: '西安', value: 61},
{name: '金坛', value: 62},
{name: '东营', value: 62},
{name: '牡丹江', value: 63},
{name: '遵义', value: 63},
{name: '绍兴', value: 63},
{name: '扬州', value: 64},
{name: '常州', value: 64},
{name: '潍坊', value: 65},
{name: '重庆', value: 66},
{name: '台州', value: 67},
{name: '南京', value: 67},
{name: '滨州', value: 70},
{name: '贵阳', value: 71},
{name: '无锡', value: 71},
{name: '本溪', value: 71},
{name: '克拉玛依', value: 72},
{name: '渭南', value: 72},
{name: '马鞍山', value: 72},
{name: '宝鸡', value: 72},
{name: '焦作', value: 75},
{name: '句容', value: 75},
{name: '北京', value: 79},
{name: '徐州', value: 79},
{name: '衡水', value: 80},
{name: '包头', value: 80},
{name: '绵阳', value: 80},
{name: '乌鲁木齐', value: 84},
{name: '枣庄', value: 84},
{name: '杭州', value: 84},
{name: '淄博', value: 85},
{name: '鞍山', value: 86},
{name: '溧阳', value: 86},
{name: '库尔勒', value: 86},
{name: '安阳', value: 90},
{name: '开封', value: 90},
{name: '济南', value: 92},
{name: '德阳', value: 93},
{name: '温州', value: 95},
{name: '九江', value: 96},
{name: '邯郸', value: 98},
{name: '临安', value: 99},
{name: '兰州', value: 99},
{name: '沧州', value: 100},
{name: '临沂', value: 103},
{name: '南充', value: 104},
{name: '天津', value: 105},
{name: '富阳', value: 106},
{name: '泰安', value: 112},
{name: '诸暨', value: 112},
{name: '郑州', value: 113},
{name: '哈尔滨', value: 114},
{name: '聊城', value: 116},
{name: '芜湖', value: 117},
{name: '唐山', value: 119},
{name: '平顶山', value: 119},
{name: '邢台', value: 119},
{name: '德州', value: 120},
{name: '济宁', value: 120},
{name: '荆州', value: 127},
{name: '宜昌', value: 130},
{name: '义乌', value: 132},
{name: '丽水', value: 133},
{name: '洛阳', value: 134},
{name: '秦皇岛', value: 136},
{name: '株洲', value: 143},
{name: '石家庄', value: 147},
{name: '莱芜', value: 148},
{name: '常德', value: 152},
{name: '保定', value: 153},
{name: '湘潭', value: 154},
{name: '金华', value: 157},
{name: '岳阳', value: 169},
{name: '长沙', value: 175},
{name: '衢州', value: 177},
{name: '廊坊', value: 193},
{name: '菏泽', value: 194},
{name: '合肥', value: 229},
{name: '武汉', value: 273},
{name: '大庆', value: 279}
];
var convertData = function (data) {
var res = [];
for (var i = 0; i < data.length; i++) {
var geoCoord = geoCoordMap[data[i].name];
if (geoCoord) {
res.push({
name: data[i].name,
value: geoCoord.concat(data[i].value)
});
}
}
return res;
};
//地图容器
var map_1 = echarts.init(document.getElementById('map_1'));
//地图容器
//34个省、市、自治区的名字拼音映射数组
//网络零售当期分布
var map_1_option = {
/* title: {
text: '全国主要城市空气质量',
subtext: 'data from PM25.in',
left: 'center',
textStyle: {
color: '#fff'
}
},*/
grid: {
top: '0',
left: '0',
right: '0',
bottom: '0',
containLabel: true
},
tooltip : {
trigger: 'item'
},
/* legend: {
orient: 'vertical',
y: 'bottom',
x:'right',
data:['pm2.5'],
textStyle: {
color: '#fff'
}
},*/
geo: {
map: 'china',
label: {
emphasis: {
show: false
}
},
roam: false,
itemStyle: {
normal: {
areaColor: '#4c60ff',
borderColor: '#000f4c',
},
emphasis: {
areaColor: '#293fff'
}
}
},
series : [
{
name: 'pm2.5',
type: 'scatter',
coordinateSystem: 'geo',
data: convertData(data2),
symbolSize: function (val) {
return val[2] / 20;
},
label: {
normal: {
formatter: '{b}',
position: 'right',
show: false
},
emphasis: {
show: true
}
},
itemStyle: {
normal: {
color: '#ecf500'
}
}
},
{
name: 'Top 5',
type: 'effectScatter',
coordinateSystem: 'geo',
symbolSize: function (val) {
return val[2] / 10;
},
showEffectOn: 'render',
rippleEffect: {
brushType: 'stroke'
},
hoverAnimation: true,
/* label: {
normal: {
formatter: '{b}',
position: 'right',
show: true,
color:'#333'
},
emphasis:{
color:'#333'
}
},*/
itemStyle: {
normal: {
color: '#f75749',
shadowBlur: 10,
shadowColor: '#333'
}
},
zlevel: 1
}
]
};
$(document).ready(function(){
  map_1.resize();
})
window.addEventListener("resize", function () {
  map_1.resize();
});

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
!function(t){"use strict";t.fn.countUp=function(e){var a=t.extend({time:2e3,delay:10},e);return this.each(function(){var e=t(this),n=a,u=function(){e.data("counterupTo")||e.data("counterupTo",e.text());var t=parseInt(e.data("counter-time"))>0?parseInt(e.data("counter-time")):n.time,a=parseInt(e.data("counter-delay"))>0?parseInt(e.data("counter-delay")):n.delay,u=t/a,r=e.data("counterupTo"),o=[r],c=/[0-9]+,[0-9]+/.test(r);r=r.replace(/,/g,"");for(var d=(/^[0-9]+$/.test(r),/^[0-9]+\.[0-9]+$/.test(r)),s=d?(r.split(".")[1]||[]).length:0,i=u;i>=1;i--){var p=parseInt(Math.round(r/u*i));if(d&&(p=parseFloat(r/u*i).toFixed(s)),c)for(;/(\d+)(\d{3})/.test(p.toString());)p=p.toString().replace(/(\d+)(\d{3})/,"$1,$2");o.unshift(p)}e.data("counterup-nums",o),e.text("0");var f=function(){e.text(e.data("counterup-nums").shift()),e.data("counterup-nums").length?setTimeout(e.data("counterup-func"),a):(delete e.data("counterup-nums"),e.data("counterup-nums",null),e.data("counterup-func",null))};e.data("counterup-func",f),setTimeout(e.data("counterup-func"),a)};e.waypoint(u,{offset:"100%",triggerOnce:!0})})}}(jQuery);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,26 @@
 $(window).load(function(){
$(".loading").fadeOut()
})
/****/
$(document).ready(function(){
var whei=$(window).width()
$("html").css({fontSize:whei/20})
$(window).resize(function(){
var whei=$(window).width()
$("html").css({fontSize:whei/20})
});
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,719 @@
<!doctype html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="renderer" content="webkit">
<title>Ding-Flow可视化大屏</title>
<script th:src="@{/js/jquery.min.js}"></script>
<script th:src="@{/js/bootstrap.min.js}"></script>
<link th:href="@{/css/comon0.css}" rel="stylesheet"/>
</head>
<script type="text/javascript">
$(document).ready(function(){
var html=$(".wrap ul").html()
$(".wrap ul").append(html)
var ls=$(".wrap li").length/2+1
i=0
ref = setInterval(function(){
i++
if(i==ls){
i=1
$(".wrap ul").css({marginTop:0})
$(".wrap ul").animate({marginTop:-'.52'*i+'rem'},1000)
}
$(".wrap ul").animate({marginTop:-'.52'*i+'rem'},1000)
},2400);
var html2=$(".adduser ul").html()
$(".adduser ul").append(html2)
var ls2=$(".adduser li").length/2+1
a=0
ref = setInterval(function(){
a++
if(a==ls2){
a=1
$(".adduser ul").css({marginTop:0})
$(".adduser ul").animate({marginTop:-'.5'*a+'rem'},800)
}
$(".adduser ul").animate({marginTop:-'.5'*a+'rem'},800)
},4300);
})
</script>
<body>
<div class="loading">
<div class="loadbox"> <img th:src="@{/images/loading.gif}"> 页面加载中... </div>
</div>
<div class="head">
<h1>Ding-Flow可视化大屏</h1>
<div class="weather"><img th:src="@{/images/weather.png}"><span>多云转小雨</span><span th:text="${date}"></span></div>
</div>
<div class="mainbox">
<ul class="clearfix">
<li>
<div class="boxall" style="height: 2.7rem">
<div class="alltitle">流程概况</div>
<div class="sycm">
<ul class="clearfix">
<li><h2 th:text="${flowGeneralSituation.todoTaskNum}"></h2><span>我的待办数</span></li>
<li><h2 th:text="${flowGeneralSituation.doneTaskNum}"></h2><span>我的已办数</span></li>
<li><h2 th:text="${flowGeneralSituation.myStartProcessInstanceNum}"></h2><span>我发起的审批数</span></li>
</ul>
<div style="border-bottom: 1px solid rgba(255,255,255,.1)"></div>
<ul class="clearfix">
<li><h2 style="color: red" th:text="${flowGeneralSituation.threeTodoTaskNum}"></h2><span>超时任务数(3天)</span></li>
<li><h2 th:text="${flowGeneralSituation.processInstanceNum}"></h2><span>总流程数</span></li>
<li><h2>19</h2><span>流程消息数</span></li>
</ul>
</div>
<div class="boxfoot"></div>
</div>
<div class="boxall" style="height: 2.65rem">
<div class="alltitle">钉钉数据同步概况</div>
<div class="sy" id="echarts1"></div>
<div class="sy" id="echarts9"></div>
<div class="sy" id="echarts2"></div>
<div class="sy" id="echarts3"></div>
<div class="boxfoot"></div>
</div>
<div class="boxall" style="height: 2.95rem">
<div class="alltitle">账单消费概况</div>
<div id="echarts4" style="height: 2.2rem; width: 100%;"></div>
<div class="boxfoot"></div>
</div>
</li>
<li>
<div class="bar">
<div class="barbox">
<ul class="clearfix">
<li class="pulll_left counter" style="color: red">[[${financeBillSituation.expenditureTotal}]]</li>
<li class="pulll_left counter">[[${financeBillSituation.inComeTotal}]]</li>
</ul>
</div>
<div class="barbox2">
<ul class="clearfix">
<li class="pulll_left">支出总金额(元)</li>
<li class="pulll_left">收入总金额(元)</li>
</ul>
</div>
</div>
<div class="map">
<div class="map1"><img th:src="@{/images/lbx.png}" ></div>
<div class="map2"><img th:src="@{/images/jt.png}" ></div>
<div class="map3"><img th:src="@{/images/map.png}" ></div>
<div class="map4" id="map_1"></div>
</div>
</li>
<li>
<div class="boxall" style="height:5.2rem">
<div class="alltitle">钉钉信息</div>
<div class="tabs">
<ul class="clearfix">
<li><a class="active" href="#">7天</a></li>
<li><a href="#">15天</a></li>
<li><a href="#">30天</a></li>
</ul>
</div>
<div class="clearfix">
<div class="sy" id="echarts6"></div>
<div class="sy" id="echarts7"></div>
<div class="sy" id="echarts8"></div>
<div class="sy" id="echarts10"></div>
</div>
<div class="addnew">
<div class="tit02"><span>今日新增流程</span></div>
<div class="adduser">
<ul class="clearfix">
<li class="clearfix" th:each="historicProcessInstance,historicProcessInstanceStat : ${historicProcessInstanceList}">
<span class="pulll_left" th:text="${historicProcessInstanceStat.count}"></span>
<span class="pulll_left">.</span>
<span class="pulll_left" th:text="${historicProcessInstance.processDefinitionName}"></span>
<span class="pulll_right" th:text="${#dates.format(historicProcessInstance.startTime, 'yyyy-MM-dd HH:mm:ss')}"> </span>
</li>
</ul>
</div>
</div>
<div class="boxfoot"></div>
</div>
<div class="boxall" style="height: 3.4rem">
<div class="alltitle">实时异常操作记录</div>
<div class="wrap">
<ul class="clearfix">
<li class="clearfix" th:each="syslog,syslogStat : ${sysOperLogs}">
<span class="pulll_left" th:text="${syslogStat.count}"></span>
<span class="pulll_left" th:text="${syslog.title}"></span>
<span class="pulll_right" th:text="${#dates.format(syslog.operTime, 'yyyy-MM-dd HH:mm:ss')}"> </span>
</li>
</ul>
</div>
<div class="boxfoot"></div>
</div>
</li>
</ul>
</div>
<div class="back"></div>
<script th:src="@{/js/js.js}"></script>
<script th:src="@{/js/echarts.min.js}"></script>
<script th:src="@{/js/china.js}"></script>
<script th:src="@{/js/area_echarts.js}"></script>
<script th:src="@{/js/echarts.min.js}"></script>
<script type="text/javascript">
$(document).ready(function () {
myChart1.resize();
myChart2.resize();
myChart3.resize();
myChart6.resize();
myChart7.resize();
myChart8.resize();
myChart9.resize();
myChart10.resize();
});
window.addEventListener("resize", function () {
myChart1.resize();
myChart2.resize();
myChart3.resize();
myChart6.resize();
myChart7.resize();
myChart8.resize();
myChart9.resize();
myChart10.resize();
});
</script>
<script type="text/javascript">
var v0 = 1000;
var v1 = 353;
var v2 = 178;
var v3 = 68;
var myChart6 = echarts.init(document.getElementById('echarts6'));
option6 = {
series: [{
type: 'pie',
radius: ['70%', '80%'],
color: '#0088cc',
label: {
normal: {
position: 'center'
}
},
data: [{
value: v1,
name: '新增会员',
label: {
normal: {
formatter: v1 + '',
textStyle: {
fontSize: 20,
color: '#fff',
}
}
}
},
{
value: v0,
name: '老会员',
label: {
normal: {
formatter: function (params) {
return '占比60%'
},
textStyle: {
color: '#aaa',
fontSize: 12
}
}
},
itemStyle: {
normal: {
color: 'rgba(255,255,255,.2)'
},
emphasis: {
color: '#fff'
}
},
}]
}]
};
var myChart7 = echarts.init(document.getElementById('echarts7'));
option7 = {
series: [{
type: 'pie',
radius: ['70%', '80%'],
color: '#fccb00',
label: {
normal: {
position: 'center'
}
},
data: [{
value: v2,
name: '新增领卡会员',
label: {
normal: {
formatter: v2 + '',
textStyle: {
fontSize: 20,
color: '#fff',
}
}
}
},
{
value: v0,
name: '总领卡会员',
label: {
normal: {
formatter: function (params) {
return '占比40%'
},
textStyle: {
color: '#aaa',
fontSize: 12
}
}
},
itemStyle: {
normal: {
color: 'rgba(255,255,255,.2)'
},
emphasis: {
color: '#fff'
}
},
}]
}]
};
var myChart8 = echarts.init(document.getElementById('echarts8'));
option8 = {
series: [{
type: 'pie',
radius: ['70%', '80%'],
color: '#62b62f',
label: {
normal: {
position: 'center'
}
},
data: [{
value: v3,
name: '女消费',
label: {
normal: {
formatter: v3 + '',
textStyle: {
fontSize: 20,
color: '#fff',
}
}
}
}, {
value: v0,
name: '男消费',
label: {
normal: {
formatter: function (params) {
return '占比34%'
},
textStyle: {
color: '#aaa',
fontSize: 12
}
}
},
itemStyle: {
normal: {
color: 'rgba(255,255,255,.2)'
},
emphasis: {
color: '#fff'
}
},
}]
}]
};
var myChart10 = echarts.init(document.getElementById('echarts10'));
option10 = {
series: [{
type: 'pie',
radius: ['70%', '80%'],
color: '#62b62f',
label: {
normal: {
position: 'center'
}
},
data: [{
value: v3,
name: '女消费',
label: {
normal: {
formatter: v3 + '',
textStyle: {
fontSize: 20,
color: '#fff',
}
}
}
}, {
value: v0,
name: '男消费',
label: {
normal: {
formatter: function (params) {
return '占比66%'
},
textStyle: {
color: '#aaa',
fontSize: 12
}
}
},
itemStyle: {
normal: {
color: 'rgba(255,255,255,.2)'
},
emphasis: {
color: '#fff'
}
},
}]
}]
};
setTimeout(function () {
myChart6.setOption(option6);
myChart7.setOption(option7);
myChart8.setOption(option8);
myChart10.setOption(option10);
}, 500);
</script>
<!--钉钉数据同步情况-->
<script type="text/javascript">
var myChart1 = echarts.init(document.getElementById('echarts1'));
var v1 = [[${DingTalkSituation.failureNums}]];
var v2 = [[${DingTalkSituation.successNums}]];
var v3 = [[${DingTalkSituation.successRatio}]];
var v4 = [[${DingTalkSituation.failureRatio}]];
option1 = {
series: [{
type: 'pie',
radius: ['70%', '80%'],
color: '#0088cc',
label: {
normal: {
position: 'center'
}
},
data: [{
value: v2,
name: '同步成功数',
label: {
normal: {
formatter: v2 + '',
textStyle: {
fontSize: 20,
color: '#0088cc',
}
}
}
},
]
}]
};
var myChart9 = echarts.init(document.getElementById('echarts9'));
option9 = {
//同步失败数
series: [{
type: 'pie',
radius: ['70%', '80%'],
color: '#0088cc',
label: {
normal: {
position: 'center'
}
},
data: [{
value: v1,
name: '同步失败数',
label: {
normal: {
formatter: v1 + '',
textStyle: {
fontSize: 20,
color: '#FF0000',
}
}
}
},
]
}]
};
var myChart3 = echarts.init(document.getElementById('echarts3'));
option2 = {
series: [{
type: 'pie',
radius: ['70%', '80%'],
color: '#fccb00',
label: {
normal: {
position: 'center'
}
},
data: [{
value: v2,
name: '成功数',
label: {
normal: {
formatter: v2 + '',
textStyle: {
fontSize: 20,
color: '#fff ',
}
}
}
}, {
value: v1,
name: '成功占比',
label: {
normal: {
formatter: function (params) {
return v3+ '%'
},
textStyle: {
color: '#fff ',
fontSize: 12
}
}
},
itemStyle: {
normal: {
color: 'rgba(255,255,255,.2)'
},
emphasis: {
color: '#fff'
}
},
}]
}]
};
var myChart2 = echarts.init(document.getElementById('echarts2'));
option3 = {
series: [{
type: 'pie',
radius: ['70%', '80%'],
color: '#62b62f',
label: {
normal: {
position: 'center'
}
},
data: [{
value: v1,
name: '失败数',
label: {
normal: {
formatter: v1+ '',
textStyle: {
fontSize: 20,
color: '#FF0000',
}
}
}
}, {
value: v1,
name: '失败占比',
label: {
normal: {
formatter: function (params) {
return v4 + '%'
},
textStyle: {
color: '#FF0000',
fontSize: 12
}
}
},
itemStyle: {
normal: {
color: 'rgba(255,255,255,.2)'
},
emphasis: {
color: '#fff'
}
},
}]
}]
};
setTimeout(function () {
myChart1.setOption(option1);
myChart9.setOption(option9)
myChart2.setOption(option2);
myChart3.setOption(option3);
}, 500);
</script>
<script type="text/javascript">
var myChart = echarts.init(document.getElementById('echarts4'));
var consumptionTotal = [[${financeBillSituation.consumptionTotal}]];
var plantCap = [
{
name: '即时到账',
value: [[${financeBillSituation.immediatelyAccountTotal}]]
},{
name: '商户消费',
value: consumptionTotal
}, {
name: '转账',
value: [[${financeBillSituation.transferAccountsTotal}]]
}, {
name: '微信红包',
value: [[${financeBillSituation.wxRedPacketsTotal}]]
},
{
name: '支付宝担保交易',
value: [[${financeBillSituation.alipaySecuredTransactionTotal}]]
},
{
name:'扫二维码付款',
value: [[${financeBillSituation.scannerQrCodePaymentTotal}]]
},
{
name: '二维码收款',
value: [[${financeBillSituation.qrCodePaymentTotal}]]
}];
var datalist = [
{
offset: [0, 70],
symbolSize: 60,
color: 'rgba(73,188,247,.14)',
},
{
offset: [56, 48],
symbolSize: 110,
color: 'rgba(73,188,247,.14)',
}, {
offset: [30, 70],
symbolSize: 70,
color: 'rgba(73,188,247,.14)'
}, {
offset: [0, 23],
symbolSize: 60,
color: 'rgba(73,188,247,.14)'
}, {
offset: [93, 30],
symbolSize: 60,
color: 'rgba(73,188,247,.14)'
},
{
offset: [85, 75],
symbolSize: 60,
color: 'rgba(73,188,247,.14)'
},
{
offset: [26, 19],
symbolSize: 60,
color: 'rgba(73,188,247,.14)'
}];
var datas = [];
for (var i = 0; i < plantCap.length; i++) {
var item = plantCap[i];
var itemToStyle = datalist[i];
datas.push({
name: item.value + '\n' + item.name,
value: itemToStyle.offset,
symbolSize: itemToStyle.symbolSize,
label: {
normal: {
textStyle: {
fontSize: 14
}
}
},
itemStyle: {
normal: {
color: itemToStyle.color,
opacity: itemToStyle.opacity
}
},
})
}
option = {
grid: {
show: false,
top: 10,
bottom: 10
},
xAxis: [{
gridIndex: 0,
type: 'value',
show: false,
min: 0,
max: 100,
nameLocation: 'middle',
nameGap: 5
}],
yAxis: [{
gridIndex: 0,
min: 0,
show: false,
max: 100,
nameLocation: 'middle',
nameGap: 30
}],
series: [{
type: 'scatter',
symbol: 'circle',
symbolSize: 120,
label: {
normal: {
show: true,
formatter: '{b}',
color: '#FFF',
textStyle: {
fontSize: '30'
}
},
},
itemStyle: {
normal: {
color: '#F30'
}
},
data: datas
}]
};
myChart.setOption(option);
$(document).ready(function () {
myChart.resize();
})
window.addEventListener("resize", function () {
myChart.resize();
});
</script>
<script th:src="@{/js/jquery.waypoints.min.js}"></script>
<script th:src="@{/js/jquery.countup.min.js}"></script>
<script type="text/javascript">
$('.counter').countUp();
</script>
</body>
</html>

View File

@ -13,13 +13,13 @@
<div class="row">
<ul>
<li>
<label>name</label>
<label>名称</label>
<input type="text" name="deploymentNameLike"/>
</li>
<li>
<label>流程分类:</label>
<select name="category" th:with="type=${@dict.getType('flow_category')}">
<label>分类:</label>
<select name="deploymentCategory" th:with="type=${@dict.getType('flow_category')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
@ -77,23 +77,26 @@
field: 'name',
title: '流程名称'
},
{
field: 'category',
title: '分类',
formatter: function(value, row, index) {
return $.table.selectDictLabel(flowCategoryDatas, value);
}
},
{
field: 'category',
title: '分类',
formatter: function(value, row, index) {
return $.table.selectDictLabel(flowCategoryDatas, value);
}
},
{
field: 'key',
title: '发布key'
},
{
field: 'engineVersion',
title: '版本号'
},
{
field: 'deploymentTime',
title: '流程发布时间'
},
{
field: 'key',
title: '发布key'
},
{
title: '操作',
align: 'center',

View File

@ -13,7 +13,7 @@
<div class="row">
<ul>
<li>
<label>name</label>
<label>名称</label>
<input type="text" name="name"/>
</li>
<li>
@ -91,10 +91,10 @@
title: '流程发布时间'
},
/* {
field: 'key',
title: '发布key'
},*/
{
field: 'engineVersion',
title: '版本号'
},
{
title: '操作',

View File

@ -92,7 +92,7 @@
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="getProcessDiagram(\'' + row.processInstanceId + '\')"><i class="fa fa-eye"></i>流程图</a>');
actions.push('<a class="btn btn-info btn-xs ' + removeFlag + '" href="' + row.fromDetailUrl+ '" target="_blank" "><i class="fa fa-eye"></i>详情</a>');
return actions.join('');
}
}]

View File

@ -0,0 +1,120 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('我发起的流程')" />
<th:block th:include="include :: select2-css" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="formId">
<div class="select-list">
<div class="row">
<ul>
<li>
<label>流程名称:</label>
<input type="text" name="processDefinitionName"/>
</li>
<li>
<label>单号:</label>
<input type="text" name="businessKey"/>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</div>
</form>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: select2-js" />
<script th:inline="javascript">
var prefixFlow = ctx + "flow";
var todoList = [[${@permission.hasPermi('flow:get:todoList')}]];
$(function() {
var options = {
id: "bootstrap-table",
formId:"formId",
url: prefixFlow + "/findTasksByUserId",
striped: true,
showToggle: false,
loadingFontSize:20,
showRefresh: false, // 是否显示刷新按钮
showColumns: false, // 是否显示隐藏某列下拉框
showToggle: false,
showSearch: false, // 是否显示检索信息
modalName: "我的待办",
columns: [{
title: '序号',
formatter: function (value, row, index) {
return index+1;
}
},
{
field: 'taskId',
title: 'taskId',
visible: false
},
{
field: 'processDefinitionName',
title: '流程名称'
},
{
field: 'businessKey',
title: '单号'
},
{
field: 'taskName',
title: '审批节点'
},
{
field: 'startUserName',
title: '流程发起人'
},
{
field: 'startTime',
title: '流程发起时间'
},
{
field: 'createDate',
title: '任务创建时间'
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + todoList + '" href="javascript:void(0)" onclick="cancelTask(\''+row.taskId+'\')"><i class="fa fa-edit"></i>处理</a> ');
return actions.join('');
}
}]
};
$.table.init(options);
});
function cancelTask(taskId) {
console.log(JSON.stringify(taskId));
var preViewUrl=prefixFlow+'/toFinishTask?taskId='+taskId;
$.modal.openTab("审批", preViewUrl);
}
</script>
</body>
</html>

View File

@ -126,8 +126,7 @@
<th:block th:include="include :: footer" />
<th:block th:include="include :: select2-js" />
<script th:inline="javascript">
var editFlag = [[${@permission.hasPermi('system:flow:edit')}]];
var prefix = ctx + "modeler";
var todoList = [[${@permission.hasPermi('flow:get:todoList')}]];
var prefixFlow = ctx + "flow";
$(function() {
var options = {
@ -186,8 +185,7 @@
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="cancelTask(\''+row.taskId+'\')"><i class="fa fa-edit"></i>处理</a> ');
/*actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="getProcessDiagram(\'' + row.processInstanceId + '\')"><i class="fa fa-eye"></i>流程图</a>');*/
actions.push('<a class="btn btn-success btn-xs ' + todoList + '" href="javascript:void(0)" onclick="cancelTask(\''+row.taskId+'\')"><i class="fa fa-edit"></i>处理</a> ');
return actions.join('');
}
}]
@ -200,11 +198,6 @@
var preViewUrl=prefixFlow+'/toFinishTask?taskId='+taskId;
$.modal.openTab("审批", preViewUrl);
}
function getProcessDiagram(processInstanceId) {
var preViewUrl=prefix+'/getProcessDiagram?processInstanceId='+processInstanceId;
$.modal.open("流程图", preViewUrl,500,500);
}
</script>
</body>
</html>

View File

@ -0,0 +1,59 @@
package com.snow.common.enums;
/**
* @author qimingjin
* @Title: 交易类型枚举
* @Description:
* @date 2021/2/26 11:25
*/
public enum FinanceTradeType {
IMMEDIATELY_ACCOUNT(1, "即时到账交易"),
ALIPAY_SECURED_TRANSACTION(2, "支付宝担保交易"),
CONSUMPTION(3, "商户消费"),
TRANSFER_ACCOUNTS(4, "转账"),
WX_RED_PACKETS(5, "微信红包"),
WX_GROUP_RED_PACKETS(6, "微信红包(群红包)"),
WX_SINGLE_RED_PACKETS(7, "微信红包(单发)"),
WX_RED_PACKETS_REFUND(8, "微信红包-退款"),
SCANNER_QR_CODE_PAYMENT(9, "扫二维码付款"),
QR_CODE_PAYMENT(10, "二维码收款");
private final Integer code;
private final String info;
FinanceTradeType(Integer code, String info)
{
this.code = code;
this.info = info;
}
public Integer getCode()
{
return code;
}
public String getInfo()
{
return info;
}
public static Integer getFinanceTradeTypeCode(String info){
FinanceTradeType[] values = FinanceTradeType.values();
for (FinanceTradeType type : values) {
if(type.getInfo().equals(info)){
return type.code;
}
}
return null;
}
public static String getFinanceTradeTypeInfo(Integer code){
FinanceTradeType[] values = FinanceTradeType.values();
for (FinanceTradeType type : values) {
if(type.getCode()==code){
return type.info;
}
}
return null;
}
}

View File

@ -38,7 +38,6 @@
<artifactId>flowable-ui-modeler-rest</artifactId>
<version>6.4.1</version>
</dependency>
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-json-converter</artifactId>

View File

@ -37,58 +37,4 @@ public class FlowIdGenerator implements IdGenerator {
long id = snowflake.nextId();
return String.valueOf(id);
}
//很多时候我们需要简单模拟N个线程调用某个业务测试其并发状况于是Hutool提供了一个简单的并发测试类ConcurrencyTester
public static void main(String[] args) {
RSA rsa = new RSA();
//获得私钥
PrivateKey privateKey = rsa.getPrivateKey();
//获得公钥
PublicKey publicKey = rsa.getPublicKey();
Console.log("privateKey{}",privateKey.getEncoded());
Console.log("publicKey{}",publicKey.getEncoded());
/* Word07Writer writer = new Word07Writer();
// 添加段落标题
writer.addText(new Font("方正小标宋简体", Font.PLAIN, 22), "我是第一部分", "我是第二部分");
// 添加段落正文
writer.addText(new Font("宋体", Font.PLAIN, 22), "我是正文第一部分", "我是正文第二部分");
// 写出到文件
writer.flush(FileUtil.file("d:/wordWrite.docx"));
// 关闭
writer.close();
*/
/* ThreadPoolExecutor executor = ExecutorBuilder.create().
setCorePoolSize(5).
setMaxPoolSize(10).
setWorkQueue(new LinkedBlockingQueue<>(100))
.build();
executor.execute(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10000; i++) {
Snowflake snowflake = IdUtil.getSnowflake(2, 1);
long id = snowflake.nextId();
ThreadUtil.sleep(1000);
Console.log("{} test finished, delay: {}", Thread.currentThread().getName(), id);
}
}
});
executor.shutdown();*/
/* ConcurrencyTester tester = ThreadUtil.concurrencyTest(100, () -> {
// 测试的逻辑内容
Snowflake snowflake = IdUtil.getSnowflake(2, 1);
long id = snowflake.nextId();
// ThreadUtil.sleep(1);
Console.log("{} test finished, delay: {}", Thread.currentThread().getName(), id);
});
// 获取总的执行时间单位毫秒
Console.log(tester.getInterval());*/
}
}

View File

@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.event.support.TypedEventListener;
import org.flowable.common.engine.api.delegate.event.FlowableEventListener;
import org.flowable.common.engine.impl.EngineDeployer;
import org.flowable.common.engine.impl.history.HistoryLevel;
import org.flowable.engine.impl.rules.RulesDeployer;
import org.flowable.spring.SpringProcessEngineConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
@ -38,8 +39,10 @@ public class FlowableConfig {
configuration.setTransactionManager(transactionManager);
configuration.setDatabaseSchemaUpdate("false");
configuration.setAsyncExecutorActivate(true);
//开启历史数据异步保存
configuration.setAsyncHistoryEnabled(true);
//设置历史数据保存级别
configuration.setHistoryLevel(HistoryLevel.FULL);
//开启历史数据异步保存(这个地方是坑开启后历史数据保存不了暂时还不知道怎么回事先注释了)
//configuration.setAsyncHistoryEnabled(true);
configuration.setProcessDiagramGenerator(customProcessDiagramGenerator);
//修改id生成器
configuration.setIdGenerator(new FlowIdGenerator());

View File

@ -13,12 +13,24 @@ import java.io.Serializable;
@Data
public class DeploymentQueryDTO extends FlowBaseDTO implements Serializable {
/**
* 发布key 模糊
*/
private String deploymentKeyLike;
/**
* 发布id
*/
private String deploymentId;
/**
* 发布名称 模糊
*/
private String deploymentNameLike;
/**
* 流程定义key 模糊
*/
private String processDefinitionKeyLike;
/**

View File

@ -1,15 +1,10 @@
package com.snow.flowable.domain;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.flowable.common.engine.api.repository.EngineResource;
import org.flowable.engine.repository.ProcessDefinition;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @program: snow
@ -50,6 +45,17 @@ public class DeploymentVO implements Serializable {
/**
* 版本
*/
private String engineVersion;
private int engineVersion;
/**
* xml
*/
private String resourceName;
/**
* 图片
*/
private String dgrmResourceName;
}

View File

@ -0,0 +1,50 @@
package com.snow.flowable.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @program: snow
* @description 流程概况
* @author: 没用的阿吉
* @create: 2021-02-23 20:10
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class FlowGeneralSituationVO implements Serializable {
private static final long serialVersionUID = 5709897875619881275L;
/**
* 待办数
*/
private long todoTaskNum;
/**
* 已办数
*/
private long doneTaskNum;
/**
* 我发起的流程数
*/
private long myStartProcessInstanceNum;
/**
* 三天未办数
*/
private long threeTodoTaskNum;
/**
* 流程数
*/
private long processInstanceNum;
}

View File

@ -1,13 +1,9 @@
package com.snow.flowable.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.snow.common.utils.StringUtils;
import com.snow.common.utils.bean.BeanUtils;
import com.snow.common.utils.spring.SpringUtils;
import com.snow.system.service.impl.SysConfigServiceImpl;
import com.snow.system.service.impl.SysUserServiceImpl;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -18,7 +14,6 @@ import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**

View File

@ -64,7 +64,7 @@ public class SendMessageEventLister extends AbstractEventListener {
protected void taskCreated(FlowableEngineEntityEvent event) {
//任务创建可发送短信邮件通知接收人(代办人)
log.info("ManagerTaskEventListener----taskCreated任务创建监听{}",JSON.toJSONString(event));
sendDingTalkMessage(event);
// sendDingTalkMessage(event);
//todo 邮件通知
}

View File

@ -136,6 +136,13 @@ public interface FlowableService {
*/
List<TaskVO> getDynamicFlowNodeInfo(String processInstanceId);
/**
* 获取历史流程
* @param processInstanceDTO
* @return
*/
List<ProcessInstanceVO> getHistoricProcessInstanceList(ProcessInstanceDTO processInstanceDTO);
/**
* 查询历史流程实例(分页)
* 可查询我发起的流程
@ -156,4 +163,12 @@ public interface FlowableService {
* 获取流程图像已执行节点和流程线高亮显示
*/
void getFlowableProcessImage(String processInstanceId, HttpServletResponse response);
/**
* 获取流程概况流程大屏显示
*/
FlowGeneralSituationVO getFlowGeneralSituation(String userId);
}

View File

@ -1,10 +1,7 @@
package com.snow.flowable.service;
import com.snow.common.core.page.PageModel;
import com.snow.flowable.domain.CompleteTaskDTO;
import com.snow.flowable.domain.FinishTaskDTO;
import com.snow.flowable.domain.TaskBaseDTO;
import com.snow.flowable.domain.TaskVO;
import com.snow.flowable.domain.*;
import com.snow.system.domain.SysUser;
import org.flowable.task.api.Task;
@ -75,8 +72,12 @@ public interface FlowableTaskService {
*/
void delegateTask(String taskId,String curUserId,String targetUserId);
/**
* 挂起或激活流程
* @param instanceId
* @param suspendState
*/
void suspendOrActiveApply(String instanceId, String suspendState);
}

View File

@ -136,7 +136,6 @@ public class FlowablePublishServiceImpl implements FlowablePublishService {
@Override
public Deployment createBytesDeploymentByModelId(String id) {
Model model = modelService.getModel(id);
// BpmnModel bpmnModel = modelService.getBpmnModel(model);
if(StringUtils.isNull(model)){
return null;
}
@ -159,21 +158,21 @@ public class FlowablePublishServiceImpl implements FlowablePublishService {
return null;
}
try {
if(deploymentType==ActDeModel.MODEL_TYPE_DECISION_TABLE){
JsonNode editorJsonNode = objectMapper.readTree(model.getModelEditorJson());
DmnJsonConverter dmnJsonConverter=new DmnJsonConverter();
DmnDefinition dmnDefinition = dmnJsonConverter.convertToDmn(editorJsonNode, model.getId(), model.getVersion(), null);
DmnDeployment deploy = dmnRepositoryService.createDeployment()
if(deploymentType==ActDeModel.MODEL_TYPE_DECISION_TABLE){
JsonNode editorJsonNode = objectMapper.readTree(model.getModelEditorJson());
DmnJsonConverter dmnJsonConverter=new DmnJsonConverter();
DmnDefinition dmnDefinition = dmnJsonConverter.convertToDmn(editorJsonNode, model.getId(), model.getVersion(), null);
DmnDeployment deploy = dmnRepositoryService.createDeployment()
.name(model.getName())
.addDmnModel(model.getName()+".dmn",dmnDefinition)
.category("system_dmn")
.deploy();
return deploy.getId();
}else if(deploymentType==ActDeModel.MODEL_TYPE_BPMN){
Deployment deployment = createBytesDeploymentByModelId(id);
return deployment.getId();
}
return null;
return deploy.getId();
}else if(deploymentType==ActDeModel.MODEL_TYPE_BPMN){
Deployment deployment = createBytesDeploymentByModelId(id);
return deployment.getId();
}
return null;
} catch (IOException e) {
log.error("deploymentByModelId is fail",e.getMessage());
throw new RuntimeException("发布流程失败");

View File

@ -15,6 +15,7 @@ import com.snow.common.core.text.Convert;
import com.snow.common.enums.WorkRecordStatus;
import com.snow.common.exception.BusinessException;
import com.snow.flowable.common.constants.FlowConstants;
import com.snow.flowable.common.enums.FlowDefEnum;
import com.snow.flowable.common.enums.FlowStatusEnum;
import com.snow.flowable.config.ICustomProcessDiagramGenerator;
import com.snow.flowable.domain.*;
@ -205,7 +206,7 @@ public class FlowableServiceImpl implements FlowableService {
DeploymentQuery deploymentQuery = repositoryService.createDeploymentQuery();
if(!StringUtils.isEmpty(deploymentQueryDTO.getDeploymentNameLike())){
deploymentQuery.deploymentNameLike(deploymentQueryDTO.getDeploymentNameLike());
deploymentQuery.deploymentNameLike("%"+deploymentQueryDTO.getDeploymentNameLike()+"%");
}
if(!StringUtils.isEmpty(deploymentQueryDTO.getDeploymentCategory())){
deploymentQuery.deploymentCategory(deploymentQueryDTO.getDeploymentCategory());
@ -214,18 +215,26 @@ public class FlowableServiceImpl implements FlowableService {
deploymentQuery.deploymentId(deploymentQueryDTO.getDeploymentId());
}
if(!StringUtils.isEmpty(deploymentQueryDTO.getDeploymentKeyLike())){
deploymentQuery.deploymentKeyLike(deploymentQueryDTO.getDeploymentKeyLike());
deploymentQuery.deploymentKeyLike("%"+deploymentQueryDTO.getDeploymentKeyLike()+"%");
}
if(!StringUtils.isEmpty(deploymentQueryDTO.getProcessDefinitionKeyLike())){
deploymentQuery.processDefinitionKeyLike(deploymentQueryDTO.getProcessDefinitionKeyLike());
deploymentQuery.processDefinitionKeyLike("%"+deploymentQueryDTO.getProcessDefinitionKeyLike()+"%");
}
long count = deploymentQuery.orderByDeploymenTime().desc().
count();
List<Deployment> deployments = deploymentQuery.orderByDeploymenTime().desc().
listPage(deploymentQueryDTO.getPageNum(), deploymentQueryDTO.getPageSize());
List<DeploymentVO> deploymentVoList = deployments.stream().map(t -> {
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(t.getId()).singleResult();
DeploymentVO deploymentVO = new DeploymentVO();
BeanUtils.copyProperties(t, deploymentVO);
deploymentVO.setEngineVersion(processDefinition.getVersion());
deploymentVO.setResourceName(processDefinition.getResourceName());
deploymentVO.setDgrmResourceName(processDefinition.getDiagramResourceName());
return deploymentVO;
}).collect(Collectors.toList());
@ -596,8 +605,42 @@ public class FlowableServiceImpl implements FlowableService {
return hisTaskVOList;
}
@Override
public List<ProcessInstanceVO> getHistoricProcessInstanceList(ProcessInstanceDTO processInstanceDTO) {
HistoricProcessInstanceQuery historicProcessInstanceQuery = buildHistoricProcessInstanceCondition(processInstanceDTO);
List<HistoricProcessInstance> list = historicProcessInstanceQuery.
orderByProcessInstanceStartTime().
desc().
list();
return ProcessInstanceVO.warpList(list);
}
@Override
public PageModel<ProcessInstanceVO> getHistoricProcessInstance(ProcessInstanceDTO processInstanceDTO) {
HistoricProcessInstanceQuery historicProcessInstanceQuery = buildHistoricProcessInstanceCondition(processInstanceDTO);
long count = historicProcessInstanceQuery.
orderByProcessInstanceStartTime().
desc().
count();
List<HistoricProcessInstance> historicProcessInstances = historicProcessInstanceQuery.
orderByProcessInstanceStartTime().
desc().
listPage(processInstanceDTO.getPageNum(), processInstanceDTO.getPageSize());
List<ProcessInstanceVO> processInstanceVOS = ProcessInstanceVO.warpList(historicProcessInstances);
setProcessInstanceVOs(processInstanceVOS);
PageModel<ProcessInstanceVO> pageModel = new PageModel<> ();
pageModel.setTotalCount((int)count);
pageModel.setPagedRecords(processInstanceVOS);
//List<ProcessInstanceVO> processInstanceVOS = com.snow.common.utils.bean.BeanUtils.transformList(pageInfo.getList(), ProcessInstanceVO.class);
return pageModel;
}
/**
* 构建查询条件
* @param processInstanceDTO
*/
public HistoricProcessInstanceQuery buildHistoricProcessInstanceCondition(ProcessInstanceDTO processInstanceDTO){
HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery();
if(!StringUtils.isEmpty(processInstanceDTO.getBusinessKey())){
historicProcessInstanceQuery.processInstanceBusinessKey(processInstanceDTO.getBusinessKey());
@ -624,23 +667,8 @@ public class FlowableServiceImpl implements FlowableService {
historicProcessInstanceQuery.processDefinitionName(processInstanceDTO.getProcessDefinitionName());
}
historicProcessInstanceQuery.includeProcessVariables();
long count = historicProcessInstanceQuery.
orderByProcessInstanceStartTime().
desc().
count();
List<HistoricProcessInstance> historicProcessInstances = historicProcessInstanceQuery.
orderByProcessInstanceStartTime().
desc().
listPage(processInstanceDTO.getPageNum(), processInstanceDTO.getPageSize());
List<ProcessInstanceVO> processInstanceVOS = ProcessInstanceVO.warpList(historicProcessInstances);
setProcessInstanceVOs(processInstanceVOS);
PageModel<ProcessInstanceVO> pageModel = new PageModel<> ();
pageModel.setTotalCount((int)count);
pageModel.setPagedRecords(processInstanceVOS);
//List<ProcessInstanceVO> processInstanceVOS = com.snow.common.utils.bean.BeanUtils.transformList(pageInfo.getList(), ProcessInstanceVO.class);
return pageModel;
return historicProcessInstanceQuery;
}
/**
* 赋值ProcessInstanceVOs
* @param processInstanceVOS
@ -966,6 +994,49 @@ public class FlowableServiceImpl implements FlowableService {
}
}
@Override
public FlowGeneralSituationVO getFlowGeneralSituation(String userId) {
//根据用户ID获取角色
Set<Long> sysRoles = flowableUserService.getFlowGroupByUserId(Long.parseLong(userId));
TaskQuery taskQuery = taskService.createTaskQuery()
.or()
.taskCandidateOrAssigned(userId);
//这个地方查询会去查询系统的用户组表希望的是查询自己的用户表
if(!CollectionUtils.isEmpty(sysRoles)) {
List<String> roleIds = sysRoles.stream().map(t ->
String.valueOf(t)
).collect(Collectors.toList());
taskQuery.taskCandidateGroupIn(roleIds).endOr();
}
List<Task> taskList = taskQuery.list();
//待办总数
FlowGeneralSituationVO.FlowGeneralSituationVOBuilder flowGeneralSituationVOBuilder = FlowGeneralSituationVO.builder().todoTaskNum(taskQuery.count());
//获取我发起的流程数
HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery().startedBy(userId);
flowGeneralSituationVOBuilder.myStartProcessInstanceNum(historicProcessInstanceQuery.count());
//我的已办任务数
HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery().taskAssignee(userId);
List<HistoricProcessInstance> list = historicProcessInstanceQuery.list();
flowGeneralSituationVOBuilder.doneTaskNum(historicTaskInstanceQuery.count());
//获取超过三天未处理的待办
long count = taskList.stream().filter(t ->
DateUtil.betweenDay(t.getCreateTime(), new Date(),false) > 3
).count();
flowGeneralSituationVOBuilder.threeTodoTaskNum(count);
//流程数
int length = FlowDefEnum.values().length;
return flowGeneralSituationVOBuilder.processInstanceNum(length).build();
}
/**
* 获取高亮的线
* @param bpmnModel

View File

@ -1,10 +1,12 @@
package com.snow.flowable.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.google.common.collect.Maps;
import com.snow.common.core.page.PageModel;
import com.snow.common.exception.BusinessException;
import com.snow.flowable.common.constants.FlowConstants;
import com.snow.flowable.common.enums.FlowDefEnum;
import com.snow.flowable.domain.*;
import com.snow.flowable.service.FlowableService;
import com.snow.flowable.service.FlowableTaskService;
@ -17,20 +19,20 @@ import org.flowable.engine.HistoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.history.HistoricProcessInstanceQuery;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.identitylink.api.IdentityLink;
import org.flowable.identitylink.api.history.HistoricIdentityLink;
import org.flowable.task.api.Task;
import org.flowable.task.api.TaskQuery;
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -69,7 +71,7 @@ public class FlowableTaskServiceImpl implements FlowableTaskService {
TaskQuery taskQuery = taskService.createTaskQuery()
.or()
.taskCandidateOrAssigned(userId);
//这个地方查询去查询系统的用户组表希望的是查询自己的用户表
//这个地方查询去查询系统的用户组表希望的是查询自己的用户表
if(!CollectionUtils.isEmpty(sysRoles)) {
List<String> roleIds = sysRoles.stream().map(t ->
String.valueOf(t)
@ -116,7 +118,7 @@ public class FlowableTaskServiceImpl implements FlowableTaskService {
taskVO.setParentTaskId(t.getParentTaskId());
taskVO.setAssignee(t.getAssignee());
taskVO.setOwner(t.getOwner());
HistoricProcessInstance historicProcessInstance = flowableService.getHistoricProcessInstanceById(t.getProcessInstanceId());
ProcessInstance historicProcessInstance = flowableService.getProcessInstanceById(t.getProcessInstanceId());
taskVO.setProcessDefinitionName(historicProcessInstance.getProcessDefinitionName());
String startUserId = historicProcessInstance.getStartUserId();
SysUser sysUser = sysUserService.selectUserById(Long.parseLong(startUserId));
@ -279,4 +281,6 @@ public class FlowableTaskServiceImpl implements FlowableTaskService {
public void suspendOrActiveApply(String instanceId, String suspendState) {
}
}

View File

@ -2,22 +2,17 @@ package com.snow.framework.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.snow.common.json.JSON;
import com.snow.common.enums.FinanceTradeType;
import com.snow.common.utils.DateUtils;
import com.snow.common.utils.bean.BeanUtils;
import com.snow.system.domain.FinanceAlipayFlow;
import com.snow.system.domain.FinanceAlipayFlowImport;
import com.snow.system.domain.SysUser;
import com.snow.system.mapper.FinanceAlipayFlowMapper;
import com.snow.system.service.IFinanceAlipayFlowService;
import com.snow.system.service.impl.FinanceAlipayFlowServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -92,6 +87,9 @@ public class FinanceAlipayFlowListener extends AnalysisEventListener<FinanceAlip
saveData();
}
/**
* 保存数据
*/
public void saveData(){
List<FinanceAlipayFlow> financeAlipayFlowList = list.stream().map(t -> {
@ -148,30 +146,9 @@ public class FinanceAlipayFlowListener extends AnalysisEventListener<FinanceAlip
String tradeType = t.getTradeType();
if (StringUtils.isEmpty(tradeType)) {
financeAlipayFlow.setTradeType(null);
} else if (tradeType.equals("即时到账交易")) {
financeAlipayFlow.setTradeType(1);
} else if (tradeType.equals("支付宝担保交易")) {
financeAlipayFlow.setTradeType(2);
}else if (tradeType.equals("商户消费")) {
financeAlipayFlow.setTradeType(3);
}
else if (tradeType.equals("转账")) {
financeAlipayFlow.setTradeType(4);
}
else if (tradeType.equals("微信红包")) {
financeAlipayFlow.setTradeType(5);
}
else if (tradeType.equals("微信红包(群红包)")) {
financeAlipayFlow.setTradeType(6);
}
else if (tradeType.equals("微信红包(单发)")) {
financeAlipayFlow.setTradeType(7);
}else if(tradeType.equals("微信红包-退款")){
financeAlipayFlow.setTradeType(8);
}else if(tradeType.equals("扫二维码付款")){
financeAlipayFlow.setTradeType(9);
}else if(tradeType.equals("二维码收款")){
financeAlipayFlow.setTradeType(10);
}else {
Integer financeTradeTypeCode = FinanceTradeType.getFinanceTradeTypeCode(tradeType);
financeAlipayFlow.setTradeType(financeTradeTypeCode);
}
financeAlipayFlow.setCreateBy(sysUser.getUserName());
financeAlipayFlow.setBelongUserId(sysUser.getUserId());

View File

@ -1,6 +1,7 @@
package com.snow.system.domain;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.snow.common.core.domain.BaseEntity;
import lombok.Data;
@ -31,14 +32,17 @@ public class FinanceAlipayFlow extends BaseEntity
/** 交易创建时间 */
@ExcelProperty(index = 3)
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date tradeCreateTime;
/** 交易支付时间 */
@ExcelProperty(index = 4)
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date payTime;
/** 最近修改时间 */
@ExcelProperty(index = 5)
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date lastModifyTime;
/** 交易来源地 */

View File

@ -0,0 +1,57 @@
package com.snow.system.domain;
import com.snow.common.enums.FinanceTradeType;
import lombok.*;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author qimingjin
* @Title: 财务账单概况返回实体
* @Description:
* @date 2021/2/26 13:49
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Builder
public class FinanceBillSituationVO implements Serializable {
/**
* 即时到账金额
*/
private BigDecimal immediatelyAccountTotal;
/**
* 支付宝担保交易金额
*/
BigDecimal alipaySecuredTransactionTotal;
/**
* 商户消费
*/
BigDecimal consumptionTotal;
/**
* 转账
*/
BigDecimal transferAccountsTotal;
/**
* 微信红包
*/
BigDecimal wxRedPacketsTotal;
/**
* 微信红包-退款
*/
BigDecimal redPacketsRefundTotal;
/**
* 扫二维码付款
*/
BigDecimal scannerQrCodePaymentTotal;
/**
* 二维码收款
*/
BigDecimal qrCodePaymentTotal;
//支出
BigDecimal expenditureTotal;
//收入
BigDecimal inComeTotal;
}

View File

@ -0,0 +1,40 @@
package com.snow.system.domain;
import lombok.*;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author qimingjin
* @Title: 钉钉同步数据概况返回实体
* @Description:
* @date 2021/2/25 19:11
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class SysDingtalkSyncSituationVO implements Serializable {
/**
* 成功数
*/
private long successNums;
/**
* 失败数
*/
private long failureNums;
/**
* 成功比率
*/
private BigDecimal successRatio;
/**
* 失败比率
*/
private BigDecimal failureRatio;
}

View File

@ -2,6 +2,7 @@ package com.snow.system.service;
import java.util.List;
import com.snow.system.domain.FinanceAlipayFlow;
import com.snow.system.domain.FinanceBillSituationVO;
/**
* 财务支付宝流水Service接口
@ -65,4 +66,11 @@ public interface IFinanceAlipayFlowService
* @return 结果
*/
public int deleteFinanceAlipayFlowById(Long id);
/**
* 获取账单消费概况
* @param userId
* @return
*/
public FinanceBillSituationVO getFinanceAlipayFlowSituation(Long userId);
}

View File

@ -2,6 +2,7 @@ package com.snow.system.service;
import java.util.List;
import com.snow.system.domain.SysDingtalkSyncLog;
import com.snow.system.domain.SysDingtalkSyncSituationVO;
/**
* 钉钉同步日志记录Service接口
@ -58,4 +59,9 @@ public interface ISysDingtalkSyncLogService
* @return 结果
*/
public int deleteSysDingtalkSyncLogById(Long logId);
/**
* 获取钉钉同步数据概况
*/
public SysDingtalkSyncSituationVO getSysDingtalkSyncSituation(SysDingtalkSyncLog sysDingtalkSyncLog);
}

View File

@ -1,19 +1,20 @@
package com.snow.system.service.impl;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import com.snow.common.core.text.Convert;
import com.snow.common.enums.FinanceTradeType;
import com.snow.common.utils.DateUtils;
import com.snow.system.domain.FinanceAlipayFlow;
import com.snow.system.domain.FinanceBillSituationVO;
import com.snow.system.domain.SysUser;
import com.snow.system.mapper.FinanceAlipayFlowMapper;
import com.snow.system.mapper.SysUserMapper;
import org.apache.commons.lang3.concurrent.BasicThreadFactory;
import com.snow.system.service.IFinanceAlipayFlowService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.snow.system.mapper.FinanceAlipayFlowMapper;
import com.snow.system.domain.FinanceAlipayFlow;
import com.snow.system.service.IFinanceAlipayFlowService;
import com.snow.common.core.text.Convert;
import java.math.BigDecimal;
import java.util.List;
/**
* 财务支付宝流水Service业务层处理
@ -112,4 +113,64 @@ public class FinanceAlipayFlowServiceImpl implements IFinanceAlipayFlowService
{
return financeAlipayFlowMapper.deleteFinanceAlipayFlowById(id);
}
/**
* 获取账单消费概况
* @param userId
* @return
*/
@Override
public FinanceBillSituationVO getFinanceAlipayFlowSituation(Long userId) {
FinanceAlipayFlow financeAlipayFlow=new FinanceAlipayFlow();
financeAlipayFlow.setBelongUserId(userId);
FinanceBillSituationVO.FinanceBillSituationVOBuilder builder = FinanceBillSituationVO.builder();
List<FinanceAlipayFlow> financeAlipayFlowList = financeAlipayFlowMapper.selectFinanceAlipayFlowList(financeAlipayFlow);
if(CollectionUtils.isNotEmpty(financeAlipayFlowList)) {
BigDecimal immediatelyAccountTotal = financeAlipayFlowList.stream().filter(t -> t.getTradeType() == FinanceTradeType.IMMEDIATELY_ACCOUNT.getCode()).map(FinanceAlipayFlow::getTradePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
builder.immediatelyAccountTotal(immediatelyAccountTotal);
BigDecimal alipaySecuredTransactionTotal = financeAlipayFlowList.stream().filter(t -> t.getTradeType() == FinanceTradeType.ALIPAY_SECURED_TRANSACTION.getCode()).map(FinanceAlipayFlow::getTradePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
builder.alipaySecuredTransactionTotal(alipaySecuredTransactionTotal);
BigDecimal consumptionTotal = financeAlipayFlowList.stream().filter(t -> t.getTradeType() == FinanceTradeType.CONSUMPTION.getCode()).map(FinanceAlipayFlow::getTradePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
builder.consumptionTotal(consumptionTotal);
BigDecimal transferAccountsTotal = financeAlipayFlowList.stream().filter(t -> t.getTradeType() == FinanceTradeType.TRANSFER_ACCOUNTS.getCode()).map(FinanceAlipayFlow::getTradePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
builder.transferAccountsTotal(transferAccountsTotal);
BigDecimal wxRedPacketsTotal = financeAlipayFlowList.stream().filter(t ->
t.getTradeType() == FinanceTradeType.WX_RED_PACKETS.getCode() || t.getTradeType() == FinanceTradeType.WX_GROUP_RED_PACKETS.getCode() || t.getTradeType() == FinanceTradeType.WX_SINGLE_RED_PACKETS.getCode()
).map(FinanceAlipayFlow::getTradePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
builder.wxRedPacketsTotal(wxRedPacketsTotal);
BigDecimal redPacketsRefundTotal = financeAlipayFlowList.stream().filter(t -> t.getTradeType() == FinanceTradeType.WX_RED_PACKETS_REFUND.getCode()).map(FinanceAlipayFlow::getTradePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
builder.redPacketsRefundTotal(redPacketsRefundTotal);
BigDecimal scannerQrCodePaymentTotal = financeAlipayFlowList.stream().filter(t -> t.getTradeType() == FinanceTradeType.SCANNER_QR_CODE_PAYMENT.getCode()).map(FinanceAlipayFlow::getTradePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
builder.scannerQrCodePaymentTotal(scannerQrCodePaymentTotal);
BigDecimal qrCodePaymentTotal = financeAlipayFlowList.stream().filter(t -> t.getTradeType() == FinanceTradeType.QR_CODE_PAYMENT.getCode()).map(FinanceAlipayFlow::getTradePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
builder.qrCodePaymentTotal(qrCodePaymentTotal);
//支出
BigDecimal expenditureTotal = financeAlipayFlowList.stream().filter(t -> t.getIncomeExpenditureType() == 1).map(FinanceAlipayFlow::getTradePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
builder.expenditureTotal(expenditureTotal);
//收入
BigDecimal inComeTotal = financeAlipayFlowList.stream().filter(t -> t.getIncomeExpenditureType() == 2).map(FinanceAlipayFlow::getTradePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
builder.inComeTotal(inComeTotal);
}else {
builder.immediatelyAccountTotal(BigDecimal.ZERO)
.alipaySecuredTransactionTotal(BigDecimal.ZERO)
.alipaySecuredTransactionTotal(BigDecimal.ZERO)
.consumptionTotal(BigDecimal.ZERO)
.expenditureTotal(BigDecimal.ZERO)
.inComeTotal(BigDecimal.ZERO)
.qrCodePaymentTotal(BigDecimal.ZERO)
.redPacketsRefundTotal(BigDecimal.ZERO)
.scannerQrCodePaymentTotal(BigDecimal.ZERO)
.redPacketsRefundTotal(BigDecimal.ZERO)
.transferAccountsTotal(BigDecimal.ZERO)
.wxRedPacketsTotal(BigDecimal.ZERO);
}
return builder.build();
}
}

View File

@ -1,7 +1,11 @@
package com.snow.system.service.impl;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.snow.system.domain.SysDingtalkSyncSituationVO;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.snow.system.mapper.SysDingtalkSyncLogMapper;
@ -94,4 +98,36 @@ public class SysDingtalkSyncLogServiceImpl implements ISysDingtalkSyncLogService
{
return sysDingtalkSyncLogMapper.deleteSysDingtalkSyncLogById(logId);
}
/**
* 获取同步数据
* @param sysDingtalkSyncLog
* @return
*/
@Override
public SysDingtalkSyncSituationVO getSysDingtalkSyncSituation(SysDingtalkSyncLog sysDingtalkSyncLog) {
List<SysDingtalkSyncLog> sysDingtalkSyncLogs = sysDingtalkSyncLogMapper.selectSysDingtalkSyncLogList(sysDingtalkSyncLog);
SysDingtalkSyncSituationVO.SysDingtalkSyncSituationVOBuilder sysDingtalkSyncSituationVOBuilder = SysDingtalkSyncSituationVO.builder();
if(CollectionUtils.isNotEmpty(sysDingtalkSyncLogs)){
long successCount = sysDingtalkSyncLogs.stream().filter(t -> t.getStatus() == 0).count();
long failureCount = sysDingtalkSyncLogs.stream().filter(t -> t.getStatus() == 1).count();
sysDingtalkSyncSituationVOBuilder.successNums(successCount).failureNums(failureCount);
long total=successCount+failureCount;
if(failureCount ==0){
sysDingtalkSyncSituationVOBuilder.failureRatio(new BigDecimal(0));
}else {
sysDingtalkSyncSituationVOBuilder.failureRatio(new BigDecimal(failureCount).divide(new BigDecimal(total),4,BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(100)));
}
if (successCount==0){
sysDingtalkSyncSituationVOBuilder.successRatio(new BigDecimal(0));
}else {
sysDingtalkSyncSituationVOBuilder.successRatio(new BigDecimal(successCount).divide(new BigDecimal(total),4,BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(100)));
}
}else {
sysDingtalkSyncSituationVOBuilder.successNums(0).failureNums(0).failureRatio(new BigDecimal(0)).successRatio(new BigDecimal(0));
}
return sysDingtalkSyncSituationVOBuilder.build();
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,703 +0,0 @@
-- ----------------------------
-- 1、部门表
-- ----------------------------
drop table if exists sys_dept;
create table sys_dept (
dept_id bigint(20) not null auto_increment comment '部门id',
parent_id bigint(20) default 0 comment '父部门id',
ancestors varchar(50) default '' comment '祖级列表',
dept_name varchar(30) default '' comment '部门名称',
order_num int(4) default 0 comment '显示顺序',
leader varchar(20) default null comment '负责人',
phone varchar(11) default null comment '联系电话',
email varchar(50) default null comment '邮箱',
status char(1) default '0' comment '部门状态0正常 1停用',
del_flag char(1) default '0' comment '删除标志0代表存在 2代表删除',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
primary key (dept_id)
) engine=innodb auto_increment=200 comment = '部门表';
-- ----------------------------
-- 初始化-部门表数据
-- ----------------------------
insert into sys_dept values(100, 0, '0', '若依科技', 0, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00');
insert into sys_dept values(101, 100, '0,100', '深圳总公司', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00');
insert into sys_dept values(102, 100, '0,100', '长沙分公司', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00');
insert into sys_dept values(103, 101, '0,100,101', '研发部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00');
insert into sys_dept values(104, 101, '0,100,101', '市场部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00');
insert into sys_dept values(105, 101, '0,100,101', '测试部门', 3, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00');
insert into sys_dept values(106, 101, '0,100,101', '财务部门', 4, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00');
insert into sys_dept values(107, 101, '0,100,101', '运维部门', 5, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00');
insert into sys_dept values(108, 102, '0,100,102', '市场部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00');
insert into sys_dept values(109, 102, '0,100,102', '财务部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00');
-- ----------------------------
-- 2、用户信息表
-- ----------------------------
drop table if exists sys_user;
create table sys_user (
user_id bigint(20) not null auto_increment comment '用户ID',
dept_id bigint(20) default null comment '部门ID',
login_name varchar(30) not null comment '登录账号',
user_name varchar(30) default '' comment '用户昵称',
user_type varchar(2) default '00' comment '用户类型00系统用户 01注册用户',
email varchar(50) default '' comment '用户邮箱',
phonenumber varchar(11) default '' comment '手机号码',
sex char(1) default '0' comment '用户性别0男 1女 2未知',
avatar varchar(100) default '' comment '头像路径',
password varchar(50) default '' comment '密码',
salt varchar(20) default '' comment '盐加密',
status char(1) default '0' comment '帐号状态0正常 1停用',
del_flag char(1) default '0' comment '删除标志0代表存在 2代表删除',
login_ip varchar(50) default '' comment '最后登陆IP',
login_date datetime comment '最后登陆时间',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
remark varchar(500) default null comment '备注',
primary key (user_id)
) engine=innodb auto_increment=100 comment = '用户信息表';
-- ----------------------------
-- 初始化-用户信息表数据
-- ----------------------------
insert into sys_user values(1, 103, 'admin', '若依', '00', 'ry@163.com', '15888888888', '1', '', '29c67a30398638269fe600f73a054934', '111111', '0', '0', '127.0.0.1', '2018-03-16 11-33-00', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '管理员');
insert into sys_user values(2, 105, 'ry', '若依', '00', 'ry@qq.com', '15666666666', '1', '', '8e6d98b90472783cc73c17047ddccf36', '222222', '0', '0', '127.0.0.1', '2018-03-16 11-33-00', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '测试员');
-- ----------------------------
-- 3、岗位信息表
-- ----------------------------
drop table if exists sys_post;
create table sys_post
(
post_id bigint(20) not null auto_increment comment '岗位ID',
post_code varchar(64) not null comment '岗位编码',
post_name varchar(50) not null comment '岗位名称',
post_sort int(4) not null comment '显示顺序',
status char(1) not null comment '状态0正常 1停用',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
remark varchar(500) default null comment '备注',
primary key (post_id)
) engine=innodb comment = '岗位信息表';
-- ----------------------------
-- 初始化-岗位信息表数据
-- ----------------------------
insert into sys_post values(1, 'ceo', '董事长', 1, '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_post values(2, 'se', '项目经理', 2, '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_post values(3, 'hr', '人力资源', 3, '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_post values(4, 'user', '普通员工', 4, '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- ----------------------------
-- 4、角色信息表
-- ----------------------------
drop table if exists sys_role;
create table sys_role (
role_id bigint(20) not null auto_increment comment '角色ID',
role_name varchar(30) not null comment '角色名称',
role_key varchar(100) not null comment '角色权限字符串',
role_sort int(4) not null comment '显示顺序',
data_scope char(1) default '1' comment '数据范围1全部数据权限 2自定数据权限 3本部门数据权限 4本部门及以下数据权限',
status char(1) not null comment '角色状态0正常 1停用',
del_flag char(1) default '0' comment '删除标志0代表存在 2代表删除',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
remark varchar(500) default null comment '备注',
primary key (role_id)
) engine=innodb auto_increment=100 comment = '角色信息表';
-- ----------------------------
-- 初始化-角色信息表数据
-- ----------------------------
insert into sys_role values('1', '超级管理员', 'admin', 1, 1, '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '超级管理员');
insert into sys_role values('2', '普通角色', 'common', 2, 2, '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '普通角色');
-- ----------------------------
-- 5、菜单权限表
-- ----------------------------
drop table if exists sys_menu;
create table sys_menu (
menu_id bigint(20) not null auto_increment comment '菜单ID',
menu_name varchar(50) not null comment '菜单名称',
parent_id bigint(20) default 0 comment '父菜单ID',
order_num int(4) default 0 comment '显示顺序',
url varchar(200) default '#' comment '请求地址',
target varchar(20) default '' comment '打开方式menuItem页签 menuBlank新窗口',
menu_type char(1) default '' comment '菜单类型M目录 C菜单 F按钮',
visible char(1) default 0 comment '菜单状态0显示 1隐藏',
perms varchar(100) default null comment '权限标识',
icon varchar(100) default '#' comment '菜单图标',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
remark varchar(500) default '' comment '备注',
primary key (menu_id)
) engine=innodb auto_increment=2000 comment = '菜单权限表';
-- ----------------------------
-- 初始化-菜单信息表数据
-- ----------------------------
-- 一级菜单
insert into sys_menu values('1', '系统管理', '0', '1', '#', '', 'M', '0', '', 'fa fa-gear', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '系统管理目录');
insert into sys_menu values('2', '系统监控', '0', '2', '#', '', 'M', '0', '', 'fa fa-video-camera', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '系统监控目录');
insert into sys_menu values('3', '系统工具', '0', '3', '#', '', 'M', '0', '', 'fa fa-bars', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '系统工具目录');
insert into sys_menu values('4', '若依官网', '0', '4', 'http://snow.vip', 'menuBlank', 'C', '0', '', 'fa fa-location-arrow', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '若依官网地址');
-- 二级菜单
insert into sys_menu values('100', '用户管理', '1', '1', '/system/user', '', 'C', '0', 'system:user:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '用户管理菜单');
insert into sys_menu values('101', '角色管理', '1', '2', '/system/role', '', 'C', '0', 'system:role:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '角色管理菜单');
insert into sys_menu values('102', '菜单管理', '1', '3', '/system/menu', '', 'C', '0', 'system:menu:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '菜单管理菜单');
insert into sys_menu values('103', '部门管理', '1', '4', '/system/dept', '', 'C', '0', 'system:dept:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '部门管理菜单');
insert into sys_menu values('104', '岗位管理', '1', '5', '/system/post', '', 'C', '0', 'system:post:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '岗位管理菜单');
insert into sys_menu values('105', '字典管理', '1', '6', '/system/dict', '', 'C', '0', 'system:dict:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '字典管理菜单');
insert into sys_menu values('106', '参数设置', '1', '7', '/system/config', '', 'C', '0', 'system:config:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '参数设置菜单');
insert into sys_menu values('107', '通知公告', '1', '8', '/system/notice', '', 'C', '0', 'system:notice:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '通知公告菜单');
insert into sys_menu values('108', '日志管理', '1', '9', '#', '', 'M', '0', '', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '日志管理菜单');
insert into sys_menu values('109', '在线用户', '2', '1', '/monitor/online', '', 'C', '0', 'monitor:online:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '在线用户菜单');
insert into sys_menu values('110', '定时任务', '2', '2', '/monitor/job', '', 'C', '0', 'monitor:job:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '定时任务菜单');
insert into sys_menu values('111', '数据监控', '2', '3', '/monitor/data', '', 'C', '0', 'monitor:data:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '数据监控菜单');
insert into sys_menu values('112', '服务监控', '2', '3', '/monitor/server', '', 'C', '0', 'monitor:server:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '服务监控菜单');
insert into sys_menu values('113', '表单构建', '3', '1', '/tool/build', '', 'C', '0', 'tool:build:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '表单构建菜单');
insert into sys_menu values('114', '代码生成', '3', '2', '/tool/gen', '', 'C', '0', 'tool:gen:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '代码生成菜单');
insert into sys_menu values('115', '系统接口', '3', '3', '/tool/swagger', '', 'C', '0', 'tool:swagger:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '系统接口菜单');
-- 三级菜单
insert into sys_menu values('500', '操作日志', '108', '1', '/monitor/operlog', '', 'C', '0', 'monitor:operlog:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '操作日志菜单');
insert into sys_menu values('501', '登录日志', '108', '2', '/monitor/logininfor', '', 'C', '0', 'monitor:logininfor:view', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '登录日志菜单');
-- 用户管理按钮
insert into sys_menu values('1000', '用户查询', '100', '1', '#', '', 'F', '0', 'system:user:list', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1001', '用户新增', '100', '2', '#', '', 'F', '0', 'system:user:add', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1002', '用户修改', '100', '3', '#', '', 'F', '0', 'system:user:edit', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1003', '用户删除', '100', '4', '#', '', 'F', '0', 'system:user:remove', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1004', '用户导出', '100', '5', '#', '', 'F', '0', 'system:user:export', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1005', '用户导入', '100', '6', '#', '', 'F', '0', 'system:user:import', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1006', '重置密码', '100', '7', '#', '', 'F', '0', 'system:user:resetPwd', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- 角色管理按钮
insert into sys_menu values('1007', '角色查询', '101', '1', '#', '', 'F', '0', 'system:role:list', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1008', '角色新增', '101', '2', '#', '', 'F', '0', 'system:role:add', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1009', '角色修改', '101', '3', '#', '', 'F', '0', 'system:role:edit', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1010', '角色删除', '101', '4', '#', '', 'F', '0', 'system:role:remove', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1011', '角色导出', '101', '5', '#', '', 'F', '0', 'system:role:export', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- 菜单管理按钮
insert into sys_menu values('1012', '菜单查询', '102', '1', '#', '', 'F', '0', 'system:menu:list', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1013', '菜单新增', '102', '2', '#', '', 'F', '0', 'system:menu:add', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1014', '菜单修改', '102', '3', '#', '', 'F', '0', 'system:menu:edit', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1015', '菜单删除', '102', '4', '#', '', 'F', '0', 'system:menu:remove', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- 部门管理按钮
insert into sys_menu values('1016', '部门查询', '103', '1', '#', '', 'F', '0', 'system:dept:list', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1017', '部门新增', '103', '2', '#', '', 'F', '0', 'system:dept:add', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1018', '部门修改', '103', '3', '#', '', 'F', '0', 'system:dept:edit', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1019', '部门删除', '103', '4', '#', '', 'F', '0', 'system:dept:remove', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- 岗位管理按钮
insert into sys_menu values('1020', '岗位查询', '104', '1', '#', '', 'F', '0', 'system:post:list', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1021', '岗位新增', '104', '2', '#', '', 'F', '0', 'system:post:add', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1022', '岗位修改', '104', '3', '#', '', 'F', '0', 'system:post:edit', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1023', '岗位删除', '104', '4', '#', '', 'F', '0', 'system:post:remove', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1024', '岗位导出', '104', '5', '#', '', 'F', '0', 'system:post:export', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- 字典管理按钮
insert into sys_menu values('1025', '字典查询', '105', '1', '#', '', 'F', '0', 'system:dict:list', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1026', '字典新增', '105', '2', '#', '', 'F', '0', 'system:dict:add', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1027', '字典修改', '105', '3', '#', '', 'F', '0', 'system:dict:edit', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1028', '字典删除', '105', '4', '#', '', 'F', '0', 'system:dict:remove', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1029', '字典导出', '105', '5', '#', '', 'F', '0', 'system:dict:export', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- 参数设置按钮
insert into sys_menu values('1030', '参数查询', '106', '1', '#', '', 'F', '0', 'system:config:list', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1031', '参数新增', '106', '2', '#', '', 'F', '0', 'system:config:add', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1032', '参数修改', '106', '3', '#', '', 'F', '0', 'system:config:edit', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1033', '参数删除', '106', '4', '#', '', 'F', '0', 'system:config:remove', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1034', '参数导出', '106', '5', '#', '', 'F', '0', 'system:config:export', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- 通知公告按钮
insert into sys_menu values('1035', '公告查询', '107', '1', '#', '', 'F', '0', 'system:notice:list', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1036', '公告新增', '107', '2', '#', '', 'F', '0', 'system:notice:add', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1037', '公告修改', '107', '3', '#', '', 'F', '0', 'system:notice:edit', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1038', '公告删除', '107', '4', '#', '', 'F', '0', 'system:notice:remove', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- 操作日志按钮
insert into sys_menu values('1039', '操作查询', '500', '1', '#', '', 'F', '0', 'monitor:operlog:list', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1040', '操作删除', '500', '2', '#', '', 'F', '0', 'monitor:operlog:remove', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1041', '详细信息', '500', '3', '#', '', 'F', '0', 'monitor:operlog:detail', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1042', '日志导出', '500', '4', '#', '', 'F', '0', 'monitor:operlog:export', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- 登录日志按钮
insert into sys_menu values('1043', '登录查询', '501', '1', '#', '', 'F', '0', 'monitor:logininfor:list', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1044', '登录删除', '501', '2', '#', '', 'F', '0', 'monitor:logininfor:remove', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1045', '日志导出', '501', '3', '#', '', 'F', '0', 'monitor:logininfor:export', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1046', '账户解锁', '501', '4', '#', '', 'F', '0', 'monitor:logininfor:unlock', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- 在线用户按钮
insert into sys_menu values('1047', '在线查询', '109', '1', '#', '', 'F', '0', 'monitor:online:list', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1048', '批量强退', '109', '2', '#', '', 'F', '0', 'monitor:online:batchForceLogout', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1049', '单条强退', '109', '3', '#', '', 'F', '0', 'monitor:online:forceLogout', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- 定时任务按钮
insert into sys_menu values('1050', '任务查询', '110', '1', '#', '', 'F', '0', 'monitor:job:list', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1051', '任务新增', '110', '2', '#', '', 'F', '0', 'monitor:job:add', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1052', '任务修改', '110', '3', '#', '', 'F', '0', 'monitor:job:edit', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1053', '任务删除', '110', '4', '#', '', 'F', '0', 'monitor:job:remove', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1054', '状态修改', '110', '5', '#', '', 'F', '0', 'monitor:job:changeStatus', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1055', '任务详细', '110', '6', '#', '', 'F', '0', 'monitor:job:detail', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1056', '任务导出', '110', '7', '#', '', 'F', '0', 'monitor:job:export', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- 代码生成按钮
insert into sys_menu values('1057', '生成查询', '114', '1', '#', '', 'F', '0', 'tool:gen:list', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1058', '生成修改', '114', '2', '#', '', 'F', '0', 'tool:gen:edit', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1059', '生成删除', '114', '3', '#', '', 'F', '0', 'tool:gen:remove', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1060', '预览代码', '114', '4', '#', '', 'F', '0', 'tool:gen:preview', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1061', '生成代码', '114', '5', '#', '', 'F', '0', 'tool:gen:code', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- ----------------------------
-- 6、用户和角色关联表 用户N-1角色
-- ----------------------------
drop table if exists sys_user_role;
create table sys_user_role (
user_id bigint(20) not null comment '用户ID',
role_id bigint(20) not null comment '角色ID',
primary key(user_id, role_id)
) engine=innodb comment = '用户和角色关联表';
-- ----------------------------
-- 初始化-用户和角色关联表数据
-- ----------------------------
insert into sys_user_role values ('1', '1');
insert into sys_user_role values ('2', '2');
-- ----------------------------
-- 7、角色和菜单关联表 角色1-N菜单
-- ----------------------------
drop table if exists sys_role_menu;
create table sys_role_menu (
role_id bigint(20) not null comment '角色ID',
menu_id bigint(20) not null comment '菜单ID',
primary key(role_id, menu_id)
) engine=innodb comment = '角色和菜单关联表';
-- ----------------------------
-- 初始化-角色和菜单关联表数据
-- ----------------------------
insert into sys_role_menu values ('2', '1');
insert into sys_role_menu values ('2', '2');
insert into sys_role_menu values ('2', '3');
insert into sys_role_menu values ('2', '4');
insert into sys_role_menu values ('2', '100');
insert into sys_role_menu values ('2', '101');
insert into sys_role_menu values ('2', '102');
insert into sys_role_menu values ('2', '103');
insert into sys_role_menu values ('2', '104');
insert into sys_role_menu values ('2', '105');
insert into sys_role_menu values ('2', '106');
insert into sys_role_menu values ('2', '107');
insert into sys_role_menu values ('2', '108');
insert into sys_role_menu values ('2', '109');
insert into sys_role_menu values ('2', '110');
insert into sys_role_menu values ('2', '111');
insert into sys_role_menu values ('2', '112');
insert into sys_role_menu values ('2', '113');
insert into sys_role_menu values ('2', '114');
insert into sys_role_menu values ('2', '115');
insert into sys_role_menu values ('2', '500');
insert into sys_role_menu values ('2', '501');
insert into sys_role_menu values ('2', '1000');
insert into sys_role_menu values ('2', '1001');
insert into sys_role_menu values ('2', '1002');
insert into sys_role_menu values ('2', '1003');
insert into sys_role_menu values ('2', '1004');
insert into sys_role_menu values ('2', '1005');
insert into sys_role_menu values ('2', '1006');
insert into sys_role_menu values ('2', '1007');
insert into sys_role_menu values ('2', '1008');
insert into sys_role_menu values ('2', '1009');
insert into sys_role_menu values ('2', '1010');
insert into sys_role_menu values ('2', '1011');
insert into sys_role_menu values ('2', '1012');
insert into sys_role_menu values ('2', '1013');
insert into sys_role_menu values ('2', '1014');
insert into sys_role_menu values ('2', '1015');
insert into sys_role_menu values ('2', '1016');
insert into sys_role_menu values ('2', '1017');
insert into sys_role_menu values ('2', '1018');
insert into sys_role_menu values ('2', '1019');
insert into sys_role_menu values ('2', '1020');
insert into sys_role_menu values ('2', '1021');
insert into sys_role_menu values ('2', '1022');
insert into sys_role_menu values ('2', '1023');
insert into sys_role_menu values ('2', '1024');
insert into sys_role_menu values ('2', '1025');
insert into sys_role_menu values ('2', '1026');
insert into sys_role_menu values ('2', '1027');
insert into sys_role_menu values ('2', '1028');
insert into sys_role_menu values ('2', '1029');
insert into sys_role_menu values ('2', '1030');
insert into sys_role_menu values ('2', '1031');
insert into sys_role_menu values ('2', '1032');
insert into sys_role_menu values ('2', '1033');
insert into sys_role_menu values ('2', '1034');
insert into sys_role_menu values ('2', '1035');
insert into sys_role_menu values ('2', '1036');
insert into sys_role_menu values ('2', '1037');
insert into sys_role_menu values ('2', '1038');
insert into sys_role_menu values ('2', '1039');
insert into sys_role_menu values ('2', '1040');
insert into sys_role_menu values ('2', '1041');
insert into sys_role_menu values ('2', '1042');
insert into sys_role_menu values ('2', '1043');
insert into sys_role_menu values ('2', '1044');
insert into sys_role_menu values ('2', '1045');
insert into sys_role_menu values ('2', '1046');
insert into sys_role_menu values ('2', '1047');
insert into sys_role_menu values ('2', '1048');
insert into sys_role_menu values ('2', '1049');
insert into sys_role_menu values ('2', '1050');
insert into sys_role_menu values ('2', '1051');
insert into sys_role_menu values ('2', '1052');
insert into sys_role_menu values ('2', '1053');
insert into sys_role_menu values ('2', '1054');
insert into sys_role_menu values ('2', '1055');
insert into sys_role_menu values ('2', '1056');
insert into sys_role_menu values ('2', '1057');
insert into sys_role_menu values ('2', '1058');
insert into sys_role_menu values ('2', '1059');
insert into sys_role_menu values ('2', '1060');
insert into sys_role_menu values ('2', '1061');
-- ----------------------------
-- 8、角色和部门关联表 角色1-N部门
-- ----------------------------
drop table if exists sys_role_dept;
create table sys_role_dept (
role_id bigint(20) not null comment '角色ID',
dept_id bigint(20) not null comment '部门ID',
primary key(role_id, dept_id)
) engine=innodb comment = '角色和部门关联表';
-- ----------------------------
-- 初始化-角色和部门关联表数据
-- ----------------------------
insert into sys_role_dept values ('2', '100');
insert into sys_role_dept values ('2', '101');
insert into sys_role_dept values ('2', '105');
-- ----------------------------
-- 9、用户与岗位关联表 用户1-N岗位
-- ----------------------------
drop table if exists sys_user_post;
create table sys_user_post
(
user_id bigint(20) not null comment '用户ID',
post_id bigint(20) not null comment '岗位ID',
primary key (user_id, post_id)
) engine=innodb comment = '用户与岗位关联表';
-- ----------------------------
-- 初始化-用户与岗位关联表数据
-- ----------------------------
insert into sys_user_post values ('1', '1');
insert into sys_user_post values ('2', '2');
-- ----------------------------
-- 10、操作日志记录
-- ----------------------------
drop table if exists sys_oper_log;
create table sys_oper_log (
oper_id bigint(20) not null auto_increment comment '日志主键',
title varchar(50) default '' comment '模块标题',
business_type int(2) default 0 comment '业务类型0其它 1新增 2修改 3删除',
method varchar(100) default '' comment '方法名称',
request_method varchar(10) default '' comment '请求方式',
operator_type int(1) default 0 comment '操作类别0其它 1后台用户 2手机端用户',
oper_name varchar(50) default '' comment '操作人员',
dept_name varchar(50) default '' comment '部门名称',
oper_url varchar(255) default '' comment '请求URL',
oper_ip varchar(50) default '' comment '主机地址',
oper_location varchar(255) default '' comment '操作地点',
oper_param varchar(2000) default '' comment '请求参数',
json_result varchar(2000) default '' comment '返回参数',
status int(1) default 0 comment '操作状态0正常 1异常',
error_msg varchar(2000) default '' comment '错误消息',
oper_time datetime comment '操作时间',
primary key (oper_id)
) engine=innodb auto_increment=100 comment = '操作日志记录';
-- ----------------------------
-- 11、字典类型表
-- ----------------------------
drop table if exists sys_dict_type;
create table sys_dict_type
(
dict_id bigint(20) not null auto_increment comment '字典主键',
dict_name varchar(100) default '' comment '字典名称',
dict_type varchar(100) default '' comment '字典类型',
status char(1) default '0' comment '状态0正常 1停用',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
remark varchar(500) default null comment '备注',
primary key (dict_id),
unique (dict_type)
) engine=innodb auto_increment=100 comment = '字典类型表';
insert into sys_dict_type values(1, '用户性别', 'sys_user_sex', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '用户性别列表');
insert into sys_dict_type values(2, '菜单状态', 'sys_show_hide', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '菜单状态列表');
insert into sys_dict_type values(3, '系统开关', 'sys_normal_disable', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '系统开关列表');
insert into sys_dict_type values(4, '任务状态', 'sys_job_status', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '任务状态列表');
insert into sys_dict_type values(5, '任务分组', 'sys_job_group', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '任务分组列表');
insert into sys_dict_type values(6, '系统是否', 'sys_yes_no', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '系统是否列表');
insert into sys_dict_type values(7, '通知类型', 'sys_notice_type', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '通知类型列表');
insert into sys_dict_type values(8, '通知状态', 'sys_notice_status', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '通知状态列表');
insert into sys_dict_type values(9, '操作类型', 'sys_oper_type', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '操作类型列表');
insert into sys_dict_type values(10, '系统状态', 'sys_common_status', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '登录状态列表');
-- ----------------------------
-- 12、字典数据表
-- ----------------------------
drop table if exists sys_dict_data;
create table sys_dict_data
(
dict_code bigint(20) not null auto_increment comment '字典编码',
dict_sort int(4) default 0 comment '字典排序',
dict_label varchar(100) default '' comment '字典标签',
dict_value varchar(100) default '' comment '字典键值',
dict_type varchar(100) default '' comment '字典类型',
css_class varchar(100) default null comment '样式属性(其他样式扩展)',
list_class varchar(100) default null comment '表格回显样式',
is_default char(1) default 'N' comment '是否默认Y是 N否',
status char(1) default '0' comment '状态0正常 1停用',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
remark varchar(500) default null comment '备注',
primary key (dict_code)
) engine=innodb auto_increment=100 comment = '字典数据表';
insert into sys_dict_data values(1, 1, '', '0', 'sys_user_sex', '', '', 'Y', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '性别男');
insert into sys_dict_data values(2, 2, '', '1', 'sys_user_sex', '', '', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '性别女');
insert into sys_dict_data values(3, 3, '未知', '2', 'sys_user_sex', '', '', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '性别未知');
insert into sys_dict_data values(4, 1, '显示', '0', 'sys_show_hide', '', 'primary', 'Y', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '显示菜单');
insert into sys_dict_data values(5, 2, '隐藏', '1', 'sys_show_hide', '', 'danger', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '隐藏菜单');
insert into sys_dict_data values(6, 1, '正常', '0', 'sys_normal_disable', '', 'primary', 'Y', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '正常状态');
insert into sys_dict_data values(7, 2, '停用', '1', 'sys_normal_disable', '', 'danger', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '停用状态');
insert into sys_dict_data values(8, 1, '正常', '0', 'sys_job_status', '', 'primary', 'Y', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '正常状态');
insert into sys_dict_data values(9, 2, '暂停', '1', 'sys_job_status', '', 'danger', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '停用状态');
insert into sys_dict_data values(10, 1, '默认', 'DEFAULT', 'sys_job_group', '', '', 'Y', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '默认分组');
insert into sys_dict_data values(11, 2, '系统', 'SYSTEM', 'sys_job_group', '', '', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '系统分组');
insert into sys_dict_data values(12, 1, '', 'Y', 'sys_yes_no', '', 'primary', 'Y', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '系统默认是');
insert into sys_dict_data values(13, 2, '', 'N', 'sys_yes_no', '', 'danger', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '系统默认否');
insert into sys_dict_data values(14, 1, '通知', '1', 'sys_notice_type', '', 'warning', 'Y', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '通知');
insert into sys_dict_data values(15, 2, '公告', '2', 'sys_notice_type', '', 'success', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '公告');
insert into sys_dict_data values(16, 1, '正常', '0', 'sys_notice_status', '', 'primary', 'Y', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '正常状态');
insert into sys_dict_data values(17, 2, '关闭', '1', 'sys_notice_status', '', 'danger', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '关闭状态');
insert into sys_dict_data values(18, 99, '其他', '0', 'sys_oper_type', '', 'info', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '其他操作');
insert into sys_dict_data values(19, 1, '新增', '1', 'sys_oper_type', '', 'info', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '新增操作');
insert into sys_dict_data values(20, 2, '修改', '2', 'sys_oper_type', '', 'info', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '修改操作');
insert into sys_dict_data values(21, 3, '删除', '3', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '删除操作');
insert into sys_dict_data values(22, 4, '授权', '4', 'sys_oper_type', '', 'primary', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '授权操作');
insert into sys_dict_data values(23, 5, '导出', '5', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '导出操作');
insert into sys_dict_data values(24, 6, '导入', '6', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '导入操作');
insert into sys_dict_data values(25, 7, '强退', '7', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '强退操作');
insert into sys_dict_data values(26, 8, '生成代码', '8', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '生成操作');
insert into sys_dict_data values(27, 9, '清空数据', '9', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '清空操作');
insert into sys_dict_data values(28, 1, '成功', '0', 'sys_common_status', '', 'primary', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '正常状态');
insert into sys_dict_data values(29, 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '停用状态');
-- ----------------------------
-- 13、参数配置表
-- ----------------------------
drop table if exists sys_config;
create table sys_config (
config_id int(5) not null auto_increment comment '参数主键',
config_name varchar(100) default '' comment '参数名称',
config_key varchar(100) default '' comment '参数键名',
config_value varchar(500) default '' comment '参数键值',
config_type char(1) default 'N' comment '系统内置Y是 N否',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
remark varchar(500) default null comment '备注',
primary key (config_id)
) engine=innodb auto_increment=100 comment = '参数配置表';
insert into sys_config values(1, '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow');
insert into sys_config values(2, '用户管理-账号初始密码', 'sys.user.initPassword', '123456', 'Y', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '初始化密码 123456');
insert into sys_config values(3, '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-dark', 'Y', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '深黑主题theme-dark浅色主题theme-light深蓝主题theme-blue');
insert into sys_config values(4, '账号自助-是否开启用户注册功能', 'sys.account.registerUser', 'false', 'Y', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '是否开启注册用户功能');
-- ----------------------------
-- 14、系统访问记录
-- ----------------------------
drop table if exists sys_logininfor;
create table sys_logininfor (
info_id bigint(20) not null auto_increment comment '访问ID',
login_name varchar(50) default '' comment '登录账号',
ipaddr varchar(50) default '' comment '登录IP地址',
login_location varchar(255) default '' comment '登录地点',
browser varchar(50) default '' comment '浏览器类型',
os varchar(50) default '' comment '操作系统',
status char(1) default '0' comment '登录状态0成功 1失败',
msg varchar(255) default '' comment '提示消息',
login_time datetime comment '访问时间',
primary key (info_id)
) engine=innodb auto_increment=100 comment = '系统访问记录';
-- ----------------------------
-- 15、在线用户记录
-- ----------------------------
drop table if exists sys_user_online;
create table sys_user_online (
sessionId varchar(50) default '' comment '用户会话id',
login_name varchar(50) default '' comment '登录账号',
dept_name varchar(50) default '' comment '部门名称',
ipaddr varchar(50) default '' comment '登录IP地址',
login_location varchar(255) default '' comment '登录地点',
browser varchar(50) default '' comment '浏览器类型',
os varchar(50) default '' comment '操作系统',
status varchar(10) default '' comment '在线状态on_line在线off_line离线',
start_timestamp datetime comment 'session创建时间',
last_access_time datetime comment 'session最后访问时间',
expire_time int(5) default 0 comment '超时时间,单位为分钟',
primary key (sessionId)
) engine=innodb comment = '在线用户记录';
-- ----------------------------
-- 16、定时任务调度表
-- ----------------------------
drop table if exists sys_job;
create table sys_job (
job_id bigint(20) not null auto_increment comment '任务ID',
job_name varchar(64) default '' comment '任务名称',
job_group varchar(64) default 'DEFAULT' comment '任务组名',
invoke_target varchar(500) not null comment '调用目标字符串',
cron_expression varchar(255) default '' comment 'cron执行表达式',
misfire_policy varchar(20) default '3' comment '计划执行错误策略1立即执行 2执行一次 3放弃执行',
concurrent char(1) default '1' comment '是否并发执行0允许 1禁止',
status char(1) default '0' comment '状态0正常 1暂停',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
remark varchar(500) default '' comment '备注信息',
primary key (job_id, job_name, job_group)
) engine=innodb auto_increment=100 comment = '定时任务调度表';
insert into sys_job values(1, '系统默认(无参)', 'DEFAULT', 'ryTask.ryNoParams', '0/10 * * * * ?', '3', '1', '1', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_job values(2, '系统默认(有参)', 'DEFAULT', 'ryTask.ryParams(\'ry\')', '0/15 * * * * ?', '3', '1', '1', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_job values(3, '系统默认(多参)', 'DEFAULT', 'ryTask.ryMultipleParams(\'ry\', true, 2000L, 316.50D, 100)', '0/20 * * * * ?', '3', '1', '1', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- ----------------------------
-- 17、定时任务调度日志表
-- ----------------------------
drop table if exists sys_job_log;
create table sys_job_log (
job_log_id bigint(20) not null auto_increment comment '任务日志ID',
job_name varchar(64) not null comment '任务名称',
job_group varchar(64) not null comment '任务组名',
invoke_target varchar(500) not null comment '调用目标字符串',
job_message varchar(500) comment '日志信息',
status char(1) default '0' comment '执行状态0正常 1失败',
exception_info varchar(2000) default '' comment '异常信息',
create_time datetime comment '创建时间',
primary key (job_log_id)
) engine=innodb comment = '定时任务调度日志表';
-- ----------------------------
-- 18、通知公告表
-- ----------------------------
drop table if exists sys_notice;
create table sys_notice (
notice_id int(4) not null auto_increment comment '公告ID',
notice_title varchar(50) not null comment '公告标题',
notice_type char(1) not null comment '公告类型1通知 2公告',
notice_content varchar(2000) default null comment '公告内容',
status char(1) default '0' comment '公告状态0正常 1关闭',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
remark varchar(255) default null comment '备注',
primary key (notice_id)
) engine=innodb auto_increment=10 comment = '通知公告表';
-- ----------------------------
-- 初始化-公告信息表数据
-- ----------------------------
insert into sys_notice values('1', '温馨提醒2018-07-01 若依新版本发布啦', '2', '新版本内容', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '管理员');
insert into sys_notice values('2', '维护通知2018-07-01 若依系统凌晨维护', '1', '维护内容', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '管理员');
-- ----------------------------
-- 19、代码生成业务表
-- ----------------------------
drop table if exists gen_table;
create table gen_table (
table_id bigint(20) not null auto_increment comment '编号',
table_name varchar(200) default '' comment '表名称',
table_comment varchar(500) default '' comment '表描述',
sub_table_name varchar(64) default null comment '关联子表的表名',
sub_table_fk_name varchar(64) default null comment '子表关联的外键名',
class_name varchar(100) default '' comment '实体类名称',
tpl_category varchar(200) default 'crud' comment '使用的模板crud单表操作 tree树表操作 sub主子表操作',
package_name varchar(100) comment '生成包路径',
module_name varchar(30) comment '生成模块名',
business_name varchar(30) comment '生成业务名',
function_name varchar(50) comment '生成功能名',
function_author varchar(50) comment '生成功能作者',
gen_type char(1) default '0' comment '生成代码方式0zip压缩包 1自定义路径',
gen_path varchar(200) default '/' comment '生成路径(不填默认项目路径)',
options varchar(1000) comment '其它生成选项',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
remark varchar(500) default null comment '备注',
primary key (table_id)
) engine=innodb auto_increment=1 comment = '代码生成业务表';
-- ----------------------------
-- 20、代码生成业务表字段
-- ----------------------------
drop table if exists gen_table_column;
create table gen_table_column (
column_id bigint(20) not null auto_increment comment '编号',
table_id varchar(64) comment '归属表编号',
column_name varchar(200) comment '列名称',
column_comment varchar(500) comment '列描述',
column_type varchar(100) comment '列类型',
java_type varchar(500) comment 'JAVA类型',
java_field varchar(200) comment 'JAVA字段名',
is_pk char(1) comment '是否主键1是',
is_increment char(1) comment '是否自增1是',
is_required char(1) comment '是否必填1是',
is_insert char(1) comment '是否为插入字段1是',
is_edit char(1) comment '是否编辑字段1是',
is_list char(1) comment '是否列表字段1是',
is_query char(1) comment '是否查询字段1是',
query_type varchar(200) default 'EQ' comment '查询方式(等于、不等于、大于、小于、范围)',
html_type varchar(200) comment '显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)',
dict_type varchar(200) default '' comment '字典类型',
sort int comment '排序',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
primary key (column_id)
) engine=innodb auto_increment=1 comment = '代码生成业务表字段';