# 报工系统 **Repository Path**: crazy-robot/Work-Vue ## Basic Information - **Project Name**: 报工系统 - **Description**: 报工系统:员工报工、工时统计 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 31 - **Created**: 2023-02-22 - **Last Updated**: 2023-04-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 报工系统 ![](doc/img/01.jpg) ------ ## 1、背景 `创作背景:`公司需要一个记录人员日常工时情况; `开发背景:`该系统以 [ruoyi](https://gitee.com/link?target=http%3A%2F%2Fdoc.ruoyi.vip%2Fruoyi-vue%2F) 为基础框架做出的二次开发,主要是以人员报工填报为主(以项目维度和非项目的部门维度报工),最终输出不同维度的报表; `Gitee:`https://gitee.com/mmdz/Work-Vue ------ ## 2、内置功能(ruoyi) ?>Ruoyi 的创作文档与项目说明 http://doc.ruoyi.vip/ruoyi-vue/ 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找出系统性能瓶颈。 ------ ## 3、项目介绍 ?>后端结构 ```text com.ruoyi ├── common // 工具类 │ └── annotation // 自定义注解 │ └── config // 全局配置 │ └── constant // 通用常量 │ └── core // 核心控制 │ └── enums // 通用枚举 │ └── exception // 通用异常 │ └── filter // 过滤器处理 │ └── utils // 通用类处理 ├── framework // 框架核心 │ └── aspectj // 注解实现 │ └── config // 系统配置 │ └── datasource // 数据权限 │ └── interceptor // 拦截器 │ └── manager // 异步处理 │ └── security // 权限控制 │ └── web // 前端控制 ├── ruoyi-generator // 代码生成(可移除) ├── ruoyi-quartz // 定时任务(可移除) ├── ruoyi-system // 系统代码 ├── ruoyi-admin // 后台服务 ├── ruoyi-work // 报工模块 ├── ruoyi-recruit // 招聘模块 ``` ?>前端结构 ```text ├── build // 构建相关 ├── bin // 执行脚本 ├── public // 公共文件 │ ├── favicon.ico // favicon图标 │ └── index.html // html模板 │ └── robots.txt // 反爬虫 ├── src // 源代码 │ ├── api // 所有请求 │ ├── assets // 主题 字体等静态资源 │ ├── components // 全局公用组件 │ ├── directive // 全局指令 │ ├── layout // 布局 │ ├── router // 路由 │ ├── store // 全局 store管理 │ ├── utils // 全局公用方法 │ ├── views // view │ ├── App.vue // 入口页面 │ ├── main.js // 入口 加载组件 初始化等 │ ├── permission.js // 权限管理 │ └── settings.js // 系统配置 ├── .editorconfig // 编码格式 ├── .env.development // 开发环境配置 ├── .env.production // 生产环境配置 ├── .env.staging // 测试环境配置 ├── .eslintignore // 忽略语法检查 ├── .eslintrc.js // eslint 配置项 ├── .gitignore // git 忽略项 ├── babel.config.js // babel.config.js ├── package.json // package.json └── vue.config.js // vue.config.js ``` ------ ## 4、二次开发功能 ### 4.1 报工管理 1. 用户管理:集成企业微信用户列表,可一键同步用户基础信息等 2. 部门管理:集成企业微信部门列表,可一键同步 3. 开发阶段:项目开发阶段(项目的阶段划分) 4. 事务种类:包含项目和项目外的事务类型划分 5. 人员配置:作用于确定需要提报的人员,方便用以统计项目工时和项目成本 6. 项目配置:定位具体项目上的报工以及非项目的部门级别报工(集成ERP的项目代码) 7. 人力成本:员工成本预算(结合员工职级职等、周薪资、月薪资) 8. 工时填报:人员工时填报(集成企业微信,可在企业微信自定义应用中填报) 9. 申报回退:处理项目经理回退的单据(需要员工和项目经理自行商议工时合理性) 10. 填报记录:个人的填报记录和自己参与的项目(以项目负责人审核通过后的有效公式为主) 11. 我的工时:包含我的工时,我的项目累计工时报表(以项目负责人审核通过后的有效公式为主) 12. 工时审核:项目经理对自己项目维度人员工时的审核与回退(集成企业微信,可在企业微信自定义应用中审核) 13. 提报查询:查看每个填报人员的每天的填报情况,作用于推进报工力度,和查询统计人员填报与审核情况 14. 数据清除/还原:规范员工填报行为,防止不小心填写错误,汇总上级审核错误,给予已经审核过的错误数据进行7天时间内的清除(时间可自定义),以及数据还原 15. 总体统计:统计所有人每天的填报情况,已每天的填报、未填报、请假等维度进行统计 16. 提报功能预警:每天在企业微信上提醒人员提报、审核、处理回退单就 17. 报表(人员工时清单) 18. 报表(项目工时清单):以项目和阶段维度,统计项目每个阶段的工时合计(可动态统计阶段数据,支持动态导出) 19. 报表(部门人力成本统计表):以部门为维度;统计部门人员的人力成本费用(可动态统计项目数据,支持动态导出) 20. 报表(项目人力成本统计表):以项目代号为维度;统计项目人员的人力成本费用 21. 报表(人力成本明细) 22. 报表(人力成本总汇) 23. 报表(人力成本核算) ### 4.2 报工功能演示 ### 4.2.1 报工配置 ?>`报工配置:`项目、人员、成本等基础配置情况 ![](doc/img/02.jpg) ![](doc/img/03.jpg) ![](doc/img/04.jpg) ![](doc/img/05.jpg) ![](doc/img/06.jpg) ### 4.2.2 任务查询 ?>`任务查询:`人员工时填报、填报回退处理、人员工时审核、填报情况查询等功能,以填报工时和推广填报进度为主 ![](doc/img/07.jpg) ![](doc/img/08.jpg) ![](doc/img/09.jpg) ![](doc/img/10.jpg) ![](doc/img/11.jpg) ![](doc/img/12.jpg) ![](doc/img/34.jpg) ### 4.2.3 统计报表 ?>`统计报表:` 汇总合计、部门合计、日期合计、项目合计、阶段合计等报表呈现方式
`主要作用:` 1) 提供数据明细,便于各类目的的加工处理; | 2) 各部门的人力负荷饱和度 ; | 3) 所有项目工作量 | 4) 从项目维度看人力工时投入 ... ![](doc/img/21.jpg) ![](doc/img/22.jpg) ![](doc/img/23.jpg) ![](doc/img/24.jpg) ![](doc/img/35.jpg) ### 4.2.4 企业微信 ![](doc/img/36.png) ![](doc/img/37.png) ------ ### 4.3 招聘管理 !>`提示:`需要一个招聘系统,但是又不想走流程(太繁琐),只能做一些简单的功能(顺便放在报工里) > 招聘管理目前只有人才信息储备,人才资料上传、下载、预览,面试结果追踪等功能。 > > 后续可以做面试岗位分析等功能报表 > > 注意:文件在线预览使用的是 kkfileview 插件,[kkfileview官方文档](https://kkfileview.keking.cn/zh-cn/docs/production.html) ![](doc/img/38.jpg) ![](doc/img/39.jpg) ![](doc/img/40.jpg) ![](doc/img/41.jpg) ------ ## 7、部署系统 !>`提示:`因为本项目是前后端完全分离的,所以需要前后端都单独部署好,才能进行访问。 > 服务器(有JDK环境)中需要准备 ngnix、redis、mysql、kkfileview(在线文件预览) ### 7.1 Nginx配置 ```shell # ngnix启动 切换路径: cd /usr/local/nginx/sbin/ 启动命令: ./nginx # ngnix重启 切换路径: cd /usr/local/nginx/sbin/ 启动命令: ./nginx -s reload # ngnix进程 ps -ef|grep nginx # 杀死进程 kill -QUIT 3905 # 快速停止 kill -TERM 3905 # 或者 kill -INT 3905 # 强制停止 pkill -9 nginx ``` ![](doc/img/32.jpg) ### 7.2 Redis配置 ```bash # Redis启动 切换路径: cd /usr/local/bin 启动命令: redis-server redis.conf # 关闭Redis服务 shutdown # 查看redis进程 ps -ef|grep redis ``` ![](doc/img/33.jpg) ### 7.3 kkfileview配置 > kkFileView v4.0.0 安装、启动教程(在线文件预览) > > 1. 安装 LibreOffice7.1 > > ```shell > # 安装 LibreOffice7.1 > > ### 原因:https://gitee.com/kekingcn/file-online-preview/releases 上说,v4.0.0对应LibreOffice7.1(v4.0.0版本发布,LibreOffice7.1底层,兼容性更强,预览效果更好) > > ### 步骤 > wget https://kkfileview.keking.cn/LibreOffice_7.1.4_Linux_x86-64_rpm.tar.gz > > tar -zxvf LibreOffice_7.1.4_Linux_x86-64_rpm.tar.gz > > yum install -y LibreOffice_7.1.4.2_Linux_x86-64_rpm/RPMS/*.rpm > > /opt/libreoffice7.1/program/soffice --version > > ### 会显示版本号↓ > LibreOffice 7.1.4.2 a529a4fab45b75fefc5b6226684193eb000654f6 > ``` > > 2. 安装 kkFileView(官网下载) > > ```shell > # 安装 kkFileView > wget https://kkfileview.keking.cn/kkFileView-4.0.0.tar.gz > > tar -zxvf kkFileView-4.0.0.tar.gz > > ### 解压出一份目录叫 kkFileView-4.0.0 > ├── bin // 目录 > │ └──install.sh 安装脚本,startup.sh会调的,但是有问题,安不了Libreoffice > │ └──kkFileView-4.0.0.jar 主程序,SpringBoot的fat jar > │ └──showlog.sh 这个就是打开一下log目录的kkFileView.log日志 > │ └──shutdown.sh 用这个停止,但是每次只停一个实例,不如自己杀 > │ └──startup.sh 用这个启动 > ├── config // 目录 > │ └──application.properties 配置文件,参考官网配置说明,也可以直接打开看,都有注释 > ├── file // 启动后出现,文件资源路径(默认为打包根路径下的file目录下) > ├── log // 目录 > │ └──kkFileView.log 程序日志 > ``` > > 3. 修改配置 > > ```shell > # 修改配置 > vi kkFileView-4.0.0/config/application.properties > > ### 把office.home改成自己安装的libreoffice7.1 > office.home = /opt/libreoffice7.1 > > ### 如果你本来就有其他版本,可以配了试试,比如 > office.home = /opt/libreoffice7.3 > > ### LibreOffice端口想改的话改这个 > ## office转换服务的进程数,默认开启两个进程 > office.plugin.server.ports = 2001,2002 > ``` > > 4. 启动 > > ```shell > # 注意!启动前需要杀掉已启动的libreoffice,下面提供一些指令 > > ### 查出所有office进程 > ps -ef|grep office > kill -9 {pid} > > ### 进入kkFileView-4.0.0/config/目录,执行启动脚本 > sh startup.sh > > ### 查看日志 > sh showlog.sh > > ### 日志不报很大一段错才是成功,并且会告诉你预览地址 > kkFileView 服务启动完成,耗时:3.951797266s,演示页请访问: http://127.0.0.1:8012 > ``` > > 5. 问题 > > ```shell > # 启动起不来,报 > Caused by: java.lang.IllegalStateException: process with acceptString 'socket,host=127.0.0.1,port=2001' started but its pid could not be found > at org.artofsolving.jodconverter.office.OfficeProcess.start(OfficeProcess.java:90) ~[office-plugin-4.0.0.jar!/:na] > at org.artofsolving.jodconverter.office.OfficeProcess.start(OfficeProcess.java:54) ~[office-plugin-4.0.0.jar!/:na] > at org.artofsolving.jodconverter.office.ManagedOfficeProcess.doStartProcessAndConnect(ManagedOfficeProcess.java:113) ~[office-plugin-4.0.0.jar!/:na] > ... 7 common frames omitted > > ### 把你连接工具的X11功能关掉 > ``` ### 7.4 后端jar部署方式 ```bash ## 在ruoyi项目的bin目录下执行package.bat打包Web工程,生成war/jar包文件。然后会在项目下生成target文件夹包含war或jar ## 1、jar部署方式 执行脚本:ruoyi/bin/package.bat (target文件夹包含jar) ## 2、war部署方式 ruoyi/pom.xml中的packaging修改为war,放入tomcat服务器webapps ``` ### 7.5 前端部署 ```bash # 打包正式环境 npm run build:prod # 打包预发布环境 npm run build:stage # 构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 ***.js 、***.css、index.html 等静态文件。 # 通常情况下 dist 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 index.html 是后台服务的入口页面。 ``` ![](doc/img/31.jpg)