基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现
🍅 作者主頁:Java李楊勇?
🍅 簡介:Java領域優質創作者🏆、【java李楊勇】公號作者? ?簡歷模板、學習資料、面試題庫【關注我,都給你】
🍅文末獲取源碼聯系和送書🍅
前言:
隨著社會的進步和科技的發展,越來越多的人追求新穎獨特,實用的居住和工作學習環境。因此,在如今的建筑裝飾工程中,既要考慮到客戶的需求和與建筑結構的協調統一又要考慮到成本和施工組織的安排,所以說現代裝飾工程是一件相對繁瑣卻又必須要做好的事情。在保質保量完成工作內容的同時,還要確保施工施工驗收的各項標準數據、通過一段時間對Java相關開發知識的學習,基本了解了施工過程中的各種工藝流程和特點,利用JavaSpringboot+layui簡單做個一個裝修驗收管理系統、適用于簡單學習參考使用。
主要設計:
主要功能:
(1)列表查詢
功能:查詢、添加、修改、刪除、導出。
查詢字段:序號、項目名稱、項目類型、項目地址、錄入人、錄入日期、工地負責人、設計師、監理人員、合同金額、施工日期、結束日期、材料品牌、施工人員、考核結果、備注。
(2)業務單據
功能:添加水電考核內容
操作字段:項目名稱、項目類型、項目地址、錄入人、錄入日期、工地負責人、設計師、監理人員、合同金額、施工日期、結束日期、材料品牌、施工人員、考核結果、備注。
(1)列表查詢
功能:查詢、添加、修改、刪除、導出。
查詢字段:序號、項目名稱、項目類型、項目地址、錄入人、錄入日期、工地負責人、設計師、監理人員、合同金額、施工日期、結束日期、材料品牌、施工人員、考核結果、備注。
(2)業務單據
功能:添加瓦工考核內容
操作字段:項目名稱、項目類型、項目地址、錄入人、錄入日期、工地負責人、設計師、監理人員、合同金額、施工日期、結束日期、材料品牌、施工人員、考核結果、備注。
(1)列表查詢
功能:查詢、添加、修改、刪除、導出。
查詢字段:序號、項目名稱、項目類型、項目地址、錄入人、錄入日期、工地負責人、設計師、監理人員、合同金額、施工日期、結束日期、材料品牌、施工人員、考核結果、備注。
(2)業務單據
功能:添加木工考核內容
操作字段:項目名稱、項目類型、項目地址、錄入人、錄入日期、工地負責人、設計師、監理人員、合同金額、施工日期、結束日期、材料品牌、施工人員、考核結果、備注。
(1)列表查詢
功能:查詢、添加、修改、刪除、導出。
查詢字段:序號、項目名稱、項目類型、項目地址、錄入人、錄入日期、工地負責人、設計師、監理人員、合同金額、施工日期、結束日期、材料品牌、施工人員、考核結果、備注。
(2)業務單據
功能:添加油漆考核內容
操作字段:項目名稱、項目類型、項目地址、錄入人、錄入日期、工地負責人、設計師、監理人員、合同金額、施工日期、結束日期、材料品牌、施工人員、考核結果、備注。
(1)列表查詢
功能:查詢、添加、修改、刪除、導出。
查詢字段:序號、項目名稱、項目類型、項目地址、錄入人、錄入日期、工地負責人、設計師、監理人員、合同金額、施工日期、結束日期、材料品牌、施工人員、考核結果、備注。
(2)業務單據
功能:添加施工結束考核內容
操作字段:項目名稱、項目類型、項目地址、錄入人、錄入日期、工地負責人、設計師、監理人員、合同金額、施工日期、結束日期、材料品牌、施工人員、考核結果、備注。
功能截圖:
管理員登錄:?
系統首頁:?
?用戶管理:
?角色管理:
?菜單管理:
SQL監控:
?水電驗收:
?數據導出:
木工驗收:
修改密碼:
代碼實現:
?裝修驗收controller:
@RestController @RequestMapping("/sys/ysWater") public class YsWaterController extends AbstractController {@Autowiredprivate YsWaterService ysWaterervice;@Autowiredprivate 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();}@Beanpublic 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 | | 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套》
?🥇 評論區抽粉絲送書啦
? ? ? ? ? ? ? ? ? 💌 歡迎大家在評論區提出意見和建議! (優質評論點贊送書三本,實物圖如下)💌
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?內容簡介:
《Java多線程與大數據處理實戰》對 Java 的多線程及主流大數據中間件對數據的處理進行了較為詳細的講解。本書主要講了 Java 的線程創建方法和線程的生命周期,方便我們管理多線程的線程組和線程池,設置線程的優先級,設置守護線程,學習多線程的并發、同步和異步操作,了解 Java 的多線程并發處理工具(如信號量、多線程計數器)等內容。同時,本書還引入了 Spring Boot、Spring Batch、Quartz、Kafka 等大數據中間件。這為學習Java 多線程和大數據處理的讀者提供了良好的參考。多線程和大數據的處理是許多開發崗位面試中容易被問到的知識點,一些一線開發的重要崗位面試會將多線程作為壓軸問題或重要的考察點。所以,學好多線程的知識點,無論是對于日后的開發工作,還是正要前往一線開發崗位的面試準備,都是非常有用的。
本書既適合高等院校的計算機類專業的學生學習,也適合從事軟件開發相關行業的初級和中級開發人員
京東自營購買鏈接:
《Java多線程與大數據處理實戰》(李建平)【摘要 書評 試讀】- 京東圖書
當當自營購買鏈接:
《Java多線程與大數據處理實戰》(李建平)【簡介_書評_在線閱讀】 - 當當圖書
總結
以上是生活随笔為你收集整理的基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8a 中断 传感器采集_加速度传感器的安
- 下一篇: HTML+CSS+JS实现 ❤️响应式的