From dc7abfd9d144cb1304e8c2351f0fca2e7a2fcb66 Mon Sep 17 00:00:00 2001 From: xiezuo003 Date: Fri, 22 Sep 2023 11:28:29 +0800 Subject: [PATCH] 111 This reverts commit f64a4dcb --- .gitignore | 33 ++ .mvn/wrapper/maven-wrapper.jar | Bin 0 -> 62547 bytes .mvn/wrapper/maven-wrapper.properties | 2 + mvnw | 308 +++++++++++++ mvnw.cmd | 205 +++++++++ pom.xml | 266 +++++++++++ .../com/dsic/gj_erp/GjErpApplication.java | 43 ++ src/main/java/com/dsic/gj_erp/Test.java | 16 + .../dsic/gj_erp/annotation/AuthFunction.java | 15 + .../java/com/dsic/gj_erp/annotation/Dict.java | 32 ++ .../gj_erp/aspect/AuthFunctionAspect.java | 60 +++ .../com/dsic/gj_erp/aspect/DictAspect.java | 177 ++++++++ .../java/com/dsic/gj_erp/bean/ResultBean.java | 79 ++++ .../com/dsic/gj_erp/bean/jcsj/DmCbxxp.java | 102 +++++ .../com/dsic/gj_erp/bean/jcsj/DmCzplp.java | 100 +++++ .../com/dsic/gj_erp/bean/jcsj/DmCzplpNew.java | 174 ++++++++ .../com/dsic/gj_erp/bean/jcsj/EmGcrl.java | 50 +++ .../com/dsic/gj_erp/bean/jcsj/EmSbcnp.java | 52 +++ .../com/dsic/gj_erp/bean/jcsj/EmSbjbb.java | 299 +++++++++++++ .../com/dsic/gj_erp/bean/jcsj/EmSbrydyp.java | 82 ++++ .../com/dsic/gj_erp/bean/jcsj/EmSbwxjh.java | 84 ++++ .../dsic/gj_erp/bean/jcsj/excel/PlExcel.java | 233 ++++++++++ .../com/dsic/gj_erp/bean/jhgk/DmDhqdp.java | 90 ++++ .../com/dsic/gj_erp/bean/jhgk/DmJgxywryb.java | 63 +++ .../com/dsic/gj_erp/bean/jhgk/DmJtsyjh.java | 67 +++ .../com/dsic/gj_erp/bean/jhgk/DmSygd.java | 145 ++++++ .../com/dsic/gj_erp/bean/jhgk/DmSygdMx.java | 213 +++++++++ .../com/dsic/gj_erp/bean/jhgk/DmTzjh.java | 71 +++ .../com/dsic/gj_erp/bean/jhgk/DmXbjh.java | 95 ++++ .../com/dsic/gj_erp/bean/jhgk/DmZrcjh.java | 152 +++++++ .../dsic/gj_erp/bean/request/EmSbjbbBean.java | 14 + .../gj_erp/bean/request/EmSbwxjhBean.java | 14 + .../dsic/gj_erp/bean/request/LoginBean.java | 17 + .../bean/request/ModifyPasswordBean.java | 14 + .../java/com/dsic/gj_erp/bean/sy/DmBhdyp.java | 63 +++ .../java/com/dsic/gj_erp/bean/sy/DmBhsjp.java | 58 +++ .../java/com/dsic/gj_erp/bean/sy/DmBhzyb.java | 20 + .../com/dsic/gj_erp/bean/sy/Dm_zhbmlbp.java | 30 ++ .../com/dsic/gj_erp/bean/sy/Dm_zhbmp.java | 71 +++ .../java/com/dsic/gj_erp/bean/sy/Syfunp.java | 43 ++ .../java/com/dsic/gj_erp/bean/sy/Syifrp.java | 48 ++ .../java/com/dsic/gj_erp/bean/sy/Syigrp.java | 46 ++ .../java/com/dsic/gj_erp/bean/sy/Syimrp.java | 38 ++ .../java/com/dsic/gj_erp/bean/sy/Sysysp.java | 25 ++ .../java/com/dsic/gj_erp/bean/sy/Syuirp.java | 47 ++ .../java/com/dsic/gj_erp/bean/sy/Syuserp.java | 38 ++ .../com/dsic/gj_erp/bean/sy/Syworkgp.java | 61 +++ .../java/com/dsic/gj_erp/bean/sy/User.java | 9 + .../dsic/gj_erp/controller/ApiController.java | 61 +++ .../dsic/gj_erp/controller/SYController.java | 271 ++++++++++++ .../controller/jcsj/DmCbxxpController.java | 76 ++++ .../controller/jcsj/DmCzplpController.java | 21 + .../controller/jcsj/DmCzplpNewController.java | 77 ++++ .../controller/jcsj/EmGcrlController.java | 59 +++ .../controller/jcsj/EmSbcnpController.java | 68 +++ .../controller/jcsj/EmSbjbbController.java | 85 ++++ .../controller/jcsj/EmSbrydypController.java | 76 ++++ .../controller/jcsj/EmSbwxjhController.java | 71 +++ .../controller/jhgk/DmDhqdpController.java | 69 +++ .../controller/jhgk/DmJgxywrybController.java | 20 + .../controller/jhgk/DmJtsyjhController.java | 61 +++ .../controller/jhgk/DmSygdController.java | 20 + .../controller/jhgk/DmSygdMxController.java | 20 + .../controller/jhgk/DmTzjhController.java | 54 +++ .../controller/jhgk/DmXbjhController.java | 62 +++ .../controller/jhgk/DmZrcjhController.java | 70 +++ .../gj_erp/dao/jcsj/EmGcrlRepository.java | 13 + .../gj_erp/dao/jcsj/EmSbjbbRepository.java | 19 + .../gj_erp/dao/jcsj/EmSbrydypRepository.java | 16 + .../gj_erp/dao/jhgk/DmJtsyjhRepository.java | 10 + .../dsic/gj_erp/dao/sy/DmBhdypRepository.java | 14 + .../dsic/gj_erp/dao/sy/DmBhsjpRepository.java | 13 + .../dsic/gj_erp/dao/sy/DmBhzybRepository.java | 13 + .../gj_erp/dao/sy/Dm_zhbmlbpRepository.java | 13 + .../gj_erp/dao/sy/Dm_zhbmpRepository.java | 33 ++ .../dsic/gj_erp/dao/sy/SyfunpRepository.java | 13 + .../dsic/gj_erp/dao/sy/SyifrpRepository.java | 17 + .../dsic/gj_erp/dao/sy/SyigrpRepository.java | 13 + .../dsic/gj_erp/dao/sy/SyimrpRepository.java | 20 + .../dsic/gj_erp/dao/sy/SyuirpRepository.java | 20 + .../dsic/gj_erp/dao/sy/SyuserpRepository.java | 13 + .../gj_erp/dao/sy/SyworkgpRepository.java | 18 + .../gj_erp/exception/CustomException.java | 23 + .../exception/GlobalExceptionHandler.java | 58 +++ .../gj_erp/exception/ServiceException.java | 22 + .../dsic/gj_erp/interceptor/CORSFilter.java | 26 ++ .../gj_erp/listeners/ExcelPlListener.java | 111 +++++ .../com/dsic/gj_erp/mapper/SyuserMapper.java | 14 + .../gj_erp/mapper/jcsj/DmCbxxpMapper.java | 20 + .../gj_erp/mapper/jcsj/DmCzplpMapper.java | 16 + .../gj_erp/mapper/jcsj/DmCzplpNewMapper.java | 16 + .../dsic/gj_erp/mapper/jcsj/EmGcrlMapper.java | 17 + .../gj_erp/mapper/jcsj/EmSbcnpMapper.java | 17 + .../gj_erp/mapper/jcsj/EmSbjbbMapper.java | 29 ++ .../gj_erp/mapper/jcsj/EmSbrydypMapper.java | 17 + .../gj_erp/mapper/jcsj/EmSbwxjhMapper.java | 17 + .../gj_erp/mapper/jhgk/DmDhqdpMapper.java | 17 + .../gj_erp/mapper/jhgk/DmJgxywrybMapper.java | 17 + .../gj_erp/mapper/jhgk/DmJtsyjhMapper.java | 20 + .../dsic/gj_erp/mapper/jhgk/DmSygdMapper.java | 17 + .../gj_erp/mapper/jhgk/DmSygdMxMapper.java | 17 + .../dsic/gj_erp/mapper/jhgk/DmTzjhMapper.java | 17 + .../dsic/gj_erp/mapper/jhgk/DmXbjhMapper.java | 17 + .../gj_erp/mapper/jhgk/DmZrcjhMapper.java | 19 + .../com/dsic/gj_erp/service/ApiService.java | 94 ++++ .../gj_erp/service/jcsj/DmCbxxpService.java | 50 +++ .../service/jcsj/DmCzplpNewService.java | 29 ++ .../gj_erp/service/jcsj/DmCzplpService.java | 16 + .../gj_erp/service/jcsj/EmGcrlService.java | 26 ++ .../gj_erp/service/jcsj/EmSbcnpService.java | 31 ++ .../gj_erp/service/jcsj/EmSbjbbService.java | 34 ++ .../gj_erp/service/jcsj/EmSbrydypService.java | 34 ++ .../gj_erp/service/jcsj/EmSbwxjhService.java | 29 ++ .../service/jcsj/impl/DmCbxxpServiceImpl.java | 69 +++ .../jcsj/impl/DmCzplpNewServiceImpl.java | 377 ++++++++++++++++ .../service/jcsj/impl/DmCzplpServiceImpl.java | 20 + .../service/jcsj/impl/EmGcrlServiceImpl.java | 73 +++ .../service/jcsj/impl/EmSbcnpServiceImpl.java | 62 +++ .../service/jcsj/impl/EmSbjbbServiceImpl.java | 95 ++++ .../jcsj/impl/EmSbrydypServiceImpl.java | 80 ++++ .../jcsj/impl/EmSbwxjhServiceImpl.java | 76 ++++ .../gj_erp/service/jhgk/DmDhqdpService.java | 33 ++ .../service/jhgk/DmJgxywrybService.java | 16 + .../gj_erp/service/jhgk/DmJtsyjhService.java | 29 ++ .../gj_erp/service/jhgk/DmSygdMxService.java | 16 + .../gj_erp/service/jhgk/DmSygdService.java | 16 + .../gj_erp/service/jhgk/DmTzjhService.java | 24 + .../gj_erp/service/jhgk/DmXbjhService.java | 27 ++ .../gj_erp/service/jhgk/DmZrcjhService.java | 30 ++ .../service/jhgk/impl/DmDhqdpServiceImpl.java | 137 ++++++ .../jhgk/impl/DmJgxywrybServiceImpl.java | 21 + .../jhgk/impl/DmJtsyjhServiceImpl.java | 87 ++++ .../jhgk/impl/DmSygdMxServiceImpl.java | 21 + .../service/jhgk/impl/DmSygdServiceImpl.java | 21 + .../service/jhgk/impl/DmTzjhServiceImpl.java | 53 +++ .../service/jhgk/impl/DmXbjhServiceImpl.java | 75 ++++ .../service/jhgk/impl/DmZrcjhServiceImpl.java | 93 ++++ .../com/dsic/gj_erp/service/sy/SYService.java | 416 ++++++++++++++++++ .../com/dsic/gj_erp/util/CodeGenerator.java | 107 +++++ .../java/com/dsic/gj_erp/util/ExcelUtil.java | 273 ++++++++++++ .../java/com/dsic/gj_erp/util/JwtUtil.java | 80 ++++ .../java/com/dsic/gj_erp/util/MD5Util.java | 49 +++ .../com/dsic/gj_erp/util/ObjConvertUtils.java | 73 +++ src/main/resources/application-dev.properties | 9 + src/main/resources/application.properties | 30 ++ .../resources/mappers/jcsj/DmCbxxpMapper.xml | 136 ++++++ .../resources/mappers/jcsj/DmCzplpMapper.xml | 37 ++ .../mappers/jcsj/DmCzplpNewMapper.xml | 63 +++ .../resources/mappers/jcsj/EmGcrlMapper.xml | 14 + .../resources/mappers/jcsj/EmSbcnpMapper.xml | 14 + .../resources/mappers/jcsj/EmSbjbbMapper.xml | 122 +++++ .../mappers/jcsj/EmSbrydypMapper.xml | 22 + .../resources/mappers/jcsj/EmSbwxjhMapper.xml | 23 + .../resources/mappers/jhgk/DmDhqdpMapper.xml | 28 ++ .../mappers/jhgk/DmJgxywrybMapper.xml | 20 + .../resources/mappers/jhgk/DmJtsyjhMapper.xml | 28 ++ .../resources/mappers/jhgk/DmSygdMapper.xml | 48 ++ .../resources/mappers/jhgk/DmSygdMxMapper.xml | 70 +++ .../resources/mappers/jhgk/DmTzjhMapper.xml | 20 + .../resources/mappers/jhgk/DmXbjhMapper.xml | 36 ++ .../resources/mappers/jhgk/DmZrcjhMapper.xml | 50 +++ .../resources/mappers/sy/SyuserMapper.xml | 33 ++ 162 files changed, 9702 insertions(+) create mode 100644 .gitignore create mode 100644 .mvn/wrapper/maven-wrapper.jar create mode 100644 .mvn/wrapper/maven-wrapper.properties create mode 100644 mvnw create mode 100644 mvnw.cmd create mode 100644 pom.xml create mode 100644 src/main/java/com/dsic/gj_erp/GjErpApplication.java create mode 100644 src/main/java/com/dsic/gj_erp/Test.java create mode 100644 src/main/java/com/dsic/gj_erp/annotation/AuthFunction.java create mode 100644 src/main/java/com/dsic/gj_erp/annotation/Dict.java create mode 100644 src/main/java/com/dsic/gj_erp/aspect/AuthFunctionAspect.java create mode 100644 src/main/java/com/dsic/gj_erp/aspect/DictAspect.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/ResultBean.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jcsj/DmCbxxp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jcsj/DmCzplp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jcsj/DmCzplpNew.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jcsj/EmGcrl.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbcnp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbjbb.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbrydyp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbwxjh.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jcsj/excel/PlExcel.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jhgk/DmDhqdp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jhgk/DmJgxywryb.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jhgk/DmJtsyjh.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygd.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jhgk/DmTzjh.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jhgk/DmXbjh.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jhgk/DmZrcjh.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/request/EmSbjbbBean.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/request/EmSbwxjhBean.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/request/LoginBean.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/request/ModifyPasswordBean.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/sy/DmBhdyp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/sy/DmBhsjp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/sy/DmBhzyb.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/sy/Dm_zhbmlbp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/sy/Dm_zhbmp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/sy/Syfunp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/sy/Syifrp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/sy/Syigrp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/sy/Syimrp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/sy/Sysysp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/sy/Syuirp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/sy/Syuserp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/sy/Syworkgp.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/sy/User.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/ApiController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/SYController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jcsj/DmCbxxpController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jcsj/DmCzplpController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jcsj/DmCzplpNewController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jcsj/EmGcrlController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbcnpController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbjbbController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbrydypController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbwxjhController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jhgk/DmDhqdpController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jhgk/DmJgxywrybController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jhgk/DmJtsyjhController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jhgk/DmTzjhController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jhgk/DmXbjhController.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jhgk/DmZrcjhController.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/jcsj/EmGcrlRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/jcsj/EmSbjbbRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/jcsj/EmSbrydypRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/jhgk/DmJtsyjhRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/sy/DmBhdypRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/sy/DmBhsjpRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/sy/DmBhzybRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/sy/Dm_zhbmlbpRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/sy/Dm_zhbmpRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/sy/SyfunpRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/sy/SyifrpRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/sy/SyigrpRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/sy/SyimrpRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/sy/SyuirpRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/sy/SyuserpRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/dao/sy/SyworkgpRepository.java create mode 100644 src/main/java/com/dsic/gj_erp/exception/CustomException.java create mode 100644 src/main/java/com/dsic/gj_erp/exception/GlobalExceptionHandler.java create mode 100644 src/main/java/com/dsic/gj_erp/exception/ServiceException.java create mode 100644 src/main/java/com/dsic/gj_erp/interceptor/CORSFilter.java create mode 100644 src/main/java/com/dsic/gj_erp/listeners/ExcelPlListener.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/SyuserMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jcsj/DmCbxxpMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jcsj/DmCzplpMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jcsj/DmCzplpNewMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jcsj/EmGcrlMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbcnpMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbjbbMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbrydypMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbwxjhMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jhgk/DmDhqdpMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jhgk/DmJgxywrybMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jhgk/DmJtsyjhMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMxMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jhgk/DmTzjhMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jhgk/DmXbjhMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jhgk/DmZrcjhMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/service/ApiService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/DmCbxxpService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/DmCzplpNewService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/DmCzplpService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/EmGcrlService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/EmSbcnpService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/EmSbjbbService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/EmSbrydypService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/EmSbwxjhService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmCbxxpServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmCzplpNewServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmCzplpServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmGcrlServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbcnpServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbjbbServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbrydypServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbwxjhServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/DmDhqdpService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/DmJgxywrybService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/DmJtsyjhService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/DmTzjhService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/DmXbjhService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/DmZrcjhService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmDhqdpServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmJgxywrybServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmJtsyjhServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmTzjhServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmXbjhServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmZrcjhServiceImpl.java create mode 100644 src/main/java/com/dsic/gj_erp/service/sy/SYService.java create mode 100644 src/main/java/com/dsic/gj_erp/util/CodeGenerator.java create mode 100644 src/main/java/com/dsic/gj_erp/util/ExcelUtil.java create mode 100644 src/main/java/com/dsic/gj_erp/util/JwtUtil.java create mode 100644 src/main/java/com/dsic/gj_erp/util/MD5Util.java create mode 100644 src/main/java/com/dsic/gj_erp/util/ObjConvertUtils.java create mode 100644 src/main/resources/application-dev.properties create mode 100644 src/main/resources/application.properties create mode 100644 src/main/resources/mappers/jcsj/DmCbxxpMapper.xml create mode 100644 src/main/resources/mappers/jcsj/DmCzplpMapper.xml create mode 100644 src/main/resources/mappers/jcsj/DmCzplpNewMapper.xml create mode 100644 src/main/resources/mappers/jcsj/EmGcrlMapper.xml create mode 100644 src/main/resources/mappers/jcsj/EmSbcnpMapper.xml create mode 100644 src/main/resources/mappers/jcsj/EmSbjbbMapper.xml create mode 100644 src/main/resources/mappers/jcsj/EmSbrydypMapper.xml create mode 100644 src/main/resources/mappers/jcsj/EmSbwxjhMapper.xml create mode 100644 src/main/resources/mappers/jhgk/DmDhqdpMapper.xml create mode 100644 src/main/resources/mappers/jhgk/DmJgxywrybMapper.xml create mode 100644 src/main/resources/mappers/jhgk/DmJtsyjhMapper.xml create mode 100644 src/main/resources/mappers/jhgk/DmSygdMapper.xml create mode 100644 src/main/resources/mappers/jhgk/DmSygdMxMapper.xml create mode 100644 src/main/resources/mappers/jhgk/DmTzjhMapper.xml create mode 100644 src/main/resources/mappers/jhgk/DmXbjhMapper.xml create mode 100644 src/main/resources/mappers/jhgk/DmZrcjhMapper.xml create mode 100644 src/main/resources/mappers/sy/SyuserMapper.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..cb28b0e37c7d206feb564310fdeec0927af4123a GIT binary patch literal 62547 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 A?*IS* literal 0 HcmV?d00001 diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..2e76e18 --- /dev/null +++ b/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.4/apache-maven-3.9.4-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar diff --git a/mvnw b/mvnw new file mode 100644 index 0000000..66df285 --- /dev/null +++ b/mvnw @@ -0,0 +1,308 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.2.0 +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "$(uname)" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME + else + JAVA_HOME="/Library/Java/Home"; export JAVA_HOME + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && + JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then + if $darwin ; then + javaHome="$(dirname "\"$javaExecutable\"")" + javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" + else + javaExecutable="$(readlink -f "\"$javaExecutable\"")" + fi + javaHome="$(dirname "\"$javaExecutable\"")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$(cd "$wdir/.." || exit 1; pwd) + fi + # end of workaround + done + printf '%s' "$(cd "$basedir" || exit 1; pwd)" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + # Remove \r in case we run on Windows within Git Bash + # and check out the repository with auto CRLF management + # enabled. Otherwise, we may read lines that are delimited with + # \r\n and produce $'-Xarg\r' rather than -Xarg due to word + # splitting rules. + tr -s '\r\n' ' ' < "$1" + fi +} + +log() { + if [ "$MVNW_VERBOSE" = true ]; then + printf '%s\n' "$1" + fi +} + +BASE_DIR=$(find_maven_basedir "$(dirname "$0")") +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +log "$MAVEN_PROJECTBASEDIR" + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" +if [ -r "$wrapperJarPath" ]; then + log "Found $wrapperJarPath" +else + log "Couldn't find $wrapperJarPath, downloading it ..." + + if [ -n "$MVNW_REPOURL" ]; then + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + else + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + fi + while IFS="=" read -r key value; do + # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) + safeValue=$(echo "$value" | tr -d '\r') + case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; + esac + done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" + log "Downloading from: $wrapperUrl" + + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget > /dev/null; then + log "Found wget ... using wget" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + log "Found curl ... using curl" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + else + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + fi + else + log "Falling back to using Java to download" + javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaSource=$(cygpath --path --windows "$javaSource") + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then + log " - Compiling MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/javac" "$javaSource") + fi + if [ -e "$javaClass" ]; then + log " - Running MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +# If specified, validate the SHA-256 sum of the Maven wrapper jar file +wrapperSha256Sum="" +while IFS="=" read -r key value; do + case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; + esac +done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" +if [ -n "$wrapperSha256Sum" ]; then + wrapperSha256Result=false + if command -v sha256sum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + elif command -v shasum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." + echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." + exit 1 + fi + if [ $wrapperSha256Result = false ]; then + echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2 + echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2 + echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2 + exit 1 + fi +fi + +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# shellcheck disable=SC2086 # safe args +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 0000000..95ba6f5 --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,205 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.2.0 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file +SET WRAPPER_SHA_256_SUM="" +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B +) +IF NOT %WRAPPER_SHA_256_SUM%=="" ( + powershell -Command "&{"^ + "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ + "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ + " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " exit 1;"^ + "}"^ + "}" + if ERRORLEVEL 1 goto error +) + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..27ff558 --- /dev/null +++ b/pom.xml @@ -0,0 +1,266 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.3.4.RELEASE + + + com.dsic + gj_erp + 0.0.1-SNAPSHOT + gj_erp + gj_erp + + + 1.8 + + + + + io.jsonwebtoken + jjwt + 0.6.0 + + + com.microsoft.sqlserver + mssql-jdbc + runtime + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-jdbc + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-data-redis + + + org.projectlombok + lombok + 1.16.20 + + + org.springframework.boot + spring-boot-starter-validation + + + + com.querydsl + querydsl-jpa + + + com.querydsl + querydsl-apt + provided + + + + + io.springfox + springfox-swagger2 + 2.9.2 + + + + io.springfox + springfox-swagger-ui + 2.9.2 + + + + com.baomidou + mybatis-plus-boot-starter + 3.3.2 + + + + + + + + com.baomidou + mybatis-plus-extension + 3.3.2 + + + com.baomidou + mybatis-plus-generator + 3.3.2 + + + + com.github.jeffreyning + mybatisplus-plus + 1.5.1-RELEASE + + + + org.apache.velocity + velocity-engine-core + 2.2 + + + + + com.alibaba + fastjson + 1.2.83 + + + + + com.alibaba + easyexcel + 2.2.7 + + + org.apache.commons + commons-lang3 + 3.0 + + + + + + org.apache.pdfbox + fontbox + 2.0.1 + + + org.apache.pdfbox + pdfbox + 2.0.1 + + + + io.netty + netty-all + 4.1.52.Final + + + + com.google.code.gson + gson + + + + + com.corundumstudio.socketio + netty-socketio + 1.7.23 + + + + cn.hutool + hutool-all + 5.8.15 + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + junit + junit + test + + + com.baomidou + mybatis-plus-extension + 3.4.0 + + + + + + + + + + + + + + + + + + + org.apache.poi + poi + 4.0.0 + + + org.apache.poi + poi-ooxml + 4.0.0 + + + org.apache.poi + poi-ooxml-schemas + 4.0.0 + + + + + + + + + + + org.modelmapper + modelmapper + 2.3.5 + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + 2.3.4.RELEASE + + + com.mysema.maven + apt-maven-plugin + 1.1.3 + + + generate-sources + + process + + + target/generated-sources + com.querydsl.apt.jpa.JPAAnnotationProcessor + + + + + + + + + diff --git a/src/main/java/com/dsic/gj_erp/GjErpApplication.java b/src/main/java/com/dsic/gj_erp/GjErpApplication.java new file mode 100644 index 0000000..ddc7d95 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/GjErpApplication.java @@ -0,0 +1,43 @@ +package com.dsic.gj_erp; + +import com.github.jeffreyning.mybatisplus.conf.EnableMPP; +import com.querydsl.jpa.impl.JPAQueryFactory; +import org.modelmapper.ModelMapper; +import org.modelmapper.convention.MatchingStrategies; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import javax.persistence.EntityManager; + +@EnableMPP +@SpringBootApplication +@EnableSwagger2 +@MapperScan({"com.dsic.gj_erp.mapper"}) +public class GjErpApplication { + + public static void main(String[] args) { + + SpringApplication.run(GjErpApplication.class, args); + } + @Bean + public JPAQueryFactory jpaQueryFactory(EntityManager entityManager){ + return new JPAQueryFactory(entityManager); + } + + @Bean + public ModelMapper modelMapper() { + ModelMapper modelMapper = new ModelMapper(); + /** + * 完全匹配 + */ + modelMapper.getConfiguration().setFullTypeMatchingRequired(true); + /** + * 匹配策略定义为严格 + */ + modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); + return modelMapper; + } +} diff --git a/src/main/java/com/dsic/gj_erp/Test.java b/src/main/java/com/dsic/gj_erp/Test.java new file mode 100644 index 0000000..af24084 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/Test.java @@ -0,0 +1,16 @@ +package com.dsic.gj_erp; + +import org.springframework.boot.SpringApplication; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class Test { + public static void main(String[] args) { + Pattern p = Pattern.compile(".*\\.xls"); +// 创建 Matcher 对象 + Matcher m = p.matcher("s集团xls滚动计划——线表 - 副本.xls"); + + System.out.println(m.matches()); + } +} diff --git a/src/main/java/com/dsic/gj_erp/annotation/AuthFunction.java b/src/main/java/com/dsic/gj_erp/annotation/AuthFunction.java new file mode 100644 index 0000000..829bd5d --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/annotation/AuthFunction.java @@ -0,0 +1,15 @@ +package com.dsic.gj_erp.annotation; + + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(value = {ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface AuthFunction { + + String[] CKDMS() default {}; + +} diff --git a/src/main/java/com/dsic/gj_erp/annotation/Dict.java b/src/main/java/com/dsic/gj_erp/annotation/Dict.java new file mode 100644 index 0000000..fe5688f --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/annotation/Dict.java @@ -0,0 +1,32 @@ +package com.dsic.gj_erp.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 数据字典注解 + * + * @author xhj + * @date 2021/1/18 + */ +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) + +public @interface Dict { + + /** + * 字典类型 + * + * @return + */ + String dictCode(); + + /** + * 返回属性名 + * + * @return + */ + String dictText() default ""; +} \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/aspect/AuthFunctionAspect.java b/src/main/java/com/dsic/gj_erp/aspect/AuthFunctionAspect.java new file mode 100644 index 0000000..567e594 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/aspect/AuthFunctionAspect.java @@ -0,0 +1,60 @@ +package com.dsic.gj_erp.aspect; + + +import com.dsic.gj_erp.annotation.AuthFunction; +import com.dsic.gj_erp.exception.CustomException; +import com.dsic.gj_erp.service.ApiService; +import com.dsic.gj_erp.util.JwtUtil; +import io.jsonwebtoken.Claims; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; + +@Aspect +@Component +public class AuthFunctionAspect { + + @Autowired + private HttpServletRequest request; + @Autowired + private JwtUtil jwtUtil; + @Autowired + private ApiService apiService; + + + /** + * Controller层切点 注解拦截 + */ + @Pointcut("@annotation(authFunction) ") + public void doAuthFunction(AuthFunction authFunction) { + } + + + /** + * 功能权限认证 + */ + @Around("doAuthFunction(authFunction)") + public Object deBefore(ProceedingJoinPoint pjp, AuthFunction authFunction) throws Throwable { + String token = request.getHeader("token"); + if (token == null) { + throw new CustomException(10105, jwtUtil.getHeader() + "不能为空!"); + } + Claims claims = jwtUtil.getClaimByToken(token); + if (claims == null || jwtUtil.isTokenExpired(claims.getExpiration())) { + throw new CustomException(10106, jwtUtil.getHeader() + "失效,请重新登录!"); + } + request.setAttribute("yhms",claims.get("yhms")); + request.setAttribute("yhdm", claims.getId()); + request.setAttribute("zxtdm", claims.getSubject()); + if (!apiService.hasPermission(claims.getId(), authFunction.CKDMS())) { + throw new CustomException(10104, "用户没有该菜单权限!"); + } + return pjp.proceed(); + } + +} diff --git a/src/main/java/com/dsic/gj_erp/aspect/DictAspect.java b/src/main/java/com/dsic/gj_erp/aspect/DictAspect.java new file mode 100644 index 0000000..871ed97 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/aspect/DictAspect.java @@ -0,0 +1,177 @@ +package com.dsic.gj_erp.aspect; + +import com.alibaba.fastjson.JSONObject; +import com.dsic.gj_erp.annotation.Dict; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.sy.Dm_zhbmp; +import com.dsic.gj_erp.dao.sy.Dm_zhbmpRepository; +import com.dsic.gj_erp.util.ObjConvertUtils; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Field; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 数据字典切面 + * + * @author xhj + * @date 2021/1/18 + */ +@Aspect +@Component +@Slf4j +public class DictAspect { + + /** + * 字典后缀 + */ + private static String DICT_TEXT_SUFFIX = "Text"; + + @Autowired + private Dm_zhbmpRepository dm_zhbmpRepository; + + /** + * 切点,切入 controller 包下面的所有方法 + * 定义切入点表达式 execution (* com.demo.service.impl..*.*(..)) + * 1、execution(): 表达式主体。 + * 2.、方法修饰符 无 + * 3、第一个*号:表示返回类型,*号表示所有的类型。 + * 4、包名:表示需要拦截的包名,后面的两个句点表示当前包和当前包的所有子包,com.demo.service.impl包、子孙包下所有类的方法。 + * 5、第二个*号:表示类名,*号表示所有的类。 + * 6、*(..):最后这个星号表示方法名,*号表示所有的方法,后面括弧里面表示方法的参数,两个句点表示任何参数。 + * 7、异常模式 不限 + */ + //@Pointcut("execution( * com.dsic.xzerp.controller..*.*Controller.*(..))") + @Pointcut("execution( * com.dsic.gj_erp.controller..*Controller.*Dict(..))") + + public void dict() { + + } + + + @Around("dict()") + public Object doAround(ProceedingJoinPoint pjp) throws Throwable { + long time1 = System.currentTimeMillis(); + Object result = pjp.proceed(); + long time2 = System.currentTimeMillis(); + log.info("获取JSON数据 耗时:" + (time2 - time1) + "ms"); + long start = System.currentTimeMillis(); + this.parseDictText(result); + long end = System.currentTimeMillis(); + log.info("解析注入JSON数据 耗时" + (end - start) + "ms"); + return result; + } + // 一个controller 返回多个是不好用的如果是map qukey 进行遍历 + private void parseDictText(Object result) { + log.info("进到这里来了"); + if (result instanceof ResultBean) { + List items = new ArrayList<>(); + ResultBean rr = (ResultBean) result; + List listVo=null; + if ( rr.getData() instanceof Map){ + listVo= (List) ((Map) rr.getData()).get("list"); + }else if (rr.getData() instanceof List){ + listVo= (List) rr.getData(); + } + + if (listVo!=null &&listVo.size()>0) { + List list = (List) rr.getData(); + for (Object record : list) { + ObjectMapper mapper = new ObjectMapper(); + String json = "{}"; + try { + // 解决@JsonFormat注解解析不了的问题详见SysAnnouncement类的@JsonFormat + json = mapper.writeValueAsString(record); + } catch (JsonProcessingException e) { + log.error("Json解析失败:" + e); + } + JSONObject item = JSONObject.parseObject(json); + // 解决继承实体字段无法翻译问题 + for (Field field : ObjConvertUtils.getAllFields(record)) { + //解决继承实体字段无法翻译问题 + // 如果该属性上面有@Dict注解,则进行翻译 + if (field.getAnnotation(Dict.class) != null) { + // 拿到注解的dictDataSource属性的值 + String dictType = field.getAnnotation(Dict.class).dictCode(); + // 拿到注解的dictText属性的值 + String text = field.getAnnotation(Dict.class).dictText(); + //获取当前带翻译的值 + String key = String.valueOf(item.get(field.getName())); + //翻译字典值对应的text值 + String textValue = translateDictValue(dictType, key); + // DICT_TEXT_SUFFIX的值为,是默认值: + // public static final String DICT_TEXT_SUFFIX = "_dictText"; + // log.debug("字典Val: " + textValue); + // log.debug("翻译字典字段:" + field.getName() + DICT_TEXT_SUFFIX + ": " + textValue); + //如果给了文本名 + if (!StringUtils.isBlank(text)) { + item.put(text, textValue); + } else { + // 走默认策略 + item.put(field.getName() + DICT_TEXT_SUFFIX, textValue); + } + } + // date类型默认转换string格式化日期 + if ("java.util.Date".equals(field.getType().getName()) + && field.getAnnotation(JsonFormat.class) == null + && item.get(field.getName()) != null) { + SimpleDateFormat aDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + item.put(field.getName(), aDate.format(new Date((Long) item.get(field.getName())))); + } + } + items.add(item); + } + rr.setData(items); + } + } + } + + /** + * 翻译字典文本 + * + * @param dictType + * @param key + * @return + */ + private String translateDictValue(String dictType, String key) { + if (ObjConvertUtils.isEmpty(key)) { + return null; + } + StringBuffer textValue = new StringBuffer(); + String[] keys = key.split(","); + for (String k : keys) { + if (k.trim().length() == 0) { + continue; + } + /** + * 根据 dictCode 和 code 查询字典值,例如:dictCode:sex,code:1,返回:男 + * 应该放在redis,提高响应速度 + */ +// SysDictDetail dictData = dm_zhbmpRepository.getDictDataByTypeAndValue(dictType, key); + Dm_zhbmp dictData = dm_zhbmpRepository.findByBMLBAndBM(dictType,key); + //System.out.println("执行了"); + if (dictData.getBmsm() != null) { + if (!"".equals(textValue.toString())) { + textValue.append(","); + } + textValue.append(dictData.getBmsm()); + } + //log.info("数据字典翻译: 字典类型:{},当前翻译值:{},翻译结果:{}", dictType, k.trim(), dictData.getBMSM()); + } + return textValue.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/bean/ResultBean.java b/src/main/java/com/dsic/gj_erp/bean/ResultBean.java new file mode 100644 index 0000000..38ee347 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/ResultBean.java @@ -0,0 +1,79 @@ +package com.dsic.gj_erp.bean; + +import java.io.Serializable; + +/** + * @author Jason.zhang + * @email jason_56@outlook.com + * @Descrption 统一http restful response + */ +public class ResultBean implements Serializable { + + /** + * + */ + private static final long serialVersionUID = -7165615593336091195L; + + private String message; + private boolean success; + private int status; + private T data; + + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + public ResultBean(boolean success, int status, String message) { + this.success = success; + this.status = status; + this.message=message; + } + + + public ResultBean() { + this.success = true; + this.status = 10000; + } + + public ResultBean(T data) { + this.success = true; + this.status = 10000; + this.data = data; + } + + public ResultBean(String message, T data) { + this.success = true; + this.status = 10000; + this.message =message; + this.data = data; + } + +} \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/DmCbxxp.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/DmCbxxp.java new file mode 100644 index 0000000..2764610 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/DmCbxxp.java @@ -0,0 +1,102 @@ +package com.dsic.gj_erp.bean.jcsj; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-11 + */ +@Data +@Getter +@Setter +@EqualsAndHashCode(callSuper = false) +@TableName("DM_CBXXP") +@ApiModel(value="DmCbxxp对象", description="") +public class DmCbxxp implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "船舶编码") + @TableId(value = "CBBM", type = IdType.ASSIGN_UUID) + private String cbbm; + + @ApiModelProperty(value = "船舶名称") + @TableField("CBMC") + private String cbmc; + + private String shry; + + @TableField("YLZD4") + private Double ylzd4; + + private String sCzbh; + + @TableField("YLZD1") + private String ylzd1; + + private String bz; + + private String kgrq; + + private String ckxszt; + + private String pdrq; + + private String pswcrq; + + private String wgbs; + + private String xgr; + + @TableField("YLZD2") + private String ylzd2; + + private String bzr; + + private String xgrq; + + private String drbz; + + @TableField("YLZD5") + private Double ylzd5; + + private String cjs; + + private String zt; + + private String cwfzbs; + + @TableField("YLZD6") + private Double ylzd6; + + private String xbz; + + @TableField("YLZD3") + private String ylzd3; + + private String xsrq; + + private String bzrq; + + private String qgwcrq; + + + @TableField(exist = false) + private String cbbm1; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/DmCzplp.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/DmCzplp.java new file mode 100644 index 0000000..9492d96 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/DmCzplp.java @@ -0,0 +1,100 @@ +package com.dsic.gj_erp.bean.jcsj; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +import java.io.Serializable; +import java.math.BigDecimal; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("DM_CZPLP") +@ApiModel(value="DmCzplp对象", description="") +public class DmCzplp implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "船号") + @TableField("DC_CH") + private String dcCh; + + @TableField("TJRQ") + private String tjrq; + + @TableField("BZ") + private String bz; + + @TableField("APSZDR") + private String apszdr; + + @TableField("YLZD6") + private Double ylzd6; + + @TableField("YLZD3") + private String ylzd3; + + @TableField("DC_PL_JY") + private String dcPlJy; + + @TableField("LRR") + private String lrr; + + @TableField("JSBS") + private String jsbs; + + @TableField("DC_PL") + private String dcPl; + + @TableField("YLZD1") + private String ylzd1; + + @TableField("YLZD4") + private Double ylzd4; + + @TableField("APSZDRQ") + private String apszdrq; + + @TableField("DC_FD") + private String dcFd; + + @TableField("YLZD2") + private String ylzd2; + + @TableId(value = "ID", type = IdType.ASSIGN_UUID) + private String id; + + @TableField("LRRQ") + private String lrrq; + + private String scjhzt; + + private String jhyxj; + + @TableField("YLZD5") + private Double ylzd5; + + @TableField("DC_CH_JY") + private String dcChJy; + + @TableField("JSRQ") + private String jsrq; + + @TableField("ZL") + private BigDecimal zl; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/DmCzplpNew.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/DmCzplpNew.java new file mode 100644 index 0000000..990f0d2 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/DmCzplpNew.java @@ -0,0 +1,174 @@ +package com.dsic.gj_erp.bean.jcsj; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +import java.io.Serializable; +import java.math.BigDecimal; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="DmCzplpNew对象", description="") +public class DmCzplpNew implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "分段") + @TableField("DC_fd") + private String dcFd; + + @ApiModelProperty(value = "船号") + @TableField("DC_CH") + private String dcCh; + + @ApiModelProperty(value = "批量") + @TableField("DC_PL") + private String dcPl; + + @ApiModelProperty(value = "重量") + @TableField("ZL") + private BigDecimal zl; + + @ApiModelProperty(value = "录入人") + @TableField("LRR") + private String lrr; + + @ApiModelProperty(value = "录入日期") + @TableField("LRRQ") + private String lrrq; + + @ApiModelProperty(value = "备注") + @TableField("BZ") + private String bz; + + @ApiModelProperty(value = "区域") + private String qy; + + @ApiModelProperty(value = "总段号") + private String zdh; + + @ApiModelProperty(value = "集团3月滚动期") + private String gdqJt; + + @ApiModelProperty(value = "钢加结束(大组)1") + private String dzjsq; + + @ApiModelProperty(value = "中日程(大组结束)") + private String dzjsqZrc; + + @ApiModelProperty(value = "钢加结束(小组)1") + private String xzjsq; + + @ApiModelProperty(value = "中日程(小组结束)") + private String xzjsqZrc; + + @ApiModelProperty(value = "钢加开始1") + private String gjks; + + @ApiModelProperty(value = "中日程(钢加开始)") + private String gjksZrc; + + @ApiModelProperty(value = "订货期次") + private String dhqc; + + @ApiModelProperty(value = "套料图下发1") + private String xfqTlt; + + @ApiModelProperty(value = "套料图接收") + private String jsqTlt; + + @ApiModelProperty(value = "板材领取表下发1") + private String xfqLqb; + + @ApiModelProperty(value = "板材领取表接收") + private String jsqLqb; + + @ApiModelProperty(value = "零件配套表下发") + private String xfqPtb; + + @ApiModelProperty(value = "零件配套表接收") + private String jsqPtb; + + @ApiModelProperty(value = "大组数量") + private BigDecimal slDz; + + @ApiModelProperty(value = "小组数量") + private BigDecimal slXz; + + @ApiModelProperty(value = "大组齐套日期") + private String qtqDz; + + @ApiModelProperty(value = "小组齐套日期") + private String qtqXz; + + @ApiModelProperty(value = "分段需求期") + private String fdxqq; + + @ApiModelProperty(value = "实际配送期") + private String sjpsq; + + @ApiModelProperty(value = "订货清单号") + private String dhqd; + + @ApiModelProperty(value = "订货清单下发1") + private String xfqDhqd; + + @ApiModelProperty(value = "实际订货日期") + private String sjdhrq; + + @ApiModelProperty(value = "板材到齐") + private String bcdq; + + @ApiModelProperty(value = "实际到货日期") + private String sjarrival; + + @ApiModelProperty(value = "结算数据标识区域") + private String jsbs; + + @ApiModelProperty(value = "状态:0:编辑1:提交2:审核") + private String zt; + + private String xzjsqsm; + + @TableId(value = "ID", type = IdType.ASSIGN_UUID) + private String id; + + private String lsh; + + private String xfqLqb1sm; + + private String xfqTlt1; + + private String dzjsq1; + + private String xfqTltsm; + + private String dzjsqsm; + + private String gjks1; + + private String xfqDhqd1; + + private String gjkssm; + + private String xzjsq1; + + private String xfqDhqd1sm; + + private String xfqLqb1; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/EmGcrl.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmGcrl.java new file mode 100644 index 0000000..d51e595 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmGcrl.java @@ -0,0 +1,50 @@ +package com.dsic.gj_erp.bean.jcsj; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("Em_gcrl") +@ApiModel(value="EmGcrl对象", description="") +@Entity +public class EmGcrl implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "序号") + @TableId(value = "xh", type = IdType.ASSIGN_UUID) + @Id + private String xh; + + @ApiModelProperty(value = "年份") + private String nf; + + @ApiModelProperty(value = "公历") + private String gl; + + @ApiModelProperty(value = "休息日0 工作日1") + private String xxr; + + @ApiModelProperty(value = "备注") + private String bz; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbcnp.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbcnp.java new file mode 100644 index 0000000..d4a519d --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbcnp.java @@ -0,0 +1,52 @@ +package com.dsic.gj_erp.bean.jcsj; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="EmSbcnp对象", description="") +@TableName("em_sbcnp") +//@Entity +public class EmSbcnp implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "设备编号") + // @Id + @TableId(value = "SBBH", type = IdType.ASSIGN_UUID) + private String sbbh; + + @ApiModelProperty(value = "设备名称") + @TableField("SBMC") + private String sbmc; + + @ApiModelProperty(value = "产能") + private Double sbcn; + + @ApiModelProperty(value = "产能单位(张/米/...)") + private String dw; + + @ApiModelProperty(value = "产能单位时间(天 或小时)") + private String dwsj; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbjbb.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbjbb.java new file mode 100644 index 0000000..0439c5d --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbjbb.java @@ -0,0 +1,299 @@ +package com.dsic.gj_erp.bean.jcsj; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("EM_SBJBB") +@ApiModel(value="EmSbjbb对象", description="") +@Entity +public class EmSbjbb implements Serializable { + + private static final long serialVersionUID=1L; + + + @TableField("YLZD2") + private String ylzd2; + + @ApiModelProperty(name = "szcs", notes = "所属部门") + @TableField("SZCS") + private String szcs; + + @Id + @ApiModelProperty(name = "sbbh", notes = "设备编号") + @TableId(value = "SBBH", type = IdType.ASSIGN_UUID) + private String sbbh; + + @TableField("SBCZ") + @ApiModelProperty(name = "sbcz", notes = "设备残值") + private Double sbcz; + + @TableField("HTXH") + private Double htxh; + + @TableField("SBGG") + @ApiModelProperty(name = "sbgg", notes = "设备规格") + private String sbgg; + + @ApiModelProperty(name = "jyxx", notes = "检验信息") + private String jyxx; + + @TableField("KXRQ") + private String kxrq; + + @TableField("AZKSRQ") + private String azksrq; + + @TableField("TSJSRQ") + private String tsjsrq; + + @TableField("YXJY") + private String yxjy; + + @TableField("SBKGNL") + @ApiModelProperty(name = "sbkgnl", notes = "设备能力") + private Double sbkgnl; + + @TableField("EDSYSJDW") + @ApiModelProperty(name = "edsysjdw", notes = "额定使用时间单位") + private String edsysjdw; + + @TableField("SBYSZT") + private String sbyszt; + + @TableField("SBJG") + @ApiModelProperty(name = "sbjg", notes = "设备原值") + private Double sbjg; + + @TableField("CD") + @ApiModelProperty(name = "cd", notes = "产地") + private String cd; + + @TableField("ZDRY") + @ApiModelProperty(name = "zdry", notes = "制单人") + private String zdry; + + @TableField("AZBJ") + private String azbj; + + @TableField("JSR") + private String jsr; + + @TableField("EDDXCS") + private String eddxcs; + + @TableField("SBZL") + @ApiModelProperty(name = "sbzl", notes = "设备中类") + private String sbzl; + + @TableField("GDZCBH") + @ApiModelProperty(name = "gdzcbh", notes = "固定资产编号") + private String gdzcbh; + + @TableField("CCRQ") + @ApiModelProperty(name = "ccrq", notes = "出厂日期(yyyy/MM/dd)") + private String ccrq; + + @TableField("AZDW") + private String azdw; + + @TableField("JFBJ") + private String jfbj; + + @ApiModelProperty(name = "azwz", notes = "安装位置") + private String azwz; + + @TableField("TSDD") + private String tsdd; + + @TableField("EDSYNX") + @ApiModelProperty(name = "edsynx", notes = "额定使用年限") + private String edsynx; + + @TableField("SBMC") + @ApiModelProperty(name = "sbmc", notes = "设备名称") + private String sbmc; + + @TableField("YLZD5") + private Double ylzd5; + + @TableField("ZDSJ") + @ApiModelProperty(name = "zdsj", notes = "制单日期(yyyy/MM/dd)") + private String zdsj; + + @TableField("TZDH") + private String tzdh; + + @TableField("SBNL") + private String sbnl; + + @TableField("ZCFL") + @ApiModelProperty(name = "zcfl", notes = "资产分类") + private String zcfl; + + @TableField("KXYSBJ") + private String kxysbj; + + @TableField("AZJSRQ") + private String azjsrq; + + @TableField("TSR") + private String tsr; + + @TableField("CZRY") + @ApiModelProperty(name = "czry", notes = "操作者") + private String czry; + + @TableField("TSYSR") + private String tsysr; + + @TableField("YLZD6") + private Double ylzd6; + + @TableField("JLDW") + @ApiModelProperty(name = "jldw", notes = "计量单位") + private String jldw; + + @TableField("WXCC") + @ApiModelProperty(name = "wxcc", notes = "外形尺寸") + private String wxcc; + + @TableField("KXYSDW") + private String kxysdw; + + @ApiModelProperty(name = "zzdw", notes = "制造单位") + @TableField("ZZDW") + private String zzdw; + + @ApiModelProperty(name = "bz", notes = "备注") + @TableField("BZ") + private String bz; + + @TableField("SBJFRQ") + private String sbjfrq; + + @TableField("AZR") + private String azr; + + @TableField("YLZD3") + private String ylzd3; + + @TableField("GZZXBH") + private String gzzxbh; + + @TableField("DHRQ") + private String dhrq; + + @ApiModelProperty(name = "edgl", notes = "额定功率") + @TableField("EDGL") + private Double edgl; + + @ApiModelProperty(name = "zjnx", notes = "折旧年限") + @TableField("ZJNX") + private String zjnx; + + @TableField("AZDD") + private String azdd; + + @ApiModelProperty(name = "tzsb", notes = "特种设备") + private String tzsb; + + @TableField("GRRQ") + @ApiModelProperty(name = "grrq", notes = "购入日期") + private String grrq; + + @TableField("SBZT") + @ApiModelProperty(name = "sbzt", notes = "设备状态") + private String sbzt; + + @TableField("ZXS") + private Double zxs; + + @TableField("TSJG") + private String tsjg; + + @TableField("EDSYSJ") + @ApiModelProperty(name = "edsysj", notes = "额定使用时间") + private String edsysj; + + @TableField("YLZD4") + private Double ylzd4; + + @TableField("GZZXMC") + private String gzzxmc; + + @TableField("KXDH") + private String kxdh; + + @ApiModelProperty(name = "sbxh", notes = "设备型号") + @TableField("SBXH") + private String sbxh; + + @ApiModelProperty(name = "gldw", notes = "额定功率单位") + @TableField("GLDW") + private String gldw; + + @TableField("TZXH") + private Double tzxh; + + @ApiModelProperty(name = "sbfl", notes = "设备大类") + @TableField("SBFL") + private String sbfl; + + @ApiModelProperty(name = "gysbm", notes = "供应商") + @TableField("GYSBM") + private String gysbm; + + @TableField("YSJL") + private String ysjl; + + @TableField("TSYSBJ") + private String tsysbj; + + @TableField("YLZD1") + private String ylzd1; + + @TableField("GRHTBH") + private String grhtbh; + + @ApiModelProperty(name = "sbxl", notes = "设备小类") + @TableField("SBXL") + private String sbxl; + + @ApiModelProperty(name = "ccbh", notes = "出厂编号") + @TableField("CCBH") + private String ccbh; + + @TableField("KXYSR") + private String kxysr; + + @TableField("SBQYRQ") + private String sbqyrq; + + @ApiModelProperty(name = "lgrq", notes = "列固日期") + private String lgrq; + + @TableField("TSKSRQ") + private String tsksrq; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbrydyp.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbrydyp.java new file mode 100644 index 0000000..73f8aa2 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbrydyp.java @@ -0,0 +1,82 @@ +package com.dsic.gj_erp.bean.jcsj; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("EM_SBRYDYP") +@ApiModel(value="EmSbrydyp对象", description="") +@Entity +@IdClass(EmSbrydyp.class) +public class EmSbrydyp implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "设备名称") + @TableField("SBMC") + private String sbmc; + + @Id + @TableId(value = "RYMC", type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "人员名称") + private String rymc; + + @TableField("XGR") + private String xgr; + + @TableField("YLZD4") + private Double ylzd4; + + @TableField("JLRQ") + private String jlrq; + + @TableField("YLZD1") + private String ylzd1; + + @TableField("SBBH") + @Id + @ApiModelProperty(value = "设备编号") + private String sbbh; + + @TableField("XGRQ") + private String xgrq; + + @TableField("YLZD6") + private Double ylzd6; + + @TableField("YLZD3") + private String ylzd3; + + @TableField("JLR") + @ApiModelProperty(value = "负责人") + private String jlr; + + @TableField("YLZD5") + private Double ylzd5; + + @TableField("YLZD2") + private String ylzd2; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbwxjh.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbwxjh.java new file mode 100644 index 0000000..ccec210 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbwxjh.java @@ -0,0 +1,84 @@ +package com.dsic.gj_erp.bean.jcsj; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="EmSbwxjh对象", description="") +@TableName("em_sbwxjh") +//@Entity +public class EmSbwxjh implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "设备编号") + @TableField("SBBH") + private String sbbh; + + @ApiModelProperty(value = "设备名称") + @TableField("SBMC") + private String sbmc; + + @ApiModelProperty(value = "设备型号") + @TableField("SBXH") + private String sbxh; + + @ApiModelProperty(value = "设备规格") + @TableField("SBGG") + private String sbgg; + + @ApiModelProperty(value = "所属部门") + @TableField("SZCS") + private String szcs; + + @ApiModelProperty(value = "维修内容") + private String wxnr; + + @ApiModelProperty(value = "计划开始时间(yyyy/MM/dd HH:mm:ss)") + // @TableField("kssj_jh") + private String kssjJh; + + @ApiModelProperty(value = "计划结束时间(yyyy/MM/dd HH:mm:ss)") + // @TableField("jssj_jh") + private String jssjJh; + + @ApiModelProperty(value = "实际开始时间(yyyy/MM/dd HH:mm:ss)") + private String kssjSj; + + @ApiModelProperty(value = "实际结束时间(yyyy/MM/dd HH:mm:ss)") + private String jssjSj; + + @ApiModelProperty(value = "状态 ") + private String zt; + + @ApiModelProperty(value = "负责人") + private String fzr; + + @ApiModelProperty(value = "备注") + private String bz; + + // @Id + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/excel/PlExcel.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/excel/PlExcel.java new file mode 100644 index 0000000..55f6de0 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/excel/PlExcel.java @@ -0,0 +1,233 @@ +package com.dsic.gj_erp.bean.jcsj.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="DmCzplpNew对象", description="") +public class PlExcel implements Serializable { + + private static final long serialVersionUID=1L; + @ApiModelProperty(value = "船号") + @ExcelProperty(index = 0) + private String dcCh; + @ApiModelProperty(value = "批量") + @ExcelProperty(index = 1) + private String dcPL; + + + + @ApiModelProperty(value = "区域") + @ExcelProperty(index = 2) + private String qy; + + @ApiModelProperty(value = "分段") + @ExcelProperty(index = 3) + private String dcFd1; + + + + + @ExcelProperty(index = 4) + private String dcFd2; + @ExcelProperty(index = 5) + private String dcFd3; + @ExcelProperty(index = 6) + private String dcFd4; + @ExcelProperty(index = 7) + private String dcFd5; + @ExcelProperty(index = 8) + private String dcFd6; + @ExcelProperty(index = 9) + private String dcFd7; + @ExcelProperty(index = 10) + private String dcFd8; + + + + @ApiModelProperty(value = "总段号") + @ExcelProperty(index = 11) + private String zdh; + + @ApiModelProperty(value = "重量") + @ExcelProperty(index = 12) + private BigDecimal zl; + + + + @ApiModelProperty(value = "集团3月滚动期") + @ExcelProperty(index = 13) + @DateTimeFormat("yyyy/MM/dd") + private String gdqJt; + + @ApiModelProperty(value = "钢加结束(大组)1") + @ExcelProperty(index = 14) + @DateTimeFormat("yyyy/MM/dd") + private String dzjsq; + + @ApiModelProperty(value = "中日程(大组结束)") + @ExcelProperty(index = 15) + @DateTimeFormat("yyyy/MM/dd") + private String dzjsqZrc; + + @ApiModelProperty(value = "钢加结束(小组)1") + @ExcelProperty(index = 16) + @DateTimeFormat("yyyy/MM/dd") + private String xzjsq; + + @ApiModelProperty(value = "中日程(小组结束)") + @ExcelProperty(index = 17) + @DateTimeFormat("yyyy/MM/dd") + private String xzjsqZrc; + + @ApiModelProperty(value = "钢加开始1") + @ExcelProperty(index = 18) + @DateTimeFormat("yyyy/MM/dd") + private String gjks; + + @ApiModelProperty(value = "中日程(钢加开始)") + @ExcelProperty(index = 19) + @DateTimeFormat("yyyy/MM/dd") + private String gjksZrc; + + @ApiModelProperty(value = "订货期次") + @ExcelProperty(index = 20) + private String dhqc; + + @ApiModelProperty(value = "套料图下发1") + @ExcelProperty(index = 21) + @DateTimeFormat("yyyy/MM/dd") + private String xfqTlt; + + @ApiModelProperty(value = "套料图接收") + @ExcelProperty(index = 22) + @DateTimeFormat("yyyy/MM/dd") + private String jsqTlt; + + @ApiModelProperty(value = "板材领取表下发1") + @ExcelProperty(index = 23) + @DateTimeFormat("yyyy/MM/dd") + private String xfqLqb; + + @ApiModelProperty(value = "板材领取表接收") + @ExcelProperty(index = 24) + @DateTimeFormat("yyyy/MM/dd") + private String jsqLqb; + + @ApiModelProperty(value = "零件配套表下发") + @ExcelProperty(index = 25) + @DateTimeFormat("yyyy/MM/dd") + private String xfqPtb; + + @ApiModelProperty(value = "零件配套表接收") + @ExcelProperty(index = 26) + @DateTimeFormat("yyyy/MM/dd") + private String jsqPtb; + + @ApiModelProperty(value = "大组数量") + @ExcelProperty(index = 27) + private BigDecimal slDz; + + @ApiModelProperty(value = "小组数量") + @ExcelProperty(index = 28) + private BigDecimal slXz; + + @ApiModelProperty(value = "大组齐套日期") + @ExcelProperty(index = 29) + @DateTimeFormat("yyyy/MM/dd") + private String qtqDz; + + @ApiModelProperty(value = "小组齐套日期") + @ExcelProperty(index = 30) + @DateTimeFormat("yyyy/MM/dd") + private String qtqXz; + + @ApiModelProperty(value = "分段需求期") + @ExcelProperty(index = 31) + @DateTimeFormat("yyyy/MM/dd") + private String fdxqq; + + @ApiModelProperty(value = "实际配送期") + @ExcelProperty(index = 32) + @DateTimeFormat("yyyy/MM/dd") + private String sjpsq; + + @ApiModelProperty(value = "订货清单号") + @ExcelProperty(index = 33) + private String dhqd; + + @ApiModelProperty(value = "订货清单下发1") + @ExcelProperty(index = 34) + @DateTimeFormat("yyyy/MM/dd") + private String xfqDhqd; + + @ApiModelProperty(value = "实际订货日期") + @ExcelProperty(index = 35) + @DateTimeFormat("yyyy/MM/dd") + private String sjdhrq; + + @ApiModelProperty(value = "板材到齐") + @ExcelProperty(index = 36) + @DateTimeFormat("yyyy/MM/dd") + private String bcdq; + + @ApiModelProperty(value = "实际到货日期") + @ExcelProperty(index = 37) + @DateTimeFormat("yyyy/MM/dd") + private String sjarrival; + + @ApiModelProperty(value = "结算数据标识区域") + @ExcelProperty(index = 38) + private String jsbs; + +// @ApiModelProperty(value = "状态:0:编辑1:提交2:审核") +// private String zt; +// +// private String xzjsqsm; +// +// private String id; +// +// private String xfqLqb1sm; +// +// private String xfqTlt1; +// +// private String dzjsq1; +// +// private String xfqTltsm; +// +// private String dzjsqsm; +// +// private String gjks1; +// +// private String xfqDhqd1; +// +// private String gjkssm; +// +// private String xzjsq1; +// +// private String xfqDhqd1sm; +// +// private String xfqLqb1; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmDhqdp.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmDhqdp.java new file mode 100644 index 0000000..1e32b79 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmDhqdp.java @@ -0,0 +1,90 @@ +package com.dsic.gj_erp.bean.jhgk; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("Dm_dhqdp") +@ApiModel(value="DmDhqdp对象", description="") +public class DmDhqdp implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "船号") + @TableField("DC_CH") + private String dcCh; + + @ApiModelProperty(value = "订货清单号") + private String qdh; + + @ApiModelProperty(value = "期次") + private String qc; + + @ApiModelProperty(value = " 材质") + @TableField("WPXH") + private String wpxh; + + @ApiModelProperty(value = "厚度mm") + private Double thickness; + + @ApiModelProperty(value = "宽度mm") + private Double width; + + @ApiModelProperty(value = "长度mm") + private Double length; + + @ApiModelProperty(value = "重量吨/张") + private Double weight; + + @ApiModelProperty(value = "设计数量张") + private Double sjsl; + + @ApiModelProperty(value = "裕量张") + private Double yl; + + @ApiModelProperty(value = "总数量张") + private Double zsl; + + @ApiModelProperty(value = "总重量吨") + private Double zzl; + + @ApiModelProperty(value = "利库数量张") + private Double lksl; + + @ApiModelProperty(value = "利库重量吨") + private Double lkzl; + + @ApiModelProperty(value = "实订数量张") + private Double sdzs; + + @ApiModelProperty(value = "实订重量吨") + private Double sdzl; + + @ApiModelProperty(value = "备注") + private String bz; + + @ApiModelProperty(value = "状态; 0编辑1提交2审核;默认为0;") + private String zt; + + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmJgxywryb.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmJgxywryb.java new file mode 100644 index 0000000..da8d28b --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmJgxywryb.java @@ -0,0 +1,63 @@ +package com.dsic.gj_erp.bean.jhgk; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("DM_JGXYWRYB") +@ApiModel(value="DmJgxywryb对象", description="") +public class DmJgxywryb implements Serializable { + + private static final long serialVersionUID=1L; + + @TableField("YLZD4") + private Double ylzd4; + + @TableField("YLZD1") + private String ylzd1; + + @TableId(value = "ZXTBM", type = IdType.ASSIGN_UUID) + private String zxtbm; + + @TableField("YLZD2") + private String ylzd2; + + @TableField("RYBM") + private String rybm; + + @TableField("YLZD5") + private Double ylzd5; + + @TableField("SSBM") + private String ssbm; + + @TableField("JGFLM") + private String jgflm; + + @TableField("YLZD3") + private String ylzd3; + + @TableField("RYMC") + private String rymc; + + @TableField("YLZD6") + private Double ylzd6; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmJtsyjh.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmJtsyjh.java new file mode 100644 index 0000000..0fb01dc --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmJtsyjh.java @@ -0,0 +1,67 @@ +package com.dsic.gj_erp.bean.jhgk; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="DmJtsyjh对象", description="") +@TableName("dm_jtsyjh") +@Entity +public class DmJtsyjh implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "船号") + @TableField("DC_CH") + private String dcCh; + + @ApiModelProperty(value = "批量") + @TableField("DC_PL") + private String dcPl; + + @ApiModelProperty(value = "分段") + @TableField("DC_FD") + private String dcFd; + + @ApiModelProperty(value = "计划期") + private String jhrq; + + @ApiModelProperty(value = "备注") + private String bz; + + @ApiModelProperty(value = "编制人") + private String bzy; + + @ApiModelProperty(value = "编制日期") + private String bzrq; + + @ApiModelProperty(value = "状态; 0未提交1已提交;默认为0;") + private String zt; + + @Id + @TableId(value = "xh", type = IdType.ASSIGN_UUID) + private String xh; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygd.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygd.java new file mode 100644 index 0000000..9436670 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygd.java @@ -0,0 +1,145 @@ +package com.dsic.gj_erp.bean.jhgk; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="DmSygd对象", description="") +public class DmSygd implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "产品") + private String dcCh1; + + @ApiModelProperty(value = "目标船只") + private String dcCh2; + + @ApiModelProperty(value = "本船只") + private String dcCh3; + + @ApiModelProperty(value = "批量") + private String dcPl; + + @ApiModelProperty(value = "分段") + private String dcFd; + + @ApiModelProperty(value = "板数") + private Double bs; + + @ApiModelProperty(value = "到货数量") + private Double dhsl; + + @ApiModelProperty(value = "在途数量") + private Double ztsl; + + @ApiModelProperty(value = "生产下发期") + private String scxfq; + + @ApiModelProperty(value = "型材抛丸") + private String xcpw; + + @ApiModelProperty(value = "根数") + private Double gs; + + @ApiModelProperty(value = "抛丸") + private String pw; + + @ApiModelProperty(value = "坡口切割结束") + private String pkjs1; + + @ApiModelProperty(value = "二垮数控板数") + private Double skbs1; + + @ApiModelProperty(value = "数控切割开始") + private String skks1; + + @ApiModelProperty(value = "坡口长度") + private Double pkcd1; + + @ApiModelProperty(value = "坡口切割结束") + private String pkjs2; + + @ApiModelProperty(value = "三垮数控板数") + private Double skbs2; + + @ApiModelProperty(value = "数控切割开始") + private String skks2; + + @ApiModelProperty(value = "坡口长度") + private Double pkcd2; + + @ApiModelProperty(value = "坡口切割结束") + private String pkjs3; + + @ApiModelProperty(value = "三垮平铁板数") + private Double ptbs; + + @ApiModelProperty(value = "平铁切割开始") + private String ptks; + + @ApiModelProperty(value = "平铁切割结束") + private String ptjs; + + @ApiModelProperty(value = "曲平铁转结束") + private String qptzjs; + + @ApiModelProperty(value = "曲平铁结束") + private String qptjs; + + @ApiModelProperty(value = "曲外板结束") + private String qwbjs; + + @ApiModelProperty(value = "组立") + private String zl; + + @ApiModelProperty(value = "数控 板数") + private Double skbs3; + + @ApiModelProperty(value = "数控切割开始") + private String skks3; + + @ApiModelProperty(value = "坡口长度") + private Double pkcd3; + + @ApiModelProperty(value = "坡口切割结束") + private String pkjs4; + + @ApiModelProperty(value = "面板挤边") + private String mbjb; + + @ApiModelProperty(value = "七垮型材米数") + private Double xcms; + + @ApiModelProperty(value = "型材面板") + private String xcmb; + + @ApiModelProperty(value = "分段需求") + private String fdxqq; + + @ApiModelProperty(value = "光电 结束") + private String gdjs; + + @ApiModelProperty(value = "备注") + private String bz; + + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java new file mode 100644 index 0000000..8363f2d --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java @@ -0,0 +1,213 @@ +package com.dsic.gj_erp.bean.jhgk; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="DmSygdMx对象", description="") +public class DmSygdMx implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "产品") + private String dcCh1; + + @ApiModelProperty(value = "目标船只") + private String dcCh2; + + @ApiModelProperty(value = "本船只") + private String dcCh3; + + @ApiModelProperty(value = "批量") + private String dcPl; + + @ApiModelProperty(value = "分段") + private String dcFd; + + @ApiModelProperty(value = "类型") + @TableField("LQLB") + private String lqlb; + + @ApiModelProperty(value = "板数") + private Double bs; + + @ApiModelProperty(value = "套料图号") + private String tzbh; + + @ApiModelProperty(value = "集团计划期") + private String jtjhq; + + @ApiModelProperty(value = "分段需求期") + private String fdxqq; + + @ApiModelProperty(value = "规格") + private String wpgg; + + @ApiModelProperty(value = "材质") + private String wpxh; + + @ApiModelProperty(value = "到货数量") + private Double dhsl; + + @ApiModelProperty(value = "在途数量") + private Double ztsl; + + @ApiModelProperty(value = "生产下发期") + private String scxfq; + + @ApiModelProperty(value = "长度(毫米)") + private Double cd; + + @ApiModelProperty(value = "面积(平方米)") + private Double mj; + + @ApiModelProperty(value = "抛丸计划完工") + private String jhwgPw; + + @ApiModelProperty(value = "施工单位") + @TableField("ZZCJ") + private String zzcj; + + @ApiModelProperty(value = "理料") + private String llrq; + + @ApiModelProperty(value = "划线长度(米)") + private Double hxcd; + + @ApiModelProperty(value = "切割长度(米)") + private Double qgcd; + + @ApiModelProperty(value = "板厚(毫米)") + private Double bh; + + @ApiModelProperty(value = "曲标识") + private String qbs; + + @ApiModelProperty(value = "坡口标识") + private String pkbs; + + @ApiModelProperty(value = "打磨标识") + private String dmbs; + + @ApiModelProperty(value = "一垮龙门板数") + private Double lm1k; + + @ApiModelProperty(value = "一垮龙门完工") + private String wg1klm; + + @ApiModelProperty(value = "一垮数控板数") + private Double lksk; + + @ApiModelProperty(value = "一垮数控完工") + private String wgLksk; + + @ApiModelProperty(value = "坡口长度") + private Double pkcd; + + @ApiModelProperty(value = "坡口计划完工") + private String jhwgPk; + + @ApiModelProperty(value = "二垮数控板数") + private Double lm2k; + + @ApiModelProperty(value = "二垮数控完工") + private String wg2klm; + + @ApiModelProperty(value = "坡口长度") + private Double pkcd2; + + @ApiModelProperty(value = "坡口计划完工") + private String jhwgPk2; + + @ApiModelProperty(value = "三垮数控板数") + private Double lm3k; + + @ApiModelProperty(value = "三垮数控完工") + private String wg3klm; + + @ApiModelProperty(value = "坡口长度") + private Double pkcd3; + + @ApiModelProperty(value = "坡口计划完工") + private String jhwgPk3; + + @ApiModelProperty(value = "三垮平铁板数") + private Double pt3k; + + @ApiModelProperty(value = "三垮平铁完工") + private String wg3kpt; + + @ApiModelProperty(value = "零件面积") + private Double ljmj; + + @ApiModelProperty(value = "零件数量") + private Double ljsl; + + @ApiModelProperty(value = "曲平铁转结束") + private String qptzjs; + + @ApiModelProperty(value = "曲平铁结束") + private String qptjs; + + @ApiModelProperty(value = "曲外板结束") + private String qwbjs; + + @ApiModelProperty(value = "组立") + private String zl; + + @ApiModelProperty(value = "数控 板数") + private Double skbs3; + + @ApiModelProperty(value = "数控切割开始") + private String skks3; + + @ApiModelProperty(value = "坡口长度") + private Double pkcd4; + + @ApiModelProperty(value = "坡口切割结束") + private String pkjs4; + + @ApiModelProperty(value = "面板挤边") + private String mbjb; + + @ApiModelProperty(value = "七垮型材米数") + private Double xcms; + + @ApiModelProperty(value = "型材面板") + private String xcmb; + + @ApiModelProperty(value = "分段需求") + private String fdxq; + + @ApiModelProperty(value = "光电 结束") + private String gdjs; + + @ApiModelProperty(value = "备注") + private String bz; + + @ApiModelProperty(value = "状态") + private String zt; + + private String parentId; + + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmTzjh.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmTzjh.java new file mode 100644 index 0000000..0a3eb43 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmTzjh.java @@ -0,0 +1,71 @@ +package com.dsic.gj_erp.bean.jhgk; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="DmTzjh对象", description="") +//@Entity +@TableName("dm_tzjh") +public class DmTzjh implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "批量") + @TableField("DC_PL") + private String dcPl; + + @ApiModelProperty(value = "图名") + @TableField("DC_FD") + private String dcFd; + + @ApiModelProperty(value = "船名") + @TableField("DC_CH") + private String dcCh; + + @ApiModelProperty(value = "套料图下发") + private String xfqTlt; + + @ApiModelProperty(value = "套料图接收") + private String jsqTlt; + + @ApiModelProperty(value = "板材领取表下发") + private String xfqLqb; + + @ApiModelProperty(value = "板材领取表接收") + private String jsqLqb; + + @ApiModelProperty(value = "零件配套表下发") + private String xfqPtb; + + @ApiModelProperty(value = "零件配套表接收") + private String jsqPtb; + + @ApiModelProperty(value = "状态;0未审核1已审核;默认为0;") + private String zt; + +// @Id + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmXbjh.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmXbjh.java new file mode 100644 index 0000000..8eb06e8 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmXbjh.java @@ -0,0 +1,95 @@ +package com.dsic.gj_erp.bean.jhgk; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="DmXbjh对象", description="") +@Entity +@TableName("dm_xbjh") +public class DmXbjh implements Serializable { + + private static final long serialVersionUID=1L; + + @ExcelProperty("学生编号") + @ApiModelProperty(value = "状态; 0未提交1已提交;默认为0;") + private String zt; + + @ExcelProperty("学生编号") + @ApiModelProperty(value = "2023年01月的 产量,后面字段以此类推") + private Double cl202301; + + @ExcelProperty("学生编号") + private Double cl202405; + + private Double cl202411; + + private Double cl202303; + + private Double cl202408; + + private Double cl202402; + + private Double cl202306; + + private Double cl202407; + + private Double cl202501; + + @Id + @TableId(value = "dc_ch", type = IdType.ASSIGN_UUID) + private String dcCh; + + private Double cl202311; + + private Double cl202305; + + private Double cl202410; + + private Double cl202308; + + private Double cl202302; + + private Double cl202307; + + private Double cl202401; + + private Double cl202404; + + private Double cl202412; + + private Double cl202310; + + private Double cl202304; + + private Double cl202409; + + private Double cl202403; + + private Double cl202309; + + private Double cl202406; + + private Double cl202312; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmZrcjh.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmZrcjh.java new file mode 100644 index 0000000..81ec2c5 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmZrcjh.java @@ -0,0 +1,152 @@ +package com.dsic.gj_erp.bean.jhgk; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="DmZrcjh对象", description="") +public class DmZrcjh implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "船号") + @TableField("DC_CH") + private String dcCh; + + @ApiModelProperty(value = "区域") + private String qy; + + @ApiModelProperty(value = "总段号") + private String zdh; + + @ApiModelProperty(value = "预组段") + private String yzd; + + @ApiModelProperty(value = "分段号") + @TableField("DC_FD") + private String dcFd; + + @ApiModelProperty(value = "重量") + @TableField("ZL") + private Double zl; + + @ApiModelProperty(value = "批量号") + @TableField("DC_PL") + private String dcPl; + + @ApiModelProperty(value = "大组开始") + private String kssjDz; + + @ApiModelProperty(value = "钢加大组结束") + private String gjjsDz; + + @ApiModelProperty(value = "小组结束") + private String jssjXz; + + @ApiModelProperty(value = "小组周期") + private String xzzq; + + @ApiModelProperty(value = "小组开始") + private String kssjXz; + + @ApiModelProperty(value = "线表重量") + private Double xbzl; + + @ExcelIgnore + @ApiModelProperty(value = "批量表(钢加大组结束)") + private String gjjsDzPl; + + @ExcelIgnore + @ApiModelProperty(value = "时间差(L-P)") + private String sjcLp; + + @ExcelIgnore + @ApiModelProperty(value = "钢加小组结束") + private String gjjsXz; + + @ExcelIgnore + @ApiModelProperty(value = "批量表(钢加小组结束)") + private String gjjsXzPl; + + @ApiModelProperty(value = "时间差(R-S)") + private String sjcRs; + + @ExcelIgnore + @ApiModelProperty(value = "钢加开始") + private String gjks; + + @ExcelIgnore + @ApiModelProperty(value = "批量表(钢加开始)") + private String gjksPl; + + @ExcelIgnore + @ApiModelProperty(value = "时间差(U-V)") + private String sjcUv; + + @ExcelIgnore + @ApiModelProperty(value = "套料图下发") + private String xfqTlt; + + @ExcelIgnore + @ApiModelProperty(value = "套料图接收") + private String jsqTlt; + + @ExcelIgnore + @ApiModelProperty(value = "板材领取表下发") + private String xfqLqb; + + @ExcelIgnore + @ApiModelProperty(value = "板材领取表接收") + private String jsqLqb; + + @ExcelIgnore + @ApiModelProperty(value = "零件配套表下发") + private String xfqPtb; + + @ExcelIgnore + @ApiModelProperty(value = "零件配套表接收") + private String jsqPtb; + + @ExcelIgnore + @ApiModelProperty(value = "订货清单号") + private String dhqd; + + @ExcelIgnore + @ApiModelProperty(value = "订货清单下发") + private String xfqDhqd; + + @ExcelIgnore + @ApiModelProperty(value = "实际订货日期") + private String sjdhq; + + @ExcelIgnore + @ApiModelProperty(value = "板材计划到齐") + private String bcdq; + + @ApiModelProperty(value = "状态; 0编辑1提交2审核;默认为0;") +// @ExcelField(value = "状态") + private String zt; + + @TableId(value = "xh", type = IdType.ASSIGN_UUID) +// @ExcelField(value = "序号") + private String xh; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/request/EmSbjbbBean.java b/src/main/java/com/dsic/gj_erp/bean/request/EmSbjbbBean.java new file mode 100644 index 0000000..14bbb69 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/request/EmSbjbbBean.java @@ -0,0 +1,14 @@ +package com.dsic.gj_erp.bean.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class EmSbjbbBean { + @ApiModelProperty(value = "设备编号") + private String sbbh; + @ApiModelProperty(value = "所属部门") + private String szcs; + @ApiModelProperty(value = "供应商") + private String gysbm; +} diff --git a/src/main/java/com/dsic/gj_erp/bean/request/EmSbwxjhBean.java b/src/main/java/com/dsic/gj_erp/bean/request/EmSbwxjhBean.java new file mode 100644 index 0000000..2fbc4d1 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/request/EmSbwxjhBean.java @@ -0,0 +1,14 @@ +package com.dsic.gj_erp.bean.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class EmSbwxjhBean { + @ApiModelProperty(value = "设备编号") + private String sbbh; + @ApiModelProperty(value = "计划开始时间yyyy/MM/dd") + private String beginTime; + @ApiModelProperty(value = "计划结束时间yyyy/MM/dd") + private String endTime; +} diff --git a/src/main/java/com/dsic/gj_erp/bean/request/LoginBean.java b/src/main/java/com/dsic/gj_erp/bean/request/LoginBean.java new file mode 100644 index 0000000..037b030 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/request/LoginBean.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.bean.request; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class LoginBean { + + @NotNull(message = "用户名不能为空") + private String yhdm; + private String pwd; + private String zxtbm; + private String jgdm; + private String ckdm; + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/request/ModifyPasswordBean.java b/src/main/java/com/dsic/gj_erp/bean/request/ModifyPasswordBean.java new file mode 100644 index 0000000..396ec99 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/request/ModifyPasswordBean.java @@ -0,0 +1,14 @@ +package com.dsic.gj_erp.bean.request; + + +import lombok.Data; + +@Data +public class ModifyPasswordBean { + + private String yhdm; + private String oldpwd; + private String newpwd; + +} + diff --git a/src/main/java/com/dsic/gj_erp/bean/sy/DmBhdyp.java b/src/main/java/com/dsic/gj_erp/bean/sy/DmBhdyp.java new file mode 100644 index 0000000..cb2e6ec --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/sy/DmBhdyp.java @@ -0,0 +1,63 @@ +package com.dsic.gj_erp.bean.sy; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-08 + */ +@Data +@TableName("DM_BHDYP") +@Entity +public class DmBhdyp implements Serializable { + + /** + * 单据代码 + */ + @TableField("BMDM") + private String bmdm; + + @TableField("BMSX") + private String bmsx; + + @Id + private String jgm; + + @TableField("YLZD2") + private String ylzd2; + + @TableField("YLZD5") + private Double ylzd5; + + @TableField("YLZD6") + private Double ylzd6; + + @TableField("BMMC") + private String bmmc; + + @TableField("YLZD3") + private String ylzd3; + + @TableField("YLZD4") + private Double ylzd4; + + @TableField("ZXTBM") + private String zxtbm; + + @TableField("YLZD1") + private String ylzd1; + + @TableField("BMQZ") + private String bmqz; + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/sy/DmBhsjp.java b/src/main/java/com/dsic/gj_erp/bean/sy/DmBhsjp.java new file mode 100644 index 0000000..219050f --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/sy/DmBhsjp.java @@ -0,0 +1,58 @@ +package com.dsic.gj_erp.bean.sy; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-08 + */ +@Data +@TableName("DM_BHSJP") +@Entity +public class DmBhsjp implements Serializable { + + @Id + private String bmqz; + + @TableField("ZXTBM") + private String zxtbm; + + @TableField("YLZD2") + private String ylzd2; + + @TableField("YLZD5") + private Double ylzd5; + + @TableField("JGM") + private String jgm; + + @TableField("YLZD6") + private Double ylzd6; + + @TableField("BMSXH") + private String bmsxh; + + @TableField("YLZD3") + private String ylzd3; + + @TableField("YLZD1") + private String ylzd1; + + @TableField("YLZD4") + private Double ylzd4; + + @TableField("BMMC") + private String bmmc; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/sy/DmBhzyb.java b/src/main/java/com/dsic/gj_erp/bean/sy/DmBhzyb.java new file mode 100644 index 0000000..40eeabc --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/sy/DmBhzyb.java @@ -0,0 +1,20 @@ +package com.dsic.gj_erp.bean.sy; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.io.Serializable; + +@Data +@TableName("DM_BHZYB") +@Entity +public class DmBhzyb implements Serializable { + + + @Id + private String bhzyb; + + +} \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/bean/sy/Dm_zhbmlbp.java b/src/main/java/com/dsic/gj_erp/bean/sy/Dm_zhbmlbp.java new file mode 100644 index 0000000..0b1810a --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/sy/Dm_zhbmlbp.java @@ -0,0 +1,30 @@ +package com.dsic.gj_erp.bean.sy; + + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.math.BigDecimal; +@ApiModel("综合编码类别表") +@Entity +@Table(name = "dm_zhbmlbp") +@Data +public class Dm_zhbmlbp { + + @Id + private String BMLB; + private String LBMC; + private String ZXTBM; + private BigDecimal BMCD; + private String YLZD1; + private String YLZD2; + private String YLZD3; + private BigDecimal YLZD4; + private BigDecimal YLZD5; + private BigDecimal YLZD6; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/sy/Dm_zhbmp.java b/src/main/java/com/dsic/gj_erp/bean/sy/Dm_zhbmp.java new file mode 100644 index 0000000..bb95905 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/sy/Dm_zhbmp.java @@ -0,0 +1,71 @@ +package com.dsic.gj_erp.bean.sy; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.Table; +import java.io.Serializable; + +@ApiModel("综合编码表") +@Entity +@Table(name = "dm_zhbmp") +@Data +@IdClass(Dm_zhbmp.PrimaryKey.class) +public class Dm_zhbmp { + + + private String BMLB; + @Id + private String BM; + + private String bmsm; + + @TableField("DZBS") + private String dzbs; + + @TableField("TJGSBS") + private String tjgsbs; + + @TableField("YLZD3") + private String ylzd3; + + @TableField("ZXHCSJ") + private Double zxhcsj; + + @TableField("YLZD2") + private String ylzd2; + + @TableField("SZBZ") + private Double szbz; + + @TableField("YLZD5") + private Double ylzd5; + + + @TableField("YLZD4") + private Double ylzd4; + + @TableField("YLZD1") + private String ylzd1; + + @TableField("ZFBZ") + private String zfbz; + + @TableField("YLZD6") + private Double ylzd6; + + @TableField("YSBL") + private Double ysbl; + + + @Data + public static class PrimaryKey implements Serializable { + + private String BM; + + } +} diff --git a/src/main/java/com/dsic/gj_erp/bean/sy/Syfunp.java b/src/main/java/com/dsic/gj_erp/bean/sy/Syfunp.java new file mode 100644 index 0000000..445666a --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/sy/Syfunp.java @@ -0,0 +1,43 @@ +package com.dsic.gj_erp.bean.sy; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.Table; +import java.io.Serializable; +import java.math.BigDecimal; +@ApiModel("菜单功能表") +@Entity +@Table(name = "syfunp") +@Data +@IdClass(Syfunp.PrimaryKey.class) +public class Syfunp { + + private String CKDM; + @Id + private String MS; + private String GNLX; + @Id + private String ZXTBM; + private String CKCS; + @Id + private String GNLB; + private String YLZD1; + private String YLZD2; + private String YLZD3; + private BigDecimal YLZD4; + private BigDecimal YLZD5; + private BigDecimal YLZD6; + + @Data + public static class PrimaryKey implements Serializable { + + private String MS; + private String ZXTBM; + private String GNLB; + + } +} diff --git a/src/main/java/com/dsic/gj_erp/bean/sy/Syifrp.java b/src/main/java/com/dsic/gj_erp/bean/sy/Syifrp.java new file mode 100644 index 0000000..0b32f56 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/sy/Syifrp.java @@ -0,0 +1,48 @@ +package com.dsic.gj_erp.bean.sy; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.Table; +import java.io.Serializable; +@ApiModel("工作组功能菜单中间表") +@Entity +@Table(name = "syifrp") +@Data +@IdClass(Syifrp.PrimaryKey.class) +public class Syifrp { + + @Id + @JsonProperty + private String GWDM; + @Id + @JsonProperty + private String MS; + @Id + @JsonProperty + private String ZXTBM; + @Id + @JsonProperty + private String GNLB; + @JsonProperty + private String CKDM; + private String YLZD1; + private String YLZD2; + private String YLZD3; + private String YLZD4; + private String YLZD5; + + @Data + public static class PrimaryKey implements Serializable { + private String GWDM; + private String MS; + private String ZXTBM; + private String GNLB; + } + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/sy/Syigrp.java b/src/main/java/com/dsic/gj_erp/bean/sy/Syigrp.java new file mode 100644 index 0000000..88249df --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/sy/Syigrp.java @@ -0,0 +1,46 @@ +package com.dsic.gj_erp.bean.sy; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.Table; +import java.io.Serializable; +import java.math.BigDecimal; +@ApiModel("工作组权限分组中间表") +@Entity +@Table(name = "syigrp") +@Data +@IdClass(Syigrp.PrimaryKey.class) +public class Syigrp { + + @Id + @JsonProperty + private String GWDM; + @Id + @JsonProperty + private String FZDM; + @Id + @JsonProperty + private String ZXTDM; + private String YLZD1; + private String YLZD2; + private String YLZD3; + private BigDecimal YLZD4; + private BigDecimal YLZD5; + private BigDecimal YLZD6; + + + + @Data + public static class PrimaryKey implements Serializable { + + private String GWDM; + private String FZDM; + private String ZXTDM; + + } +} diff --git a/src/main/java/com/dsic/gj_erp/bean/sy/Syimrp.java b/src/main/java/com/dsic/gj_erp/bean/sy/Syimrp.java new file mode 100644 index 0000000..fa79408 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/sy/Syimrp.java @@ -0,0 +1,38 @@ +package com.dsic.gj_erp.bean.sy; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.Table; +import java.io.Serializable; +import java.math.BigDecimal; +@ApiModel("工作组子系统中间表") +@Entity +@Table(name = "syimrp") +@Data +@IdClass(Syimrp.PrimaryKey.class) +public class Syimrp { + + @Id + @JsonProperty + private String GWDM; + @Id + @JsonProperty + private String ZXTBM; + private String YLZD1; + private String YLZD2; + private String YLZD3; + private BigDecimal YLZD4; + private BigDecimal YLZD5; + private BigDecimal YLZD6; + + @Data + public static class PrimaryKey implements Serializable { + private String GWDM; + private String ZXTBM; + } +} diff --git a/src/main/java/com/dsic/gj_erp/bean/sy/Sysysp.java b/src/main/java/com/dsic/gj_erp/bean/sy/Sysysp.java new file mode 100644 index 0000000..4af57fe --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/sy/Sysysp.java @@ -0,0 +1,25 @@ +package com.dsic.gj_erp.bean.sy; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +@ApiModel("子系统表") +@Entity +@Table(name = "sysysp") +@Data +public class Sysysp { + + @Id + private String ZXTDM; + private String ZXTMS; + private String YLZD1; + private String YLZD2; + private String YLZD3; + private String YLZD4; + private String YLZD5; + private String YLZD6; + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/sy/Syuirp.java b/src/main/java/com/dsic/gj_erp/bean/sy/Syuirp.java new file mode 100644 index 0000000..f2e470f --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/sy/Syuirp.java @@ -0,0 +1,47 @@ +package com.dsic.gj_erp.bean.sy; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.Table; +import java.io.Serializable; +import java.math.BigDecimal; + +@ApiModel("工作组用户中间表") +@Entity +@Table(name = "syuirp") +@Data +@IdClass(Syuirp.PrimaryKey.class) +public class Syuirp { + + @Id + @JsonProperty(value="GWDM") + private String GWDM; + @Id + @JsonProperty(value="YHDM") + private String YHDM; + @JsonProperty(value="MS") + private String MS; + private String YLZD1; + private String YLZD2; + private String YLZD3; + private BigDecimal YLZD4; + private BigDecimal YLZD5; + private BigDecimal YLZD6; + + + + @Data + public static class PrimaryKey implements Serializable { + + private String GWDM; + private String YHDM; + + + } + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/sy/Syuserp.java b/src/main/java/com/dsic/gj_erp/bean/sy/Syuserp.java new file mode 100644 index 0000000..aa6424a --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/sy/Syuserp.java @@ -0,0 +1,38 @@ +package com.dsic.gj_erp.bean.sy; + +import com.dsic.gj_erp.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.math.BigDecimal; + +@ApiModel("用户表") +@Entity +@Table(name = "SYUSERP") +@Data +public class Syuserp { + @ApiModelProperty(value="用户代码") + @Id + private String YHDM; + @ApiModelProperty(value="用户名") + private String YHMS; + @ApiModelProperty(value="密码") + private String PWD; + @ApiModelProperty(value="部门编码") + @Dict(dictCode = "bmbm") + private String BMBM; + @ApiModelProperty(value="审批权限") + private String YLZD1; + @ApiModelProperty(value="职号") + private String YLZD2; + private String YLZD3; + private BigDecimal YLZD4; + private BigDecimal YLZD5; + private BigDecimal YLZD6; + private String SJBS; + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/sy/Syworkgp.java b/src/main/java/com/dsic/gj_erp/bean/sy/Syworkgp.java new file mode 100644 index 0000000..179a348 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/sy/Syworkgp.java @@ -0,0 +1,61 @@ +package com.dsic.gj_erp.bean.sy; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.math.BigDecimal; +@ApiModel("工作组表") +@Entity +@Table(name = "syworkgp") +@Data +public class Syworkgp { + + + @Id + private String JKDBM; + private String JKDMC; + private String YLZD1; + private String YLZD2; + private String YLZD3; + private BigDecimal YLZD4; + private BigDecimal YLZD5; + private BigDecimal YLZD6; + + @JsonProperty(value="gwbm") + public String getJKDBM() { + return JKDBM; + } + + @JsonProperty(value="gwbm") + public void setJKDBM(String JKDBM) { + this.JKDBM = JKDBM; + } + + + @JsonProperty(value="gwmc") + public String getJKDMC() { + return JKDMC; + } + @JsonProperty(value="gwmc") + public void setJKDMC(String JKDMC) { + this.JKDMC = JKDMC; + } + +// @ManyToMany(cascade = CascadeType.REMOVE,fetch = FetchType.LAZY) +// @JoinTable(name = "syimrp",joinColumns = @JoinColumn(name="GWDM",referencedColumnName = "JKDBM"),inverseJoinColumns = @JoinColumn(name = "ZXTBM",referencedColumnName = "ZXTDM")) +// private List sysysp; +// +// @ManyToMany(cascade = CascadeType.REMOVE,fetch = FetchType.LAZY) +// @JoinTable(name = "syifrp",joinColumns = @JoinColumn(name="GWDM",referencedColumnName = "JKDBM"),inverseJoinColumns ={ @JoinColumn(name = "ZXTBM",referencedColumnName = "ZXTBM"),@JoinColumn(name = "MS",referencedColumnName = "MS"),@JoinColumn(name = "GNLB",referencedColumnName = "GNLB")}) +// private List syfunp; + +// @ManyToMany(cascade = CascadeType.REMOVE,fetch = FetchType.LAZY) +// @JoinTable(name = "Syi",joinColumns = @JoinColumn(name="GWDM",referencedColumnName = "JKDBM"),inverseJoinColumns = @JoinColumn(name = "MS",referencedColumnName = "MS")) +// private List zhbmp; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/sy/User.java b/src/main/java/com/dsic/gj_erp/bean/sy/User.java new file mode 100644 index 0000000..adc317e --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/sy/User.java @@ -0,0 +1,9 @@ +package com.dsic.gj_erp.bean.sy; + +import lombok.Data; + +@Data +public class User { + private String yhdm; + private String yhms; +} diff --git a/src/main/java/com/dsic/gj_erp/controller/ApiController.java b/src/main/java/com/dsic/gj_erp/controller/ApiController.java new file mode 100644 index 0000000..44d2e62 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/ApiController.java @@ -0,0 +1,61 @@ +package com.dsic.gj_erp.controller; + +import com.dsic.gj_erp.annotation.AuthFunction; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.request.LoginBean; +import com.dsic.gj_erp.bean.sy.User; +import com.dsic.gj_erp.exception.CustomException; +import com.dsic.gj_erp.mapper.SyuserMapper; +import com.dsic.gj_erp.service.ApiService; +import com.dsic.gj_erp.service.sy.SYService; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.Map; + +@Api(tags = "系统级API") +@RestController +@Validated +@RequestMapping(value = "/api",method= RequestMethod.POST) +public class ApiController { + + @Autowired + ApiService apiService; + @Autowired + private SyuserMapper syuserMapper; + @Autowired + SYService syService; + @RequestMapping(value = "/login") + public ResultBean login(@RequestBody @Validated LoginBean loginBean) throws CustomException { +// List list=new ArrayList<>(); +// for (int i = 0; i < 10; i++) { +// String a= syService.f_getpjh("DM","DM","CZPL"); +// System.out.println(a); +// list.add(a); +// } +// System.out.println(list); +// // + + return new ResultBean(apiService.userLogin(loginBean)); + } + + @AuthFunction + @RequestMapping(value = "/getInfo") + public ResultBean getInfo(HttpServletRequest request) { + String yhdm = (String) request.getAttribute("yhdm"); + String zxtdm = (String) request.getAttribute("zxtdm"); +// + Map map= apiService.getInfo(yhdm); + map.put("menu", syuserMapper.getUserMenu(yhdm, zxtdm)); + return new ResultBean(map); + } + + + +} diff --git a/src/main/java/com/dsic/gj_erp/controller/SYController.java b/src/main/java/com/dsic/gj_erp/controller/SYController.java new file mode 100644 index 0000000..d346f38 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/SYController.java @@ -0,0 +1,271 @@ +package com.dsic.gj_erp.controller; + + +import com.dsic.gj_erp.annotation.AuthFunction; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.sy.*; +import com.dsic.gj_erp.service.sy.SYService; +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.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Api(tags = "系统管理") +@RestController +@RequestMapping(value = "/api/sy", method= RequestMethod.POST) +public class SYController { + + @Autowired + SYService syService; + +// @Autowired +// MpZzdwjbbService mpZzdwjbbService; +// @Autowired +// QcJyxmpMapper qcJyxmpMapper; + + + //@AuthFunction(XTMC = "系统安全",MKMC = "用户管理",GNMC = "工作组维护",XTBM = "SY",CKDM = "w_gzzdy") + + @ApiOperation(value = "获取工作组列表") + @RequestMapping(value = "/getWorkGroupList") + @ApiImplicitParams({ + @ApiImplicitParam(name = "yhdm", value = "用户代码", required = false, paramType = "query", dataType = "String"), + }) + public ResultBean getWorkGroupList(@RequestBody Map paramMap) { + String yhdm = (String) paramMap.get("yhdm"); +// return new ResultBean(syService.getWorkGroupList(yhdm)); + return new ResultBean(); + } + + @ApiOperation(value = "添加工作组") + @RequestMapping(value = "/addWorkGroup") + public ResultBean addWorkGroup(@RequestBody Syworkgp syworkgp) { + return new ResultBean(syService.addWordGroup(syworkgp)); + } + + @ApiOperation(value = "删除工作组") + @RequestMapping(value = "/deleteWorkGroup") + public ResultBean deleteWorkGroup(@RequestBody Syworkgp syworkgp) { + syService.deleteWorkGroup(syworkgp); + return new ResultBean(); + } + + @ApiOperation(value = "更新工作组") + @RequestMapping(value = "/updateWorkGroup") + public ResultBean updateWorkGroup(@RequestBody Syworkgp[] syworkgp) { + syService.updateWorkGroup(syworkgp[0], syworkgp[1]); + return new ResultBean(); + } + + @ApiOperation(value = "获取用户列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gwdm", value = "工作组代码", required = false, paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "sort", value = "排序方式", required = false, paramType = "query", dataType = "Integer" ,defaultValue = "0"), + }) + @AuthFunction(CKDMS = {"w_gzzdy", "w_yhdy"}) + @RequestMapping(value = "/getUserList") + public ResultBean getUserList(@RequestBody Map paramMap) { + String gwdm = (String) paramMap.get("gwdm"); + Integer sort = paramMap.get("sort") == null ? 0 : (Integer) paramMap.get("sort"); + return new ResultBean(syService.getUserList(gwdm, sort)); + } + + @ApiOperation(value = "根据菜单功能获取用户列表") + @RequestMapping(value = "/getUserListByFunc") + public ResultBean getUserListByFunc(@RequestBody Syifrp syifrp) { + return new ResultBean(syService.getUserListByFunc(syifrp)); + } + + @ApiOperation(value = "添加用户信息") + @RequestMapping(value = "/addUser") + public ResultBean addUser(@RequestBody Syuserp syuserp) { + syService.addUser(syuserp); + return new ResultBean(); + } + + @ApiOperation(value = "删除用户信息") + @RequestMapping(value = "/deleteUser") + public ResultBean deleteUser(@RequestBody Syuserp syuserp) { + syService.deleteUser(syuserp); + return new ResultBean(); + } + + @ApiOperation(value = "更新用户信息") + @RequestMapping(value = "/updateUser") + public ResultBean updateUser(@RequestBody Syuserp[] syuserp) { + syService.updateUser(syuserp[0], syuserp[1]); + return new ResultBean(); + } + + @ApiOperation(value = "添加用户到工作组") + @RequestMapping(value = "/addWorkGroupUser") + public ResultBean addWorkGroupUser(@RequestBody List syuirp) { + syService.addWorkGroupUser(syuirp); + return new ResultBean(); + } + + @ApiOperation(value = "从工作组删除用户") + @RequestMapping(value = "/deleteWorkGroupUser") + public ResultBean deleteWorkGroupUser(@RequestBody List syuirp) { + syService.deleteWorkGroupUser(syuirp); + return new ResultBean(); + } + + @ApiOperation(value = "获取权限分组列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gwdm", value = "工作组代码", required = false, paramType = "query", dataType = "String",defaultValue = ""), + }) + @RequestMapping(value = "/getFzList") + public ResultBean getFzqxList(@RequestBody Map paramMap) { + String gwdm = (String) paramMap.get("gwdm"); + return new ResultBean(syService.getFzqxList(gwdm)); + } + + @ApiOperation(value = "添加权限分组到工作组") + @RequestMapping(value = "/addWorkGroupFz") + public ResultBean addWorkGroupFz(@RequestBody List syigrp) { + syService.addWorkGroupFz(syigrp); + return new ResultBean(); + } + + @ApiOperation(value = "从工作组删除分组权限") + @RequestMapping(value = "/deleteWorkGroupFz") + public ResultBean deleteWorkGroupFz(@RequestBody List syigrp) { + syService.deleteWorkGroupFz(syigrp); + return new ResultBean(); + } + + @ApiOperation(value = "获取子系统权限") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gwdm", value = "工作组代码", required = false, paramType = "query", dataType = "String",defaultValue = ""), + }) + @RequestMapping(value = "/getZxtList") + public ResultBean getZxtList(@RequestBody Map paramMap) { + String gwdm = (String) paramMap.get("gwdm"); + return new ResultBean(syService.getZxtList(gwdm)); + } + + @ApiOperation(value = "添加子系统权限到工作组") + @RequestMapping(value = "/addWorkGroupZxt") + public ResultBean addWorkGroupZxt(@RequestBody List syismrp) { + syService.addWorkGroupZxt(syismrp); + return new ResultBean(); + } + + @ApiOperation(value = "从工作组删除子系统权限") + @RequestMapping(value = "/deleteWorkGroupZxt") + public ResultBean deleteWorkGroupZxt(@RequestBody List syimrp) { + syService.deleteWorkGroupZxt(syimrp); + return new ResultBean(); + } + + @ApiOperation(value = "获取用户综合编码") + @RequestMapping(value = "/getUserZHBM") + public ResultBean getUserZHBM() { + return new ResultBean(syService.getUserZHBM()); + } + + + @ApiOperation(value = "获取菜单功能") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gwdm", value = "工作组代码", required = false, paramType = "query", dataType = "String",defaultValue = ""), + }) + @RequestMapping(value = "/getFuncList") + public ResultBean getFuncList(@RequestBody Map paramMap) { + Integer type = (Integer) paramMap.get("type"); + String gwdm = (String) paramMap.get("gwdm"); + return new ResultBean(syService.getFuncList(type, gwdm)); + } + + @ApiOperation(value = "添加功能菜单") + @RequestMapping(value = "/addFunc") + public ResultBean addFunc(@RequestBody Syfunp syfunp) { + syService.addFunc(syfunp); + return new ResultBean(); + } + + @ApiOperation(value = "删除功能菜单") + @RequestMapping(value = "/deleteFunc") + public ResultBean deleteFunc(@RequestBody Syfunp syfunp) { + syService.deleteFunc(syfunp); + return new ResultBean(); + } + + @ApiOperation(value = "更新功能菜单") + @RequestMapping(value = "/updateFunc") + public ResultBean updateFunc(@RequestBody Syfunp[] syfunp) { + syService.updateFunc(syfunp[0], syfunp[1]); + return new ResultBean(); + } + + @ApiOperation(value = "添加功能菜单到工作组") + @RequestMapping(value = "/addWorkGroupFunc") + public ResultBean addWorkGroupFunc(@RequestBody List syifrp) { + syService.addWorkGroupFunc(syifrp); + return new ResultBean(); + } + + @ApiOperation(value = "从工作组删除功能菜单") + @RequestMapping(value = "/deleteWorkGroupFunc") + public ResultBean deleteWorkGroupFunc(@RequestBody List syifrp) { + syService.deleteWorkGroupFunc(syifrp); + return new ResultBean(); + } + + @ApiOperation(value = "获取综合编码类别列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "sort", value = "排序", required = false, paramType = "query", dataType = "Integer",defaultValue = "0"), + }) + @RequestMapping(value = "/getZhbmlbList") + public ResultBean getZhbmlbList(@RequestBody Map paramMap) { + Integer sort = paramMap.get("sort") == null ? 0 : (Integer) paramMap.get("sort"); + return new ResultBean(syService.getZhbmlbList(sort)); + } + + @ApiOperation(value = "获取综合编码列表") + @RequestMapping(value = "/getZhbmList") + public ResultBean getZhbmList(@RequestBody Dm_zhbmlbp zhbmlbp) { + return new ResultBean(syService.getZhbmList(zhbmlbp)); + } + + @ApiOperation(value = "添加综合编码") + @RequestMapping(value = "/addZhbm") + public ResultBean addZhbm(@RequestBody Dm_zhbmp zhbmp) { + syService.addZhbm(zhbmp); + return new ResultBean(); + } + + @ApiOperation(value = "删除综合编码") + @RequestMapping(value = "/deleteZhbm") + public ResultBean deleteZhbm(@RequestBody Dm_zhbmp zhbmp) { + syService.deleteZhbm(zhbmp); + return new ResultBean(); + } + + @ApiOperation(value = "更新综合编码") + @RequestMapping(value = "/updateZhbm") + public ResultBean updateZhbm(@RequestBody Dm_zhbmp[] zhbmp) { + syService.updateZhbm(zhbmp[0], zhbmp[1]); + return new ResultBean(); + } + + + @ApiOperation(value = "获取综合编码列表") + @RequestMapping(value = "/getZhbmAll") + public ResultBean getZhbmAll() { + List zhbmList = syService.getALL(); + Map> map=zhbmList.stream() + .collect(Collectors.groupingBy(Dm_zhbmp::getBMLB)); + return new ResultBean(map); + } + +} diff --git a/src/main/java/com/dsic/gj_erp/controller/jcsj/DmCbxxpController.java b/src/main/java/com/dsic/gj_erp/controller/jcsj/DmCbxxpController.java new file mode 100644 index 0000000..978a640 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jcsj/DmCbxxpController.java @@ -0,0 +1,76 @@ +package com.dsic.gj_erp.controller.jcsj; + + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.dsic.gj_erp.annotation.AuthFunction; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jcsj.DmCbxxp; +import com.dsic.gj_erp.service.jcsj.DmCbxxpService; +import io.swagger.annotations.Api; +import io.swagger.annotations.Authorization; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-11 + */ +@RestController +@RequestMapping("/dmCbxxp") +public class DmCbxxpController { + + @Autowired + DmCbxxpService dmCbxxpService; + + @PostMapping("/getList") + @AuthFunction + public ResultBean getList(@RequestBody Map map){ + List list = dmCbxxpService.getList(map); + return new ResultBean(list); + } + + + @PostMapping("del") + @AuthFunction + + public ResultBean del(@RequestBody ListdmCbxxps){ + dmCbxxpService.del(dmCbxxps); + return new ResultBean(); + } + + + @PostMapping("edit") + @AuthFunction + + public ResultBean edit(@RequestBody ListdmCbxxps){ + dmCbxxpService.edit(dmCbxxps); + return new ResultBean(); + } + + + @PostMapping("add") + @AuthFunction + + public ResultBean add (@RequestBody ListdmCbxxps,HttpServletRequest request){ + dmCbxxpService.add(dmCbxxps,request); + return new ResultBean(); + } + + +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jcsj/DmCzplpController.java b/src/main/java/com/dsic/gj_erp/controller/jcsj/DmCzplpController.java new file mode 100644 index 0000000..7c3b09e --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jcsj/DmCzplpController.java @@ -0,0 +1,21 @@ +package com.dsic.gj_erp.controller.jcsj; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-11 + */ +@RestController +@RequestMapping("/dmCzplp") +public class DmCzplpController { + +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jcsj/DmCzplpNewController.java b/src/main/java/com/dsic/gj_erp/controller/jcsj/DmCzplpNewController.java new file mode 100644 index 0000000..9333dfe --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jcsj/DmCzplpNewController.java @@ -0,0 +1,77 @@ +package com.dsic.gj_erp.controller.jcsj; + + +import com.alibaba.excel.EasyExcel; +import com.dsic.gj_erp.annotation.AuthFunction; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jcsj.DmCzplpNew; +import com.dsic.gj_erp.bean.jcsj.excel.PlExcel; +import com.dsic.gj_erp.exception.CustomException; +import com.dsic.gj_erp.listeners.ExcelPlListener; +import com.dsic.gj_erp.service.jcsj.DmCzplpNewService; +import com.dsic.gj_erp.service.jcsj.DmCzplpService; +import io.swagger.annotations.Authorization; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-11 + */ +@RestController +@RequestMapping("/dmCzplpNew") +public class DmCzplpNewController { + + @Autowired + DmCzplpNewService dmCzplpNewService; + + + @PostMapping("/uploadPl") + @AuthFunction + @ResponseBody + public ResultBean uploadPl(@RequestParam("file") MultipartFile file , String czbh, String isupload, HttpServletRequest req) throws Exception, CustomException { + + ExcelPlListener objectListener = new ExcelPlListener(); + EasyExcel.read(file.getInputStream(), PlExcel.class, objectListener).sheet(0).headRowNumber(1).doRead(); + List objList = objectListener.getObjectList(); + Map map = dmCzplpNewService.uploadPl(objList, czbh, isupload,req); + return new ResultBean(map); + } + + + @PostMapping("/getCzplBase") + @AuthFunction + @ResponseBody + public ResultBean getCzplBase(HttpServletRequest req,@RequestBody Map map) throws Exception, CustomException { + + return new ResultBean(dmCzplpNewService.getCzplBase(map)); + + } + + @PostMapping("/czPlupdate") + @AuthFunction + @ResponseBody + public ResultBean czPlupdate(HttpServletRequest req, @RequestBody List dmCzplpNews) throws Exception, CustomException { + dmCzplpNewService.czPlupdate(dmCzplpNews); + return new ResultBean(); + + } + @PostMapping("/getCzplList") + @ResponseBody + public ResultBean getCzplList(HttpServletRequest req, @RequestBody Map map) throws Exception, CustomException { + dmCzplpNewService.getCzplList(map); + return new ResultBean(dmCzplpNewService.getCzplList(map)); + + } + +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jcsj/EmGcrlController.java b/src/main/java/com/dsic/gj_erp/controller/jcsj/EmGcrlController.java new file mode 100644 index 0000000..2057caa --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jcsj/EmGcrlController.java @@ -0,0 +1,59 @@ +package com.dsic.gj_erp.controller.jcsj; + + +import com.alibaba.fastjson.JSONObject; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jcsj.EmGcrl; +import com.dsic.gj_erp.bean.jcsj.EmSbcnp; +import com.dsic.gj_erp.service.jcsj.EmGcrlService; +import com.dsic.gj_erp.service.jcsj.EmSbcnpService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@RestController +@RequestMapping("/emGcrl") +@Api(tags = "工厂日历") +public class EmGcrlController { + @Autowired + EmGcrlService emGcrlService; + + @ApiOperation(value = "查询") + @PostMapping(value = "/getList") + public ResultBean getList(@RequestBody JSONObject json) { + List emGcrls= emGcrlService.getList(json); + return new ResultBean(emGcrls); + } + + + @ApiOperation(value = "批量修改") + @PostMapping(value = "/update") + public ResultBean update(@RequestBody List emGcrls) { + emGcrlService.update(emGcrls); + + return new ResultBean(); + } + + @ApiOperation(value = "生成工厂日历") + @PostMapping(value = "/generate") + public ResultBean generate() { + emGcrlService.generate(); + + return new ResultBean(); + } +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbcnpController.java b/src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbcnpController.java new file mode 100644 index 0000000..6122888 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbcnpController.java @@ -0,0 +1,68 @@ +package com.dsic.gj_erp.controller.jcsj; + + +import com.alibaba.fastjson.JSONObject; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jcsj.EmSbcnp; +import com.dsic.gj_erp.bean.jcsj.EmSbwxjh; +import com.dsic.gj_erp.bean.request.EmSbwxjhBean; +import com.dsic.gj_erp.service.jcsj.EmSbcnpService; +import com.dsic.gj_erp.service.jcsj.EmSbwxjhService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@RestController +@RequestMapping("/emSbcnp") +@Api(tags = "设备产能") +public class EmSbcnpController { + @Autowired + EmSbcnpService emSbcnpService; + + @ApiOperation(value = "查询") + @PostMapping(value = "/getList") + public ResultBean getList(@RequestBody JSONObject json) { + List emSbcnps= emSbcnpService.getList(json); + return new ResultBean(emSbcnps); + } + + @ApiOperation(value = "批量新增") + @PostMapping(value = "/save") + public ResultBean save(@RequestBody List emSbcnps) { + emSbcnpService.save(emSbcnps); + + return new ResultBean(); + } + + @ApiOperation(value = "批量修改") + @PostMapping(value = "/update") + public ResultBean update(@RequestBody List sbjbbs) { + emSbcnpService.update(sbjbbs); + + return new ResultBean(); + } + + @ApiOperation(value = "批量删除") + @PostMapping(value = "/delete") + public ResultBean delete(@RequestBody List sbjbbs) { + emSbcnpService.delete(sbjbbs); + + return new ResultBean(); + } +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbjbbController.java b/src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbjbbController.java new file mode 100644 index 0000000..8cabf06 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbjbbController.java @@ -0,0 +1,85 @@ +package com.dsic.gj_erp.controller.jcsj; + + +import com.dsic.gj_erp.annotation.AuthFunction; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jcsj.EmSbjbb; +import com.dsic.gj_erp.bean.request.EmSbjbbBean; +import com.dsic.gj_erp.service.jcsj.EmSbjbbService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@RestController +@RequestMapping("/emSbjbb") +@Api(tags = "设备信息") +public class EmSbjbbController { + @Autowired + EmSbjbbService emSbjbbService; + + + @ApiOperation(value = "查询") + @PostMapping(value = "/getList") + public ResultBean getList(@RequestBody EmSbjbbBean emSbjbbBean) { + List emSbjbbs= emSbjbbService.getList(emSbjbbBean); + return new ResultBean(emSbjbbs); + } + + @AuthFunction() + @ApiOperation(value = "批量新增") + @PostMapping(value = "/save") + public ResultBean save(@RequestBody List sbjbbs, HttpServletRequest request) { + emSbjbbService.save(sbjbbs,request); + + return new ResultBean(); + } + + @ApiOperation(value = "批量修改") + @PostMapping(value = "/update") + public ResultBean update(@RequestBody List sbjbbs) { + emSbjbbService.update(sbjbbs); + + return new ResultBean(); + } + + @ApiOperation(value = "批量删除") + @PostMapping(value = "/delete") + public ResultBean save(@RequestBody List sbjbbs) { + emSbjbbService.delete(sbjbbs); + + return new ResultBean(); + } + + @ApiOperation(value = "供应商") + @PostMapping(value = "/getGYS") + public ResultBean getGYS() { + List emSbjbbs= emSbjbbService.getGYS(); + + return new ResultBean(emSbjbbs); + } + + @ApiOperation(value = "设备分类") + @PostMapping(value = "/getSBLX") + public ResultBean getSBLX() { + List emSbjbbs= emSbjbbService.getSBLX(); + + return new ResultBean(emSbjbbs); + } +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbrydypController.java b/src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbrydypController.java new file mode 100644 index 0000000..5d90c43 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbrydypController.java @@ -0,0 +1,76 @@ +package com.dsic.gj_erp.controller.jcsj; + + +import com.alibaba.fastjson.JSONObject; +import com.dsic.gj_erp.annotation.AuthFunction; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jcsj.EmSbrydyp; +import com.dsic.gj_erp.service.jcsj.EmSbrydypService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@RestController +@RequestMapping("/emSbrydyp") +@Api(tags = "设备人员信息") +public class EmSbrydypController { + @Autowired + EmSbrydypService emSbrydypService; + + @ApiOperation(value = "查询") + @PostMapping(value = "/getList") + public ResultBean getList(@RequestBody JSONObject json) { + List emSbjbbs= emSbrydypService.getList(json); + return new ResultBean(emSbjbbs); + } + + @ApiOperation(value = "批量新增") + @AuthFunction() + @PostMapping(value = "/save") + public ResultBean save(@RequestBody List emSbrydyps, HttpServletRequest request) { + emSbrydypService.save(emSbrydyps,request); + + return new ResultBean(); + } + + @ApiOperation(value = "批量修改") + @PostMapping(value = "/update") + public ResultBean update(@RequestBody List emSbrydyps) { + emSbrydypService.update(emSbrydyps); + + return new ResultBean(); + } + + @ApiOperation(value = "批量删除") + @PostMapping(value = "/delete") + public ResultBean delete(@RequestBody List emSbrydyps) { + emSbrydypService.delete(emSbrydyps); + + return new ResultBean(); + } + + @ApiOperation(value = "机构下人员人员信息") + @PostMapping(value = "/getRYList") + public ResultBean delete() { + List mapList= emSbrydypService.getRYList(); + + return new ResultBean(mapList); + } +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbwxjhController.java b/src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbwxjhController.java new file mode 100644 index 0000000..bce33cf --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jcsj/EmSbwxjhController.java @@ -0,0 +1,71 @@ +package com.dsic.gj_erp.controller.jcsj; + + +import com.dsic.gj_erp.annotation.AuthFunction; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jcsj.EmSbjbb; +import com.dsic.gj_erp.bean.jcsj.EmSbwxjh; +import com.dsic.gj_erp.bean.request.EmSbjbbBean; +import com.dsic.gj_erp.bean.request.EmSbwxjhBean; +import com.dsic.gj_erp.service.jcsj.EmSbjbbService; +import com.dsic.gj_erp.service.jcsj.EmSbwxjhService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.aspectj.lang.annotation.Around; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@RestController +@RequestMapping("/emSbwxjh") +@Api(tags = "设备维修计划") +public class EmSbwxjhController { + @Autowired + EmSbwxjhService emSbwxjhService; + + @ApiOperation(value = "查询") + @PostMapping(value = "/getList") + public ResultBean getList(@RequestBody EmSbwxjhBean emSbwxjhBean) { + List emSbjbbs= emSbwxjhService.getList(emSbwxjhBean); + return new ResultBean(emSbjbbs); + } + + @ApiOperation(value = "批量新增") + @AuthFunction() + @PostMapping(value = "/save") + public ResultBean save(@RequestBody List emSbwxjhs, HttpServletRequest request) { + emSbwxjhService.save(emSbwxjhs,request); + + return new ResultBean(); + } + + @ApiOperation(value = "批量修改") + @PostMapping(value = "/update") + public ResultBean update(@RequestBody List emSbwxjhs) { + emSbwxjhService.update(emSbwxjhs); + + return new ResultBean(); + } + + @ApiOperation(value = "批量删除") + @PostMapping(value = "/delete") + public ResultBean delete(@RequestBody List emSbwxjhs) { + emSbwxjhService.delete(emSbwxjhs); + + return new ResultBean(); + } +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmDhqdpController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmDhqdpController.java new file mode 100644 index 0000000..5ffa55d --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmDhqdpController.java @@ -0,0 +1,69 @@ +package com.dsic.gj_erp.controller.jhgk; + + +import com.alibaba.fastjson.JSONObject; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jhgk.DmDhqdp; +import com.dsic.gj_erp.bean.jhgk.DmZrcjh; +import com.dsic.gj_erp.service.jhgk.DmDhqdpService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@RestController +@RequestMapping("/dmDhqdp") +@Api(tags = "订货清单计划") +public class DmDhqdpController { + @Autowired + DmDhqdpService dmDhqdpService; + + @ApiOperation(value = "查询") + @PostMapping(value = "/getList") + public ResultBean getList(@RequestBody JSONObject json) { + List dmZrcjhs= dmDhqdpService.getList(json); + return new ResultBean(dmZrcjhs); + } + + @ApiOperation(value = "导入excel") + @PostMapping(value = "/upload") + public ResultBean upload(@RequestParam(value = "file") MultipartFile file) throws IOException { + List dmZrcjhs= dmDhqdpService.upload(file); + return new ResultBean(dmZrcjhs); + } + + @ApiOperation(value = "批量保存") + @PostMapping(value = "/save") + public ResultBean save(@RequestBody List dmDhqdps) { + dmDhqdpService.save(dmDhqdps); + return new ResultBean(); + } + + @ApiOperation(value = "批量提交") + @PostMapping(value = "/tj") + public ResultBean tj(@RequestBody List dmZrcjhs) { + dmDhqdpService.tj(dmZrcjhs); + return new ResultBean(); + } + + @ApiOperation(value = "批量审核") + @PostMapping(value = "/sh") + public ResultBean sh(@RequestBody List dmZrcjhs) { + dmDhqdpService.sh(dmZrcjhs); + return new ResultBean(); + } + +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmJgxywrybController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmJgxywrybController.java new file mode 100644 index 0000000..57f1a8a --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmJgxywrybController.java @@ -0,0 +1,20 @@ +package com.dsic.gj_erp.controller.jhgk; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@RestController +@RequestMapping("/dmJgxywryb") +public class DmJgxywrybController { + +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmJtsyjhController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmJtsyjhController.java new file mode 100644 index 0000000..ee51a08 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmJtsyjhController.java @@ -0,0 +1,61 @@ +package com.dsic.gj_erp.controller.jhgk; + + +import com.alibaba.fastjson.JSONObject; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jhgk.DmJtsyjh; +import com.dsic.gj_erp.bean.jhgk.DmXbjh; +import com.dsic.gj_erp.service.jhgk.DmJtsyjhService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@RestController +@RequestMapping("/dmJtsyjh") +@Api(tags = "集团三月滚动计划") +public class DmJtsyjhController { + @Autowired + DmJtsyjhService dmJtsyjhService; + + @ApiOperation(value = "查询") + @PostMapping(value = "/getList") + public ResultBean getList(@RequestBody JSONObject json) { + List dmXbjhs= dmJtsyjhService.getList(json); + return new ResultBean(dmXbjhs); + } + + @ApiOperation(value = "导入excel") + @PostMapping(value = "/upload") + public ResultBean upload(@RequestParam(value = "file") MultipartFile file) throws IOException { + List dmXbjhs= dmJtsyjhService.upload(file); + return new ResultBean(dmXbjhs); + } + + @ApiOperation(value = "批量保存") + @PostMapping(value = "/save") + public ResultBean save(@RequestBody List dmJtsyjhs) { + dmJtsyjhService.save(dmJtsyjhs); + return new ResultBean(); + } + + @ApiOperation(value = "批量提交") + @PostMapping(value = "/tj") + public ResultBean tj(@RequestBody List dmJtsyjhs) { + dmJtsyjhService.tj(dmJtsyjhs); + return new ResultBean(); + } +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdController.java new file mode 100644 index 0000000..4264161 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdController.java @@ -0,0 +1,20 @@ +package com.dsic.gj_erp.controller.jhgk; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@RestController +@RequestMapping("/dmSygd") +public class DmSygdController { + +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java new file mode 100644 index 0000000..0af45c7 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java @@ -0,0 +1,20 @@ +package com.dsic.gj_erp.controller.jhgk; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@RestController +@RequestMapping("/dmSygdMx") +public class DmSygdMxController { + +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmTzjhController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmTzjhController.java new file mode 100644 index 0000000..ba6bf8e --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmTzjhController.java @@ -0,0 +1,54 @@ +package com.dsic.gj_erp.controller.jhgk; + + +import com.alibaba.fastjson.JSONObject; +import com.dsic.gj_erp.annotation.AuthFunction; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jcsj.EmSbwxjh; +import com.dsic.gj_erp.bean.jhgk.DmTzjh; +import com.dsic.gj_erp.bean.request.EmSbwxjhBean; +import com.dsic.gj_erp.service.jcsj.EmSbwxjhService; +import com.dsic.gj_erp.service.jhgk.DmTzjhService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@RestController +@RequestMapping("/dmTzjh") +@Api(tags = "图纸计划") +public class DmTzjhController { + @Autowired + DmTzjhService dmTzjhService; + + @ApiOperation(value = "查询") + @PostMapping(value = "/getList") + public ResultBean getList(@RequestBody JSONObject json) { + List dmTzjhs= dmTzjhService.getList(json); + return new ResultBean(dmTzjhs); + } + + @ApiOperation(value = "批量审核") + @AuthFunction() + @PostMapping(value = "/sh") + public ResultBean sh(@RequestBody List dmTzjhs) { + dmTzjhService.sh(dmTzjhs); + + return new ResultBean(); + } +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmXbjhController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmXbjhController.java new file mode 100644 index 0000000..5864510 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmXbjhController.java @@ -0,0 +1,62 @@ +package com.dsic.gj_erp.controller.jhgk; + + +import com.alibaba.fastjson.JSONObject; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jhgk.DmTzjh; +import com.dsic.gj_erp.bean.jhgk.DmXbjh; +import com.dsic.gj_erp.service.jhgk.DmTzjhService; +import com.dsic.gj_erp.service.jhgk.DmXbjhService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@RestController +@RequestMapping("/dmXbjh") +@Api(tags = "线表计划") +public class DmXbjhController { + @Autowired + DmXbjhService dmXbjhService; + + @ApiOperation(value = "查询") + @PostMapping(value = "/getList") + public ResultBean getList(@RequestBody JSONObject json) { + List dmXbjhs= dmXbjhService.getList(json); + return new ResultBean(dmXbjhs); + } + + @ApiOperation(value = "导入excel") + @PostMapping(value = "/upload") + public ResultBean upload(@RequestParam(value = "file") MultipartFile file) throws IOException { + List dmXbjhs= dmXbjhService.upload(file); + return new ResultBean(dmXbjhs); + } + + @ApiOperation(value = "批量保存") + @PostMapping(value = "/save") + public ResultBean save(@RequestBody List dmXbjhs) { + dmXbjhService.save(dmXbjhs); + return new ResultBean(); + } + + @ApiOperation(value = "批量提交") + @PostMapping(value = "/tj") + public ResultBean tj(@RequestBody List dmXbjhs) { + dmXbjhService.tj(dmXbjhs); + return new ResultBean(); + } +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmZrcjhController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmZrcjhController.java new file mode 100644 index 0000000..014bcb7 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmZrcjhController.java @@ -0,0 +1,70 @@ +package com.dsic.gj_erp.controller.jhgk; + + +import com.alibaba.fastjson.JSONObject; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jhgk.DmTzjh; +import com.dsic.gj_erp.bean.jhgk.DmXbjh; +import com.dsic.gj_erp.bean.jhgk.DmZrcjh; +import com.dsic.gj_erp.service.jhgk.DmTzjhService; +import com.dsic.gj_erp.service.jhgk.DmZrcjhService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@RestController +@RequestMapping("/dmZrcjh") +@Api(tags = "中日程计划") +public class DmZrcjhController { + @Autowired + DmZrcjhService dmZrcjhService; + + @ApiOperation(value = "查询") + @PostMapping(value = "/getList") + public ResultBean getList(@RequestBody JSONObject json) { + List dmZrcjhs= dmZrcjhService.getList(json); + return new ResultBean(dmZrcjhs); + } + + @ApiOperation(value = "导入excel") + @PostMapping(value = "/upload") + public ResultBean upload(@RequestParam(value = "file") MultipartFile file) throws IOException { + List dmZrcjhs= dmZrcjhService.upload(file); + return new ResultBean(dmZrcjhs); + } + + @ApiOperation(value = "批量保存") + @PostMapping(value = "/save") + public ResultBean save(@RequestBody List dmZrcjhs) { + dmZrcjhService.save(dmZrcjhs); + return new ResultBean(); + } + + @ApiOperation(value = "批量提交") + @PostMapping(value = "/tj") + public ResultBean tjOrTh(@RequestBody List dmZrcjhs) { + dmZrcjhService.tj(dmZrcjhs); + return new ResultBean(); + } + + @ApiOperation(value = "批量审核") + @PostMapping(value = "/sh") + public ResultBean sh(@RequestBody List dmZrcjhs) { + dmZrcjhService.sh(dmZrcjhs); + return new ResultBean(); + } +} + diff --git a/src/main/java/com/dsic/gj_erp/dao/jcsj/EmGcrlRepository.java b/src/main/java/com/dsic/gj_erp/dao/jcsj/EmGcrlRepository.java new file mode 100644 index 0000000..95a9059 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/jcsj/EmGcrlRepository.java @@ -0,0 +1,13 @@ +package com.dsic.gj_erp.dao.jcsj; + +import com.dsic.gj_erp.bean.jcsj.EmGcrl; +import com.dsic.gj_erp.bean.jcsj.EmSbcnp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface EmGcrlRepository extends JpaRepository { + List findByNf(String nf); +} diff --git a/src/main/java/com/dsic/gj_erp/dao/jcsj/EmSbjbbRepository.java b/src/main/java/com/dsic/gj_erp/dao/jcsj/EmSbjbbRepository.java new file mode 100644 index 0000000..909fd66 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/jcsj/EmSbjbbRepository.java @@ -0,0 +1,19 @@ +package com.dsic.gj_erp.dao.jcsj; + +import com.dsic.gj_erp.bean.jcsj.EmSbjbb; +import com.dsic.gj_erp.bean.sy.Dm_zhbmlbp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +@Repository +public interface EmSbjbbRepository extends JpaRepository { + @Query(nativeQuery = true,value = "select ghsbm,ghsqc from MSGHSJBP WHERE CGFLM=03") + List gys(); + + @Query(nativeQuery = true,value = "SELECT bm,bmsm,bmjb FROM dm_fjbmgl") + List sblx(); +} diff --git a/src/main/java/com/dsic/gj_erp/dao/jcsj/EmSbrydypRepository.java b/src/main/java/com/dsic/gj_erp/dao/jcsj/EmSbrydypRepository.java new file mode 100644 index 0000000..ee76802 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/jcsj/EmSbrydypRepository.java @@ -0,0 +1,16 @@ +package com.dsic.gj_erp.dao.jcsj; + +import com.dsic.gj_erp.bean.jcsj.EmSbcnp; +import com.dsic.gj_erp.bean.jcsj.EmSbrydyp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +@Repository +public interface EmSbrydypRepository extends JpaRepository { + @Query(nativeQuery = true,value = "select jgflm,rymc from DM_JGXYWRYB where (DM_JGXYWRYB.ZXTBM) = 'FP'") + List getRYList(); +} diff --git a/src/main/java/com/dsic/gj_erp/dao/jhgk/DmJtsyjhRepository.java b/src/main/java/com/dsic/gj_erp/dao/jhgk/DmJtsyjhRepository.java new file mode 100644 index 0000000..cb5db63 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/jhgk/DmJtsyjhRepository.java @@ -0,0 +1,10 @@ +package com.dsic.gj_erp.dao.jhgk; + +import com.dsic.gj_erp.bean.jhgk.DmJtsyjh; +import com.dsic.gj_erp.bean.jhgk.DmXbjh; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface DmJtsyjhRepository extends JpaRepository { +} diff --git a/src/main/java/com/dsic/gj_erp/dao/sy/DmBhdypRepository.java b/src/main/java/com/dsic/gj_erp/dao/sy/DmBhdypRepository.java new file mode 100644 index 0000000..831c099 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/sy/DmBhdypRepository.java @@ -0,0 +1,14 @@ +package com.dsic.gj_erp.dao.sy; + + +import com.dsic.gj_erp.bean.sy.DmBhdyp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.querydsl.QuerydslPredicateExecutor; +import org.springframework.stereotype.Repository; + +@Repository +public interface DmBhdypRepository extends JpaRepository, QuerydslPredicateExecutor { + + + +} \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/dao/sy/DmBhsjpRepository.java b/src/main/java/com/dsic/gj_erp/dao/sy/DmBhsjpRepository.java new file mode 100644 index 0000000..7498fb3 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/sy/DmBhsjpRepository.java @@ -0,0 +1,13 @@ +package com.dsic.gj_erp.dao.sy; + + +import com.dsic.gj_erp.bean.sy.DmBhsjp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface DmBhsjpRepository extends JpaRepository { + + + +} \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/dao/sy/DmBhzybRepository.java b/src/main/java/com/dsic/gj_erp/dao/sy/DmBhzybRepository.java new file mode 100644 index 0000000..15131d9 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/sy/DmBhzybRepository.java @@ -0,0 +1,13 @@ +package com.dsic.gj_erp.dao.sy; + + +import com.dsic.gj_erp.bean.sy.DmBhzyb; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface DmBhzybRepository extends JpaRepository { + + + +} \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/dao/sy/Dm_zhbmlbpRepository.java b/src/main/java/com/dsic/gj_erp/dao/sy/Dm_zhbmlbpRepository.java new file mode 100644 index 0000000..4e39f63 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/sy/Dm_zhbmlbpRepository.java @@ -0,0 +1,13 @@ +package com.dsic.gj_erp.dao.sy; + + +import com.dsic.gj_erp.bean.sy.Dm_zhbmlbp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface Dm_zhbmlbpRepository extends JpaRepository { + + + +} \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/dao/sy/Dm_zhbmpRepository.java b/src/main/java/com/dsic/gj_erp/dao/sy/Dm_zhbmpRepository.java new file mode 100644 index 0000000..4882b16 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/sy/Dm_zhbmpRepository.java @@ -0,0 +1,33 @@ +package com.dsic.gj_erp.dao.sy; + + +import com.dsic.gj_erp.bean.sy.Dm_zhbmp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** + * 系统与功能关联查询 + */ +@Repository +public interface Dm_zhbmpRepository extends JpaRepository { + + @Query(nativeQuery = true,value = "select BM as BM,BMSM as MC,(case when LEN(bm)=2 then 0 else 1 end) as px from DM_ZHBMP where BMLB='BMBM' and(left(bm,2) not in ('FP','YS','DJ','HR')) union all select dwbm as bm,dwmc as mc,3 as px from dm_xqdwjbp order by px") + List findBMBM(); + + List findByBMLB(String bmlb); + Dm_zhbmp findByBMLBAndBM(String bmlb,String bm); + + @Query(nativeQuery = true,value = "select bm as dwbm,bmsm as dwmc from dm_zhbmp where BMLB='BMBM' and (left(bm,3)='023' ) and isnull(ylzd3,'N')='D'") + List findDsdw(); + @Query(nativeQuery = true,value = "select bm, bmsm as mc from dm_zhbmp where bmlb='BMBM' and (left(bm,3)='023' ) and isnull(ylzd3,'N')<>'Y' ") + List findbmqx(); + + + + + +} \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/dao/sy/SyfunpRepository.java b/src/main/java/com/dsic/gj_erp/dao/sy/SyfunpRepository.java new file mode 100644 index 0000000..3f811f6 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/sy/SyfunpRepository.java @@ -0,0 +1,13 @@ +package com.dsic.gj_erp.dao.sy; + + +import com.dsic.gj_erp.bean.sy.Syfunp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface SyfunpRepository extends JpaRepository + { + + +} \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/dao/sy/SyifrpRepository.java b/src/main/java/com/dsic/gj_erp/dao/sy/SyifrpRepository.java new file mode 100644 index 0000000..b372114 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/sy/SyifrpRepository.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.dao.sy; + + +import com.dsic.gj_erp.bean.sy.Syifrp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * 系统与功能关联查询 + */ +@Repository +public interface SyifrpRepository extends JpaRepository { + + + void deleteByGWDM(String gwdm); + +} \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/dao/sy/SyigrpRepository.java b/src/main/java/com/dsic/gj_erp/dao/sy/SyigrpRepository.java new file mode 100644 index 0000000..8fd17ff --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/sy/SyigrpRepository.java @@ -0,0 +1,13 @@ +package com.dsic.gj_erp.dao.sy; + + +import com.dsic.gj_erp.bean.sy.Syigrp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface SyigrpRepository extends JpaRepository { + + void deleteByGWDM(String gwdm); + +} \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/dao/sy/SyimrpRepository.java b/src/main/java/com/dsic/gj_erp/dao/sy/SyimrpRepository.java new file mode 100644 index 0000000..6992bb9 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/sy/SyimrpRepository.java @@ -0,0 +1,20 @@ +package com.dsic.gj_erp.dao.sy; + + +import com.dsic.gj_erp.bean.sy.Syimrp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * 工作组与子系统关联查询 + */ +@Repository +public interface SyimrpRepository extends JpaRepository { + + List findByGWDMIn(List gwdmList); + + void deleteByGWDM(String gwdm); + +} \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/dao/sy/SyuirpRepository.java b/src/main/java/com/dsic/gj_erp/dao/sy/SyuirpRepository.java new file mode 100644 index 0000000..3a8b6dd --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/sy/SyuirpRepository.java @@ -0,0 +1,20 @@ +package com.dsic.gj_erp.dao.sy; + + +import com.dsic.gj_erp.bean.sy.Syuirp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * 工作组与用户关联查询 + */ +@Repository +public interface SyuirpRepository extends JpaRepository { + + List findByYHDM(String yhdm); + + void deleteByGWDM(String gwdm); + +} diff --git a/src/main/java/com/dsic/gj_erp/dao/sy/SyuserpRepository.java b/src/main/java/com/dsic/gj_erp/dao/sy/SyuserpRepository.java new file mode 100644 index 0000000..a8950fd --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/sy/SyuserpRepository.java @@ -0,0 +1,13 @@ +package com.dsic.gj_erp.dao.sy; + + +import com.dsic.gj_erp.bean.sy.Syuserp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface SyuserpRepository extends JpaRepository { + + Syuserp findFirstByYHDMAndPWD(String yhdm,String pwd); + +} diff --git a/src/main/java/com/dsic/gj_erp/dao/sy/SyworkgpRepository.java b/src/main/java/com/dsic/gj_erp/dao/sy/SyworkgpRepository.java new file mode 100644 index 0000000..c69f497 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/dao/sy/SyworkgpRepository.java @@ -0,0 +1,18 @@ +package com.dsic.gj_erp.dao.sy; + + +import com.dsic.gj_erp.bean.sy.Syworkgp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface SyworkgpRepository extends JpaRepository { + + @Override + S save(S s); + + @Override + void deleteById(String s); + + +} \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/exception/CustomException.java b/src/main/java/com/dsic/gj_erp/exception/CustomException.java new file mode 100644 index 0000000..4d43728 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/exception/CustomException.java @@ -0,0 +1,23 @@ +package com.dsic.gj_erp.exception; + +public class CustomException extends Exception { + + private int code; + + public CustomException() { + super(); + } + + public CustomException(int code, String message) { + super(message); + this.setCode(code); + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } +} diff --git a/src/main/java/com/dsic/gj_erp/exception/GlobalExceptionHandler.java b/src/main/java/com/dsic/gj_erp/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..f188459 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/exception/GlobalExceptionHandler.java @@ -0,0 +1,58 @@ +package com.dsic.gj_erp.exception; + + +import com.dsic.gj_erp.bean.ResultBean; +import com.fasterxml.jackson.databind.exc.MismatchedInputException; +import org.springframework.dao.DuplicateKeyException; +import org.springframework.dao.InvalidDataAccessResourceUsageException; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +import java.lang.reflect.UndeclaredThrowableException; + +@RestControllerAdvice +public class GlobalExceptionHandler{ + + @ExceptionHandler(CustomException.class) + @ResponseBody + public ResultBean customExceptionHandler(Exception ex) { + CustomException exception = (CustomException) ex; + return new ResultBean(false,exception.getCode(),ex.getMessage()); + } + + @ExceptionHandler(UndeclaredThrowableException.class) + @ResponseBody + public ResultBean undeclaredThrowableExceptionHandler(Exception ex) { + if(ex.getCause() instanceof CustomException){ + CustomException customException = (CustomException) ex.getCause(); + return new ResultBean(false,customException.getCode(),customException.getMessage()); + } + return new ResultBean(false,10101,ex.toString()); + } + + + @ExceptionHandler(Exception.class) + @ResponseBody + public ResultBean handle(Exception ex) { + ex.printStackTrace(); + if (ex instanceof MethodArgumentNotValidException) { + MethodArgumentNotValidException exception = (MethodArgumentNotValidException) ex; + return new ResultBean(false,10110,exception.getBindingResult().getAllErrors().get(0).getDefaultMessage()); + } + if (ex instanceof MismatchedInputException) { + return new ResultBean(false,10111,"请求参数非法!"); + } + if(ex instanceof InvalidDataAccessResourceUsageException){ + return new ResultBean(false,10112, "数据库访问异常,请检查参数!"); + } + if (ex instanceof DuplicateKeyException){ + return new ResultBean(false,10113, "请检查参数!"); + } + + return new ResultBean(false,10101,ex.toString()); + } + + +} diff --git a/src/main/java/com/dsic/gj_erp/exception/ServiceException.java b/src/main/java/com/dsic/gj_erp/exception/ServiceException.java new file mode 100644 index 0000000..087cff0 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/exception/ServiceException.java @@ -0,0 +1,22 @@ +package com.dsic.gj_erp.exception; + +public class ServiceException extends RuntimeException{ + private int code; + + public ServiceException() { + super(); + } + + public ServiceException(int code, String message) { + super(message); + this.setCode(code); + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } +} diff --git a/src/main/java/com/dsic/gj_erp/interceptor/CORSFilter.java b/src/main/java/com/dsic/gj_erp/interceptor/CORSFilter.java new file mode 100644 index 0000000..eeb3510 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/interceptor/CORSFilter.java @@ -0,0 +1,26 @@ +package com.dsic.gj_erp.interceptor; + +import org.springframework.stereotype.Component; + +import javax.servlet.*; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@Component + +public class CORSFilter implements Filter { + + public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { + HttpServletResponse response = (HttpServletResponse) res; + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, HEAD"); + response.setHeader("Access-Control-Max-Age", "3600"); + response.setHeader("Access-Control-Allow-Headers", "access-control-allow-origin, authority, content-type, version-info, X-Requested-With, token"); + chain.doFilter(req, res); + } + + public void init(FilterConfig filterConfig) {} + + public void destroy() {} + +} diff --git a/src/main/java/com/dsic/gj_erp/listeners/ExcelPlListener.java b/src/main/java/com/dsic/gj_erp/listeners/ExcelPlListener.java new file mode 100644 index 0000000..d6d0d58 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/listeners/ExcelPlListener.java @@ -0,0 +1,111 @@ +package com.dsic.gj_erp.listeners; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.dsic.gj_erp.bean.jcsj.excel.PlExcel; +import com.dsic.gj_erp.util.ObjConvertUtils; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Excel通用监听器 + */ +public class ExcelPlListener extends AnalysisEventListener { + + private static final int BATCH_COUNT = 5; + + List objectList = new ArrayList<>(); + List headList = new ArrayList<>(); + private String sheetName; + + List datas = new ArrayList(); + + @Override + public void invoke(PlExcel excelDemo, AnalysisContext analysisContext) { + //每解析一行数据,就会调用该方法一次 + //正常在这里调用数据处理得办法 + + //一条数据添加到暂时存储的存储结构中 + + boolean b = ObjConvertUtils.checkObjAllFieldsIsNull(excelDemo); + String dcCh = excelDemo.getDcCh(); + String dcpl = excelDemo.getDcPL(); + String dcfd = excelDemo.getDcFd1(); + if(!b && StringUtils.isNotBlank(dcCh) && StringUtils.isNotBlank(dcpl) && StringUtils.isNotBlank(dcfd)){ + datas.add(excelDemo); + } + + + + + + + // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM + if (datas.size() >= BATCH_COUNT) { + saveData(); + // 存储完成清理 list + datas.clear(); + } + } + + + + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + //获取sheetName + saveData(); + sheetName = context.readSheetHolder().getSheetName(); +// LOGGER.info("所有数据解析完成!"); + } + + //获取表头 + @Override + public void invokeHeadMap(Map headMap, AnalysisContext context) { + //把表头数据加入到存储结构中 + headList.add(headMap); + } + + /** + * 入库 + */ + private void saveData() { + //添加到返回的存储结构中,也可直接存储到数据库 + objectList.addAll(datas); + } + + public List getDatas() { + return datas; + } + + public void setDatas(List datas) { + this.datas = datas; + } + + public List getObjectList() { + return objectList; + } + + public void setObjectList(List objectList) { + this.objectList = objectList; + } + + public String getSheetName() { + return sheetName; + } + + public void setSheetName(String sheetName) { + this.sheetName = sheetName; + } + + public List getHeadList() { + return headList; + } + + public void setHeadList(List headList) { + this.headList = headList; + } +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/SyuserMapper.java b/src/main/java/com/dsic/gj_erp/mapper/SyuserMapper.java new file mode 100644 index 0000000..49c9011 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/SyuserMapper.java @@ -0,0 +1,14 @@ +package com.dsic.gj_erp.mapper; + +import org.mapstruct.Mapper; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +@Repository +@Mapper +public interface SyuserMapper { + + List getUserMenu(String usercode, String systemcode); +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jcsj/DmCbxxpMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jcsj/DmCbxxpMapper.java new file mode 100644 index 0000000..d3a3d80 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jcsj/DmCbxxpMapper.java @@ -0,0 +1,20 @@ +package com.dsic.gj_erp.mapper.jcsj; + +import com.dsic.gj_erp.bean.jcsj.DmCbxxp; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-11 + */ +@Mapper +public interface DmCbxxpMapper extends BaseMapper { + + void updateByPrimaryKeySelective(DmCbxxp dmCbxxp); + +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jcsj/DmCzplpMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jcsj/DmCzplpMapper.java new file mode 100644 index 0000000..f0b4fe9 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jcsj/DmCzplpMapper.java @@ -0,0 +1,16 @@ +package com.dsic.gj_erp.mapper.jcsj; + +import com.dsic.gj_erp.bean.jcsj.DmCzplp; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-11 + */ +public interface DmCzplpMapper extends BaseMapper { + +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jcsj/DmCzplpNewMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jcsj/DmCzplpNewMapper.java new file mode 100644 index 0000000..2e40305 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jcsj/DmCzplpNewMapper.java @@ -0,0 +1,16 @@ +package com.dsic.gj_erp.mapper.jcsj; + +import com.dsic.gj_erp.bean.jcsj.DmCzplpNew; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-11 + */ +public interface DmCzplpNewMapper extends BaseMapper { + +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jcsj/EmGcrlMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jcsj/EmGcrlMapper.java new file mode 100644 index 0000000..eda91f3 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jcsj/EmGcrlMapper.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.mapper.jcsj; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jcsj.EmGcrl; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface EmGcrlMapper extends BaseMapper { + +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbcnpMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbcnpMapper.java new file mode 100644 index 0000000..d32eb72 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbcnpMapper.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.mapper.jcsj; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jcsj.EmSbcnp; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface EmSbcnpMapper extends BaseMapper { + +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbjbbMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbjbbMapper.java new file mode 100644 index 0000000..a1fb2a2 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbjbbMapper.java @@ -0,0 +1,29 @@ +package com.dsic.gj_erp.mapper.jcsj; + + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jcsj.EmSbjbb; +import org.mapstruct.Mapper; + +import java.io.Serializable; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.function.Function; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface EmSbjbbMapper extends BaseMapper { + + Integer insertBatchSomeColumn(List entityList); + // List getList(); +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbrydypMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbrydypMapper.java new file mode 100644 index 0000000..110c29b --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbrydypMapper.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.mapper.jcsj; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jcsj.EmSbrydyp; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface EmSbrydypMapper extends BaseMapper { + +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbwxjhMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbwxjhMapper.java new file mode 100644 index 0000000..31842a5 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jcsj/EmSbwxjhMapper.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.mapper.jcsj; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jcsj.EmSbwxjh; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface EmSbwxjhMapper extends BaseMapper { + +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmDhqdpMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmDhqdpMapper.java new file mode 100644 index 0000000..09ac9c8 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmDhqdpMapper.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.mapper.jhgk; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jhgk.DmDhqdp; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmDhqdpMapper extends BaseMapper { + +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmJgxywrybMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmJgxywrybMapper.java new file mode 100644 index 0000000..ff88c7b --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmJgxywrybMapper.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.mapper.jhgk; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jhgk.DmJgxywryb; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmJgxywrybMapper extends BaseMapper { + +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmJtsyjhMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmJtsyjhMapper.java new file mode 100644 index 0000000..6289d9d --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmJtsyjhMapper.java @@ -0,0 +1,20 @@ +package com.dsic.gj_erp.mapper.jhgk; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jhgk.DmJtsyjh; +import io.lettuce.core.dynamic.annotation.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmJtsyjhMapper extends BaseMapper { + int updateCzplpNEW(List list); +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMapper.java new file mode 100644 index 0000000..1dacd00 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMapper.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.mapper.jhgk; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jhgk.DmSygd; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmSygdMapper extends BaseMapper { + +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMxMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMxMapper.java new file mode 100644 index 0000000..b1f63ac --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMxMapper.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.mapper.jhgk; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jhgk.DmSygdMx; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmSygdMxMapper extends BaseMapper { + +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmTzjhMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmTzjhMapper.java new file mode 100644 index 0000000..6b0a8e3 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmTzjhMapper.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.mapper.jhgk; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jhgk.DmTzjh; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmTzjhMapper extends BaseMapper { + +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmXbjhMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmXbjhMapper.java new file mode 100644 index 0000000..b10fdd3 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmXbjhMapper.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.mapper.jhgk; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jhgk.DmXbjh; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmXbjhMapper extends BaseMapper { + +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmZrcjhMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmZrcjhMapper.java new file mode 100644 index 0000000..aa7e5fe --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmZrcjhMapper.java @@ -0,0 +1,19 @@ + package com.dsic.gj_erp.mapper.jhgk; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jhgk.DmZrcjh; + +import java.util.List; + + /** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmZrcjhMapper extends BaseMapper { + int updateCzplpNEW(List list); +} diff --git a/src/main/java/com/dsic/gj_erp/service/ApiService.java b/src/main/java/com/dsic/gj_erp/service/ApiService.java new file mode 100644 index 0000000..fa7dfe9 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/ApiService.java @@ -0,0 +1,94 @@ +package com.dsic.gj_erp.service; + +import com.dsic.gj_erp.bean.request.LoginBean; +import com.dsic.gj_erp.bean.sy.QSyfunp; +import com.dsic.gj_erp.bean.sy.QSyifrp; +import com.dsic.gj_erp.bean.sy.QSyuirp; +import com.dsic.gj_erp.bean.sy.Syuserp; +import com.dsic.gj_erp.dao.sy.SyuserpRepository; +import com.dsic.gj_erp.exception.CustomException; +import com.dsic.gj_erp.util.JwtUtil; +import com.dsic.gj_erp.util.MD5Util; +import com.querydsl.jpa.impl.JPAQueryFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import javax.annotation.PostConstruct; +import javax.persistence.EntityManager; +import java.util.HashMap; +import java.util.Map; + +@Service +public class ApiService { + + @Autowired + private JwtUtil jwtUtil; + @Autowired + SyuserpRepository syuserpRepository; + + @Autowired + private EntityManager entityManager; + + private JPAQueryFactory queryFactory; + + @PostConstruct + public void initFactory() { + queryFactory = new JPAQueryFactory(entityManager); + } + + + /** + * 用户登陆逻辑 + * + * @param loginBean + * @return + * @throws CustomException + */ + public Map userLogin(LoginBean loginBean) throws CustomException { + String pwd=""; + if (!StringUtils.isEmpty(loginBean.getPwd())){ + pwd= MD5Util.encrypt(loginBean.getPwd()); + } + + Syuserp syuserp = syuserpRepository.findFirstByYHDMAndPWD(loginBean.getYhdm(), pwd); + if (syuserp == null) { + throw new CustomException(10201, "登陆失败,账号密码错误!"); + } + syuserp.setPWD(null); + + String token = jwtUtil.generateToken(loginBean.getYhdm(), loginBean.getZxtbm(),syuserp.getYHMS()); + Map dataMap = new HashMap<>(); + dataMap.put("token", token); + dataMap.put("expires", jwtUtil.getClaimByToken(token).getExpiration().getTime()); + return dataMap; + } + + public Map getInfo(String yhdm) { + Syuserp syuserp = syuserpRepository.findById(yhdm).get(); + syuserp.setPWD(null); + Map dataMap = new HashMap<>(); + String[] arr = {"admin"}; + dataMap.put("roles", arr); + dataMap.put("user", syuserp); + return dataMap; + } + + public boolean hasPermission(String yhdm, String[] ckdm) { + if (ckdm == null || ckdm.length == 0) { + return true; + } + QSyfunp syfunp = QSyfunp.syfunp; + QSyifrp syifrp = QSyifrp.syifrp; + QSyuirp syuirp = QSyuirp.syuirp; + long matchCount = queryFactory.select(syifrp) + .from(syfunp) + .leftJoin(syifrp).on(syfunp.MS.eq(syifrp.MS).and(syfunp.ZXTBM.eq(syifrp.ZXTBM)).and(syfunp.GNLB.eq(syifrp.GNLB))) + .leftJoin(syuirp).on(syifrp.GWDM.eq(syuirp.GWDM)) + .where(syuirp.YHDM.eq(yhdm).and(syfunp.CKDM.in(ckdm))) + .fetchCount(); + return matchCount > 0; + } + + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/DmCbxxpService.java b/src/main/java/com/dsic/gj_erp/service/jcsj/DmCbxxpService.java new file mode 100644 index 0000000..94f219d --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/DmCbxxpService.java @@ -0,0 +1,50 @@ +package com.dsic.gj_erp.service.jcsj; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.dsic.gj_erp.annotation.AuthFunction; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jcsj.DmCbxxp; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-11 + */ +public interface DmCbxxpService extends IService { + + + List getList(@RequestBody Map map); + + + + + + + void del(@RequestBody ListdmCbxxps); + + + + + void edit(@RequestBody ListdmCbxxps); + + + + + void add (@RequestBody ListdmCbxxps, HttpServletRequest request); + + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/DmCzplpNewService.java b/src/main/java/com/dsic/gj_erp/service/jcsj/DmCzplpNewService.java new file mode 100644 index 0000000..075b8b7 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/DmCzplpNewService.java @@ -0,0 +1,29 @@ +package com.dsic.gj_erp.service.jcsj; + +import cn.hutool.http.HttpRequest; +import com.dsic.gj_erp.bean.jcsj.DmCzplpNew; +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jcsj.excel.PlExcel; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-11 + */ +public interface DmCzplpNewService extends IService { + + Map uploadPl(Listlist, String project, String isupload, HttpServletRequest req); + Map getCzplBase(Map map); + + + ListgetCzplList(Map map); + void czPlupdate(Listlist); + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/DmCzplpService.java b/src/main/java/com/dsic/gj_erp/service/jcsj/DmCzplpService.java new file mode 100644 index 0000000..3a6fc07 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/DmCzplpService.java @@ -0,0 +1,16 @@ +package com.dsic.gj_erp.service.jcsj; + +import com.dsic.gj_erp.bean.jcsj.DmCzplp; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-11 + */ +public interface DmCzplpService extends IService { + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/EmGcrlService.java b/src/main/java/com/dsic/gj_erp/service/jcsj/EmGcrlService.java new file mode 100644 index 0000000..26cee26 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/EmGcrlService.java @@ -0,0 +1,26 @@ +package com.dsic.gj_erp.service.jcsj; + + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jcsj.EmGcrl; +import com.dsic.gj_erp.bean.jcsj.EmSbcnp; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface EmGcrlService extends IService { + List getList(JSONObject json); + + void update(List emGcrls); + + void generate(); + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/EmSbcnpService.java b/src/main/java/com/dsic/gj_erp/service/jcsj/EmSbcnpService.java new file mode 100644 index 0000000..6e874f7 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/EmSbcnpService.java @@ -0,0 +1,31 @@ +package com.dsic.gj_erp.service.jcsj; + + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jcsj.EmSbcnp; +import com.dsic.gj_erp.bean.jcsj.EmSbwxjh; +import com.dsic.gj_erp.bean.request.EmSbwxjhBean; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface EmSbcnpService extends IService { + List getList(JSONObject json); + + void save(List emSbcnps); + + void update(List emSbcnps); + + void delete(List emSbcnps); + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/EmSbjbbService.java b/src/main/java/com/dsic/gj_erp/service/jcsj/EmSbjbbService.java new file mode 100644 index 0000000..f938aa7 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/EmSbjbbService.java @@ -0,0 +1,34 @@ +package com.dsic.gj_erp.service.jcsj; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jcsj.EmSbjbb; +import com.dsic.gj_erp.bean.request.EmSbjbbBean; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface EmSbjbbService extends IService { + + + List getList(EmSbjbbBean emSbjbbBean); + + void save(List emSbjbbs, HttpServletRequest request); + + void update(List emSbjbbs); + + void delete(List emSbjbbs); + + List getGYS(); + + List getSBLX(); +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/EmSbrydypService.java b/src/main/java/com/dsic/gj_erp/service/jcsj/EmSbrydypService.java new file mode 100644 index 0000000..b6779ae --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/EmSbrydypService.java @@ -0,0 +1,34 @@ +package com.dsic.gj_erp.service.jcsj; + + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jcsj.EmSbcnp; +import com.dsic.gj_erp.bean.jcsj.EmSbrydyp; +import com.dsic.gj_erp.bean.jcsj.EmSbwxjh; +import com.dsic.gj_erp.bean.request.EmSbwxjhBean; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface EmSbrydypService extends IService { + List getList(JSONObject json); + + void save(List emSbcnps, HttpServletRequest request); + + void update(List emSbcnps); + + void delete(List emSbcnps); + + List getRYList(); + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/EmSbwxjhService.java b/src/main/java/com/dsic/gj_erp/service/jcsj/EmSbwxjhService.java new file mode 100644 index 0000000..b8386ce --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/EmSbwxjhService.java @@ -0,0 +1,29 @@ +package com.dsic.gj_erp.service.jcsj; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jcsj.EmSbjbb; +import com.dsic.gj_erp.bean.jcsj.EmSbwxjh; +import com.dsic.gj_erp.bean.request.EmSbwxjhBean; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface EmSbwxjhService extends IService { + + List getList(EmSbwxjhBean emSbwxjhBean); + + void save(List emSbwxjhs, HttpServletRequest request); + + void update(List emSbwxjhs); + + void delete(List emSbwxjhs); +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmCbxxpServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmCbxxpServiceImpl.java new file mode 100644 index 0000000..43add66 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmCbxxpServiceImpl.java @@ -0,0 +1,69 @@ +package com.dsic.gj_erp.service.jcsj.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.dsic.gj_erp.bean.jcsj.DmCbxxp; +import com.dsic.gj_erp.mapper.jcsj.DmCbxxpMapper; +import com.dsic.gj_erp.service.jcsj.DmCbxxpService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-11 + */ +@Service +public class DmCbxxpServiceImpl extends ServiceImpl implements DmCbxxpService { +@Autowired + DmCbxxpMapper dmCbxxpMapper; + @Override + public List getList(Map map) { + QueryWrapper qw= new QueryWrapper<>(); + qw.likeRight(StrUtil.isNotEmpty((String)map.get("cbbm")),"cbbm",(String)map.get("cbbm")); + qw.eq(StrUtil.isNotEmpty((String)map.get("wgbs")),"wgbs",(String)map.get("wgbs")); + qw.orderBy(true,true,"cbmc"); + List list = this.list(qw); + list.forEach(e->{ + e.setCbbm1(e.getCbbm()); + }); + return list; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void del(List dmCbxxps) { + dmCbxxps.forEach(e->{ + this.removeById(e.getCbbm()); + }); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void edit(List dmCbxxps) { + dmCbxxps.forEach(e->{ + dmCbxxpMapper.updateByPrimaryKeySelective(e); + }); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void add(List dmCbxxps, HttpServletRequest request) { + dmCbxxps.forEach(e->{ + e.setBzr((String)request.getAttribute("yhdm")); + e.setBzrq(DateUtil.format(DateUtil.date(),"yyyy/MM/dd")); + this.save(e); + }); + } +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmCzplpNewServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmCzplpNewServiceImpl.java new file mode 100644 index 0000000..dd8ff88 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmCzplpNewServiceImpl.java @@ -0,0 +1,377 @@ +package com.dsic.gj_erp.service.jcsj.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.dsic.gj_erp.bean.jcsj.DmCbxxp; +import com.dsic.gj_erp.bean.jcsj.DmCzplp; +import com.dsic.gj_erp.bean.jcsj.DmCzplpNew; +import com.dsic.gj_erp.bean.jcsj.excel.PlExcel; +import com.dsic.gj_erp.mapper.jcsj.DmCzplpNewMapper; +import com.dsic.gj_erp.service.jcsj.DmCbxxpService; +import com.dsic.gj_erp.service.jcsj.DmCzplpNewService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.service.jcsj.DmCzplpService; +import com.dsic.gj_erp.service.sy.SYService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-11 + */ +@Service +public class DmCzplpNewServiceImpl extends ServiceImpl implements DmCzplpNewService { + @Autowired + DmCzplpService dmCzplpService; + @Autowired + DmCbxxpService dmCbxxpService; + @Autowired + SYService syService; + + /** + * + * @param list + * @param project + * @param isupload 如果覆盖传入01 如果返回的是 01 提示是否覆盖 02 不提示 + * @param req + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Map uploadPl(List list, String project, String isupload, HttpServletRequest req) { + Map returnMap = new HashMap(); + List fds = list.stream().filter(f -> StringUtils.isNotBlank(f.getDcPL())).map(PlExcel::getDcPL).collect(Collectors.toList()); + List fdList = this.list(new QueryWrapper().in("dc_fd", fds)); +// if(fdList.size()>0){ +// // 是否覆盖之前导入的数据 +// if(!isupload.equals("01")){ +// returnMap.put("zt","01"); +// } +// }else{ +// returnMap.put("zt","02"); +// } + List dmCzplpNews = new ArrayList<>(); + List dmCzplps = new ArrayList<>(); + for (PlExcel plExcel : list) { + Map map = getPlCount(plExcel); + int plCount = (int) map.get("plcount"); + String pls = (String) map.get("pls"); + Map stringObjectMap = BeanUtil.beanToMap(plExcel); + DmCzplpNew dmCzplpNewOld = fdList.stream().filter(fst -> plExcel.getDcPL().equals(fst.getDcFd())).findFirst().orElse(null); + + if (null != dmCzplpNewOld) { + this.remove(new QueryWrapper().eq("dc_fd", plExcel.getDcPL())); + for (int i = 1; i 0) { + this.saveBatch(dmCzplpNews); + } + if (dmCzplps.size() > 0) { + dmCzplpService.saveBatch(dmCzplps); + } + return returnMap; + } + + public Map getPlCount(PlExcel plExcel) { + Map map = new HashMap(); + int plcount = 1; + String pls = ""; + String dcPl1 = plExcel.getDcFd1(); + String dcPl2 = plExcel.getDcFd2(); + String dcPl3 = plExcel.getDcFd3(); + String dcPl4 = plExcel.getDcFd4(); + String dcPl5 = plExcel.getDcFd5(); + String dcPl6 = plExcel.getDcFd6(); + String dcPl7 = plExcel.getDcFd7(); + String dcPl8 = plExcel.getDcFd8(); + if (StringUtils.isNotBlank(dcPl1)) { + plcount++; + pls = pls + dcPl1; + } + if (StringUtils.isNotBlank(dcPl2)) { + plcount++; + pls = pls + " " + dcPl2; + } + if (StringUtils.isNotBlank(dcPl3)) { + plcount++; + pls = pls + " " + dcPl3; + } + if (StringUtils.isNotBlank(dcPl4)) { + plcount++; + pls = pls + " " + dcPl4; + } + if (StringUtils.isNotBlank(dcPl5)) { + plcount++; + pls = pls + " " + dcPl5; + } + if (StringUtils.isNotBlank(dcPl6)) { + plcount++; + pls = pls + " " + dcPl6; + } + if (StringUtils.isNotBlank(dcPl7)) { + plcount++; + pls = pls + " " + dcPl7; + } + if (StringUtils.isNotBlank(dcPl8)) { + plcount++; + pls = pls + " " + dcPl8; + } + map.put("plcount", plcount); + map.put("pls", pls.trim()); + return map; + } + + public Map plexcltoDmczplNew(PlExcel plExcel, Map stringObjectMap, HttpServletRequest req, int i, String pls) { + DmCzplpNew dmCzplpNew = new DmCzplpNew(); + DmCzplp dmCzplp = new DmCzplp(); + String id = syService.f_getpjh("DM", "DM", "CZPL"); + dmCzplp.setId(id); + dmCzplp.setDcCh(plExcel.getDcCh()); + dmCzplp.setDcFd(pls); + dmCzplp.setZl(plExcel.getZl()); + dmCzplp.setDcPl(plExcel.getDcPL()); + dmCzplp.setLrr((String) req.getAttribute("yhms")); + dmCzplp.setLrrq(DateUtil.format(DateUtil.date(), "yyyy/MM/dd")); + dmCzplpNew.setDcPl(plExcel.getDcPL()); + dmCzplpNew.setDcCh(plExcel.getDcCh()); + dmCzplpNew.setDcFd((String) stringObjectMap.get("dcFd" + i )); + dmCzplpNew.setZl(plExcel.getZl()); + dmCzplpNew.setLrr((String) req.getAttribute("yhms")); + dmCzplpNew.setLrrq(DateUtil.format(DateUtil.date(), "yyyy/MM/dd")); + dmCzplpNew.setQy(plExcel.getQy()); + dmCzplpNew.setZdh(plExcel.getZdh()); + dmCzplpNew.setGdqJt(plExcel.getGdqJt()); + dmCzplpNew.setDzjsq(plExcel.getDzjsq()); + dmCzplpNew.setDzjsqZrc(plExcel.getDzjsqZrc()); + dmCzplpNew.setXzjsq(plExcel.getXzjsq()); + dmCzplpNew.setXzjsqZrc(plExcel.getXzjsqZrc()); + dmCzplpNew.setGjks(plExcel.getGjks()); + dmCzplpNew.setGjksZrc(plExcel.getGjksZrc()); + dmCzplpNew.setDhqc(plExcel.getDhqc()); + dmCzplpNew.setXfqTlt(plExcel.getXfqTlt()); + dmCzplpNew.setJsqTlt(plExcel.getJsqTlt()); + dmCzplpNew.setXfqLqb(plExcel.getXfqLqb()); + dmCzplpNew.setJsqLqb(plExcel.getJsqLqb()); + dmCzplpNew.setXfqPtb(plExcel.getXfqPtb()); + dmCzplpNew.setJsqPtb(plExcel.getJsqPtb()); + dmCzplpNew.setSlDz(plExcel.getSlDz()); + dmCzplpNew.setSlXz(plExcel.getSlXz()); + dmCzplpNew.setQtqDz(plExcel.getQtqDz()); + dmCzplpNew.setQtqXz(plExcel.getQtqXz()); + dmCzplpNew.setFdxqq(plExcel.getFdxqq()); + dmCzplpNew.setSjpsq(plExcel.getSjpsq()); + dmCzplpNew.setDhqd(plExcel.getDhqd()); + dmCzplpNew.setXfqDhqd(plExcel.getXfqDhqd()); + dmCzplpNew.setSjdhrq(plExcel.getSjdhrq()); + dmCzplpNew.setBcdq(plExcel.getBcdq()); + dmCzplpNew.setSjarrival(plExcel.getSjarrival()); + dmCzplpNew.setJsbs(plExcel.getJsbs()); + dmCzplpNew.setZt("0"); + dmCzplpNew.setXzjsqsm(""); + dmCzplpNew.setId(id); + dmCzplpNew.setXfqLqb1sm(""); + dmCzplpNew.setXfqTlt1(plExcel.getXfqTlt()); + dmCzplpNew.setDzjsq1(plExcel.getDzjsq()); + dmCzplpNew.setXfqTltsm(""); + dmCzplpNew.setDzjsqsm(""); + dmCzplpNew.setGjks1(plExcel.getGjks()); + dmCzplpNew.setXfqDhqd1(plExcel.getXfqDhqd()); + dmCzplpNew.setGjkssm(""); + dmCzplpNew.setXzjsq1(plExcel.getXzjsq()); + dmCzplpNew.setXfqDhqd1sm(""); + dmCzplpNew.setXfqLqb1(plExcel.getXfqLqb()); + Map map = new HashMap(); + map.put("dmCzplp", dmCzplp); + map.put("dmCzplpNew", dmCzplpNew); + return map; + } + + public DmCzplpNew plexcltoDmczplNewUp(PlExcel plExcel, Map stringObjectMap, HttpServletRequest req, int i, DmCzplpNew dmCzplpNewOld) { + DmCzplpNew dmCzplpNew = new DmCzplpNew(); + String id = syService.f_getpjh("DM", "DM", "CZPL"); + dmCzplpNew.setDcPl(plExcel.getDcPL()); + dmCzplpNew.setDcCh(plExcel.getDcCh()); + dmCzplpNew.setDcFd((String) stringObjectMap.get("dcFd" + i )); + dmCzplpNew.setZl(plExcel.getZl()); + dmCzplpNew.setLrr((String) req.getAttribute("yhms")); + dmCzplpNew.setLrrq(DateUtil.format(DateUtil.date(), "yyyy/MM/dd")); + dmCzplpNew.setQy(plExcel.getQy()); + dmCzplpNew.setZdh(plExcel.getZdh()); + dmCzplpNew.setGdqJt(plExcel.getGdqJt()); + dmCzplpNew.setDzjsq(plExcel.getDzjsq()); + dmCzplpNew.setDzjsqZrc(plExcel.getDzjsqZrc()); + dmCzplpNew.setXzjsq(plExcel.getXzjsq()); + dmCzplpNew.setXzjsqZrc(plExcel.getXzjsqZrc()); + dmCzplpNew.setGjks(plExcel.getGjks()); + dmCzplpNew.setGjksZrc(plExcel.getGjksZrc()); + dmCzplpNew.setDhqc(plExcel.getDhqc()); + dmCzplpNew.setXfqTlt(plExcel.getXfqTlt()); + dmCzplpNew.setJsqTlt(plExcel.getJsqTlt()); + dmCzplpNew.setXfqLqb(plExcel.getXfqLqb()); + dmCzplpNew.setJsqLqb(plExcel.getJsqLqb()); + dmCzplpNew.setXfqPtb(plExcel.getXfqPtb()); + dmCzplpNew.setJsqPtb(plExcel.getJsqPtb()); + dmCzplpNew.setSlDz(plExcel.getSlDz()); + dmCzplpNew.setSlXz(plExcel.getSlXz()); + dmCzplpNew.setQtqDz(plExcel.getQtqDz()); + dmCzplpNew.setQtqXz(plExcel.getQtqXz()); + dmCzplpNew.setFdxqq(plExcel.getFdxqq()); + dmCzplpNew.setSjpsq(plExcel.getSjpsq()); + dmCzplpNew.setDhqd(plExcel.getDhqd()); + dmCzplpNew.setXfqDhqd(plExcel.getXfqDhqd()); + dmCzplpNew.setSjdhrq(plExcel.getSjdhrq()); + dmCzplpNew.setBcdq(plExcel.getBcdq()); + dmCzplpNew.setSjarrival(plExcel.getSjarrival()); + dmCzplpNew.setJsbs(plExcel.getJsbs()); + dmCzplpNew.setZt("0"); + dmCzplpNew.setId(id); + String rq = ""; + String rqsm = ""; + int xfqLqb = DateUtil.compare(DateUtil.parse(plExcel.getXfqLqb()), DateUtil.parse(dmCzplpNewOld.getXfqLqb()), "MM"); + if (xfqLqb == 0) { + xfqLqb = DateUtil.compare(DateUtil.parse(plExcel.getXfqLqb()), DateUtil.parse(dmCzplpNewOld.getXfqLqb())); + if (xfqLqb != 0) { + rqsm = "变更"; + rq = dmCzplpNewOld.getXfqLqb() + " " + plExcel.getXfqLqb(); + } + } else if (xfqLqb < 0) { + rqsm = "托期"; + rq = dmCzplpNewOld.getXfqLqb() + " " + plExcel.getXfqLqb(); + } else if (xfqLqb > 0) { + rqsm = "延期"; + rq = dmCzplpNewOld.getXfqLqb() + " " + plExcel.getXfqLqb(); + } + dmCzplpNew.setXfqLqb1sm(rqsm); + dmCzplpNew.setXfqLqb1(rq); + int xzjsq = DateUtil.compare(DateUtil.parse(plExcel.getXzjsq()), DateUtil.parse(dmCzplpNewOld.getXzjsq()), "MM"); + if (xzjsq == 0) { + xzjsq = DateUtil.compare(DateUtil.parse(plExcel.getXzjsq()), DateUtil.parse(dmCzplpNewOld.getXzjsq())); + if (xzjsq != 0) { + rqsm = "变更"; + rq = dmCzplpNewOld.getXzjsq() + " " + plExcel.getXzjsq(); + } + } else if (xzjsq < 0) { + rqsm = "托期"; + rq = dmCzplpNewOld.getXzjsq() + " " + plExcel.getXzjsq(); + } else if (xzjsq > 0) { + rqsm = "延期"; + rq = dmCzplpNewOld.getXzjsq() + " " + plExcel.getXzjsq(); + } + dmCzplpNew.setXzjsq1(rq); + dmCzplpNew.setXzjsqsm(rqsm); + int xfqTlt = DateUtil.compare(DateUtil.parse(plExcel.getXfqTlt()), DateUtil.parse(dmCzplpNewOld.getXfqTlt()), "MM"); + if (xfqTlt == 0) { + xfqTlt = DateUtil.compare(DateUtil.parse(plExcel.getXfqTlt()), DateUtil.parse(dmCzplpNewOld.getXfqTlt())); + if (xfqTlt != 0) { + rqsm = "变更"; + rq = dmCzplpNewOld.getXfqTlt() + " " + plExcel.getXfqTlt(); + } + } else if (xfqTlt < 0) { + rqsm = "托期"; + rq = dmCzplpNewOld.getXfqTlt() + " " + plExcel.getXfqTlt(); + } else if (xfqTlt > 0) { + rqsm = "延期"; + rq = dmCzplpNewOld.getXfqTlt() + " " + plExcel.getXfqTlt(); + } + dmCzplpNew.setXfqTltsm(rqsm); + dmCzplpNew.setXfqTlt1(rq); + int dzjsq = DateUtil.compare(DateUtil.parse(plExcel.getDzjsq()), DateUtil.parse(dmCzplpNewOld.getDzjsq()), "MM"); + if (dzjsq == 0) { + dzjsq = DateUtil.compare(DateUtil.parse(plExcel.getDzjsq()), DateUtil.parse(dmCzplpNewOld.getDzjsq())); + if (dzjsq != 0) { + rqsm = "变更"; + rq = dmCzplpNewOld.getDzjsq() + " " + plExcel.getDzjsq(); + } + } else if (dzjsq < 0) { + rqsm = "托期"; + rq = dmCzplpNewOld.getDzjsq() + " " + plExcel.getDzjsq(); + } else if (dzjsq > 0) { + rqsm = "延期"; + rq = dmCzplpNewOld.getDzjsq() + " " + plExcel.getDzjsq(); + } + dmCzplpNew.setDzjsqsm(rqsm); + dmCzplpNew.setDzjsq1(rq); + int gjks = DateUtil.compare(DateUtil.parse(plExcel.getGjks()), DateUtil.parse(dmCzplpNewOld.getGjks()), "MM"); + if (gjks == 0) { + gjks = DateUtil.compare(DateUtil.parse(plExcel.getGjks()), DateUtil.parse(dmCzplpNewOld.getGjks())); + if (gjks != 0) { + rqsm = "变更"; + rq = dmCzplpNewOld.getGjks() + " " + plExcel.getGjks(); + } + } else if (gjks < 0) { + rqsm = "托期"; + rq = dmCzplpNewOld.getGjks() + " " + plExcel.getGjks(); + } else if (gjks > 0) { + rqsm = "延期"; + rq = dmCzplpNewOld.getGjks() + " " + plExcel.getGjks(); + } + dmCzplpNew.setGjks1(rq); + dmCzplpNew.setGjkssm(rqsm); + int xfqDhqd = DateUtil.compare(DateUtil.parse(plExcel.getXfqDhqd()), DateUtil.parse(dmCzplpNewOld.getXfqDhqd()), "MM"); + if (xfqDhqd == 0) { + xfqDhqd = DateUtil.compare(DateUtil.parse(plExcel.getXfqDhqd()), DateUtil.parse(dmCzplpNewOld.getXfqDhqd())); + if (xfqDhqd != 0) { + rqsm = "变更"; + rq = dmCzplpNewOld.getXfqDhqd() + " " + plExcel.getXfqDhqd(); + } + } else if (xfqDhqd < 0) { + rqsm = "托期"; + rq = dmCzplpNewOld.getXfqDhqd() + " " + plExcel.getXfqDhqd(); + } else if (xfqDhqd > 0) { + rqsm = "延期"; + rq = dmCzplpNewOld.getXfqDhqd() + " " + plExcel.getXfqDhqd(); + } + dmCzplpNew.setXfqDhqd1(rq); + dmCzplpNew.setXfqDhqd1sm(rqsm); + return dmCzplpNew; + } + + @Override + public Map getCzplBase(Map map) { + Map returnMap = new HashMap(); + List cbbm = dmCbxxpService.list(new QueryWrapper().orderBy(true, true, "cbbm")); + returnMap.put("cbbm", cbbm); + return returnMap; + } + + @Override + public List getCzplList(Map map) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq(StrUtil.isNotEmpty((String) map.get("dcch")), "dc_ch", (String) map.get("dcch")); + qw.eq(StrUtil.isNotEmpty((String) map.get("dcfd")), "dc_fd", (String) map.get("dcfd")); + qw.orderBy(true, true, "dc_fd"); + List list = this.list(qw); + return list; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void czPlupdate(List list) { + this.updateBatchById(list); + } +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmCzplpServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmCzplpServiceImpl.java new file mode 100644 index 0000000..a3be37a --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmCzplpServiceImpl.java @@ -0,0 +1,20 @@ +package com.dsic.gj_erp.service.jcsj.impl; + +import com.dsic.gj_erp.bean.jcsj.DmCzplp; +import com.dsic.gj_erp.mapper.jcsj.DmCzplpMapper; +import com.dsic.gj_erp.service.jcsj.DmCzplpService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-11 + */ +@Service +public class DmCzplpServiceImpl extends ServiceImpl implements DmCzplpService { + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmGcrlServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmGcrlServiceImpl.java new file mode 100644 index 0000000..29125db --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmGcrlServiceImpl.java @@ -0,0 +1,73 @@ +package com.dsic.gj_erp.service.jcsj.impl; + + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jcsj.EmGcrl; +import com.dsic.gj_erp.bean.jcsj.EmSbcnp; +import com.dsic.gj_erp.dao.jcsj.EmGcrlRepository; +import com.dsic.gj_erp.mapper.jcsj.EmGcrlMapper; +import com.dsic.gj_erp.service.jcsj.EmGcrlService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.Year; +import java.util.Date; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Service +public class EmGcrlServiceImpl extends ServiceImpl implements EmGcrlService { + + @Resource + EmGcrlMapper emGcrlMapper; + @Resource + EmGcrlRepository emGcrlRepository; + + + @Override + public List getList(JSONObject json) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(StringUtils.isNotEmpty(json.getString("nf"))){ + queryWrapper.eq("NF",json.getString("nf")); + } + List emGcrls=emGcrlMapper.selectList(queryWrapper); + return emGcrls; + } + + + + @Override + public void update(List emGcrls) { + // emGcrlRepository.saveAll(emGcrls); + updateBatchById(emGcrls); + } + + @Override + public void generate() { + String nf=Year.now().toString(); + List emGcrlRepositoryByNf=emGcrlRepository.findByNf(nf); + if (ObjectUtil.isEmpty(emGcrlRepositoryByNf)){ + EmGcrl emGcrl=new EmGcrl(); + Date date = new Date();//获取当前时间 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");//定义日期格式 + String dateString = dateFormat.format(date); + emGcrl.setNf(nf); + emGcrl.setGl(dateString); + emGcrlMapper.insert(emGcrl); + } + } +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbcnpServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbcnpServiceImpl.java new file mode 100644 index 0000000..85565b9 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbcnpServiceImpl.java @@ -0,0 +1,62 @@ +package com.dsic.gj_erp.service.jcsj.impl; + + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jcsj.EmSbcnp; +import com.dsic.gj_erp.mapper.jcsj.EmSbcnpMapper; +import com.dsic.gj_erp.service.jcsj.EmSbcnpService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Service +public class EmSbcnpServiceImpl extends ServiceImpl implements EmSbcnpService { + + @Resource + EmSbcnpMapper emSbcnpMapper; +// @Resource +// EmSbcnpRepository emSbcnpRepository; + + @Override + public List getList(JSONObject json) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(StringUtils.isNotEmpty(json.getString("sbmc"))){ + queryWrapper.eq("SBMC",json.getString("sbmc")); + } + List emSbjbbs=emSbcnpMapper.selectList(queryWrapper); + return emSbjbbs; + } + + @Override + public void save(List emSbcnps) { + List saveList= emSbcnps.stream().filter(emSbcnp -> StringUtils.isNotEmpty(emSbcnp.getSbbh())).collect(Collectors.toList()); + saveBatch(saveList); + } + + @Override + public void update(List emSbcnps) { + //emSbcnpRepository.saveAll(emSbcnps); + updateBatchById(emSbcnps); + } + + @Override + public void delete(List emSbcnps) { + // emSbcnpRepository.deleteAll(emSbcnps); + List idList=emSbcnps.stream().map(EmSbcnp::getSbbh).collect(Collectors.toList()); + emSbcnpMapper.deleteBatchIds(idList); + } + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbjbbServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbjbbServiceImpl.java new file mode 100644 index 0000000..42f89c0 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbjbbServiceImpl.java @@ -0,0 +1,95 @@ +package com.dsic.gj_erp.service.jcsj.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jcsj.EmSbjbb; +import com.dsic.gj_erp.bean.request.EmSbjbbBean; +import com.dsic.gj_erp.dao.jcsj.EmSbjbbRepository; +import com.dsic.gj_erp.mapper.jcsj.EmSbjbbMapper; +import com.dsic.gj_erp.service.jcsj.EmSbjbbService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Service +public class EmSbjbbServiceImpl extends ServiceImpl implements EmSbjbbService { + @Resource + EmSbjbbMapper emSbjbbMapper; + @Resource + EmSbjbbRepository emSbjbbRepository; + + @Override + public List getList(EmSbjbbBean emSbjbbBean) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + String sbbh=emSbjbbBean.getSbbh(); + String szcs=emSbjbbBean.getSzcs(); + String gysbm=emSbjbbBean.getGysbm(); + if(StringUtils.isNotEmpty(sbbh)){ + queryWrapper.eq("SBBH",sbbh); + } + if(StringUtils.isNotEmpty(szcs)){ + queryWrapper.eq("SZCS",szcs); + } + if(StringUtils.isNotEmpty(gysbm)){ + queryWrapper.eq("GYSBM",gysbm); + } + queryWrapper.orderByDesc("GRRQ"); + List emSbjbbs=emSbjbbMapper.selectList(queryWrapper); + return emSbjbbs; + } + + @Override + public void save(List emSbjbbs, HttpServletRequest request) { + String yhms=(String) request.getAttribute("yhms"); + emSbjbbs.forEach(emSbjbb -> { + if (StringUtils.isNotEmpty(emSbjbb.getSbbh())){ + Date date = new Date();//获取当前时间 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");//定义日期格式 + String dateString = dateFormat.format(date); + emSbjbb.setZdsj(dateString); + emSbjbb.setZdry(yhms); + } + }); + saveBatch(emSbjbbs); + } + + @Override + public void update(List emSbjbbs) { + // update(emSbjbbs); + updateBatchById(emSbjbbs); + } + + @Override + public void delete(List emSbjbbs) { + List idList=emSbjbbs.stream().map(EmSbjbb::getSbbh).collect(Collectors.toList()); + emSbjbbMapper.deleteBatchIds(idList); + } + + @Override + public List getGYS() { + List emSbjbbs=emSbjbbRepository.gys(); + return emSbjbbs; + } + + @Override + public List getSBLX() { + List emSbjbbs=emSbjbbRepository.sblx(); + return emSbjbbs; + } +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbrydypServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbrydypServiceImpl.java new file mode 100644 index 0000000..2355052 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbrydypServiceImpl.java @@ -0,0 +1,80 @@ +package com.dsic.gj_erp.service.jcsj.impl; + + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jcsj.EmSbrydyp; +import com.dsic.gj_erp.dao.jcsj.EmSbrydypRepository; +import com.dsic.gj_erp.mapper.jcsj.EmSbrydypMapper; +import com.dsic.gj_erp.service.jcsj.EmSbrydypService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Service +public class EmSbrydypServiceImpl extends ServiceImpl implements EmSbrydypService { + @Resource + EmSbrydypMapper emSbrydypMapper; + @Resource + EmSbrydypRepository emSbrydypRepository; + + @Override + public List getList(JSONObject json) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(StringUtils.isNotEmpty(json.getString("sbmc"))){ + queryWrapper.eq("SBMC",json.getString("sbmc")); + } + List emSbjbbs=emSbrydypMapper.selectList(queryWrapper); + return emSbjbbs; + } + + @Override + public void save(List emSbrydyps, HttpServletRequest request) { + String yhms=(String) request.getAttribute("yhms"); + emSbrydyps.forEach(emSbrydyp -> { + if (StringUtils.isNotEmpty(emSbrydyp.getSbbh())&&StringUtils.isNotEmpty(emSbrydyp.getRymc())){ + emSbrydyp.setRymc(yhms); + //emSbrydypMapper.insert(emSbrydyp); + } + }); + saveBatch(emSbrydyps); + } + + @Override + public void update(List emSbcnps) { + updateBatchById(emSbcnps); + } + + @Override + public void delete(List emSbcnps) { + // List idList=emSbcnps.stream().map(EmSbrydyp::getSbbh).collect(Collectors.toList()); + // emSbrydypRepository.deleteAll(emSbcnps); + QueryWrapper emSbrydypQueryWrapper=new QueryWrapper<>(); + for (EmSbrydyp emSbrydyp:emSbcnps) { + emSbrydypQueryWrapper.eq("SBBH",emSbrydyp.getSbbh()); + emSbrydypQueryWrapper.eq("RYMC",emSbrydyp.getRymc()); + emSbrydypQueryWrapper.or(); + } + emSbrydypMapper.delete(emSbrydypQueryWrapper); + } + + @Override + public List getRYList() { + List mapList=emSbrydypRepository.getRYList(); + return mapList; + } +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbwxjhServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbwxjhServiceImpl.java new file mode 100644 index 0000000..b37d36e --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbwxjhServiceImpl.java @@ -0,0 +1,76 @@ +package com.dsic.gj_erp.service.jcsj.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jcsj.EmSbwxjh; +import com.dsic.gj_erp.bean.request.EmSbwxjhBean; +import com.dsic.gj_erp.mapper.jcsj.EmSbwxjhMapper; +import com.dsic.gj_erp.service.jcsj.EmSbwxjhService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Service +public class EmSbwxjhServiceImpl extends ServiceImpl implements EmSbwxjhService { + @Resource + EmSbwxjhMapper emSbwxjhMapper; +// @Resource +// EmSbwxjhRepository emSbwxjhRepository; + + @Override + public List getList(EmSbwxjhBean emSbwxjhBean) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + String sbbh=emSbwxjhBean.getSbbh(); + String beginTime=emSbwxjhBean.getBeginTime(); + String endTime=emSbwxjhBean.getEndTime(); + if(StringUtils.isNotEmpty(sbbh)){ + queryWrapper.eq("SBBH",sbbh); + } + if(StringUtils.isNotEmpty(beginTime)){ + queryWrapper.ge("kssj_jh",beginTime); + } + if(StringUtils.isNotEmpty(endTime)){ + queryWrapper.le("jssj_jh",endTime); + } + List emSbjbbs=emSbwxjhMapper.selectList(queryWrapper); + return emSbjbbs; + } + + @Override + public void save(List emSbwxjhs, HttpServletRequest request) { + String yhms=(String) request.getAttribute("yhdm"); + emSbwxjhs.forEach(emSbjbb -> { + if (StringUtils.isNotEmpty(emSbjbb.getSbbh())){ + emSbjbb.setFzr(yhms); + // emSbwxjhMapper.insert(emSbjbb); + } + }); + saveBatch(emSbwxjhs); + } + + @Override + public void update(List emSbwxjhs) { + // emSbwxjhRepository.saveAll(emSbwxjhs); + updateBatchById(emSbwxjhs); + } + + @Override + public void delete(List emSbwxjhs) { + List idList=emSbwxjhs.stream().map(EmSbwxjh::getId).collect(Collectors.toList()); + emSbwxjhMapper.deleteBatchIds(idList); + //emSbwxjhRepository.deleteAll(emSbwxjhs); + } +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/DmDhqdpService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/DmDhqdpService.java new file mode 100644 index 0000000..64f51b0 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/DmDhqdpService.java @@ -0,0 +1,33 @@ +package com.dsic.gj_erp.service.jhgk; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jcsj.EmSbjbb; +import com.dsic.gj_erp.bean.jhgk.DmDhqdp; +import com.dsic.gj_erp.bean.jhgk.DmXbjh; +import com.dsic.gj_erp.bean.request.EmSbjbbBean; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmDhqdpService extends IService { + List getList(JSONObject json); + + void save(List dmDhqdps); + + List upload(MultipartFile file) throws IOException; + + void sh(List dmDhqdps); + + void tj(List dmXbjhs); +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/DmJgxywrybService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/DmJgxywrybService.java new file mode 100644 index 0000000..cdd9cfc --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/DmJgxywrybService.java @@ -0,0 +1,16 @@ +package com.dsic.gj_erp.service.jhgk; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jhgk.DmJgxywryb; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmJgxywrybService extends IService { + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/DmJtsyjhService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/DmJtsyjhService.java new file mode 100644 index 0000000..5239da3 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/DmJtsyjhService.java @@ -0,0 +1,29 @@ +package com.dsic.gj_erp.service.jhgk; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jhgk.DmJtsyjh; +import com.dsic.gj_erp.bean.jhgk.DmXbjh; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmJtsyjhService extends IService { + + List getList(JSONObject json); + + List upload(MultipartFile file) throws IOException; + + void save(List dmJtsyjhs); + + void tj(List dmJtsyjhs); +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java new file mode 100644 index 0000000..ca4d401 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java @@ -0,0 +1,16 @@ +package com.dsic.gj_erp.service.jhgk; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jhgk.DmSygdMx; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmSygdMxService extends IService { + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdService.java new file mode 100644 index 0000000..ed22dbf --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdService.java @@ -0,0 +1,16 @@ +package com.dsic.gj_erp.service.jhgk; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jhgk.DmSygd; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmSygdService extends IService { + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/DmTzjhService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/DmTzjhService.java new file mode 100644 index 0000000..0f3bb42 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/DmTzjhService.java @@ -0,0 +1,24 @@ +package com.dsic.gj_erp.service.jhgk; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jcsj.EmSbjbb; +import com.dsic.gj_erp.bean.jhgk.DmTzjh; +import com.dsic.gj_erp.bean.request.EmSbjbbBean; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmTzjhService extends IService { + List getList(JSONObject json); + + void sh(List dmTzjhs); +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/DmXbjhService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/DmXbjhService.java new file mode 100644 index 0000000..84326e5 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/DmXbjhService.java @@ -0,0 +1,27 @@ +package com.dsic.gj_erp.service.jhgk; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jhgk.DmXbjh; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmXbjhService extends IService { + List getList(JSONObject json); + + List upload(MultipartFile file) throws IOException; + + void save(List dmXbjhs); + + void tj(List dmXbjhs); +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/DmZrcjhService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/DmZrcjhService.java new file mode 100644 index 0000000..8fb5ca2 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/DmZrcjhService.java @@ -0,0 +1,30 @@ +package com.dsic.gj_erp.service.jhgk; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jhgk.DmXbjh; +import com.dsic.gj_erp.bean.jhgk.DmZrcjh; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +public interface DmZrcjhService extends IService { + List getList(JSONObject json); + + List upload(MultipartFile file) throws IOException; + + void save(List dmZrcjhs); + + void tj(List dmZrcjhs); + + void sh(List dmZrcjhs); +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmDhqdpServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmDhqdpServiceImpl.java new file mode 100644 index 0000000..116598f --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmDhqdpServiceImpl.java @@ -0,0 +1,137 @@ +package com.dsic.gj_erp.service.jhgk.impl; + + +import cn.hutool.poi.excel.ExcelReader; +import cn.hutool.poi.excel.ExcelUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jcsj.EmSbcnp; +import com.dsic.gj_erp.bean.jhgk.DmDhqdp; +import com.dsic.gj_erp.bean.jhgk.DmXbjh; +import com.dsic.gj_erp.mapper.jhgk.DmDhqdpMapper; +import com.dsic.gj_erp.service.jhgk.DmDhqdpService; +import com.google.common.collect.Maps; +import jdk.nashorn.internal.ir.annotations.Reference; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Service +public class DmDhqdpServiceImpl extends ServiceImpl implements DmDhqdpService { + @Resource + DmDhqdpMapper dmDhqdpMapper; + + @Override + public List getList(JSONObject json) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(StringUtils.isNotEmpty(json.getString("dcCh"))){ + queryWrapper.eq("DC_CH",json.getString("dcCh")); + } + if(StringUtils.isNotEmpty(json.getString("Zt"))){ + queryWrapper.eq("ZT",json.getString("Zt")); + } + List dmDhqdps=dmDhqdpMapper.selectList(queryWrapper); + return dmDhqdps; + } + + @Override + public void save(List dmDhqdps) { + saveBatch(dmDhqdps); + } + + @Override + public List upload(MultipartFile file) throws IOException { + ExcelReader reader= ExcelUtil.getReader(file.getInputStream()); + Map alias = Maps.newLinkedHashMap(); + alias.put("船号", "dcCh"); + alias.put("订货清单号", "qdh"); + alias.put("期次", "qc"); + alias.put(" 材质\n" + + "MATERIAL", "wpxh"); + // + alias.put("厚度\r\n" + + "THICK.\n" + + "mm", "thickness"); + alias.put("宽度\r\n" + + "WIDTH\n" + + "mm", "width"); + alias.put("长度\r\n" + + "LENGTH\n" + + "mm", "length"); + alias.put("重量\r\n" + + "吨/张\n" + + "WEIGHT\n" + + "TON/PIECE\r", "weight"); + // + alias.put("设计数量\n" + + "张\n" + + "DESIGN\n" + + "PIECE", "sjsl"); + alias.put("裕量\n" + + "张\n" + + "MARGIN\n" + + "PIECE", "yl"); + alias.put("总数量\n" + + "张\n" + + "TOTAL\n" + + "PIECE", "zsl"); + alias.put("总重量\n" + + "吨\n" + + "TOTAL\n" + + "TON ", "zzl"); + alias.put("利库数量\n" + + "张\n" + + "STORE\n" + + "PIECE", "lksl"); + alias.put("利库重量\n" + + "吨\n" + + "STORE\n" + + "TON", "lkzl"); + alias.put("实订数量\n" + + "张\n" + + "ORDER\n" + + "PIECE", "sdzs"); + alias.put("实订重量\n" + + "吨\n" + + "ORDER\n" + + "TON", "sdzl"); + alias.put("备注\n" + + "NOTE", "bz"); + // alias.put("状态", "zt"); + reader.setHeaderAlias(alias); + List dmDhqdps= reader.readAll(DmDhqdp.class); + return dmDhqdps; + } + + @Override + public void sh(List dmDhqdps) { + dmDhqdps.forEach(dmZrcjh -> { + dmZrcjh.setZt("2"); + }); + updateBatchById(dmDhqdps); + } + + @Override + public void tj(List dmXbjhs) { + dmXbjhs.forEach(dmZrcjh -> { + String zt=dmZrcjh.getZt(); + String setZt=zt.equals("1")?"0":"1"; + dmZrcjh.setZt(setZt); + }); + updateBatchById(dmXbjhs); + } +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmJgxywrybServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmJgxywrybServiceImpl.java new file mode 100644 index 0000000..d18f49e --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmJgxywrybServiceImpl.java @@ -0,0 +1,21 @@ +package com.dsic.gj_erp.service.jhgk.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jhgk.DmJgxywryb; +import com.dsic.gj_erp.mapper.jhgk.DmJgxywrybMapper; +import com.dsic.gj_erp.service.jhgk.DmJgxywrybService; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Service +public class DmJgxywrybServiceImpl extends ServiceImpl implements DmJgxywrybService { + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmJtsyjhServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmJtsyjhServiceImpl.java new file mode 100644 index 0000000..f7ab918 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmJtsyjhServiceImpl.java @@ -0,0 +1,87 @@ +package com.dsic.gj_erp.service.jhgk.impl; + + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jhgk.DmJtsyjh; +import com.dsic.gj_erp.bean.jhgk.DmZrcjh; +import com.dsic.gj_erp.dao.jhgk.DmJtsyjhRepository; +import com.dsic.gj_erp.mapper.jhgk.DmJtsyjhMapper; +import com.dsic.gj_erp.service.jhgk.DmJtsyjhService; +import com.dsic.gj_erp.util.ExcelUtil; +import com.google.common.collect.Lists; +import org.apache.commons.lang3.StringUtils; +import org.modelmapper.ModelMapper; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Service +public class DmJtsyjhServiceImpl extends ServiceImpl implements DmJtsyjhService { + @Resource + DmJtsyjhMapper dmJtsyjhMapper; + @Resource + ModelMapper modelMapper; + + + @Override + public List getList(JSONObject json) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(StringUtils.isNotEmpty(json.getString("dcCh"))){ + queryWrapper.eq("dc_ch",json.getString("dcCh")); + } + if(StringUtils.isNotEmpty(json.getString("Zt"))){ + queryWrapper.eq("zt",json.getString("Zt")); + } + List dmTzjhs=dmJtsyjhMapper.selectList(queryWrapper); + return dmTzjhs; + } + + @Override + public List upload(MultipartFile file) throws IOException { + List> list= ExcelUtil.readJTSYJH(file); + List dmJtsyjhs=new ArrayList<>(); + list.forEach(stringObjectMap -> { + String[] fds=stringObjectMap.get("dcFd").toString().split("/"); + for (String fd:fds) { + DmJtsyjh dmZrcjh = modelMapper.map(stringObjectMap, DmJtsyjh.class); + dmZrcjh.setDcFd(fd); + dmJtsyjhs.add(dmZrcjh); + } + }); + return dmJtsyjhs; + } + + @Override + public void save(List dmJtsyjhs) { + saveBatch(dmJtsyjhs); + List> lists = Lists.partition(dmJtsyjhs, 300); + for (List list:lists) { + dmJtsyjhMapper.updateCzplpNEW(list); + } + } + + @Override + public void tj(List dmJtsyjhs) { + dmJtsyjhs.forEach(dmXbjh -> { + dmXbjh.setZt("1"); + }); + updateBatchById(dmJtsyjhs); + } + + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java new file mode 100644 index 0000000..418515b --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java @@ -0,0 +1,21 @@ +package com.dsic.gj_erp.service.jhgk.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jhgk.DmSygdMx; +import com.dsic.gj_erp.mapper.jhgk.DmSygdMxMapper; +import com.dsic.gj_erp.service.jhgk.DmSygdMxService; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Service +public class DmSygdMxServiceImpl extends ServiceImpl implements DmSygdMxService { + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdServiceImpl.java new file mode 100644 index 0000000..41bcc43 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdServiceImpl.java @@ -0,0 +1,21 @@ +package com.dsic.gj_erp.service.jhgk.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jhgk.DmSygd; +import com.dsic.gj_erp.mapper.jhgk.DmSygdMapper; +import com.dsic.gj_erp.service.jhgk.DmSygdService; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Service +public class DmSygdServiceImpl extends ServiceImpl implements DmSygdService { + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmTzjhServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmTzjhServiceImpl.java new file mode 100644 index 0000000..0a4626c --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmTzjhServiceImpl.java @@ -0,0 +1,53 @@ +package com.dsic.gj_erp.service.jhgk.impl; + + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jhgk.DmTzjh; +import com.dsic.gj_erp.mapper.jhgk.DmTzjhMapper; +import com.dsic.gj_erp.service.jhgk.DmTzjhService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Service +public class DmTzjhServiceImpl extends ServiceImpl implements DmTzjhService { + + @Resource + DmTzjhMapper dmTzjhMapper; +// @Resource +// DmTzjhRepository dmTzjhRepository; + + @Override + public List getList(JSONObject json) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(StringUtils.isNotEmpty(json.getString("dcCh"))){ + queryWrapper.eq("DC_CH",json.getString("dcCh")); + } + if(StringUtils.isNotEmpty(json.getString("Zt"))){ + queryWrapper.eq("zt",json.getString("Zt")); + } + List dmTzjhs=dmTzjhMapper.selectList(queryWrapper); + return dmTzjhs; + } + + @Override + public void sh(List dmTzjhs) { + dmTzjhs.forEach(dmTzjh -> { + dmTzjh.setZt("1"); + }); +// dmTzjhRepository.saveAll(dmTzjhs); + updateBatchById(dmTzjhs); + } +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmXbjhServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmXbjhServiceImpl.java new file mode 100644 index 0000000..584fcda --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmXbjhServiceImpl.java @@ -0,0 +1,75 @@ +package com.dsic.gj_erp.service.jhgk.impl; + + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jhgk.DmXbjh; +import com.dsic.gj_erp.mapper.jhgk.DmXbjhMapper; +import com.dsic.gj_erp.service.jhgk.DmXbjhService; +import com.dsic.gj_erp.util.ExcelUtil; +import org.apache.commons.lang3.StringUtils; +import org.modelmapper.ModelMapper; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Service +public class DmXbjhServiceImpl extends ServiceImpl implements DmXbjhService { + @Resource + DmXbjhMapper dmXbjhMapper; + @Resource + ModelMapper modelMapper; + + @Override + public List getList(JSONObject json) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(StringUtils.isNotEmpty(json.getString("dcCh"))){ + queryWrapper.eq("dc_ch",json.getString("dcCh")); + } + if(StringUtils.isNotEmpty(json.getString("Zt"))){ + queryWrapper.eq("zt",json.getString("Zt")); + } + List dmTzjhs=dmXbjhMapper.selectList(queryWrapper); + return dmTzjhs; + } + + @Override + public List upload(MultipartFile file) throws IOException { + // ExcelReader reader = ExcelUtil.getReader(file.getInputStream()); + List> mapList= ExcelUtil.readDmXbjh(file); + + List list=new ArrayList<>(); + mapList.forEach(stringObjectMap -> { + DmXbjh dmXbjh = modelMapper.map(stringObjectMap, DmXbjh.class); + list.add(dmXbjh); + }); + return list; + } + + @Override + public void save(List dmXbjhs) { + saveBatch(dmXbjhs); + } + + @Override + public void tj(List dmXbjhs) { + dmXbjhs.forEach(dmXbjh -> { + dmXbjh.setZt("1"); + }); + updateBatchById(dmXbjhs); + } +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmZrcjhServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmZrcjhServiceImpl.java new file mode 100644 index 0000000..61edd0d --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmZrcjhServiceImpl.java @@ -0,0 +1,93 @@ +package com.dsic.gj_erp.service.jhgk.impl; + + +import cn.hutool.poi.excel.ExcelReader; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jhgk.DmJtsyjh; +import com.dsic.gj_erp.bean.jhgk.DmXbjh; +import com.dsic.gj_erp.bean.jhgk.DmZrcjh; +import com.dsic.gj_erp.mapper.jhgk.DmZrcjhMapper; +import com.dsic.gj_erp.service.jhgk.DmZrcjhService; +import com.dsic.gj_erp.util.ExcelUtil; +import com.google.common.collect.Lists; +import org.apache.commons.lang3.StringUtils; +import org.modelmapper.ModelMapper; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Service +public class DmZrcjhServiceImpl extends ServiceImpl implements DmZrcjhService { + @Resource + DmZrcjhMapper dmZrcjhMapper; + @Resource + ModelMapper modelMapper; + + @Override + public List getList(JSONObject json) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(StringUtils.isNotEmpty(json.getString("dcCh"))){ + queryWrapper.eq("DC_CH",json.getString("dcCh")); + } + if(StringUtils.isNotEmpty(json.getString("Zt"))){ + queryWrapper.eq("zt",json.getString("Zt")); + } + List dmZrcjhs=dmZrcjhMapper.selectList(queryWrapper); + return dmZrcjhs; + } + + @Override + public List upload(MultipartFile file) throws IOException { + List> list= ExcelUtil.readZRCJH(file); + List dmZrcjhs=new ArrayList<>(); + list.forEach(stringObjectMap -> { + DmZrcjh dmZrcjh = modelMapper.map(stringObjectMap, DmZrcjh.class); + dmZrcjhs.add(dmZrcjh); + }); + return dmZrcjhs; + } + + @Override + public void save(List dmZrcjhs) { + saveBatch(dmZrcjhs); + + List> lists = Lists.partition(dmZrcjhs, 300); + for (List list:lists) { + dmZrcjhMapper.updateCzplpNEW(list); + } + + } + + @Override + public void tj(List dmZrcjhs) { + dmZrcjhs.forEach(dmZrcjh -> { + String zt=dmZrcjh.getZt(); + String setZt=zt.equals("1")?"0":"1"; + dmZrcjh.setZt(setZt); + }); + updateBatchById(dmZrcjhs); + } + + @Override + public void sh(List dmZrcjhs) { + dmZrcjhs.forEach(dmZrcjh -> { + dmZrcjh.setZt("2"); + }); + updateBatchById(dmZrcjhs); + } +} diff --git a/src/main/java/com/dsic/gj_erp/service/sy/SYService.java b/src/main/java/com/dsic/gj_erp/service/sy/SYService.java new file mode 100644 index 0000000..61794f2 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/sy/SYService.java @@ -0,0 +1,416 @@ +package com.dsic.gj_erp.service.sy; + + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.dsic.gj_erp.bean.sy.*; +import com.dsic.gj_erp.dao.sy.*; +import com.querydsl.core.Tuple; +import com.querydsl.core.types.dsl.BooleanExpression; +import com.querydsl.jpa.impl.JPAQueryFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.RequestBody; + +import javax.annotation.PostConstruct; +import javax.persistence.EntityManager; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 系统安全子系统处理逻辑 + */ +@Service +public class SYService { + + @Autowired + Dm_zhbmlbpRepository dm_zhbmlbpRepository; + @Autowired + Dm_zhbmpRepository dm_zhbmpRepository; + @Autowired + SyworkgpRepository syworkgpRepository; + @Autowired + SyuirpRepository syuirpRepository; + @Autowired + SyigrpRepository syigrpRepository; + @Autowired + SyimrpRepository syimrpRepository; + @Autowired + SyifrpRepository syifrpRepository; + @Autowired + SyuserpRepository syuserpRepository; + @Autowired + SyfunpRepository syfunpRepository; + @Autowired + DmBhdypRepository dmBhdypRepository; + @Autowired + DmBhsjpRepository dmBhsjpRepository; + @Autowired + DmBhzybRepository dmBhzybRepository; + @Autowired + private EntityManager entityManager; + private JPAQueryFactory queryFactory; + + @PostConstruct + public void initFactory() { + queryFactory = new JPAQueryFactory(entityManager); + } + + public List getWorkGroupList(String yhdm) { + QSyuirp syuirp = QSyuirp.syuirp; + QSyworkgp syworkgp = QSyworkgp.syworkgp; + if (StringUtils.isEmpty(yhdm)) { + return queryFactory.select(syworkgp).from(syworkgp).orderBy(syworkgp.JKDBM.asc()).fetch(); + } else { + return queryFactory.select(syworkgp).from(syworkgp).leftJoin(syuirp).on(syuirp.GWDM.eq(syworkgp.JKDBM)).where(syuirp.YHDM.eq(yhdm)).orderBy(syworkgp.JKDBM.asc()).where().fetch(); + } + } + + public Syworkgp addWordGroup(Syworkgp syworkgp) { + return syworkgpRepository.save(syworkgp); + } + + @Transactional + public void deleteWorkGroup(Syworkgp syworkgp) { + syuirpRepository.deleteByGWDM(syworkgp.getJKDBM()); + syigrpRepository.deleteByGWDM(syworkgp.getJKDBM()); + syimrpRepository.deleteByGWDM(syworkgp.getJKDBM()); + syifrpRepository.deleteByGWDM(syworkgp.getJKDBM()); + syworkgpRepository.deleteById(syworkgp.getJKDBM()); + } + + @Transactional + public Syworkgp updateWorkGroup(Syworkgp osyworkgp, Syworkgp nsyworkgp) { + QSyworkgp syworkgp = QSyworkgp.syworkgp; + QSyuirp syuirp = QSyuirp.syuirp; + QSyigrp syigrp = QSyigrp.syigrp; + QSyimrp syimrp = QSyimrp.syimrp; + QSyifrp syifrp = QSyifrp.syifrp; + String newgwdm = nsyworkgp.getJKDBM(); + String gwdm = osyworkgp.getJKDBM(); + queryFactory.update(syuirp).set(syuirp.GWDM, newgwdm).where(syuirp.GWDM.eq(gwdm)).execute(); + queryFactory.update(syigrp).set(syigrp.GWDM, newgwdm).where(syigrp.GWDM.eq(gwdm)).execute(); + queryFactory.update(syimrp).set(syimrp.GWDM, newgwdm).where(syimrp.GWDM.eq(gwdm)).execute(); + queryFactory.update(syifrp).set(syifrp.GWDM, newgwdm).where(syifrp.GWDM.eq(gwdm)).execute(); + syworkgpRepository.delete(osyworkgp); + return syworkgpRepository.save(nsyworkgp); + } + + + public Map> getUserZHBM() { + Map> dataMap = new HashMap<>(); + dataMap.put("yhlx", dm_zhbmpRepository.findByBMLB("YHLX")); + dataMap.put("spqx", dm_zhbmpRepository.findByBMLB("SPQX")); + List bmbmList = new ArrayList<>(); + for (Map map : dm_zhbmpRepository.findBMBM()) { + Dm_zhbmp dm_zhbmp = new Dm_zhbmp(); + dm_zhbmp.setBM((String) map.get("BM")); + dm_zhbmp.setBmsm((String) map.get("MC")); + bmbmList.add(dm_zhbmp); + } + dataMap.put("bmbm", bmbmList); + List zxtBmbmList = new ArrayList<>(); + for (Sysysp sysysp : getZxtList(null)) { + Dm_zhbmp dm_zhbmp = new Dm_zhbmp(); + dm_zhbmp.setBM(sysysp.getZXTDM()); + dm_zhbmp.setBmsm(sysysp.getZXTMS()); + zxtBmbmList.add(dm_zhbmp); + } + dataMap.put("zxtbm", zxtBmbmList); + return dataMap; + } + + + public List getUserList(String gwdm, Integer sort) { + QSyuirp syuirp = QSyuirp.syuirp; + QSyuserp syuserp = QSyuserp.syuserp; + List userlist = new ArrayList<>(); + if (StringUtils.isEmpty(gwdm)) { + userlist = queryFactory.select(syuserp).from(syuserp).where().orderBy(sort != 1 ? syuserp.YHDM.asc() : syuserp.BMBM.asc()).fetch(); + } else { + userlist = queryFactory.select(syuserp).from(syuserp, syuirp).where(syuserp.YHDM.eq(syuirp.YHDM).and(syuirp.GWDM.eq(gwdm))).orderBy(syuserp.BMBM.asc()).fetch(); + } + return userlist; + } + /** + * 公共函数:取最大单据号(导入图纸时,生成主键流水号) + * @param zxt 子系统编码 + * @param jg 机构码 + * @param bmm 编码名称 + * @return 最大单据号(流水号) + */ + @Transactional(propagation = Propagation.REQUIRES_NEW,rollbackFor = Exception.class) + public String f_getpjh(String zxt,String jg,String bmm){ + entityManager.clear(); // 清除缓存 + QDmBhdyp bhdy=QDmBhdyp.dmBhdyp; + List bhdyps; + //确定编码前缀值开始 + bhdyps = queryFactory.select(bhdy).from(bhdy) + .where( + bhdy.zxtbm.eq(zxt) + .and(bhdy.jgm.eq(jg)) + .and(bhdy.bmmc.eq(bmm))) + .orderBy(bhdy.bmsx.asc()) + .fetch(); + String f_qz=bhdyps.get(0).getBmqz().trim(); // + String f_sx=bhdyps.get(0).getBmsx().trim(); // + + if(StringUtils.isEmpty(f_qz)){ + new Exception("不合要求的错误数据"); + }else { + if (f_qz.equals("年")){ + f_qz= DateUtil.format(DateUtil.date(),"yy"); + } + if (f_qz.equals("年月")){ + f_qz= DateUtil.format(DateUtil.date(),"yyMM"); + } + } + //确定编码前缀值结束 + + //生成单据号开始 + QDmBhsjp bhsjp=QDmBhsjp.dmBhsjp; + List bhsjps; + bhsjps = queryFactory.select(bhsjp).from(bhsjp).where( + bhsjp.zxtbm.eq(zxt) + .and(bhsjp.jgm.eq(jg)) + .and(bhsjp.bmmc.eq(bmm)) + .and(bhsjp.bmqz.eq(f_qz))) + .fetch(); + + if (ObjectUtil.isNotEmpty(bhsjps)){ + String f_sxh=bhsjps.get(0).getBmsxh().trim(); + f_sxh=(Integer.parseInt(f_sxh)+1)+""; + String f_nxh=f_sxh; + //使单据号满十位 + if(f_sxh.length()<10-f_qz.length()){ + int num=10-f_qz.length()-f_sxh.length(); + for (int i = 0; i < num; i++) { + f_nxh='0' +f_nxh; + } + }else { + f_nxh= f_nxh.substring(f_nxh.length() - (10 - f_qz.length())); + } + queryFactory.update(bhsjp).set(bhsjp.bmsxh, f_nxh).where(bhsjp.zxtbm.eq(zxt) + .and(bhsjp.jgm.eq(jg)) + .and(bhsjp.bmmc.eq(bmm)) + .and(bhsjp.bmqz.eq(f_qz)) + ).execute(); + + if(bmm.equals("APS")){ + return f_qz+f_nxh; + } + DmBhzyb bhzyb=new DmBhzyb(); + bhzyb.setBhzyb(zxt +jg+bmm+f_qz+f_nxh); + dmBhzybRepository.save(bhzyb); + return f_qz+f_nxh; + }else { + String f_oxh=f_sx; + + if (f_sx.length()<10-f_qz.length()){ + for (int i = 0; i < 10-f_qz.length()-f_sx.length(); i++) { + f_oxh='0' +f_oxh; + } + }else { + f_oxh=f_oxh.substring(f_oxh.length()-(10-f_qz.length())); + } + + DmBhsjp dmBhsjp=new DmBhsjp(); + dmBhsjp.setZxtbm(zxt); + dmBhsjp.setJgm(jg); + dmBhsjp.setBmmc(bmm); + dmBhsjp.setBmqz(f_qz); + dmBhsjp.setBmsxh(f_oxh); + dmBhsjpRepository.save(dmBhsjp); + if (bmm.equals("APS")){ + return f_qz+f_oxh; + } + DmBhzyb bhzyb=new DmBhzyb(); + bhzyb.setBhzyb(zxt +jg+bmm+f_qz+f_oxh); + dmBhzybRepository.save(bhzyb); + return f_qz+f_oxh; + } + } + + public List> getUserListByFunc(Syifrp syifrpBean) { + QSyuserp syuserp = QSyuserp.syuserp; + QSyuirp syuirp = QSyuirp.syuirp; + QSyifrp syifrp = QSyifrp.syifrp; + List tupleList = queryFactory.select(syuserp.BMBM, syuirp.YHDM, syuserp.YHMS, syuirp.GWDM).from(syifrp, syuirp, syuserp).where(syifrp.GWDM.eq(syuirp.GWDM).and(syuirp.YHDM.eq(syuserp.YHDM).and(syifrp.ZXTBM.eq(syifrpBean.getZXTBM()).and(syifrp.MS.eq(syifrpBean.getMS()))))).fetch(); + List bmList = dm_zhbmpRepository.findBMBM(); + List> resultList = new ArrayList>(); + for (Tuple tuple : tupleList) { + List bms = bmList.stream().filter((e) -> e.get("BM").equals(tuple.get(0, String.class))).collect(Collectors.toList()); + String bmmc = bms.size() > 0 ? (String) bms.get(0).get("MC") : ""; + String yhdm = tuple.get(1, String.class); + String yhms = tuple.get(2, String.class); + String gwdm = tuple.get(3, String.class); + List> userList = resultList.stream().filter((e) -> e.get("yhdm").equals(yhdm)).collect(Collectors.toList()); + if (userList.size() > 0) { + userList.get(0).put("gwdm", userList.get(0).get("gwdm") + ";" + gwdm); + } else { + HashMap dataMap = new HashMap<>(); + dataMap.put("bmmc", bmmc); + dataMap.put("yhdm", yhdm); + dataMap.put("yhms", yhms); + dataMap.put("gwdm", gwdm); + resultList.add(dataMap); + } + } + return resultList; + } + + public Syuserp addUser(Syuserp syuserp) { + return syuserpRepository.save(syuserp); + } + + public void deleteUser(Syuserp syuserp) { + syuserpRepository.delete(syuserp); + } + + @Transactional + public Syuserp updateUser(Syuserp osyuserp, Syuserp nsyuserp) { + QSyuirp syuirp = QSyuirp.syuirp; + queryFactory.update(syuirp).set(syuirp.YHDM, nsyuserp.getYHDM()).where(syuirp.YHDM.eq(osyuserp.getYHDM())).execute(); + syuserpRepository.delete(osyuserp); + return syuserpRepository.save(nsyuserp); + } + + public void addWorkGroupUser(@RequestBody List syuirp) { + syuirpRepository.saveAll(syuirp); + } + + public void deleteWorkGroupUser(@RequestBody List syuirp) { + syuirpRepository.deleteAll(syuirp); + } + + + public List getFzqxList(String gwdm) { + QSyigrp syigrp = QSyigrp.syigrp; + QDm_zhbmp dm_zhbmp = QDm_zhbmp.dm_zhbmp; + BooleanExpression inSys = dm_zhbmp.BM.like("IM%").or(dm_zhbmp.BM.like("SD%").or(dm_zhbmp.BM.like("MS%")) + .or(dm_zhbmp.BM.like("FP%")).or(dm_zhbmp.BM.like("HR%")).or(dm_zhbmp.BM.like("YS%")).or(dm_zhbmp.BM.like("DJ%"))); + if (StringUtils.isEmpty(gwdm)) { + return queryFactory.select(dm_zhbmp).from(dm_zhbmp).where(dm_zhbmp.BMLB.eq("BMBM").and(inSys)).fetch(); + } else { + return queryFactory.select(dm_zhbmp).from(syigrp).leftJoin(dm_zhbmp).on(dm_zhbmp.BM.eq(syigrp.ZXTDM.concat(syigrp.FZDM))).where(syigrp.GWDM.eq(gwdm).and(dm_zhbmp.BMLB.eq("BMBM")).and(inSys)).fetch(); + } + } + + public void addWorkGroupFz(List syigrp) { + syigrpRepository.saveAll(syigrp); + } + + public void deleteWorkGroupFz(@RequestBody List syigrp) { + syigrpRepository.deleteAll(syigrp); + } + + public List getZxtList(String gwdm) { + QSyimrp syimrp = QSyimrp.syimrp; + QSysysp sysysp = QSysysp.sysysp; + if (StringUtils.isEmpty(gwdm)) { + return queryFactory.select(sysysp).from(sysysp).orderBy(sysysp.YLZD1.asc()).fetch(); + } else { + return queryFactory.select(sysysp).from(sysysp).leftJoin(syimrp).on(sysysp.ZXTDM.eq(syimrp.ZXTBM)).where(syimrp.GWDM.eq(gwdm)).orderBy(sysysp.YLZD1.asc()).fetch(); + } + } + + public void addWorkGroupZxt(List syimrp) { + syimrpRepository.saveAll(syimrp); + } + + public void deleteWorkGroupZxt(@RequestBody List syimrp) { + syimrpRepository.deleteAll(syimrp); + } + + + public List getFuncList(Integer type, String gwdm) { + QSyifrp syifrp = QSyifrp.syifrp; + QSyfunp syfunp = QSyfunp.syfunp; + QSysysp sysysp = QSysysp.sysysp; + if (type != null && type == 1) { + return queryFactory.select(syfunp).from(syfunp, sysysp).where(sysysp.ZXTDM.eq(syfunp.ZXTBM)).orderBy(sysysp.YLZD1.asc()).orderBy(syfunp.YLZD3.asc()).fetch(); + } else { + if (StringUtils.isEmpty(gwdm)) { + return queryFactory.select(syfunp).from(syfunp).where(syfunp.CKDM.ne("")).orderBy(syfunp.ZXTBM.asc()).orderBy(syfunp.YLZD2.asc()).orderBy(syfunp.YLZD3.asc()).fetch(); + } else { + return queryFactory.select(syfunp).from(syfunp).leftJoin(syifrp).on(syfunp.MS.eq(syifrp.MS).and(syfunp.ZXTBM.eq(syifrp.ZXTBM))).where(syfunp.CKDM.ne("").and(syifrp.GWDM.eq(gwdm))).orderBy(syfunp.ZXTBM.asc()).orderBy(syfunp.YLZD2.asc()).orderBy(syfunp.YLZD3.asc()).fetch(); + } + } + } + + + public Syfunp addFunc(Syfunp syfunp) { + return syfunpRepository.save(syfunp); + } + + + public void deleteFunc(Syfunp syfunp) { + syfunpRepository.delete(syfunp); + } + + @Transactional + public Syfunp updateFunc(Syfunp osyfunp, Syfunp nsyfunp) { + QSyifrp syifrp = QSyifrp.syifrp; + queryFactory.update(syifrp).set(syifrp.ZXTBM, nsyfunp.getZXTBM()) + .set(syifrp.MS, nsyfunp.getMS()) + .set(syifrp.GNLB, nsyfunp.getGNLB()).where(syifrp.ZXTBM.eq(osyfunp.getZXTBM()).and(syifrp.MS.eq(osyfunp.getMS()).and(syifrp.GNLB.eq(osyfunp.getGNLB())))).execute(); + syfunpRepository.delete(osyfunp); + return syfunpRepository.save(nsyfunp); + } + + + public void addWorkGroupFunc(List Syifrp) { + syifrpRepository.saveAll(Syifrp); + } + + public void deleteWorkGroupFunc(@RequestBody List syifrp) { + syifrpRepository.deleteAll(syifrp); + } + + + public List getZhbmlbList(int sort) { + if (sort == 0) { + return dm_zhbmlbpRepository.findAll(Sort.by("LBMC").ascending()); + } else { + return dm_zhbmlbpRepository.findAll(Sort.by("BMLB").ascending()); + } + } + + public List getZhbmList(Dm_zhbmlbp zhbmlbp) { + return dm_zhbmpRepository.findByBMLB(zhbmlbp.getBMLB()); + } + + public Dm_zhbmp addZhbm(Dm_zhbmp zhbmp) { + return dm_zhbmpRepository.save(zhbmp); + } + + public void deleteZhbm(Dm_zhbmp zhbmp) { + dm_zhbmpRepository.delete(zhbmp); + } + + @Transactional + public Dm_zhbmp updateZhbm(Dm_zhbmp ozhbmp, Dm_zhbmp nzhbmp) { + dm_zhbmpRepository.delete(ozhbmp); + return dm_zhbmpRepository.save(nzhbmp); + +// if(ozhbmp.getBMLB().equals("BMBM")){ +// QSyigrp syigrp =QSyigrp.syigrp; +// queryFactory.update(syigrp).set(syigrp.FZDM, nzhbmp.getBM()).where(syigrp.ZXTDM.concat(syigrp.FZDM).eq(ozhbmp.getBM())).execute(); +// } + } + public List getALL() { + QDm_zhbmp dm_zhbmp=QDm_zhbmp.dm_zhbmp; + List fetch = queryFactory.select(dm_zhbmp).from(dm_zhbmp).fetch(); + return fetch; + } + + + +} diff --git a/src/main/java/com/dsic/gj_erp/util/CodeGenerator.java b/src/main/java/com/dsic/gj_erp/util/CodeGenerator.java new file mode 100644 index 0000000..d4f73cb --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/util/CodeGenerator.java @@ -0,0 +1,107 @@ + +package com.dsic.gj_erp.util; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.config.DataSourceConfig; +import com.baomidou.mybatisplus.generator.config.GlobalConfig; +import com.baomidou.mybatisplus.generator.config.PackageConfig; +import com.baomidou.mybatisplus.generator.config.StrategyConfig; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; + +public class CodeGenerator { + public static void main(String[] args) { + GlobalConfig config = new GlobalConfig(); + String projectPath = System.getProperty("user.dir"); + config.setActiveRecord(false)//开启AR模式 + .setAuthor("xn")//设置作者 + //生成路径(一般都是生成在此项目的src/main/java下面) + .setOutputDir(projectPath + "/src/main/java") + .setFileOverride(true)//第二次生成会把第一次生成的覆盖掉 + .setIdType(IdType.ASSIGN_UUID)//主键策略 + .setServiceName("%sService")//生成的service接口名字首字母是否为I,这样设置就没有I + .setBaseResultMap(true)//生成resultMap + .setBaseColumnList(true).//在xml中生成基础列 + setSwagger2(true); + //2、数据源配置 + DataSourceConfig dataSourceConfig = new DataSourceConfig(); + dataSourceConfig.setDbType(DbType.SQL_SERVER)//数据库类型 + .setDriverName("com.microsoft.sqlserver.jdbc.SQLServerDriver") + .setUrl("jdbc:sqlserver://localhost:1433;DatabaseName=gj_erp") //250 是 tribon + .setUsername("sa") + .setPassword("123456"); + //3、策略配置 + StrategyConfig strategyConfig = new StrategyConfig(); + strategyConfig.setCapitalMode(false)//开启全局大写命名 + //.setDbColumnUnderline(true)//表名字段名使用下划线 + .setNaming(NamingStrategy.underline_to_camel)//下划线到驼峰的命名方式 + // .setTablePrefix("tb_")//表名前缀 + .setEntityLombokModel(true)//使用lombok + .setRestControllerStyle(true) + .setInclude(new String[]{"QSyfunp"}); + + //.setInclude("表1","表2");//逆向工程使用的表 + //4、包名策略配置 + PackageConfig packageConfig = new PackageConfig(); + //设置包名的parent + packageConfig.setParent("com.dsic.xzerp") + .setMapper("mapper.scgl") + .setService("service.scgl") + .setServiceImpl("service.scgl.impl") + .setController("controller.scgl") + .setEntity("bean.scgl") + //设置xml文件的目录 + .setXml("mapper.scgl"); + //设置xml文件的目录 + +// +// packageConfig.setParent("com.dsic.xzerp") +// .setMapper("dao.gxzz.view") +// .setService("service.gxzz.view") +// .setServiceImpl("service.gxzz.view.impl") +// //.setController("controller.gxzz.jcsj") +// .setEntity("bean.gxzz.view") +// //设置xml文件的目录 +// .setXml("dao.gxzz.view"); + + +// packageConfig.setParent("com.dsic.xzerp") +// .setMapper("dao.zlgl.gcjy") +// .setService("service.zlgl.gcjy") +// .setServiceImpl("service.zlgl.gcjy.impl") +// .setController("controller.zlgl.gcjy") +// .setEntity("bean.zlgl.gcjy") +// //设置xml文件的目录 +// .setXml("dao.zlgl.gcjy"); +// packageConfig.setParent("com.dsic.xzerp") +// .setMapper("dao.gxzz.jszb") +// .setService("service.gxzz.jszb") +// .setServiceImpl("service.gxzz.jszb.impl") +// .setController("controller.gxzz.jszb") +// .setEntity("bean.gxzz.jszb") +// //设置xml文件的目录 +// .setXml("dao.gxzz"); +// +// +// packageConfig.setParent("com.dsic.xzerp") +// // .setMapper("dao.gxzz.jhsc") +// // .setService("service.gxzz.jhsc") +// // .setServiceImpl("service.gxzz.jhsc.impl") +// // .setController("controller.gxzz.jhsc") +// .setEntity("bean.gxzz.jhsc"); +// //设置xml文件的目录 +// // .setXml("dao.gxzz"); + + //5、整合配置 + AutoGenerator autoGenerator = new AutoGenerator(); + autoGenerator.setGlobalConfig(config) + .setDataSource(dataSourceConfig) + .setStrategy(strategyConfig) + .setPackageInfo(packageConfig) + ; + //6、执行 + autoGenerator.execute(); + } + +} diff --git a/src/main/java/com/dsic/gj_erp/util/ExcelUtil.java b/src/main/java/com/dsic/gj_erp/util/ExcelUtil.java new file mode 100644 index 0000000..02abc0e --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/util/ExcelUtil.java @@ -0,0 +1,273 @@ +package com.dsic.gj_erp.util; + +import com.dsic.gj_erp.bean.jhgk.DmJtsyjh; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateUtils; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class ExcelUtil { + public static Map ZRCJHKeyMap=new HashMap(){ + { + //put("状态","zt");put("周期(天)","b"); + put("船号","dcCh");put("区域","qy");put("总段号","zdh"); put("预组段","yzd");put("分段号","dcFd");put("重量","zl"); + put("批量号","dcPl");put("大组开始","kssjDz");put("钢加结束大组","gjjsDz");put("小组结束","jssjXz");put("小组周期","xzzq"); put("小组开始","kssjXz"); + put("线表重量","xbzl");put("批量表(钢加大组结束)","gjjsDzPl");put("时间差(L-P)","sjcLp");put("钢加小组结束","gjjsXz");put("批量表(钢加小组结束)","gjjsXzPl"); + put("时间差(R-S)","sjcRs"); + put("钢加开始","gjks"); put("批量表(钢加开始)","gjksPl");put("时间差(U-V)","sjcUv");put("套料图下发","xfqTlt"); + put("套料图接收","jsqTlt");put("板材领取表下发","xfqLqb");put("板材领取表接收","jsqLqb");put("零件配套表下发","xfqPtb");put("零件配套表接收","jsqPtb"); + put("订货清单号","dhqd");put("订货清单下发","xfqDhqd");put("实际订货日期","sjdhq");put("板材计划到齐","bcdq"); + } + }; + + public static List ZRCJHYearKeyList=Arrays.asList( + "大组开始","钢加结束大组","小组结束","小组开始","钢加小组结束","批量表(钢加大组结束)", + "钢加开始","批量表(钢加开始)","套料图下发","板材领取表下发","订货清单下发","实际订货日期","板材计划到齐" + ); + + public static Map JTSYJHKeyMap=new HashMap(){ + { + put("船名","dcCh");put("批量","dcPl");put("分段","dcFd"); put("计划期","jhrq");put("备注","bz"); + } + }; +// +// public static List JTSYJHHYearKeyList=Arrays.asList( +// "计划期" +// ); + + public static List> readJTSYJH(MultipartFile file) { + try { + Workbook workbook = isWorkBook(file); + // 获取第一张表 + Sheet sheet = workbook.getSheetAt(0); + // sheet.getPhysicalNumberOfRows()获取总的行数 + // 循环读取每一行 + Row headerRow = sheet.getRow(1); + Map headerMap=new HashMap<>(); + for (int index = 0; index < headerRow.getPhysicalNumberOfCells(); index++){ + headerMap.put(index,getMergedRegionValue(sheet,1,index)+""); + } + + List> mapList=new ArrayList<>(); + for (int i = 3; i < sheet.getPhysicalNumberOfRows(); i++) { + // 循环读取每一个格 + Row row = sheet.getRow(i); + // row.getPhysicalNumberOfCells()获取总的列数 + String dcch=row.getCell(0).toString(); + if (dcch.contains("合计")){ + continue; + } + Map dataMap=new HashMap<>(); + for (int index = 0; index < row.getPhysicalNumberOfCells(); index++) { + String key=headerMap.get(index); + String mapKey=JTSYJHKeyMap.get(key); + if (mapKey==null){ + continue; + } + Cell cell; + if (isMergedRow(sheet,i,index)){ + cell=getMergedRegionValue(sheet,i,index); + } + else { + cell = row.getCell(index); + cell.setCellType(CellType.STRING); + } + String value=cell+""; + if (key.equals("计划期")){ + if (StringUtils.isEmpty(value)){ + continue; + } + else { + value=date(value); + } + } + + dataMap.put(mapKey,value); + } + mapList.add(dataMap); + } + return mapList; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + public static List> readZRCJH(MultipartFile file) { + try { + List> list=new ArrayList<>(); + Workbook workbook = isWorkBook(file); + // 获取第一张表 + Sheet sheet = workbook.getSheetAt(0); + Row headerRow = sheet.getRow(0); + Map headerMap=new HashMap<>(); + for (int index = 0; index < headerRow.getPhysicalNumberOfCells(); index++){ + Cell cell = headerRow.getCell(index); + // 转换为字符串类型 + cell.setCellType(CellType.STRING); + headerMap.put(index,cell.toString().replace("\n","")); + } + + // 循环读取每一行 + for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) { + Map dataMap=new HashMap<>(); + // 循环读取每一个格 + Row row = sheet.getRow(i); + // row.getPhysicalNumberOfCells()获取总的列数 + for (int index = 0; index < row.getPhysicalNumberOfCells(); index++) { + String key=headerMap.get(index); + String mapKey=ZRCJHKeyMap.get(key); + if (mapKey==null){ + continue; + } + Cell cell; + if (isMergedRow(sheet,i,index)){ + cell=getMergedRegionValue(sheet,i,index); + } + else { + cell = row.getCell(index); + cell.setCellType(CellType.STRING); + } + String value=cell+""; + if (ZRCJHYearKeyList.contains(key)){ + value=date(value); + } + dataMap.put(mapKey,value); + } + list.add(dataMap); + } + return list; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + public static List> readDmXbjh(MultipartFile file) { + try { + Workbook workbook=isWorkBook(file); + // 获取第一张表 + Sheet sheet = workbook.getSheetAt(0); + Row monthRow=sheet.getRow(3); + Map monthMap=new HashMap<>(); + for (int index = 0; index < monthRow.getPhysicalNumberOfCells(); index++){ + Cell cell = monthRow.getCell(index); + // 转换为字符串类型 + cell.setCellType(CellType.STRING); + monthMap.put(index,cell.toString()); + } + // String year=""; + List> mapList=new ArrayList<>(); + for (int i = 4; i < sheet.getPhysicalNumberOfRows(); i++) { + Row row = sheet.getRow(i); + String dcch=row.getCell(0).toString(); + if (dcch.contains("待接")||dcch.contains("已接")||dcch.contains("合计")){ + break; + } + Map map=new HashMap<>(); + map.put("dcCh",dcch); + for (int index = 1; index < row.getPhysicalNumberOfCells(); index++) { + Cell cell = row.getCell(index); + cell.setCellType(CellType.STRING); + + String month=monthMap.get(index); + if (month.contains("计")){ + continue; + } + String cl=cell+""; + String year=getMergedRegionValue(sheet,2,index).toString(); + map.put("cl"+year.replace("年","")+String.format("%02d", Integer.parseInt(month.replace("月",""))),cl); + } + mapList.add(map); + } + return mapList; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + public static String date(String strDate){ + try { + Calendar calendar = new GregorianCalendar(1900,0,-1); + int intDay = Integer.parseInt(strDate); + Date dd = DateUtils.addDays(calendar.getTime(),intDay); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd"); + String format = simpleDateFormat.format(dd); + return format; + }catch (Exception e){ + return ""; + } + } + + public static boolean isMergedRow(Sheet sheet, int row, int column) { + int sheetMergeCount = sheet.getNumMergedRegions(); + for (int i = 0; i < sheetMergeCount; i++) { + CellRangeAddress range = sheet.getMergedRegion(i); + int firstCol = range.getFirstColumn(); + int lastCol = range.getLastColumn(); + int firstRow = range.getFirstRow(); + int lastRow = range.getLastRow(); + if (row >= firstRow && row <= lastRow) { + if (column >= firstCol && column <= lastCol) { + return true; + } + } + } + return false; + } + + public static Workbook isWorkBook(MultipartFile file) throws IOException { + Workbook workbook;// = new XSSFWorkbook(inputStream); + // 截取路径名 . 后面的后缀名,判断是xls还是xlsx + // 如果这个判断不对,就把equals换成 equalsIgnoreCase() + Pattern pattern = Pattern.compile(".*\\.xls"); + Matcher matcher = pattern.matcher(file.getOriginalFilename()); + if (matcher.matches()){ + workbook = new HSSFWorkbook(file.getInputStream()); + }else{ + workbook = new XSSFWorkbook(file.getInputStream()); + } + return workbook; + } + /** + * 获取合并单元格的值 + * @param sheet + * @param row + * @param column + * @return + */ + public static Cell getMergedRegionValue(Sheet sheet ,int row , int column){ + int sheetMergeCount = sheet.getNumMergedRegions(); + + for(int i = 0 ; i < sheetMergeCount ; i++){ + CellRangeAddress ca = sheet.getMergedRegion(i); + int firstColumn = ca.getFirstColumn(); + int lastColumn = ca.getLastColumn(); + int firstRow = ca.getFirstRow(); + int lastRow = ca.getLastRow(); + + if(row >= firstRow && row <= lastRow){ + + if(column >= firstColumn && column <= lastColumn){ + Row fRow = sheet.getRow(firstRow); + Cell fCell = fRow.getCell(firstColumn); + return fCell ; + } + } + } + + return null ; + } + +} diff --git a/src/main/java/com/dsic/gj_erp/util/JwtUtil.java b/src/main/java/com/dsic/gj_erp/util/JwtUtil.java new file mode 100644 index 0000000..c718790 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/util/JwtUtil.java @@ -0,0 +1,80 @@ +package com.dsic.gj_erp.util; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@ConfigurationProperties(prefix = "jwt") +@Component +public class JwtUtil { + + + private String secret; + private long expire; + private String header; + + /** + * 生成jwt token + */ + public String generateToken(String yhdm,String zxtdm,String yhms) { + Date nowDate = new Date(); + //过期时间 + Date expireDate = new Date(nowDate.getTime() + expire * 1000); + return Jwts.builder() + .setId(yhdm) + .setSubject(zxtdm) + .setIssuedAt(nowDate) + .claim("yhms",yhms) + .setExpiration(expireDate) + .signWith(io.jsonwebtoken.SignatureAlgorithm.HS512, secret) + .compact(); + } + + public Claims getClaimByToken(String token) { + try { + return Jwts.parser() + .setSigningKey(secret) + .parseClaimsJws(token) + .getBody(); + } catch (Exception e) { + return null; + } + } + + /** + * token是否过期 + * + * @return true:过期 + */ + public boolean isTokenExpired(Date expiration) { + return expiration.before(new Date()); + } + + public String getSecret() { + return secret; + } + + public void setSecret(String secret) { + this.secret = secret; + } + + public long getExpire() { + return expire; + } + + public void setExpire(long expire) { + this.expire = expire; + } + + public String getHeader() { + return header; + } + + public void setHeader(String header) { + this.header = header; + } + +} diff --git a/src/main/java/com/dsic/gj_erp/util/MD5Util.java b/src/main/java/com/dsic/gj_erp/util/MD5Util.java new file mode 100644 index 0000000..3d81a64 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/util/MD5Util.java @@ -0,0 +1,49 @@ +package com.dsic.gj_erp.util; + +import java.net.URLEncoder; +import java.security.MessageDigest; + +/** + * MD5加密工具类 + * + */ +public abstract class MD5Util +{ + public final static String encrypt(String text) { + + //用于加密的字符 + char md5String[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'a', 'b', 'c', 'd', 'e', 'f' }; + try { + text=URLEncoder.encode(text, "utf-8"); + //使用平台的默认字符集将此 String 编码为 byte序列,并将结果存储到一个新的 byte数组中 + byte[] btInput = text.getBytes(); + + //信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。 + MessageDigest mdInst = MessageDigest.getInstance("MD5"); + + //MessageDigest对象通过使用 update方法处理数据, 使用指定的byte数组更新摘要 + mdInst.update(btInput); + + // 摘要更新之后,通过调用digest()执行哈希计算,获得密文 + byte[] md = mdInst.digest(); + + // 把密文转换成十六进制的字符串形式 + int j = md.length; + char str[] = new char[j * 2]; + int k = 0; + for (int i = 0; i < j; i++) { // i = 0 + byte byte0 = md[i]; //95 + str[k++] = md5String[byte0 >>> 4 & 0xf]; // 5 + str[k++] = md5String[byte0 & 0xf]; // F + } + + //返回经过加密后的字符串 + return new String(str); + + } catch (Exception e) { + return null; + } + } + +} \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/util/ObjConvertUtils.java b/src/main/java/com/dsic/gj_erp/util/ObjConvertUtils.java new file mode 100644 index 0000000..fa6133f --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/util/ObjConvertUtils.java @@ -0,0 +1,73 @@ +package com.dsic.gj_erp.util; + +import org.apache.commons.lang3.StringUtils; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * 对象转换工具类 + * + * @Author xhj + * @date 2021/1/18 + */ +@SuppressWarnings("ALL") +public class ObjConvertUtils { + + /** + * 获取类的所有属性,包括父类 + * + * @param object + * @return + */ + public static Field[] getAllFields(Object object) { + Class clazz = object.getClass(); + List fieldList = new ArrayList<>(); + while (clazz != null) { + fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields()))); + clazz = clazz.getSuperclass(); + } + Field[] fields = new Field[fieldList.size()]; + fieldList.toArray(fields); + return fields; + } + + public static boolean isEmpty(Object object) { + if (object == null) { + return (true); + } + if ("".equals(object)) { + return (true); + } + if ("null".equals(object)) { + return (true); + } + return (false); + } + + public static boolean checkObjAllFieldsIsNull(Object object) { + if (null == object) { + return true; + } + + try { + for (Field f : object.getClass().getDeclaredFields()) { + f.setAccessible(true); + + System.out.print(f.getName() + ":"); + System.out.println(f.get(object)); + + if (f.get(object) != null && StringUtils.isNotBlank(f.get(object).toString())) { + return false; + } + + } + } catch (Exception e) { + e.printStackTrace(); + } + + return true; + } +} \ No newline at end of file diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties new file mode 100644 index 0000000..5710b45 --- /dev/null +++ b/src/main/resources/application-dev.properties @@ -0,0 +1,9 @@ +server.port=8081 +server.tomcat.uri-encoding=utf-8 + +spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver +spring.datasource.url=jdbc:sqlserver://localhost:1433;DatabaseName=gj_erp +spring.datasource.username=sa +spring.datasource.password=123456 + +spring.mvc.throw-exception-if-no-handler-found=true diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..ad676ec --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,30 @@ +server.tomcat.uri-encoding=utf-8 + +spring.jpa.show-sql=true +spring.jpa.open-in-view=true +spring.jackson.default-property-inclusion=always +jwt.secret=f4e2e52034348f86b67cde581c0f9e11 +jwt.expire=60000 +jwt.header=token + +spring.mvc.throw-exception-if-no-handler-found=true + +#mybatis +mybatis-plus.type-aliases-package=com.dsic.gj_erp.bean.* +mybatis-plus.mapper-locations = classpath:mappers/*/*.xml + +logging.level.com.dsic.xzerp.mapper=debug + +spring.servlet.multipart.max-file-size=500MB +spring.servlet.multipart.max-request-size=500MB +spring.servlet.multipart.enabled = true + +server.port=8081 +spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver +spring.datasource.url=jdbc:sqlserver://localhost:1433;DatabaseName=gj_erp +spring.datasource.username=sa +spring.datasource.password=gjerp + +mybatis-plus.configuration.batch-size=5000 + + diff --git a/src/main/resources/mappers/jcsj/DmCbxxpMapper.xml b/src/main/resources/mappers/jcsj/DmCbxxpMapper.xml new file mode 100644 index 0000000..1d0b7cd --- /dev/null +++ b/src/main/resources/mappers/jcsj/DmCbxxpMapper.xml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CBBM, CBMC, shry, YLZD4, s_czbh, YLZD1, bz, kgrq, ckxszt, pdrq, pswcrq, wgbs, xgr, YLZD2, bzr, xgrq, drbz, YLZD5, cjs, zt, cwfzbs, YLZD6, xbz, YLZD3, xsrq, bzrq, qgwcrq + + + + + + update DM_CBXXP + + + CBMC = #{cbmc,jdbcType=VARCHAR}, + + + CBBM = #{cbbm}, + + + YLZD1 = #{ylzd1,jdbcType=VARCHAR}, + + + YLZD2 = #{ylzd2,jdbcType=VARCHAR}, + + + YLZD3 = #{ylzd3,jdbcType=VARCHAR}, + + + YLZD4 = #{ylzd4,jdbcType=DECIMAL}, + + + YLZD5 = #{ylzd5,jdbcType=DECIMAL}, + + + YLZD6 = #{ylzd6,jdbcType=DECIMAL}, + + + xgr = #{xgr,jdbcType=VARCHAR}, + + + xgrq = #{xgrq,jdbcType=VARCHAR}, + + + qgwcrq = #{qgwcrq,jdbcType=VARCHAR}, + + + pswcrq = #{pswcrq,jdbcType=VARCHAR}, + + + zt = #{zt,jdbcType=VARCHAR}, + + + ckxszt = #{ckxszt,jdbcType=VARCHAR}, + + + wgbs = #{wgbs,jdbcType=VARCHAR}, + + + cjs = #{cjs,jdbcType=VARCHAR}, + + + s_czbh = #{sCzbh,jdbcType=VARCHAR}, + + + xbz = #{xbz,jdbcType=VARCHAR}, + + + kgrq = #{kgrq,jdbcType=VARCHAR}, + + + pdrq = #{pdrq,jdbcType=VARCHAR}, + + + xsrq = #{xsrq,jdbcType=VARCHAR}, + + + shry = #{shry,jdbcType=VARCHAR}, + + + drbz = #{drbz,jdbcType=VARCHAR}, + + + cwfzbs = #{cwfzbs,jdbcType=VARCHAR}, + + + bz = #{bz,jdbcType=VARCHAR}, + + + bzr = #{bzr,jdbcType=VARCHAR}, + + + bzrq = #{bzrq,jdbcType=VARCHAR}, + + + where CBBM = #{cbbm1} + + + diff --git a/src/main/resources/mappers/jcsj/DmCzplpMapper.xml b/src/main/resources/mappers/jcsj/DmCzplpMapper.xml new file mode 100644 index 0000000..dfd7d7e --- /dev/null +++ b/src/main/resources/mappers/jcsj/DmCzplpMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DC_CH, TJRQ, BZ, APSZDR, YLZD6, YLZD3, DC_PL_JY, LRR, JSBS, DC_PL, YLZD1, YLZD4, APSZDRQ, DC_FD, YLZD2, ID, LRRQ, scjhzt, jhyxj, YLZD5, DC_CH_JY, JSRQ, ZL + + + diff --git a/src/main/resources/mappers/jcsj/DmCzplpNewMapper.xml b/src/main/resources/mappers/jcsj/DmCzplpNewMapper.xml new file mode 100644 index 0000000..dc91c25 --- /dev/null +++ b/src/main/resources/mappers/jcsj/DmCzplpNewMapper.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DC_fd, DC_CH, DC_PL, ZL, LRR, LRRQ, BZ, qy, zdh, gdq_jt, dzjsq, dzjsq_zrc, xzjsq, xzjsq_zrc, gjks, gjks_zrc, dhqc, xfq_tlt, jsq_tlt, xfq_lqb, jsq_lqb, xfq_ptb, jsq_ptb, sl_dz, sl_xz, qtq_dz, qtq_xz, fdxqq, sjpsq, dhqd, xfq_dhqd, sjdhrq, bcdq, sjarrival, jsbs, zt, xzjsqsm, ID, xfq_lqb1sm, xfq_tlt1, dzjsq1, xfq_tltsm, dzjsqsm, gjks1, xfq_dhqd1, gjkssm, xzjsq1, xfq_dhqd1sm, xfq_lqb1 + + + diff --git a/src/main/resources/mappers/jcsj/EmGcrlMapper.xml b/src/main/resources/mappers/jcsj/EmGcrlMapper.xml new file mode 100644 index 0000000..aa1ecea --- /dev/null +++ b/src/main/resources/mappers/jcsj/EmGcrlMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/main/resources/mappers/jcsj/EmSbcnpMapper.xml b/src/main/resources/mappers/jcsj/EmSbcnpMapper.xml new file mode 100644 index 0000000..67e5551 --- /dev/null +++ b/src/main/resources/mappers/jcsj/EmSbcnpMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/main/resources/mappers/jcsj/EmSbjbbMapper.xml b/src/main/resources/mappers/jcsj/EmSbjbbMapper.xml new file mode 100644 index 0000000..143eb27 --- /dev/null +++ b/src/main/resources/mappers/jcsj/EmSbjbbMapper.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mappers/jcsj/EmSbrydypMapper.xml b/src/main/resources/mappers/jcsj/EmSbrydypMapper.xml new file mode 100644 index 0000000..0cf9741 --- /dev/null +++ b/src/main/resources/mappers/jcsj/EmSbrydypMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mappers/jcsj/EmSbwxjhMapper.xml b/src/main/resources/mappers/jcsj/EmSbwxjhMapper.xml new file mode 100644 index 0000000..db964b4 --- /dev/null +++ b/src/main/resources/mappers/jcsj/EmSbwxjhMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mappers/jhgk/DmDhqdpMapper.xml b/src/main/resources/mappers/jhgk/DmDhqdpMapper.xml new file mode 100644 index 0000000..7d9cfa8 --- /dev/null +++ b/src/main/resources/mappers/jhgk/DmDhqdpMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mappers/jhgk/DmJgxywrybMapper.xml b/src/main/resources/mappers/jhgk/DmJgxywrybMapper.xml new file mode 100644 index 0000000..15bad71 --- /dev/null +++ b/src/main/resources/mappers/jhgk/DmJgxywrybMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mappers/jhgk/DmJtsyjhMapper.xml b/src/main/resources/mappers/jhgk/DmJtsyjhMapper.xml new file mode 100644 index 0000000..4dbbf60 --- /dev/null +++ b/src/main/resources/mappers/jhgk/DmJtsyjhMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + update dm_czplp_new + set + gdq_jt = #{item.jhrq} + where DC_CH=#{item.dcCh} and DC_PL=#{item.dcPl} and DC_fd=#{item.dcFd} + + + + + diff --git a/src/main/resources/mappers/jhgk/DmSygdMapper.xml b/src/main/resources/mappers/jhgk/DmSygdMapper.xml new file mode 100644 index 0000000..6ce7b48 --- /dev/null +++ b/src/main/resources/mappers/jhgk/DmSygdMapper.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml b/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml new file mode 100644 index 0000000..4522434 --- /dev/null +++ b/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mappers/jhgk/DmTzjhMapper.xml b/src/main/resources/mappers/jhgk/DmTzjhMapper.xml new file mode 100644 index 0000000..ca0ab82 --- /dev/null +++ b/src/main/resources/mappers/jhgk/DmTzjhMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mappers/jhgk/DmXbjhMapper.xml b/src/main/resources/mappers/jhgk/DmXbjhMapper.xml new file mode 100644 index 0000000..36c35f3 --- /dev/null +++ b/src/main/resources/mappers/jhgk/DmXbjhMapper.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mappers/jhgk/DmZrcjhMapper.xml b/src/main/resources/mappers/jhgk/DmZrcjhMapper.xml new file mode 100644 index 0000000..b5945ca --- /dev/null +++ b/src/main/resources/mappers/jhgk/DmZrcjhMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update dm_czplp_new + set + dzjsq_zrc = #{item.gjjsDz},xzjsq_zrc = #{item.jssjXz},gjks_zrc = #{item.gjks} + where DC_CH=#{item.dcCh} and DC_PL=#{item.dcPl} + + + diff --git a/src/main/resources/mappers/sy/SyuserMapper.xml b/src/main/resources/mappers/sy/SyuserMapper.xml new file mode 100644 index 0000000..7f729a3 --- /dev/null +++ b/src/main/resources/mappers/sy/SyuserMapper.xml @@ -0,0 +1,33 @@ + + + + + + + +