当前位置: 首页 > article >正文

基于JavaWeb开发的java+Springboot操作系统教学交流平台详细设计实现

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

🍅 作者主页 网顺技术团队
🍅 欢迎点赞 👍 收藏 ⭐留言 📝
🍅 文末获取源码联系方式 📝
🍅 查看下方微信号获取联系方式 承接各种定制系统 📝
🚀🚀🚀精彩系列推荐
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
Java毕设项目精品实战案例《1000套》
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

文章目录

  • 基于JavaWeb开发的javaSpringboot+mybatis+layui的装修验收管理系统设计和实现
  • 前言:
  • 主要设计:
  • 功能截图:
  • 代码实现:
  • 个人总结:

前言:

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

主要设计:

水电验收
主要功能:
(1)列表查询
功能:查询、添加、修改、删除、导出。
查询字段:序号、项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。
(2)业务单据
功能:添加水电考核内容
操作字段:项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。
瓦工验收
(1)列表查询
功能:查询、添加、修改、删除、导出。
查询字段:序号、项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。
(2)业务单据
功能:添加瓦工考核内容
操作字段:项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。
木工验收
(1)列表查询
功能:查询、添加、修改、删除、导出。
查询字段:序号、项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。
(2)业务单据
功能:添加木工考核内容
操作字段:项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。
油漆工验收
(1)列表查询
功能:查询、添加、修改、删除、导出。
查询字段:序号、项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。
(2)业务单据
功能:添加油漆考核内容
操作字段:项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。
施工结束验收
(1)列表查询
功能:查询、添加、修改、删除、导出。
查询字段:序号、项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。
(2)业务单据
功能:添加施工结束考核内容
操作字段:项目名称、项目类型、项目地址、录入人、录入日期、工地负责人、设计师、监理人员、合同金额、施工日期、结束日期、材料品牌、施工人员、考核结果、备注。

功能截图:

管理员登录:
在这里插入图片描述
系统首页:
在这里插入图片描述
用户管理:
在这里插入图片描述
在这里插入图片描述
角色管理:
在这里插入图片描述
菜单管理:
在这里插入图片描述
SQL监控:
在这里插入图片描述
水电验收:
在这里插入图片描述
v
数据导出:
在这里插入图片描述
木工验收:
在这里插入图片描述
在这里插入图片描述
修改密码:
在这里插入图片描述

代码实现:

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

个人总结:

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

获取源码
总体来说这个项目功能相对还是比较简单优秀的、适合初学者作为课程设计和毕业设计参考
🍅 查看下方微信号获取联系方式 承接各种定制系统 📝
🚀🚀🚀精彩系列推荐
Java毕设项目精品实战案例《1000套》
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人


http://www.kler.cn/news/312203.html

相关文章:

  • 探索AI大模型的未来:电信运营商与云服务商的新征途@附58页PDF文件下载
  • liunx 计划任务
  • VRRP协议原理
  • 《计算机网络名词解释》
  • 【Python报错已解决】ModuleNotFoundError: No module named ‘paddle‘
  • 量化交易软件、接口、API、区别、用法,有什么好用的么
  • Vue2中路由的介绍和使用
  • UDS诊断-面试题2
  • 掌握Protobuf精髓:深入解析.proto文件语法及高效应用
  • 蓝桥杯4. Fizz Buzz 经典问题
  • sql基础语法及常见函数等
  • 解决:The play() request was interrupted by a call to pause().报错
  • Android Glide:让图片加载从未如此简单
  • 14_input子系统my_touch_device,my_touch_handlerLinux内核模块
  • Android 将EasyPermissions进一步封装,使得动态权限申请更加简明
  • Java 23、JDK 23正式发布!
  • C++之第十二课
  • 红日药业携手实在智能,构建RPA数字员工平台满足业务一体化需求 | 实在RPA案例
  • Java 多态(难)
  • VS运行程序时报错--无法定位程序输入点
  • Gitlab学习(007 gitlab项目操作)
  • 电影《祝你幸福!》观后感
  • 梧桐数据库(WuTongDB):SQL Server Query Optimizer 简介
  • OSPFv3协议几类LSA介绍
  • 【图像压缩与重构】基于标准+改进BP神经网络
  • Linux实操笔记2 Ubuntu安装Nginx的不同方法
  • python检测keycloak证书连接报错问题
  • 基于多域名,通过云运营商弹性负载,Nginx配置等基于的多租户系统部署
  • 有没有通过倾斜摄影文件直接导出DSM/DOM的文件软件?
  • npm发布插件超级简单版