Merge branch 'feature/develop1.0'
45
README.md
|
@ -22,11 +22,11 @@
|
||||||
17. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
|
17. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
|
||||||
18. **钉钉管理:钉钉用户,部门体系数据同步,请假单,采购单流程**
|
18. **钉钉管理:钉钉用户,部门体系数据同步,请假单,采购单流程**
|
||||||
19. **流程管理: 流程模型在线设计,流程组管理,待办钉钉通知**
|
19. **流程管理: 流程模型在线设计,流程组管理,待办钉钉通知**
|
||||||
20. **支付管理:一键导入支付宝和微信账单,可系统化管理账单**
|
20. **账单管理:一键导入支付宝和微信账单,可系统化管理账单**
|
||||||
21. **系统序列设置:每日凌晨更新序列号,系统按照日期生成自增序列单号**
|
21. **系统序列设置:每日凌晨更新序列号,系统按照日期生成自增序列单号**
|
||||||
|
22. **可视化大屏:智能化科技大屏,实时了解钉钉数据,流程数据状态**
|
||||||
## 在线体验
|
## 在线体验
|
||||||
暂未开放数据库,有需要的可以加群,项目可搭建流程平台商业化
|
暂未开放数据库,有需要的可以加群,项目可用于搭建流程平台商业化
|
||||||
|
|
||||||
- QQ群: 577813338
|
- QQ群: 577813338
|
||||||
- admin/admin123
|
- admin/admin123
|
||||||
|
@ -42,27 +42,52 @@
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://qimetons.oss-cn-beijing.aliyuncs.com/094981bad3844c25b4e0e9ae5fdfb253.png"/></td>
|
<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>
|
<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/102a95b10c5b4094ae9eea060ed3d0c4.png"/></td>
|
||||||
<td><img src="https://qimetons.oss-cn-beijing.aliyuncs.com/de48282f792d4300ba26b7a397464d71.png"/></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<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>
|
<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/416ffa7c1f1f42f8807a24dc2e63a08d.png"/></td>
|
||||||
|
<td><img src="https://qimetons.oss-cn-beijing.aliyuncs.com/0ffee016a6be4d5eb5b5f18a0291353e.png"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</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 角色与钉钉打通
|
- 1.0 角色与钉钉打通
|
||||||
- 2.0 流程表单设计
|
- 2.0 流程表单设计
|
||||||
- 3.0 钉钉工作流与系统工作流打通(让流程移动化)
|
- 3.0 钉钉工作流与系统工作流打通(让流程移动化)
|
||||||
|
- 4.0 钉钉同步数据失败后,手工重试
|
||||||
|
- 5.0 记录消息通知轨迹
|
||||||
|
- 6.0 钉钉流程和系统流程打通,让流程移动化
|
||||||
|
|
||||||
## 交流群
|
## 交流群
|
||||||
QQ群: 577813338 欢迎入群讨论,我们的口号:借助钉钉,致力于流程,让流程更简单
|
- QQ群: 577813338 欢迎入群讨论,我们的口号:借助钉钉,致力于流程,让流程更简单
|
||||||
|
|
||||||
|
## 我有话说
|
||||||
|
开源离不开您的参与、支持与鼓励。开源不易,如果您觉得项目对您有帮助,请您动动小手star一下,也是对作者的最大帮助。
|
||||||
|
|
||||||
## 感谢诺依系统提供框架
|
## 感谢诺依系统提供框架
|
||||||
诺依系统地址 http://ruoyi.vip
|
诺依系统地址: http://ruoyi.vip
|
||||||
|
|
18
pom.xml
|
@ -8,11 +8,11 @@
|
||||||
<version>4.3.1</version>
|
<version>4.3.1</version>
|
||||||
|
|
||||||
<name>snow</name>
|
<name>snow</name>
|
||||||
<url>http://www.ruoyi.vip</url>
|
<url>http://snowblog.shop.csj361.com</url>
|
||||||
<description>snow管理系统</description>
|
<description>snow管理系统</description>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<ruoyi.version>4.3.1</ruoyi.version>
|
<snow.version>4.3.1</snow.version>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
<java.version>1.8</java.version>
|
<java.version>1.8</java.version>
|
||||||
|
@ -171,49 +171,49 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.snow</groupId>
|
<groupId>com.snow</groupId>
|
||||||
<artifactId>snow-quartz</artifactId>
|
<artifactId>snow-quartz</artifactId>
|
||||||
<version>${ruoyi.version}</version>
|
<version>${snow.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 代码生成-->
|
<!-- 代码生成-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.snow</groupId>
|
<groupId>com.snow</groupId>
|
||||||
<artifactId>snow-generator</artifactId>
|
<artifactId>snow-generator</artifactId>
|
||||||
<version>${ruoyi.version}</version>
|
<version>${snow.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 核心模块-->
|
<!-- 核心模块-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.snow</groupId>
|
<groupId>com.snow</groupId>
|
||||||
<artifactId>snow-framework</artifactId>
|
<artifactId>snow-framework</artifactId>
|
||||||
<version>${ruoyi.version}</version>
|
<version>${snow.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 系统模块-->
|
<!-- 系统模块-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.snow</groupId>
|
<groupId>com.snow</groupId>
|
||||||
<artifactId>snow-system</artifactId>
|
<artifactId>snow-system</artifactId>
|
||||||
<version>${ruoyi.version}</version>
|
<version>${snow.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 通用工具-->
|
<!-- 通用工具-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.snow</groupId>
|
<groupId>com.snow</groupId>
|
||||||
<artifactId>snow-common</artifactId>
|
<artifactId>snow-common</artifactId>
|
||||||
<version>${ruoyi.version}</version>
|
<version>${snow.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--钉钉模块-->
|
<!--钉钉模块-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.snow</groupId>
|
<groupId>com.snow</groupId>
|
||||||
<artifactId>snow-dingtalk</artifactId>
|
<artifactId>snow-dingtalk</artifactId>
|
||||||
<version>${ruoyi.version}</version>
|
<version>${snow.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--工作流模块-->
|
<!--工作流模块-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.snow</groupId>
|
<groupId>com.snow</groupId>
|
||||||
<artifactId>snow-flowable</artifactId>
|
<artifactId>snow-flowable</artifactId>
|
||||||
<version>${ruoyi.version}</version>
|
<version>${snow.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
86
ry.sh
|
@ -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
|
|
|
@ -78,6 +78,17 @@ public class FlowController extends BaseController {
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跳转待办页
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("flow:get:todoList")
|
||||||
|
@GetMapping("/toDoMyTask")
|
||||||
|
public String todoTask()
|
||||||
|
{
|
||||||
|
|
||||||
|
return prefix+"/myTask";
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 获取我的待办
|
* 获取我的待办
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -61,7 +61,11 @@ public class FinanceFlowController extends BaseController
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public TableDataInfo list(FinanceAlipayFlow financeAlipayFlow)
|
public TableDataInfo list(FinanceAlipayFlow financeAlipayFlow)
|
||||||
{
|
{
|
||||||
|
SysUser user = ShiroUtils.getSysUser();
|
||||||
startPage();
|
startPage();
|
||||||
|
if(!user.isAdmin()){
|
||||||
|
financeAlipayFlow.setBelongUserId(user.getUserId());
|
||||||
|
}
|
||||||
List<FinanceAlipayFlow> list = financeAlipayFlowService.selectFinanceAlipayFlowList(financeAlipayFlow);
|
List<FinanceAlipayFlow> list = financeAlipayFlowService.selectFinanceAlipayFlowList(financeAlipayFlow);
|
||||||
return getDataTable(list);
|
return getDataTable(list);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +1,39 @@
|
||||||
package com.snow.web.controller.system;
|
package com.snow.web.controller.system;
|
||||||
|
|
||||||
import java.util.Date;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import java.util.List;
|
import com.snow.common.config.Global;
|
||||||
|
|
||||||
import com.snow.common.constant.ShiroConstants;
|
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.domain.AjaxResult;
|
||||||
import com.snow.common.core.text.Convert;
|
import com.snow.common.core.text.Convert;
|
||||||
import com.snow.common.utils.CookieUtils;
|
import com.snow.common.utils.CookieUtils;
|
||||||
import com.snow.common.utils.DateUtils;
|
import com.snow.common.utils.DateUtils;
|
||||||
import com.snow.common.utils.ServletUtils;
|
import com.snow.common.utils.ServletUtils;
|
||||||
import com.snow.common.utils.StringUtils;
|
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.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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.ui.ModelMap;
|
import org.springframework.ui.ModelMap;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
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.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
|
||||||
import javax.servlet.http.Cookie;
|
import javax.servlet.http.Cookie;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 首页 业务处理
|
* 首页 业务处理
|
||||||
|
@ -47,6 +53,18 @@ public class SysIndexController extends BaseController
|
||||||
@Autowired
|
@Autowired
|
||||||
private SysPasswordService passwordService;
|
private SysPasswordService passwordService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private FlowableService flowableService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysDingtalkSyncLogServiceImpl sysDingtalkSyncLogService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private FinanceAlipayFlowServiceImpl financeAlipayFlowService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISysOperLogService operLogService;
|
||||||
|
|
||||||
// 系统首页
|
// 系统首页
|
||||||
@GetMapping("/index")
|
@GetMapping("/index")
|
||||||
public String index(ModelMap mmap)
|
public String index(ModelMap mmap)
|
||||||
|
@ -161,4 +179,39 @@ public class SysIndexController extends BaseController
|
||||||
}
|
}
|
||||||
return false;
|
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";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,9 +6,9 @@ spring:
|
||||||
druid:
|
druid:
|
||||||
# 主库数据源
|
# 主库数据源
|
||||||
master:
|
master:
|
||||||
url: jdbc:mysql://localhost:3306/snow?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
url: jdbc:mysql://rm-bp1j1554xv1qs04295o.mysql.rds.aliyuncs.com:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||||
username: root
|
username: cloud_root
|
||||||
password: root
|
password: Jin!152377
|
||||||
# 从库数据源
|
# 从库数据源
|
||||||
slave:
|
slave:
|
||||||
# 从数据源开关/默认关闭
|
# 从数据源开关/默认关闭
|
||||||
|
|
|
@ -5,7 +5,7 @@ snow:
|
||||||
# 版本
|
# 版本
|
||||||
version: 4.3.1
|
version: 4.3.1
|
||||||
# 版权年份
|
# 版权年份
|
||||||
copyrightYear: 2020
|
copyrightYear: 2021
|
||||||
# 实例演示开关
|
# 实例演示开关
|
||||||
demoEnabled: true
|
demoEnabled: true
|
||||||
# 文件路径 示例( Windows配置D:/snow/uploadPath,Linux配置 /home/snow/uploadPath)
|
# 文件路径 示例( Windows配置D:/snow/uploadPath,Linux配置 /home/snow/uploadPath)
|
||||||
|
|
|
@ -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);}
|
||||||
|
}
|
||||||
|
|
After Width: | Height: | Size: 696 KiB |
After Width: | Height: | Size: 252 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 7.7 KiB |
After Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 701 B |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 302 KiB |
After Width: | Height: | Size: 2.3 KiB |
|
@ -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();
|
||||||
|
});
|
||||||
|
|
|
@ -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);
|
|
@ -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})
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 15 KiB |
|
@ -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>
|
|
@ -13,13 +13,13 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<label>name:</label>
|
<label>名称:</label>
|
||||||
<input type="text" name="deploymentNameLike"/>
|
<input type="text" name="deploymentNameLike"/>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<label>流程分类:</label>
|
<label>分类:</label>
|
||||||
<select name="category" th:with="type=${@dict.getType('flow_category')}">
|
<select name="deploymentCategory" th:with="type=${@dict.getType('flow_category')}">
|
||||||
<option value="">所有</option>
|
<option value="">所有</option>
|
||||||
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
|
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
|
||||||
</select>
|
</select>
|
||||||
|
@ -77,23 +77,26 @@
|
||||||
field: 'name',
|
field: 'name',
|
||||||
title: '流程名称'
|
title: '流程名称'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'category',
|
field: 'category',
|
||||||
title: '分类',
|
title: '分类',
|
||||||
formatter: function(value, row, index) {
|
formatter: function(value, row, index) {
|
||||||
return $.table.selectDictLabel(flowCategoryDatas, value);
|
return $.table.selectDictLabel(flowCategoryDatas, value);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: 'key',
|
||||||
|
title: '发布key'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'engineVersion',
|
||||||
|
title: '版本号'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
field: 'deploymentTime',
|
field: 'deploymentTime',
|
||||||
title: '流程发布时间'
|
title: '流程发布时间'
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
|
||||||
field: 'key',
|
|
||||||
title: '发布key'
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<label>name:</label>
|
<label>名称:</label>
|
||||||
<input type="text" name="name"/>
|
<input type="text" name="name"/>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
@ -91,10 +91,10 @@
|
||||||
title: '流程发布时间'
|
title: '流程发布时间'
|
||||||
},
|
},
|
||||||
|
|
||||||
/* {
|
{
|
||||||
field: 'key',
|
field: 'engineVersion',
|
||||||
title: '发布key'
|
title: '版本号'
|
||||||
},*/
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
|
|
|
@ -92,7 +92,7 @@
|
||||||
align: 'center',
|
align: 'center',
|
||||||
formatter: function(value, row, index) {
|
formatter: function(value, row, index) {
|
||||||
var actions = [];
|
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('');
|
return actions.join('');
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
|
|
|
@ -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> 搜索</a>
|
||||||
|
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i> 重置</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>
|
|
@ -126,8 +126,7 @@
|
||||||
<th:block th:include="include :: footer" />
|
<th:block th:include="include :: footer" />
|
||||||
<th:block th:include="include :: select2-js" />
|
<th:block th:include="include :: select2-js" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
var editFlag = [[${@permission.hasPermi('system:flow:edit')}]];
|
var todoList = [[${@permission.hasPermi('flow:get:todoList')}]];
|
||||||
var prefix = ctx + "modeler";
|
|
||||||
var prefixFlow = ctx + "flow";
|
var prefixFlow = ctx + "flow";
|
||||||
$(function() {
|
$(function() {
|
||||||
var options = {
|
var options = {
|
||||||
|
@ -186,8 +185,7 @@
|
||||||
align: 'center',
|
align: 'center',
|
||||||
formatter: function(value, row, index) {
|
formatter: function(value, row, index) {
|
||||||
var actions = [];
|
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-success btn-xs ' + todoList + '" 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>');*/
|
|
||||||
return actions.join('');
|
return actions.join('');
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
|
@ -200,11 +198,6 @@
|
||||||
var preViewUrl=prefixFlow+'/toFinishTask?taskId='+taskId;
|
var preViewUrl=prefixFlow+'/toFinishTask?taskId='+taskId;
|
||||||
$.modal.openTab("审批", preViewUrl);
|
$.modal.openTab("审批", preViewUrl);
|
||||||
}
|
}
|
||||||
function getProcessDiagram(processInstanceId) {
|
|
||||||
|
|
||||||
var preViewUrl=prefix+'/getProcessDiagram?processInstanceId='+processInstanceId;
|
|
||||||
$.modal.open("流程图", preViewUrl,500,500);
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -38,7 +38,6 @@
|
||||||
<artifactId>flowable-ui-modeler-rest</artifactId>
|
<artifactId>flowable-ui-modeler-rest</artifactId>
|
||||||
<version>6.4.1</version>
|
<version>6.4.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.flowable</groupId>
|
<groupId>org.flowable</groupId>
|
||||||
<artifactId>flowable-json-converter</artifactId>
|
<artifactId>flowable-json-converter</artifactId>
|
||||||
|
|
|
@ -37,58 +37,4 @@ public class FlowIdGenerator implements IdGenerator {
|
||||||
long id = snowflake.nextId();
|
long id = snowflake.nextId();
|
||||||
return String.valueOf(id);
|
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());*/
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.shiro.event.support.TypedEventListener;
|
import org.apache.shiro.event.support.TypedEventListener;
|
||||||
import org.flowable.common.engine.api.delegate.event.FlowableEventListener;
|
import org.flowable.common.engine.api.delegate.event.FlowableEventListener;
|
||||||
import org.flowable.common.engine.impl.EngineDeployer;
|
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.engine.impl.rules.RulesDeployer;
|
||||||
import org.flowable.spring.SpringProcessEngineConfiguration;
|
import org.flowable.spring.SpringProcessEngineConfiguration;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
@ -38,8 +39,10 @@ public class FlowableConfig {
|
||||||
configuration.setTransactionManager(transactionManager);
|
configuration.setTransactionManager(transactionManager);
|
||||||
configuration.setDatabaseSchemaUpdate("false");
|
configuration.setDatabaseSchemaUpdate("false");
|
||||||
configuration.setAsyncExecutorActivate(true);
|
configuration.setAsyncExecutorActivate(true);
|
||||||
//开启历史数据异步保存
|
//设置历史数据保存级别
|
||||||
configuration.setAsyncHistoryEnabled(true);
|
configuration.setHistoryLevel(HistoryLevel.FULL);
|
||||||
|
//开启历史数据异步保存(这个地方是坑,开启后历史数据保存不了,暂时还不知道怎么回事,先注释了)
|
||||||
|
//configuration.setAsyncHistoryEnabled(true);
|
||||||
configuration.setProcessDiagramGenerator(customProcessDiagramGenerator);
|
configuration.setProcessDiagramGenerator(customProcessDiagramGenerator);
|
||||||
//修改id生成器
|
//修改id生成器
|
||||||
configuration.setIdGenerator(new FlowIdGenerator());
|
configuration.setIdGenerator(new FlowIdGenerator());
|
||||||
|
|
|
@ -13,12 +13,24 @@ import java.io.Serializable;
|
||||||
@Data
|
@Data
|
||||||
public class DeploymentQueryDTO extends FlowBaseDTO implements Serializable {
|
public class DeploymentQueryDTO extends FlowBaseDTO implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发布key 模糊
|
||||||
|
*/
|
||||||
private String deploymentKeyLike;
|
private String deploymentKeyLike;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发布id
|
||||||
|
*/
|
||||||
private String deploymentId;
|
private String deploymentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发布名称 模糊
|
||||||
|
*/
|
||||||
private String deploymentNameLike;
|
private String deploymentNameLike;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流程定义key 模糊
|
||||||
|
*/
|
||||||
private String processDefinitionKeyLike;
|
private String processDefinitionKeyLike;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,15 +1,10 @@
|
||||||
package com.snow.flowable.domain;
|
package com.snow.flowable.domain;
|
||||||
|
|
||||||
import com.alibaba.fastjson.annotation.JSONField;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.flowable.common.engine.api.repository.EngineResource;
|
|
||||||
import org.flowable.engine.repository.ProcessDefinition;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @program: snow
|
* @program: snow
|
||||||
|
@ -50,6 +45,17 @@ public class DeploymentVO implements Serializable {
|
||||||
/**
|
/**
|
||||||
* 版本
|
* 版本
|
||||||
*/
|
*/
|
||||||
private String engineVersion;
|
private int engineVersion;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xml
|
||||||
|
*/
|
||||||
|
private String resourceName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片
|
||||||
|
*/
|
||||||
|
private String dgrmResourceName;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
}
|
|
@ -1,13 +1,9 @@
|
||||||
package com.snow.flowable.domain;
|
package com.snow.flowable.domain;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.snow.common.utils.StringUtils;
|
import com.snow.common.utils.StringUtils;
|
||||||
import com.snow.common.utils.bean.BeanUtils;
|
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.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
@ -18,7 +14,6 @@ import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -64,7 +64,7 @@ public class SendMessageEventLister extends AbstractEventListener {
|
||||||
protected void taskCreated(FlowableEngineEntityEvent event) {
|
protected void taskCreated(FlowableEngineEntityEvent event) {
|
||||||
//任务创建可发送短信,邮件通知接收人(代办人)
|
//任务创建可发送短信,邮件通知接收人(代办人)
|
||||||
log.info("ManagerTaskEventListener----taskCreated任务创建监听:{}",JSON.toJSONString(event));
|
log.info("ManagerTaskEventListener----taskCreated任务创建监听:{}",JSON.toJSONString(event));
|
||||||
sendDingTalkMessage(event);
|
// sendDingTalkMessage(event);
|
||||||
//todo 邮件通知
|
//todo 邮件通知
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -136,6 +136,13 @@ public interface FlowableService {
|
||||||
*/
|
*/
|
||||||
List<TaskVO> getDynamicFlowNodeInfo(String processInstanceId);
|
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);
|
void getFlowableProcessImage(String processInstanceId, HttpServletResponse response);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取流程概况(流程大屏显示)
|
||||||
|
*/
|
||||||
|
FlowGeneralSituationVO getFlowGeneralSituation(String userId);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
package com.snow.flowable.service;
|
package com.snow.flowable.service;
|
||||||
|
|
||||||
import com.snow.common.core.page.PageModel;
|
import com.snow.common.core.page.PageModel;
|
||||||
import com.snow.flowable.domain.CompleteTaskDTO;
|
import com.snow.flowable.domain.*;
|
||||||
import com.snow.flowable.domain.FinishTaskDTO;
|
|
||||||
import com.snow.flowable.domain.TaskBaseDTO;
|
|
||||||
import com.snow.flowable.domain.TaskVO;
|
|
||||||
import com.snow.system.domain.SysUser;
|
import com.snow.system.domain.SysUser;
|
||||||
import org.flowable.task.api.Task;
|
import org.flowable.task.api.Task;
|
||||||
|
|
||||||
|
@ -75,8 +72,12 @@ public interface FlowableTaskService {
|
||||||
*/
|
*/
|
||||||
void delegateTask(String taskId,String curUserId,String targetUserId);
|
void delegateTask(String taskId,String curUserId,String targetUserId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 挂起或激活流程
|
||||||
|
* @param instanceId
|
||||||
|
* @param suspendState
|
||||||
|
*/
|
||||||
void suspendOrActiveApply(String instanceId, String suspendState);
|
void suspendOrActiveApply(String instanceId, String suspendState);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,7 +136,6 @@ public class FlowablePublishServiceImpl implements FlowablePublishService {
|
||||||
@Override
|
@Override
|
||||||
public Deployment createBytesDeploymentByModelId(String id) {
|
public Deployment createBytesDeploymentByModelId(String id) {
|
||||||
Model model = modelService.getModel(id);
|
Model model = modelService.getModel(id);
|
||||||
// BpmnModel bpmnModel = modelService.getBpmnModel(model);
|
|
||||||
if(StringUtils.isNull(model)){
|
if(StringUtils.isNull(model)){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -159,21 +158,21 @@ public class FlowablePublishServiceImpl implements FlowablePublishService {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
if(deploymentType==ActDeModel.MODEL_TYPE_DECISION_TABLE){
|
if(deploymentType==ActDeModel.MODEL_TYPE_DECISION_TABLE){
|
||||||
JsonNode editorJsonNode = objectMapper.readTree(model.getModelEditorJson());
|
JsonNode editorJsonNode = objectMapper.readTree(model.getModelEditorJson());
|
||||||
DmnJsonConverter dmnJsonConverter=new DmnJsonConverter();
|
DmnJsonConverter dmnJsonConverter=new DmnJsonConverter();
|
||||||
DmnDefinition dmnDefinition = dmnJsonConverter.convertToDmn(editorJsonNode, model.getId(), model.getVersion(), null);
|
DmnDefinition dmnDefinition = dmnJsonConverter.convertToDmn(editorJsonNode, model.getId(), model.getVersion(), null);
|
||||||
DmnDeployment deploy = dmnRepositoryService.createDeployment()
|
DmnDeployment deploy = dmnRepositoryService.createDeployment()
|
||||||
.name(model.getName())
|
.name(model.getName())
|
||||||
.addDmnModel(model.getName()+".dmn",dmnDefinition)
|
.addDmnModel(model.getName()+".dmn",dmnDefinition)
|
||||||
.category("system_dmn")
|
.category("system_dmn")
|
||||||
.deploy();
|
.deploy();
|
||||||
return deploy.getId();
|
return deploy.getId();
|
||||||
}else if(deploymentType==ActDeModel.MODEL_TYPE_BPMN){
|
}else if(deploymentType==ActDeModel.MODEL_TYPE_BPMN){
|
||||||
Deployment deployment = createBytesDeploymentByModelId(id);
|
Deployment deployment = createBytesDeploymentByModelId(id);
|
||||||
return deployment.getId();
|
return deployment.getId();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("deploymentByModelId is fail",e.getMessage());
|
log.error("deploymentByModelId is fail",e.getMessage());
|
||||||
throw new RuntimeException("发布流程失败");
|
throw new RuntimeException("发布流程失败");
|
||||||
|
|
|
@ -15,6 +15,7 @@ import com.snow.common.core.text.Convert;
|
||||||
import com.snow.common.enums.WorkRecordStatus;
|
import com.snow.common.enums.WorkRecordStatus;
|
||||||
import com.snow.common.exception.BusinessException;
|
import com.snow.common.exception.BusinessException;
|
||||||
import com.snow.flowable.common.constants.FlowConstants;
|
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.common.enums.FlowStatusEnum;
|
||||||
import com.snow.flowable.config.ICustomProcessDiagramGenerator;
|
import com.snow.flowable.config.ICustomProcessDiagramGenerator;
|
||||||
import com.snow.flowable.domain.*;
|
import com.snow.flowable.domain.*;
|
||||||
|
@ -205,7 +206,7 @@ public class FlowableServiceImpl implements FlowableService {
|
||||||
|
|
||||||
DeploymentQuery deploymentQuery = repositoryService.createDeploymentQuery();
|
DeploymentQuery deploymentQuery = repositoryService.createDeploymentQuery();
|
||||||
if(!StringUtils.isEmpty(deploymentQueryDTO.getDeploymentNameLike())){
|
if(!StringUtils.isEmpty(deploymentQueryDTO.getDeploymentNameLike())){
|
||||||
deploymentQuery.deploymentNameLike(deploymentQueryDTO.getDeploymentNameLike());
|
deploymentQuery.deploymentNameLike("%"+deploymentQueryDTO.getDeploymentNameLike()+"%");
|
||||||
}
|
}
|
||||||
if(!StringUtils.isEmpty(deploymentQueryDTO.getDeploymentCategory())){
|
if(!StringUtils.isEmpty(deploymentQueryDTO.getDeploymentCategory())){
|
||||||
deploymentQuery.deploymentCategory(deploymentQueryDTO.getDeploymentCategory());
|
deploymentQuery.deploymentCategory(deploymentQueryDTO.getDeploymentCategory());
|
||||||
|
@ -214,18 +215,26 @@ public class FlowableServiceImpl implements FlowableService {
|
||||||
deploymentQuery.deploymentId(deploymentQueryDTO.getDeploymentId());
|
deploymentQuery.deploymentId(deploymentQueryDTO.getDeploymentId());
|
||||||
}
|
}
|
||||||
if(!StringUtils.isEmpty(deploymentQueryDTO.getDeploymentKeyLike())){
|
if(!StringUtils.isEmpty(deploymentQueryDTO.getDeploymentKeyLike())){
|
||||||
deploymentQuery.deploymentKeyLike(deploymentQueryDTO.getDeploymentKeyLike());
|
deploymentQuery.deploymentKeyLike("%"+deploymentQueryDTO.getDeploymentKeyLike()+"%");
|
||||||
}
|
}
|
||||||
if(!StringUtils.isEmpty(deploymentQueryDTO.getProcessDefinitionKeyLike())){
|
if(!StringUtils.isEmpty(deploymentQueryDTO.getProcessDefinitionKeyLike())){
|
||||||
deploymentQuery.processDefinitionKeyLike(deploymentQueryDTO.getProcessDefinitionKeyLike());
|
deploymentQuery.processDefinitionKeyLike("%"+deploymentQueryDTO.getProcessDefinitionKeyLike()+"%");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
long count = deploymentQuery.orderByDeploymenTime().desc().
|
long count = deploymentQuery.orderByDeploymenTime().desc().
|
||||||
count();
|
count();
|
||||||
List<Deployment> deployments = deploymentQuery.orderByDeploymenTime().desc().
|
List<Deployment> deployments = deploymentQuery.orderByDeploymenTime().desc().
|
||||||
listPage(deploymentQueryDTO.getPageNum(), deploymentQueryDTO.getPageSize());
|
listPage(deploymentQueryDTO.getPageNum(), deploymentQueryDTO.getPageSize());
|
||||||
|
|
||||||
|
|
||||||
List<DeploymentVO> deploymentVoList = deployments.stream().map(t -> {
|
List<DeploymentVO> deploymentVoList = deployments.stream().map(t -> {
|
||||||
|
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(t.getId()).singleResult();
|
||||||
DeploymentVO deploymentVO = new DeploymentVO();
|
DeploymentVO deploymentVO = new DeploymentVO();
|
||||||
BeanUtils.copyProperties(t, deploymentVO);
|
BeanUtils.copyProperties(t, deploymentVO);
|
||||||
|
deploymentVO.setEngineVersion(processDefinition.getVersion());
|
||||||
|
deploymentVO.setResourceName(processDefinition.getResourceName());
|
||||||
|
deploymentVO.setDgrmResourceName(processDefinition.getDiagramResourceName());
|
||||||
return deploymentVO;
|
return deploymentVO;
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
|
@ -596,8 +605,42 @@ public class FlowableServiceImpl implements FlowableService {
|
||||||
return hisTaskVOList;
|
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
|
@Override
|
||||||
public PageModel<ProcessInstanceVO> getHistoricProcessInstance(ProcessInstanceDTO processInstanceDTO) {
|
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();
|
HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery();
|
||||||
if(!StringUtils.isEmpty(processInstanceDTO.getBusinessKey())){
|
if(!StringUtils.isEmpty(processInstanceDTO.getBusinessKey())){
|
||||||
historicProcessInstanceQuery.processInstanceBusinessKey(processInstanceDTO.getBusinessKey());
|
historicProcessInstanceQuery.processInstanceBusinessKey(processInstanceDTO.getBusinessKey());
|
||||||
|
@ -624,23 +667,8 @@ public class FlowableServiceImpl implements FlowableService {
|
||||||
historicProcessInstanceQuery.processDefinitionName(processInstanceDTO.getProcessDefinitionName());
|
historicProcessInstanceQuery.processDefinitionName(processInstanceDTO.getProcessDefinitionName());
|
||||||
}
|
}
|
||||||
historicProcessInstanceQuery.includeProcessVariables();
|
historicProcessInstanceQuery.includeProcessVariables();
|
||||||
long count = historicProcessInstanceQuery.
|
return 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 赋值ProcessInstanceVOs
|
* 赋值ProcessInstanceVOs
|
||||||
* @param 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
|
* @param bpmnModel
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
package com.snow.flowable.service.impl;
|
package com.snow.flowable.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.snow.common.core.page.PageModel;
|
import com.snow.common.core.page.PageModel;
|
||||||
import com.snow.common.exception.BusinessException;
|
import com.snow.common.exception.BusinessException;
|
||||||
import com.snow.flowable.common.constants.FlowConstants;
|
import com.snow.flowable.common.constants.FlowConstants;
|
||||||
|
import com.snow.flowable.common.enums.FlowDefEnum;
|
||||||
import com.snow.flowable.domain.*;
|
import com.snow.flowable.domain.*;
|
||||||
import com.snow.flowable.service.FlowableService;
|
import com.snow.flowable.service.FlowableService;
|
||||||
import com.snow.flowable.service.FlowableTaskService;
|
import com.snow.flowable.service.FlowableTaskService;
|
||||||
|
@ -17,20 +19,20 @@ import org.flowable.engine.HistoryService;
|
||||||
import org.flowable.engine.RuntimeService;
|
import org.flowable.engine.RuntimeService;
|
||||||
import org.flowable.engine.TaskService;
|
import org.flowable.engine.TaskService;
|
||||||
import org.flowable.engine.history.HistoricProcessInstance;
|
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.IdentityLink;
|
||||||
import org.flowable.identitylink.api.history.HistoricIdentityLink;
|
import org.flowable.identitylink.api.history.HistoricIdentityLink;
|
||||||
import org.flowable.task.api.Task;
|
import org.flowable.task.api.Task;
|
||||||
import org.flowable.task.api.TaskQuery;
|
import org.flowable.task.api.TaskQuery;
|
||||||
|
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.HashSet;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -69,7 +71,7 @@ public class FlowableTaskServiceImpl implements FlowableTaskService {
|
||||||
TaskQuery taskQuery = taskService.createTaskQuery()
|
TaskQuery taskQuery = taskService.createTaskQuery()
|
||||||
.or()
|
.or()
|
||||||
.taskCandidateOrAssigned(userId);
|
.taskCandidateOrAssigned(userId);
|
||||||
//这个地方查询回去查询系统的用户组表,希望的是查询自己的用户表
|
//这个地方查询会去查询系统的用户组表,希望的是查询自己的用户表
|
||||||
if(!CollectionUtils.isEmpty(sysRoles)) {
|
if(!CollectionUtils.isEmpty(sysRoles)) {
|
||||||
List<String> roleIds = sysRoles.stream().map(t ->
|
List<String> roleIds = sysRoles.stream().map(t ->
|
||||||
String.valueOf(t)
|
String.valueOf(t)
|
||||||
|
@ -116,7 +118,7 @@ public class FlowableTaskServiceImpl implements FlowableTaskService {
|
||||||
taskVO.setParentTaskId(t.getParentTaskId());
|
taskVO.setParentTaskId(t.getParentTaskId());
|
||||||
taskVO.setAssignee(t.getAssignee());
|
taskVO.setAssignee(t.getAssignee());
|
||||||
taskVO.setOwner(t.getOwner());
|
taskVO.setOwner(t.getOwner());
|
||||||
HistoricProcessInstance historicProcessInstance = flowableService.getHistoricProcessInstanceById(t.getProcessInstanceId());
|
ProcessInstance historicProcessInstance = flowableService.getProcessInstanceById(t.getProcessInstanceId());
|
||||||
taskVO.setProcessDefinitionName(historicProcessInstance.getProcessDefinitionName());
|
taskVO.setProcessDefinitionName(historicProcessInstance.getProcessDefinitionName());
|
||||||
String startUserId = historicProcessInstance.getStartUserId();
|
String startUserId = historicProcessInstance.getStartUserId();
|
||||||
SysUser sysUser = sysUserService.selectUserById(Long.parseLong(startUserId));
|
SysUser sysUser = sysUserService.selectUserById(Long.parseLong(startUserId));
|
||||||
|
@ -279,4 +281,6 @@ public class FlowableTaskServiceImpl implements FlowableTaskService {
|
||||||
public void suspendOrActiveApply(String instanceId, String suspendState) {
|
public void suspendOrActiveApply(String instanceId, String suspendState) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,22 +2,17 @@ package com.snow.framework.excel;
|
||||||
|
|
||||||
import com.alibaba.excel.context.AnalysisContext;
|
import com.alibaba.excel.context.AnalysisContext;
|
||||||
import com.alibaba.excel.event.AnalysisEventListener;
|
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.DateUtils;
|
||||||
import com.snow.common.utils.bean.BeanUtils;
|
import com.snow.common.utils.bean.BeanUtils;
|
||||||
import com.snow.system.domain.FinanceAlipayFlow;
|
import com.snow.system.domain.FinanceAlipayFlow;
|
||||||
import com.snow.system.domain.FinanceAlipayFlowImport;
|
import com.snow.system.domain.FinanceAlipayFlowImport;
|
||||||
import com.snow.system.domain.SysUser;
|
import com.snow.system.domain.SysUser;
|
||||||
import com.snow.system.mapper.FinanceAlipayFlowMapper;
|
|
||||||
import com.snow.system.service.IFinanceAlipayFlowService;
|
import com.snow.system.service.IFinanceAlipayFlowService;
|
||||||
import com.snow.system.service.impl.FinanceAlipayFlowServiceImpl;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import java.io.BufferedWriter;
|
|
||||||
import java.io.FileWriter;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -92,6 +87,9 @@ public class FinanceAlipayFlowListener extends AnalysisEventListener<FinanceAlip
|
||||||
saveData();
|
saveData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存数据
|
||||||
|
*/
|
||||||
public void saveData(){
|
public void saveData(){
|
||||||
|
|
||||||
List<FinanceAlipayFlow> financeAlipayFlowList = list.stream().map(t -> {
|
List<FinanceAlipayFlow> financeAlipayFlowList = list.stream().map(t -> {
|
||||||
|
@ -148,30 +146,9 @@ public class FinanceAlipayFlowListener extends AnalysisEventListener<FinanceAlip
|
||||||
String tradeType = t.getTradeType();
|
String tradeType = t.getTradeType();
|
||||||
if (StringUtils.isEmpty(tradeType)) {
|
if (StringUtils.isEmpty(tradeType)) {
|
||||||
financeAlipayFlow.setTradeType(null);
|
financeAlipayFlow.setTradeType(null);
|
||||||
} else if (tradeType.equals("即时到账交易")) {
|
}else {
|
||||||
financeAlipayFlow.setTradeType(1);
|
Integer financeTradeTypeCode = FinanceTradeType.getFinanceTradeTypeCode(tradeType);
|
||||||
} else if (tradeType.equals("支付宝担保交易")) {
|
financeAlipayFlow.setTradeType(financeTradeTypeCode);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
financeAlipayFlow.setCreateBy(sysUser.getUserName());
|
financeAlipayFlow.setCreateBy(sysUser.getUserName());
|
||||||
financeAlipayFlow.setBelongUserId(sysUser.getUserId());
|
financeAlipayFlow.setBelongUserId(sysUser.getUserId());
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.snow.system.domain;
|
package com.snow.system.domain;
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.snow.common.core.domain.BaseEntity;
|
import com.snow.common.core.domain.BaseEntity;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -31,14 +32,17 @@ public class FinanceAlipayFlow extends BaseEntity
|
||||||
|
|
||||||
/** 交易创建时间 */
|
/** 交易创建时间 */
|
||||||
@ExcelProperty(index = 3)
|
@ExcelProperty(index = 3)
|
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private Date tradeCreateTime;
|
private Date tradeCreateTime;
|
||||||
|
|
||||||
/** 交易支付时间 */
|
/** 交易支付时间 */
|
||||||
@ExcelProperty(index = 4)
|
@ExcelProperty(index = 4)
|
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private Date payTime;
|
private Date payTime;
|
||||||
|
|
||||||
/** 最近修改时间 */
|
/** 最近修改时间 */
|
||||||
@ExcelProperty(index = 5)
|
@ExcelProperty(index = 5)
|
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private Date lastModifyTime;
|
private Date lastModifyTime;
|
||||||
|
|
||||||
/** 交易来源地 */
|
/** 交易来源地 */
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -2,6 +2,7 @@ package com.snow.system.service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import com.snow.system.domain.FinanceAlipayFlow;
|
import com.snow.system.domain.FinanceAlipayFlow;
|
||||||
|
import com.snow.system.domain.FinanceBillSituationVO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 财务支付宝流水Service接口
|
* 财务支付宝流水Service接口
|
||||||
|
@ -65,4 +66,11 @@ public interface IFinanceAlipayFlowService
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int deleteFinanceAlipayFlowById(Long id);
|
public int deleteFinanceAlipayFlowById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取账单消费概况
|
||||||
|
* @param userId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public FinanceBillSituationVO getFinanceAlipayFlowSituation(Long userId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.snow.system.service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import com.snow.system.domain.SysDingtalkSyncLog;
|
import com.snow.system.domain.SysDingtalkSyncLog;
|
||||||
|
import com.snow.system.domain.SysDingtalkSyncSituationVO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 钉钉同步日志记录Service接口
|
* 钉钉同步日志记录Service接口
|
||||||
|
@ -58,4 +59,9 @@ public interface ISysDingtalkSyncLogService
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int deleteSysDingtalkSyncLogById(Long logId);
|
public int deleteSysDingtalkSyncLogById(Long logId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取钉钉同步数据概况
|
||||||
|
*/
|
||||||
|
public SysDingtalkSyncSituationVO getSysDingtalkSyncSituation(SysDingtalkSyncLog sysDingtalkSyncLog);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,19 +1,20 @@
|
||||||
package com.snow.system.service.impl;
|
package com.snow.system.service.impl;
|
||||||
|
|
||||||
import java.util.List;
|
import com.snow.common.core.text.Convert;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import com.snow.common.enums.FinanceTradeType;
|
||||||
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
|
||||||
|
|
||||||
import com.snow.common.utils.DateUtils;
|
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.domain.SysUser;
|
||||||
|
import com.snow.system.mapper.FinanceAlipayFlowMapper;
|
||||||
import com.snow.system.mapper.SysUserMapper;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.snow.system.mapper.FinanceAlipayFlowMapper;
|
|
||||||
import com.snow.system.domain.FinanceAlipayFlow;
|
import java.math.BigDecimal;
|
||||||
import com.snow.system.service.IFinanceAlipayFlowService;
|
import java.util.List;
|
||||||
import com.snow.common.core.text.Convert;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 财务支付宝流水Service业务层处理
|
* 财务支付宝流水Service业务层处理
|
||||||
|
@ -112,4 +113,64 @@ public class FinanceAlipayFlowServiceImpl implements IFinanceAlipayFlowService
|
||||||
{
|
{
|
||||||
return financeAlipayFlowMapper.deleteFinanceAlipayFlowById(id);
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
package com.snow.system.service.impl;
|
package com.snow.system.service.impl;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.snow.system.mapper.SysDingtalkSyncLogMapper;
|
import com.snow.system.mapper.SysDingtalkSyncLogMapper;
|
||||||
|
@ -94,4 +98,36 @@ public class SysDingtalkSyncLogServiceImpl implements ISysDingtalkSyncLogService
|
||||||
{
|
{
|
||||||
return sysDingtalkSyncLogMapper.deleteSysDingtalkSyncLogById(logId);
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
2890
sql/ruoyi.html
4851
sql/ruoyi.pdm
|
@ -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 = '代码生成业务表字段';
|
|