【开源】基于SpringBoot的天然气工程业务管理系统的设计和实现

目录
- 一、摘要
- 1.1 项目介绍
- 1.2 项目录屏
- 二、功能模块
- 三、使用角色
- 3.1 施工人员
- 3.2 管理员
- 四、数据库设计
- 4.1 用户表
- 4.2 分公司表
- 4.3 角色表
- 4.4 数据字典表
- 4.5 工程项目表
- 4.6 使用材料表
- 4.7 使用材料领用表
- 4.8 整体E-R图
- 五、系统展示
- 六、核心代码
- 6.1 查询工程项目
- 6.2 工程物资申请
- 6.3 新增工程进度
- 七、免责说明
一、摘要
1.1 项目介绍
基于Vue+SpringBoot+MySQL的天然气工程业务管理系统,包含工程项目档案模块、项目进度模块、项目现场照片模块、物资档案模块、物资领用单模块、工程资金申请模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,天然气工程业务管理系统基于角色的访问控制,给天然气管理员、施工队长、财务人员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。
项目编号: S 021 ,源码已在 B i l i b i l i 中上架,需要的朋友请自行下载。 \color{red}{项目编号:S021,源码已在 Bilibili 中上架,需要的朋友请自行下载。} 项目编号:S021,源码已在Bilibili中上架,需要的朋友请自行下载。
https://gf.bilibili.com/item/detail/1104016029
为了帮助小白入门 Java,博主录制了本项目配套的《项目手把手启动教程》,希望能给同学们带来帮助。

1.2 项目录屏
二、功能模块
本课题研究的内容是开发天然气工程建设项目管理系统,要实现内容包括以下 11 11 11 点。

- 登录功能,实现基于账号、密码和图形验证码的登录;
- 人员信息管理,实现对用户的增删改查操作;
- 预算管理,实现对预算项目的增删改查操作;
- 结算管理,实现对订单的结算操作;
- 工程进度管理,实现对工程项目的增删改查操作;
- 资金申请/审批,实现对资金申请单的增删改查和审批的操作;
- 统计报表;
- 组织架构管理,实现对天然气公司内部组织架构的维护;
- 日志管理模块,实现对用户操作进行自动化记录;
- 文件管理模块,对系统中涉及到的图片、文档进行统一化管理;
- 菜单权限管理,实现就与角色的访问控制,对以上模块的数据进行统计分析。同时系统运行稳定、操作简易、逻辑清楚、权限划分明确。
就整个系统面向用户而言,需要划分两个不同用户角色:系统管理员、施工人员和财务人员,施工人员可以发起对预算、结算、工程、资金的申请;财务人员可以对资金申请单进行划扣、审核,对工程进度、预算等明细进行监控;系统管理员拥有系统的全部权限,包括日志管理、用户管理、部门管理、文件管理、数据字典的增删改查操作。
运行在浏览器上的模块可分为“施工人员管理”和“管理员管理”两大模块;其中“施工人员管理”属于前台管理,施工人员可以登录该平台,进入管理界面。
三、使用角色
3.1 施工人员

3.2 管理员

四、数据库设计
4.1 用户表

4.2 分公司表

4.3 角色表

4.4 数据字典表

4.5 工程项目表

4.6 使用材料表

4.7 使用材料领用表

4.8 整体E-R图

五、系统展示














六、核心代码
6.1 查询工程项目
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询工程项目")
public Result<IPage<ProjectData>> getByPage(@ModelAttribute ProjectData projectData ,@ModelAttribute PageVo page){QueryWrapper<ProjectData> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(projectData.getTitle())) {qw.like("title",projectData.getTitle());}if(!ZwzNullUtils.isNull(projectData.getType())) {qw.eq("type",projectData.getType());}if(!ZwzNullUtils.isNull(projectData.getUserName())) {qw.like("user_name",projectData.getUserName());}IPage<ProjectData> data = iProjectDataService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<ProjectData>>().setData(data);
}
6.2 工程物资申请
@RequestMapping(value = "/addOne", method = RequestMethod.POST)
@ApiOperation(value = "新增物资使用上报单")
public Result<MaterialOrder> addOne(@RequestParam String itemId, @RequestParam BigDecimal number,@RequestParam String projectId,@RequestParam String purpose){MaterialOrder order = new MaterialOrder();order.setItemId(itemId);order.setProjectId(projectId);order.setNumber(number);order.setPurpose(purpose);ProjectData p = iProjectDataService.getById(projectId);if(p == null) {return ResultUtil.error("工程项目不存在");}order.setProjectName(p.getTitle() + "-" + p.getType() + "-" + p.getDaySize() + "天");MaterialData m = iMaterialDataService.getById(order.getItemId());if(m == null) {return ResultUtil.error("物资品类不存在");}order.setTitle(m.getTitle());order.setType(m.getType());order.setScene(m.getScene());order.setStatus("未审核");iMaterialOrderService.saveOrUpdate(order);return ResultUtil.success();
}
6.3 新增工程进度
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增工程进度")
public Result<ProjectProgress> insert(ProjectProgress projectProgress){ProjectData p = iProjectDataService.getById(projectProgress.getItemId());if(p == null) {return ResultUtil.error("项目不存在");}projectProgress.setItemName(p.getTitle() + "-" + p.getType() + "-" + p.getDaySize() + "天");User currUser = securityUtil.getCurrUser();projectProgress.setUserId(currUser.getId());projectProgress.setUserName(currUser.getNickname());projectProgress.setProTime(DateUtil.now());iProjectProgressService.saveOrUpdate(projectProgress);return new ResultUtil<ProjectProgress>().setData(projectProgress);
}
七、免责说明
- 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
- 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
- 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。
下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!
- 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
- 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
- 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
- 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。
相关文章:
【开源】基于SpringBoot的天然气工程业务管理系统的设计和实现
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、使用角色3.1 施工人员3.2 管理员 四、数据库设计4.1 用户表4.2 分公司表4.3 角色表4.4 数据字典表4.5 工程项目表4.6 使用材料表4.7 使用材料领用表4.8 整体E-R图 五、系统展示六、核心代码6.1 查询工程项目6.2 工程物资…...
讯飞星火大模型V3.0 WebApi使用
讯飞星火大模型V3.0 WebApi使用 文档说明:星火认知大模型Web文档 | 讯飞开放平台文档中心 (xfyun.cn) 实现效果 初始化 首先构建一个基础脚手架项目 npm init vuelatest用到如下依赖 "dependencies": {"crypto-js": "^4.2.0",&q…...
拥有DOM力量的你究竟可以干什么
如果你希望访问 HTML 页面中的任何元素,那么您总是从访问 document 对象开始! 查找HTML元素 document.getElementById(id) 通过元素 id 来查找元素 <!DOCTYPE html> <html> <head><meta charset…...
GnuTLS recv error (-110): The TLS connection was non-properly terminated
ubuntu git下载提示 GnuTLS recv error (-110): The TLS connection was non-properly terminated解决方法 git config --global --unset http.https://github.com.proxy...
Notepad++安装插件和配置快捷键
Notepad是一款轻量级、开源的文件编辑工具,可以编辑、浏览文本文件、二进制文件、.cpp、.java、*.cs等文件。Notepad每隔1个月,就有一个新版本,其官网是: https://github.com/notepad-plus-plus/notepad-plus-plus。这里介绍其插件…...
iOS Autolayout 约束设置【顺序】的重要性!
0x00 顺序不同,结果不同 看图说话 1 代码是这样滴~ 设置好约束,让 4 个按钮,宽度均分~ 结果如上图 [_pastButton.topAnchor constraintEqualToAnchor:_textView.bottomAnchor constant:6].active YES;[_pastButton.leftAnchor constraintEq…...
Echarts渲染不报错但是没有内容
🔥博客主页: 破浪前进 🔖系列专栏: Vue、React、PHP ❤️感谢大家点赞👍收藏⭐评论✍️ 问题:在开发项目的时候使用了Echarts但是好端端的忽然就不渲染了 感觉很无语啊,毕竟好好的就不渲染了&am…...
数据结构 | 算法的时间复杂度和空间复杂度【详解】
数据结构 | 算法的时间复杂度和空间复杂度【详解】 1. 什么是数据结构? 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 2. 什么是算法? 算法(Algorithm):就是定义良好的计算过…...
高级篇之ENC编码器多机位帧同步配置详解
高级篇之ENC编码器多机位帧同步配置详解 一 帧同步方案多样性1. 配合vMIX导播的帧同步方案3. 配合硬件导播的帧同步方案3. 配合芯象导播的帧同步 二 帧同步方案1实现步骤1. 准备设备2. 搭建环境3 配置设备3.1 配置固定机位3.2 配置帧同步转发端3.3 配置vMIX 三 效果对比1 不开帧…...
matlab simulink 四旋翼跟拍无人机仿真
1、内容简介 略 7-可以交流、咨询、答疑 2、内容说明 四旋翼跟拍无人机仿真 四旋翼、无人机 需求分析 背景介绍 无人飞行机器人,是无人驾驶且具有一定智能的空中飞行器。这是一种融合了计算机技术、人工智能技术、传感器技术、自动控制技术、新型材料技术、导航…...
jenkins、ant、selenium、testng搭建自动化测试框架
如果在你的理解中自动化测试就是在eclipse里面讲webdriver的包引入,然后写一些测试脚本,这就是你所说的自动化测试,其实这个还不能算是真正的自动化测试,你见过每次需要运行的时候还需要打开eclipse然后去选择运行文件吗ÿ…...
【阅读和学习代码】VoxelNet
文章目录 将点特征 转换为 voxel 特征稀疏张量 到 稠密张量,反向索引参考博客 将点特征 转换为 voxel 特征 https://github.com/skyhehe123/VoxelNet-pytorch/blob/master/data/kitti.py 【Python】np.unique() 介绍与使用 self.T : # maxiumum numbe…...
【23种设计模式】接口隔离原则
个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…...
【Python机器学习】零基础掌握PartialDependenceDisplay检验、检查
如何更好地理解模型对特定特征的依赖性?如何使用历史数据来预测明天股票市场的走势? 想象一下,作为一名数据分析师,面对海量的数据,如何准确地预测明天股票市场的走势?这是一个复杂且具有挑战性的问题。但别担心,有一种神奇的工具可以帮助解析模型对各种因素(特征)的…...
Jmeter的接口自动化测试
在去年实施了一年的三端(PC、无线M站、无线APP【Android、IOS】)后,今年7月份开始,我们开始进行接口自动化的实施,目前已完成了整个框架的搭建以及接口的持续测试集成。今天做个简单的分享。 在开始自动化投入前&#…...
windows c++获取开机启动项
#include <iostream> #include <Windows.h> #include <string> #define RUN_LOCATION "Software\\Microsoft\\Windows\\CurrentVersion\\Run" int main() { HKEY hKey; LONG result; // 打开注册表键 result = RegOpenKeyExA(HKEY_CU…...
【C++初阶】类和对象——构造函数析构函数拷贝构造函数
个人主页点击直达:小白不是程序媛 C系列专栏:C头疼记 目录 前言 类的6个默认成员函数 构造函数 概念 构造函数的特性 析构函数 概念 析构函数特性 拷贝构造函数 概念 拷贝构造函数特性 总结 前言 上篇文章我们对于C中的类有了初步的认识和…...
Java实现SQL分页
在日常开发需要对数据进行分页,配置如下 <!-- baomidou --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.0</version></dependency> 在控…...
软件测试进阶篇----自动化测试脚本开发
自动化测试脚本开发 一、自动化测试用例开发 1、用例设计需要注意的点 2、设计一条测试用例 二、脚本开发过程中的技术 1、线性脚本开发 2、模块化脚本开发(封装线性代码到方法或者类中。在需要的地方进行调用) 3、关键字驱动开发:selen…...
rust std
目录 一,std基本数据结构 1,std::option 2,std::result 二,std容器 1,vector 三,std算法 1,排序 2,二分 (1)vector二分 (2)…...
校准机器学习与SHAP分析:构建可信专利价值评估模型
1. 项目概述:从“黑盒”预测到“透明”评估的跨越在技术管理和投资决策领域,判断一项专利或技术的长期价值,一直是个既关键又棘手的难题。传统的专家评估方法虽然能结合行业洞见,但往往耗时费力、主观性强,且难以应对海…...
矩阵补全与因果推断:评估贸易协定效应的前沿方法与实践
1. 项目概述:当贸易协定遇上因果推断,我们如何看清真实影响?做贸易政策评估这行久了,最头疼的就是“识别”问题。一个贸易协定签了,双边贸易额涨了,你很难说清这增长里有多少是协定本身的功劳,有…...
DeepSeek R1工具调用全链路解析:从API鉴权、参数对齐到响应流式处理的7步黄金流程
更多请点击: https://codechina.net 第一章:DeepSeek R1工具调用能力全景概览 DeepSeek R1 是一款面向开发者与研究者设计的高性能推理模型,其核心优势之一在于原生支持结构化工具调用(Tool Calling),无需…...
长期项目使用Taotoken感受到的API服务稳定性与可靠性
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期项目使用Taotoken感受到的API服务稳定性与可靠性 在持续数月的项目开发与线上服务运行中,我们团队将核心的AI能力构…...
DeepSeek负载均衡失效导致LLM响应延迟飙升300%?紧急回滚+根因分析全流程复盘(含Wireshark抓包关键证据)
更多请点击: https://kaifayun.com 第一章:DeepSeek负载均衡方案 DeepSeek大模型服务在高并发推理场景下,需依托稳定、低延迟、可扩展的负载均衡架构保障SLA。本方案基于四层(TCP/SSL)与七层(HTTP/HTTPS&a…...
DeepSeek长上下文延迟飙升预警:GPU显存碎片率>68%时的实时context重分片算法(已集成至v3.2.1热补丁)
更多请点击: https://codechina.net 第一章:DeepSeek长上下文处理 DeepSeek系列模型(如DeepSeek-V2、DeepSeek-Coder、DeepSeek-MoE)原生支持长达128K tokens的上下文窗口,显著超越传统Transformer架构在长文本建模中…...
观测对比,接入 Taotoken 前后 API 调用的平均延迟与成功率变化
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观测对比,接入 Taotoken 前后 API 调用的平均延迟与成功率变化 作为一个技术团队的负责人,在引入新的技术组…...
昇腾CANN ops-transformer RoPE 旋转位置编码:从复数旋转到 NTK 外推的完整实战
Transformer 的自注意力机制本身对位置不敏感——"猫坐在垫子上"和"垫子坐在猫上"的 attention score 一样,因为点积 QK^T 不区分 token 顺序。位置编码就是给每个 token 打上它在序列中的位置标签。 RoPE(Rotary Position Embeddin…...
[简化版 GAMES 101] 计算机图形学 10:反走样与深度缓冲核心解析
[简化版 GAMES 101] 计算机图形学 10:反走样与深度缓冲核心解析Bilibili 同步视频📝 课前小记:作业与学习指南🔄 上节回顾:光栅化的本质🧩 采样理论:走样从何而来?✂️ 反走样&#…...
卖包装薄膜怎么找客户?下游工厂在哪里
卖包装薄膜找客户,本质是找用膜的下游工厂,核心难点是把这些真实在产、真实消耗薄膜的下游厂的名单和联系人系统拿到手——报价单发不出去、拜访找不到门,问题往往出在名单环节而不是产品本身。 包装薄膜的下游客户到底是谁 包装薄膜品类多样…...
