【开源】基于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)…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
