导入规则开发

dev
zjh 1 year ago
parent 10d35102cf
commit 1ec7e82852
  1. 11
      ant-design-vue-jeecg/src/views/modulex/ModulexList.vue
  2. 10153
      jeecg-boot/db/project_management.sql
  3. 18
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/entity/RuleVo.java
  4. 4
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/mapper/RulexMapper.java
  5. 2
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/service/IRulexService.java
  6. 5
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/util/DateValidator.java
  7. 27
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/util/DateValidatorUsingDateFormat.java
  8. 2
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictController.java
  9. 329
      jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml

@ -70,9 +70,11 @@
<!-- 操作按钮区域 --> <!-- 操作按钮区域 -->
<div class="table-operator"> <div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button> <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="import">导入模块</a-button> <a-button type="primary" icon="import">导入模块</a-button>
<a-button type="primary" icon="import">导入功能</a-button> <a-button type="primary" icon="import">导入功能</a-button>
<a-button type="primary" icon="import">导入规则</a-button> <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="ruleImportExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入规则</a-button>
</a-upload>
<a-button type="primary" icon="import">导入实体</a-button> <a-button type="primary" icon="import">导入实体</a-button>
<a-button type="primary" icon="import">导入字段</a-button> <a-button type="primary" icon="import">导入字段</a-button>
<a-button @click="fanhui" type="primary" icon="rollback">返回</a-button> <a-button @click="fanhui" type="primary" icon="rollback">返回</a-button>
@ -393,7 +395,7 @@ export default {
deleteBatch: "/modulex/modulex/deleteBatch", deleteBatch: "/modulex/modulex/deleteBatch",
exportXlsUrl: "/modulex/modulex/exportXls", exportXlsUrl: "/modulex/modulex/exportXls",
importExcelUrl: "modulex/modulex/importExcel", importExcelUrl: "modulex/modulex/importExcel",
ruleImportExcelUrl: "rulex/rulex/importExcel",
}, },
dictOptions: {}, dictOptions: {},
superFieldList: [], superFieldList: [],
@ -415,6 +417,9 @@ export default {
importExcelUrl: function () { importExcelUrl: function () {
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
}, },
ruleImportExcelUrl: function () {
return `${window._CONFIG['domianURL']}/${this.url.ruleImportExcelUrl}`
},
// columnsdataIndex // columnsdataIndex
checkColumn: function () { checkColumn: function () {
return this.columns.map(item => item.title) return this.columns.map(item => item.title)

File diff suppressed because one or more lines are too long

@ -8,7 +8,7 @@ import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel; import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict; //import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -63,14 +63,14 @@ public class RuleVo implements Serializable {
*/ */
@Excel(name = "对应模块id", width = 15) @Excel(name = "对应模块id", width = 15)
@ApiModelProperty(value = "对应模块id") @ApiModelProperty(value = "对应模块id")
@Dict(dictTable = "modulex", dicCode = "id", dicText = "module_name") // /*@Dict(dictTable = "modulex", dicCode = "id", dicText = "module_name")*/
private java.lang.String moduleId; private java.lang.String moduleId;
/** /**
* 对应功能id * 对应功能id
*/ */
@Excel(name = "对应功能id", width = 15) @Excel(name = "对应功能id", width = 15)
@ApiModelProperty(value = "对应功能id") @ApiModelProperty(value = "对应功能id")
@Dict(dictTable = "functionx", dicCode = "id", dicText = "function_name") // /*@Dict(dictTable = "functionx", dicCode = "id", dicText = "function_name")*/
private java.lang.String functionId; private java.lang.String functionId;
/** /**
* 规则序号 * 规则序号
@ -101,14 +101,14 @@ public class RuleVo implements Serializable {
*/ */
@Excel(name = "对应实体id", width = 15) @Excel(name = "对应实体id", width = 15)
@ApiModelProperty(value = "对应实体id") @ApiModelProperty(value = "对应实体id")
@Dict(dictTable = "tablex", dicText = "table_name", dicCode = "id") // @Dict(dictTable = "tablex", dicText = "table_name", dicCode = "id")
private java.lang.String tableId; private java.lang.String tableId;
/** /**
* 对应字段 * 对应字段
*/ */
@Excel(name = "对应字段", width = 15) @Excel(name = "对应字段", width = 15)
@ApiModelProperty(value = "对应字段") @ApiModelProperty(value = "对应字段")
@Dict(dictTable = "fieldx", dicText = "field_name", dicCode = "id") // @Dict(dictTable = "fieldx", dicText = "field_name", dicCode = "id")
private java.lang.String fieldId; private java.lang.String fieldId;
/** /**
* 责任人 * 责任人
@ -121,14 +121,14 @@ public class RuleVo implements Serializable {
*/ */
@Excel(name = "任务等级", width = 15) @Excel(name = "任务等级", width = 15)
@ApiModelProperty(value = "任务等级") @ApiModelProperty(value = "任务等级")
@Dict(dicCode = "work_level") // @Dict(dicCode = "work_level")
private String workLevel; private String workLevel;
/** /**
* 任务状态 * 任务状态
*/ */
@Excel(name = "任务状态", width = 15) @Excel(name = "任务状态", width = 15)
@ApiModelProperty(value = "任务状态") @ApiModelProperty(value = "任务状态")
@Dict(dicCode = "work_status") // @Dict(dicCode = "work_status")
private String workStatus; private String workStatus;
/** /**
* 开始时间 * 开始时间
@ -163,14 +163,14 @@ public class RuleVo implements Serializable {
*/ */
@Excel(name = "规则状态", width = 15) @Excel(name = "规则状态", width = 15)
@ApiModelProperty(value = "规则状态") @ApiModelProperty(value = "规则状态")
@Dict(dicCode = "status") // @Dict(dicCode = "status")
private String status; private String status;
/** /**
* 版本状态 * 版本状态
*/ */
@Excel(name = "版本状态", width = 15) @Excel(name = "版本状态", width = 15)
@ApiModelProperty(value = "版本状态") @ApiModelProperty(value = "版本状态")
@Dict(dicCode = "verison_status") // @Dict(dicCode = "verison_status")
private String verisonStatus; private String verisonStatus;
/** /**
* 版本号 * 版本号

@ -28,4 +28,8 @@ public interface RulexMapper extends BaseMapper<Rulex> {
void upFstatus(String ruleId); void upFstatus(String ruleId);
@Update("update modulex set work_status=9 where id=#{ruleId}") @Update("update modulex set work_status=9 where id=#{ruleId}")
void upMstatus(String ruleId); void upMstatus(String ruleId);
//校验rule_no规则序号
@Select("select rule_no from rulex where function_id=#{function_id}")
List<String> checkRuleNo(String function_id);
} }

@ -18,4 +18,6 @@ public interface IRulexService extends IService<Rulex> {
Result<?> sort(String id); Result<?> sort(String id);
List<Rulex> queryRuleListByFunctionId(Functionx functionx); List<Rulex> queryRuleListByFunctionId(Functionx functionx);
} }

@ -0,0 +1,5 @@
package org.jeecg.modules.demo.rulex.util;
public interface DateValidator {
boolean isValid(String dateStr);
}

@ -0,0 +1,27 @@
package org.jeecg.modules.demo.rulex.util;
import org.jeecg.modules.demo.rulex.util.DateValidator;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class DateValidatorUsingDateFormat implements DateValidator {
private final String dateFormat;
public DateValidatorUsingDateFormat(String dateFormat) {
this.dateFormat = dateFormat;
}
@Override
public boolean isValid(String dateStr) {
final DateFormat sdf = new SimpleDateFormat(this.dateFormat);
sdf.setLenient(false);
try {
sdf.parse(dateStr);
} catch (ParseException e) {
return false;
}
return true;
}
}

@ -489,7 +489,7 @@ public class SysDictController {
params.setHeadRows(2); params.setHeadRows(2);
params.setNeedSave(true); params.setNeedSave(true);
try { try {
//导入Excel格式校验,看匹配的字段文本概率 // 导入Excel格式校验,看匹配的字段文本概率
Boolean t = ExcelImportCheckUtil.check(file.getInputStream(), SysDictPage.class, params); Boolean t = ExcelImportCheckUtil.check(file.getInputStream(), SysDictPage.class, params);
if(!t){ if(!t){
throw new RuntimeException("导入Excel校验失败 !"); throw new RuntimeException("导入Excel校验失败 !");

@ -1,329 +0,0 @@
server:
port: 18081
max-http-header-size: 65546
tomcat:
max-swallow-size: -1
error:
include-exception: true
include-stacktrace: ALWAYS
include-message: ALWAYS
servlet:
context-path: /jeecg-boot
compression:
enabled: true
min-response-size: 1024
mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
management:
endpoints:
web:
exposure:
include: metrics,httptrace
spring:
servlet:
multipart:
max-file-size: 1024MB
max-request-size: 1024MB
# mail:
# host: smtp.163.com
# username: jeecgos@163.com
# password: ??
# properties:
# mail:
# smtp:
# auth: true
# starttls:
# enable: true
# required: true
## quartz定时任务,采用数据库方式
# quartz:
# job-store-type: jdbc
# initialize-schema: embedded
# #设置自动启动,默认为 true
# auto-startup: true
# #启动时更新己存在的Job
# overwrite-existing-jobs: true
# properties:
# org:
# quartz:
# scheduler:
# instanceName: MyScheduler
# instanceId: AUTO
# jobStore:
# class: org.quartz.impl.jdbcjobstore.JobStoreTX
# driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
# tablePrefix: QRTZ_
# isClustered: true
# misfireThreshold: 60000
# clusterCheckinInterval: 10000
# threadPool:
# class: org.quartz.simpl.SimpleThreadPool
# threadCount: 10
# threadPriority: 5
# threadsInheritContextClassLoaderOfInitializingThread: true
#json 时间戳统一转换
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
jpa:
open-in-view: false
activiti:
check-process-definitions: false
#启用作业执行器
async-executor-activate: false
#启用异步执行器
job-executor-activate: false
aop:
proxy-target-class: true
#配置freemarker
freemarker:
# 设置模板后缀名
suffix: .ftl
# 设置文档类型
content-type: text/html
# 设置页面编码格式
charset: UTF-8
# 设置页面缓存
cache: false
prefer-file-system-access: false
# 设置ftl文件路径
template-loader-path:
- classpath:/templates
# 设置静态文件路径,js,css等
mvc:
static-path-pattern: /**
resource:
static-locations: classpath:/static/,classpath:/public/
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource:
druid:
stat-view-servlet:
enabled: true
loginUsername: admin
loginPassword: 123456
allow:
web-stat-filter:
enabled: true
dynamic:
druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
# 连接池的配置信息
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,slf4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
datasource:
master:
# url: jdbc:mysql://mysql-lee.mysql.rds.aliyuncs.com:3306/zy?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
# username: root1
# password: zxcvbnm023@lee
# driver-class-name: com.mysql.cj.jdbc.Driver
# 多数据源配置
#multi-datasource1:
url: jdbc:mysql://182.92.169.222:3306/project_management?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
password: ycwl2022.
driver-class-name: com.mysql.cj.jdbc.Driver
#redis 配置
redis:
database: 2
host: 127.0.0.1
lettuce:
pool:
max-active: 8 #最大连接数据库连接数,设 -1 为没有限制
max-idle: 8 #最大等待连接中的数量,设 0 为没有限制
max-wait: -1ms #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
min-idle: 0 #最小等待连接中的数量,设 0 为没有限制
shutdown-timeout: 100ms
password:
port: 6379
# password: 'zy2021zy'
# port: 7480
#mybatis plus 设置
mybatis-plus:
mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml
global-config:
# 关闭MP3.0自带的banner
banner: false
db-config:
#主键类型 0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
id-type: ASSIGN_ID
# 默认数据库表下划线命名
table-underline: true
configuration:
# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 返回类型为Map,显示null对应的字段
call-setters-on-nulls: true
#jeecg专用配置
minidao:
base-package: org.jeecg.modules.jmreport.*
#DB类型(mysql | postgresql | oracle | sqlserver| other)
db-type: mysql
jeecg:
wordPath: /opt/word
# 本地:local\Minio:minio\阿里云:alioss
uploadType: local
path:
#文件上传根目录 设置
upload: /opt/upFiles
#webapp文件路径
webapp: /opt/webapp
shiro:
excludeUrls: /VideoRecorder/jeecgDemo/demo3,/VideoRecorder/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**
#阿里云oss存储和大鱼短信秘钥配置
oss:
accessKey: ??
secretKey: ??
endpoint: oss-cn-beijing.aliyuncs.com
bucketName: ??
# ElasticSearch 6设置
elasticsearch:
cluster-name: jeecg-ES
cluster-nodes: 127.0.0.1:9200
check-enabled: false
# 表单设计器配置
desform:
# 主题颜色(仅支持 16进制颜色代码)
theme-color: "#1890ff"
# 文件、图片上传方式,可选项:qiniu(七牛云)、system(跟随系统配置)
upload-type: system
map:
# 配置百度地图的AK,申请地址:https://lbs.baidu.com/apiconsole/key?application=key#/home
baidu: ??
# 在线预览文件服务器地址配置
file-view-domain: 127.0.0.1:8012
# minio文件上传
minio:
minio_url: http://minio.jeecg.com
minio_name: ??
minio_pass: ??
bucketName: otatest
#大屏报表参数设置
jmreport:
mode: dev
#数据字典是否进行saas数据隔离,自己看自己的字典
saas: false
#是否需要校验token
is_verify_token: true
#必须校验方法
verify_methods: remove,delete,save,add,update
#Wps在线文档
wps:
domain: https://wwo.wps.cn/office/
appid: ??
appsecret: ??
#xxl-job配置
xxljob:
enabled: false
adminAddresses: http://127.0.0.1:9080/xxl-job-admin
appname: ${spring.application.name}
accessToken: ''
address: 127.0.0.1:30007
ip: 127.0.0.1
port: 30007
logPath: logs/jeecg/job/jobhandler/
logRetentionDays: 30
#自定义路由配置 yml nacos database
route:
config:
data-id: jeecg-gateway-router
group: DEFAULT_GROUP
data-type: yml
#分布式锁配置
redisson:
address: 127.0.0.1:6379
password:
type: STANDALONE
enabled: true
#cas单点登录
cas:
prefixUrl: http://cas.example.org:8443/cas
#Mybatis输出sql日志
logging:
level:
org.jeecg.modules.system.mapper: info
#swagger
knife4j:
production: false
basic:
enable: true
username: jeecg
password: jeecg1314
#第三方登录
justauth:
enabled: true
type:
GITHUB:
client-id: ??
client-secret: ??
redirect-uri: http://sso.VideoRecorder.com:8080/jeecg-boot/sys/thirdLogin/github/callback
WECHAT_ENTERPRISE:
client-id: ??
client-secret: ??
redirect-uri: http://sso.VideoRecorder.com:8080/jeecg-boot/sys/thirdLogin/wechat_enterprise/callback
agent-id: ??
DINGTALK:
client-id: ??
client-secret: ??
redirect-uri: http://sso.VideoRecorder.com:8080/jeecg-boot/sys/thirdLogin/dingtalk/callback
WECHAT_OPEN:
client-id: ??
client-secret: ??
redirect-uri: http://sso.VideoRecorder.com:8080/jeecg-boot/sys/thirdLogin/wechat_open/callback
cache:
type: default
prefix: 'demo::'
timeout: 1h
#第三方APP对接
third-app:
enabled: false
type:
#企业微信
WECHAT_ENTERPRISE:
enabled: false
#CORP_ID
client-id: ??
#SECRET
client-secret: ??
#自建应用id
agent-id: ??
#自建应用秘钥(新版企微需要配置)
# agent-app-secret: ??
#钉钉
DINGTALK:
enabled: false
# appKey
client-id: ??
# appSecret
client-secret: ??
agent-id: ??
mq:
pay:
exchange:
order: exchange.order
returnorder: exchange.returnorder
queue:
order: queue.order
returnorder: queue.returnorder
routing:
key: queue.order
returnorder: queue.returnorder
Loading…
Cancel
Save