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

2年前 (2022) 程序员胖胖胖虎阿
127 0 0

🍅 作者主页:Java李杨勇 

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

🍅文末获取源码联系和送书🍅

前言:

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

主要设计:

  1. 水电验收

主要功能:

(1)列表查询

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

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

2)业务单据

功能:添加水电考核内容

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

  1. 瓦工验收

(1)列表查询

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

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

2)业务单据

功能:添加瓦工考核内容

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

  1. 木工验收

(1)列表查询

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

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

2)业务单据

功能:添加木工考核内容

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

  1. 油漆工验收

(1)列表查询

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

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

2)业务单据

功能:添加油漆考核内容

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

  1. 施工结束验收

(1)列表查询

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

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

2)业务单据

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

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

功能截图:

管理员登录: 

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

系统首页: 

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

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

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

 角色管理:

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

 菜单管理:

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

SQL监控:

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

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

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

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

木工验收:

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

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

修改密码:

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

代码实现:

 装修验收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天

 精彩专栏推荐订阅:下方专栏👇🏻👇🏻👇🏻👇🏻

Java项目精品实战案例《100套》

web前端期末大作业网页实战《100套》

 🥇 评论区抽粉丝送书啦

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

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

 内容简介:

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

京东自营购买链接:

《Java多线程与大数据处理实战》(李建平)【摘要 书评 试读】- 京东图书

当当自营购买链接:

《Java多线程与大数据处理实战》(李建平)【简介_书评_在线阅读】 - 当当图书

相关文章

暂无评论

暂无评论...