From fc1166884213474b13c5f5f4621ebe1314b67f08 Mon Sep 17 00:00:00 2001
From: Allenxy <13762749+chaosallen@user.noreply.gitee.com>
Date: Fri, 13 Sep 2024 16:10:08 +0800
Subject: [PATCH] =?UTF-8?q?init():=E5=8D=97=E9=92=A2=E7=A8=8B=E5=BA=8F?=
=?UTF-8?q?=E5=89=8D=E5=90=8E=E7=AB=AF=E5=88=86=E7=A6=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
LICENSE | 20 +
README.md | 96 +
bin/clean.bat | 12 +
bin/package.bat | 12 +
bin/run.bat | 14 +
business/pom.xml | 108 +
.../controller/CrmPdiPlanController.java | 54 +
.../controller/CrmPdoExcoilController.java | 51 +
.../business/controller/RollerController.java | 77 +
.../com/fizz/business/domain/CrmPdiPlan.java | 121 ++
.../fizz/business/domain/CrmPdoExcoil.java | 105 +
.../com/fizz/business/domain/PlantConfig.java | 36 +
.../fizz/business/domain/RollChangeCycle.java | 39 +
.../com/fizz/business/domain/RollData.java | 88 +
.../com/fizz/business/domain/RollHistory.java | 94 +
.../fizz/business/domain/ShiftHistory.java | 28 +
.../main/java/com/fizz/business/dto/10086.txt | 1 +
.../com/fizz/business/form/PlanQueryForm.java | 48 +
.../fizz/business/form/RollHistoryForm.java | 24 +
.../com/fizz/business/interceptor/10086.txt | 1 +
.../business/mapper/CrmPdiPlanMapper.java | 9 +
.../business/mapper/CrmPdoExcoilMapper.java | 9 +
.../business/mapper/PlantConfigMapper.java | 11 +
.../mapper/RollChangeCycleMapper.java | 9 +
.../fizz/business/mapper/RollDataMapper.java | 9 +
.../business/mapper/RollHistoryMapper.java | 15 +
.../business/mapper/ShiftHistoryMapper.java | 9 +
.../main/java/com/fizz/business/mq/10086.txt | 1 +
.../com/fizz/business/scheduled/10086.txt | 1 +
.../business/service/CrmPdiPlanService.java | 20 +
.../business/service/CrmPdoExcoilService.java | 19 +
.../business/service/PlantConfigService.java | 10 +
.../service/RollChangeCycleService.java | 7 +
.../business/service/RollDataService.java | 20 +
.../business/service/RollHistoryService.java | 15 +
.../business/service/ShiftHistoryService.java | 15 +
.../service/impl/CrmPdiPlanServiceImpl.java | 68 +
.../service/impl/CrmPdoExcoilServiceImpl.java | 64 +
.../service/impl/PlantConfigServiceImpl.java | 22 +
.../impl/RollChangeCycleServiceImpl.java | 10 +
.../service/impl/RollDataServiceImpl.java | 326 +++
.../service/impl/RollHistoryServiceImpl.java | 46 +
.../service/impl/ShiftHistoryServiceImpl.java | 43 +
.../java/com/fizz/business/utils/10086.txt | 1 +
.../com/fizz/business/vo/AlarmResultVO.java | 0
.../java/com/fizz/business/vo/AlarmVO.java | 0
.../java/com/fizz/business/vo/AudioVO.java | 0
.../java/com/fizz/business/vo/ChartVo.java | 0
.../com/fizz/business/vo/ConfPlantVO.java | 0
.../business/vo/CurrentAndPowerCountVO.java | 0
.../com/fizz/business/vo/DailyScheduleVO.java | 0
.../com/fizz/business/vo/DeviceInfoVO.java | 0
.../com/fizz/business/vo/DeviceListVO.java | 0
.../com/fizz/business/vo/DeviceMessageVO.java | 0
.../fizz/business/vo/DeviceStatusInfo.java | 0
.../fizz/business/vo/DeviceStatusInfoVO.java | 0
.../com/fizz/business/vo/DeviceStatusVO.java | 0
.../main/java/com/fizz/business/vo/DtuVO.java | 0
.../com/fizz/business/vo/EnergyCurrentVO.java | 0
.../java/com/fizz/business/vo/EnergyVO.java | 0
.../com/fizz/business/vo/EventRecordsVO.java | 0
.../business/vo/FactorAllRealtimeDataVO.java | 0
.../com/fizz/business/vo/FactorDailyVO.java | 0
.../com/fizz/business/vo/FactorDataDVO.java | 0
.../business/vo/FactorDataRealtimeVO.java | 0
.../com/fizz/business/vo/FactorDataVO.java | 0
.../fizz/business/vo/FactorRealTimeVO.java | 0
.../com/fizz/business/vo/FactorValue.java | 0
.../com/fizz/business/vo/FrontTreeDataVo.java | 0
.../java/com/fizz/business/vo/FrontVo.java | 0
.../fizz/business/vo/Home25RealtimeTrend.java | 0
.../com/fizz/business/vo/LiveDetailVO.java | 0
.../java/com/fizz/business/vo/LiveHtmlVO.java | 0
.../java/com/fizz/business/vo/LoginKeyVO.java | 0
.../java/com/fizz/business/vo/MeasureVO.java | 0
.../com/fizz/business/vo/MonitorDataVO.java | 0
.../fizz/business/vo/OnlineRollDataVO.java | 55 +
.../java/com/fizz/business/vo/OriginVO.java | 0
.../java/com/fizz/business/vo/OverFlowVO.java | 0
.../com/fizz/business/vo/ProcessTrendVO.java | 0
.../com/fizz/business/vo/ReadyRollDataVO.java | 25 +
.../com/fizz/business/vo/RealtimeDataVO.java | 0
.../com/fizz/business/vo/ResultDetails.java | 0
.../fizz/business/vo/SignalScheduleVO.java | 0
.../java/com/fizz/business/vo/UnitVO.java | 0
.../vo/companyDevice/CompanyDeviceVO.java | 0
.../vo/companyDevice/DeviceAreaVO.java | 0
.../vo/companyDevice/DevicePointVO.java | 0
.../vo/companyDevice/DevicePostionVO.java | 0
.../vo/companyDevice/DeviceValueVO.java | 0
.../com/fizz/business/vo/iot/ChinaVO.java | 0
.../fizz/business/vo/iot/DeviceInfoVO.java | 0
.../business/vo/iot/OrganizationInfoVO.java | 0
.../vo/iot/ProcedureInformationVO.java | 0
.../vo/iot/ProductAttributeDefineVO.java | 0
.../business/vo/iot/ProductAttributeVO.java | 0
.../business/vo/iot/ProductCategoryVO.java | 0
.../fizz/business/vo/iot/ProductEventVO.java | 0
.../fizz/business/vo/iot/ProductInfoVO.java | 0
.../business/vo/iot/ProductParameterVO.java | 0
.../business/vo/iot/ProductServiceVO.java | 0
.../com/fizz/business/vo/iot/TopicInfoVO.java | 0
.../report/DrainageConsumablesReportVO.java | 0
.../vo/report/DrainageDailyReportVO.java | 0
.../vo/report/DrainageWetSludgeVO.java | 0
.../vo/report/MonthlyWaterQualityVO.java | 0
.../resources/mapper/CrmPdiPlanMapper.xml | 6 +
.../resources/mapper/CrmPdoExcoilMapper.xml | 6 +
.../resources/mapper/PlantConfigMapper.xml | 6 +
.../mapper/RollChangeCycleMapper.xml | 6 +
.../main/resources/mapper/RollDataMapper.xml | 6 +
.../resources/mapper/RollHistoryMapper.xml | 12 +
.../resources/mapper/ShiftHistoryMapper.xml | 6 +
.../src/main/resources/template/10086.txt | 1 +
.../target/classes/mapper/RollDataMapper.xml | 6 +
.../classes/mapper/RollHistoryMapper.xml | 12 +
business/target/classes/template/10086.txt | 1 +
doc/若依环境使用手册.docx | Bin 0 -> 428430 bytes
pom.xml | 246 +++
ruoyi-admin/pom.xml | 90 +
.../main/java/com/ruoyi/RuoYiApplication.java | 32 +
.../com/ruoyi/RuoYiServletInitializer.java | 18 +
.../controller/common/CaptchaController.java | 94 +
.../controller/common/CommonController.java | 163 ++
.../controller/monitor/CacheController.java | 121 ++
.../controller/monitor/ServerController.java | 27 +
.../monitor/SysLogininforController.java | 82 +
.../monitor/SysOperlogController.java | 69 +
.../monitor/SysUserOnlineController.java | 83 +
.../system/SysConfigController.java | 133 ++
.../controller/system/SysDeptController.java | 132 ++
.../system/SysDictDataController.java | 121 ++
.../system/SysDictTypeController.java | 131 ++
.../controller/system/SysIndexController.java | 29 +
.../controller/system/SysLoginController.java | 86 +
.../controller/system/SysMenuController.java | 142 ++
.../system/SysNoticeController.java | 91 +
.../controller/system/SysPostController.java | 129 ++
.../system/SysProfileController.java | 137 ++
.../system/SysRegisterController.java | 38 +
.../controller/system/SysRoleController.java | 262 +++
.../controller/system/SysUserController.java | 256 +++
.../web/controller/tool/TestController.java | 183 ++
.../META-INF/spring-devtools.properties | 1 +
.../src/main/resources/application-druid.yml | 63 +
.../src/main/resources/application.yml | 145 ++
ruoyi-admin/src/main/resources/banner.txt | 24 +
.../main/resources/i18n/messages.properties | 38 +
ruoyi-admin/src/main/resources/logback.xml | 93 +
.../main/resources/mybatis/mybatis-config.xml | 20 +
ruoyi-common/pom.xml | 157 ++
.../ruoyi/common/annotation/Anonymous.java | 19 +
.../ruoyi/common/annotation/DataScope.java | 33 +
.../ruoyi/common/annotation/DataSource.java | 28 +
.../com/ruoyi/common/annotation/Excel.java | 192 ++
.../com/ruoyi/common/annotation/Excels.java | 18 +
.../java/com/ruoyi/common/annotation/Log.java | 51 +
.../ruoyi/common/annotation/RateLimiter.java | 40 +
.../ruoyi/common/annotation/RepeatSubmit.java | 31 +
.../ruoyi/common/annotation/Sensitive.java | 24 +
.../com/ruoyi/common/config/RuoYiConfig.java | 122 ++
.../ruoyi/common/config/SwaggerConfig.java | 124 ++
.../serializer/SensitiveJsonSerializer.java | 67 +
.../ruoyi/common/constant/CacheConstants.java | 44 +
.../com/ruoyi/common/constant/Constants.java | 173 ++
.../ruoyi/common/constant/GenConstants.java | 117 ++
.../com/ruoyi/common/constant/HttpStatus.java | 94 +
.../common/constant/ScheduleConstants.java | 50 +
.../ruoyi/common/constant/UserConstants.java | 78 +
.../core/controller/BaseController.java | 202 ++
.../ruoyi/common/core/domain/AjaxResult.java | 216 ++
.../ruoyi/common/core/domain/BaseEntity.java | 118 ++
.../java/com/ruoyi/common/core/domain/R.java | 115 ++
.../ruoyi/common/core/domain/TreeEntity.java | 79 +
.../ruoyi/common/core/domain/TreeSelect.java | 77 +
.../common/core/domain/entity/SysDept.java | 203 ++
.../core/domain/entity/SysDictData.java | 176 ++
.../core/domain/entity/SysDictType.java | 96 +
.../common/core/domain/entity/SysMenu.java | 274 +++
.../common/core/domain/entity/SysRole.java | 241 +++
.../common/core/domain/entity/SysUser.java | 324 +++
.../common/core/domain/model/LoginBody.java | 69 +
.../common/core/domain/model/LoginUser.java | 266 +++
.../core/domain/model/RegisterBody.java | 11 +
.../ruoyi/common/core/page/PageDomain.java | 101 +
.../ruoyi/common/core/page/TableDataInfo.java | 85 +
.../ruoyi/common/core/page/TableSupport.java | 56 +
.../ruoyi/common/core/redis/RedisCache.java | 268 +++
.../ruoyi/common/core/text/CharsetKit.java | 86 +
.../com/ruoyi/common/core/text/Convert.java | 1010 +++++++++
.../ruoyi/common/core/text/StrFormatter.java | 92 +
.../ruoyi/common/enums/BusinessStatus.java | 20 +
.../com/ruoyi/common/enums/BusinessType.java | 59 +
.../ruoyi/common/enums/DataSourceType.java | 19 +
.../ruoyi/common/enums/DesensitizedType.java | 59 +
.../com/ruoyi/common/enums/HttpMethod.java | 36 +
.../com/ruoyi/common/enums/LimitType.java | 20 +
.../com/ruoyi/common/enums/OperatorType.java | 24 +
.../com/ruoyi/common/enums/UserStatus.java | 30 +
.../common/exception/DemoModeException.java | 15 +
.../common/exception/GlobalException.java | 58 +
.../common/exception/ServiceException.java | 74 +
.../ruoyi/common/exception/UtilException.java | 26 +
.../common/exception/base/BaseException.java | 97 +
.../common/exception/file/FileException.java | 19 +
.../FileNameLengthLimitExceededException.java | 16 +
.../file/FileSizeLimitExceededException.java | 16 +
.../exception/file/FileUploadException.java | 61 +
.../file/InvalidExtensionException.java | 80 +
.../common/exception/job/TaskException.java | 34 +
.../exception/user/BlackListException.java | 16 +
.../exception/user/CaptchaException.java | 16 +
.../user/CaptchaExpireException.java | 16 +
.../common/exception/user/UserException.java | 18 +
.../user/UserNotExistsException.java | 16 +
.../user/UserPasswordNotMatchException.java | 16 +
...UserPasswordRetryLimitExceedException.java | 16 +
.../filter/PropertyPreExcludeFilter.java | 24 +
.../ruoyi/common/filter/RepeatableFilter.java | 52 +
.../filter/RepeatedlyRequestWrapper.java | 76 +
.../com/ruoyi/common/filter/XssFilter.java | 75 +
.../filter/XssHttpServletRequestWrapper.java | 111 +
.../java/com/ruoyi/common/utils/Arith.java | 114 ++
.../com/ruoyi/common/utils/DateUtils.java | 191 ++
.../ruoyi/common/utils/DesensitizedUtil.java | 49 +
.../com/ruoyi/common/utils/DictUtils.java | 239 +++
.../com/ruoyi/common/utils/ExceptionUtil.java | 39 +
.../java/com/ruoyi/common/utils/LogUtils.java | 18 +
.../com/ruoyi/common/utils/MessageUtils.java | 26 +
.../com/ruoyi/common/utils/PageUtils.java | 35 +
.../com/ruoyi/common/utils/SecurityUtils.java | 178 ++
.../com/ruoyi/common/utils/ServletUtils.java | 218 ++
.../com/ruoyi/common/utils/StringUtils.java | 684 +++++++
.../java/com/ruoyi/common/utils/Threads.java | 99 +
.../ruoyi/common/utils/bean/BeanUtils.java | 110 +
.../common/utils/bean/BeanValidators.java | 24 +
.../common/utils/file/FileTypeUtils.java | 76 +
.../common/utils/file/FileUploadUtils.java | 232 +++
.../ruoyi/common/utils/file/FileUtils.java | 291 +++
.../ruoyi/common/utils/file/ImageUtils.java | 98 +
.../common/utils/file/MimeTypeUtils.java | 59 +
.../ruoyi/common/utils/html/EscapeUtil.java | 167 ++
.../ruoyi/common/utils/html/HTMLFilter.java | 570 ++++++
.../ruoyi/common/utils/http/HttpHelper.java | 55 +
.../ruoyi/common/utils/http/HttpUtils.java | 274 +++
.../ruoyi/common/utils/ip/AddressUtils.java | 56 +
.../com/ruoyi/common/utils/ip/IpUtils.java | 382 ++++
.../common/utils/poi/ExcelHandlerAdapter.java | 24 +
.../com/ruoyi/common/utils/poi/ExcelUtil.java | 1812 +++++++++++++++++
.../common/utils/reflect/ReflectUtils.java | 410 ++++
.../com/ruoyi/common/utils/sign/Base64.java | 291 +++
.../com/ruoyi/common/utils/sign/Md5Utils.java | 67 +
.../common/utils/spring/SpringUtils.java | 158 ++
.../com/ruoyi/common/utils/sql/SqlUtil.java | 70 +
.../com/ruoyi/common/utils/uuid/IdUtils.java | 49 +
.../java/com/ruoyi/common/utils/uuid/Seq.java | 86 +
.../com/ruoyi/common/utils/uuid/UUID.java | 484 +++++
.../main/java/com/ruoyi/common/xss/Xss.java | 27 +
.../com/ruoyi/common/xss/XssValidator.java | 39 +
ruoyi-framework/pom.xml | 64 +
.../framework/aspectj/DataScopeAspect.java | 184 ++
.../framework/aspectj/DataSourceAspect.java | 72 +
.../ruoyi/framework/aspectj/LogAspect.java | 255 +++
.../framework/aspectj/RateLimiterAspect.java | 89 +
.../framework/config/ApplicationConfig.java | 30 +
.../ruoyi/framework/config/CaptchaConfig.java | 83 +
.../ruoyi/framework/config/DruidConfig.java | 126 ++
.../config/FastJson2JsonRedisSerializer.java | 52 +
.../ruoyi/framework/config/FilterConfig.java | 58 +
.../ruoyi/framework/config/I18nConfig.java | 43 +
.../framework/config/KaptchaTextCreator.java | 68 +
.../framework/config/MybatisPlusConfig.java | 62 +
.../ruoyi/framework/config/RedisConfig.java | 69 +
.../framework/config/ResourcesConfig.java | 73 +
.../framework/config/SecurityConfig.java | 139 ++
.../ruoyi/framework/config/ServerConfig.java | 32 +
.../framework/config/ThreadPoolConfig.java | 63 +
.../config/properties/DruidProperties.java | 89 +
.../properties/PermitAllUrlProperties.java | 73 +
.../datasource/DynamicDataSource.java | 26 +
.../DynamicDataSourceContextHolder.java | 45 +
.../interceptor/RepeatSubmitInterceptor.java | 56 +
.../impl/SameUrlDataInterceptor.java | 110 +
.../ruoyi/framework/manager/AsyncManager.java | 55 +
.../framework/manager/ShutdownManager.java | 39 +
.../manager/factory/AsyncFactory.java | 102 +
.../context/AuthenticationContextHolder.java | 28 +
.../context/PermissionContextHolder.java | 27 +
.../filter/JwtAuthenticationTokenFilter.java | 44 +
.../handle/AuthenticationEntryPointImpl.java | 34 +
.../handle/LogoutSuccessHandlerImpl.java | 53 +
.../ruoyi/framework/web/domain/Server.java | 240 +++
.../framework/web/domain/server/Cpu.java | 101 +
.../framework/web/domain/server/Jvm.java | 130 ++
.../framework/web/domain/server/Mem.java | 61 +
.../framework/web/domain/server/Sys.java | 84 +
.../framework/web/domain/server/SysFile.java | 114 ++
.../web/exception/GlobalExceptionHandler.java | 145 ++
.../web/service/PermissionService.java | 159 ++
.../web/service/SysLoginService.java | 181 ++
.../web/service/SysPasswordService.java | 86 +
.../web/service/SysPermissionService.java | 83 +
.../web/service/SysRegisterService.java | 115 ++
.../framework/web/service/TokenService.java | 231 +++
.../web/service/UserDetailsServiceImpl.java | 66 +
ruoyi-generator/pom.xml | 40 +
.../com/ruoyi/generator/config/GenConfig.java | 73 +
.../generator/controller/GenController.java | 258 +++
.../com/ruoyi/generator/domain/GenTable.java | 385 ++++
.../generator/domain/GenTableColumn.java | 373 ++++
.../mapper/GenTableColumnMapper.java | 60 +
.../generator/mapper/GenTableMapper.java | 91 +
.../service/GenTableColumnServiceImpl.java | 68 +
.../service/GenTableServiceImpl.java | 531 +++++
.../service/IGenTableColumnService.java | 44 +
.../generator/service/IGenTableService.java | 130 ++
.../com/ruoyi/generator/util/GenUtils.java | 257 +++
.../generator/util/VelocityInitializer.java | 34 +
.../ruoyi/generator/util/VelocityUtils.java | 408 ++++
.../src/main/resources/generator.yml | 10 +
.../mapper/generator/GenTableColumnMapper.xml | 127 ++
.../mapper/generator/GenTableMapper.xml | 210 ++
.../main/resources/vm/java/controller.java.vm | 115 ++
.../src/main/resources/vm/java/domain.java.vm | 105 +
.../src/main/resources/vm/java/mapper.java.vm | 91 +
.../main/resources/vm/java/service.java.vm | 61 +
.../resources/vm/java/serviceImpl.java.vm | 169 ++
.../main/resources/vm/java/sub-domain.java.vm | 76 +
.../src/main/resources/vm/js/api.js.vm | 44 +
.../src/main/resources/vm/sql/sql.vm | 22 +
.../main/resources/vm/vue/index-tree.vue.vm | 505 +++++
.../src/main/resources/vm/vue/index.vue.vm | 602 ++++++
.../resources/vm/vue/v3/index-tree.vue.vm | 474 +++++
.../src/main/resources/vm/vue/v3/index.vue.vm | 590 ++++++
.../src/main/resources/vm/xml/mapper.xml.vm | 140 ++
ruoyi-quartz/pom.xml | 40 +
.../ruoyi/quartz/config/ScheduleConfig.java | 57 +
.../quartz/controller/SysJobController.java | 185 ++
.../controller/SysJobLogController.java | 92 +
.../java/com/ruoyi/quartz/domain/SysJob.java | 171 ++
.../com/ruoyi/quartz/domain/SysJobLog.java | 155 ++
.../ruoyi/quartz/mapper/SysJobLogMapper.java | 64 +
.../com/ruoyi/quartz/mapper/SysJobMapper.java | 67 +
.../quartz/service/ISysJobLogService.java | 56 +
.../ruoyi/quartz/service/ISysJobService.java | 102 +
.../service/impl/SysJobLogServiceImpl.java | 87 +
.../service/impl/SysJobServiceImpl.java | 261 +++
.../java/com/ruoyi/quartz/task/RyTask.java | 28 +
.../ruoyi/quartz/util/AbstractQuartzJob.java | 107 +
.../java/com/ruoyi/quartz/util/CronUtils.java | 63 +
.../com/ruoyi/quartz/util/JobInvokeUtil.java | 182 ++
.../QuartzDisallowConcurrentExecution.java | 21 +
.../ruoyi/quartz/util/QuartzJobExecution.java | 19 +
.../com/ruoyi/quartz/util/ScheduleUtils.java | 141 ++
.../mapper/quartz/SysJobLogMapper.xml | 94 +
.../resources/mapper/quartz/SysJobMapper.xml | 111 +
ruoyi-system/pom.xml | 28 +
.../com/ruoyi/system/domain/SysCache.java | 81 +
.../com/ruoyi/system/domain/SysConfig.java | 111 +
.../ruoyi/system/domain/SysLogininfor.java | 144 ++
.../com/ruoyi/system/domain/SysNotice.java | 102 +
.../com/ruoyi/system/domain/SysOperLog.java | 269 +++
.../java/com/ruoyi/system/domain/SysPost.java | 124 ++
.../com/ruoyi/system/domain/SysRoleDept.java | 46 +
.../com/ruoyi/system/domain/SysRoleMenu.java | 46 +
.../ruoyi/system/domain/SysUserOnline.java | 113 +
.../com/ruoyi/system/domain/SysUserPost.java | 46 +
.../com/ruoyi/system/domain/SysUserRole.java | 46 +
.../com/ruoyi/system/domain/vo/MetaVo.java | 106 +
.../com/ruoyi/system/domain/vo/RouterVo.java | 148 ++
.../ruoyi/system/mapper/SysConfigMapper.java | 76 +
.../ruoyi/system/mapper/SysDeptMapper.java | 118 ++
.../system/mapper/SysDictDataMapper.java | 95 +
.../system/mapper/SysDictTypeMapper.java | 83 +
.../system/mapper/SysLogininforMapper.java | 42 +
.../ruoyi/system/mapper/SysMenuMapper.java | 125 ++
.../ruoyi/system/mapper/SysNoticeMapper.java | 60 +
.../ruoyi/system/mapper/SysOperLogMapper.java | 48 +
.../ruoyi/system/mapper/SysPostMapper.java | 99 +
.../system/mapper/SysRoleDeptMapper.java | 44 +
.../ruoyi/system/mapper/SysRoleMapper.java | 107 +
.../system/mapper/SysRoleMenuMapper.java | 44 +
.../ruoyi/system/mapper/SysUserMapper.java | 127 ++
.../system/mapper/SysUserPostMapper.java | 44 +
.../system/mapper/SysUserRoleMapper.java | 62 +
.../system/service/ISysConfigService.java | 89 +
.../ruoyi/system/service/ISysDeptService.java | 124 ++
.../system/service/ISysDictDataService.java | 60 +
.../system/service/ISysDictTypeService.java | 98 +
.../system/service/ISysLogininforService.java | 40 +
.../ruoyi/system/service/ISysMenuService.java | 144 ++
.../system/service/ISysNoticeService.java | 60 +
.../system/service/ISysOperLogService.java | 48 +
.../ruoyi/system/service/ISysPostService.java | 99 +
.../ruoyi/system/service/ISysRoleService.java | 173 ++
.../system/service/ISysUserOnlineService.java | 48 +
.../ruoyi/system/service/ISysUserService.java | 206 ++
.../service/impl/SysConfigServiceImpl.java | 232 +++
.../service/impl/SysDeptServiceImpl.java | 338 +++
.../service/impl/SysDictDataServiceImpl.java | 111 +
.../service/impl/SysDictTypeServiceImpl.java | 223 ++
.../impl/SysLogininforServiceImpl.java | 65 +
.../service/impl/SysMenuServiceImpl.java | 543 +++++
.../service/impl/SysNoticeServiceImpl.java | 92 +
.../service/impl/SysOperLogServiceImpl.java | 76 +
.../service/impl/SysPostServiceImpl.java | 178 ++
.../service/impl/SysRoleServiceImpl.java | 427 ++++
.../impl/SysUserOnlineServiceImpl.java | 96 +
.../service/impl/SysUserServiceImpl.java | 550 +++++
.../mapper/system/SysConfigMapper.xml | 117 ++
.../resources/mapper/system/SysDeptMapper.xml | 159 ++
.../mapper/system/SysDictDataMapper.xml | 124 ++
.../mapper/system/SysDictTypeMapper.xml | 105 +
.../mapper/system/SysLogininforMapper.xml | 57 +
.../resources/mapper/system/SysMenuMapper.xml | 206 ++
.../mapper/system/SysNoticeMapper.xml | 89 +
.../mapper/system/SysOperLogMapper.xml | 87 +
.../resources/mapper/system/SysPostMapper.xml | 122 ++
.../mapper/system/SysRoleDeptMapper.xml | 34 +
.../resources/mapper/system/SysRoleMapper.xml | 152 ++
.../mapper/system/SysRoleMenuMapper.xml | 34 +
.../resources/mapper/system/SysUserMapper.xml | 221 ++
.../mapper/system/SysUserPostMapper.xml | 34 +
.../mapper/system/SysUserRoleMapper.xml | 44 +
ruoyi-ui/.editorconfig | 22 +
ruoyi-ui/.env.development | 11 +
ruoyi-ui/.env.production | 8 +
ruoyi-ui/.env.staging | 10 +
ruoyi-ui/.eslintignore | 10 +
ruoyi-ui/.eslintrc.js | 199 ++
ruoyi-ui/README.md | 30 +
ruoyi-ui/babel.config.js | 13 +
ruoyi-ui/bin/build.bat | 12 +
ruoyi-ui/bin/package.bat | 12 +
ruoyi-ui/bin/run-web.bat | 12 +
ruoyi-ui/build/index.js | 35 +
ruoyi-ui/package.json | 90 +
ruoyi-ui/public/favicon.ico | Bin 0 -> 5663 bytes
ruoyi-ui/public/html/ie.html | 46 +
ruoyi-ui/public/index.html | 208 ++
ruoyi-ui/public/robots.txt | 2 +
ruoyi-ui/src/App.vue | 28 +
ruoyi-ui/src/api/login.js | 60 +
ruoyi-ui/src/api/menu.js | 9 +
ruoyi-ui/src/api/monitor/cache.js | 57 +
ruoyi-ui/src/api/monitor/job.js | 71 +
ruoyi-ui/src/api/monitor/jobLog.js | 26 +
ruoyi-ui/src/api/monitor/logininfor.js | 34 +
ruoyi-ui/src/api/monitor/online.js | 18 +
ruoyi-ui/src/api/monitor/operlog.js | 26 +
ruoyi-ui/src/api/monitor/server.js | 9 +
ruoyi-ui/src/api/system/config.js | 60 +
ruoyi-ui/src/api/system/dept.js | 52 +
ruoyi-ui/src/api/system/dict/data.js | 52 +
ruoyi-ui/src/api/system/dict/type.js | 60 +
ruoyi-ui/src/api/system/menu.js | 60 +
ruoyi-ui/src/api/system/notice.js | 44 +
ruoyi-ui/src/api/system/post.js | 44 +
ruoyi-ui/src/api/system/role.js | 119 ++
ruoyi-ui/src/api/system/user.js | 136 ++
ruoyi-ui/src/api/tool/gen.js | 85 +
ruoyi-ui/src/assets/401_images/401.gif | Bin 0 -> 164227 bytes
ruoyi-ui/src/assets/404_images/404.png | Bin 0 -> 98071 bytes
ruoyi-ui/src/assets/404_images/404_cloud.png | Bin 0 -> 4766 bytes
ruoyi-ui/src/assets/icons/index.js | 9 +
ruoyi-ui/src/assets/icons/svg/404.svg | 1 +
ruoyi-ui/src/assets/icons/svg/bug.svg | 1 +
ruoyi-ui/src/assets/icons/svg/build.svg | 1 +
ruoyi-ui/src/assets/icons/svg/button.svg | 1 +
ruoyi-ui/src/assets/icons/svg/cascader.svg | 1 +
ruoyi-ui/src/assets/icons/svg/chart.svg | 1 +
ruoyi-ui/src/assets/icons/svg/checkbox.svg | 1 +
ruoyi-ui/src/assets/icons/svg/clipboard.svg | 1 +
ruoyi-ui/src/assets/icons/svg/code.svg | 1 +
ruoyi-ui/src/assets/icons/svg/color.svg | 1 +
ruoyi-ui/src/assets/icons/svg/component.svg | 1 +
ruoyi-ui/src/assets/icons/svg/dashboard.svg | 1 +
ruoyi-ui/src/assets/icons/svg/date-range.svg | 1 +
ruoyi-ui/src/assets/icons/svg/date.svg | 1 +
ruoyi-ui/src/assets/icons/svg/dict.svg | 1 +
.../src/assets/icons/svg/documentation.svg | 1 +
ruoyi-ui/src/assets/icons/svg/download.svg | 1 +
ruoyi-ui/src/assets/icons/svg/drag.svg | 1 +
ruoyi-ui/src/assets/icons/svg/druid.svg | 1 +
ruoyi-ui/src/assets/icons/svg/edit.svg | 1 +
ruoyi-ui/src/assets/icons/svg/education.svg | 1 +
ruoyi-ui/src/assets/icons/svg/email.svg | 1 +
ruoyi-ui/src/assets/icons/svg/example.svg | 1 +
ruoyi-ui/src/assets/icons/svg/excel.svg | 1 +
.../src/assets/icons/svg/exit-fullscreen.svg | 1 +
ruoyi-ui/src/assets/icons/svg/eye-open.svg | 1 +
ruoyi-ui/src/assets/icons/svg/eye.svg | 1 +
ruoyi-ui/src/assets/icons/svg/form.svg | 1 +
ruoyi-ui/src/assets/icons/svg/fullscreen.svg | 1 +
ruoyi-ui/src/assets/icons/svg/github.svg | 1 +
ruoyi-ui/src/assets/icons/svg/guide.svg | 1 +
ruoyi-ui/src/assets/icons/svg/icon.svg | 1 +
ruoyi-ui/src/assets/icons/svg/input.svg | 1 +
.../src/assets/icons/svg/international.svg | 1 +
ruoyi-ui/src/assets/icons/svg/job.svg | 1 +
ruoyi-ui/src/assets/icons/svg/language.svg | 1 +
ruoyi-ui/src/assets/icons/svg/link.svg | 1 +
ruoyi-ui/src/assets/icons/svg/list.svg | 1 +
ruoyi-ui/src/assets/icons/svg/lock.svg | 1 +
ruoyi-ui/src/assets/icons/svg/log.svg | 1 +
ruoyi-ui/src/assets/icons/svg/logininfor.svg | 1 +
ruoyi-ui/src/assets/icons/svg/message.svg | 1 +
ruoyi-ui/src/assets/icons/svg/money.svg | 1 +
ruoyi-ui/src/assets/icons/svg/monitor.svg | 2 +
ruoyi-ui/src/assets/icons/svg/nested.svg | 1 +
ruoyi-ui/src/assets/icons/svg/number.svg | 1 +
ruoyi-ui/src/assets/icons/svg/online.svg | 1 +
ruoyi-ui/src/assets/icons/svg/password.svg | 1 +
ruoyi-ui/src/assets/icons/svg/pdf.svg | 1 +
ruoyi-ui/src/assets/icons/svg/people.svg | 1 +
ruoyi-ui/src/assets/icons/svg/peoples.svg | 1 +
ruoyi-ui/src/assets/icons/svg/phone.svg | 1 +
ruoyi-ui/src/assets/icons/svg/post.svg | 1 +
ruoyi-ui/src/assets/icons/svg/qq.svg | 1 +
ruoyi-ui/src/assets/icons/svg/question.svg | 1 +
ruoyi-ui/src/assets/icons/svg/radio.svg | 1 +
ruoyi-ui/src/assets/icons/svg/rate.svg | 1 +
ruoyi-ui/src/assets/icons/svg/redis-list.svg | 2 +
ruoyi-ui/src/assets/icons/svg/redis.svg | 1 +
ruoyi-ui/src/assets/icons/svg/row.svg | 1 +
ruoyi-ui/src/assets/icons/svg/search.svg | 1 +
ruoyi-ui/src/assets/icons/svg/select.svg | 1 +
ruoyi-ui/src/assets/icons/svg/server.svg | 1 +
ruoyi-ui/src/assets/icons/svg/shopping.svg | 1 +
ruoyi-ui/src/assets/icons/svg/size.svg | 1 +
ruoyi-ui/src/assets/icons/svg/skill.svg | 1 +
ruoyi-ui/src/assets/icons/svg/slider.svg | 1 +
ruoyi-ui/src/assets/icons/svg/star.svg | 1 +
ruoyi-ui/src/assets/icons/svg/swagger.svg | 1 +
ruoyi-ui/src/assets/icons/svg/switch.svg | 1 +
ruoyi-ui/src/assets/icons/svg/system.svg | 2 +
ruoyi-ui/src/assets/icons/svg/tab.svg | 1 +
ruoyi-ui/src/assets/icons/svg/table.svg | 1 +
ruoyi-ui/src/assets/icons/svg/textarea.svg | 1 +
ruoyi-ui/src/assets/icons/svg/theme.svg | 1 +
ruoyi-ui/src/assets/icons/svg/time-range.svg | 1 +
ruoyi-ui/src/assets/icons/svg/time.svg | 1 +
ruoyi-ui/src/assets/icons/svg/tool.svg | 1 +
ruoyi-ui/src/assets/icons/svg/tree-table.svg | 1 +
ruoyi-ui/src/assets/icons/svg/tree.svg | 1 +
ruoyi-ui/src/assets/icons/svg/upload.svg | 1 +
ruoyi-ui/src/assets/icons/svg/user.svg | 1 +
ruoyi-ui/src/assets/icons/svg/validCode.svg | 1 +
ruoyi-ui/src/assets/icons/svg/wechat.svg | 1 +
ruoyi-ui/src/assets/icons/svg/zip.svg | 1 +
ruoyi-ui/src/assets/icons/svgo.yml | 22 +
ruoyi-ui/src/assets/images/dark.svg | 39 +
ruoyi-ui/src/assets/images/light.svg | 39 +
.../src/assets/images/login-background.jpg | Bin 0 -> 521275 bytes
ruoyi-ui/src/assets/images/pay.png | Bin 0 -> 140720 bytes
ruoyi-ui/src/assets/images/profile.jpg | Bin 0 -> 81131 bytes
ruoyi-ui/src/assets/logo/logo.png | Bin 0 -> 5663 bytes
ruoyi-ui/src/assets/styles/btn.scss | 99 +
ruoyi-ui/src/assets/styles/element-ui.scss | 92 +
.../src/assets/styles/element-variables.scss | 31 +
ruoyi-ui/src/assets/styles/index.scss | 182 ++
ruoyi-ui/src/assets/styles/mixin.scss | 66 +
ruoyi-ui/src/assets/styles/ruoyi.scss | 291 +++
ruoyi-ui/src/assets/styles/sidebar.scss | 227 +++
ruoyi-ui/src/assets/styles/transition.scss | 49 +
ruoyi-ui/src/assets/styles/variables.scss | 54 +
ruoyi-ui/src/components/Breadcrumb/index.vue | 74 +
ruoyi-ui/src/components/Crontab/day.vue | 161 ++
ruoyi-ui/src/components/Crontab/hour.vue | 120 ++
ruoyi-ui/src/components/Crontab/index.vue | 430 ++++
ruoyi-ui/src/components/Crontab/min.vue | 116 ++
ruoyi-ui/src/components/Crontab/month.vue | 114 ++
ruoyi-ui/src/components/Crontab/result.vue | 559 +++++
ruoyi-ui/src/components/Crontab/second.vue | 117 ++
ruoyi-ui/src/components/Crontab/week.vue | 202 ++
ruoyi-ui/src/components/Crontab/year.vue | 131 ++
ruoyi-ui/src/components/DictData/index.js | 49 +
ruoyi-ui/src/components/DictTag/index.vue | 89 +
ruoyi-ui/src/components/Editor/index.vue | 274 +++
ruoyi-ui/src/components/FileUpload/index.vue | 216 ++
ruoyi-ui/src/components/Hamburger/index.vue | 44 +
.../src/components/HeaderSearch/index.vue | 198 ++
ruoyi-ui/src/components/IconSelect/index.vue | 104 +
.../src/components/IconSelect/requireIcons.js | 11 +
.../src/components/ImagePreview/index.vue | 90 +
ruoyi-ui/src/components/ImageUpload/index.vue | 226 ++
ruoyi-ui/src/components/Pagination/index.vue | 114 ++
ruoyi-ui/src/components/PanThumb/index.vue | 142 ++
ruoyi-ui/src/components/ParentView/index.vue | 3 +
ruoyi-ui/src/components/RightPanel/index.vue | 106 +
.../src/components/RightToolbar/index.vue | 129 ++
ruoyi-ui/src/components/RuoYi/Doc/index.vue | 21 +
ruoyi-ui/src/components/RuoYi/Git/index.vue | 21 +
ruoyi-ui/src/components/Screenfull/index.vue | 57 +
ruoyi-ui/src/components/SizeSelect/index.vue | 56 +
ruoyi-ui/src/components/SvgIcon/index.vue | 61 +
ruoyi-ui/src/components/ThemePicker/index.vue | 173 ++
ruoyi-ui/src/components/TopNav/index.vue | 195 ++
ruoyi-ui/src/components/iFrame/index.vue | 36 +
ruoyi-ui/src/directive/dialog/drag.js | 64 +
ruoyi-ui/src/directive/dialog/dragHeight.js | 34 +
ruoyi-ui/src/directive/dialog/dragWidth.js | 30 +
ruoyi-ui/src/directive/index.js | 23 +
ruoyi-ui/src/directive/module/clipboard.js | 54 +
ruoyi-ui/src/directive/permission/hasPermi.js | 28 +
ruoyi-ui/src/directive/permission/hasRole.js | 28 +
ruoyi-ui/src/layout/components/AppMain.vue | 75 +
.../layout/components/IframeToggle/index.vue | 33 +
.../src/layout/components/InnerLink/index.vue | 47 +
ruoyi-ui/src/layout/components/Navbar.vue | 200 ++
.../src/layout/components/Settings/index.vue | 260 +++
.../layout/components/Sidebar/FixiOSBug.js | 25 +
.../src/layout/components/Sidebar/Item.vue | 33 +
.../src/layout/components/Sidebar/Link.vue | 43 +
.../src/layout/components/Sidebar/Logo.vue | 93 +
.../layout/components/Sidebar/SidebarItem.vue | 100 +
.../src/layout/components/Sidebar/index.vue | 57 +
.../layout/components/TagsView/ScrollPane.vue | 94 +
.../src/layout/components/TagsView/index.vue | 332 +++
ruoyi-ui/src/layout/components/index.js | 5 +
ruoyi-ui/src/layout/index.vue | 111 +
ruoyi-ui/src/layout/mixin/ResizeHandler.js | 45 +
ruoyi-ui/src/main.js | 86 +
ruoyi-ui/src/permission.js | 58 +
ruoyi-ui/src/plugins/auth.js | 60 +
ruoyi-ui/src/plugins/cache.js | 77 +
ruoyi-ui/src/plugins/download.js | 79 +
ruoyi-ui/src/plugins/index.js | 20 +
ruoyi-ui/src/plugins/modal.js | 83 +
ruoyi-ui/src/plugins/tab.js | 71 +
ruoyi-ui/src/router/index.js | 183 ++
ruoyi-ui/src/settings.js | 44 +
ruoyi-ui/src/store/getters.js | 19 +
ruoyi-ui/src/store/index.js | 25 +
ruoyi-ui/src/store/modules/app.js | 66 +
ruoyi-ui/src/store/modules/dict.js | 50 +
ruoyi-ui/src/store/modules/permission.js | 137 ++
ruoyi-ui/src/store/modules/settings.js | 42 +
ruoyi-ui/src/store/modules/tagsView.js | 228 +++
ruoyi-ui/src/store/modules/user.js | 101 +
ruoyi-ui/src/utils/auth.js | 15 +
ruoyi-ui/src/utils/dict/Dict.js | 82 +
ruoyi-ui/src/utils/dict/DictConverter.js | 17 +
ruoyi-ui/src/utils/dict/DictData.js | 13 +
ruoyi-ui/src/utils/dict/DictMeta.js | 38 +
ruoyi-ui/src/utils/dict/DictOptions.js | 51 +
ruoyi-ui/src/utils/dict/index.js | 33 +
ruoyi-ui/src/utils/errorCode.js | 6 +
ruoyi-ui/src/utils/generator/config.js | 438 ++++
ruoyi-ui/src/utils/generator/css.js | 18 +
.../src/utils/generator/drawingDefault.js | 29 +
ruoyi-ui/src/utils/generator/html.js | 359 ++++
ruoyi-ui/src/utils/generator/icon.json | 1 +
ruoyi-ui/src/utils/generator/js.js | 235 +++
ruoyi-ui/src/utils/generator/render.js | 126 ++
ruoyi-ui/src/utils/index.js | 390 ++++
ruoyi-ui/src/utils/jsencrypt.js | 30 +
ruoyi-ui/src/utils/permission.js | 47 +
ruoyi-ui/src/utils/request.js | 152 ++
ruoyi-ui/src/utils/ruoyi.js | 233 +++
ruoyi-ui/src/utils/scroll-to.js | 58 +
ruoyi-ui/src/utils/validate.js | 80 +
ruoyi-ui/src/views/dashboard/BarChart.vue | 102 +
ruoyi-ui/src/views/dashboard/LineChart.vue | 135 ++
ruoyi-ui/src/views/dashboard/PanelGroup.vue | 181 ++
ruoyi-ui/src/views/dashboard/PieChart.vue | 79 +
ruoyi-ui/src/views/dashboard/RaddarChart.vue | 116 ++
ruoyi-ui/src/views/dashboard/mixins/resize.js | 56 +
ruoyi-ui/src/views/error/401.vue | 88 +
ruoyi-ui/src/views/error/404.vue | 233 +++
ruoyi-ui/src/views/index.vue | 1097 ++++++++++
ruoyi-ui/src/views/index_v1.vue | 98 +
ruoyi-ui/src/views/login.vue | 219 ++
ruoyi-ui/src/views/monitor/cache/index.vue | 148 ++
ruoyi-ui/src/views/monitor/cache/list.vue | 241 +++
ruoyi-ui/src/views/monitor/druid/index.vue | 15 +
ruoyi-ui/src/views/monitor/job/index.vue | 513 +++++
ruoyi-ui/src/views/monitor/job/log.vue | 295 +++
.../src/views/monitor/logininfor/index.vue | 246 +++
ruoyi-ui/src/views/monitor/online/index.vue | 122 ++
ruoyi-ui/src/views/monitor/operlog/index.vue | 323 +++
ruoyi-ui/src/views/monitor/server/index.vue | 207 ++
ruoyi-ui/src/views/redirect.vue | 12 +
ruoyi-ui/src/views/register.vue | 210 ++
ruoyi-ui/src/views/system/config/index.vue | 343 ++++
ruoyi-ui/src/views/system/dept/index.vue | 340 ++++
ruoyi-ui/src/views/system/dict/data.vue | 402 ++++
ruoyi-ui/src/views/system/dict/index.vue | 347 ++++
ruoyi-ui/src/views/system/menu/index.vue | 452 ++++
ruoyi-ui/src/views/system/notice/index.vue | 312 +++
ruoyi-ui/src/views/system/post/index.vue | 309 +++
ruoyi-ui/src/views/system/role/authUser.vue | 199 ++
ruoyi-ui/src/views/system/role/index.vue | 605 ++++++
ruoyi-ui/src/views/system/role/selectUser.vue | 136 ++
ruoyi-ui/src/views/system/user/authRole.vue | 117 ++
ruoyi-ui/src/views/system/user/index.vue | 676 ++++++
.../src/views/system/user/profile/index.vue | 91 +
.../views/system/user/profile/resetPwd.vue | 69 +
.../views/system/user/profile/userAvatar.vue | 184 ++
.../views/system/user/profile/userInfo.vue | 88 +
.../src/views/tool/build/CodeTypeDialog.vue | 106 +
.../src/views/tool/build/DraggableItem.vue | 100 +
ruoyi-ui/src/views/tool/build/IconsDialog.vue | 123 ++
ruoyi-ui/src/views/tool/build/RightPanel.vue | 946 +++++++++
.../src/views/tool/build/TreeNodeDialog.vue | 149 ++
ruoyi-ui/src/views/tool/build/index.vue | 768 +++++++
ruoyi-ui/src/views/tool/gen/basicInfoForm.vue | 60 +
ruoyi-ui/src/views/tool/gen/createTable.vue | 45 +
ruoyi-ui/src/views/tool/gen/editTable.vue | 234 +++
ruoyi-ui/src/views/tool/gen/genInfoForm.vue | 312 +++
ruoyi-ui/src/views/tool/gen/importTable.vue | 120 ++
ruoyi-ui/src/views/tool/gen/index.vue | 354 ++++
ruoyi-ui/src/views/tool/swagger/index.vue | 15 +
ruoyi-ui/vue.config.js | 130 ++
ry.bat | 67 +
ry.sh | 86 +
sql/quartz.sql | 174 ++
sql/ry_20240629.sql | 701 +++++++
718 files changed, 67569 insertions(+)
create mode 100644 LICENSE
create mode 100644 README.md
create mode 100644 bin/clean.bat
create mode 100644 bin/package.bat
create mode 100644 bin/run.bat
create mode 100644 business/pom.xml
create mode 100644 business/src/main/java/com/fizz/business/controller/CrmPdiPlanController.java
create mode 100644 business/src/main/java/com/fizz/business/controller/CrmPdoExcoilController.java
create mode 100644 business/src/main/java/com/fizz/business/controller/RollerController.java
create mode 100644 business/src/main/java/com/fizz/business/domain/CrmPdiPlan.java
create mode 100644 business/src/main/java/com/fizz/business/domain/CrmPdoExcoil.java
create mode 100644 business/src/main/java/com/fizz/business/domain/PlantConfig.java
create mode 100644 business/src/main/java/com/fizz/business/domain/RollChangeCycle.java
create mode 100644 business/src/main/java/com/fizz/business/domain/RollData.java
create mode 100644 business/src/main/java/com/fizz/business/domain/RollHistory.java
create mode 100644 business/src/main/java/com/fizz/business/domain/ShiftHistory.java
create mode 100644 business/src/main/java/com/fizz/business/dto/10086.txt
create mode 100644 business/src/main/java/com/fizz/business/form/PlanQueryForm.java
create mode 100644 business/src/main/java/com/fizz/business/form/RollHistoryForm.java
create mode 100644 business/src/main/java/com/fizz/business/interceptor/10086.txt
create mode 100644 business/src/main/java/com/fizz/business/mapper/CrmPdiPlanMapper.java
create mode 100644 business/src/main/java/com/fizz/business/mapper/CrmPdoExcoilMapper.java
create mode 100644 business/src/main/java/com/fizz/business/mapper/PlantConfigMapper.java
create mode 100644 business/src/main/java/com/fizz/business/mapper/RollChangeCycleMapper.java
create mode 100644 business/src/main/java/com/fizz/business/mapper/RollDataMapper.java
create mode 100644 business/src/main/java/com/fizz/business/mapper/RollHistoryMapper.java
create mode 100644 business/src/main/java/com/fizz/business/mapper/ShiftHistoryMapper.java
create mode 100644 business/src/main/java/com/fizz/business/mq/10086.txt
create mode 100644 business/src/main/java/com/fizz/business/scheduled/10086.txt
create mode 100644 business/src/main/java/com/fizz/business/service/CrmPdiPlanService.java
create mode 100644 business/src/main/java/com/fizz/business/service/CrmPdoExcoilService.java
create mode 100644 business/src/main/java/com/fizz/business/service/PlantConfigService.java
create mode 100644 business/src/main/java/com/fizz/business/service/RollChangeCycleService.java
create mode 100644 business/src/main/java/com/fizz/business/service/RollDataService.java
create mode 100644 business/src/main/java/com/fizz/business/service/RollHistoryService.java
create mode 100644 business/src/main/java/com/fizz/business/service/ShiftHistoryService.java
create mode 100644 business/src/main/java/com/fizz/business/service/impl/CrmPdiPlanServiceImpl.java
create mode 100644 business/src/main/java/com/fizz/business/service/impl/CrmPdoExcoilServiceImpl.java
create mode 100644 business/src/main/java/com/fizz/business/service/impl/PlantConfigServiceImpl.java
create mode 100644 business/src/main/java/com/fizz/business/service/impl/RollChangeCycleServiceImpl.java
create mode 100644 business/src/main/java/com/fizz/business/service/impl/RollDataServiceImpl.java
create mode 100644 business/src/main/java/com/fizz/business/service/impl/RollHistoryServiceImpl.java
create mode 100644 business/src/main/java/com/fizz/business/service/impl/ShiftHistoryServiceImpl.java
create mode 100644 business/src/main/java/com/fizz/business/utils/10086.txt
create mode 100644 business/src/main/java/com/fizz/business/vo/AlarmResultVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/AlarmVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/AudioVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/ChartVo.java
create mode 100644 business/src/main/java/com/fizz/business/vo/ConfPlantVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/CurrentAndPowerCountVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/DailyScheduleVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/DeviceInfoVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/DeviceListVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/DeviceMessageVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/DeviceStatusInfo.java
create mode 100644 business/src/main/java/com/fizz/business/vo/DeviceStatusInfoVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/DeviceStatusVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/DtuVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/EnergyCurrentVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/EnergyVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/EventRecordsVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/FactorAllRealtimeDataVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/FactorDailyVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/FactorDataDVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/FactorDataRealtimeVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/FactorDataVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/FactorRealTimeVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/FactorValue.java
create mode 100644 business/src/main/java/com/fizz/business/vo/FrontTreeDataVo.java
create mode 100644 business/src/main/java/com/fizz/business/vo/FrontVo.java
create mode 100644 business/src/main/java/com/fizz/business/vo/Home25RealtimeTrend.java
create mode 100644 business/src/main/java/com/fizz/business/vo/LiveDetailVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/LiveHtmlVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/LoginKeyVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/MeasureVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/MonitorDataVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/OnlineRollDataVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/OriginVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/OverFlowVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/ProcessTrendVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/ReadyRollDataVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/RealtimeDataVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/ResultDetails.java
create mode 100644 business/src/main/java/com/fizz/business/vo/SignalScheduleVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/UnitVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/companyDevice/CompanyDeviceVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/companyDevice/DeviceAreaVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/companyDevice/DevicePointVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/companyDevice/DevicePostionVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/companyDevice/DeviceValueVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/iot/ChinaVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/iot/DeviceInfoVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/iot/OrganizationInfoVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/iot/ProcedureInformationVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/iot/ProductAttributeDefineVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/iot/ProductAttributeVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/iot/ProductCategoryVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/iot/ProductEventVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/iot/ProductInfoVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/iot/ProductParameterVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/iot/ProductServiceVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/iot/TopicInfoVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/report/DrainageConsumablesReportVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/report/DrainageDailyReportVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/report/DrainageWetSludgeVO.java
create mode 100644 business/src/main/java/com/fizz/business/vo/report/MonthlyWaterQualityVO.java
create mode 100644 business/src/main/resources/mapper/CrmPdiPlanMapper.xml
create mode 100644 business/src/main/resources/mapper/CrmPdoExcoilMapper.xml
create mode 100644 business/src/main/resources/mapper/PlantConfigMapper.xml
create mode 100644 business/src/main/resources/mapper/RollChangeCycleMapper.xml
create mode 100644 business/src/main/resources/mapper/RollDataMapper.xml
create mode 100644 business/src/main/resources/mapper/RollHistoryMapper.xml
create mode 100644 business/src/main/resources/mapper/ShiftHistoryMapper.xml
create mode 100644 business/src/main/resources/template/10086.txt
create mode 100644 business/target/classes/mapper/RollDataMapper.xml
create mode 100644 business/target/classes/mapper/RollHistoryMapper.xml
create mode 100644 business/target/classes/template/10086.txt
create mode 100644 doc/若依环境使用手册.docx
create mode 100644 pom.xml
create mode 100644 ruoyi-admin/pom.xml
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/RuoYiServletInitializer.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/ServerController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java
create mode 100644 ruoyi-admin/src/main/resources/META-INF/spring-devtools.properties
create mode 100644 ruoyi-admin/src/main/resources/application-druid.yml
create mode 100644 ruoyi-admin/src/main/resources/application.yml
create mode 100644 ruoyi-admin/src/main/resources/banner.txt
create mode 100644 ruoyi-admin/src/main/resources/i18n/messages.properties
create mode 100644 ruoyi-admin/src/main/resources/logback.xml
create mode 100644 ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml
create mode 100644 ruoyi-common/pom.xml
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/Anonymous.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataSource.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excels.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/Log.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/RateLimiter.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/RepeatSubmit.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/Sensitive.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/config/SwaggerConfig.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/config/serializer/SensitiveJsonSerializer.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/HttpStatus.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/ScheduleConstants.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/R.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeEntity.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/page/PageDomain.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableSupport.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/text/CharsetKit.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/text/Convert.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/text/StrFormatter.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessStatus.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/DataSourceType.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/DesensitizedType.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/HttpMethod.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/LimitType.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/OperatorType.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/UserStatus.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/DemoModeException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/GlobalException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/UtilException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/base/BaseException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileNameLengthLimitExceededException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileSizeLimitExceededException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileUploadException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/job/TaskException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/BlackListException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaExpireException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserNotExistsException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordNotMatchException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordRetryLimitExceedException.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/filter/PropertyPreExcludeFilter.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/Arith.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/DesensitizedUtil.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/ExceptionUtil.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/LogUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/MessageUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/ServletUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/Threads.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/bean/BeanUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/bean/BeanValidators.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileTypeUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/ImageUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/html/HTMLFilter.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpHelper.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/IpUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelHandlerAdapter.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/reflect/ReflectUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/sign/Base64.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/sign/Md5Utils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/spring/SpringUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/IdUtils.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/Seq.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/UUID.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/xss/Xss.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/xss/XssValidator.java
create mode 100644 ruoyi-framework/pom.xml
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataSourceAspect.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RateLimiterAspect.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/CaptchaConfig.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/FastJson2JsonRedisSerializer.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/I18nConfig.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/KaptchaTextCreator.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ServerConfig.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/DruidProperties.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicDataSourceContextHolder.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/manager/AsyncManager.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/security/context/AuthenticationContextHolder.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/security/context/PermissionContextHolder.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/AuthenticationEntryPointImpl.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Cpu.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Jvm.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Mem.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Sys.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/SysFile.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPasswordService.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPermissionService.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
create mode 100644 ruoyi-generator/pom.xml
create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/config/GenConfig.java
create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java
create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java
create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java
create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java
create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java
create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java
create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java
create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityInitializer.java
create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java
create mode 100644 ruoyi-generator/src/main/resources/generator.yml
create mode 100644 ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml
create mode 100644 ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
create mode 100644 ruoyi-generator/src/main/resources/vm/java/controller.java.vm
create mode 100644 ruoyi-generator/src/main/resources/vm/java/domain.java.vm
create mode 100644 ruoyi-generator/src/main/resources/vm/java/mapper.java.vm
create mode 100644 ruoyi-generator/src/main/resources/vm/java/service.java.vm
create mode 100644 ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm
create mode 100644 ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm
create mode 100644 ruoyi-generator/src/main/resources/vm/js/api.js.vm
create mode 100644 ruoyi-generator/src/main/resources/vm/sql/sql.vm
create mode 100644 ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm
create mode 100644 ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
create mode 100644 ruoyi-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm
create mode 100644 ruoyi-generator/src/main/resources/vm/vue/v3/index.vue.vm
create mode 100644 ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm
create mode 100644 ruoyi-quartz/pom.xml
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/config/ScheduleConfig.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobLogController.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/domain/SysJob.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/domain/SysJobLog.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobLogMapper.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobMapper.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobLogService.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobService.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobLogServiceImpl.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/AbstractQuartzJob.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/CronUtils.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/JobInvokeUtil.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/QuartzDisallowConcurrentExecution.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/QuartzJobExecution.java
create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/ScheduleUtils.java
create mode 100644 ruoyi-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml
create mode 100644 ruoyi-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml
create mode 100644 ruoyi-system/pom.xml
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysCache.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserOnlineService.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java
create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml
create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml
create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml
create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml
create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml
create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml
create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml
create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml
create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml
create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
create mode 100644 ruoyi-ui/.editorconfig
create mode 100644 ruoyi-ui/.env.development
create mode 100644 ruoyi-ui/.env.production
create mode 100644 ruoyi-ui/.env.staging
create mode 100644 ruoyi-ui/.eslintignore
create mode 100644 ruoyi-ui/.eslintrc.js
create mode 100644 ruoyi-ui/README.md
create mode 100644 ruoyi-ui/babel.config.js
create mode 100644 ruoyi-ui/bin/build.bat
create mode 100644 ruoyi-ui/bin/package.bat
create mode 100644 ruoyi-ui/bin/run-web.bat
create mode 100644 ruoyi-ui/build/index.js
create mode 100644 ruoyi-ui/package.json
create mode 100644 ruoyi-ui/public/favicon.ico
create mode 100644 ruoyi-ui/public/html/ie.html
create mode 100644 ruoyi-ui/public/index.html
create mode 100644 ruoyi-ui/public/robots.txt
create mode 100644 ruoyi-ui/src/App.vue
create mode 100644 ruoyi-ui/src/api/login.js
create mode 100644 ruoyi-ui/src/api/menu.js
create mode 100644 ruoyi-ui/src/api/monitor/cache.js
create mode 100644 ruoyi-ui/src/api/monitor/job.js
create mode 100644 ruoyi-ui/src/api/monitor/jobLog.js
create mode 100644 ruoyi-ui/src/api/monitor/logininfor.js
create mode 100644 ruoyi-ui/src/api/monitor/online.js
create mode 100644 ruoyi-ui/src/api/monitor/operlog.js
create mode 100644 ruoyi-ui/src/api/monitor/server.js
create mode 100644 ruoyi-ui/src/api/system/config.js
create mode 100644 ruoyi-ui/src/api/system/dept.js
create mode 100644 ruoyi-ui/src/api/system/dict/data.js
create mode 100644 ruoyi-ui/src/api/system/dict/type.js
create mode 100644 ruoyi-ui/src/api/system/menu.js
create mode 100644 ruoyi-ui/src/api/system/notice.js
create mode 100644 ruoyi-ui/src/api/system/post.js
create mode 100644 ruoyi-ui/src/api/system/role.js
create mode 100644 ruoyi-ui/src/api/system/user.js
create mode 100644 ruoyi-ui/src/api/tool/gen.js
create mode 100644 ruoyi-ui/src/assets/401_images/401.gif
create mode 100644 ruoyi-ui/src/assets/404_images/404.png
create mode 100644 ruoyi-ui/src/assets/404_images/404_cloud.png
create mode 100644 ruoyi-ui/src/assets/icons/index.js
create mode 100644 ruoyi-ui/src/assets/icons/svg/404.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/bug.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/build.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/button.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/cascader.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/chart.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/checkbox.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/clipboard.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/code.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/color.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/component.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/dashboard.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/date-range.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/date.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/dict.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/documentation.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/download.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/drag.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/druid.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/edit.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/education.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/email.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/example.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/excel.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/exit-fullscreen.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/eye-open.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/eye.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/form.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/fullscreen.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/github.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/guide.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/icon.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/input.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/international.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/job.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/language.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/link.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/list.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/lock.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/log.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/logininfor.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/message.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/money.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/monitor.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/nested.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/number.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/online.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/password.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/pdf.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/people.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/peoples.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/phone.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/post.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/qq.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/question.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/radio.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/rate.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/redis-list.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/redis.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/row.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/search.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/select.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/server.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/shopping.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/size.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/skill.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/slider.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/star.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/swagger.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/switch.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/system.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/tab.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/table.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/textarea.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/theme.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/time-range.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/time.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/tool.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/tree-table.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/tree.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/upload.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/user.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/validCode.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/wechat.svg
create mode 100644 ruoyi-ui/src/assets/icons/svg/zip.svg
create mode 100644 ruoyi-ui/src/assets/icons/svgo.yml
create mode 100644 ruoyi-ui/src/assets/images/dark.svg
create mode 100644 ruoyi-ui/src/assets/images/light.svg
create mode 100644 ruoyi-ui/src/assets/images/login-background.jpg
create mode 100644 ruoyi-ui/src/assets/images/pay.png
create mode 100644 ruoyi-ui/src/assets/images/profile.jpg
create mode 100644 ruoyi-ui/src/assets/logo/logo.png
create mode 100644 ruoyi-ui/src/assets/styles/btn.scss
create mode 100644 ruoyi-ui/src/assets/styles/element-ui.scss
create mode 100644 ruoyi-ui/src/assets/styles/element-variables.scss
create mode 100644 ruoyi-ui/src/assets/styles/index.scss
create mode 100644 ruoyi-ui/src/assets/styles/mixin.scss
create mode 100644 ruoyi-ui/src/assets/styles/ruoyi.scss
create mode 100644 ruoyi-ui/src/assets/styles/sidebar.scss
create mode 100644 ruoyi-ui/src/assets/styles/transition.scss
create mode 100644 ruoyi-ui/src/assets/styles/variables.scss
create mode 100644 ruoyi-ui/src/components/Breadcrumb/index.vue
create mode 100644 ruoyi-ui/src/components/Crontab/day.vue
create mode 100644 ruoyi-ui/src/components/Crontab/hour.vue
create mode 100644 ruoyi-ui/src/components/Crontab/index.vue
create mode 100644 ruoyi-ui/src/components/Crontab/min.vue
create mode 100644 ruoyi-ui/src/components/Crontab/month.vue
create mode 100644 ruoyi-ui/src/components/Crontab/result.vue
create mode 100644 ruoyi-ui/src/components/Crontab/second.vue
create mode 100644 ruoyi-ui/src/components/Crontab/week.vue
create mode 100644 ruoyi-ui/src/components/Crontab/year.vue
create mode 100644 ruoyi-ui/src/components/DictData/index.js
create mode 100644 ruoyi-ui/src/components/DictTag/index.vue
create mode 100644 ruoyi-ui/src/components/Editor/index.vue
create mode 100644 ruoyi-ui/src/components/FileUpload/index.vue
create mode 100644 ruoyi-ui/src/components/Hamburger/index.vue
create mode 100644 ruoyi-ui/src/components/HeaderSearch/index.vue
create mode 100644 ruoyi-ui/src/components/IconSelect/index.vue
create mode 100644 ruoyi-ui/src/components/IconSelect/requireIcons.js
create mode 100644 ruoyi-ui/src/components/ImagePreview/index.vue
create mode 100644 ruoyi-ui/src/components/ImageUpload/index.vue
create mode 100644 ruoyi-ui/src/components/Pagination/index.vue
create mode 100644 ruoyi-ui/src/components/PanThumb/index.vue
create mode 100644 ruoyi-ui/src/components/ParentView/index.vue
create mode 100644 ruoyi-ui/src/components/RightPanel/index.vue
create mode 100644 ruoyi-ui/src/components/RightToolbar/index.vue
create mode 100644 ruoyi-ui/src/components/RuoYi/Doc/index.vue
create mode 100644 ruoyi-ui/src/components/RuoYi/Git/index.vue
create mode 100644 ruoyi-ui/src/components/Screenfull/index.vue
create mode 100644 ruoyi-ui/src/components/SizeSelect/index.vue
create mode 100644 ruoyi-ui/src/components/SvgIcon/index.vue
create mode 100644 ruoyi-ui/src/components/ThemePicker/index.vue
create mode 100644 ruoyi-ui/src/components/TopNav/index.vue
create mode 100644 ruoyi-ui/src/components/iFrame/index.vue
create mode 100644 ruoyi-ui/src/directive/dialog/drag.js
create mode 100644 ruoyi-ui/src/directive/dialog/dragHeight.js
create mode 100644 ruoyi-ui/src/directive/dialog/dragWidth.js
create mode 100644 ruoyi-ui/src/directive/index.js
create mode 100644 ruoyi-ui/src/directive/module/clipboard.js
create mode 100644 ruoyi-ui/src/directive/permission/hasPermi.js
create mode 100644 ruoyi-ui/src/directive/permission/hasRole.js
create mode 100644 ruoyi-ui/src/layout/components/AppMain.vue
create mode 100644 ruoyi-ui/src/layout/components/IframeToggle/index.vue
create mode 100644 ruoyi-ui/src/layout/components/InnerLink/index.vue
create mode 100644 ruoyi-ui/src/layout/components/Navbar.vue
create mode 100644 ruoyi-ui/src/layout/components/Settings/index.vue
create mode 100644 ruoyi-ui/src/layout/components/Sidebar/FixiOSBug.js
create mode 100644 ruoyi-ui/src/layout/components/Sidebar/Item.vue
create mode 100644 ruoyi-ui/src/layout/components/Sidebar/Link.vue
create mode 100644 ruoyi-ui/src/layout/components/Sidebar/Logo.vue
create mode 100644 ruoyi-ui/src/layout/components/Sidebar/SidebarItem.vue
create mode 100644 ruoyi-ui/src/layout/components/Sidebar/index.vue
create mode 100644 ruoyi-ui/src/layout/components/TagsView/ScrollPane.vue
create mode 100644 ruoyi-ui/src/layout/components/TagsView/index.vue
create mode 100644 ruoyi-ui/src/layout/components/index.js
create mode 100644 ruoyi-ui/src/layout/index.vue
create mode 100644 ruoyi-ui/src/layout/mixin/ResizeHandler.js
create mode 100644 ruoyi-ui/src/main.js
create mode 100644 ruoyi-ui/src/permission.js
create mode 100644 ruoyi-ui/src/plugins/auth.js
create mode 100644 ruoyi-ui/src/plugins/cache.js
create mode 100644 ruoyi-ui/src/plugins/download.js
create mode 100644 ruoyi-ui/src/plugins/index.js
create mode 100644 ruoyi-ui/src/plugins/modal.js
create mode 100644 ruoyi-ui/src/plugins/tab.js
create mode 100644 ruoyi-ui/src/router/index.js
create mode 100644 ruoyi-ui/src/settings.js
create mode 100644 ruoyi-ui/src/store/getters.js
create mode 100644 ruoyi-ui/src/store/index.js
create mode 100644 ruoyi-ui/src/store/modules/app.js
create mode 100644 ruoyi-ui/src/store/modules/dict.js
create mode 100644 ruoyi-ui/src/store/modules/permission.js
create mode 100644 ruoyi-ui/src/store/modules/settings.js
create mode 100644 ruoyi-ui/src/store/modules/tagsView.js
create mode 100644 ruoyi-ui/src/store/modules/user.js
create mode 100644 ruoyi-ui/src/utils/auth.js
create mode 100644 ruoyi-ui/src/utils/dict/Dict.js
create mode 100644 ruoyi-ui/src/utils/dict/DictConverter.js
create mode 100644 ruoyi-ui/src/utils/dict/DictData.js
create mode 100644 ruoyi-ui/src/utils/dict/DictMeta.js
create mode 100644 ruoyi-ui/src/utils/dict/DictOptions.js
create mode 100644 ruoyi-ui/src/utils/dict/index.js
create mode 100644 ruoyi-ui/src/utils/errorCode.js
create mode 100644 ruoyi-ui/src/utils/generator/config.js
create mode 100644 ruoyi-ui/src/utils/generator/css.js
create mode 100644 ruoyi-ui/src/utils/generator/drawingDefault.js
create mode 100644 ruoyi-ui/src/utils/generator/html.js
create mode 100644 ruoyi-ui/src/utils/generator/icon.json
create mode 100644 ruoyi-ui/src/utils/generator/js.js
create mode 100644 ruoyi-ui/src/utils/generator/render.js
create mode 100644 ruoyi-ui/src/utils/index.js
create mode 100644 ruoyi-ui/src/utils/jsencrypt.js
create mode 100644 ruoyi-ui/src/utils/permission.js
create mode 100644 ruoyi-ui/src/utils/request.js
create mode 100644 ruoyi-ui/src/utils/ruoyi.js
create mode 100644 ruoyi-ui/src/utils/scroll-to.js
create mode 100644 ruoyi-ui/src/utils/validate.js
create mode 100644 ruoyi-ui/src/views/dashboard/BarChart.vue
create mode 100644 ruoyi-ui/src/views/dashboard/LineChart.vue
create mode 100644 ruoyi-ui/src/views/dashboard/PanelGroup.vue
create mode 100644 ruoyi-ui/src/views/dashboard/PieChart.vue
create mode 100644 ruoyi-ui/src/views/dashboard/RaddarChart.vue
create mode 100644 ruoyi-ui/src/views/dashboard/mixins/resize.js
create mode 100644 ruoyi-ui/src/views/error/401.vue
create mode 100644 ruoyi-ui/src/views/error/404.vue
create mode 100644 ruoyi-ui/src/views/index.vue
create mode 100644 ruoyi-ui/src/views/index_v1.vue
create mode 100644 ruoyi-ui/src/views/login.vue
create mode 100644 ruoyi-ui/src/views/monitor/cache/index.vue
create mode 100644 ruoyi-ui/src/views/monitor/cache/list.vue
create mode 100644 ruoyi-ui/src/views/monitor/druid/index.vue
create mode 100644 ruoyi-ui/src/views/monitor/job/index.vue
create mode 100644 ruoyi-ui/src/views/monitor/job/log.vue
create mode 100644 ruoyi-ui/src/views/monitor/logininfor/index.vue
create mode 100644 ruoyi-ui/src/views/monitor/online/index.vue
create mode 100644 ruoyi-ui/src/views/monitor/operlog/index.vue
create mode 100644 ruoyi-ui/src/views/monitor/server/index.vue
create mode 100644 ruoyi-ui/src/views/redirect.vue
create mode 100644 ruoyi-ui/src/views/register.vue
create mode 100644 ruoyi-ui/src/views/system/config/index.vue
create mode 100644 ruoyi-ui/src/views/system/dept/index.vue
create mode 100644 ruoyi-ui/src/views/system/dict/data.vue
create mode 100644 ruoyi-ui/src/views/system/dict/index.vue
create mode 100644 ruoyi-ui/src/views/system/menu/index.vue
create mode 100644 ruoyi-ui/src/views/system/notice/index.vue
create mode 100644 ruoyi-ui/src/views/system/post/index.vue
create mode 100644 ruoyi-ui/src/views/system/role/authUser.vue
create mode 100644 ruoyi-ui/src/views/system/role/index.vue
create mode 100644 ruoyi-ui/src/views/system/role/selectUser.vue
create mode 100644 ruoyi-ui/src/views/system/user/authRole.vue
create mode 100644 ruoyi-ui/src/views/system/user/index.vue
create mode 100644 ruoyi-ui/src/views/system/user/profile/index.vue
create mode 100644 ruoyi-ui/src/views/system/user/profile/resetPwd.vue
create mode 100644 ruoyi-ui/src/views/system/user/profile/userAvatar.vue
create mode 100644 ruoyi-ui/src/views/system/user/profile/userInfo.vue
create mode 100644 ruoyi-ui/src/views/tool/build/CodeTypeDialog.vue
create mode 100644 ruoyi-ui/src/views/tool/build/DraggableItem.vue
create mode 100644 ruoyi-ui/src/views/tool/build/IconsDialog.vue
create mode 100644 ruoyi-ui/src/views/tool/build/RightPanel.vue
create mode 100644 ruoyi-ui/src/views/tool/build/TreeNodeDialog.vue
create mode 100644 ruoyi-ui/src/views/tool/build/index.vue
create mode 100644 ruoyi-ui/src/views/tool/gen/basicInfoForm.vue
create mode 100644 ruoyi-ui/src/views/tool/gen/createTable.vue
create mode 100644 ruoyi-ui/src/views/tool/gen/editTable.vue
create mode 100644 ruoyi-ui/src/views/tool/gen/genInfoForm.vue
create mode 100644 ruoyi-ui/src/views/tool/gen/importTable.vue
create mode 100644 ruoyi-ui/src/views/tool/gen/index.vue
create mode 100644 ruoyi-ui/src/views/tool/swagger/index.vue
create mode 100644 ruoyi-ui/vue.config.js
create mode 100644 ry.bat
create mode 100644 ry.sh
create mode 100644 sql/quartz.sql
create mode 100644 sql/ry_20240629.sql
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..8564f29
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2018 RuoYi
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e5a47b8
--- /dev/null
+++ b/README.md
@@ -0,0 +1,96 @@
+
+
+
+RuoYi v3.8.8
+基于SpringBoot+Vue前后端分离的Java快速开发框架
+
+
+
+
+
+
+## 平台简介
+
+若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。
+
+* 前端采用Vue、Element UI。
+* 后端采用Spring Boot、Spring Security、Redis & Jwt。
+* 权限认证使用Jwt,支持多终端认证系统。
+* 支持加载动态权限菜单,多方式轻松权限控制。
+* 高效率开发,使用代码生成器可以一键生成前后端代码。
+* 提供了技术栈([Vue3](https://v3.cn.vuejs.org) [Element Plus](https://element-plus.org/zh-CN) [Vite](https://cn.vitejs.dev))版本[RuoYi-Vue3](https://github.com/yangzongzhuan/RuoYi-Vue3),保持同步更新。
+* 提供了单应用版本[RuoYi-Vue-fast](https://github.com/yangzongzhuan/RuoYi-Vue-fast),Oracle版本[RuoYi-Vue-Oracle](https://github.com/yangzongzhuan/RuoYi-Vue-Oracle),保持同步更新。
+* 不分离版本,请移步[RuoYi](https://gitee.com/y_project/RuoYi),微服务版本,请移步[RuoYi-Cloud](https://gitee.com/y_project/RuoYi-Cloud)
+* 阿里云折扣场:[点我进入](http://aly.ruoyi.vip),腾讯云秒杀场:[点我进入](http://txy.ruoyi.vip)
+* 阿里云优惠券:[点我领取](https://www.aliyun.com/minisite/goods?userCode=brki8iof&share_source=copy_link),腾讯云优惠券:[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console)
+
+## 内置功能
+
+1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
+2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
+3. 岗位管理:配置系统用户所属担任职务。
+4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
+5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
+6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
+7. 参数管理:对系统动态配置常用参数。
+8. 通知公告:系统通知公告信息发布维护。
+9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
+10. 登录日志:系统登录日志记录查询包含登录异常。
+11. 在线用户:当前系统中活跃用户状态监控。
+12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
+13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
+14. 系统接口:根据业务代码自动生成相关的api接口文档。
+15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
+16. 缓存监控:对系统的缓存信息查询,命令统计等。
+17. 在线构建器:拖动表单元素生成相应的HTML代码。
+18. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
+
+## 在线体验
+
+- admin/admin123
+- 陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。
+
+演示地址:http://vue.ruoyi.vip
+文档地址:http://doc.ruoyi.vip
+
+## 演示图
+
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+
+
+## 若依前后端分离交流群
+
+QQ群: [](https://jq.qq.com/?_wv=1027&k=5bVB1og) [](https://jq.qq.com/?_wv=1027&k=5eiA4DH) [](https://jq.qq.com/?_wv=1027&k=5AxMKlC) [](https://jq.qq.com/?_wv=1027&k=51G72yr) [](https://jq.qq.com/?_wv=1027&k=VvjN2nvu) [](https://jq.qq.com/?_wv=1027&k=5vYAqA05) [](https://jq.qq.com/?_wv=1027&k=kOIINEb5) [](https://jq.qq.com/?_wv=1027&k=UKtX5jhs) [](https://jq.qq.com/?_wv=1027&k=EI9an8lJ) [](https://jq.qq.com/?_wv=1027&k=SWCtLnMz) [](https://jq.qq.com/?_wv=1027&k=96Dkdq0k) [](https://jq.qq.com/?_wv=1027&k=0fsNiYZt) [](https://jq.qq.com/?_wv=1027&k=7xw4xUG1) [](https://jq.qq.com/?_wv=1027&k=eCx8eyoJ) [](https://jq.qq.com/?_wv=1027&k=SpyH2875) [](https://jq.qq.com/?_wv=1027&k=tKEt51dz) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=0vBbSb0ztbBgVtn3kJS-Q4HUNYwip89G&authKey=8irq5PhutrZmWIvsUsklBxhj57l%2F1nOZqjzigkXZVoZE451GG4JHPOqW7AW6cf0T&noverify=0&group_code=143961921) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ZFAPAbp09S2ltvwrJzp7wGlbopsc0rwi&authKey=HB2cxpxP2yspk%2Bo3WKTBfktRCccVkU26cgi5B16u0KcAYrVu7sBaE7XSEqmMdFQp&noverify=0&group_code=174951577) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Fn2aF5IHpwsy8j6VlalNJK6qbwFLFHat&authKey=uyIT%2B97x2AXj3odyXpsSpVaPMC%2Bidw0LxG5MAtEqlrcBcWJUA%2FeS43rsF1Tg7IRJ&noverify=0&group_code=161281055) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=XIzkm_mV2xTsUtFxo63bmicYoDBA6Ifm&authKey=dDW%2F4qsmw3x9govoZY9w%2FoWAoC4wbHqGal%2BbqLzoS6VBarU8EBptIgPKN%2FviyC8j&noverify=0&group_code=138988063) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DkugnCg68PevlycJSKSwjhFqfIgrWWwR&authKey=pR1Pa5lPIeGF%2FFtIk6d%2FGB5qFi0EdvyErtpQXULzo03zbhopBHLWcuqdpwY241R%2F&noverify=0&group_code=151450850) 点击按钮入群。
\ No newline at end of file
diff --git a/bin/clean.bat b/bin/clean.bat
new file mode 100644
index 0000000..24c0974
--- /dev/null
+++ b/bin/clean.bat
@@ -0,0 +1,12 @@
+@echo off
+echo.
+echo [Ϣ] target·
+echo.
+
+%~d0
+cd %~dp0
+
+cd ..
+call mvn clean
+
+pause
\ No newline at end of file
diff --git a/bin/package.bat b/bin/package.bat
new file mode 100644
index 0000000..c693ec0
--- /dev/null
+++ b/bin/package.bat
@@ -0,0 +1,12 @@
+@echo off
+echo.
+echo [Ϣ] Weḅwar/jarļ
+echo.
+
+%~d0
+cd %~dp0
+
+cd ..
+call mvn clean package -Dmaven.test.skip=true
+
+pause
\ No newline at end of file
diff --git a/bin/run.bat b/bin/run.bat
new file mode 100644
index 0000000..41efbd0
--- /dev/null
+++ b/bin/run.bat
@@ -0,0 +1,14 @@
+@echo off
+echo.
+echo [Ϣ] ʹJarWeb̡
+echo.
+
+cd %~dp0
+cd ../ruoyi-admin/target
+
+set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
+
+java -jar %JAVA_OPTS% ruoyi-admin.jar
+
+cd bin
+pause
\ No newline at end of file
diff --git a/business/pom.xml b/business/pom.xml
new file mode 100644
index 0000000..caebf4a
--- /dev/null
+++ b/business/pom.xml
@@ -0,0 +1,108 @@
+
+
+
+ ruoyi
+ com.ruoyi
+ 3.8.8
+
+ 4.0.0
+
+ business
+
+
+ 业务模块
+
+
+
+
+
+
+ com.ruoyi
+ ruoyi-common
+
+
+
+
+
+
+
+
+ com.github.xiaoymin
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+
+ io.swagger
+ swagger-models
+ 1.6.2
+
+
+
+
+ com.ruoyi
+ ruoyi-framework
+
+
+
+
+ org.bouncycastle
+ bcprov-jdk15on
+ 1.70
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+ junit
+ junit
+ test
+
+
+
+ org.mapstruct
+ mapstruct
+ 1.3.1.Final
+
+
+ org.mapstruct
+ mapstruct-processor
+ 1.3.1.Final
+ provided
+
+
+
+
+ org.apache.rocketmq
+ rocketmq-spring-boot-starter
+ 2.1.1
+
+
+
+ com.alibaba
+ easyexcel
+ 3.1.0
+
+
+ poi-ooxml-schemas
+ org.apache.poi
+
+
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.83
+
+
+
+
+
\ No newline at end of file
diff --git a/business/src/main/java/com/fizz/business/controller/CrmPdiPlanController.java b/business/src/main/java/com/fizz/business/controller/CrmPdiPlanController.java
new file mode 100644
index 0000000..0de0ead
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/controller/CrmPdiPlanController.java
@@ -0,0 +1,54 @@
+package com.fizz.business.controller;
+
+import com.fizz.business.domain.CrmPdiPlan;
+import com.fizz.business.form.PlanQueryForm;
+import com.fizz.business.service.CrmPdiPlanService;
+import com.ruoyi.common.annotation.Anonymous;
+import com.ruoyi.common.core.domain.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/pdi")
+@Api("南钢计划接口")
+public class CrmPdiPlanController {
+
+ @Autowired
+ private CrmPdiPlanService crmPdiPlanService;
+
+ @GetMapping("/get/{coilid}")
+ @ApiOperation("通过钢卷号查询计划")
+ public R getByCoilId(@PathVariable String coilid) {
+
+ return R.ok(crmPdiPlanService.getByCoilIdAndOperId(coilid));
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("新增计划")
+ public boolean add(@RequestBody CrmPdiPlan crmPdiPlan) {
+ return crmPdiPlanService.addCrmPdiPlan(crmPdiPlan);
+ }
+
+ @PutMapping("/update")
+ @ApiOperation("修改计划")
+ public boolean update(@RequestBody CrmPdiPlan crmPdiPlan) {
+ return crmPdiPlanService.updateCrmPdiPlan(crmPdiPlan);
+ }
+
+ @PostMapping("/delete")
+ @ApiOperation("计划删除")
+ public boolean delete(@RequestBody List coilid) {
+ return crmPdiPlanService.deleteCrmPdiPlan(coilid);
+ }
+
+ @PostMapping("/list")
+ @ApiOperation("查询计划列表")
+ public R> list(@RequestBody PlanQueryForm form) {
+ return R.ok(crmPdiPlanService.listAll(form));
+ }
+}
diff --git a/business/src/main/java/com/fizz/business/controller/CrmPdoExcoilController.java b/business/src/main/java/com/fizz/business/controller/CrmPdoExcoilController.java
new file mode 100644
index 0000000..3df6938
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/controller/CrmPdoExcoilController.java
@@ -0,0 +1,51 @@
+package com.fizz.business.controller;
+
+import com.fizz.business.domain.CrmPdoExcoil;
+import com.fizz.business.service.CrmPdoExcoilService;
+import com.ruoyi.common.annotation.Anonymous;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/pdo")
+@Api("南钢实绩接口")
+public class CrmPdoExcoilController {
+
+ @Autowired
+ private CrmPdoExcoilService crmPdoExcoilService;
+
+ @GetMapping("/get/{excoilid}/{operid}")
+ @ApiOperation("查询实绩")
+ public CrmPdoExcoil getByExcoilIdAndOperId(@PathVariable String excoilid, @PathVariable Integer operid) {
+ return crmPdoExcoilService.getByExcoilIdAndOperId(excoilid, operid);
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("新增实绩")
+ public boolean add(@RequestBody CrmPdoExcoil crmPdoExcoil) {
+ return crmPdoExcoilService.addCrmPdoExcoil(crmPdoExcoil);
+ }
+
+ @PutMapping("/update")
+ @ApiOperation("修改")
+ public boolean update(@RequestBody CrmPdoExcoil crmPdoExcoil) {
+ return crmPdoExcoilService.updateCrmPdoExcoil(crmPdoExcoil);
+ }
+
+ @DeleteMapping("/delete/{excoilid}/{operid}")
+ @ApiOperation("删除实绩")
+ public boolean delete(@PathVariable String excoilid, @PathVariable Integer operid) {
+ return crmPdoExcoilService.deleteCrmPdoExcoil(excoilid, operid);
+ }
+
+ @GetMapping("/list")
+ @ApiOperation("查询实绩列表")
+ public List list() {
+ return crmPdoExcoilService.listAll();
+ }
+}
diff --git a/business/src/main/java/com/fizz/business/controller/RollerController.java b/business/src/main/java/com/fizz/business/controller/RollerController.java
new file mode 100644
index 0000000..848645d
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/controller/RollerController.java
@@ -0,0 +1,77 @@
+package com.fizz.business.controller;
+
+import com.fizz.business.domain.CrmPdiPlan;
+import com.fizz.business.domain.RollData;
+import com.fizz.business.domain.RollHistory;
+import com.fizz.business.form.RollHistoryForm;
+import com.fizz.business.service.RollDataService;
+import com.fizz.business.service.RollHistoryService;
+import com.fizz.business.vo.OnlineRollDataVO;
+import com.fizz.business.vo.ReadyRollDataVO;
+import com.ruoyi.common.annotation.Anonymous;
+import com.ruoyi.common.core.domain.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/roller")
+@Api("南钢轧辊接口")
+public class RollerController {
+ @Resource
+ RollHistoryService rollHistoryService;
+
+ @Resource
+ RollDataService rollDataService;
+
+ @GetMapping("/data/backup")
+ @ApiOperation("轧辊数据-获取当前备辊信息")
+ public R > getReadyRollList() {
+ return R.ok(rollDataService.getReadyRollList(null,null,"BACKUP"));
+ }
+
+ @GetMapping("/data/ready/{position}/{type}")
+ @ApiOperation("轧辊数据-获取离线辊信息")
+ public R > getOfflineRollList(@PathVariable String position, @PathVariable String type) {
+ return R.ok(rollDataService.getReadyRollList(position,type,"OFFLINE"));
+ }
+
+ @GetMapping("/data/online")
+ @ApiOperation("轧辊数据-获取在线辊信息")
+ public R> getOnlineRollList() {
+ return R.ok(rollDataService.getOnlineRollList());
+ }
+
+ @GetMapping("/change/backup")
+ @ApiOperation("轧辊操作-备辊")
+ public R> backupRoll(@RequestBody List rollList) {
+ return R.ok(rollDataService.BackupRoll(rollList));
+ }
+
+ @GetMapping("/change/online")
+ @ApiOperation("轧辊操作-上线")
+ public R> onlineRoll() {
+ return R.ok(rollDataService.onlineRoll());
+ }
+
+ @GetMapping("/history/changeid")
+ @ApiOperation("轧辊历史-获取所有换辊号")
+ public R> getChangeIdList() {
+ return R.ok(rollHistoryService.getChangeIdList());
+ }
+
+ @GetMapping("/history/rollid")
+ @ApiOperation("轧辊历史-获取所有轧辊号")
+ public R> getRollIdList() {
+ return R.ok(rollHistoryService.getRollIdList());
+ }
+
+ @GetMapping("/history/list")
+ @ApiOperation("轧辊历史-获取换辊记录")
+ public R> getRollHistorytList(@RequestBody RollHistoryForm rollHistoryForm) {
+ return R.ok(rollHistoryService.getRollHistory(rollHistoryForm));
+ }
+}
diff --git a/business/src/main/java/com/fizz/business/domain/CrmPdiPlan.java b/business/src/main/java/com/fizz/business/domain/CrmPdiPlan.java
new file mode 100644
index 0000000..6d594d6
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/domain/CrmPdiPlan.java
@@ -0,0 +1,121 @@
+package com.fizz.business.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("crm_pdi_plan")
+public class CrmPdiPlan implements Serializable {
+
+ @TableId
+ @ApiModelProperty(value = "id")
+ private Long id;
+
+ @ApiModelProperty(value = "序列号")
+ private Integer seqid;
+
+ @ApiModelProperty(value = "多火轧制次数")
+ private Integer operid;
+
+ @ApiModelProperty(value = "卷ID")
+ private String coilid;
+
+ @ApiModelProperty(value = "热轧卷ID")
+ private String hotCoilid;
+
+ @ApiModelProperty(value = "道次数")
+ private Integer passno;
+
+ @ApiModelProperty(value = "退火厚度")
+ private Integer annealThick;
+
+ @ApiModelProperty(value = "入口厚度")
+ private Float entryThick;
+
+ @ApiModelProperty(value = "入口宽度")
+ private Float entryWidth;
+
+ @ApiModelProperty(value = "入口重量")
+ private Float entryWeight;
+
+ @ApiModelProperty(value = "入口长度")
+ private Float entryLength;
+
+ @ApiModelProperty(value = "入口内径")
+ private Integer entryInnerDiameter;
+
+ @ApiModelProperty(value = "入口外径")
+ private Integer entryOuterDiameter;
+
+ @ApiModelProperty(value = "出口卷号")
+ private String exitCoilid;
+
+ @ApiModelProperty(value = "下工序代码")
+ private String nextUnit;
+
+ @ApiModelProperty(value = "分割数量")
+ private Integer splitNum;
+
+ @ApiModelProperty(value = "切割模式")
+ private Integer cutMode;
+
+ @ApiModelProperty(value = "出口重量1")
+ private Float exitValue1;
+
+ @ApiModelProperty(value = "出口重量2")
+ private Float exitValue2;
+
+ @ApiModelProperty(value = "出口重量3")
+ private Float exitValue3;
+
+ @ApiModelProperty(value = "出口重量4")
+ private Float exitValue4;
+
+ @ApiModelProperty(value = "出口重量5")
+ private Float exitValue5;
+
+ @ApiModelProperty(value = "出口重量6")
+ private Float exitValue6;
+
+ @ApiModelProperty(value = "出口重量")
+ private Float exitWeight;
+
+ @ApiModelProperty(value = "出口长度")
+ private Float exitLength;
+
+ @ApiModelProperty(value = "出口厚度")
+ private Float exitThick;
+
+ @ApiModelProperty(value = "出口宽度")
+ private Float exitWidth;
+
+ @ApiModelProperty(value = "等级")
+ private String grade;
+
+ @ApiModelProperty(value = "屈服强度")
+ private Integer yieldStrength;
+
+ @ApiModelProperty(value = "抗拉强度")
+ private Integer tensileStrength;
+
+ @ApiModelProperty(value = "状态")
+ private String status;
+
+ @ApiModelProperty(value = "记录日期")
+ private LocalDateTime insdate;
+
+ @ApiModelProperty(value = "上线时间")
+ private LocalDateTime onlineTime;
+
+ @ApiModelProperty(value = "开始日期")
+ private LocalDateTime startDate;
+
+ @ApiModelProperty(value = "结束日期")
+ private LocalDateTime endDate;
+}
\ No newline at end of file
diff --git a/business/src/main/java/com/fizz/business/domain/CrmPdoExcoil.java b/business/src/main/java/com/fizz/business/domain/CrmPdoExcoil.java
new file mode 100644
index 0000000..7322f03
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/domain/CrmPdoExcoil.java
@@ -0,0 +1,105 @@
+package com.fizz.business.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+@Data
+@TableName("crm_pdo_excoil")
+public class CrmPdoExcoil implements Serializable {
+
+ @TableId
+ @ApiModelProperty(value = "成品卷ID")
+ private String excoilid;
+
+ @ApiModelProperty(value = "进入卷ID")
+ private String encoilid;
+
+ @ApiModelProperty(value = "钢种")
+ private String grade;
+
+ @ApiModelProperty(value = "多火轧制次数")
+ private Integer operid;
+
+ @ApiModelProperty(value = "分卷id")
+ private Integer subid;
+
+ @ApiModelProperty(value = "头部位置")
+ private Float headpos;
+
+ @ApiModelProperty(value = "尾部位置")
+ private Float tailpos;
+
+ @ApiModelProperty(value = "班次")
+ private String shift;
+
+ @ApiModelProperty(value = "班组")
+ private String crew;
+
+ @ApiModelProperty(value = "退火厚度")
+ private Float annealThick;
+
+ @ApiModelProperty(value = "入口厚度")
+ private Float entryThick;
+
+ @ApiModelProperty(value = "入口宽度")
+ private Float entryWidth;
+
+ @ApiModelProperty(value = "入口重量")
+ private Float entryWeight;
+
+ @ApiModelProperty(value = "成品厚度")
+ private Float exitThick;
+
+ @ApiModelProperty(value = "成品宽度")
+ private Float exitWidth;
+
+ @ApiModelProperty(value = "成品长度")
+ private Float exitLength;
+
+ @ApiModelProperty(value = "成品内径")
+ private Float exitInnerDiameter;
+
+ @ApiModelProperty(value = "理论出口重量")
+ private Float calcExitWeight;
+
+ @ApiModelProperty(value = "实际出口重量")
+ private Float measExitWeight;
+
+ @ApiModelProperty(value = "外径")
+ private Float outerDiameter;
+
+ @ApiModelProperty(value = "状态")
+ private String status;
+
+ @ApiModelProperty(value = "上线时间")
+ private Timestamp onlineDate;
+
+ @ApiModelProperty(value = "开始时间")
+ private Timestamp startDate;
+
+ @ApiModelProperty(value = "结束时间")
+ private Timestamp endDate;
+
+ @ApiModelProperty(value = "插入日期")
+ private Timestamp insdate;
+
+ @ApiModelProperty(value = "质量")
+ private Float quality;
+
+ @ApiModelProperty(value = "热卷ID")
+ private String hotCoilid;
+
+ @ApiModelProperty(value = "下机组代码")
+ private String nextUnit;
+
+ @ApiModelProperty(value = "备注")
+ private String comments;
+
+ @ApiModelProperty(value = "目的地")
+ private String destination;
+}
diff --git a/business/src/main/java/com/fizz/business/domain/PlantConfig.java b/business/src/main/java/com/fizz/business/domain/PlantConfig.java
new file mode 100644
index 0000000..19c64fe
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/domain/PlantConfig.java
@@ -0,0 +1,36 @@
+package com.fizz.business.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("plant_config")
+@ApiModel(value = "PlantConfig对象", description = "配置数据")
+public class PlantConfig implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "名称")
+ private String varname;
+
+ @ApiModelProperty(value = "arrayindex")
+ private Integer arrayindex;
+
+ @ApiModelProperty(value = "描述")
+ private String description;
+
+ @ApiModelProperty(value = "值")
+ private String value;
+
+ @ApiModelProperty(value = "单位")
+ private String unit;
+
+ @ApiModelProperty(value = "时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime timestamp;
+}
diff --git a/business/src/main/java/com/fizz/business/domain/RollChangeCycle.java b/business/src/main/java/com/fizz/business/domain/RollChangeCycle.java
new file mode 100644
index 0000000..47d255a
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/domain/RollChangeCycle.java
@@ -0,0 +1,39 @@
+package com.fizz.business.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("roll_change_cycle")
+@ApiModel(value = "RollChangeCycle对象", description = "换辊")
+public class RollChangeCycle implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "类型")
+ private String type;
+
+ @ApiModelProperty(value = "位置")
+ private String position;
+
+ @ApiModelProperty(value = "机架号")
+ private Integer standid;
+
+ @ApiModelProperty(value = "轧制长度")
+ private Double rolledLength;
+
+ @ApiModelProperty(value = "轧制重量")
+ private Double rolledWeight;
+
+ @ApiModelProperty(value = "轧制数量")
+ private Integer rolledCount;
+
+ @ApiModelProperty(value = "insdate")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime insdate;
+}
diff --git a/business/src/main/java/com/fizz/business/domain/RollData.java b/business/src/main/java/com/fizz/business/domain/RollData.java
new file mode 100644
index 0000000..3213368
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/domain/RollData.java
@@ -0,0 +1,88 @@
+package com.fizz.business.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@TableName("roll_data")
+@ApiModel(value = "RollData对象", description = "轧辊数据")
+@Getter
+@Setter
+@Builder
+public class RollData implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "rollid",type = IdType.INPUT)
+ @ApiModelProperty(value = "轧辊号")
+ private String rollid;
+
+ @ApiModelProperty(value = "工序")
+ private String seton;
+
+ @ApiModelProperty(value = "类型")
+ private String type;
+
+ @ApiModelProperty(value = "位置")
+ private String position;
+
+ @ApiModelProperty(value = "机架号")
+ private Integer standid;
+
+ @ApiModelProperty(value = "消耗")
+ private Integer composition;
+
+ @ApiModelProperty(value = "直径")
+ private Double diameter;
+
+ @ApiModelProperty(value = "粗糙度")
+ private Double rough;
+
+ @ApiModelProperty(value = "凸度")
+ private Double crown;
+
+ @ApiModelProperty(value = "轧制长度")
+ private Double rolledLength;
+
+ @ApiModelProperty(value = "轧制重量")
+ private Double rolledWeight;
+
+ @ApiModelProperty(value = "轧制数量")
+ private Integer rolledCount;
+
+ @ApiModelProperty(value = "总轧制重量")
+ private Double totalRolledWeight;
+
+ @ApiModelProperty(value = "总轧制长度")
+ private Double totalRolledLength;
+
+ @ApiModelProperty(value = "总轧制数量")
+ private Integer totalRolledCount;
+
+ @ApiModelProperty(value = "修理次数")
+ private Integer grindCount;
+
+ @ApiModelProperty(value = "状态")
+ private String status;
+
+ @ApiModelProperty(value = "Installation Time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime instalTime;
+
+ @ApiModelProperty(value = "Deinstallation Time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime deinstalTime;
+
+ @ApiModelProperty(value = "Update Time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updtime;
+}
diff --git a/business/src/main/java/com/fizz/business/domain/RollHistory.java b/business/src/main/java/com/fizz/business/domain/RollHistory.java
new file mode 100644
index 0000000..486acba
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/domain/RollHistory.java
@@ -0,0 +1,94 @@
+package com.fizz.business.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Getter
+@Setter
+@Builder
+@TableName("Roll_history")
+@ApiModel(value = "RollHistory对象", description = "轧辊历史")
+public class RollHistory implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "轧辊号")
+ private String rollid;
+
+ @ApiModelProperty(value = "换辊id")
+ private String changeid;
+
+ @ApiModelProperty(value = "班")
+ private String shift;
+
+ @ApiModelProperty(value = "组")
+ private String crew;
+
+ @ApiModelProperty(value = "工序")
+ private String seton;
+
+ @ApiModelProperty(value = "类型")
+ private String type;
+
+ @ApiModelProperty(value = "位置")
+ private String position;
+
+ @ApiModelProperty(value = "机架号")
+ private Integer standid;
+
+ @ApiModelProperty(value = "消化")
+ private Integer composition;
+
+ @ApiModelProperty(value = "直径")
+ private Double diameter;
+
+ @ApiModelProperty(value = "粗糙度")
+ private Double rough;
+
+ @ApiModelProperty(value = "凸度")
+ private Double crown;
+
+ @ApiModelProperty(value = "轧制长度")
+ private Double rolledLength;
+
+ @ApiModelProperty(value = "轧制重量")
+ private Double rolledWeight;
+
+ @ApiModelProperty(value = "轧制数量")
+ private Integer rolledCount;
+
+ @ApiModelProperty(value = "总轧制重量")
+ private Double totalRolledWeight;
+
+ @ApiModelProperty(value = "总轧制长度")
+ private Double totalRolledLength;
+
+ @ApiModelProperty(value = "总轧制数量")
+ private Integer totalRolledCount;
+
+ @ApiModelProperty(value = "修理次数")
+ private Integer grindCount;
+
+ @ApiModelProperty(value = "换辊类型")
+ private String changeType;
+
+ @ApiModelProperty(value = "Installation Time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime instalTime;
+
+ @ApiModelProperty(value = "Deinstallation Time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime deinstalTime;
+
+ @ApiModelProperty(value = "changeTime")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime changeTime;
+}
diff --git a/business/src/main/java/com/fizz/business/domain/ShiftHistory.java b/business/src/main/java/com/fizz/business/domain/ShiftHistory.java
new file mode 100644
index 0000000..3d83c78
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/domain/ShiftHistory.java
@@ -0,0 +1,28 @@
+package com.fizz.business.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@TableName("shift_history")
+@Data
+@ApiModel(value = "RollData对象", description = "轧辊数据")
+public class ShiftHistory implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "班次")
+ private String shift;
+
+ @ApiModelProperty(value = "组次")
+ private String crew;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ApiModelProperty(value = "时间")
+ private LocalDateTime insdate;
+}
diff --git a/business/src/main/java/com/fizz/business/dto/10086.txt b/business/src/main/java/com/fizz/business/dto/10086.txt
new file mode 100644
index 0000000..56b6510
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/dto/10086.txt
@@ -0,0 +1 @@
+11111
\ No newline at end of file
diff --git a/business/src/main/java/com/fizz/business/form/PlanQueryForm.java b/business/src/main/java/com/fizz/business/form/PlanQueryForm.java
new file mode 100644
index 0000000..c944b36
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/form/PlanQueryForm.java
@@ -0,0 +1,48 @@
+package com.fizz.business.form;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+
+@Data
+public class PlanQueryForm {
+
+ @ApiModelProperty(value = "卷ID")
+ private String coilid;
+
+ @ApiModelProperty(value = "热轧卷ID")
+ private String hotCoilid;
+
+ @ApiModelProperty(value = "道次数")
+ private Integer passno;
+
+ @ApiModelProperty(value = "入口厚度")
+ private Float entryThick;
+
+ @ApiModelProperty(value = "入口宽度")
+ private Float entryWidth;
+
+ @ApiModelProperty(value = "入口内径")
+ private Integer entryInnerDiameter;
+
+ @ApiModelProperty(value = "入口外径")
+ private Integer entryOuterDiameter;
+
+ @ApiModelProperty(value = "状态")
+ private String status;
+
+ @ApiModelProperty(value = "记录日期")
+ private LocalDateTime insdate;
+
+ @ApiModelProperty(value = "上线时间")
+ private LocalDateTime onlineTime;
+
+ @ApiModelProperty(value = "开始日期")
+ private LocalDateTime startDate;
+
+ @ApiModelProperty(value = "结束日期")
+ private LocalDateTime endDate;
+
+}
diff --git a/business/src/main/java/com/fizz/business/form/RollHistoryForm.java b/business/src/main/java/com/fizz/business/form/RollHistoryForm.java
new file mode 100644
index 0000000..8c093a6
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/form/RollHistoryForm.java
@@ -0,0 +1,24 @@
+package com.fizz.business.form;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class RollHistoryForm {
+ @ApiModelProperty(value = "开始时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime startTime;
+
+ @ApiModelProperty(value = "结束时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime endTime;
+
+ @ApiModelProperty(value = "换辊号")
+ private String changeId;
+
+ @ApiModelProperty(value = "轧辊号")
+ private String rollid;
+}
diff --git a/business/src/main/java/com/fizz/business/interceptor/10086.txt b/business/src/main/java/com/fizz/business/interceptor/10086.txt
new file mode 100644
index 0000000..56b6510
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/interceptor/10086.txt
@@ -0,0 +1 @@
+11111
\ No newline at end of file
diff --git a/business/src/main/java/com/fizz/business/mapper/CrmPdiPlanMapper.java b/business/src/main/java/com/fizz/business/mapper/CrmPdiPlanMapper.java
new file mode 100644
index 0000000..12e4ff1
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/mapper/CrmPdiPlanMapper.java
@@ -0,0 +1,9 @@
+package com.fizz.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fizz.business.domain.CrmPdiPlan;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface CrmPdiPlanMapper extends BaseMapper {
+}
\ No newline at end of file
diff --git a/business/src/main/java/com/fizz/business/mapper/CrmPdoExcoilMapper.java b/business/src/main/java/com/fizz/business/mapper/CrmPdoExcoilMapper.java
new file mode 100644
index 0000000..1cdb31a
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/mapper/CrmPdoExcoilMapper.java
@@ -0,0 +1,9 @@
+package com.fizz.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fizz.business.domain.CrmPdoExcoil;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface CrmPdoExcoilMapper extends BaseMapper {
+}
diff --git a/business/src/main/java/com/fizz/business/mapper/PlantConfigMapper.java b/business/src/main/java/com/fizz/business/mapper/PlantConfigMapper.java
new file mode 100644
index 0000000..a99e0da
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/mapper/PlantConfigMapper.java
@@ -0,0 +1,11 @@
+package com.fizz.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fizz.business.domain.PlantConfig;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.Map;
+
+@Mapper
+public interface PlantConfigMapper extends BaseMapper {
+}
diff --git a/business/src/main/java/com/fizz/business/mapper/RollChangeCycleMapper.java b/business/src/main/java/com/fizz/business/mapper/RollChangeCycleMapper.java
new file mode 100644
index 0000000..e0e43e6
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/mapper/RollChangeCycleMapper.java
@@ -0,0 +1,9 @@
+package com.fizz.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fizz.business.domain.RollChangeCycle;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface RollChangeCycleMapper extends BaseMapper {
+}
diff --git a/business/src/main/java/com/fizz/business/mapper/RollDataMapper.java b/business/src/main/java/com/fizz/business/mapper/RollDataMapper.java
new file mode 100644
index 0000000..97fed3f
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/mapper/RollDataMapper.java
@@ -0,0 +1,9 @@
+package com.fizz.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fizz.business.domain.RollData;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface RollDataMapper extends BaseMapper {
+}
diff --git a/business/src/main/java/com/fizz/business/mapper/RollHistoryMapper.java b/business/src/main/java/com/fizz/business/mapper/RollHistoryMapper.java
new file mode 100644
index 0000000..e86ce15
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/mapper/RollHistoryMapper.java
@@ -0,0 +1,15 @@
+package com.fizz.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fizz.business.domain.RollHistory;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface RollHistoryMapper extends BaseMapper {
+ List getChangeIdList();
+
+ List getRollIdList();
+
+}
diff --git a/business/src/main/java/com/fizz/business/mapper/ShiftHistoryMapper.java b/business/src/main/java/com/fizz/business/mapper/ShiftHistoryMapper.java
new file mode 100644
index 0000000..5f7d6fb
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/mapper/ShiftHistoryMapper.java
@@ -0,0 +1,9 @@
+package com.fizz.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fizz.business.domain.ShiftHistory;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ShiftHistoryMapper extends BaseMapper {
+}
diff --git a/business/src/main/java/com/fizz/business/mq/10086.txt b/business/src/main/java/com/fizz/business/mq/10086.txt
new file mode 100644
index 0000000..56b6510
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/mq/10086.txt
@@ -0,0 +1 @@
+11111
\ No newline at end of file
diff --git a/business/src/main/java/com/fizz/business/scheduled/10086.txt b/business/src/main/java/com/fizz/business/scheduled/10086.txt
new file mode 100644
index 0000000..56b6510
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/scheduled/10086.txt
@@ -0,0 +1 @@
+11111
\ No newline at end of file
diff --git a/business/src/main/java/com/fizz/business/service/CrmPdiPlanService.java b/business/src/main/java/com/fizz/business/service/CrmPdiPlanService.java
new file mode 100644
index 0000000..1920de5
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/CrmPdiPlanService.java
@@ -0,0 +1,20 @@
+package com.fizz.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fizz.business.domain.CrmPdiPlan;
+import com.fizz.business.form.PlanQueryForm;
+
+import java.util.List;
+
+public interface CrmPdiPlanService extends IService {
+
+ public CrmPdiPlan getByCoilIdAndOperId(String coilid);
+
+ public boolean addCrmPdiPlan(CrmPdiPlan crmPdiPlan);
+
+ public boolean updateCrmPdiPlan(CrmPdiPlan crmPdiPlan);
+
+ public boolean deleteCrmPdiPlan(List coilid);
+
+ public List listAll(PlanQueryForm form);
+}
diff --git a/business/src/main/java/com/fizz/business/service/CrmPdoExcoilService.java b/business/src/main/java/com/fizz/business/service/CrmPdoExcoilService.java
new file mode 100644
index 0000000..5f56c04
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/CrmPdoExcoilService.java
@@ -0,0 +1,19 @@
+package com.fizz.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fizz.business.domain.CrmPdoExcoil;
+
+import java.util.List;
+
+public interface CrmPdoExcoilService extends IService {
+ CrmPdoExcoil getByExcoilIdAndOperId(String excoilid, Integer operid);
+
+ boolean addCrmPdoExcoil(CrmPdoExcoil crmPdoExcoil);
+
+ boolean updateCrmPdoExcoil(CrmPdoExcoil crmPdoExcoil);
+
+ boolean deleteCrmPdoExcoil(String excoilid, Integer operid);
+
+ List listAll();
+}
+
diff --git a/business/src/main/java/com/fizz/business/service/PlantConfigService.java b/business/src/main/java/com/fizz/business/service/PlantConfigService.java
new file mode 100644
index 0000000..80f9fcc
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/PlantConfigService.java
@@ -0,0 +1,10 @@
+package com.fizz.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fizz.business.domain.PlantConfig;
+
+import java.util.Map;
+
+public interface PlantConfigService extends IService {
+ Map getAllConfig();
+}
diff --git a/business/src/main/java/com/fizz/business/service/RollChangeCycleService.java b/business/src/main/java/com/fizz/business/service/RollChangeCycleService.java
new file mode 100644
index 0000000..88015be
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/RollChangeCycleService.java
@@ -0,0 +1,7 @@
+package com.fizz.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fizz.business.domain.RollChangeCycle;
+
+public interface RollChangeCycleService extends IService {
+}
diff --git a/business/src/main/java/com/fizz/business/service/RollDataService.java b/business/src/main/java/com/fizz/business/service/RollDataService.java
new file mode 100644
index 0000000..18b0048
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/RollDataService.java
@@ -0,0 +1,20 @@
+package com.fizz.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fizz.business.domain.RollData;
+import com.fizz.business.vo.OnlineRollDataVO;
+import com.fizz.business.vo.ReadyRollDataVO;
+
+import java.util.List;
+
+public interface RollDataService extends IService {
+ List getList(String position,String type,String status);
+
+ List getReadyRollList(String position,String type,String status);
+
+ List getOnlineRollList();
+
+ List BackupRoll(List rollList);
+
+ List onlineRoll();
+}
diff --git a/business/src/main/java/com/fizz/business/service/RollHistoryService.java b/business/src/main/java/com/fizz/business/service/RollHistoryService.java
new file mode 100644
index 0000000..5a247ea
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/RollHistoryService.java
@@ -0,0 +1,15 @@
+package com.fizz.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fizz.business.domain.RollHistory;
+import com.fizz.business.form.RollHistoryForm;
+
+import java.util.List;
+
+public interface RollHistoryService extends IService {
+ List getChangeIdList();
+
+ List getRollIdList();
+
+ List getRollHistory(RollHistoryForm rollHistoryForm);
+}
diff --git a/business/src/main/java/com/fizz/business/service/ShiftHistoryService.java b/business/src/main/java/com/fizz/business/service/ShiftHistoryService.java
new file mode 100644
index 0000000..e017841
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/ShiftHistoryService.java
@@ -0,0 +1,15 @@
+package com.fizz.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fizz.business.domain.ShiftHistory;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+public interface ShiftHistoryService extends IService {
+ ShiftHistory getCurrent();
+
+ List getShiftCurrentListByDate(LocalDateTime startTime, LocalDateTime endTime);
+
+ List getCrews();
+}
diff --git a/business/src/main/java/com/fizz/business/service/impl/CrmPdiPlanServiceImpl.java b/business/src/main/java/com/fizz/business/service/impl/CrmPdiPlanServiceImpl.java
new file mode 100644
index 0000000..40538c9
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/impl/CrmPdiPlanServiceImpl.java
@@ -0,0 +1,68 @@
+package com.fizz.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fizz.business.domain.CrmPdiPlan;
+import com.fizz.business.form.PlanQueryForm;
+import com.fizz.business.mapper.CrmPdiPlanMapper;
+import com.fizz.business.service.CrmPdiPlanService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+
+@Service
+public class CrmPdiPlanServiceImpl extends ServiceImpl implements CrmPdiPlanService {
+
+
+ /**
+ * 根据卷ID和操作员ID查询单个记录
+ * @param coilid 卷ID
+ * @return 查询到的CrmPdiPlan对象
+ */
+ public CrmPdiPlan getByCoilIdAndOperId(String coilid) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.like("coilid", coilid);
+ return this.getOne(queryWrapper);
+ }
+
+ /**
+ * 添加新记录
+ * @param crmPdiPlan 要添加的CrmPdiPlan对象
+ * @return 是否添加成功
+ */
+ public boolean addCrmPdiPlan(CrmPdiPlan crmPdiPlan) {
+ return this.save(crmPdiPlan);
+ }
+
+ /**
+ * 更新已有记录
+ * @param crmPdiPlan 要更新的CrmPdiPlan对象
+ * @return 是否更新成功
+ */
+ public boolean updateCrmPdiPlan(CrmPdiPlan crmPdiPlan) {
+ return this.updateById(crmPdiPlan);
+ }
+
+ /**
+ * 根据卷ID和操作员ID删除记录
+ * @param coilid 卷ID
+ * @return 是否删除成功
+ */
+ public boolean deleteCrmPdiPlan(List coilid) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("COILID", coilid);
+ return this.removeBatchByIds(coilid);
+ }
+
+ /**
+ * 查询所有记录
+ * @return CrmPdiPlan对象的列表
+ */
+ public List listAll(PlanQueryForm form) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.in("STATUS", "NEW","READY");
+ return this.list();
+ }
+
+}
diff --git a/business/src/main/java/com/fizz/business/service/impl/CrmPdoExcoilServiceImpl.java b/business/src/main/java/com/fizz/business/service/impl/CrmPdoExcoilServiceImpl.java
new file mode 100644
index 0000000..e379d9d
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/impl/CrmPdoExcoilServiceImpl.java
@@ -0,0 +1,64 @@
+package com.fizz.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fizz.business.domain.CrmPdoExcoil;
+import com.fizz.business.mapper.CrmPdoExcoilMapper;
+import com.fizz.business.service.CrmPdoExcoilService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class CrmPdoExcoilServiceImpl extends ServiceImpl implements CrmPdoExcoilService {
+
+ /**
+ * 根据退出卷ID和操作员ID查询记录
+ * @param excoilid 退出卷ID
+ * @param operid 操作员ID
+ * @return 查询到的CrmPdoExcoil对象
+ */
+ public CrmPdoExcoil getByExcoilIdAndOperId(String excoilid, Integer operid) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("excoilid", excoilid).eq("operid", operid);
+ return this.getOne(queryWrapper);
+ }
+
+ /**
+ * 添加新记录
+ * @param crmPdoExcoil 要添加的CrmPdoExcoil对象
+ * @return 是否添加成功
+ */
+ public boolean addCrmPdoExcoil(CrmPdoExcoil crmPdoExcoil) {
+ return this.save(crmPdoExcoil);
+ }
+
+ /**
+ * 更新已有记录
+ * @param crmPdoExcoil 要更新的CrmPdoExcoil对象
+ * @return 是否更新成功
+ */
+ public boolean updateCrmPdoExcoil(CrmPdoExcoil crmPdoExcoil) {
+ return this.updateById(crmPdoExcoil);
+ }
+
+ /**
+ * 根据退出卷ID和操作员ID删除记录
+ * @param excoilid 退出卷ID
+ * @param operid 操作员ID
+ * @return 是否删除成功
+ */
+ public boolean deleteCrmPdoExcoil(String excoilid, Integer operid) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("excoilid", excoilid).eq("operid", operid);
+ return this.remove(queryWrapper);
+ }
+
+ /**
+ * 查询所有记录
+ * @return CrmPdoExcoil对象的列表
+ */
+ public List listAll() {
+ return this.list();
+ }
+}
diff --git a/business/src/main/java/com/fizz/business/service/impl/PlantConfigServiceImpl.java b/business/src/main/java/com/fizz/business/service/impl/PlantConfigServiceImpl.java
new file mode 100644
index 0000000..0854eea
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/impl/PlantConfigServiceImpl.java
@@ -0,0 +1,22 @@
+package com.fizz.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fizz.business.domain.PlantConfig;
+import com.fizz.business.mapper.PlantConfigMapper;
+import com.fizz.business.service.PlantConfigService;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class PlantConfigServiceImpl extends ServiceImpl implements PlantConfigService {
+ @Override
+ public Map getAllConfig() {
+ return this.list().stream().collect(Collectors.toMap(
+ PlantConfig::getVarname,
+ obj -> obj,
+ (key1 , key2) -> key1
+ ));
+ }
+}
diff --git a/business/src/main/java/com/fizz/business/service/impl/RollChangeCycleServiceImpl.java b/business/src/main/java/com/fizz/business/service/impl/RollChangeCycleServiceImpl.java
new file mode 100644
index 0000000..5a454eb
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/impl/RollChangeCycleServiceImpl.java
@@ -0,0 +1,10 @@
+package com.fizz.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fizz.business.domain.RollChangeCycle;
+import com.fizz.business.mapper.RollChangeCycleMapper;
+import com.fizz.business.service.RollChangeCycleService;
+import org.springframework.stereotype.Service;
+@Service
+public class RollChangeCycleServiceImpl extends ServiceImpl implements RollChangeCycleService {
+}
diff --git a/business/src/main/java/com/fizz/business/service/impl/RollDataServiceImpl.java b/business/src/main/java/com/fizz/business/service/impl/RollDataServiceImpl.java
new file mode 100644
index 0000000..2310fae
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/impl/RollDataServiceImpl.java
@@ -0,0 +1,326 @@
+package com.fizz.business.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fizz.business.domain.PlantConfig;
+import com.fizz.business.domain.RollData;
+import com.fizz.business.domain.RollHistory;
+import com.fizz.business.domain.ShiftHistory;
+import com.fizz.business.mapper.RollDataMapper;
+import com.fizz.business.service.PlantConfigService;
+import com.fizz.business.service.RollDataService;
+import com.fizz.business.service.RollHistoryService;
+import com.fizz.business.service.ShiftHistoryService;
+import com.fizz.business.vo.OnlineRollDataVO;
+import com.fizz.business.vo.ReadyRollDataVO;
+
+import com.ruoyi.common.utils.bean.BeanUtils;
+import org.apache.commons.compress.utils.Lists;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class RollDataServiceImpl extends ServiceImpl implements RollDataService {
+
+ @Resource
+ PlantConfigService plantConfigService;
+
+ @Resource
+ ShiftHistoryService shiftHistoryService;
+
+ @Resource
+ RollHistoryService rollHistoryService;
+
+ @Override
+ public List getList(String position,String type,String status) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ if(ObjectUtil.isNotEmpty(position)){
+ queryWrapper.eq("position", position);
+ }
+ if(ObjectUtil.isNotEmpty(type)){
+ queryWrapper.eq("type", type);
+ }
+ if(ObjectUtil.isNotEmpty(status)){
+ queryWrapper.eq("status", status);
+ }
+ queryWrapper.last(" order by FIELD(CONCAT(POSITION, '_', TYPE), " +
+ "'TOP_BACKUP', 'TOP_INTERMEDIATE', 'TOP_WORK', " +
+ "'BOTTOM_WORK','BOTTOM_INTERMEDIATE', 'BOTTOM_BACKUP')");
+ return this.list(queryWrapper);
+ }
+
+ @Override
+ public List getReadyRollList(String position,String type, String status) {
+ List readyRollDataVOList = new ArrayList<>();
+ List rollDataList = getList(position, type,status);
+ for (RollData rollData : rollDataList) {
+ ReadyRollDataVO readyRollDataVO = new ReadyRollDataVO();
+ // 使用 BeanUtils 复制属性
+ BeanUtils.copyProperties(rollData, readyRollDataVO);
+ readyRollDataVOList.add(readyRollDataVO);
+ }
+ return readyRollDataVOList;
+ }
+
+ @Override
+ public List getOnlineRollList() {
+ Map plantConfigMap = plantConfigService.getAllConfig();
+
+ List readyRollDataVOList = new ArrayList<>();
+ List rollDataList = getList(null, null,"ONLINE");
+ for (RollData rollData : rollDataList) {
+ OnlineRollDataVO onlineRollDataVO = new OnlineRollDataVO();
+ // 使用 BeanUtils 复制属性
+ BeanUtils.copyProperties(rollData, onlineRollDataVO);
+ String lengthKey="";
+ String weightKey="";
+ switch(rollData.getType()){
+ case "BACKUP":
+ lengthKey = "MAX_BUR_ROLLER_LENGTH";
+ weightKey = "MAX_BUR_ROLLER_WEIGHT";
+ break;
+ case "INTERMEDIATE":
+ lengthKey = "MAX_INTERMEDIATE_ROLLER_LENGTH";
+ weightKey = "MAX_INTERMEDIATE_ROLLER_WEIGHT";
+ break;
+ case "WORK":
+ lengthKey = "MAX_WORK_ROLLER_LENGTH";
+ weightKey = "MAX_WORK_ROLLER_WEIGHT";
+ break;
+ }
+ //轧制长度,轧制重量
+ if(plantConfigMap.containsKey(lengthKey)){
+ PlantConfig plantConfig = plantConfigMap.get(lengthKey);
+ double value = Double.parseDouble(plantConfig.getValue());
+ onlineRollDataVO.setUsableLength(value);
+ onlineRollDataVO.setLeftLength(value-onlineRollDataVO.getRolledWeight());
+ }
+ if(plantConfigMap.containsKey(weightKey)){
+ PlantConfig plantConfig = plantConfigMap.get(weightKey);
+ double value = Double.parseDouble(plantConfig.getValue());
+ onlineRollDataVO.setRolledWeight(value);
+ onlineRollDataVO.setLeftLength(value-onlineRollDataVO.getRolledWeight());
+ }
+ readyRollDataVOList.add(onlineRollDataVO);
+ }
+ return readyRollDataVOList;
+ }
+
+ @Override
+ public List BackupRoll(List rollList) {
+ if(ObjectUtil.isEmpty(rollList)){
+ return Arrays.asList("轧辊数量为空,无法备辊");
+ }
+ //统一检查所有轧辊状态
+ List rollidList = rollList.stream()
+ .map(ReadyRollDataVO::getRollid)
+ .collect(Collectors.toList());
+ List rollDataList = this.baseMapper.selectBatchIds(rollidList);
+
+ if(rollDataList.stream()
+ .anyMatch(item->item.getStatus().equals("ONLINE"))){
+ return Arrays.asList("存在轧辊已在线,无法备辊");
+ }
+ Map plantConfigMap = plantConfigService.getAllConfig();
+ //检查是否成对
+ //检查辊径大小
+ //检查辊径差
+ List result = new ArrayList<>();
+ //工作辊
+ checkRollDia( plantConfigMap,rollList,result,"WORK");
+ checkRollDia( plantConfigMap,rollList,result,"INTERMEDIATE");
+ checkRollDia( plantConfigMap,rollList,result,"BACKUP");
+
+ //清楚所有已有备辊,添加新备辊,有则更新数据,没有则新增
+ if(ObjectUtil.isEmpty(result)){
+ lambdaUpdate().set(RollData::getStatus,"OFFLINE")
+ .eq(RollData::getStatus,"BACKUP")
+ .update();
+
+ List newDataList = Lists.newArrayList();
+ rollList.forEach(item->{
+
+ RollData temp = rollDataList.stream().filter(n->n.getRollid().equals(item.getRollid()))
+ .findFirst().orElse(RollData.builder()
+ .rollid(item.getRollid())
+ .position(item.getPosition())
+ .type(item.getType())
+ .seton("CRM")
+ .standid(1)
+ .grindCount(0)
+ .build());
+ //更新辊径、凸度和粗糙度
+ temp.setDiameter(temp.getDiameter());
+ temp.setCrown(temp.getCrown());
+ temp.setRough(temp.getRough());
+
+ newDataList.add(temp);
+ });
+ this.saveOrUpdateBatch(newDataList);
+
+ }
+ return result;
+ }
+
+ @Override
+ public List onlineRoll() {
+ List backupRollList = getList(null, null,"BACKUP");
+ List onlineRollList = getList(null, null,"ONLINE");
+ if(ObjectUtil.isEmpty(backupRollList)){
+ return getOnlineRollList();
+ }
+ ShiftHistory shiftHistory = shiftHistoryService.getCurrent();
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+ String changeID = LocalDateTime.now().format(dateTimeFormatter);
+ List rollHistoryList =Lists.newArrayList();
+ List changeRollList =Lists.newArrayList();
+ //更换轧辊
+ backupRollList.forEach(item->{
+ //上线卷
+ item.setStatus("ONLINE");
+ item.setGrindCount(item.getGrindCount()+1);
+ item.setRolledCount(0);
+ item.setRolledWeight(0d);
+ item.setRolledLength(0d);
+ item.setInstalTime(LocalDateTime.now());
+ item.setDeinstalTime(LocalDateTime.now());
+ changeRollList.add(item);
+
+ RollHistory rollHistoryOn = RollHistory.builder().build();
+ BeanUtils.copyProperties(item, rollHistoryOn);
+ rollHistoryOn.setChangeid(changeID);
+ rollHistoryOn.setShift(shiftHistory.getShift());
+ rollHistoryOn.setCrew(shiftHistory.getCrew());
+ rollHistoryOn.setChangeType("ON");
+ rollHistoryOn.setChangeTime(LocalDateTime.now());
+ rollHistoryList.add(rollHistoryOn);
+
+ //下线卷
+ RollData onlineRoll = onlineRollList.stream().filter(n->n.getPosition().equals(item.getPosition())
+ &&n.getType().equals(item.getType()))
+ .findFirst().orElse(null);
+ if(ObjectUtil.isNotNull(onlineRoll)){
+ onlineRoll.setStatus("OFFLINE");
+ onlineRoll.setDeinstalTime(LocalDateTime.now());
+ changeRollList.add(onlineRoll);
+
+ RollHistory rollHistoryOff = RollHistory.builder().build();
+ BeanUtils.copyProperties(onlineRoll, rollHistoryOff);
+ rollHistoryOff.setChangeid(changeID);
+ rollHistoryOff.setShift(shiftHistory.getShift());
+ rollHistoryOff.setCrew(shiftHistory.getCrew());
+ rollHistoryOff.setChangeType("OFF");
+ rollHistoryOff.setChangeTime(LocalDateTime.now());
+ rollHistoryList.add(rollHistoryOff);
+ }
+
+ });
+ this.updateBatchById(changeRollList);
+ rollHistoryService.saveBatch(rollHistoryList);
+ return getOnlineRollList();
+ }
+
+ private void checkRollDia(Map plantConfigMap,List rollList,List result,String type){
+ String name = "";
+ String maxValueKey = "";
+ String minValueKey = "";
+ String diffValueKey = "";
+
+ switch(type){
+ case "BACKUP":
+ maxValueKey = "MAX_BR_DIA";
+ minValueKey = "MIN_BR_DIA";
+ diffValueKey = "MAX_BR_DIA_DIFF";
+ name = "工作辊";
+ break;
+ case "INTERMEDIATE":
+ maxValueKey = "MAX_IR_DIA";
+ minValueKey = "MIN_IR_DIA";
+ diffValueKey = "MAX_IR_DIA_DIFF";
+ name = "工作辊";
+ break;
+ case "WORK":
+ maxValueKey = "MAX_WR_DIA";
+ minValueKey = "MIN_WR_DIA";
+ diffValueKey = "MAX_WR_DIA_DIFF";
+ name = "工作辊";
+ break;
+ }
+
+ List rolls = rollList.stream()
+ .filter(item->item.getType().equals(type))
+ .collect(Collectors.toList());
+ if(rolls.size()>0){
+ //工作辊成对更换
+ double rollDia1;
+ double rollDia2;
+ if(type.equals("WORK")||type.equals("INTERMEDIATE")) {
+ if (rolls.size() != 2) {
+ result.add(String.format("{0}必须成对更换", name));
+ return;
+ } else {
+ if (rolls.get(0).getPosition().equals(rolls.get(1).getPosition())) {
+ result.add(String.format("{0}备辊位置重复", name));
+ return;
+ }
+ rollDia1 = rolls.get(0).getDiameter();
+ rollDia2 = rolls.get(1).getDiameter();
+ }
+ }
+ else{
+ if(rolls.size()>2){
+ result.add(String.format("{0}备辊数量错误",name));
+ return;
+ }else {
+ rollDia1 = rolls.get(0).getDiameter();
+ if(rolls.size()==2) {
+ if (rolls.get(0).getPosition().equals(rolls.get(1).getPosition())) {
+ result.add(String.format("{0}备辊位置重复", name));
+ return;
+ }
+ rollDia2 = rolls.get(1).getDiameter();
+ }else {
+ //单个备辊,和在线辊比较
+ rollDia2 = rollDia1;
+ String nextPosition = rolls.get(0).getPosition().equals("TOP")?"BOTTOM":"TOP";
+ List onlineList = getList(nextPosition,type,"ONLINE");
+ if(onlineList.size()>0){
+ rollDia2 = onlineList.get(0).getDiameter();
+ }
+ }
+ }
+ }
+ //最大值
+ if(plantConfigMap.containsKey(maxValueKey)){
+ double value = Double.parseDouble(plantConfigMap.get(maxValueKey).getValue());
+ if(rollDia1>value||rollDia2>value){
+ result.add(String.format("{0}径超限[max:{1}]",name,value));
+ }
+ }
+ //最小值
+ if(plantConfigMap.containsKey(minValueKey)){
+ double value = Double.parseDouble(plantConfigMap.get(minValueKey).getValue());
+ if(rollDia1value){
+ result.add(String.format("{0}径超限[diff:{1}]",name,value));
+ }
+ }
+ }
+ }
+}
diff --git a/business/src/main/java/com/fizz/business/service/impl/RollHistoryServiceImpl.java b/business/src/main/java/com/fizz/business/service/impl/RollHistoryServiceImpl.java
new file mode 100644
index 0000000..e9c8a81
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/impl/RollHistoryServiceImpl.java
@@ -0,0 +1,46 @@
+package com.fizz.business.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fizz.business.domain.RollHistory;
+import com.fizz.business.form.RollHistoryForm;
+import com.fizz.business.mapper.RollHistoryMapper;
+import com.fizz.business.service.RollHistoryService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class RollHistoryServiceImpl extends ServiceImpl implements RollHistoryService {
+ @Override
+ public List getChangeIdList() {
+ return baseMapper.getChangeIdList();
+ }
+
+ @Override
+ public List getRollIdList() {
+ return baseMapper.getRollIdList();
+ }
+
+ @Override
+ public List getRollHistory(RollHistoryForm rollHistoryForm) {
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
+ if(ObjectUtil.isNotEmpty(rollHistoryForm.getStartTime())){
+ queryWrapper.ge(RollHistory::getChangeTime,rollHistoryForm.getStartTime());
+ }
+ if(ObjectUtil.isNotEmpty(rollHistoryForm.getEndTime())){
+ queryWrapper.le(RollHistory::getChangeTime,rollHistoryForm.getEndTime());
+ }
+ if(ObjectUtil.isNotEmpty(rollHistoryForm.getChangeId())){
+ queryWrapper.eq(RollHistory::getChangeid,rollHistoryForm.getChangeId());
+ }
+ if(ObjectUtil.isNotEmpty(rollHistoryForm.getRollid())){
+ queryWrapper.eq(RollHistory::getRollid,rollHistoryForm.getRollid());
+ }
+ queryWrapper.orderByDesc(RollHistory::getChangeTime);
+ return this.list(queryWrapper);
+ }
+}
+
diff --git a/business/src/main/java/com/fizz/business/service/impl/ShiftHistoryServiceImpl.java b/business/src/main/java/com/fizz/business/service/impl/ShiftHistoryServiceImpl.java
new file mode 100644
index 0000000..273a8b3
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/impl/ShiftHistoryServiceImpl.java
@@ -0,0 +1,43 @@
+package com.fizz.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fizz.business.domain.ShiftHistory;
+import com.fizz.business.mapper.ShiftHistoryMapper;
+import com.fizz.business.service.ShiftHistoryService;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class ShiftHistoryServiceImpl extends ServiceImpl implements ShiftHistoryService {
+ @Override
+ public ShiftHistory getCurrent() {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ return this.getOne(queryWrapper.orderByDesc("insdate").last("LIMIT 1"));
+ }
+
+ @Override
+ public List getShiftCurrentListByDate(LocalDateTime startTime, LocalDateTime endTime) {
+ return lambdaQuery()
+ .ge(ShiftHistory::getInsdate, startTime)
+ .lt(ShiftHistory::getInsdate, endTime)
+ .isNotNull(ShiftHistory::getCrew)
+ .orderByDesc(ShiftHistory::getInsdate)
+ .list();
+ }
+
+ @Override
+ public List getCrews() {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.select("DISTINCT crew");
+ List shiftCurrentList = baseMapper.selectList(queryWrapper);
+
+ return shiftCurrentList
+ .stream()
+ .map(ShiftHistory::getCrew)
+ .collect(Collectors.toList());
+ }
+}
diff --git a/business/src/main/java/com/fizz/business/utils/10086.txt b/business/src/main/java/com/fizz/business/utils/10086.txt
new file mode 100644
index 0000000..56b6510
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/utils/10086.txt
@@ -0,0 +1 @@
+11111
\ No newline at end of file
diff --git a/business/src/main/java/com/fizz/business/vo/AlarmResultVO.java b/business/src/main/java/com/fizz/business/vo/AlarmResultVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/AlarmVO.java b/business/src/main/java/com/fizz/business/vo/AlarmVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/AudioVO.java b/business/src/main/java/com/fizz/business/vo/AudioVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/ChartVo.java b/business/src/main/java/com/fizz/business/vo/ChartVo.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/ConfPlantVO.java b/business/src/main/java/com/fizz/business/vo/ConfPlantVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/CurrentAndPowerCountVO.java b/business/src/main/java/com/fizz/business/vo/CurrentAndPowerCountVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/DailyScheduleVO.java b/business/src/main/java/com/fizz/business/vo/DailyScheduleVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/DeviceInfoVO.java b/business/src/main/java/com/fizz/business/vo/DeviceInfoVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/DeviceListVO.java b/business/src/main/java/com/fizz/business/vo/DeviceListVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/DeviceMessageVO.java b/business/src/main/java/com/fizz/business/vo/DeviceMessageVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/DeviceStatusInfo.java b/business/src/main/java/com/fizz/business/vo/DeviceStatusInfo.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/DeviceStatusInfoVO.java b/business/src/main/java/com/fizz/business/vo/DeviceStatusInfoVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/DeviceStatusVO.java b/business/src/main/java/com/fizz/business/vo/DeviceStatusVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/DtuVO.java b/business/src/main/java/com/fizz/business/vo/DtuVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/EnergyCurrentVO.java b/business/src/main/java/com/fizz/business/vo/EnergyCurrentVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/EnergyVO.java b/business/src/main/java/com/fizz/business/vo/EnergyVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/EventRecordsVO.java b/business/src/main/java/com/fizz/business/vo/EventRecordsVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/FactorAllRealtimeDataVO.java b/business/src/main/java/com/fizz/business/vo/FactorAllRealtimeDataVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/FactorDailyVO.java b/business/src/main/java/com/fizz/business/vo/FactorDailyVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/FactorDataDVO.java b/business/src/main/java/com/fizz/business/vo/FactorDataDVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/FactorDataRealtimeVO.java b/business/src/main/java/com/fizz/business/vo/FactorDataRealtimeVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/FactorDataVO.java b/business/src/main/java/com/fizz/business/vo/FactorDataVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/FactorRealTimeVO.java b/business/src/main/java/com/fizz/business/vo/FactorRealTimeVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/FactorValue.java b/business/src/main/java/com/fizz/business/vo/FactorValue.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/FrontTreeDataVo.java b/business/src/main/java/com/fizz/business/vo/FrontTreeDataVo.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/FrontVo.java b/business/src/main/java/com/fizz/business/vo/FrontVo.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/Home25RealtimeTrend.java b/business/src/main/java/com/fizz/business/vo/Home25RealtimeTrend.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/LiveDetailVO.java b/business/src/main/java/com/fizz/business/vo/LiveDetailVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/LiveHtmlVO.java b/business/src/main/java/com/fizz/business/vo/LiveHtmlVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/LoginKeyVO.java b/business/src/main/java/com/fizz/business/vo/LoginKeyVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/MeasureVO.java b/business/src/main/java/com/fizz/business/vo/MeasureVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/MonitorDataVO.java b/business/src/main/java/com/fizz/business/vo/MonitorDataVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/OnlineRollDataVO.java b/business/src/main/java/com/fizz/business/vo/OnlineRollDataVO.java
new file mode 100644
index 0000000..8011cad
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/vo/OnlineRollDataVO.java
@@ -0,0 +1,55 @@
+package com.fizz.business.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class OnlineRollDataVO {
+ @ApiModelProperty(value = "轧辊号")
+ private String rollid;
+
+
+ @ApiModelProperty(value = "类型")
+ private String type;
+
+ @ApiModelProperty(value = "位置")
+ private String position;
+
+
+ @ApiModelProperty(value = "直径")
+ private Double diameter;
+
+ @ApiModelProperty(value = "粗糙度")
+ private Double rough;
+
+ @ApiModelProperty(value = "凸度")
+ private Double crown;
+
+ @ApiModelProperty(value = "轧制长度")
+ private Double rolledLength;
+
+ @ApiModelProperty(value = "轧制重量")
+ private Double rolledWeight;
+
+ @ApiModelProperty(value = "轧制数量")
+ private Integer rolledCount;
+
+ @ApiModelProperty(value = "Installation Time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime instalTime;
+
+ @ApiModelProperty(value = "可用长度")
+ private Double usableLength;
+
+ @ApiModelProperty(value = "剩余长度")
+ private Double leftLength;
+
+ @ApiModelProperty(value = "可用重量")
+ private Double usableWeight;
+
+ @ApiModelProperty(value = "剩余重量")
+ private Double leftWeight;
+}
diff --git a/business/src/main/java/com/fizz/business/vo/OriginVO.java b/business/src/main/java/com/fizz/business/vo/OriginVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/OverFlowVO.java b/business/src/main/java/com/fizz/business/vo/OverFlowVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/ProcessTrendVO.java b/business/src/main/java/com/fizz/business/vo/ProcessTrendVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/ReadyRollDataVO.java b/business/src/main/java/com/fizz/business/vo/ReadyRollDataVO.java
new file mode 100644
index 0000000..27408d6
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/vo/ReadyRollDataVO.java
@@ -0,0 +1,25 @@
+package com.fizz.business.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ReadyRollDataVO {
+ @ApiModelProperty(value = "轧辊号")
+ private String rollid;
+
+ @ApiModelProperty(value = "类型")
+ private String type;
+
+ @ApiModelProperty(value = "位置")
+ private String position;
+
+ @ApiModelProperty(value = "直径")
+ private Double diameter;
+
+ @ApiModelProperty(value = "粗糙度")
+ private Double rough;
+
+ @ApiModelProperty(value = "凸度")
+ private Double crown;
+}
diff --git a/business/src/main/java/com/fizz/business/vo/RealtimeDataVO.java b/business/src/main/java/com/fizz/business/vo/RealtimeDataVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/ResultDetails.java b/business/src/main/java/com/fizz/business/vo/ResultDetails.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/SignalScheduleVO.java b/business/src/main/java/com/fizz/business/vo/SignalScheduleVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/UnitVO.java b/business/src/main/java/com/fizz/business/vo/UnitVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/companyDevice/CompanyDeviceVO.java b/business/src/main/java/com/fizz/business/vo/companyDevice/CompanyDeviceVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/companyDevice/DeviceAreaVO.java b/business/src/main/java/com/fizz/business/vo/companyDevice/DeviceAreaVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/companyDevice/DevicePointVO.java b/business/src/main/java/com/fizz/business/vo/companyDevice/DevicePointVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/companyDevice/DevicePostionVO.java b/business/src/main/java/com/fizz/business/vo/companyDevice/DevicePostionVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/companyDevice/DeviceValueVO.java b/business/src/main/java/com/fizz/business/vo/companyDevice/DeviceValueVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/iot/ChinaVO.java b/business/src/main/java/com/fizz/business/vo/iot/ChinaVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/iot/DeviceInfoVO.java b/business/src/main/java/com/fizz/business/vo/iot/DeviceInfoVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/iot/OrganizationInfoVO.java b/business/src/main/java/com/fizz/business/vo/iot/OrganizationInfoVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/iot/ProcedureInformationVO.java b/business/src/main/java/com/fizz/business/vo/iot/ProcedureInformationVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/iot/ProductAttributeDefineVO.java b/business/src/main/java/com/fizz/business/vo/iot/ProductAttributeDefineVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/iot/ProductAttributeVO.java b/business/src/main/java/com/fizz/business/vo/iot/ProductAttributeVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/iot/ProductCategoryVO.java b/business/src/main/java/com/fizz/business/vo/iot/ProductCategoryVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/iot/ProductEventVO.java b/business/src/main/java/com/fizz/business/vo/iot/ProductEventVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/iot/ProductInfoVO.java b/business/src/main/java/com/fizz/business/vo/iot/ProductInfoVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/iot/ProductParameterVO.java b/business/src/main/java/com/fizz/business/vo/iot/ProductParameterVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/iot/ProductServiceVO.java b/business/src/main/java/com/fizz/business/vo/iot/ProductServiceVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/iot/TopicInfoVO.java b/business/src/main/java/com/fizz/business/vo/iot/TopicInfoVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/report/DrainageConsumablesReportVO.java b/business/src/main/java/com/fizz/business/vo/report/DrainageConsumablesReportVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/report/DrainageDailyReportVO.java b/business/src/main/java/com/fizz/business/vo/report/DrainageDailyReportVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/report/DrainageWetSludgeVO.java b/business/src/main/java/com/fizz/business/vo/report/DrainageWetSludgeVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/java/com/fizz/business/vo/report/MonthlyWaterQualityVO.java b/business/src/main/java/com/fizz/business/vo/report/MonthlyWaterQualityVO.java
new file mode 100644
index 0000000..e69de29
diff --git a/business/src/main/resources/mapper/CrmPdiPlanMapper.xml b/business/src/main/resources/mapper/CrmPdiPlanMapper.xml
new file mode 100644
index 0000000..a5e815b
--- /dev/null
+++ b/business/src/main/resources/mapper/CrmPdiPlanMapper.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/business/src/main/resources/mapper/CrmPdoExcoilMapper.xml b/business/src/main/resources/mapper/CrmPdoExcoilMapper.xml
new file mode 100644
index 0000000..c23d813
--- /dev/null
+++ b/business/src/main/resources/mapper/CrmPdoExcoilMapper.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/business/src/main/resources/mapper/PlantConfigMapper.xml b/business/src/main/resources/mapper/PlantConfigMapper.xml
new file mode 100644
index 0000000..4962deb
--- /dev/null
+++ b/business/src/main/resources/mapper/PlantConfigMapper.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/business/src/main/resources/mapper/RollChangeCycleMapper.xml b/business/src/main/resources/mapper/RollChangeCycleMapper.xml
new file mode 100644
index 0000000..15ea6ad
--- /dev/null
+++ b/business/src/main/resources/mapper/RollChangeCycleMapper.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/business/src/main/resources/mapper/RollDataMapper.xml b/business/src/main/resources/mapper/RollDataMapper.xml
new file mode 100644
index 0000000..821d183
--- /dev/null
+++ b/business/src/main/resources/mapper/RollDataMapper.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/business/src/main/resources/mapper/RollHistoryMapper.xml b/business/src/main/resources/mapper/RollHistoryMapper.xml
new file mode 100644
index 0000000..1be345d
--- /dev/null
+++ b/business/src/main/resources/mapper/RollHistoryMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/business/src/main/resources/mapper/ShiftHistoryMapper.xml b/business/src/main/resources/mapper/ShiftHistoryMapper.xml
new file mode 100644
index 0000000..80fa335
--- /dev/null
+++ b/business/src/main/resources/mapper/ShiftHistoryMapper.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/business/src/main/resources/template/10086.txt b/business/src/main/resources/template/10086.txt
new file mode 100644
index 0000000..56b6510
--- /dev/null
+++ b/business/src/main/resources/template/10086.txt
@@ -0,0 +1 @@
+11111
\ No newline at end of file
diff --git a/business/target/classes/mapper/RollDataMapper.xml b/business/target/classes/mapper/RollDataMapper.xml
new file mode 100644
index 0000000..821d183
--- /dev/null
+++ b/business/target/classes/mapper/RollDataMapper.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/business/target/classes/mapper/RollHistoryMapper.xml b/business/target/classes/mapper/RollHistoryMapper.xml
new file mode 100644
index 0000000..1be345d
--- /dev/null
+++ b/business/target/classes/mapper/RollHistoryMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/business/target/classes/template/10086.txt b/business/target/classes/template/10086.txt
new file mode 100644
index 0000000..56b6510
--- /dev/null
+++ b/business/target/classes/template/10086.txt
@@ -0,0 +1 @@
+11111
\ No newline at end of file
diff --git a/doc/若依环境使用手册.docx b/doc/若依环境使用手册.docx
new file mode 100644
index 0000000000000000000000000000000000000000..9e4daef4d9be2e445419109a02eaf321cd4d537e
GIT binary patch
literal 428430
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