Compare commits

...

197 Commits

Author SHA1 Message Date
caixiang
60a46c3248 更新 UTC 时间 转成 GMT+8 东八区时间 2024-01-22 14:57:26 +08:00
caixiang
ed054a2bf2 瑞昌SPC - 定版 2024-01-19 10:14:16 +08:00
caixiang
6ebe466df1 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC 2023-06-25 16:40:52 +08:00
caixiang
bc685ccf45 commit for pull 2023-06-25 16:40:38 +08:00
e4b8d773af Merge pull request 'yanyang' (#20) from yanyang into master
Reviewed-on: #20
2023-06-25 16:36:43 +08:00
32647c035c CommonField 2023-06-25 16:34:35 +08:00
9546ceec03 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC into yanyang 2023-06-25 15:29:24 +08:00
3a583ac09f 通用作业 检验时间 2023-06-25 15:28:23 +08:00
caixiang
fced72a94f mark 2023-06-21 14:12:07 +08:00
caixiang
e149150b1d mark 2023-05-30 16:07:24 +08:00
caixiang
3d5e5e5845 mark 2023-05-30 15:52:00 +08:00
caixiang
5a9f5ee38b mark 2023-05-09 14:24:13 +08:00
caixiang
7c21dfe8e1 初定 第一版 2023-01-13 11:01:42 +08:00
caixiang
2bc72469a0 初定 第一版 2023-01-11 15:58:24 +08:00
caixiang
cafcdd65e0 初定 第一版 2023-01-09 16:57:52 +08:00
cc5848e5cd Merge pull request 'yanyang' (#19) from yanyang into master
Reviewed-on: #19
2023-01-06 16:37:27 +08:00
445c7c0c3f Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC into yanyang 2023-01-06 16:36:41 +08:00
214f0a8ec9 新增查询 2023-01-06 16:36:19 +08:00
caixiang
74aaf857f0 mark 2023-01-06 16:21:09 +08:00
caixiang
353471b1f7 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC 2023-01-04 09:14:04 +08:00
caixiang
23aa6d5f89 commit for pull 2023-01-04 09:13:34 +08:00
ea70ac4a6b Merge pull request 'fix' (#18) from yanyang into master
Reviewed-on: #18
2023-01-04 09:11:04 +08:00
b6990dc4a0 fix 2023-01-04 09:10:19 +08:00
caixiang
8b14c369fb Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC 2023-01-03 16:29:29 +08:00
caixiang
c1d37a3dbc commit for pull 2023-01-03 16:29:18 +08:00
5e32971f26 Merge pull request 'yanyang' (#17) from yanyang into master
Reviewed-on: #17
2023-01-03 16:26:30 +08:00
1ce177ab5d Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC into yanyang 2023-01-03 16:25:43 +08:00
8b4e6b116e 特性类型样本大小 2023-01-03 16:25:35 +08:00
caixiang
9b545a9a03 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC
# Conflicts:
#	ym-process-inspection/src/main/java/com/cnbm/processInspection/controller/InspectionSheetController.java
2023-01-03 09:24:49 +08:00
caixiang
c75c89cab9 commit for pull 2023-01-03 09:24:12 +08:00
04e8cc187a Merge pull request 'influx参数覆盖' (#16) from yanyang into master
Reviewed-on: #16
2022-12-28 10:33:12 +08:00
add0eea2ac influx参数覆盖 2022-12-28 10:31:27 +08:00
caixiang
69f911c07c Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC 2022-12-13 11:00:15 +08:00
caixiang
5e8110ad2c Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC 2022-12-12 16:08:49 +08:00
caixiang
7e3e028eb0 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC 2022-12-12 16:08:43 +08:00
37f0dbe548 Merge pull request 'yanyang' (#15) from yanyang into master
Reviewed-on: #15
2022-12-12 16:02:45 +08:00
b501e8cd98 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC into yanyang 2022-12-12 16:01:51 +08:00
98baf93cff 样本排序 2022-12-12 16:01:43 +08:00
caixiang
ff63c194ee 新增 influxdb 多条件查询 2022-12-12 11:12:01 +08:00
1173d670e4 Merge pull request '时间类型修改' (#14) from yanyang into master
Reviewed-on: #14
2022-12-09 17:01:11 +08:00
c7c43cd906 时间类型修改 2022-12-09 17:00:02 +08:00
caixiang
1798ba8d1d Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC
 Conflicts:
	ym-process-inspection/src/main/java/com/cnbm/processInspection/controller/InspectionSheetController.java
2022-12-09 15:31:47 +08:00
caixiang
652812d3ba commit for pull 2022-12-09 15:31:32 +08:00
1562854e59 Merge pull request 'yanyang' (#13) from yanyang into master
Reviewed-on: #13
2022-12-09 15:29:26 +08:00
d03a3e06a3 MARK 2022-12-09 15:27:11 +08:00
c9d01c9e11 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC into yanyang 2022-12-09 09:08:12 +08:00
caixiang
de3fe9b95c mark 2022-12-09 09:06:52 +08:00
caixiang
53f0c58507 mark 2022-12-08 17:21:28 +08:00
95a82b042d Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC into yanyang 2022-12-08 16:26:28 +08:00
b15ad64d76 MARK FOR PULL 2022-12-08 16:26:17 +08:00
caixiang
bf67380718 mark 2022-12-08 16:17:15 +08:00
caixiang
b93869c4a1 修改 influxdb query函数 2022-12-08 15:28:10 +08:00
6829169a4a Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC into yanyang
 Conflicts:
	ym-influx/src/main/java/com/cnbm/influx/config/InfluxClient.java
2022-12-07 16:58:35 +08:00
caixiang
2d9b0ea1f1 修改 influxdb query函数 2022-12-07 16:56:47 +08:00
0e3f0f9168 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC into yanyang 2022-12-07 11:07:41 +08:00
b515eacbab MARK FOR PULL 2022-12-07 11:07:31 +08:00
caixiang
515df64760 修改判读方案算法 2022-12-07 11:05:27 +08:00
ab35b10130 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC into yanyang
 Conflicts:
	ym-influx/src/main/java/com/cnbm/influx/config/InfluxClient.java
	ym-influx/src/main/java/com/cnbm/influx/controller/S7DemoController.java
	ym-influx/src/main/java/com/cnbm/influx/template/Event.java
2022-12-01 15:54:41 +08:00
4864545f12 m 2022-12-01 15:50:30 +08:00
caixiang
f7712f184a 修改判读方案算法 2022-12-01 15:33:57 +08:00
caixiang
8bfcaaf429 修改判读方案算法 2022-12-01 11:45:05 +08:00
caixiang
650e9a2324 修改判读方案算法 2022-11-29 11:11:07 +08:00
caixiang
a2d91083f2 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC 2022-11-25 10:12:40 +08:00
caixiang
bd9276036b mark for pull 2022-11-25 10:12:33 +08:00
8a4f0094a1 Merge pull request 'm' (#12) from yanyang into master
Reviewed-on: #12
2022-11-25 10:07:32 +08:00
1b9c3499a3 m 2022-11-25 10:06:25 +08:00
e6b5583d05 Merge pull request '质量计划' (#11) from yanyang into master
Reviewed-on: #11
2022-09-30 08:56:37 +08:00
a3cc4df25c 质量计划 2022-09-30 08:54:33 +08:00
7abcafb93d Merge pull request 'yanyang' (#10) from yanyang into master
Reviewed-on: #10
2022-09-15 09:57:14 +08:00
559e76f6fb Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC into yanyang 2022-09-15 09:56:11 +08:00
fb65441dcc basic 2022-09-15 09:55:49 +08:00
dda48c610f Merge pull request 'yanyang' (#9) from yanyang into master
Reviewed-on: #9
2022-09-02 16:23:12 +08:00
c0ce68f5b2 config 2022-09-02 16:21:20 +08:00
0fb22fa625 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC into yanyang
 Conflicts:
	ym-generator/src/main/java/com/cnbm/generator/build/CodeGenerator.java
2022-08-23 15:13:13 +08:00
db901ef527 m 2022-08-23 15:12:46 +08:00
96f9808e02 质量规划 2022-08-23 15:02:24 +08:00
caixiang
60b7c940fa Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC
 Conflicts:
	ym-generator/src/main/java/com/cnbm/generator/build/CodeGenerator.java
2022-08-23 14:47:23 +08:00
caixiang
0b4f717fa8 mark for pull 2022-08-23 14:46:51 +08:00
aa41bf403d Merge pull request 'yanyang' (#8) from yanyang into master
Reviewed-on: #8
2022-08-09 15:25:36 +08:00
848eb60f43 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC into yanyang 2022-08-09 15:22:31 +08:00
d9c13516cb mark 2022-08-09 15:22:21 +08:00
63f3f98ca8 mark 2022-08-09 15:19:26 +08:00
16a52e69c8 mark 2022-08-09 15:16:12 +08:00
caixiang
d22b778b8a Merge branch 'master' of http://git.picaiba.com/kszny/ym-pass
 Conflicts:
	ym-admin/src/main/java/com/cnbm/admin/config/SecurityConfig.java
	ym-gateway/src/main/resources/application.yml
	ym-generator/src/main/java/com/cnbm/generator/build/CodeGenerator.java
2022-08-09 14:58:48 +08:00
caixiang
61dbaf92e1 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC 2022-08-09 14:58:05 +08:00
caixiang
01c95bfe1d mark for pull 2022-08-09 14:57:55 +08:00
weihongyang
f5988be736 feat:新增退出功能 2022-08-09 14:21:05 +08:00
weihongyang
78fa6f42b0 🐛 fix:修复序列化问题 2022-08-09 11:05:44 +08:00
weihongyang
030abafd1f fix: 🐛修改分页不生效问题 2022-08-08 16:36:53 +08:00
weihongyang
16e656d820 feat: 增加操作日志的操作人和操作时间 2022-08-08 10:01:52 +08:00
weihongyang
c0f460e1e4 feat: 增加登录日志接口 2022-08-08 09:53:41 +08:00
b1a9c6e77c Merge pull request 'jh' (#7) from yanyang into master
Reviewed-on: #7
2022-08-05 16:48:33 +08:00
73efee55e7 jh 2022-08-05 16:46:33 +08:00
959b1a0b77 Merge pull request 'mapper' (#6) from yanyang into master
Reviewed-on: #6
2022-08-03 16:54:20 +08:00
ba88da6982 mapper 2022-08-03 16:53:24 +08:00
314380cd74 Merge pull request 'yanyang' (#5) from yanyang into master
Reviewed-on: #5
2022-08-01 13:54:40 +08:00
1b01150a7e Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC into yanyang
 Conflicts:
	ym-baisc/src/main/java/com/cnbm/basic/controller/ProductController.java
2022-08-01 13:44:25 +08:00
e9e0c47536 mark 2022-08-01 13:44:01 +08:00
caixiang
0750c9583e mark 2022-08-01 13:42:54 +08:00
caixiang
e9c8f7857b 新增:XMR 控制图 2022-07-29 16:56:35 +08:00
caixiang
227a27295d Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC 2022-07-29 14:23:19 +08:00
caixiang
2d1ef3d743 mark for pull 2022-07-29 14:23:13 +08:00
46b6e5e66e Merge pull request '数据库字段更改' (#4) from yanyang into master
Reviewed-on: #4
2022-07-29 14:22:20 +08:00
bac1ec5b70 数据库字段更改 2022-07-29 14:19:35 +08:00
caixiang
8a3a037bda mark 2022-07-29 10:38:43 +08:00
caixiang
e7a542d386 新增 MR MS 控制图 2022-07-29 10:28:14 +08:00
caixiang
fde6a8b684 mark 2022-07-27 20:04:38 +08:00
caixiang
d26600892f mark 2022-07-25 16:58:55 +08:00
weihongyang
3a91f8b8fe vscode测试 2022-07-25 16:57:49 +08:00
caixiang
1477d05a69 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC
 Conflicts:
	ym-baisc/src/main/java/com/cnbm/basic/controller/FactoryController.java
	ym-influx/src/main/java/com/cnbm/influx/Main.java
2022-07-21 09:50:48 +08:00
caixiang
f498afd856 mark for pull 2022-07-21 09:50:01 +08:00
4cfd541f06 Merge pull request 'status' (#3) from yanyang into master
Reviewed-on: #3
2022-07-21 09:49:21 +08:00
297d5f04ea Merge branch 'master' into yanyang 2022-07-21 09:49:17 +08:00
f44f701dad status 2022-07-21 09:47:38 +08:00
c3460f6dc4 Merge pull request 'yanyang' (#2) from yanyang into master
Reviewed-on: #2
2022-07-20 15:58:37 +08:00
caixiang
23b5ce90c9 Merge branch 'yanyang' of http://git.picaiba.com/CaiXiang/SPC 2022-07-20 15:33:46 +08:00
caixiang
2b34011129 mark for pull 2022-07-20 15:33:30 +08:00
3a77498965 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC into yanyang
 Conflicts:
	ym-baisc/src/main/java/com/cnbm/basic/mapper/ProductTypeMapper.java
2022-07-20 15:30:30 +08:00
3bd383a347 mark 2022-07-20 15:29:54 +08:00
718ad8a8c2 product_features表 2022-07-20 15:14:39 +08:00
caixiang
13020d05c9 新增判读方案 2022-07-15 17:15:42 +08:00
caixiang
970359823b 新增判读方案 2022-07-13 16:41:43 +08:00
weihongyang
0f239f7978 feat: 增加db的mysql文件的里面表的删除标识字段 2022-07-05 16:16:31 +08:00
weihongyang
e9a39ae11b fix: 🐛修改字典数据controller的bug 2022-07-05 16:05:03 +08:00
weihongyang
d3e337d622 fix: 🎨修改controller的vm模版 2022-07-05 15:25:50 +08:00
于连琛
1830bb64ea test 2022-07-05 11:17:35 +08:00
f154d361a8 feat: 基础信息工具类
新增和修改时快速设置通用列
2022-07-05 10:45:06 +08:00
cd1d203d87 feat: 逻辑删除
逻辑删除实现,修改了生成器和yml
2022-07-05 10:44:09 +08:00
于连琛
0dc10a669f test 2022-07-05 09:52:58 +08:00
caixiang
facfe5c7a2 Merge branch 'master' of http://git.picaiba.com/CaiXiang/SPC 2022-07-04 14:49:53 +08:00
caixiang
d3500d195b mark for influx 2022-07-04 14:49:49 +08:00
weihongyang
8159ffc509 feat: 🔧 新增swagger配置让swagger和actuator无冲突 2022-07-04 09:54:08 +08:00
caixiang
e5def9fb33 mark 2022-07-04 08:32:21 +08:00
weihongyang
1f85905317 feat: 📝新增README文档 2022-07-01 14:49:50 +08:00
weihongyang
ccedf0ab5c fix: 🐛修改mapper xml的模板 2022-06-30 16:28:28 +08:00
caixiang
4c2e20bf0d 删掉了 ,spc不需要的模块 2022-06-30 15:28:19 +08:00
caixiang
c15c0e1f1c Merge branch 'master' of http://git.picaiba.com/why/ym
 Conflicts:
	pom.xml
	ym-gateway/src/main/java/com/cnbm/config/SwaggerConfig.java
	ym-generator/src/main/java/com/cnbm/generator/build/CodeGenerator.java
2022-06-30 11:49:31 +08:00
weihongyang
e4bfce9df3 fix: 🔧 2022-06-30 08:40:59 +08:00
weihongyang
3a090fb584 feat: 添加websocket模块之后maven必要添加 2022-06-29 16:33:10 +08:00
weihongyang
e277f2a32e feat: 给websocket的请求放行 2022-06-29 16:32:20 +08:00
weihongyang
6d792317dd feat: init websocket模块 2022-06-29 16:29:25 +08:00
weihongyang
8d6cda8f90 feat: 新增maven依赖 2022-06-29 16:28:20 +08:00
weihongyang
fdf870c779 fix: 修改定时任务的log日志 2022-06-29 16:27:40 +08:00
weihongyang
4712d0300a fix: 修改redis的数据库 2022-06-29 16:27:00 +08:00
weihongyang
58c998afb0 feat: 增加定时定任务功能的xml文件 2022-06-24 16:07:31 +08:00
weihongyang
26fee6ac1c feat: 增加定时定任务模块pom配置 2022-06-24 10:27:11 +08:00
weihongyang
92a8e17f6e feat: 增加test的yaml文件 2022-06-24 10:25:36 +08:00
weihongyang
645bafc280 feat: init定时任务 2022-06-24 10:25:17 +08:00
weihongyang
1ac94e3d4c fix: 修改全局异常处理 2022-06-23 16:00:43 +08:00
weihongyang
093d6ee362 feat: sercurity的配置文件新增加LogoutHandler的实现类 在LogoutFilter之前加入jwtAuthenticationTokenFilter 2022-06-23 15:39:49 +08:00
weihongyang
aab0ea4479 fix: 修改验证码uuid参数默认是string 2022-06-23 15:31:55 +08:00
weihongyang
d3322639de fix: 修改swagger配置增加了新的组 2022-06-23 14:21:44 +08:00
weihongyang
036cc1ac25 fix: 修改登录接口实现验证码功能 2022-06-23 14:02:00 +08:00
weihongyang
6be4ac7a62 feat: 新增验证码接口 2022-06-23 13:57:30 +08:00
weihongyang
c7c397e92d feat: 新增sercurity对于验证码接口的放行 2022-06-23 13:56:43 +08:00
weihongyang
6ba316299d feat: 新增easy captcha的maven依赖 2022-06-23 13:55:43 +08:00
weihongyang
204d758fcc feat: 新增CaptchaService实现类的方法 2022-06-23 13:55:17 +08:00
weihongyang
35812df81d fix: 把redis开关配置删除 2022-06-23 13:54:49 +08:00
weihongyang
04f1bb339e feat: 新增CaptchaService实现类 2022-06-23 13:54:11 +08:00
weihongyang
42de3bd79c fix: 修改退出账号功能 2022-06-23 12:09:55 +08:00
weihongyang
3b6496773d feat: 新增账号密码在swagger有默认值 2022-06-23 11:56:20 +08:00
weihongyang
40c7df817b feat: 新增退出账号功能 2022-06-23 11:55:44 +08:00
weihongyang
681b5fbe63 feat: 新增jackson有关配置 2022-06-23 11:55:08 +08:00
weihongyang
01863b5344 feat: 新增jackson-datatype-jsr310的maven 2022-06-23 11:54:46 +08:00
weihongyang
45435f1cb4 feat: 新增sercurity的退出账号的配置 2022-06-23 11:52:54 +08:00
weihongyang
4d57b45a02 feat: 新增sercurity的LogoutSuccessHandler的实现类 2022-06-23 11:51:36 +08:00
weihongyang
47409787a4 feat: 新增sercurity的LogoutHandler的实现类 2022-06-23 11:51:19 +08:00
weihongyang
7fe617df56 fix: 修改jackson对日期的序列化支持格式 2022-06-23 09:47:51 +08:00
weihongyang
3c4cd948d4 fix: 修改jackson对日期的序列化支持格式 2022-06-22 14:03:01 +08:00
weihongyang
89bf5bf10a feat: 新增一个swagger自动生成代码的模板引擎 2022-06-22 14:02:11 +08:00
weihongyang
e01cd0f7fd feat: 新增一个swagger自动生成代码的模板引擎 2022-06-22 14:00:18 +08:00
caixiang
5d631e77c2 mark 2022-06-22 10:23:56 +08:00
weihongyang
3a30a2a34c fix: 修改sercurity的UserDetailsService的实现类 2022-06-22 09:58:10 +08:00
weihongyang
4fe4936dfd fix: 修改全局异常捕获处理类 2022-06-22 09:57:39 +08:00
weihongyang
e130377e8c feat: 新增一个登录状态异常类 2022-06-22 09:56:52 +08:00
caixiang
3b7b592a16 Merge branch 'master' of http://git.picaiba.com/why/ym
 Conflicts:
	ym-gateway/pom.xml
2022-06-22 09:14:41 +08:00
caixiang
342f843f2c mark 2022-06-22 09:14:03 +08:00
weihongyang
2bf099ee6d fix: 修改sercurity的UserDetailsService的实现类 2022-06-21 17:01:28 +08:00
weihongyang
62d1a761cc fix: 修改sercurity的config配置 2022-06-21 17:00:45 +08:00
weihongyang
7a4b82a94c fix: 修改全局异常捕获 2022-06-21 17:00:22 +08:00
weihongyang
3f8bb4f607 fix: 修改启动类 2022-06-21 17:00:02 +08:00
weihongyang
7b1365b5cd fix: 修改自动生成代码的存放路径 2022-06-21 15:52:06 +08:00
weihongyang
111473f057 fix: 修改swagger只在开发环境中启用,在生产幻境中关闭 2022-06-21 14:47:27 +08:00
weihongyang
0218a7548a fix: 修改扫码枪监听只在生产环境中启用 2022-06-21 14:46:50 +08:00
weihongyang
3b7e924478 feat: 增加生产yml文件 2022-06-21 14:46:03 +08:00
weihongyang
696e15f436 fix: 修改项目地址 2022-06-21 14:36:11 +08:00
weihongyang
a3802411d9 fix: 修改swagger依赖的bug 2022-06-21 14:35:50 +08:00
weihongyang
b98c015abc fix: 修改sercurity的放行策略 2022-06-21 14:34:34 +08:00
weihongyang
8e06463f12 fix: 修改VelocityTemplate的模板 2022-06-21 13:44:10 +08:00
weihongyang
8ae19c6c0b fix: 修改cors的config文件 2022-06-21 13:41:39 +08:00
weihongyang
22c90cf6bc feat: 新增swagger的config配置 2022-06-21 13:40:59 +08:00
weihongyang
891cc99c54 feat: 新增swagger的maven依赖 2022-06-21 13:40:35 +08:00
weihongyang
990cb5fd0c fix: 修改yml文件的redis 2022-06-21 13:39:44 +08:00
weihongyang
2902a959f3 fix: 修改请求接口的swagger注解 2022-06-21 13:39:20 +08:00
weihongyang
266ce0c6a7 fix: 修改扫码枪监听 2022-06-21 09:44:15 +08:00
weihongyang
37a7f6ae13 修改redis配置 2022-06-21 09:14:53 +08:00
weihongyang
9cdaf85171 修改redis配置 2022-06-21 09:11:59 +08:00
393 changed files with 25135 additions and 496 deletions

10
README.md Normal file
View File

@@ -0,0 +1,10 @@
spc 主项目
<br>
**软件需求**
- JDK1.8
- Maven3.0+
- MySQL8.0
- redis6.0+
<br>

38
pom.xml
View File

@@ -12,8 +12,11 @@
<module>ym-admin</module> <module>ym-admin</module>
<module>ym-generator</module> <module>ym-generator</module>
<module>ym-gateway</module> <module>ym-gateway</module>
<module>ym-barcode</module> <module>ym-baisc</module>
<module>yum-basic</module> <module>ym-schedule-task</module>
<module>ym-influx</module>
<module>ym-quality-planning</module>
<module>ym-process-inspection</module>
</modules> </modules>
<packaging>pom</packaging> <packaging>pom</packaging>
@@ -32,7 +35,7 @@
<java.version>1.8</java.version> <java.version>1.8</java.version>
<junit.version>4.13.2</junit.version> <junit.version>4.13.2</junit.version>
<jedis.version>4.2.2</jedis.version> <jedis.version>4.2.2</jedis.version>
<!-- <druid.version>1.2.9</druid.version>--> <druid.version>1.2.9</druid.version>
<mybatisplus.version>3.5.1</mybatisplus.version> <mybatisplus.version>3.5.1</mybatisplus.version>
<sqlserver.version>4.0</sqlserver.version> <sqlserver.version>4.0</sqlserver.version>
<oracle.version>11.2.0.3</oracle.version> <oracle.version>11.2.0.3</oracle.version>
@@ -89,6 +92,22 @@
<artifactId>spring-boot-configuration-processor</artifactId> <artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<!-- influx start-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-actuator-autoconfigure</artifactId>-->
<!-- <optional>true</optional>-->
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <groupId>com.fasterxml.jackson.core</groupId>-->
<!-- <artifactId>jackson-databind</artifactId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
<!-- </dependency>-->
<!-- influx end-->
<dependency> <dependency>
<groupId>redis.clients</groupId> <groupId>redis.clients</groupId>
<artifactId>jedis</artifactId> <artifactId>jedis</artifactId>
@@ -117,9 +136,14 @@
<artifactId>postgresql</artifactId> <artifactId>postgresql</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>com.alibaba</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId> <artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency> </dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-data-jdbc</artifactId>-->
<!-- </dependency>-->
<dependency> <dependency>
<groupId>cn.afterturn</groupId> <groupId>cn.afterturn</groupId>
@@ -197,6 +221,10 @@
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<version>${lombok.version}</version> <version>${lombok.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
</dependencies> </dependencies>
<!-- 阿里云maven仓库 --> <!-- 阿里云maven仓库 -->

View File

@@ -15,6 +15,7 @@ CREATE TABLE sys_user (
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
updater bigint COMMENT '更新者', updater bigint COMMENT '更新者',
update_date datetime COMMENT '更新时间', update_date datetime COMMENT '更新时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
primary key (id), primary key (id),
unique key uk_username (username), unique key uk_username (username),
key idx_create_date (create_date) key idx_create_date (create_date)
@@ -31,6 +32,7 @@ CREATE TABLE sys_dept (
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
updater bigint COMMENT '更新者', updater bigint COMMENT '更新者',
update_date datetime COMMENT '更新时间', update_date datetime COMMENT '更新时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
primary key (id), primary key (id),
key idx_pid (pid), key idx_pid (pid),
key idx_sort (sort) key idx_sort (sort)
@@ -47,6 +49,7 @@ create table sys_role
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
updater bigint COMMENT '更新者', updater bigint COMMENT '更新者',
update_date datetime COMMENT '更新时间', update_date datetime COMMENT '更新时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
primary key (id), primary key (id),
key idx_dept_id (dept_id) key idx_dept_id (dept_id)
)ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='角色管理'; )ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='角色管理';
@@ -66,6 +69,7 @@ create table sys_menu
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
updater bigint COMMENT '更新者', updater bigint COMMENT '更新者',
update_date datetime COMMENT '更新时间', update_date datetime COMMENT '更新时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
primary key (id), primary key (id),
key idx_pid (pid), key idx_pid (pid),
key idx_sort (sort) key idx_sort (sort)
@@ -79,6 +83,7 @@ create table sys_role_user
user_id bigint COMMENT '用户ID', user_id bigint COMMENT '用户ID',
creator bigint COMMENT '创建者', creator bigint COMMENT '创建者',
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
primary key (id), primary key (id),
key idx_role_id (role_id), key idx_role_id (role_id),
key idx_user_id (user_id) key idx_user_id (user_id)
@@ -92,6 +97,7 @@ create table sys_role_menu
menu_id bigint COMMENT '菜单ID', menu_id bigint COMMENT '菜单ID',
creator bigint COMMENT '创建者', creator bigint COMMENT '创建者',
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
primary key (id), primary key (id),
key idx_role_id (role_id), key idx_role_id (role_id),
key idx_menu_id (menu_id) key idx_menu_id (menu_id)
@@ -105,6 +111,7 @@ create table sys_role_data_scope
dept_id bigint COMMENT '部门ID', dept_id bigint COMMENT '部门ID',
creator bigint COMMENT '创建者', creator bigint COMMENT '创建者',
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
primary key (id), primary key (id),
key idx_role_id (role_id) key idx_role_id (role_id)
)ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='角色数据权限'; )ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='角色数据权限';
@@ -121,6 +128,7 @@ create table sys_params
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
updater bigint COMMENT '更新者', updater bigint COMMENT '更新者',
update_date datetime COMMENT '更新时间', update_date datetime COMMENT '更新时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
primary key (id), primary key (id),
unique key uk_param_code (param_code), unique key uk_param_code (param_code),
key idx_create_date (create_date) key idx_create_date (create_date)
@@ -138,6 +146,7 @@ create table sys_dict_type
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
updater bigint COMMENT '更新者', updater bigint COMMENT '更新者',
update_date datetime COMMENT '更新时间', update_date datetime COMMENT '更新时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
primary key (id), primary key (id),
UNIQUE KEY(dict_type) UNIQUE KEY(dict_type)
)ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='字典类型'; )ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='字典类型';
@@ -155,6 +164,7 @@ create table sys_dict_data
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
updater bigint COMMENT '更新者', updater bigint COMMENT '更新者',
update_date datetime COMMENT '更新时间', update_date datetime COMMENT '更新时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
primary key (id), primary key (id),
unique key uk_dict_type_value (dict_type_id, dict_value), unique key uk_dict_type_value (dict_type_id, dict_value),
key idx_sort (sort) key idx_sort (sort)
@@ -171,6 +181,7 @@ create table sys_log_login
creator_name varchar(50) COMMENT '用户名', creator_name varchar(50) COMMENT '用户名',
creator bigint COMMENT '创建者', creator bigint COMMENT '创建者',
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
primary key (id), primary key (id),
key idx_status (status), key idx_status (status),
key idx_create_date (create_date) key idx_create_date (create_date)
@@ -191,6 +202,7 @@ create table sys_log_operation
creator_name varchar(50) COMMENT '用户名', creator_name varchar(50) COMMENT '用户名',
creator bigint COMMENT '创建者', creator bigint COMMENT '创建者',
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
primary key (id), primary key (id),
key idx_create_date (create_date) key idx_create_date (create_date)
)ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='操作日志'; )ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='操作日志';
@@ -207,6 +219,7 @@ create table sys_log_error
error_info text COMMENT '异常信息', error_info text COMMENT '异常信息',
creator bigint COMMENT '创建者', creator bigint COMMENT '创建者',
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
primary key (id), primary key (id),
key idx_create_date (create_date) key idx_create_date (create_date)
)ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='异常日志'; )ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='异常日志';
@@ -218,6 +231,7 @@ CREATE TABLE sys_oss (
url varchar(200) COMMENT 'URL地址', url varchar(200) COMMENT 'URL地址',
creator bigint COMMENT '创建者', creator bigint COMMENT '创建者',
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
PRIMARY KEY (id), PRIMARY KEY (id),
key idx_create_date (create_date) key idx_create_date (create_date)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='文件上传'; ) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='文件上传';
@@ -234,6 +248,7 @@ CREATE TABLE schedule_job (
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
updater bigint COMMENT '更新者', updater bigint COMMENT '更新者',
update_date datetime COMMENT '更新时间', update_date datetime COMMENT '更新时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
PRIMARY KEY (id), PRIMARY KEY (id),
key idx_create_date (create_date) key idx_create_date (create_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='定时任务'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='定时任务';
@@ -248,6 +263,7 @@ CREATE TABLE schedule_job_log (
error varchar(2000) DEFAULT NULL COMMENT '失败信息', error varchar(2000) DEFAULT NULL COMMENT '失败信息',
times int NOT NULL COMMENT '耗时(单位:毫秒)', times int NOT NULL COMMENT '耗时(单位:毫秒)',
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
PRIMARY KEY (id), PRIMARY KEY (id),
key idx_job_id (job_id), key idx_job_id (job_id),
key idx_create_date (create_date) key idx_create_date (create_date)
@@ -261,6 +277,7 @@ CREATE TABLE sys_user_token (
expire_date datetime COMMENT '过期时间', expire_date datetime COMMENT '过期时间',
update_date datetime COMMENT '更新时间', update_date datetime COMMENT '更新时间',
create_date datetime COMMENT '创建时间', create_date datetime COMMENT '创建时间',
valid tinyint COMMENT '删除标识是否有效1可用 0不可用',
PRIMARY KEY (id), PRIMARY KEY (id),
UNIQUE KEY user_id (user_id), UNIQUE KEY user_id (user_id),
UNIQUE KEY token (token) UNIQUE KEY token (token)

View File

@@ -33,6 +33,11 @@
<artifactId>jjwt</artifactId> <artifactId>jjwt</artifactId>
<version>0.9.0</version> <version>0.9.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>${captcha.version}</version>
</dependency>
<dependency> <dependency>
<groupId>com.cnbm</groupId> <groupId>com.cnbm</groupId>
<artifactId>ym-common</artifactId> <artifactId>ym-common</artifactId>

View File

@@ -21,6 +21,7 @@ import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.Date;
/** /**
* @Author weihongyang * @Author weihongyang
@@ -78,6 +79,7 @@ public class LogOperationAspect {
LoginUser loginUser = (LoginUser) authentication.getPrincipal(); LoginUser loginUser = (LoginUser) authentication.getPrincipal();
if(loginUser != null){ if(loginUser != null){
log.setCreatorName(loginUser.getUsername()); log.setCreatorName(loginUser.getUsername());
log.setCreator(loginUser.getSysUserEntity().getCreator());
} }
log.setStatus(status); log.setStatus(status);
@@ -89,6 +91,7 @@ public class LogOperationAspect {
log.setUserAgent(request.getHeader(HttpHeaders.USER_AGENT)); log.setUserAgent(request.getHeader(HttpHeaders.USER_AGENT));
log.setRequestUri(request.getRequestURI()); log.setRequestUri(request.getRequestURI());
log.setRequestMethod(request.getMethod()); log.setRequestMethod(request.getMethod());
log.setCreateDate(new Date());
//请求参数 //请求参数
Object[] args = joinPoint.getArgs(); Object[] args = joinPoint.getArgs();

View File

@@ -0,0 +1,18 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.cnbm.admin.basic;
import java.io.Serializable;
/**
* 接口请求参数基类
*
* @author jiff
* @date 2018/11/1
* @since 1.0
*/
public class BaseParam implements Serializable {
}

View File

@@ -1,9 +1,26 @@
package com.cnbm.admin.config; package com.cnbm.admin.config;
import com.cnbm.common.utils.DateUtils;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.JSR310Module;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.ByteArrayHttpMessageConverter;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.ResourceHttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter;
import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.TimeZone;
/** /**
* @Author weihongyang * @Author weihongyang
* @Date 2022/6/8 10:47 AM * @Date 2022/6/8 10:47 AM
@@ -27,4 +44,34 @@ public class CorsConfig implements WebMvcConfigurer {
// 跨域允许时间 // 跨域允许时间
.maxAge(3600); .maxAge(3600);
} }
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new ByteArrayHttpMessageConverter());
converters.add(new StringHttpMessageConverter());
converters.add(new ResourceHttpMessageConverter());
converters.add(new AllEncompassingFormHttpMessageConverter());
converters.add(new StringHttpMessageConverter());
converters.add(jackson2HttpMessageConverter());
}
@Bean
public MappingJackson2HttpMessageConverter jackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper mapper = new ObjectMapper();
//Long类型转String类型
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
mapper.registerModule(simpleModule);
mapper.registerModules(new JSR310Module());
//反序列化的时候如果多了其他属性,不抛出异常
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
//日期格式处理
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
converter.setObjectMapper(mapper);
return converter;
}
} }

View File

@@ -0,0 +1,29 @@
package com.cnbm.admin.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.cnbm.common.interceptor.DataFilterInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
// 数据权限
mybatisPlusInterceptor.addInnerInterceptor(new DataFilterInterceptor());
// 分页插件
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
// 乐观锁
mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
// 防止全表更新与删除
mybatisPlusInterceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
return mybatisPlusInterceptor;
}
}

View File

@@ -1,10 +1,16 @@
package com.cnbm.admin.config; package com.cnbm.admin.config;
import com.cnbm.admin.filter.JwtAuthenticationTokenFilter; import com.cnbm.admin.filter.JwtAuthenticationTokenFilter;
import com.cnbm.admin.handler.LogoutHandlerImpl;
import com.cnbm.admin.handler.LogoutSuccessHandlerImpl;
import com.cnbm.admin.service.impl.UserDetailsServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@@ -14,6 +20,8 @@ import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.security.web.access.AccessDeniedHandler; import org.springframework.security.web.access.AccessDeniedHandler;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.authentication.logout.LogoutFilter;
/** /**
* @Author weihongyang * @Author weihongyang
* @Date 2022/6/8 1:51 PM * @Date 2022/6/8 1:51 PM
@@ -38,6 +46,16 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired @Autowired
private AccessDeniedHandler accessDeniedHandler; private AccessDeniedHandler accessDeniedHandler;
@Autowired
private UserDetailsServiceImpl userDetailsService;
@Autowired
private LogoutSuccessHandlerImpl logoutSuccessHandler;
@Autowired
private LogoutHandlerImpl logoutHandler;
@Override @Override
protected void configure(HttpSecurity http) throws Exception { protected void configure(HttpSecurity http) throws Exception {
http http
@@ -48,14 +66,32 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
.and() .and()
.authorizeRequests() .authorizeRequests()
// 对于登录接口 允许匿名访问 // 对于登录接口 允许匿名访问
.antMatchers("/login").anonymous() .antMatchers("/login","/doLogout","/swagger/**","/v2/**",
"/doc.html",
"/swagger-resources/**",
"/swagger-ui/**",
"/webjars/**",
"/websocket/**",
"/influx/**",
"/spcData/**",
// "/basic/**",
// "/qualityPlanning/**",
// "/processInspection/**",
"/captcha").anonymous()
// .antMatchers("/testCors").hasAuthority("system:dept:list222") // .antMatchers("/testCors").hasAuthority("system:dept:list222")
// 除上面外的所有请求全部需要鉴权认证 // 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated(); .anyRequest()
.authenticated()
// 退出登录,默认为/logout这里修改接口地址为 /doLogout
.and().logout().logoutUrl("/doLogout")
.addLogoutHandler(logoutHandler)
// 设置退出登录成功处理程序退出成功后返回JSON字符串
.logoutSuccessHandler(logoutSuccessHandler);
//添加过滤器 //添加过滤器
http.addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); http.addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
http.addFilterBefore(jwtAuthenticationTokenFilter, LogoutFilter.class);
//配置异常处理器 //配置异常处理器
http.exceptionHandling() http.exceptionHandling()
//配置认证失败处理器 //配置认证失败处理器
@@ -71,4 +107,22 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
public AuthenticationManager authenticationManagerBean() throws Exception { public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean(); return super.authenticationManagerBean();
} }
@Bean
public AuthenticationProvider daoAuthenticationProvider() {
DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
daoAuthenticationProvider.setUserDetailsService(userDetailsService);
daoAuthenticationProvider.setPasswordEncoder(passwordEncoder());
daoAuthenticationProvider.setHideUserNotFoundExceptions(false);
return daoAuthenticationProvider;
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// 加入自定义认证, 无需配置userDetailsService否则会执行默认的provider
// auth.authenticationProvider(myAuthenticationProvider());
/* auth.userDetailsService(userService)
.passwordEncoder(passwordEncoder());*/
auth.authenticationProvider(daoAuthenticationProvider());
}
} }

View File

@@ -1,19 +1,28 @@
package com.cnbm.admin.controller; package com.cnbm.admin.controller;
import com.cnbm.admin.handler.LogoutSuccessHandlerImpl;
import com.cnbm.admin.params.LoginParam; import com.cnbm.admin.params.LoginParam;
import com.cnbm.admin.service.CaptchaService;
import com.cnbm.admin.service.LoginService; import com.cnbm.admin.service.LoginService;
import com.cnbm.admin.utils.ResponseResult; import com.cnbm.admin.utils.ResponseResult;
import com.cnbm.common.exception.ErrorCode;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.RestController; import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/** /**
* @Author weihongyang * @Author weihongyang
@@ -28,16 +37,32 @@ public class LoginController {
@Autowired @Autowired
private LoginService loginService; private LoginService loginService;
@RequestMapping("/hello") @Autowired
@PreAuthorize("@ex.hasAuthority('sys:user:page')") private CaptchaService captchaService;
public String hello(){
log.info("hello"); @GetMapping("/captcha")
return "hello"; @ApiOperation(value = "验证码", produces="application/octet-stream")
@ApiImplicitParam(paramType = "query", dataTypeClass=String.class, name = "uuid", required = true,example = "string")
public void captcha(HttpServletResponse response, String uuid)throws IOException {
//uuid不能为空
AssertUtils.isBlank(uuid, ErrorCode.IDENTIFIER_NOT_NULL);
//生成验证码
captchaService.create(response, uuid);
} }
@PostMapping("/login") @PostMapping("/login")
@ApiOperation(value = "登录") @ApiOperation(value = "登录")
public ResponseResult login(HttpServletRequest request, @RequestBody LoginParam loginParam) { public Result login(HttpServletRequest request, @RequestBody LoginParam loginParam) {
return loginService.login(request,loginParam); return loginService.login(request,loginParam);
} }
@PostMapping("logout")
@ApiOperation(value = "退出")
public Result logout(HttpServletRequest request){
loginService.logout(request);
return new Result();
}
} }

View File

@@ -36,14 +36,15 @@ public class SysDictDataController {
@GetMapping("page") @GetMapping("page")
@ApiOperation("字典数据") @ApiOperation("字典数据")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataType="int") , @ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") , @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") , @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String") , @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = "dictLabel", value = "字典标签", paramType = "query", dataType="String"), @ApiImplicitParam(name = "dictTypeId", value = "字典类型id", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "dictValue", value = "字典", paramType = "query", dataType="String") @ApiImplicitParam(name = "dictLabel", value = "字典标签", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "dictValue", value = "字典值", paramType = "query", dataTypeClass=String.class)
}) })
@PreAuthorize("@ex.hasAuthority('sys:dept:page')") @PreAuthorize("@ex.hasAuthority('sys:dict:page')")
public Result<PageData<SysDictDataDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ public Result<PageData<SysDictDataDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
//字典类型 //字典类型
PageData<SysDictDataDTO> page = sysDictDataService.page(params); PageData<SysDictDataDTO> page = sysDictDataService.page(params);

View File

@@ -38,12 +38,12 @@ public class SysDictTypeController {
@GetMapping("page") @GetMapping("page")
@ApiOperation("字典类型") @ApiOperation("字典类型")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataType="int") , @ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") , @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") , @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String") , @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = "dictType", value = "字典类型", paramType = "query", dataType="String"), @ApiImplicitParam(name = "dictType", value = "字典类型", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "dictName", value = "字典名称", paramType = "query", dataType="String") @ApiImplicitParam(name = "dictName", value = "字典名称", paramType = "query", dataTypeClass=String.class)
}) })
@PreAuthorize("@ex.hasAuthority('sys:dict:page')") @PreAuthorize("@ex.hasAuthority('sys:dict:page')")
public Result<PageData<SysDictTypeDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ public Result<PageData<SysDictTypeDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){

View File

@@ -38,10 +38,10 @@ public class SysLogErrorController {
@GetMapping("page") @GetMapping("page")
@ApiOperation("分页") @ApiOperation("分页")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataType="int") , @ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") , @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") , @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String") @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class)
}) })
public Result<PageData<SysLogErrorDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ public Result<PageData<SysLogErrorDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<SysLogErrorDTO> page = sysLogErrorService.page(params); PageData<SysLogErrorDTO> page = sysLogErrorService.page(params);

View File

@@ -0,0 +1,69 @@
package com.cnbm.admin.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.admin.dto.SysLogLoginDTO;
import com.cnbm.admin.execl.SysLogLoginExcel;
import com.cnbm.admin.service.SysLogLoginService;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("sys/log/login")
@Api(tags="登录日志")
@Log4j2
public class SysLogLoginController {
@Autowired
private SysLogLoginService sysLogLoginService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = "status", value = "状态 0失败 1成功 2账号已锁定", paramType = "query", dataTypeClass=Integer.class),
@ApiImplicitParam(name = "creatorName", value = "用户名", paramType = "query", dataTypeClass=String.class)
})
@PreAuthorize("@ex.hasAuthority('sys:log:login')")
public Result<PageData<SysLogLoginDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<SysLogLoginDTO> page = sysLogLoginService.page(params);
log.info("PageData<SysLogLoginDTO>====={}",page.toString());
return new Result<PageData<SysLogLoginDTO>>().ok(page);
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@ApiImplicitParams({
@ApiImplicitParam(name = "status", value = "状态 0失败 1成功 2账号已锁定", paramType = "query", dataTypeClass=Integer.class),
@ApiImplicitParam(name = "creatorName", value = "用户名", paramType = "query", dataTypeClass=String.class)
})
@PreAuthorize("@ex.hasAuthority('sys:log:login')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<SysLogLoginDTO> list = sysLogLoginService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, SysLogLoginExcel.class);
}
}

View File

@@ -38,11 +38,11 @@ public class SysLogOperationController {
@GetMapping("page") @GetMapping("page")
@ApiOperation("分页") @ApiOperation("分页")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataType="int") , @ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") , @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") , @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String") , @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = "status", value = "状态 0失败 1成功", paramType = "query", dataType="int") @ApiImplicitParam(name = "status", value = "状态 0失败 1成功", paramType = "query", dataTypeClass=String.class)
}) })
public Result<PageData<SysLogOperationDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ public Result<PageData<SysLogOperationDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<SysLogOperationDTO> page = sysLogOperationService.page(params); PageData<SysLogOperationDTO> page = sysLogOperationService.page(params);

View File

@@ -60,7 +60,7 @@ public class SysMenuController {
@GetMapping("list") @GetMapping("list")
@ApiOperation("列表") @ApiOperation("列表")
@ApiImplicitParam(name = "type", value = "菜单类型 0菜单 1按钮 null全部", paramType = "query", dataType="int") @ApiImplicitParam(name = "type", value = "菜单类型 0菜单 1按钮 null全部", paramType = "query", dataTypeClass=Integer.class)
@PreAuthorize("@ex.hasAuthority('sys:menu:list')") @PreAuthorize("@ex.hasAuthority('sys:menu:list')")
public Result<List<SysMenuDTO>> list(Integer type){ public Result<List<SysMenuDTO>> list(Integer type){
List<SysMenuDTO> list = sysMenuService.getAllMenuList(type); List<SysMenuDTO> list = sysMenuService.getAllMenuList(type);

View File

@@ -41,11 +41,11 @@ public class SysParamsController {
@GetMapping("page") @GetMapping("page")
@ApiOperation("分页") @ApiOperation("分页")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataType="int") , @ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") , @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") , @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String") , @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = "paramCode", value = "参数编码", paramType = "query", dataType="String") @ApiImplicitParam(name = "paramCode", value = "参数编码", paramType = "query", dataTypeClass=String.class)
}) })
@PreAuthorize("@ex.hasAuthority('sys:params:page')") @PreAuthorize("@ex.hasAuthority('sys:params:page')")
public Result<PageData<SysParamsDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ public Result<PageData<SysParamsDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
@@ -105,7 +105,7 @@ public class SysParamsController {
@GetMapping("export") @GetMapping("export")
@ApiOperation("导出") @ApiOperation("导出")
@LogOperation("导出") @LogOperation("导出")
@ApiImplicitParam(name = "paramCode", value = "参数编码", paramType = "query", dataType="String") @ApiImplicitParam(name = "paramCode", value = "参数编码", paramType = "query", dataTypeClass=String.class)
@PreAuthorize("@ex.hasAuthority('sys:params:export')") @PreAuthorize("@ex.hasAuthority('sys:params:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<SysParamsDTO> list = sysParamsService.list(params); List<SysParamsDTO> list = sysParamsService.list(params);

View File

@@ -44,13 +44,13 @@ public class SysRoleController {
@GetMapping("page") @GetMapping("page")
@ApiOperation("分页") @ApiOperation("分页")
@ApiImplicitParams({ // @ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataType="int") , // @ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") , // @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") , // @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String") , // @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = "name", value = "角色名", paramType = "query", dataType="String") // @ApiImplicitParam(name = "name", value = "角色名", paramType = "query", dataTypeClass=String.class)
}) // })
@PreAuthorize("@ex.hasAuthority('sys:role:page')") @PreAuthorize("@ex.hasAuthority('sys:role:page')")
public Result<PageData<SysRoleDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ public Result<PageData<SysRoleDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<SysRoleDTO> page = sysRoleService.page(params); PageData<SysRoleDTO> page = sysRoleService.page(params);

View File

@@ -53,13 +53,13 @@ public class SysUserController {
@GetMapping("page") @GetMapping("page")
@ApiOperation("分页") @ApiOperation("分页")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataType="int") , @ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") , @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") , @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String") , @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = "username", value = "用户名", paramType = "query", dataType="String"), @ApiImplicitParam(name = "username", value = "用户名", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "gender", value = "性别", paramType = "query", dataType="String"), @ApiImplicitParam(name = "gender", value = "性别", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "deptId", value = "部门ID", paramType = "query", dataType="String") @ApiImplicitParam(name = "deptId", value = "部门ID", paramType = "query", dataTypeClass=String.class)
}) })
@PreAuthorize("@ex.hasAuthority('sys:user:page')") @PreAuthorize("@ex.hasAuthority('sys:user:page')")
public Result<PageData<SysUserDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ public Result<PageData<SysUserDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
@@ -153,11 +153,17 @@ public class SysUserController {
@GetMapping("export") @GetMapping("export")
@ApiOperation("导出") @ApiOperation("导出")
@LogOperation("导出") @LogOperation("导出")
@ApiImplicitParam(name = "username", value = "用户名", paramType = "query", dataType="String") @ApiImplicitParam(name = "username", value = "用户名", paramType = "query", dataTypeClass=String.class)
@PreAuthorize("@ex.hasAuthority('sys:user:export')") @PreAuthorize("@ex.hasAuthority('sys:user:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<SysUserDTO> list = sysUserService.list(params); List<SysUserDTO> list = sysUserService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, SysUserExcel.class); ExcelUtils.exportExcelToTarget(response, null, list, SysUserExcel.class);
} }
@PostMapping(value = "list")
@ApiOperation(value = "获取用户列表")
@LogOperation("获取用户列表")
public List<SysUserDTO> list(@ApiIgnore @RequestParam Map<String, Object> params) {
return sysUserService.list(params); }
} }

View File

@@ -0,0 +1,10 @@
package com.cnbm.admin.dao;
import com.cnbm.admin.entity.SysLogLoginEntity;
import com.cnbm.common.dao.BaseDao;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SysLogLoginDao extends BaseDao<SysLogLoginEntity> {
}

View File

@@ -0,0 +1,36 @@
package com.cnbm.admin.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
@ApiModel(value = "登录日志")
public class SysLogLoginDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id")
private Long id;
@ApiModelProperty(value = "用户操作 0用户登录 1用户退出")
private Integer operation;
@ApiModelProperty(value = "状态 0失败 1成功 2账号已锁定")
private Integer status;
@ApiModelProperty(value = "用户代理")
private String userAgent;
@ApiModelProperty(value = "操作IP")
private String ip;
@ApiModelProperty(value = "用户名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private Date createDate;
}

View File

@@ -1,16 +1,19 @@
package com.cnbm.admin.entity; package com.cnbm.admin.entity;
import com.fasterxml.jackson.annotation.JsonIgnore; import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.util.Collection;
import lombok.Data; import java.util.List;
import lombok.NoArgsConstructor; import java.util.stream.Collectors;
import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
import java.util.Collection; import com.fasterxml.jackson.annotation.JsonIgnore;
import java.util.List; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.stream.Collectors;
import lombok.Data;
import lombok.NoArgsConstructor;
/** /**
* @Author weihongyang * @Author weihongyang
@@ -20,7 +23,9 @@ import java.util.stream.Collectors;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true) @JsonIgnoreProperties(ignoreUnknown = true)
public class LoginUser implements UserDetails { public class LoginUser implements UserDetails,Serializable {
private static final long serialVersionUID = 1L;
private SysUserEntity sysUserEntity; private SysUserEntity sysUserEntity;

View File

@@ -0,0 +1,35 @@
package com.cnbm.admin.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cnbm.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("sys_log_login")
public class SysLogLoginEntity extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 用户操作 0用户登录 1用户退出
*/
private Integer operation;
/**
* 状态 0失败 1成功 2账号已锁定
*/
private Integer status;
/**
* 用户代理
*/
private String userAgent;
/**
* 操作IP
*/
private String ip;
/**
* 用户名
*/
private String creatorName;
}

View File

@@ -0,0 +1,22 @@
package com.cnbm.admin.enums;
public enum LoginOperationEnum {
/**
* 用户登录
*/
LOGIN(0),
/**
* 用户退出
*/
LOGOUT(1);
private int value;
LoginOperationEnum(int value) {
this.value = value;
}
public int value() {
return this.value;
}
}

View File

@@ -0,0 +1,26 @@
package com.cnbm.admin.enums;
public enum LoginStatusEnum {
/**
* 失败
*/
FAIL(0),
/**
* 成功
*/
SUCCESS(1),
/**
* 账号已锁定
*/
LOCK(2);
private int value;
LoginStatusEnum(int value) {
this.value = value;
}
public int value() {
return this.value;
}
}

View File

@@ -0,0 +1,52 @@
package com.cnbm.admin.enums;
/**
* <p>
* 是、否有效枚举
* </P>
*
* @author xcc
* @date 2022年7月5日
* @since 1.0
*/
public enum WhetherEnum {
NO(0, ""),
YES(1, "");
private final Integer value;
private final String label;
private final String remark;
WhetherEnum(final int value, final String label) {
this(value, label, null);
}
WhetherEnum(final int value, final String label, final String remark) {
this.value = value;
this.label = label;
this.remark = remark;
}
/**
* @return 数据值
*/
public Integer getValue() {
return value;
}
/**
* @return 标签名
*/
public String getLabel() {
return label;
}
/**
* @return 备注
*/
public String getRemark() {
return remark;
}
}

View File

@@ -0,0 +1,66 @@
package com.cnbm.admin.exception;
import com.cnbm.common.exception.ErrorCode;
import com.cnbm.common.utils.MessageUtils;
/**
* @Author weihongyang
* @Date 2022/6/22 9:44 AM
* @Version 1.0
*/
public class LoginStatusException extends RuntimeException{
private static final long serialVersionUID = 1L;
private int code;
private String msg;
public LoginStatusException(int code) {
this.code = code;
this.msg = MessageUtils.getMessage(code);
}
public LoginStatusException(int code, String... params) {
this.code = code;
this.msg = MessageUtils.getMessage(code, params);
}
public LoginStatusException(int code, Throwable e) {
super(e);
this.code = code;
this.msg = MessageUtils.getMessage(code);
}
public LoginStatusException(int code, Throwable e, String... params) {
super(e);
this.code = code;
this.msg = MessageUtils.getMessage(code, params);
}
public LoginStatusException(String msg) {
super(msg);
this.code = ErrorCode.INTERNAL_SERVER_ERROR;
this.msg = msg;
}
public LoginStatusException(String msg, Throwable e) {
super(msg, e);
this.code = ErrorCode.INTERNAL_SERVER_ERROR;
this.msg = msg;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}

View File

@@ -1,87 +0,0 @@
package com.cnbm.admin.exception;
import cn.hutool.core.map.MapUtil;
import com.cnbm.admin.entity.SysLogErrorEntity;
import com.cnbm.admin.service.SysLogErrorService;
import com.cnbm.common.exception.ErrorCode;
import com.cnbm.common.exception.ExceptionUtils;
import com.cnbm.common.exception.RenException;
import com.cnbm.common.utils.HttpContextUtils;
import com.cnbm.common.utils.IpUtils;
import com.cnbm.common.utils.JsonUtils;
import com.cnbm.common.utils.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
/**
* @Author weihongyang
* @Date 2022/6/10 2:05 PM
* @Version 1.0
*/
//@RestControllerAdvice
//public class RenExceptionHandler {
// private static final Logger logger = LoggerFactory.getLogger(RenExceptionHandler.class);
//
// @Autowired
// private SysLogErrorService sysLogErrorService;
//
// /**
// * 处理自定义异常
// */
// @ExceptionHandler(RenException.class)
// public Result handleRenException(RenException ex){
// Result result = new Result();
// result.error(ex.getCode(), ex.getMsg());
//
// return result;
// }
//
// @ExceptionHandler(DuplicateKeyException.class)
// public Result handleDuplicateKeyException(DuplicateKeyException ex){
// Result result = new Result();
// result.error(ErrorCode.DB_RECORD_EXISTS);
//
// return result;
// }
//
// @ExceptionHandler(Exception.class)
// public Result handleException(Exception ex){
// logger.error(ex.getMessage(), ex);
//
// saveLog(ex);
//
// return new Result().error();
// }
//
// /**
// * 保存异常日志
// */
// private void saveLog(Exception ex){
// SysLogErrorEntity log = new SysLogErrorEntity();
//
// //请求相关信息
// HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
// log.setIp(IpUtils.getIpAddr(request));
// log.setUserAgent(request.getHeader(HttpHeaders.USER_AGENT));
// log.setRequestUri(request.getRequestURI());
// log.setRequestMethod(request.getMethod());
// Map<String, String> params = HttpContextUtils.getParameterMap(request);
// if(MapUtil.isNotEmpty(params)){
// log.setRequestParams(JsonUtils.toJsonString(params));
// }
//
// //异常信息
// log.setErrorInfo(ExceptionUtils.getErrorStackTrace(ex));
//
// //保存
// sysLogErrorService.save(log);
// }
//}

View File

@@ -0,0 +1,112 @@
package com.cnbm.admin.exception;
import com.cnbm.admin.service.SysLogErrorService;
import com.cnbm.common.exception.ErrorCode;
import com.cnbm.common.exception.RenException;
import com.cnbm.common.utils.Result;
import lombok.extern.log4j.Log4j2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.DisabledException;
import org.springframework.security.authentication.InternalAuthenticationServiceException;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
* @Author weihongyang
* @Date 2022/6/10 2:05 PM
* @Version 1.0
*/
@RestControllerAdvice
@Log4j2
public class YmExceptionHandler {
private static final Logger logger = LoggerFactory.getLogger(YmExceptionHandler.class);
@Autowired
private SysLogErrorService sysLogErrorService;
/**
* 处理自定义异常
*/
@ExceptionHandler(RenException.class)
public Result handleRenException(RenException ex){
Result result = new Result();
result.error(ex.getCode(), ex.getMsg());
return result;
}
@ExceptionHandler(BadCredentialsException.class)
public Result handleBadCredentialsException(BadCredentialsException ex){
Result result = new Result();
result.error("密码错误");
return result;
}
@ExceptionHandler(UsernameNotFoundException.class)
public Result handleUsernameNotFoundException(UsernameNotFoundException ex){
Result result = new Result();
result.error(ex.getMessage());
return result;
}
@ExceptionHandler(InternalAuthenticationServiceException.class)
public Result handleInternalAuthenticationServiceException(InternalAuthenticationServiceException ex){
Result result = new Result();
result.error(ex.getMessage());
return result;
}
@ExceptionHandler(LoginStatusException.class)
public Result handleLoginStatusException(LoginStatusException ex){
Result result = new Result();
result.error(ex.getMessage());
return result;
}
@ExceptionHandler(DuplicateKeyException.class)
public Result handleDuplicateKeyException(DuplicateKeyException ex){
Result result = new Result();
result.error(ErrorCode.DB_RECORD_EXISTS);
return result;
}
// @ExceptionHandler(Exception.class)
// public Result handleException(Exception ex){
// logger.error(ex.getMessage(), ex);
//
//// saveLog(ex);
//
// return new Result().error();
// }
//
// /**
// * 保存异常日志
// */
// private void saveLog(Exception ex){
// SysLogErrorEntity log = new SysLogErrorEntity();
//
// //请求相关信息
// HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
// log.setIp(IpUtils.getIpAddr(request));
// log.setUserAgent(request.getHeader(HttpHeaders.USER_AGENT));
// log.setRequestUri(request.getRequestURI());
// log.setRequestMethod(request.getMethod());
// Map<String, String> params = HttpContextUtils.getParameterMap(request);
// if(MapUtil.isNotEmpty(params)){
// log.setRequestParams(JsonUtils.toJsonString(params));
// }
//
// //异常信息
// log.setErrorInfo(ExceptionUtils.getErrorStackTrace(ex));
//
// //保存
// sysLogErrorService.save(log);
// }
}

View File

@@ -0,0 +1,24 @@
package com.cnbm.admin.execl;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.util.Date;
@Data
public class SysLogLoginExcel {
@Excel(name = "用户操作")
private String operation;
@Excel(name = "状态", replace = {"失败_0", "成功_1", "账号已锁定_1"})
private Integer status;
@Excel(name = "User-Agent")
private String userAgent;
@Excel(name = "操作IP")
private String ip;
@Excel(name = "用户名")
private String creatorName;
@Excel(name = "创建时间", format = "yyyy-MM-dd HH:mm:ss")
private Date createDate;
}

View File

@@ -0,0 +1,32 @@
package com.cnbm.admin.handler;
import com.cnbm.admin.entity.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.logout.LogoutHandler;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @Author weihongyang
* @Date 2022/6/23 11:24 AM
* @Version 1.0
*/
@Component
public class LogoutHandlerImpl implements LogoutHandler {
@Autowired
private RedisTemplate redisTemplate;
@Override
public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
//获取SecurityContextHolder中的用户id
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
String userid = loginUser.getSysUserEntity().getId().toString();
//删除redis中的值
redisTemplate.delete("login:"+userid);
}
}

View File

@@ -0,0 +1,38 @@
package com.cnbm.admin.handler;
import com.cnbm.admin.entity.LoginUser;
import com.cnbm.admin.utils.ResponseResult;
import com.cnbm.admin.utils.WebUtils;
import com.cnbm.common.utils.JsonUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.HttpStatus;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
import org.springframework.stereotype.Component;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @Author weihongyang
* @Date 2022/6/23 10:44 AM
* @Version 1.0
*/
@Component
public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler {
@Autowired
private RedisTemplate redisTemplate;
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
ResponseResult result = new ResponseResult(HttpStatus.OK.value(),"退出成功");
String json = JsonUtils.toJsonString(result);
WebUtils.renderString(response,json);
}
}

View File

@@ -0,0 +1,36 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.cnbm.admin.params;
import com.cnbm.admin.basic.BaseParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 主键请求参数对象
*
* @author jiff
* @date 2018/11/9
* @since 1.0
*/
@Data
@ApiModel("主键参数对象")
public class IdParam implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull(message = "主键不能为空")
@ApiModelProperty(value = "主键", required = true, example = "1", notes = "根据实际接口传递不同对象的主键")
private Long id;
}

View File

@@ -17,11 +17,11 @@ import java.io.Serializable;
public class LoginParam implements Serializable { public class LoginParam implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "用户名", required = true) @ApiModelProperty(value = "用户名", required = true, example = "admin")
@NotBlank(message="用户名不能为空") @NotBlank(message="用户名不能为空")
private String username; private String username;
@ApiModelProperty(value = "密码" , required = true) @ApiModelProperty(value = "密码" , required = true, example = "admin")
@NotBlank(message="密码不能为空") @NotBlank(message="密码不能为空")
private String password; private String password;

View File

@@ -1,9 +1,25 @@
package com.cnbm.admin.service; package com.cnbm.admin.service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/** /**
* @Author weihongyang * @Author weihongyang
* @Date 2022/6/8 8:55 AM * @Date 2022/6/8 8:55 AM
* @Version 1.0 * @Version 1.0
*/ */
public interface CaptchaService { public interface CaptchaService {
/**
* 图片验证码
*/
void create(HttpServletResponse response, String uuid) throws IOException;
/**
* 验证码效验
* @param uuid uuid
* @param code 验证码
* @return true成功 false失败
*/
boolean validate(String uuid, String code);
} }

View File

@@ -1,7 +1,7 @@
package com.cnbm.admin.service; package com.cnbm.admin.service;
import com.cnbm.admin.params.LoginParam; import com.cnbm.admin.params.LoginParam;
import com.cnbm.admin.utils.ResponseResult; import com.cnbm.common.utils.Result;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -12,5 +12,8 @@ import javax.servlet.http.HttpServletRequest;
*/ */
public interface LoginService { public interface LoginService {
ResponseResult login(HttpServletRequest request, LoginParam loginParam); Result login(HttpServletRequest request, LoginParam loginParam);
void logout(HttpServletRequest request);
} }

View File

@@ -0,0 +1,18 @@
package com.cnbm.admin.service;
import com.cnbm.admin.dto.SysLogLoginDTO;
import com.cnbm.admin.entity.SysLogLoginEntity;
import com.cnbm.common.page.PageData;
import com.cnbm.common.service.BaseService;
import java.util.List;
import java.util.Map;
public interface SysLogLoginService extends BaseService<SysLogLoginEntity> {
PageData<SysLogLoginDTO> page(Map<String, Object> params);
List<SysLogLoginDTO> list(Map<String, Object> params);
void save(SysLogLoginEntity entity);
}

View File

@@ -0,0 +1,77 @@
package com.cnbm.admin.service.impl;
import com.cnbm.admin.service.CaptchaService;
import com.cnbm.common.redis.RedisKeys;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.wf.captcha.SpecCaptcha;
import com.wf.captcha.base.Captcha;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
/**
* @Author weihongyang
* @Date 2022/6/23 12:29 PM
* @Version 1.0
*/
@Service
public class CaptchaServiceImpl implements CaptchaService {
@Autowired
private RedisTemplate redisTemplate;
/**
* Local Cache 5分钟过期
*/
Cache<String, String> localCache = CacheBuilder.newBuilder().maximumSize(1000).expireAfterAccess(5, TimeUnit.MINUTES).build();
@Override
public void create(HttpServletResponse response, String uuid) throws IOException {
response.setContentType("image/gif");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
//生成验证码
SpecCaptcha captcha = new SpecCaptcha(150, 40);
captcha.setLen(5);
captcha.setCharType(Captcha.TYPE_DEFAULT);
captcha.out(response.getOutputStream());
//保存到缓存
setCache(uuid, captcha.text());
}
@Override
public boolean validate(String uuid, String code) {
//获取验证码
String captcha = getCache(uuid);
//效验成功
if(code.equalsIgnoreCase(captcha)){
return true;
}
return false;
}
private void setCache(String key, String value){
key = RedisKeys.getCaptchaKey(key);
redisTemplate.opsForValue().set(key, value, 300,TimeUnit.SECONDS);
}
private String getCache(String key){
key = RedisKeys.getCaptchaKey(key);
String captcha = (String)redisTemplate.opsForValue().get(key);
//删除验证码
if(captcha != null){
redisTemplate.delete(key);
}
return captcha;
}
}

View File

@@ -1,18 +1,30 @@
package com.cnbm.admin.service.impl; package com.cnbm.admin.service.impl;
import com.cnbm.admin.entity.LoginUser; import com.cnbm.admin.entity.LoginUser;
import com.cnbm.admin.entity.SysLogLoginEntity;
import com.cnbm.admin.enums.LoginOperationEnum;
import com.cnbm.admin.enums.LoginStatusEnum;
import com.cnbm.admin.params.LoginParam; import com.cnbm.admin.params.LoginParam;
import com.cnbm.admin.service.CaptchaService;
import com.cnbm.admin.service.SysLogLoginService;
import com.cnbm.admin.utils.JwtUtil; import com.cnbm.admin.utils.JwtUtil;
import com.cnbm.admin.service.LoginService; import com.cnbm.admin.service.LoginService;
import com.cnbm.admin.utils.ResponseResult; import com.cnbm.admin.utils.ResponseResult;
import com.cnbm.common.exception.ErrorCode;
import com.cnbm.common.utils.IpUtils;
import com.cnbm.common.utils.Result;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.HttpHeaders;
import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
@@ -31,11 +43,33 @@ public class LoginServiceImpl implements LoginService {
@Autowired @Autowired
private AuthenticationManager authenticationManager; private AuthenticationManager authenticationManager;
@Autowired
private CaptchaService captchaService;
@Autowired
private SysLogLoginService sysLogLoginService;
@Override @Override
public ResponseResult login(HttpServletRequest request, LoginParam loginParam) { public Result login(HttpServletRequest request, LoginParam loginParam) {
//验证码是否正确
// boolean flag = captchaService.validate(loginParam.getUuid(), loginParam.getCaptcha());
// if(!flag){
// return new Result<>().error(ErrorCode.CAPTCHA_ERROR, "验证码错误");
// }
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginParam.getUsername(),loginParam.getPassword()); UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginParam.getUsername(),loginParam.getPassword());
Authentication authenticate = authenticationManager.authenticate(authenticationToken); Authentication authenticate = authenticationManager.authenticate(authenticationToken);
//登录日志
SysLogLoginEntity log = new SysLogLoginEntity();
log.setOperation(LoginOperationEnum.LOGIN.value());
log.setCreateDate(new Date());
log.setIp(IpUtils.getIpAddr(request));
log.setUserAgent(request.getHeader(HttpHeaders.USER_AGENT));
log.setCreatorName(loginParam.getUsername());
if (Objects.isNull(authenticate)) { if (Objects.isNull(authenticate)) {
log.setStatus(LoginStatusEnum.FAIL.value());
log.setCreatorName(loginParam.getUsername());
sysLogLoginService.save(log);
throw new RuntimeException("登录失败"); throw new RuntimeException("登录失败");
} }
//如果认证通过了使用userid生成一个jwt jwt存入ResponseResult返回 //如果认证通过了使用userid生成一个jwt jwt存入ResponseResult返回
@@ -46,6 +80,33 @@ public class LoginServiceImpl implements LoginService {
map.put("token",jwt); map.put("token",jwt);
//把完整的用户信息存入redis userid作为key //把完整的用户信息存入redis userid作为key
redisTemplate.opsForValue().set("login:"+userid,loginUser); redisTemplate.opsForValue().set("login:"+userid,loginUser);
return new ResponseResult(200,"登录成功",map); //登录成功
log.setStatus(LoginStatusEnum.SUCCESS.value());
log.setCreator(loginUser.getSysUserEntity().getId());
log.setCreatorName(loginUser.getUsername());
sysLogLoginService.save(log);
return new Result<>().ok(map);
} }
@Override
public void logout(HttpServletRequest request) {
//获取SecurityContextHolder中的用户id
UsernamePasswordAuthenticationToken authentication = (UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
Long userid = loginUser.getSysUserEntity().getId();
//日志
SysLogLoginEntity log = new SysLogLoginEntity();
log.setOperation(LoginOperationEnum.LOGOUT.value());
log.setIp(IpUtils.getIpAddr(request));
log.setUserAgent(request.getHeader(HttpHeaders.USER_AGENT));
log.setIp(IpUtils.getIpAddr(request));
log.setStatus(LoginStatusEnum.SUCCESS.value());
log.setCreator(userid);
log.setCreatorName(loginUser.getUsername());
log.setCreateDate(new Date());
sysLogLoginService.save(log);
//删除redis中的值
redisTemplate.delete("login:"+userid);
}
} }

View File

@@ -0,0 +1,59 @@
package com.cnbm.admin.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.cnbm.admin.dao.SysLogLoginDao;
import com.cnbm.admin.dto.SysLogLoginDTO;
import com.cnbm.admin.entity.SysLogLoginEntity;
import com.cnbm.admin.service.SysLogLoginService;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.service.impl.BaseServiceImpl;
import com.cnbm.common.utils.ConvertUtils;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
@Service
@Log4j2
public class SysLogLoginServiceImpl extends BaseServiceImpl<SysLogLoginDao, SysLogLoginEntity> implements SysLogLoginService {
@Override
public PageData<SysLogLoginDTO> page(Map<String, Object> params) {
IPage<SysLogLoginEntity> page = baseDao.selectPage(
getPage(params, Constant.CREATE_DATE, false),
getWrapper(params)
);
log.info("page======{}",page.toString());
return getPageData(page, SysLogLoginDTO.class);
}
@Override
public List<SysLogLoginDTO> list(Map<String, Object> params) {
List<SysLogLoginEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, SysLogLoginDTO.class);
}
private QueryWrapper<SysLogLoginEntity> getWrapper(Map<String, Object> params){
String status = (String) params.get("status");
String creatorName = (String) params.get("creatorName");
QueryWrapper<SysLogLoginEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(status), "status", status);
wrapper.like(StringUtils.isNotBlank(creatorName), "creator_name", creatorName);
return wrapper;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(SysLogLoginEntity entity) {
insert(entity);
}
}

View File

@@ -5,21 +5,24 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cnbm.admin.dto.SysMenuDTO; import com.cnbm.admin.dto.SysMenuDTO;
import com.cnbm.admin.dto.SysUserDTO; import com.cnbm.admin.dto.SysUserDTO;
import com.cnbm.admin.entity.LoginUser; import com.cnbm.admin.entity.LoginUser;
import com.cnbm.admin.entity.SysLogLoginEntity;
import com.cnbm.admin.entity.SysMenuEntity; import com.cnbm.admin.entity.SysMenuEntity;
import com.cnbm.admin.entity.SysUserEntity; import com.cnbm.admin.entity.SysUserEntity;
import com.cnbm.admin.enums.LoginOperationEnum;
import com.cnbm.admin.exception.LoginStatusException;
import com.cnbm.admin.service.SysMenuService; import com.cnbm.admin.service.SysMenuService;
import com.cnbm.common.utils.ConvertUtils; import com.cnbm.common.utils.ConvertUtils;
import com.cnbm.common.utils.IpUtils;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.security.authentication.DisabledException;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -43,9 +46,13 @@ public class UserDetailsServiceImpl implements UserDetailsService {
LambdaQueryWrapper<SysUserEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysUserEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(SysUserEntity::getUsername,username); lambdaQueryWrapper.eq(SysUserEntity::getUsername,username);
SysUserEntity sysUserEntity = userDao.selectOne(lambdaQueryWrapper); SysUserEntity sysUserEntity = userDao.selectOne(lambdaQueryWrapper);
if (Objects.isNull(sysUserEntity)) { if (Objects.isNull(sysUserEntity)) {
throw new UsernameNotFoundException("用户名不存在"); throw new UsernameNotFoundException("用户名不存在");
} }
if (sysUserEntity.getStatus() == 0) {
throw new LoginStatusException("该账户已被禁用,请联系管理员");
}
log.info("sysUserEntity的值是"+sysUserEntity.toString()); log.info("sysUserEntity的值是"+sysUserEntity.toString());
log.info("sysUserEntity.getSuperAdmin()=="+sysUserEntity.getSuperAdmin()); log.info("sysUserEntity.getSuperAdmin()=="+sysUserEntity.getSuperAdmin());
Set<String> userPermissions = sysMenuService.getUserPermissions(sysUserEntity); Set<String> userPermissions = sysMenuService.getUserPermissions(sysUserEntity);

View File

@@ -0,0 +1,136 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.cnbm.admin.utils;
import com.cnbm.admin.entity.LoginUser;
import com.cnbm.admin.entity.SysUserEntity;
import com.cnbm.admin.enums.WhetherEnum;
import lombok.Builder;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 接口支持基类
*
* @author jiff
* @date 2018/11/1
* @since 1.0
*/
public abstract class BaseSupportUtils {
/**
* 获取当前登录用户信息
*
* @return
*/
private static SysUserEntity getLoginUser() {
//登录用户信息
UsernamePasswordAuthenticationToken authentication = (UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
return loginUser.getSysUserEntity();
}
/**
* 设置公共字段值,一般用于创建新记录,包含以下字段:
*
* <p>
* {@link CommonField#enabled}<br>
* {@link CommonField#valid}<br>
* {@link CommonField#creatorId}<br>
* {@link CommonField#creatorName}<br>
* {@link CommonField#createTime}<br>
* {@link CommonField#updaterId}<br>
* {@link CommonField#updaterName}<br>
* {@link CommonField#updateTime}<br>
* </p>
*
* @param t 需要设置的对象
* @param ignoreProperties 忽略的字段
* @param <T>
*/
public static <T extends Serializable> T setCommonField(T t, String... ignoreProperties) {
CommonField commonField = CommonField.builder()
.enabled(WhetherEnum.YES.getValue())
.valid(WhetherEnum.YES.getValue())
.createTime(LocalDateTime.now())
.creatorId(getLoginUser().getId())
.creatorName(getLoginUser().getUsername())
.updateTime(LocalDateTime.now())
.updaterId(getLoginUser().getId())
.updaterName(getLoginUser().getUsername())
.build();
BeanUtils.copyProperties(commonField, t, ignoreProperties);
return t;
}
/**
* 设置更新的公共字段值,一般用于更新记录,包含以下字段:
*
* <p>
* {@link CommonField#updaterId}<br>
* {@link CommonField#updaterName}<br>
* {@link CommonField#updateTime}<br>
* </p>
*
* @param t 需要设置的对象
* @param <T>
*/
public static <T extends Serializable> T setUpdateCommonField(T t) {
CommonField commonField = CommonField.builder()
.updaterId(getLoginUser().getId())
.updaterName(getLoginUser().getUsername())
.updateTime(LocalDateTime.now())
.build();
BeanUtils.copyProperties(commonField, t, "enabled", "valid");
return t;
}
@Data
@Builder
private static class CommonField implements Serializable {
/**
* 启用状态:0 、停用1、启用
*/
private Integer enabled;
/**
* 删除标志,是否有效:1 可用 0不可用
*/
private Integer valid;
/**
* 创建人
*/
private Long creatorId;
/**
* 创建人
*/
private String creatorName;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新人
*/
private Long updaterId;
/**
* 更新人
*/
private String updaterName;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cnbm.admin.dao.SysLogLoginDao">
</mapper>

View File

@@ -9,19 +9,27 @@
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>ym-barcode</artifactId> <artifactId>ym-baisc</artifactId>
<properties> <properties>
<maven.compiler.source>8</maven.compiler.source> <maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target> <maven.compiler.target>8</maven.compiler.target>
</properties> </properties>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.github.kwhat</groupId> <groupId>com.cnbm</groupId>
<artifactId>jnativehook</artifactId> <artifactId>ym-admin</artifactId>
<version>2.2.2</version> <version>1.0-SNAPSHOT</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.cnbm</groupId>-->
<!-- <artifactId>ym-gateway</artifactId>-->
<!-- <version>1.0-SNAPSHOT</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.cnbm</groupId>
<artifactId>ym-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@@ -0,0 +1,133 @@
package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.admin.params.IdParam;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.FactoryDTO;
import com.cnbm.basic.excel.FactoryExcel;
import com.cnbm.basic.service.IFactoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 工厂 表 前端控制器
*
* @author why
* @since 2022-07-13
*/
@RestController
@RequestMapping("/basic/factory")
@Api(tags="工厂 表")
public class FactoryController {
@Autowired
private IFactoryService factoryService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "name", value = "名称", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "code", value = "编码", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "type", value = "工厂类型", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataTypeClass = Integer.class)
})
@PreAuthorize("@ex.hasAuthority('basic:factory:page')")
public Result<PageData<FactoryDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<FactoryDTO> page = factoryService.page(params);
return new Result<PageData<FactoryDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
@PreAuthorize("@ex.hasAuthority('basic:factory:info')")
public Result<FactoryDTO> get(@PathVariable("id") Long id){
FactoryDTO data = factoryService.get(id);
return new Result<FactoryDTO>().ok(data);
}
@PostMapping
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:factory:save')")
public Result save(@RequestBody FactoryDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
factoryService.save(dto);
return new Result();
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:factory:update')")
public Result update(@RequestBody FactoryDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
factoryService.update(dto);
return new Result();
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:factory:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
factoryService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@PreAuthorize("@ex.hasAuthority('basic:factory:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<FactoryDTO> list = factoryService.list(params);
ExcelUtils.exportExcelToTarget(response, "Factory", list, FactoryExcel.class);
}
@PostMapping("status")
@ApiOperation("改变状态")
@LogOperation("改变状态")
public Result changeStatus(@RequestBody IdParam id){
factoryService.changeStatus(id.getId());
return new Result();
}
@PostMapping(value = "list")
@ApiOperation(value = "获取工厂列表")
@LogOperation("获取工厂列表")
public List<FactoryDTO> list() {
return factoryService.list();
}
}

View File

@@ -0,0 +1,142 @@
package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.FeaturesStageProcedureRelationDTO;
import com.cnbm.basic.excel.FeaturesStageProcedureRelationExcel;
import com.cnbm.basic.service.IFeaturesStageProcedureRelationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 过程检验-工艺-检验参数 关系表 前端控制器
*
* @author why
* @since 2022-09-01
*/
@RestController
@RequestMapping("/basic/featuresStageProcedureRelation")
@Api(tags="过程检验-工艺-检验参数 关系表 ")
public class FeaturesStageProcedureRelationController {
@Autowired
private IFeaturesStageProcedureRelationService featuresStageProcedureRelationService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "id", value = "id", paramType = "query", dataTypeClass = Long.class)
})
@PreAuthorize("@ex.hasAuthority('basic:featuresStageProcedureRelation:page')")
public Result<PageData<FeaturesStageProcedureRelationDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<FeaturesStageProcedureRelationDTO> page = featuresStageProcedureRelationService.page(params);
return new Result<PageData<FeaturesStageProcedureRelationDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
@PreAuthorize("@ex.hasAuthority('basic:featuresStageProcedureRelation:info')")
public Result<FeaturesStageProcedureRelationDTO> get(@PathVariable("id") Long id){
FeaturesStageProcedureRelationDTO data = featuresStageProcedureRelationService.get(id);
return new Result<FeaturesStageProcedureRelationDTO>().ok(data);
}
@PostMapping
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:featuresStageProcedureRelation:save')")
public Result<Long> save(@RequestBody FeaturesStageProcedureRelationDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
featuresStageProcedureRelationService.save(dto);
return new Result<Long>().ok(dto.getId());
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:featuresStageProcedureRelation:update')")
public Result<Long> update(@RequestBody FeaturesStageProcedureRelationDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
featuresStageProcedureRelationService.update(dto);
return new Result<Long>().ok(dto.getId());
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:featuresStageProcedureRelation:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
featuresStageProcedureRelationService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@PreAuthorize("@ex.hasAuthority('basic:featuresStageProcedureRelation:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<FeaturesStageProcedureRelationDTO> list = featuresStageProcedureRelationService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, FeaturesStageProcedureRelationExcel.class);
}
@PostMapping("batchInsert")
@ApiOperation("批量保存")
public Result<Long> batchInsert(@RequestBody FeaturesStageProcedureRelationDTO[] lists){
//效验数据
//ValidatorUtils.validateEntity(lists, AddGroup.class, DefaultGroup.class);
featuresStageProcedureRelationService.batchInsert(lists);
return new Result();
}
@DeleteMapping("deleteByStageProcedure")
@ApiOperation("删除 依据工序id 检验阶段")
@ApiImplicitParams({
@ApiImplicitParam(name = "productId", value = "产品", paramType = "query", dataTypeClass = Long.class),
@ApiImplicitParam(name = "inspectionStage", value = "检测阶段", paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = "workingProcedureId", value = "工序", paramType = "query", dataTypeClass = Long.class)
})
public Result deleteByStageProcedure(@ApiIgnore @RequestParam Map<String, Object> params){
featuresStageProcedureRelationService.deleteByStageProcedure(params);
return new Result();
}
}

View File

@@ -0,0 +1,155 @@
package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.admin.params.IdParam;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.MachineDTO;
import com.cnbm.basic.excel.MachineExcel;
import com.cnbm.basic.service.IMachineService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 机台表 前端控制器
*
* @author why
* @since 2022-07-15
*/
@RestController
@RequestMapping("/basic/machine")
@Api(tags="机台表")
public class MachineController {
@Autowired
private IMachineService machineService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "name", value = "名称", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "code", value = "编码", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataTypeClass = Integer.class)
})
@PreAuthorize("@ex.hasAuthority('basic:machine:page')")
public Result<PageData<MachineDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<MachineDTO> page = machineService.page(params);
return new Result<PageData<MachineDTO>>().ok(page);
}
/*
@GetMapping("page2")
@ApiOperation("分页2")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataTypeClass = Integer.class)
})
//@PreAuthorize("@ex.hasAuthority('basic:machine:page')")
public Result<PageData<MachineDTO>> page2(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<MachineDTO> page = machineService.page1(params);
return new Result<PageData<MachineDTO>>().ok(page);
}
*/
@GetMapping("{id}")
@ApiOperation("信息")
@PreAuthorize("@ex.hasAuthority('basic:machine:info')")
public Result<MachineDTO> get(@PathVariable("id") Long id){
MachineDTO data = machineService.get(id);
return new Result<MachineDTO>().ok(data);
}
@PostMapping
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:machine:save')")
public Result save(@RequestBody MachineDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
machineService.save(dto);
return new Result();
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:machine:update')")
public Result update(@RequestBody MachineDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
machineService.update(dto);
return new Result();
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:machine:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
machineService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@PreAuthorize("@ex.hasAuthority('basic:machine:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<MachineDTO> list = machineService.list(params);
ExcelUtils.exportExcelToTarget(response, "Machine", list, MachineExcel.class);
}
@PostMapping("status")
@ApiOperation("改变状态")
@LogOperation("改变状态")
public Result changeStatus(@RequestBody IdParam id){
machineService.changeStatus(id.getId());
return new Result().ok(true);
}
@PostMapping(value = "list")
@ApiOperation(value = "获取机台列表")
@LogOperation("获取机台列表")
@ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataTypeClass = Integer.class)
public List<MachineDTO> list(@ApiIgnore @RequestParam Map<String, Object> params) {
return machineService.list(params);
}
}

View File

@@ -0,0 +1,135 @@
package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.admin.params.IdParam;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.MeasureToolDTO;
import com.cnbm.basic.excel.MeasureToolExcel;
import com.cnbm.basic.service.IMeasureToolService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 量具表 前端控制器
*
* @author why
* @since 2022-07-13
*/
@RestController
@RequestMapping("/basic/measureTool")
@Api(tags="量具表")
public class MeasureToolController {
@Autowired
private IMeasureToolService measureToolService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "name", value = "名称", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "code", value = "编码", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataTypeClass = Integer.class)
})
@PreAuthorize("@ex.hasAuthority('basic:measureTool:page')")
public Result<PageData<MeasureToolDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<MeasureToolDTO> page = measureToolService.page(params);
return new Result<PageData<MeasureToolDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
@PreAuthorize("@ex.hasAuthority('basic:measureTool:info')")
public Result<MeasureToolDTO> get(@PathVariable("id") Long id){
MeasureToolDTO data = measureToolService.get(id);
return new Result<MeasureToolDTO>().ok(data);
}
@PostMapping
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:measureTool:save')")
public Result save(@RequestBody MeasureToolDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
measureToolService.save(dto);
return new Result();
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:measureTool:update')")
public Result update(@RequestBody MeasureToolDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
measureToolService.update(dto);
return new Result();
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:measureTool:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
measureToolService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@PreAuthorize("@ex.hasAuthority('basic:measureTool:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<MeasureToolDTO> list = measureToolService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, MeasureToolExcel.class);
}
@PostMapping("status")
@ApiOperation("改变状态")
@LogOperation("改变状态")
public Result changeStatus(@RequestBody IdParam id){
measureToolService.changeStatus(id.getId());
return new Result();
}
@PostMapping(value = "list")
@ApiOperation(value = "获取量具列表")
@LogOperation("获取控制图形列表")
public List<MeasureToolDTO> list() {
return measureToolService.list();
}
}

View File

@@ -0,0 +1,129 @@
package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.admin.params.IdParam;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.PlatformDTO;
import com.cnbm.basic.excel.PlatformExcel;
import com.cnbm.basic.service.IPlatformService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 站点表 前端控制器
*
* @author why
* @since 2022-07-13
*/
@RestController
@RequestMapping("/basic/platform")
@Api(tags="站点表")
public class PlatformController {
@Autowired
private IPlatformService platformService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "name", value = "名称", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "code", value = "编码", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataTypeClass = Integer.class)
})
@PreAuthorize("@ex.hasAuthority('basic:platform:page')")
public Result<PageData<PlatformDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<PlatformDTO> page = platformService.page(params);
return new Result<PageData<PlatformDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
@PreAuthorize("@ex.hasAuthority('basic:platform:info')")
public Result<PlatformDTO> get(@PathVariable("id") Long id){
PlatformDTO data = platformService.get(id);
return new Result<PlatformDTO>().ok(data);
}
@PostMapping
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:platform:save')")
public Result save(@RequestBody PlatformDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
platformService.save(dto);
return new Result();
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:platform:update')")
public Result update(@RequestBody PlatformDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
platformService.update(dto);
return new Result();
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:platform:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
platformService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@PreAuthorize("@ex.hasAuthority('basic:platform:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<PlatformDTO> list = platformService.list(params);
ExcelUtils.exportExcelToTarget(response, "Platform", list, PlatformExcel.class);
}
@PostMapping("status")
@ApiOperation("改变状态")
@LogOperation("改变状态")
public Result changeStatus(@RequestBody IdParam id){
platformService.changeStatus(id.getId());
return new Result();
}
}

View File

@@ -0,0 +1,139 @@
package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.admin.params.IdParam;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.ProductDTO;
import com.cnbm.basic.excel.ProductExcel;
import com.cnbm.basic.service.IProductService;
import com.cnbm.common.vo.IdVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 产品 表 前端控制器
*
* @author why
* @since 2022-07-11
*/
@RestController
@RequestMapping("/basic/product")
@Api(tags="产品 表")
public class ProductController {
@Autowired
private IProductService productService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "name", value = "名称", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "code", value = "编码", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = "product_type_id", value = "产品类型id", paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = "inspection_stage", value = "检验阶段1 进货检验、 2 过程检验、 3 成品检验、 4 出货检验", paramType = "query", dataTypeClass = String.class)
})
@PreAuthorize("@ex.hasAuthority('basic:product:page')")
public Result<PageData<ProductDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<ProductDTO> page = productService.page(params);
return new Result<PageData<ProductDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
@PreAuthorize("@ex.hasAuthority('basic:product:info')")
public Result<ProductDTO> get(@PathVariable("id") Long id){
ProductDTO data = productService.get(id);
return new Result<ProductDTO>().ok(data);
}
@PostMapping("save")
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:product:save')")
public IdVo save(@RequestBody ProductDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
return productService.add(dto);
//return new Result();
}
@PutMapping("update")
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:product:update')")
public Result update(@RequestBody ProductDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
productService.update(dto);
return new Result();
}
@DeleteMapping("delete")
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:product:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
productService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@PreAuthorize("@ex.hasAuthority('basic:product:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<ProductDTO> list = productService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, ProductExcel.class);
}
@PostMapping("status")
@ApiOperation("改变状态")
@LogOperation("改变状态")
public Result changeStatus(@RequestBody IdParam id){
productService.changeStatus(id.getId());
return new Result();
}
@PostMapping(value = "list")
@ApiOperation(value = "获取产品列表")
@LogOperation("获取产品列表")
public List<ProductDTO> list() {
return productService.list();
}
}

View File

@@ -0,0 +1,128 @@
package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.basic.dto.ProductWorkingprocedureRelationDTO;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.ProductFactoryRelationDTO;
import com.cnbm.basic.excel.ProductFactoryRelationExcel;
import com.cnbm.basic.service.IProductFactoryRelationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 产品-工厂 关系表 前端控制器
*
* @author why
* @since 2022-07-27
*/
@RestController
@RequestMapping("/basic/productFactoryRelation")
@Api(tags="产品-工厂 关系表")
public class ProductFactoryRelationController {
@Autowired
private IProductFactoryRelationService productFactoryRelationService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "id", value = "id", paramType = "query", dataTypeClass = Long.class)
})
@PreAuthorize("@ex.hasAuthority('basic:productFactoryRelation:page')")
public Result<PageData<ProductFactoryRelationDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<ProductFactoryRelationDTO> page = productFactoryRelationService.page(params);
return new Result<PageData<ProductFactoryRelationDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
@PreAuthorize("@ex.hasAuthority('basic:productFactoryRelation:info')")
public Result<ProductFactoryRelationDTO> get(@PathVariable("id") Long id){
ProductFactoryRelationDTO data = productFactoryRelationService.get(id);
return new Result<ProductFactoryRelationDTO>().ok(data);
}
@PostMapping
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:productFactoryRelation:save')")
public Result save(@RequestBody ProductFactoryRelationDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
productFactoryRelationService.save(dto);
return new Result();
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:productFactoryRelation:update')")
public Result update(@RequestBody ProductFactoryRelationDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
productFactoryRelationService.update(dto);
return new Result();
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:productFactoryRelation:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
productFactoryRelationService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@PreAuthorize("@ex.hasAuthority('basic:productFactoryRelation:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<ProductFactoryRelationDTO> list = productFactoryRelationService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, ProductFactoryRelationExcel.class);
}
@PostMapping("batchInsertFactory")
@ApiOperation("添加多个工厂关联")
@LogOperation("添加多个工厂关联")
public Result batchInsertFactory(@RequestBody ProductFactoryRelationDTO[] lists){
productFactoryRelationService.batchInsertFactory(lists);
return new Result();
}
}

View File

@@ -0,0 +1,175 @@
package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.admin.params.IdParam;
import com.cnbm.basic.dto.*;
import com.cnbm.basic.entity.ProductFeatures;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.excel.ProductFeaturesExcel;
import com.cnbm.basic.service.IProductFeaturesService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 产品特性 表 前端控制器
*
* @author why
* @since 2022-07-15
*/
@RestController
@RequestMapping("/basic/productFeatures")
@Api(tags="产品特性 表")
public class ProductFeaturesController {
@Autowired
private IProductFeaturesService productFeaturesService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "id", value = "id", paramType = "query", dataTypeClass = Long.class)
})
@PreAuthorize("@ex.hasAuthority('basic:productFeatures:page')")
public Result<PageData<ProductFeaturesDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<ProductFeaturesDTO> page = productFeaturesService.page(params);
return new Result<PageData<ProductFeaturesDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
@PreAuthorize("@ex.hasAuthority('basic:productFeatures:info')")
public Result<ProductFeaturesDTO> get(@PathVariable("id") Long id){
ProductFeaturesDTO data = productFeaturesService.get(id);
return new Result<ProductFeaturesDTO>().ok(data);
}
@PostMapping
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:productFeatures:save')")
public Result save(@RequestBody ProductFeaturesDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
productFeaturesService.save(dto);
return new Result();
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:productFeatures:update')")
public Result update(@RequestBody ProductFeaturesDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
productFeaturesService.update(dto);
return new Result();
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:productFeatures:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
productFeaturesService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@ApiImplicitParams({
@ApiImplicitParam(name = "productId", value = "产品", paramType = "query", dataTypeClass = Long.class),
@ApiImplicitParam(name = "inspectionStage", value = "检测阶段", paramType = "query", dataTypeClass = Integer.class)
})
@PreAuthorize("@ex.hasAuthority('basic:productFeatures:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<ProductFeaturesDTO> list = productFeaturesService.getFeaturesList(params);
ExcelUtils.exportExcelToTarget(response, "ProductFeatures", list, ProductFeaturesExcel.class);
}
@PostMapping("getProductFeaturesByProductId")
@ApiOperation("查询产品特性 依据产品id")
public Result<List<ProductFeaturesDTO>> getProductFeaturesByProductId(@RequestBody IdParam id){
List<ProductFeaturesDTO> list = productFeaturesService.getProductFeaturesByProductId(id.getId());
return new Result<List<ProductFeaturesDTO>>().ok(list);
}
@PostMapping("getFeaturesByStageProcedure")
@ApiOperation("查询依据工序id 检验阶段")
@ApiImplicitParams({
@ApiImplicitParam(name = "productId", value = "产品", paramType = "query", dataTypeClass = Long.class),
//@ApiImplicitParam(name = "workingProcedureId", value = "工序", paramType = "query", dataTypeClass = Long.class),
@ApiImplicitParam(name = "inspectionStage", value = "检测阶段", paramType = "query", dataTypeClass = Integer.class)
})
public Result<List<FeaturesProcedureDTO>> getFeaturesByStageProcedure(@ApiIgnore @RequestParam Map<String, Object> params){
List<FeaturesProcedureDTO> list = productFeaturesService.getFeaturesByStageProcedure(params);
return new Result<List<FeaturesProcedureDTO>>().ok(list);
}
@PutMapping("batchUpdate")
@ApiOperation("批量更新特性")
public Result batchUpdate(@RequestBody ProductFeaturesDTO[] lists){
productFeaturesService.batchUpdate(lists);
return new Result();
}
@PostMapping("getFeaturesList")
@ApiOperation("特性列表")
@ApiImplicitParams({
@ApiImplicitParam(name = "productId", value = "产品", paramType = "query", dataTypeClass = Long.class),
@ApiImplicitParam(name = "inspectionStage", value = "检测阶段", paramType = "query", dataTypeClass = Integer.class)
})
public Result<List<ProductFeaturesDTO>> getFeaturesList(@ApiIgnore @RequestParam Map<String, Object> params){
List<ProductFeaturesDTO> list = productFeaturesService.getFeaturesList(params);
return new Result<List<ProductFeaturesDTO>>().ok(list);
}
@PostMapping(value = "list")
@ApiOperation(value = "获取特性列表")
@LogOperation("获取特性列表")
public List<ProductFeaturesDTO> list() {
return productFeaturesService.list();
}
@PostMapping("getProductFeaturesByType")
@ApiOperation("根据特性类型 获取特性列表 计量型1 计数型2")
public List<ProductFeaturesDTO> getProductFeaturesByType(Integer type){
return productFeaturesService.getProductFeaturesByType(type);
}
}

View File

@@ -0,0 +1,117 @@
package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.ProductFeaturesHisDTO;
import com.cnbm.basic.excel.ProductFeaturesHisExcel;
import com.cnbm.basic.service.IProductFeaturesHisService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 产品特性 历史表 前端控制器
*
* @author why
* @since 2022-07-15
*/
@RestController
@RequestMapping("/basic/productFeaturesHis")
@Api(tags="产品特性 历史表")
public class ProductFeaturesHisController {
@Autowired
private IProductFeaturesHisService productFeaturesHisService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "id", value = "id", paramType = "query", dataTypeClass = Long.class)
})
@PreAuthorize("@ex.hasAuthority('basic:productFeaturesHis:page')")
public Result<PageData<ProductFeaturesHisDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<ProductFeaturesHisDTO> page = productFeaturesHisService.page(params);
return new Result<PageData<ProductFeaturesHisDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
@PreAuthorize("@ex.hasAuthority('basic:productFeaturesHis:info')")
public Result<ProductFeaturesHisDTO> get(@PathVariable("id") Long id){
ProductFeaturesHisDTO data = productFeaturesHisService.get(id);
return new Result<ProductFeaturesHisDTO>().ok(data);
}
@PostMapping
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:productFeaturesHis:save')")
public Result save(@RequestBody ProductFeaturesHisDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
productFeaturesHisService.save(dto);
return new Result();
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:productFeaturesHis:update')")
public Result update(@RequestBody ProductFeaturesHisDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
productFeaturesHisService.update(dto);
return new Result();
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:productFeaturesHis:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
productFeaturesHisService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@PreAuthorize("@ex.hasAuthority('basic:productFeaturesHis:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<ProductFeaturesHisDTO> list = productFeaturesHisService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, ProductFeaturesHisExcel.class);
}
}

View File

@@ -0,0 +1,136 @@
package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.admin.params.IdParam;
import com.cnbm.basic.dto.UnitDTO;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.ProductTypeDTO;
import com.cnbm.basic.excel.ProductTypeExcel;
import com.cnbm.basic.service.IProductTypeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 产品类型 表 前端控制器
*
* @author why
* @since 2022-06-30
*/
@RestController
@RequestMapping("/basic/productType")
@Api(tags="产品类型 表")
public class ProductTypeController {
@Autowired
private IProductTypeService productTypeService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "name", value = "名称", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "code", value = "编码", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataTypeClass = Integer.class)
})
@PreAuthorize("@ex.hasAuthority('basic:productType:page')")
public Result<PageData<ProductTypeDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<ProductTypeDTO> page = productTypeService.page(params);
return new Result<PageData<ProductTypeDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
@PreAuthorize("@ex.hasAuthority('basic:productType:info')")
public Result<ProductTypeDTO> get(@PathVariable("id") Long id){
ProductTypeDTO data = productTypeService.get(id);
return new Result<ProductTypeDTO>().ok(data);
}
@PostMapping
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:productType:save')")
public Result save(@RequestBody ProductTypeDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
productTypeService.save(dto);
return new Result();
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:productType:update')")
public Result update(@RequestBody ProductTypeDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
productTypeService.update(dto);
return new Result();
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:productType:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
productTypeService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@PreAuthorize("@ex.hasAuthority('basic:productType:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<ProductTypeDTO> list = productTypeService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, ProductTypeExcel.class);
}
@PostMapping("status")
@ApiOperation("改变状态")
@LogOperation("改变状态")
public Result changeStatus(@RequestBody IdParam id){
productTypeService.changeStatus(id.getId());
return new Result();
}
@PostMapping(value = "list")
@ApiOperation(value = "获取产品类型列表")
public List<ProductTypeDTO> list() {
return productTypeService.list();
}
}

View File

@@ -0,0 +1,170 @@
package com.cnbm.basic.controller;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.admin.params.IdParam;
import com.cnbm.basic.dto.SequenceDTO;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.ProductWorkingprocedureRelationDTO;
import com.cnbm.basic.excel.ProductWorkingprocedureRelationExcel;
import com.cnbm.basic.service.IProductWorkingprocedureRelationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 工序 表 前端控制器
*
* @author why
* @since 2022-07-15
*/
@RestController
@RequestMapping("/basic/productWorkingprocedureRelation")
@Api(tags="产品-工序 关系表")
public class ProductWorkingprocedureRelationController {
@Autowired
private IProductWorkingprocedureRelationService productWorkingprocedureRelationService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "id", value = "id", paramType = "query", dataTypeClass = Long.class)
})
@PreAuthorize("@ex.hasAuthority('basic:productWorkingprocedureRelation:page')")
public Result<PageData<ProductWorkingprocedureRelationDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<ProductWorkingprocedureRelationDTO> page = productWorkingprocedureRelationService.page(params);
return new Result<PageData<ProductWorkingprocedureRelationDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
@PreAuthorize("@ex.hasAuthority('basic:productWorkingprocedureRelation:info')")
public Result<ProductWorkingprocedureRelationDTO> get(@PathVariable("id") Long id){
ProductWorkingprocedureRelationDTO data = productWorkingprocedureRelationService.get(id);
return new Result<ProductWorkingprocedureRelationDTO>().ok(data);
}
@PostMapping("save")
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:productWorkingprocedureRelation:save')")
public Result save(@RequestBody ProductWorkingprocedureRelationDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
productWorkingprocedureRelationService.save(dto);
if(ObjectUtils.isNotNull(dto.getWorkingProcedureId())) {
return new Result();
}
else{
return new Result().error(1,"该工艺已经绑定");
}
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:productWorkingprocedureRelation:update')")
public Result update(@RequestBody ProductWorkingprocedureRelationDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
productWorkingprocedureRelationService.update(dto);
return new Result();
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:productWorkingprocedureRelation:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
productWorkingprocedureRelationService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@PreAuthorize("@ex.hasAuthority('basic:productWorkingprocedureRelation:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<ProductWorkingprocedureRelationDTO> list = productWorkingprocedureRelationService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, ProductWorkingprocedureRelationExcel.class);
}
@GetMapping("getWorkingprocedureByProductId/{productId}")
@ApiOperation("查询所有工序 依据产品id")
@LogOperation("查询所有工序 依据产品id")
public Result<List<ProductWorkingprocedureRelationDTO>> getWorkingprocedureByProductId(@PathVariable("productId") Long productId){
List<ProductWorkingprocedureRelationDTO> list = productWorkingprocedureRelationService.getWorkingprocedureByProductId(productId);
return new Result<List<ProductWorkingprocedureRelationDTO>>().ok(list);
}
@PostMapping("batchInsertWorkingprocedure")
@ApiOperation("添加工序流程")
@LogOperation("添加工序流程")
//@PreAuthorize("@ex.hasAuthority('basic:productWorkingprocedureRelation:batchInsertWorkingprocedure')")
public Result batchInsertWorkingprocedure(@RequestBody ProductWorkingprocedureRelationDTO[] lists){
productWorkingprocedureRelationService.batchInsertWorkingprocedure(lists);
return new Result();
}
@PutMapping("sequenceUp")
@ApiOperation("产品工序上移")
// @ApiImplicitParams({
// @ApiImplicitParam(name = "productId", value = "产品", paramType = "query", dataTypeClass = Long.class),
// @ApiImplicitParam(name = "index", value = "产品工序序号", paramType = "query", dataTypeClass = Integer.class)
// })
public Result sequenceUp(@RequestBody SequenceDTO sequenceDTO){
productWorkingprocedureRelationService.sequenceUp(sequenceDTO);
return new Result();
}
@PutMapping("sequenceDown")
@ApiOperation("产品工序下移")
// @ApiImplicitParams({
// @ApiImplicitParam(name = "productId", value = "产品", paramType = "query", dataTypeClass = Long.class),
// @ApiImplicitParam(name = "index", value = "产品工序序号", paramType = "query", dataTypeClass = Integer.class)
// })
public Result sequenceDown(@RequestBody SequenceDTO sequenceDTO){
productWorkingprocedureRelationService.sequenceDown(sequenceDTO);
return new Result();
}
}

View File

@@ -0,0 +1,124 @@
package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.ShiftDTO;
import com.cnbm.basic.excel.ShiftExcel;
import com.cnbm.basic.service.IShiftService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 班次 表 前端控制器
*
* @author why
* @since 2022-07-13
*/
@RestController
@RequestMapping("/basic/shift")
@Api(tags="班次 表")
public class ShiftController {
@Autowired
private IShiftService shiftService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "id", value = "id", paramType = "query", dataTypeClass = Long.class)
})
@PreAuthorize("@ex.hasAuthority('basic:shift:page')")
public Result<PageData<ShiftDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<ShiftDTO> page = shiftService.page(params);
return new Result<PageData<ShiftDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
@PreAuthorize("@ex.hasAuthority('basic:shift:info')")
public Result<ShiftDTO> get(@PathVariable("id") Long id){
ShiftDTO data = shiftService.get(id);
return new Result<ShiftDTO>().ok(data);
}
@PostMapping
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:shift:save')")
public Result save(@RequestBody ShiftDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
shiftService.save(dto);
return new Result();
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:shift:update')")
public Result update(@RequestBody ShiftDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
shiftService.update(dto);
return new Result();
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:shift:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
shiftService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@PreAuthorize("@ex.hasAuthority('basic:shift:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<ShiftDTO> list = shiftService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, ShiftExcel.class);
}
@PostMapping(value = "list")
@ApiOperation(value = "获取班次列表")
@LogOperation("获取班次列表")
public List<ShiftDTO> list() {
return shiftService.list();
}
}

View File

@@ -0,0 +1,123 @@
package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.basic.dto.ShiftDTO;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.TeamDTO;
import com.cnbm.basic.excel.TeamExcel;
import com.cnbm.basic.service.ITeamService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 班组 表 前端控制器
*
* @author why
* @since 2022-07-13
*/
@RestController
@RequestMapping("/basic/team")
@Api(tags="班组 表")
public class TeamController {
@Autowired
private ITeamService teamService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "id", value = "id", paramType = "query", dataTypeClass = Long.class)
})
@PreAuthorize("@ex.hasAuthority('basic:team:page')")
public Result<PageData<TeamDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<TeamDTO> page = teamService.page(params);
return new Result<PageData<TeamDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
@PreAuthorize("@ex.hasAuthority('basic:team:info')")
public Result<TeamDTO> get(@PathVariable("id") Long id){
TeamDTO data = teamService.get(id);
return new Result<TeamDTO>().ok(data);
}
@PostMapping
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:team:save')")
public Result save(@RequestBody TeamDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
teamService.save(dto);
return new Result();
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:team:update')")
public Result update(@RequestBody TeamDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
teamService.update(dto);
return new Result();
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:team:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
teamService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@PreAuthorize("@ex.hasAuthority('basic:team:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<TeamDTO> list = teamService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, TeamExcel.class);
}
@PostMapping(value = "list")
@ApiOperation(value = "获取班组列表")
@LogOperation("获取班组列表")
public List<TeamDTO> list() { return teamService.list(); }
}

View File

@@ -0,0 +1,137 @@
package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.admin.params.IdParam;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.UnitDTO;
import com.cnbm.basic.excel.UnitExcel;
import com.cnbm.basic.service.IUnitService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import javax.validation.groups.Default;
import java.util.List;
import java.util.Map;
/**
* 单位 表 前端控制器
*
* @author why
* @since 2022-06-30
*/
@RestController
@RequestMapping("/basic/unit")
@Api(tags="单位 表")
public class UnitController {
@Autowired
private IUnitService unitService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "name", value = "名称", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "code", value = "编码", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataTypeClass = Integer.class)
})
@PreAuthorize("@ex.hasAuthority('basic:unit:page')")
public Result<PageData<UnitDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<UnitDTO> page = unitService.page(params);
return new Result<PageData<UnitDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
//@PreAuthorize("@ex.hasAuthority('basic:unit:info')")
public Result<UnitDTO> get(@PathVariable("id") Long id){
UnitDTO data = unitService.get(id);
return new Result<UnitDTO>().ok(data);
}
@PostMapping
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:unit:save')")
public Result save(@RequestBody UnitDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
unitService.save(dto);
return new Result();
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:unit:update')")
public Result update(@RequestBody UnitDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
unitService.update(dto);
return new Result();
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:unit:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
unitService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@PreAuthorize("@ex.hasAuthority('basic:unit:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<UnitDTO> list = unitService.list(params);
ExcelUtils.exportExcelToTarget(response, "Unit", list, UnitExcel.class);
}
@PostMapping("status")
@ApiOperation("改变状态")
@LogOperation("改变状态")
public Result changeStatus(@RequestBody IdParam id){
unitService.changeStatus(id.getId());
return new Result();
}
@PostMapping(value = "list")
@ApiOperation(value = "获取单位列表")
@LogOperation("获取单位列表")
public List<UnitDTO> list() {
return unitService.list();
}
}

View File

@@ -0,0 +1,157 @@
package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.admin.params.IdParam;
import com.cnbm.basic.dto.UnitDTO;
import com.cnbm.basic.dto.WorkingProcedureTypeDTO;
import com.cnbm.basic.entity.WorkingProcedure;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.WorkingProcedureDTO;
import com.cnbm.basic.excel.WorkingProcedureExcel;
import com.cnbm.basic.service.IWorkingProcedureService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 工序 表 前端控制器
*
* @author why
* @since 2022-07-15
*/
@RestController
@RequestMapping("/basic/workingProcedure")
@Api(tags="工序 表")
public class WorkingProcedureController {
@Autowired
private IWorkingProcedureService workingProcedureService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "name", value = "名称", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "code", value = "编码", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataTypeClass = Integer.class)
})
@PreAuthorize("@ex.hasAuthority('basic:workingProcedure:page')")
public Result<PageData<WorkingProcedureDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<WorkingProcedureDTO> page = workingProcedureService.page(params);
return new Result<PageData<WorkingProcedureDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
@PreAuthorize("@ex.hasAuthority('basic:workingProcedure:info')")
public Result<WorkingProcedureDTO> get(@PathVariable("id") Long id){
WorkingProcedureDTO data = workingProcedureService.get(id);
return new Result<WorkingProcedureDTO>().ok(data);
}
@PostMapping
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:workingProcedure:save')")
public Result save(@RequestBody WorkingProcedureDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
workingProcedureService.save(dto);
return new Result();
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:workingProcedure:update')")
public Result update(@RequestBody WorkingProcedureDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
workingProcedureService.update(dto);
return new Result();
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:workingProcedure:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
workingProcedureService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@PreAuthorize("@ex.hasAuthority('basic:workingProcedure:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<WorkingProcedureDTO> list = workingProcedureService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, WorkingProcedureExcel.class);
}
@PostMapping("status")
@ApiOperation("改变状态")
@LogOperation("改变状态")
public Result changeStatus(@RequestBody IdParam id){
workingProcedureService.changeStatus(id.getId());
return new Result();
}
@GetMapping("getWorkingprocedureByProductId/{productId}")
@ApiOperation("查询所有工序 依据产品id")
@LogOperation("查询所有工序 依据产品id")
public Result<List<WorkingProcedureDTO>> getWorkingprocedureByProductId(@PathVariable("productId") Long productId){
List<WorkingProcedureDTO> list = workingProcedureService.getWorkingProcedureByProductId(productId);
return new Result<List<WorkingProcedureDTO>>().ok(list);
}
@PostMapping(value = "list")
@ApiOperation(value = "获取工序列表")
public List<WorkingProcedureDTO> list() {
return workingProcedureService.list();
}
@PostMapping(value = "listByType/{typeId}")
@ApiOperation(value = "根据工序类型 获取工序列表")
public List<WorkingProcedure> listByType(@PathVariable("typeId") Long typeId) {
return workingProcedureService.listByType(typeId);
}
@PostMapping(value = "listWithType")
@ApiOperation(value = "工序类型及对应工序列表")
public List<WorkingProcedureTypeDTO> listWithType () {
return workingProcedureService.listWithType();
}
}

View File

@@ -0,0 +1,136 @@
package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.admin.params.IdParam;
import com.cnbm.basic.dto.WorkingProcedureDTO;
import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData;
import com.cnbm.common.utils.ExcelUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.common.validator.AssertUtils;
import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.WorkingProcedureTypeDTO;
import com.cnbm.basic.excel.WorkingProcedureTypeExcel;
import com.cnbm.basic.service.IWorkingProcedureTypeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 工序类型表 表 前端控制器
*
* @author why
* @since 2022-07-15
*/
@RestController
@RequestMapping("/basic/workingProcedureType")
@Api(tags="工序类型表 表")
public class WorkingProcedureTypeController {
@Autowired
private IWorkingProcedureTypeService workingProcedureTypeService;
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class),
@ApiImplicitParam(name = "name", value = "名称", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "code", value = "编码", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataTypeClass = Integer.class)
})
@PreAuthorize("@ex.hasAuthority('basic:workingProcedureType:page')")
public Result<PageData<WorkingProcedureTypeDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
PageData<WorkingProcedureTypeDTO> page = workingProcedureTypeService.page(params);
return new Result<PageData<WorkingProcedureTypeDTO>>().ok(page);
}
@GetMapping("{id}")
@ApiOperation("信息")
@PreAuthorize("@ex.hasAuthority('basic:workingProcedureType:info')")
public Result<WorkingProcedureTypeDTO> get(@PathVariable("id") Long id){
WorkingProcedureTypeDTO data = workingProcedureTypeService.get(id);
return new Result<WorkingProcedureTypeDTO>().ok(data);
}
@PostMapping
@ApiOperation("保存")
@LogOperation("保存")
@PreAuthorize("@ex.hasAuthority('basic:workingProcedureType:save')")
public Result save(@RequestBody WorkingProcedureTypeDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
workingProcedureTypeService.save(dto);
return new Result();
}
@PutMapping
@ApiOperation("修改")
@LogOperation("修改")
@PreAuthorize("@ex.hasAuthority('basic:workingProcedureType:update')")
public Result update(@RequestBody WorkingProcedureTypeDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
workingProcedureTypeService.update(dto);
return new Result();
}
@DeleteMapping
@ApiOperation("删除")
@LogOperation("删除")
@PreAuthorize("@ex.hasAuthority('basic:workingProcedureType:delete')")
public Result delete(@RequestBody Long[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
workingProcedureTypeService.delete(ids);
return new Result();
}
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("导出")
@PreAuthorize("@ex.hasAuthority('basic:workingProcedureType:export')")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<WorkingProcedureTypeDTO> list = workingProcedureTypeService.list(params);
ExcelUtils.exportExcelToTarget(response, "WorkingProcedureType", list, WorkingProcedureTypeExcel.class);
}
@PostMapping("status")
@ApiOperation("改变状态")
@LogOperation("改变状态")
public Result changeStatus(@RequestBody IdParam id){
workingProcedureTypeService.changeStatus(id.getId());
return new Result();
}
@PostMapping(value = "list")
@ApiOperation(value = "获取工序类型列表")
private List<WorkingProcedureTypeDTO> list(@ApiIgnore @RequestParam Map<String, Object> params) {
return workingProcedureTypeService.list(params);
}
}

View File

@@ -0,0 +1,72 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 工厂 表
*
* @author why
* @since 2022-07-13
*/
@Data
@ApiModel(value = "工厂 表DTO对象")
public class FactoryDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "工厂 名")
private String name;
@ApiModelProperty(value = "工厂 编码")
private String code;
@ApiModelProperty(value = "工厂 描述")
private String descs;
@ApiModelProperty(value = "工厂 联系地址")
private String address;
@ApiModelProperty(value = "工厂类型1-内部工厂2-供应商")
private String type;
@ApiModelProperty(value = "1 可用0 不可用")
private Integer status;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty(value = "创建人")
private Long creatorId;
@ApiModelProperty(value = "创建人姓名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新人")
private Long updaterId;
@ApiModelProperty(value = "更新人姓名")
private String updaterName;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号")
private Integer version;
}

View File

@@ -0,0 +1,18 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel(value = "工艺特性-工序 DTO对象")
public class FeaturesProcedureDTO implements Serializable {
@ApiModelProperty(value = "检验参数id,关联product_features表")
private Long productFeaturesId;
@ApiModelProperty(value = "工序id,关联 working_procedure 表")
private Long workingProcedureId;
}

View File

@@ -0,0 +1,63 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 过程检验-工艺-检验参数 关系表
*
* @author why
* @since 2022-09-01
*/
@Data
@ApiModel(value = "过程检验-工艺-检验参数 关系表 DTO对象")
public class FeaturesStageProcedureRelationDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "检验参数id,关联product_features表")
private Long productFeaturesId;
@ApiModelProperty(value = "工序id,关联 working_procedure 表")
private Long workingProcedureId;
@ApiModelProperty(value = "如果为空就代表4个阶段都不是检验阶段1 进货检验、 2 过程检验、 3 成品检验、 4 出货检验")
private Integer inspectionStage;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty(value = "创建人")
private Long creatorId;
@ApiModelProperty(value = "创建人姓名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新人")
private Long updaterId;
@ApiModelProperty(value = "更新人姓名")
private String updaterName;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号")
private Integer version;
}

View File

@@ -0,0 +1,69 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 机台表
*
* @author why
* @since 2022-07-15
*/
@Data
@ApiModel(value = "机台表DTO对象")
public class MachineDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "机台名")
private String name;
@ApiModelProperty(value = "机台编码")
private String code;
@ApiModelProperty(value = "机台id关联platform id")
private Long platformId;
@ApiModelProperty(value = "机台名称关联platform id")
private String platformName;
@ApiModelProperty(value = "1 可用0 不可用")
private Integer status;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty(value = "创建人")
private Long creatorId;
@ApiModelProperty(value = "创建人姓名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新人")
private Long updaterId;
@ApiModelProperty(value = "更新人姓名")
private String updaterName;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号")
private Integer version;
}

View File

@@ -0,0 +1,66 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 量具表
*
* @author why
* @since 2022-07-13
*/
@Data
@ApiModel(value = "量具表DTO对象")
public class MeasureToolDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "量具 名")
private String name;
@ApiModelProperty(value = "量具 编码")
private String code;
@ApiModelProperty(value = "量具类型;计量型=1 计数型=2")
private String type;
@ApiModelProperty(value = "1 可用0 不可用")
private Integer status;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty(value = "创建人")
private Long creatorId;
@ApiModelProperty(value = "创建人姓名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新人")
private Long updaterId;
@ApiModelProperty(value = "更新人姓名")
private String updaterName;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号")
private Integer version;
}

View File

@@ -0,0 +1,66 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 站点表
*
* @author why
* @since 2022-07-13
*/
@Data
@ApiModel(value = "站点表DTO对象")
public class PlatformDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "站台名")
private String name;
@ApiModelProperty(value = "站台编码")
private String code;
@ApiModelProperty(value = "站台分组")
private String platformGroup;
@ApiModelProperty(value = "1 可用0 不可用")
private Integer status;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty(value = "创建人")
private Long creatorId;
@ApiModelProperty(value = "创建人姓名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新人")
private Long updaterId;
@ApiModelProperty(value = "更新人姓名")
private String updaterName;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号")
private Integer version;
}

View File

@@ -0,0 +1,89 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* 产品 表
*
* @author why
* @since 2022-07-11
*/
@Data
@ApiModel(value = "产品 表DTO对象")
public class ProductDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "产品 名")
private String name;
@ApiModelProperty(value = "产品 编码")
private String code;
@ApiModelProperty(value = "产品 规格")
private String specifications;
@ApiModelProperty(value = "产品 图纸")
private String drawing;
@ApiModelProperty(value = "描述")
private String descs;
@ApiModelProperty(value = "产品类型id,关联product_type表")
private Long productTypeId;
@ApiModelProperty(value = "产品类型 名,product_type表")
private String productType;
@ApiModelProperty(value = "单位 id关联unit表")
private Long unitId;
@ApiModelProperty(value = "检验阶段1 进货检验、 2 过程检验、 3 成品检验、 4 出货检验;; 如果有多个用逗号隔开,比如 1,4 就代表选中了进货检验和出货检验")
private String inspectionStage;
@ApiModelProperty(value = "检验标准")
private String inspectionStandard;
@ApiModelProperty(value = "1 可用0 不可用")
private Integer status;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty(value = "创建人")
private Long creatorId;
@ApiModelProperty(value = "创建人姓名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新人")
private Long updaterId;
@ApiModelProperty(value = "更新人姓名")
private String updaterName;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号")
private Integer version;
@ApiModelProperty(value = "工厂")
private List<Long> factoryList;
}

View File

@@ -0,0 +1,63 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 产品-工厂 关系表
*
* @author why
* @since 2022-07-27
*/
@Data
@ApiModel(value = "产品-工厂 关系表DTO对象")
public class ProductFactoryRelationDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "产品id,关联product表")
private Long productId;
@ApiModelProperty(value = "工厂id,关联 factory 表")
private Long factoryId;
@ApiModelProperty(value = "1 可用0 不可用")
private Integer status;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty(value = "创建人")
private Long creatorId;
@ApiModelProperty(value = "创建人姓名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新人")
private Long updaterId;
@ApiModelProperty(value = "更新人姓名")
private String updaterName;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号")
private Integer version;
}

View File

@@ -0,0 +1,121 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 产品特性 表
*
* @author why
* @since 2022-07-15
*/
@Data
@ApiModel(value = "产品特性 表DTO对象")
public class ProductFeaturesDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "产品id,关联product表")
private Long productId;
@ApiModelProperty(value = "量具id关联measure_tool表")
private Long measureToolId;
@ApiModelProperty(value = "量具名称关联measure_tool表")
private String measureToolName;
@ApiModelProperty(value = "单位 id关联unit表")
private Long unitId;
@ApiModelProperty(value = "单位名称关联unit表")
private String unitName;
@ApiModelProperty(value = "产品特性 名")
private String name;
@ApiModelProperty(value = "产品特性 编码")
private String code;
@ApiModelProperty(value = "产品特性类型1 计量型2 计数型")
private Integer type;
@ApiModelProperty(value = "缺陷等级1 致命缺陷2 严重缺陷3.轻微缺陷")
private Integer defectLevel;
@ApiModelProperty(value = "产品特性 规格")
private String specifications;
@ApiModelProperty(value = "检验参数 规格下线")
private Float lsl;
@ApiModelProperty(value = "检验参数 规格中心线")
private Float sl;
@ApiModelProperty(value = "检验参数 规格上线")
private Float usl;
@ApiModelProperty(value = "分析图形关联control_graph表id")
private Long controlGraphId;
@ApiModelProperty(value = "分析图形名关联control_graph表id")
private String controlGraphName;
@ApiModelProperty(value = "是否需要spc分析1 yes;0 no")
private Integer isSpc;
@ApiModelProperty(value = "样本大小一般2-25之间。 会依据这个size 把所有待分析的数据 组成一个一个样本")
private Integer sampleSize;
@ApiModelProperty(value = "采样频率,只用于展示")
private String samplingFrequency;
@ApiModelProperty(value = "小数位数(限制 检验参数小数点后面位数),这个先放着后续再说。")
private Integer decimalPlaces;
@ApiModelProperty(value = "目标cpk")
private Float targetCpk;
@ApiModelProperty(value = "目标cpk")
private Float targetPpk;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty(value = "创建人")
private Long creatorId;
@ApiModelProperty(value = "创建人姓名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新人")
private Long updaterId;
@ApiModelProperty(value = "更新人姓名")
private String updaterName;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号")
private Integer version;
@ApiModelProperty(value = "工序id,关联 working_procedure 表")
private Long workingProcedureId;
@ApiModelProperty(value = "工序 名,关联working_procedure表")
private String workingProcedureName;
}

View File

@@ -0,0 +1,108 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 产品特性 历史表
*
* @author why
* @since 2022-07-15
*/
@Data
@ApiModel(value = "产品特性 历史表DTO对象")
public class ProductFeaturesHisDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "产品特性id,关联product_features表")
private Long productFeaturesId;
@ApiModelProperty(value = "产品id,关联product表")
private Long productId;
@ApiModelProperty(value = "产品特性 名")
private String name;
@ApiModelProperty(value = "产品特性 编码")
private String code;
@ApiModelProperty(value = "产品特性类型1 计量型2 计数型")
private Integer type;
@ApiModelProperty(value = "缺陷等级1 致命缺陷2 严重缺陷3.轻微缺陷")
private Integer defectLevel;
@ApiModelProperty(value = "量具id关联measure_tool表")
private Long measureToolId;
@ApiModelProperty(value = "单位 id关联unit表")
private Long unitId;
@ApiModelProperty(value = "产品特性 规格")
private String specifications;
@ApiModelProperty(value = "检验参数 规格下线")
private Float lsl;
@ApiModelProperty(value = "检验参数 规格中心线")
private Float sl;
@ApiModelProperty(value = "检验参数 规格上线")
private Float usl;
@ApiModelProperty(value = "是否需要spc分析1 yes;0 no")
private Integer isSpc;
@ApiModelProperty(value = "分析图形关联control_graph表id")
private Long controlGraphId;
@ApiModelProperty(value = "样本大小一般2-25之间。 会依据这个size 把所有待分析的数据 组成一个一个样本")
private Integer sampleSize;
@ApiModelProperty(value = "采样频率,只用于展示")
private String samplingFrequency;
@ApiModelProperty(value = "小数位数(限制 检验参数小数点后面位数),这个先放着后续再说。")
private Integer decimalPlaces;
@ApiModelProperty(value = "目标cpk")
private Float targetCpk;
@ApiModelProperty(value = "目标cpk")
private Float targetPpk;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty(value = "创建人")
private Long creatorId;
@ApiModelProperty(value = "创建人姓名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新人")
private Long updaterId;
@ApiModelProperty(value = "更新人姓名")
private String updaterName;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号")
private Integer version;
}

View File

@@ -5,7 +5,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -13,17 +12,15 @@ import java.time.LocalDateTime;
* 产品类型 * 产品类型
* *
* @author why * @author why
* @since 2022-06-21 * @since 2022-06-30
*/ */
@Data @Data
@ApiModel(value = "产品类型 表DTO对象") @ApiModel(value = "产品类型 表DTO对象")
public class ProductTypeDTO implements Serializable { public class ProductTypeDTO implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID") @ApiModelProperty(value = "ID")
private BigDecimal id; private Long id;
@ApiModelProperty(value = "产品类型 名") @ApiModelProperty(value = "产品类型 名")
private String name; private String name;
@@ -32,19 +29,19 @@ public class ProductTypeDTO implements Serializable {
private String code; private String code;
@ApiModelProperty(value = "描述") @ApiModelProperty(value = "描述")
private String desc; private String descs;
@ApiModelProperty(value = "1 可用0 不可用") @ApiModelProperty(value = "1 可用0 不可用")
private BigDecimal status; private Integer status;
@ApiModelProperty(value = "备注") @ApiModelProperty(value = "备注")
private String remark; private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用") @ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private BigDecimal valid; private Integer valid;
@ApiModelProperty(value = "创建人") @ApiModelProperty(value = "创建人")
private BigDecimal creatorId; private Long creatorId;
@ApiModelProperty(value = "创建人姓名") @ApiModelProperty(value = "创建人姓名")
private String creatorName; private String creatorName;
@@ -53,7 +50,7 @@ public class ProductTypeDTO implements Serializable {
private LocalDateTime createTime; private LocalDateTime createTime;
@ApiModelProperty(value = "更新人") @ApiModelProperty(value = "更新人")
private BigDecimal updaterId; private Long updaterId;
@ApiModelProperty(value = "更新人姓名") @ApiModelProperty(value = "更新人姓名")
private String updaterName; private String updaterName;
@@ -62,6 +59,6 @@ public class ProductTypeDTO implements Serializable {
private LocalDateTime updateTime; private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号") @ApiModelProperty(value = "版本号")
private BigDecimal version; private Integer version;
} }

View File

@@ -0,0 +1,96 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 工序 表
*
* @author why
* @since 2022-07-15
*/
@Data
@ApiModel(value = "产品-工序 关系表DTO对象")
public class ProductWorkingprocedureRelationDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "产品id,关联product表")
private Long productId;
@ApiModelProperty(value = "工序id,关联 working_procedure 表")
private Long workingProcedureId;
@ApiModelProperty(value = "工序名称,关联 working_procedure 表")
private String workingProcedureName;
@ApiModelProperty(value = "工序编码,关联 working_procedure 表")
private String workingProcedureCode;
@ApiModelProperty(value = "顺序,工序是有先后顺序的。")
private Integer sequence;
@ApiModelProperty(value = "1 可用0 不可用")
private Integer status;
@ApiModelProperty(value = "node.shape")
private String shape;
@ApiModelProperty(value = "node.x")
private Integer x;
@ApiModelProperty(value = "node.y")
private Integer y;
@ApiModelProperty(value = "node.width")
private Integer width;
@ApiModelProperty(value = "node.width")
private Integer height;
@ApiModelProperty(value = "node.lable")
private String lable;
@ApiModelProperty(value = "字体颜色")
private String fontcolor;
@ApiModelProperty(value = "背景颜色")
private String backcolor;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty(value = "创建人")
private Long creatorId;
@ApiModelProperty(value = "创建人姓名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新人")
private Long updaterId;
@ApiModelProperty(value = "更新人姓名")
private String updaterName;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号")
private Integer version;
}

View File

@@ -0,0 +1,18 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel(value = "顺序更新参数")
public class SequenceDTO implements Serializable {
@ApiModelProperty(value = "产品id")
private Long productId;
@ApiModelProperty(value = "产品工序序号")
private Integer index;
}

View File

@@ -0,0 +1,65 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 班次 表
*
* @author why
* @since 2022-07-13
*/
@Data
@ApiModel(value = "班次 表DTO对象")
public class ShiftDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "班次 名")
private String name;
@ApiModelProperty(value = "班次 编码")
private String code;
@ApiModelProperty(value = "班次 描述")
private String descs;
@ApiModelProperty(value = "1 可用0 不可用")
private Integer status;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty(value = "创建人")
private Long creatorId;
@ApiModelProperty(value = "创建人姓名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新人")
private Long updaterId;
@ApiModelProperty(value = "更新人姓名")
private String updaterName;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号")
private Integer version;
}

View File

@@ -0,0 +1,65 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 班组 表
*
* @author why
* @since 2022-07-13
*/
@Data
@ApiModel(value = "班组 表DTO对象")
public class TeamDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "班组 名")
private String name;
@ApiModelProperty(value = "班组 编码")
private String code;
@ApiModelProperty(value = "班组 描述")
private String descs;
@ApiModelProperty(value = "1 可用0 不可用")
private Integer status;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty(value = "创建人")
private Long creatorId;
@ApiModelProperty(value = "创建人姓名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新人")
private Long updaterId;
@ApiModelProperty(value = "更新人姓名")
private String updaterName;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号")
private Integer version;
}

View File

@@ -0,0 +1,66 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 单位 表
*
* @author why
* @since 2022-06-30
*/
@Data
@ApiModel(value = "单位 表DTO对象")
public class UnitDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "单位 名")
private String name;
@ApiModelProperty(value = "单位 编码")
private String code;
@ApiModelProperty(value = "单位类型1 可计数2 不可计数")
private Integer type;
@ApiModelProperty(value = "1 可用0 不可用")
private Integer status;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty(value = "创建人")
private Long creatorId;
@ApiModelProperty(value = "创建人姓名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新人")
private Long updaterId;
@ApiModelProperty(value = "更新人姓名")
private String updaterName;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号")
private Integer version;
}

View File

@@ -0,0 +1,74 @@
package com.cnbm.basic.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 工序 表
*
* @author why
* @since 2022-07-15
*/
@Data
@ApiModel(value = "工序 表DTO对象")
public class WorkingProcedureDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "工序 名")
private String name;
@ApiModelProperty(value = "工序 编码")
private String code;
@ApiModelProperty(value = "工序类型 id,关联working_procedure_type表")
private Long workingProcedureTypeId;
@ApiModelProperty(value = "工序类型 名,关联working_procedure_type表")
private String workingProcedureTypeName;
@ApiModelProperty(value = "机台(也就是设备),这个工序对应的设备,可能有一个或者多个,如果多个用逗号隔开,\"id1,id2,......\"")
private String machineId;
@ApiModelProperty(value = "机台id对应名称")
private String machineName;
@ApiModelProperty(value = "1 可用0 不可用")
private Integer status;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty(value = "创建人")
private Long creatorId;
@ApiModelProperty(value = "创建人姓名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新人")
private Long updaterId;
@ApiModelProperty(value = "更新人姓名")
private String updaterName;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号")
private Integer version;
}

View File

@@ -0,0 +1,67 @@
package com.cnbm.basic.dto;
import com.cnbm.basic.entity.WorkingProcedure;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* 工序类型表 表
*
* @author why
* @since 2022-07-15
*/
@Data
@ApiModel(value = "工序类型表 表DTO对象")
public class WorkingProcedureTypeDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "工序类型 名")
private String name;
@ApiModelProperty(value = "工序类型 编码")
private String code;
@ApiModelProperty(value = "1 可用0 不可用")
private Integer status;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty(value = "创建人")
private Long creatorId;
@ApiModelProperty(value = "创建人姓名")
private String creatorName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新人")
private Long updaterId;
@ApiModelProperty(value = "更新人姓名")
private String updaterName;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本号")
private Integer version;
@ApiModelProperty(value = "工序列表")
private List<WorkingProcedure> workingProcedureList;
}

View File

@@ -0,0 +1,72 @@
package com.cnbm.basic.entity;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 工厂 表
* </p>
*
* @author why
* @since 2022-07-13
*/
@Data
@ApiModel(value = "Factory对象", description = "工厂 表")
public class Factory implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("工厂 名")
private String name;
@ApiModelProperty("工厂 编码")
private String code;
@ApiModelProperty("工厂 描述")
private String descs;
@ApiModelProperty("工厂 联系地址")
private String address;
@ApiModelProperty("工厂类型1-内部工厂2-供应商")
private String type;
@ApiModelProperty("1 可用0 不可用")
private Integer status;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty("创建人")
private Long creatorId;
@ApiModelProperty("创建人姓名")
private String creatorName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新人")
private Long updaterId;
@ApiModelProperty("更新人姓名")
private String updaterName;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
@ApiModelProperty("版本号")
private Integer version;
}

View File

@@ -0,0 +1,67 @@
package com.cnbm.basic.entity;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 过程检验-工艺-检验参数 关系表
* </p>
*
* @author why
* @since 2022-09-01
*/
@Data
@TableName("features_stage_procedure_relation")
@ApiModel(value = "FeaturesStageProcedureRelation对象", description = "过程检验-工艺-检验参数 关系表 ")
public class FeaturesStageProcedureRelation implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("检验参数id,关联product_features表")
private Long productFeaturesId;
@ApiModelProperty("工序id,关联 working_procedure 表")
private Long workingProcedureId;
@ApiModelProperty("如果为空就代表4个阶段都不是检验阶段1 进货检验、 2 过程检验、 3 成品检验、 4 出货检验")
private Integer inspectionStage;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty("创建人")
private Long creatorId;
@ApiModelProperty("创建人姓名")
private String creatorName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新人")
private Long updaterId;
@ApiModelProperty("更新人姓名")
private String updaterName;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
@ApiModelProperty("版本号")
private Integer version;
}

View File

@@ -0,0 +1,66 @@
package com.cnbm.basic.entity;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 机台表
* </p>
*
* @author why
* @since 2022-07-15
*/
@Data
@ApiModel(value = "Machine对象", description = "机台表")
public class Machine implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("机台名")
private String name;
@ApiModelProperty("机台编码")
private String code;
@ApiModelProperty("机台id关联platform id")
private Long platformId;
@ApiModelProperty("1 可用0 不可用")
private Integer status;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty("创建人")
private Long creatorId;
@ApiModelProperty("创建人姓名")
private String creatorName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新人")
private Long updaterId;
@ApiModelProperty("更新人姓名")
private String updaterName;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
@ApiModelProperty("版本号")
private Integer version;
}

View File

@@ -0,0 +1,68 @@
package com.cnbm.basic.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 量具表
* </p>
*
* @author why
* @since 2022-07-13
*/
@Data
@TableName("measure_tool")
@ApiModel(value = "MeasureTool对象", description = "量具表")
public class MeasureTool implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("量具 名")
private String name;
@ApiModelProperty("量具 编码")
private String code;
@ApiModelProperty("量具类型;计量型=1 计数型=2")
private String type;
@ApiModelProperty("1 可用0 不可用")
private Integer status;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty("创建人")
private Long creatorId;
@ApiModelProperty("创建人姓名")
private String creatorName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新人")
private Long updaterId;
@ApiModelProperty("更新人姓名")
private String updaterName;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
@ApiModelProperty("版本号")
private Integer version;
}

View File

@@ -0,0 +1,66 @@
package com.cnbm.basic.entity;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 站点表
* </p>
*
* @author why
* @since 2022-07-13
*/
@Data
@ApiModel(value = "Platform对象", description = "站点表")
public class Platform implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("站台名")
private String name;
@ApiModelProperty("站台编码")
private String code;
@ApiModelProperty("站台分组")
private String platformGroup;
@ApiModelProperty("1 可用0 不可用")
private Integer status;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty("创建人")
private Long creatorId;
@ApiModelProperty("创建人姓名")
private String creatorName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新人")
private Long updaterId;
@ApiModelProperty("更新人姓名")
private String updaterName;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
@ApiModelProperty("版本号")
private Integer version;
}

View File

@@ -0,0 +1,84 @@
package com.cnbm.basic.entity;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 产品 表
* </p>
*
* @author why
* @since 2022-07-11
*/
@Data
@ApiModel(value = "Product对象", description = "产品 表")
public class Product implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("产品 名")
private String name;
@ApiModelProperty("产品 编码")
private String code;
@ApiModelProperty("产品 规格")
private String specifications;
@ApiModelProperty("产品 图纸")
private String drawing;
@ApiModelProperty("描述")
private String descs;
@ApiModelProperty("产品类型id,关联product_type表")
private Long productTypeId;
@ApiModelProperty("单位 id关联unit表")
private Long unitId;
@ApiModelProperty("检验阶段1 进货检验、 2 过程检验、 3 成品检验、 4 出货检验;; 如果有多个用逗号隔开,比如 1,4 就代表选中了进货检验和出货检验")
private String inspectionStage;
@ApiModelProperty("检验标准")
private String inspectionStandard;
@ApiModelProperty("1 可用0 不可用")
private Integer status;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty("创建人")
private Long creatorId;
@ApiModelProperty("创建人姓名")
private String creatorName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新人")
private Long updaterId;
@ApiModelProperty("更新人姓名")
private String updaterName;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
@ApiModelProperty("版本号")
private Integer version;
}

View File

@@ -0,0 +1,65 @@
package com.cnbm.basic.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 产品-工厂 关系表
* </p>
*
* @author why
* @since 2022-07-27
*/
@Data
@TableName("product_factory_relation")
@ApiModel(value = "ProductFactoryRelation对象", description = "产品-工厂 关系表")
public class ProductFactoryRelation implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("产品id,关联product表")
private Long productId;
@ApiModelProperty("工厂id,关联 factory 表")
private Long factoryId;
@ApiModelProperty("1 可用0 不可用")
private Integer status;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty("创建人")
private Long creatorId;
@ApiModelProperty("创建人姓名")
private String creatorName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新人")
private Long updaterId;
@ApiModelProperty("更新人姓名")
private String updaterName;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
@ApiModelProperty("版本号")
private Integer version;
}

View File

@@ -0,0 +1,110 @@
package com.cnbm.basic.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 产品特性 表
* </p>
*
* @author why
* @since 2022-07-15
*/
@Data
@TableName("product_features")
@ApiModel(value = "ProductFeatures对象", description = "产品特性 表")
public class ProductFeatures implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("产品id,关联product表")
private Long productId;
@ApiModelProperty("量具id关联measure_tool表")
private Long measureToolId;
@ApiModelProperty("单位 id关联unit表")
private Long unitId;
@ApiModelProperty("产品特性 名")
private String name;
@ApiModelProperty("产品特性 编码")
private String code;
@ApiModelProperty("产品特性类型1 计量型2 计数型")
private Integer type;
@ApiModelProperty("缺陷等级1 致命缺陷2 严重缺陷3.轻微缺陷")
private Integer defectLevel;
@ApiModelProperty("产品特性 规格")
private String specifications;
@ApiModelProperty("检验参数 规格下线")
private Float lsl;
@ApiModelProperty("检验参数 规格中心线")
private Float sl;
@ApiModelProperty("检验参数 规格上线")
private Float usl;
@ApiModelProperty("分析图形关联control_graph表id")
private Long controlGraphId;
@ApiModelProperty("是否需要spc分析1 yes;0 no")
private Integer isSpc;
@ApiModelProperty("样本大小一般2-25之间。 会依据这个size 把所有待分析的数据 组成一个一个样本")
private Integer sampleSize;
@ApiModelProperty("采样频率,只用于展示")
private String samplingFrequency;
@ApiModelProperty("小数位数(限制 检验参数小数点后面位数),这个先放着后续再说。")
private Integer decimalPlaces;
@ApiModelProperty("目标cpk")
private Float targetCpk;
@ApiModelProperty("目标cpk")
private Float targetPpk;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty("创建人")
private Long creatorId;
@ApiModelProperty("创建人姓名")
private String creatorName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新人")
private Long updaterId;
@ApiModelProperty("更新人姓名")
private String updaterName;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
@ApiModelProperty("版本号")
private Integer version;
}

View File

@@ -0,0 +1,113 @@
package com.cnbm.basic.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 产品特性 历史表
* </p>
*
* @author why
* @since 2022-07-15
*/
@Data
@TableName("product_features_his")
@ApiModel(value = "ProductFeaturesHis对象", description = "产品特性 历史表")
public class ProductFeaturesHis implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("产品特性id,关联product_features表")
private Long productFeaturesId;
@ApiModelProperty("产品id,关联product表")
private Long productId;
@ApiModelProperty("产品特性 名")
private String name;
@ApiModelProperty("产品特性 编码")
private String code;
@ApiModelProperty("产品特性类型1 计量型2 计数型")
private Integer type;
@ApiModelProperty("缺陷等级1 致命缺陷2 严重缺陷3.轻微缺陷")
private Integer defectLevel;
@ApiModelProperty("量具id关联measure_tool表")
private Long measureToolId;
@ApiModelProperty("单位 id关联unit表")
private Long unitId;
@ApiModelProperty("产品特性 规格")
private String specifications;
@ApiModelProperty("检验参数 规格下线")
private Float lsl;
@ApiModelProperty("检验参数 规格中心线")
private Float sl;
@ApiModelProperty("检验参数 规格上线")
private Float usl;
@ApiModelProperty("是否需要spc分析1 yes;0 no")
private Integer isSpc;
@ApiModelProperty("分析图形关联control_graph表id")
private Long controlGraphId;
@ApiModelProperty("样本大小一般2-25之间。 会依据这个size 把所有待分析的数据 组成一个一个样本")
private Integer sampleSize;
@ApiModelProperty("采样频率,只用于展示")
private String samplingFrequency;
@ApiModelProperty("小数位数(限制 检验参数小数点后面位数),这个先放着后续再说。")
private Integer decimalPlaces;
@ApiModelProperty("目标cpk")
private Float targetCpk;
@ApiModelProperty("目标cpk")
private Float targetPpk;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty("创建人")
private Long creatorId;
@ApiModelProperty("创建人姓名")
private String creatorName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新人")
private Long updaterId;
@ApiModelProperty("更新人姓名")
private String updaterName;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
@ApiModelProperty("版本号")
private Integer version;
}

View File

@@ -6,7 +6,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/** /**
@@ -15,7 +14,7 @@ import java.time.LocalDateTime;
* </p> * </p>
* *
* @author why * @author why
* @since 2022-06-21 * @since 2022-06-30
*/ */
@Data @Data
@TableName("product_type") @TableName("product_type")
@@ -25,7 +24,7 @@ public class ProductType implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty("ID") @ApiModelProperty("ID")
private BigDecimal id; private Long id;
@ApiModelProperty("产品类型 名") @ApiModelProperty("产品类型 名")
private String name; private String name;
@@ -34,19 +33,19 @@ public class ProductType implements Serializable {
private String code; private String code;
@ApiModelProperty("描述") @ApiModelProperty("描述")
private String desc; private String descs;
@ApiModelProperty("1 可用0 不可用") @ApiModelProperty("1 可用0 不可用")
private BigDecimal status; private Integer status;
@ApiModelProperty("备注") @ApiModelProperty("备注")
private String remark; private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用") @ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private BigDecimal valid; private Integer valid;
@ApiModelProperty("创建人") @ApiModelProperty("创建人")
private BigDecimal creatorId; private Long creatorId;
@ApiModelProperty("创建人姓名") @ApiModelProperty("创建人姓名")
private String creatorName; private String creatorName;
@@ -55,7 +54,7 @@ public class ProductType implements Serializable {
private LocalDateTime createTime; private LocalDateTime createTime;
@ApiModelProperty("更新人") @ApiModelProperty("更新人")
private BigDecimal updaterId; private Long updaterId;
@ApiModelProperty("更新人姓名") @ApiModelProperty("更新人姓名")
private String updaterName; private String updaterName;
@@ -64,7 +63,7 @@ public class ProductType implements Serializable {
private LocalDateTime updateTime; private LocalDateTime updateTime;
@ApiModelProperty("版本号") @ApiModelProperty("版本号")
private BigDecimal version; private Integer version;
} }

View File

@@ -0,0 +1,93 @@
package com.cnbm.basic.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.Data;
/**
* <p>
* 工序 表
* </p>
*
* @author why
* @since 2022-07-15
*/
@Data
@TableName("product_workingprocedure_relation")
@ApiModel(value = "ProductWorkingprocedureRelation对象", description = "产品-工序 关系表")
public class ProductWorkingprocedureRelation implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("产品id,关联product表")
private Long productId;
@ApiModelProperty("工序id,关联 working_procedure 表")
private Long workingProcedureId;
@ApiModelProperty("顺序,工序是有先后顺序的。")
private Integer sequence;
@ApiModelProperty("1 可用0 不可用")
private Integer status;
@ApiModelProperty("node.shape")
private String shape;
@ApiModelProperty("node.x")
private Integer x;
@ApiModelProperty("node.y")
private Integer y;
@ApiModelProperty("node.width")
private Integer width;
@ApiModelProperty("node.width")
private Integer height;
@ApiModelProperty("node.lable")
private String lable;
@ApiModelProperty("字体颜色")
private String fontcolor;
@ApiModelProperty("背景颜色")
private String backcolor;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty("创建人")
private Long creatorId;
@ApiModelProperty("创建人姓名")
private String creatorName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新人")
private Long updaterId;
@ApiModelProperty("更新人姓名")
private String updaterName;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
@ApiModelProperty("版本号")
private Integer version;
}

View File

@@ -0,0 +1,66 @@
package com.cnbm.basic.entity;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 班次 表
* </p>
*
* @author why
* @since 2022-07-13
*/
@Data
@ApiModel(value = "Shift对象", description = "班次 表")
public class Shift implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("班次 名")
private String name;
@ApiModelProperty("班次 编码")
private String code;
@ApiModelProperty("班次 描述")
private String descs;
@ApiModelProperty("1 可用0 不可用")
private Integer status;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty("创建人")
private Long creatorId;
@ApiModelProperty("创建人姓名")
private String creatorName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新人")
private Long updaterId;
@ApiModelProperty("更新人姓名")
private String updaterName;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
@ApiModelProperty("版本号")
private Integer version;
}

View File

@@ -0,0 +1,66 @@
package com.cnbm.basic.entity;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 班组 表
* </p>
*
* @author why
* @since 2022-07-13
*/
@Data
@ApiModel(value = "Team对象", description = "班组 表")
public class Team implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("班组 名")
private String name;
@ApiModelProperty("班组 编码")
private String code;
@ApiModelProperty("班组 描述")
private String descs;
@ApiModelProperty("1 可用0 不可用")
private Integer status;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty("创建人")
private Long creatorId;
@ApiModelProperty("创建人姓名")
private String creatorName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新人")
private Long updaterId;
@ApiModelProperty("更新人姓名")
private String updaterName;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
@ApiModelProperty("版本号")
private Integer version;
}

View File

@@ -0,0 +1,67 @@
package com.cnbm.basic.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 单位 表
* </p>
*
* @author why
* @since 2022-06-30
*/
@Data
@ApiModel(value = "Unit对象", description = "单位 表")
public class Unit implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("单位 名")
private String name;
@ApiModelProperty("单位 编码")
private String code;
@ApiModelProperty("单位类型1 可计数2 不可计数")
private Integer type;
@ApiModelProperty("1 可用0 不可用")
private Integer status;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty("创建人")
private Long creatorId;
@ApiModelProperty("创建人姓名")
private String creatorName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新人")
private Long updaterId;
@ApiModelProperty("更新人姓名")
private String updaterName;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
@ApiModelProperty("版本号")
private Integer version;
}

View File

@@ -0,0 +1,71 @@
package com.cnbm.basic.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 工序 表
* </p>
*
* @author why
* @since 2022-07-15
*/
@Data
@TableName("working_procedure")
@ApiModel(value = "WorkingProcedure对象", description = "工序 表")
public class WorkingProcedure implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("工序 名")
private String name;
@ApiModelProperty("工序 编码")
private String code;
@ApiModelProperty("工序类型 id,关联working_procedure_type表")
private Long workingProcedureTypeId;
@ApiModelProperty("机台(也就是设备),这个工序对应的设备,可能有一个或者多个,如果多个用逗号隔开,\"id1,id2,......\"")
private String machineId;
@ApiModelProperty("1 可用0 不可用")
private Integer status;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty("创建人")
private Long creatorId;
@ApiModelProperty("创建人姓名")
private String creatorName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新人")
private Long updaterId;
@ApiModelProperty("更新人姓名")
private String updaterName;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
@ApiModelProperty("版本号")
private Integer version;
}

View File

@@ -0,0 +1,65 @@
package com.cnbm.basic.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 工序类型表 表
* </p>
*
* @author why
* @since 2022-07-15
*/
@Data
@TableName("working_procedure_type")
@ApiModel(value = "WorkingProcedureType对象", description = "工序类型表 表")
public class WorkingProcedureType implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("工序类型 名")
private String name;
@ApiModelProperty("工序类型 编码")
private String code;
@ApiModelProperty("1 可用0 不可用")
private Integer status;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@ApiModelProperty("创建人")
private Long creatorId;
@ApiModelProperty("创建人姓名")
private String creatorName;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新人")
private Long updaterId;
@ApiModelProperty("更新人姓名")
private String updaterName;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
@ApiModelProperty("版本号")
private Integer version;
}

View File

@@ -0,0 +1,51 @@
package com.cnbm.basic.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.Date;
/**
* 工厂 表
*
* @author why
* @since 2022-07-13
*/
@Data
public class FactoryExcel {
// @Excel(name = "ID")
// private Long id;
@Excel(name = "工厂名称")
private String name;
@Excel(name = "工厂编码")
private String code;
@Excel(name = "描述")
private String descs;
@Excel(name = "联系地址")
private String address;
@Excel(name = "工厂类型")
private String type;
// @Excel(name = "1 可用0 不可用")
// private Integer status;
// @Excel(name = "备注")
// private String remark;
// @Excel(name = "删除标志,是否有效:1 可用 0不可用")
// private Integer valid;
// @Excel(name = "创建人")
// private Long creatorId;
// @Excel(name = "创建人姓名")
// private String creatorName;
// @Excel(name = "创建时间")
// private LocalDateTime createTime;
// @Excel(name = "更新人")
// private Long updaterId;
// @Excel(name = "更新人姓名")
// private String updaterName;
// @Excel(name = "更新时间")
// private LocalDateTime updateTime;
// @Excel(name = "版本号")
// private Integer version;
}

View File

@@ -0,0 +1,43 @@
package com.cnbm.basic.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 过程检验-工艺-检验参数 关系表
*
* @author why
* @since 2022-09-01
*/
@Data
public class FeaturesStageProcedureRelationExcel {
@Excel(name = "ID")
private Long id;
@Excel(name = "检验参数id,关联product_features表")
private Long productFeaturesId;
@Excel(name = "工序id,关联 working_procedure 表")
private Long workingProcedureId;
@Excel(name = "如果为空就代表4个阶段都不是检验阶段1 进货检验、 2 过程检验、 3 成品检验、 4 出货检验")
private Integer inspectionStage;
@Excel(name = "备注")
private String remark;
@Excel(name = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@Excel(name = "创建人")
private Long creatorId;
@Excel(name = "创建人姓名")
private String creatorName;
@Excel(name = "创建时间")
private LocalDateTime createTime;
@Excel(name = "更新人")
private Long updaterId;
@Excel(name = "更新人姓名")
private String updaterName;
@Excel(name = "更新时间")
private LocalDateTime updateTime;
@Excel(name = "版本号")
private Integer version;
}

View File

@@ -0,0 +1,47 @@
package com.cnbm.basic.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 机台表
*
* @author why
* @since 2022-07-15
*/
@Data
public class MachineExcel {
// @Excel(name = "ID")
// private Long id;
@Excel(name = "机台名")
private String name;
@Excel(name = "机台编码")
private String code;
// @Excel(name = "机台id关联platform id")
// private Long platformId;
@Excel(name = "站点")
private String platformName;
// @Excel(name = "1 可用0 不可用")
// private Integer status;
@Excel(name = "备注")
private String remark;
// @Excel(name = "删除标志,是否有效:1 可用 0不可用")
// private Integer valid;
// @Excel(name = "创建人")
// private Long creatorId;
// @Excel(name = "创建人姓名")
// private String creatorName;
// @Excel(name = "创建时间")
// private LocalDateTime createTime;
// @Excel(name = "更新人")
// private Long updaterId;
// @Excel(name = "更新人姓名")
// private String updaterName;
// @Excel(name = "更新时间")
// private LocalDateTime updateTime;
// @Excel(name = "版本号")
// private Integer version;
}

View File

@@ -0,0 +1,45 @@
package com.cnbm.basic.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 量具表
*
* @author why
* @since 2022-07-13
*/
@Data
public class MeasureToolExcel {
@Excel(name = "ID")
private Long id;
@Excel(name = "量具 名")
private String name;
@Excel(name = "量具 编码")
private String code;
@Excel(name = "量具类型;计量型=1 计数型=2")
private String type;
@Excel(name = "1 可用0 不可用")
private Integer status;
@Excel(name = "备注")
private String remark;
@Excel(name = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@Excel(name = "创建人")
private Long creatorId;
@Excel(name = "创建人姓名")
private String creatorName;
@Excel(name = "创建时间")
private LocalDateTime createTime;
@Excel(name = "更新人")
private Long updaterId;
@Excel(name = "更新人姓名")
private String updaterName;
@Excel(name = "更新时间")
private LocalDateTime updateTime;
@Excel(name = "版本号")
private Integer version;
}

View File

@@ -0,0 +1,45 @@
package com.cnbm.basic.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 站点表
*
* @author why
* @since 2022-07-13
*/
@Data
public class PlatformExcel {
// @Excel(name = "ID")
// private Long id;
@Excel(name = "站台名")
private String name;
@Excel(name = "站台编码")
private String code;
@Excel(name = "站台分组")
private String platformGroup;
// @Excel(name = "1 可用0 不可用")
// private Integer status;
// @Excel(name = "备注")
// private String remark;
// @Excel(name = "删除标志,是否有效:1 可用 0不可用")
// private Integer valid;
// @Excel(name = "创建人")
// private Long creatorId;
// @Excel(name = "创建人姓名")
// private String creatorName;
// @Excel(name = "创建时间")
// private LocalDateTime createTime;
// @Excel(name = "更新人")
// private Long updaterId;
// @Excel(name = "更新人姓名")
// private String updaterName;
// @Excel(name = "更新时间")
// private LocalDateTime updateTime;
// @Excel(name = "版本号")
// private Integer version;
}

View File

@@ -0,0 +1,57 @@
package com.cnbm.basic.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 产品 表
*
* @author why
* @since 2022-07-11
*/
@Data
public class ProductExcel {
@Excel(name = "ID")
private Long id;
@Excel(name = "产品 名")
private String name;
@Excel(name = "产品 编码")
private String code;
@Excel(name = "产品 规格")
private String specifications;
@Excel(name = "产品 图纸")
private String drawing;
@Excel(name = "描述")
private String descs;
@Excel(name = "产品类型id,关联product_type表")
private Long productTypeId;
@Excel(name = "单位 id关联unit表")
private Long unitId;
@Excel(name = "检验阶段1 进货检验、 2 过程检验、 3 成品检验、 4 出货检验;; 如果有多个用逗号隔开,比如 1,4 就代表选中了进货检验和出货检验")
private String inspectionStage;
@Excel(name = "检验标准")
private String inspectionStandard;
@Excel(name = "1 可用0 不可用")
private Integer status;
@Excel(name = "备注")
private String remark;
@Excel(name = "删除标志,是否有效:1 可用 0不可用")
private Integer valid;
@Excel(name = "创建人")
private Long creatorId;
@Excel(name = "创建人姓名")
private String creatorName;
@Excel(name = "创建时间")
private LocalDateTime createTime;
@Excel(name = "更新人")
private Long updaterId;
@Excel(name = "更新人姓名")
private String updaterName;
@Excel(name = "更新时间")
private LocalDateTime updateTime;
@Excel(name = "版本号")
private Integer version;
}

Some files were not shown because too many files have changed in this diff Show More