作者主页:Java李杨勇 

简介:Java领域优质创作者、【java李杨勇】公号作者✌  简历模板、学习资料、面试题库【关注我,都给你】

文末获取源码联系和送书



前言:

随着社会的进步和科技的发展,越来越多的人追求新颖独特,实用的居住和工作学习环境。因此,在如今的建筑装饰工程中,既要考虑到客户的需求和与建筑结构的协调统一又要考虑到成本和施工组织的安排,所以说现代装饰工程是一件相对繁琐却又必须要做好的事情。在保质保量完成工作内容的同时,还要确保施工施工验收的各项标准数据、通过一段时间对Java相关开发知识的学习,基本了解了施工过程中的各种工艺流程和特点,利用JavaSpringboot+layui简单做个一个装修验收管理系统、适用于简单学习参考使用。



主要设计:


  1. 水电验收

主要功能:

(1)列表查询

功能:查询、添加、修改、删除、导出。

查询字段:序号、项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。

(2)业务单据

功能:添加水电考核内容

操作字段:项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。

  1. 瓦工验收

(1)列表查询

功能:查询、添加、修改、删除、导出。

查询字段:序号、项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。

(2)业务单据

功能:添加瓦工考核内容

操作字段:项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。

  1. 木工验收

(1)列表查询

功能:查询、添加、修改、删除、导出。

查询字段:序号、项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。

(2)业务单据

功能:添加木工考核内容

操作字段:项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。

  1. 油漆工验收

(1)列表查询

功能:查询、添加、修改、删除、导出。

查询字段:序号、项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。

(2)业务单据

功能:添加油漆考核内容

操作字段:项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。

  1. 施工结束验收

(1)列表查询

功能:查询、添加、修改、删除、导出。

查询字段:序号、项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。

(2)业务单据

功能:添加施工结束考核内容

操作字段:项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。


功能截图:


管理员登录: 

基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现_springboot

系统首页: 

基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现_Java毕业设计_02

 用户管理:基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现_springboot_03

基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现_java_04

 角色管理:

基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现_springboot_05

 菜单管理:

基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现_装修验收管理系统_06

SQL监控:

基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现_Java毕业设计_07 水电验收:

基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现_java_08

基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现_装修验收管理系统_09

 数据导出:基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现_java_10

木工验收:

基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现_springboot_11

基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现_装修验收管理系统_12

修改密码:

基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现_layui_13


代码实现:


 装修验收controller:

@RestController
@RequestMapping("/sys/ysWater")
public class YsWaterController extends AbstractController {
@Autowired
private YsWaterService ysWaterervice;

@Autowired
private YsWaterServiceImpl ysWaterServiceImpl;
@RequestMapping("/waterList")
public R waterList(@RequestParam Map<String, Object> params){
params.put("ysType","水电装修验收");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}
@RequestMapping("/waterDjList")
public R waterDjList(@RequestParam Map<String, Object> params){
params.put("ysType","水电业务单据");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}

@RequestMapping("/wgList")
public R wgList(@RequestParam Map<String, Object> params){
params.put("ysType","瓦工装修验收");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}

@RequestMapping("/wgDjList")
public R wgDjList(@RequestParam Map<String, Object> params){
params.put("ysType","瓦工业务单据");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}

@RequestMapping("/mgList")
public R mgList(@RequestParam Map<String, Object> params){
params.put("ysType","木工装修验收");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}
@RequestMapping("/mgDjList")
public R mgDjList(@RequestParam Map<String, Object> params){
params.put("ysType","木工业务单据");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}
@RequestMapping("/yqgList")
public R yqgList(@RequestParam Map<String, Object> params){
params.put("ysType","油漆工装修验收");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}

@RequestMapping("/yqgDjList")
public R yqgDjList(@RequestParam Map<String, Object> params){
params.put("ysType","油漆工业务单据");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}
@RequestMapping("/sgjsList")
public R sgjsList(@RequestParam Map<String, Object> params){
params.put("ysType","施工结束验收");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}

@RequestMapping("/sgjsDjList")
public R sgjsDjList(@RequestParam Map<String, Object> params){
params.put("ysType","施工结束业务单据");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}

@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
YsWater ysWater = ysWaterervice.getById(id);
return R.ok().put("ysWater", ysWater);
}
@RequestMapping("/export")
public R save(HttpServletResponse response, HttpServletRequest request){
try {
ysWaterServiceImpl.outExcelByMealOrReserve(getParametersMap(request),response);
} catch (Exception e) {
e.printStackTrace();
}

return R.ok();
}


/**
* 将所有参数组装成Map
* @return
*/
private Map<String, String> getParametersMap(HttpServletRequest request) throws UnsupportedEncodingException {
Map<String, String> map = new HashMap<String, String>();
Enumeration<String> paramNames = request.getParameterNames();
String encoding = request.getCharacterEncoding();
while (paramNames.hasMoreElements()) {
String paramName = paramNames.nextElement();

String[] paramValues = request.getParameterValues(paramName);
if (paramValues.length == 1) {
String paramValue = paramValues[0];
if (paramValue.length() != 0) {
if (!encoding.toUpperCase().equals("UTF-8")) {
map.put(paramName, new String(paramValue.getBytes("ISO-8859-1"),"UTF-8"));
} else {
map.put(paramName, paramValue);
}
}
}
}
return map;
}

@RequestMapping("/save")
public R save(@RequestBody YsWater ysWater){
ysWaterervice.save(ysWater);
return R.ok();
}
@RequestMapping("/update")
public R update(@RequestBody YsWater ysWater){
ysWaterervice.updateById(ysWater);
return R.ok();
}
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
ysWaterervice.removeByIds(Arrays.asList(ids));
return R.ok();
}
}

用户权限拦截放行:

/**
* Shiro的配置文件
*
*/
@Configuration
public class ShiroConfig {

/**
* 单机环境,session交给shiro管理
*/
@Bean
@ConditionalOnProperty(prefix = "renren", name = "cluster", havingValue = "false")
public DefaultWebSessionManager sessionManager(@Value("${renren.globalSessionTimeout:3600}") long globalSessionTimeout){
DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
sessionManager.setSessionValidationSchedulerEnabled(true);
sessionManager.setSessionIdUrlRewritingEnabled(false);
sessionManager.setSessionValidationInterval(globalSessionTimeout * 1000);
sessionManager.setGlobalSessionTimeout(globalSessionTimeout * 1000);

return sessionManager;
}

/**
* 集群环境,session交给spring-session管理
*/
@Bean
@ConditionalOnProperty(prefix = "renren", name = "cluster", havingValue = "true")
public ServletContainerSessionManager servletContainerSessionManager() {
return new ServletContainerSessionManager();
}

@Bean("securityManager")
public SecurityManager securityManager(UserRealm userRealm, SessionManager sessionManager) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setCacheManager(new EhCacheManager());
securityManager.setRealm(userRealm);
securityManager.setSessionManager(sessionManager);
securityManager.setRememberMeManager(null);

return securityManager;
}


@Bean("shiroFilter")
public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
shiroFilter.setSecurityManager(securityManager);
shiroFilter.setLoginUrl("/login.html");
shiroFilter.setUnauthorizedUrl("/");

Map<String, String> filterMap = new LinkedHashMap<>();
filterMap.put("/swagger/**", "anon");
filterMap.put("/v2/api-docs", "anon");
filterMap.put("/swagger-ui.html", "anon");
filterMap.put("/webjars/**", "anon");
filterMap.put("/swagger-resources/**", "anon");

filterMap.put("/statics/**", "anon");
filterMap.put("/login.html", "anon");
filterMap.put("/sys/login", "anon");
filterMap.put("/favicon.ico", "anon");
filterMap.put("/captcha.jpg", "anon");
filterMap.put("/**", "authc");
shiroFilter.setFilterChainDefinitionMap(filterMap);

return shiroFilter;
}

@Bean("lifecycleBeanPostProcessor")
public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
return new LifecycleBeanPostProcessor();
}

@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
advisor.setSecurityManager(securityManager);
return advisor;
}
}


数据库设计:


数据库名:renren_zxys

文档版本:V1.0.0

文档描述:装修验收数据库表设计描述

表sys_config (系统配置信息表)


编号



名称



数据类型



长度



小数位



允许空值



主键



说明



1



id



bigint



20



0



N



Y






2



param_key



varchar



50



0



Y



N



key



3



param_value



varchar



2000



0



Y



N



value



4



status



tinyint



4



0



Y



N



状态   0:隐藏   1:显示



5



remark



varchar



500



0



Y



N



备注


表sys_dept (部门管理)


编号



名称



数据类型



长度



小数位



允许空值



主键



说明



1



dept_id



bigint



20



0



N



Y






2



parent_id



bigint



20



0



Y



N



上级部门ID,一级部门为0



3



name



varchar



50



0



Y



N



部门名称



4



order_num



int



10



0



Y



N



排序



5



del_flag



tinyint



4



0



Y



N



是否删除  -1:已删除  0:正常


表sys_dict (数据字典表)


编号



名称



数据类型



长度



小数位



允许空值



主键



说明



1



id



bigint



20



0



N



Y






2



name



varchar



100



0



N



N



字典名称



3



type



varchar



100



0



Y



N



字典类型



4



code



varchar



100



0



Y



N



字典码



5



value



varchar



1000



0



Y



N



字典值



6



order_num



int



10



0



Y



N



排序



7



remark



varchar



255



0



Y



N



备注



8



del_flag



tinyint



4



0



Y



N



删除标记  -1:已删除  0:正常


表sys_log (系统日志)


编号



名称



数据类型



长度



小数位



允许空值



主键



说明



1



id



bigint



20



0



N



Y






2



username



varchar



50



0



Y



N



用户名



3



operation



varchar



50



0



Y



N



用户操作



4



method



varchar



200



0



Y



N



请求方法



5



params



varchar



5000



0



Y



N



请求参数



6



time



bigint



20



0



N



N



执行时长(毫秒)



7



ip



varchar



64



0



Y



N



IP地址



8



create_date



datetime



19



0



Y



N



创建时间


表sys_menu (菜单管理)


编号



名称



数据类型



长度



小数位



允许空值



主键



说明



1



menu_id



bigint



20



0



N



Y






2



parent_id



bigint



20



0



Y



N



父菜单ID,一级菜单为0



3



name



varchar



50



0



Y



N



菜单名称



4



url



varchar



200



0



Y



N



菜单URL



5



perms



varchar



500



0



Y



N



授权(多个用逗号分隔,如:user:list,user:create)



6



type



int



10



0



Y



N



类型   0:目录   1:菜单   2:按钮



7



icon



varchar



50



0



Y



N



菜单图标



8



order_num



int



10



0



Y



N



排序


表sys_role (角色)


编号



名称



数据类型



长度



小数位



允许空值



主键



说明



1



role_id



bigint



20



0



N



Y






2



role_name



varchar



100



0



Y



N



角色名称



3



remark



varchar



100



0



Y



N



备注



4



dept_id



bigint



20



0



Y



N



部门ID



5



create_time



datetime



19



0



Y



N



创建时间


表sys_role_dept (角色与部门对应关系)


编号



名称



数据类型



长度



小数位



允许空值



主键



说明



1



id



bigint



20



0



N



Y






2



role_id



bigint



20



0



Y



N



角色ID



3



dept_id



bigint



20



0



Y



N



部门ID


表sys_role_menu (角色与菜单对应关系)


编号



名称



数据类型



长度



小数位



允许空值



主键



默认值



说明



1



id



bigint



20



0



N



Y









2



role_id



bigint



20



0



Y



N






角色ID



3



menu_id



bigint



20



0



Y



N






菜单ID


表sys_user (系统用户)


编号



名称



数据类型



长度



小数位



允许空值



主键



说明



1



user_id



bigint



20



0



N



Y






2



username



varchar



50



0



N



N



用户名



3



password



varchar



100



0



Y



N



密码



4



salt



varchar



20



0



Y



N





5



email



varchar



100



0



Y



N



邮箱



6



mobile



varchar



100



0



Y



N



手机号



7



status



tinyint



4



0



Y



N



状态  0:禁用   1:正常



8



dept_id



bigint



20



0



Y



N



部门ID



9



create_time



datetime



19



0



Y



N



创建时间


表sys_user_role (用户与角色对应关系)


编号



名称



数据类型



长度



小数位



允许空值



主键



说明



1



id



bigint



20



0



N



Y






2



user_id



bigint



20



0



Y



N



用户ID



3



role_id



bigint



20



0



Y



N



角色ID


表ys_water


编号



名称



数据类型



长度



小数位



允许空值



主键



说明



1



id



int



10



0



N



Y






2



name



varchar



255



0



Y



N



项目名称



3



xm_type



varchar



255



0



Y



N



项目类型



4



xm_dizhi



varchar



255



0



Y



N



项目地址



5



username



varchar



255



0



Y



N



录入人



6



lr_time



datetime



19



0



Y



N



录入日期



7



gz_username



varchar



255



0



Y



N



工地负责人



8



sjs



varchar



255



0



Y



N



设计师



9



jlry



varchar



255



0



Y



N



监理人员



10



money



varchar



255



0



Y



N






11



sg_time



datetime



19



0



Y



N






12



js_time



datetime



19



0



Y



N






13



clpp



varchar



255



0



Y



N



材料品牌



14



sg_username



varchar



255



0



Y



N



施工人员



15



khjg



varchar



255



0



Y



N



考核结果



16



remark



varchar



255



0



Y



N






17



ys_type



varchar



255



0



Y



N



验收类型(水电 瓦工 木工 油漆工)



个人总结:


 经过近期对 java 面向对象程序设计、前端知识以及JAVA 框架的掌握和学习,以及这段时间本教育教学系统的开发,让我更加了解到 java 学习的重要性。在开发这个系统是哪个,我完成了多个实验以及地块管理管理平台的功能测试,阶段的系统开发学习当中,我从认识到熟悉java,而后到能够自主运用相关技术,我发现了它确实有很多方便之处,比如java集抽象性和封装性以及继承性和多态性于一体,实现了对代码重用和代码扩充功能,提高了整体软件开发的速度和效率。比如管理员添加用户的时候报java.lang.NullPointException、解决的方法:查看控制台打印信息、发现添加的时候未填写相关信息、报java.lang.NullPointException、通过断电调试发现用户信息为空的数据项、在前端保存的时候必须填写用户完整相关信息或者数据库设置字段可以为空都可以解决、 我学习程序设计的主要目的就是提高自己实际问题的程序解决方案的关键技能和技术。


源码获取:

 大家点赞、收藏、关注、评论啦 、查看????????????????????????微信公众号获取联系方式????????????????????????

打卡 文章 更新 156/  365天



???? 评论区抽粉丝送书啦


                  ???? 欢迎大家在评论区提出意见和建议! (优质评论点赞送书三本,实物图如下)????

                                         基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现_java_14


 内容简介:


 《Java多线程与大数据处理实战》对 Java 的多线程及主流大数据中间件对数据的处理进行了较为详细的讲解。本书主要讲了 Java 的线程创建方法和线程的生命周期,方便我们管理多线程的线程组和线程池,设置线程的优先级,设置守护线程,学习多线程的并发、同步和异步操作,了解 Java 的多线程并发处理工具(如信号量、多线程计数器)等内容。同时,本书还引入了 Spring Boot、Spring Batch、Quartz、Kafka 等大数据中间件。这为学习Java 多线程和大数据处理的读者提供了良好的参考。多线程和大数据的处理是许多开发岗位面试中容易被问到的知识点,一些一线开发的重要岗位面试会将多线程作为压轴问题或重要的考察点。所以,学好多线程的知识点,无论是对于日后的开发工作,还是正要前往一线开发岗位的面试准备,都是非常有用的。

本书既适合高等院校的计算机类专业的学生学习,也适合从事软件开发相关行业的初级和中级开发人员