前言
✨博主介绍:一线全栈工程师,毕设实战引路人。技术栈覆盖Java、Python、C#、PHP、Node.js及UniApp跨端开发,擅长多语言项目落地与架构设计。持续分享毕设源码、开题报告、技术选型心得与职场踩坑经验。用工程化思维写代码,帮你把毕设做成作品集。👍👍
👇精彩专栏 推荐订阅👇
海量实战库,源码任你选! 坐拥Java项目2000+套
海量实战库,源码任你选! 坐拥Python项目1000+套
海量实战库,源码任你选! 坐拥小程序/app项目500+套
✅获取源码请私信✅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️
系统实现
学生用户功能实现
宿舍资产管理功能实现
学生用户登陆系统后会跳转到用户中心,此部分展示的是名下寝室资产的全部清单,学生可以通过楼号或者资产编号来查找自己想要查询的资产以及其型号、使用情况等信息。若资产出现问题,可以发起报修请求;无法继续使用的,或者维修成本太高的资产,学生可以发起报废申请;宿舍资产管理页面。
宿舍资产管理界面
报修订单管理功能实现
本模块主要统一对接学生的各类主动发起报修请求记录表单,学生可以查询到自己每次报修的单据流程情况,报修流程包括提交、审核、派工、维修、结单等一系列过程。学生可以对以往的历史订单通过一定条件的筛选查询,并能查看详细情况以获知当前处理进度、维修结果等信息,实时更新获取订单的新变化情况,保障学生知情权,实现全流程透明化服务流程跟踪。
报修订单管理界面
维修记录管理功能实现
学生在此处查看自己所有的关于资产的全部维修记录。维修日志按照时间逆序来排序,清楚地记录了之前每次损坏的时间以及处理情况。每条日志都有损坏的原因,所做的修理操作以及所替换下的零部件和修理的工作人员等的信息。这给学生查看这个资产之前的维修情况以供参考判断维修好坏提供了材料,构成了资产整个生命周期的维修日志。
维修记录管理界面
完成维修管理功能实现
本模块用于显示状态被标识已完成的维修工单。学生浏览维修完毕后的最终结果,浏览完后的设备照片、维修人员填写的维修总结和维修费用最后的核实。学生的审核确认行为作为对完成维修服务的认可,审核操作即为验收结束,系统对该报修工单结案并存档。
完成维修管理界面
报废申请管理功能实现
学生在本模块可以对宿舍资产提出报废申请,在申报原因中要具体说明资产损毁情况,系统允许上传实物照片作为凭证。学生可以查看自己申请的报废单审批状态、审批意见以及审批结果。此功能使得资产报废的申报审批全流程在线化、闭环化,约束了资产处理行为。
报废申请管理界面
宿管用户功能实现
宿舍资产管理功能实现
宿管用户在此模块查看自己分管区域的所有宿舍资产列表。系统按照宿舍楼栋楼层对资产进行分类,宿管可以轻松的找到任一资产并且查看到具体的信息,了解资产位置及状况。平时巡查时所遇到的资产问题可以在此处做简单的记录和标注,方便后面进行维护或清查。
宿舍资产管理界面
报修订单管理功能实现
此模块是宿舍管理员受理学生报修工单的主要工作平台。宿舍管理员接收新工单之后要检查报修内容是否齐全合理,对于报修内容不清楚的工单可以向学生索要详细的报修内容,确认无误后再转入待派发序列,在这里宿舍管理员根据故障情况的轻重缓急以及维修师傅们的特长及繁忙程度来进行合理地分配工单,实现报修任务的发起以及派发过程。
报修订单管理界面
维修记录管理功能实现
宿管在这里监管所有已派发工单的维修实施情况。系统集成维修人员上报的维修记录,宿管进行维修记录是否规范、维修方法合理性以及维修费用真实性的核验,在发现维修纪录有遗漏或者存疑的地方,可以退回给维修员重新上报或者要求补全相关情况,保证维修实施真实有效,控制维修费用,维修记录的管理页面。
维修记录管理界面
完成维修管理功能实现
本模块主要是检查维修人员提交的最后完工报告。宿管员核对维修结果说明,完工现场照以及学生的评价是否相符,以核实维修任务已按要求完成。经核实无误后,系统会把该任务单的状态变为“已完成”,同时自动下发消息给报修学生做最后验收,从而形成了一个完整的报修到验收服务流程。
完成维修管理界面
报废申请管理功能实现
宿管负责审批学生或者自已发起的固定资产报废申请单,宿管须结合申请内容及附件照片对被报固定资产损害情况进行分析,判断其损害情况是否符合报废的规定,修理费用是否超过其残存价值,审批意见包括通过和驳回两种结果,审批通过后即刻开启资产的注销程序,系统更新资产卡片信息;审批驳回应当向申请人员告知详细原因,审批有记录可查询。
报废申请管理界面
盘点登记管理功能实现
宿管定时在这一模块下发资产盘点指令。建立盘点方案要选择盘点范围、资产类别等信息,系统产生相应的盘点列表,宿管对照盘点列表进行现场盘点,在移动终端或者PC端逐一清点实际资产数量并与系统核对,录入盈余、短缺以及损毁差异。完成盘点工作后上交盘点结果,形成盘点报表,为资产账实核对和损溢统计提供依据。
盘点登记管理界面
楼栋信息管理功能实现
此模块保存宿舍楼栋基本信息表。宿管可新增大楼,填写宿舍大楼名称、所在位置及楼层数量等基本信息。对已经录入的信息,宿管可进行查询、查看详情等操作,保障空间基本数据正确性和有效性,以便为后续的宿舍安排以及资产管理等工作提供准确的空间依据。
楼栋信息管理界面
维修人员功能实现
工单分配管理功能实现
维修人员登陆之后,该模块主要收集宿管发放的待维修工单信息,在工单列表中能清楚看到故障类型,故障地点,报修级别等相关信息,维修人员点击接单后可以看到具体的报修内容以及学生的联系方式做好上门维修的准备。它是维修人员接受任务并进行任务跟踪的第一个模块,完成了维修任务的线上下达与领取功能。
工单分配管理界面
维修记录管理功能实现
维护人员在对现场进行检修完成后,在此模块中录入维修结果。需录入真正出现的问题原因、对设备进行了什么样的维修处理以及更换了哪些零件、多少个、并预估工时和材料费用等信息。系统会存储每次的维修内容,生成维护人员的工作日记。是宿管检查维修效果的凭证,也可以作为以后研究故障规律的数据基础,维修记录管理页面。
维修记录管理界面
完成维修管理功能实现
本模块为维修的最后确认模块,维修工人在填写完维修过程之后,在这里进行工单完成情况的确认,需要上传维修以后现场的照片作为完工依据,简单叙述维修结果,确认无误之后,工单状态进入宿管审核、学生验收的过程。该功能实现了对一次完整维修工作流程的技术性收尾,保证了一个维修过程的阶段完整性。
完成维修管理界面
管理员功能实现
宿舍资产管理功能实现
管理员具有对宿舍固定资产全生命周期管控的操作权利,除基本的增加、删除、更新、查询外,管理员可以批量下载模版导入固定资产的信息,方便进行资产的快速初始化。系统所留存的固定资产原始价格、购买的时间以及折旧情况为后期的财务核算提供了参考。管理员可全局掌握所有资产分布状况以及状态统计,对资产进行调配和估价,从而更好的服务于资产管理中的宏观调控;宿舍固定资产管理模块。
宿舍资产管理界面
报废申请管理功能实现
管理员拥有对此模块中的报废申请进行最终审核权限。系统收集所有需要审核的报废申请信息,管理员查看宿管员的初步审核结果、申请原因以及资产情况鉴定,然后选择最终通过或者拒绝,一旦通过系统就将此资产的状态设置为报废并将之从可用资产池里剔除。这使得资产报废流程得以相互制约且有最后的监督保障了国有资产被合理处置。
报废申请管理界面
盘点登记管理功能实现
管理员主要负责监管全院资产盘点工作的审查及复核,管理员可发起全院性盘点任务,也可以对宿舍管理员发起的部分盘点进行审批,盘点结束后管理员查看盘点表单对本次盘点中出现的账实不符进行最终的核实与确认,审核批准盘盈盘亏处置建议。实现了资产盘点的规划、实施、审核相互独立,使得盘点结果具有较高的效力、可信度。
盘点登记管理界面
楼栋信息管理功能实现
管理者管理全校楼栋主数据。可以对已经不存在的楼栋进行删除操作,保证基础数据的有效干净。管理员对全校的楼栋进行全局搜索统计楼栋总数以及分布状况,浏览各楼栋的具体属性信息。完整精确的楼栋信息是宿舍管理、资产管理、空间管理等一切业务的基础,此模块实现了对全校的空间数据集中管理及维护的目的。
楼栋信息管理界面
宿舍信息管理功能实现
管理员对全校宿舍资源进行统筹配置及管理。具有增加及注销宿舍权限,可以根据学校招生人数以及住宿安排实时对可选宿舍资源库进行变更。系统有对宿舍使用的宏观统计视图。此功能保证了宿舍资源配置和系统数据之间的统一。为之后的安排住宿、计费等工作提供了可靠的数据来源。
宿舍信息管理界面
数据库参考
CREATE TABLE `hits` ( `hits_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '点赞ID', `user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '点赞人', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `source_table` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源表', `source_field` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源字段', `source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID', PRIMARY KEY (`hits_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户点击'; DROP TABLE IF EXISTS `releasing_notices`; CREATE TABLE `releasing_notices` ( `notices_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '通知ID', `title` varchar(255) DEFAULT NULL COMMENT '通知标题', `type` varchar(64) DEFAULT NULL COMMENT '通知方式', `content` varchar(255) DEFAULT NULL COMMENT '通知内容', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`notices_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='通知发布'; DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `user_id` int(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID', `state` smallint(1) unsigned NOT NULL DEFAULT '1' COMMENT '账户状态:(1可用|2异常|3已冻结|4已注销)', `user_group` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '所在用户组', `login_time` timestamp NULL DEFAULT NULL COMMENT '上次登录时间', `phone` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '手机号码', `phone_state` smallint(1) unsigned NOT NULL DEFAULT '0' COMMENT '手机认证:(0未认证|1审核中|2已认证)', `username` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '用户名', `nickname` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '昵称', `password` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '密码', `email` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '邮箱', `email_state` smallint(1) unsigned NOT NULL DEFAULT '0' COMMENT '邮箱认证:(0未认证|1审核中|2已认证)', `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '头像地址', `open_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '针对获取用户信息字段', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `vip_level` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '会员等级', `vip_discount` double(10,2) DEFAULT '0.00' COMMENT '会员折扣', `integral` int(11) DEFAULT '0' COMMENT '积分', `balance` double(10,2) DEFAULT '0.00' COMMENT '余额', `ip` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT 'IPv4/IPv6地址', `device_hash` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '设备指纹', `emergency_name` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '紧急联系人', `emergency_mobile` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '紧急联系电话', PRIMARY KEY (`user_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户账户';代码参考
package com.project.demo.controller; import com.project.demo.entity.DormitoryInformation; import com.project.demo.service.DormitoryInformationService; import com.alibaba.fastjson.JSON; import com.project.demo.controller.base.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.util.StringUtils; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import javax.persistence.Query; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; /** * 宿舍信息:(DormitoryInformation)表控制层 * */ @RestController @RequestMapping("/dormitory_information") public class DormitoryInformationController extends BaseController<DormitoryInformation, DormitoryInformationService> { /** * 宿舍信息对象 */ @Autowired public DormitoryInformationController(DormitoryInformationService service) { setService(service); } @PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); }); DormitoryInformation dormitory_information = new DormitoryInformation(); dormitory_information.setDormitory_no(paramMap.get("dormitory_no")==null?null:String.valueOf(paramMap.get("dormitory_no"))); Map<String, String> mapdormitory_no = new HashMap<>(); mapdormitory_no.put("dormitory_no",String.valueOf(paramMap.get("dormitory_no"))); List listdormitory_no = service.selectBaseList(service.select(mapdormitory_no, new HashMap<>())); if (listdormitory_no.size()>0){ return error(30000, "字段宿舍号内容不能重复"); } dormitory_information.setBuilding_name(paramMap.get("building_name")==null?null:String.valueOf(paramMap.get("building_name"))); if (dormitory_information.getBuilding_name()== null || dormitory_information.getBuilding_name().trim().isEmpty()){ throw new IllegalArgumentException("楼栋名称不能为空"); } dormitory_information.setFloor(paramMap.get("floor")==null?null:String.valueOf(paramMap.get("floor"))); if (dormitory_information.getFloor()== null || dormitory_information.getFloor().trim().isEmpty()){ throw new IllegalArgumentException("楼层不能为空"); } dormitory_information.setCreate_by(paramMap.get("create_by")==null?null:Integer.valueOf(String.valueOf(paramMap.get("create_by")))); this.addEntity(dormitory_information); System.out.println("宿舍信息新增成功"); return success(1); } @PostMapping("/set") @Transactional public Map<String, Object> set(HttpServletRequest request) throws IOException { Map<String,String> queryMap = service.readQuery(request); Map<String,String> configMap = service.readConfig(request); Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); }); DormitoryInformation dormitory_information = new DormitoryInformation(); dormitory_information.setDormitory_no(paramMap.get("dormitory_no")==null?null:String.valueOf(paramMap.get("dormitory_no"))); dormitory_information.setBuilding_name(paramMap.get("building_name")==null?null:String.valueOf(paramMap.get("building_name"))); dormitory_information.setFloor(paramMap.get("floor")==null?null:String.valueOf(paramMap.get("floor"))); this.setEntity(queryMap,configMap,dormitory_information); System.out.println("宿舍信息修改成功"); return success(1); package com.project.demo.controller; import com.project.demo.entity.ScrapApplication; import com.project.demo.service.ScrapApplicationService; import com.alibaba.fastjson.JSON; import com.project.demo.controller.base.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.util.StringUtils; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import javax.persistence.Query; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; /** * 报废申请:(ScrapApplication)表控制层 * */ @RestController @RequestMapping("/scrap_application") public class ScrapApplicationController extends BaseController<ScrapApplication, ScrapApplicationService> { /** * 报废申请对象 */ @Autowired public ScrapApplicationController(ScrapApplicationService service) { setService(service); } @PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); }); ScrapApplication scrap_application = new ScrapApplication(); scrap_application.setScrap_number(paramMap.get("scrap_number")==null?null:String.valueOf(paramMap.get("scrap_number"))); scrap_application.setDormitory_no(paramMap.get("dormitory_no")==null?null:String.valueOf(paramMap.get("dormitory_no"))); scrap_application.setBuilding_name(paramMap.get("building_name")==null?null:String.valueOf(paramMap.get("building_name"))); if (scrap_application.getBuilding_name()== null || scrap_application.getBuilding_name().trim().isEmpty()){ throw new IllegalArgumentException("楼栋名称不能为空"); } scrap_application.setFloor(paramMap.get("floor")==null?null:String.valueOf(paramMap.get("floor"))); if (scrap_application.getFloor()== null || scrap_application.getFloor().trim().isEmpty()){ throw new IllegalArgumentException("楼层不能为空"); } scrap_application.setAsset_number(paramMap.get("asset_number")==null?null:String.valueOf(paramMap.get("asset_number"))); scrap_application.setAsset_name(paramMap.get("asset_name")==null?null:String.valueOf(paramMap.get("asset_name"))); scrap_application.setAsset_type(paramMap.get("asset_type")==null?null:String.valueOf(paramMap.get("asset_type"))); scrap_application.setAsset_specifications(paramMap.get("asset_specifications")==null?null:String.valueOf(paramMap.get("asset_specifications"))); scrap_application.setManufacturer(paramMap.get("manufacturer")==null?null:String.valueOf(paramMap.get("manufacturer"))); scrap_application.setCebu_users(paramMap.get("cebu_users")==null?null:Integer.valueOf(String.valueOf(paramMap.get("cebu_users")))); scrap_application.setStudent_users(paramMap.get("student_users")==null?null:Integer.valueOf(String.valueOf(paramMap.get("student_users")))); scrap_application.setStudent_number(paramMap.get("student_number")==null?null:String.valueOf(paramMap.get("student_number"))); scrap_application.setStudent_name(paramMap.get("student_name")==null?null:String.valueOf(paramMap.get("student_name"))); scrap_application.setDormitory(paramMap.get("dormitory")==null?null:String.valueOf(paramMap.get("dormitory"))); scrap_application.setReason_description(paramMap.get("reason_description")==null?null:String.valueOf(paramMap.get("reason_description"))); scrap_application.setExamine_state(paramMap.get("examine_state")==null?null:String.valueOf(paramMap.get("examine_state"))); scrap_application.setExamine_reply(paramMap.get("examine_reply")==null?null:String.valueOf(paramMap.get("examine_reply"))); scrap_application.setExtra(paramMap.get("extra")==null?null:String.valueOf(paramMap.get("extra"))); scrap_application.setSource_table(paramMap.get("source_table")==null?null:String.valueOf(paramMap.get("source_table"))); scrap_application.setSource_id(paramMap.get("source_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_id")))); scrap_application.setSource_user_id(paramMap.get("source_user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_user_id")))); scrap_application.setCreate_by(paramMap.get("create_by")==null?null:Integer.valueOf(String.valueOf(paramMap.get("create_by")))); this.addEntity(scrap_application); String sql = "SELECT MAX(scrap_application_id) AS max FROM "+"`scrap_application`"; Integer max = service.selectBaseCount(sql); sql = ("SELECT count(*) as count FROM `student_users` INNER JOIN `scrap_application` ON student_users.student_number=scrap_application.student_number WHERE student_users.dormitory != scrap_application.dormitory_no AND scrap_application.scrap_application_id="+max).replaceAll("<","<"); Integer count = service.selectBaseCount(sql); if(count>0){ sql = "delete from "+"scrap_application"+" WHERE "+"scrap_application_id"+" ="+max; service.deleteBaseSql(sql); return error(30000,"学生所属宿舍与该资产设备宿舍号不符,提交失败!"); } System.out.println("报废申请新增成功"); return success(1); } @PostMapping("/set") @Transactional public Map<String, Object> set(HttpServletRequest request) throws IOException { Map<String,String> queryMap = service.readQuery(request); Map<String,String> configMap = service.readConfig(request); Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); }); ScrapApplication scrap_application = new ScrapApplication(); scrap_application.setScrap_number(paramMap.get("scrap_number")==null?null:String.valueOf(paramMap.get("scrap_number"))); scrap_application.setDormitory_no(paramMap.get("dormitory_no")==null?null:String.valueOf(paramMap.get("dormitory_no"))); scrap_application.setBuilding_name(paramMap.get("building_name")==null?null:String.valueOf(paramMap.get("building_name"))); scrap_application.setFloor(paramMap.get("floor")==null?null:String.valueOf(paramMap.get("floor"))); scrap_application.setAsset_number(paramMap.get("asset_number")==null?null:String.valueOf(paramMap.get("asset_number"))); scrap_application.setAsset_name(paramMap.get("asset_name")==null?null:String.valueOf(paramMap.get("asset_name"))); scrap_application.setAsset_type(paramMap.get("asset_type")==null?null:String.valueOf(paramMap.get("asset_type"))); scrap_application.setAsset_specifications(paramMap.get("asset_specifications")==null?null:String.valueOf(paramMap.get("asset_specifications"))); scrap_application.setManufacturer(paramMap.get("manufacturer")==null?null:String.valueOf(paramMap.get("manufacturer"))); scrap_application.setCebu_users(paramMap.get("cebu_users")==null?null:Integer.valueOf(String.valueOf(paramMap.get("cebu_users")))); scrap_application.setStudent_users(paramMap.get("student_users")==null?null:Integer.valueOf(String.valueOf(paramMap.get("student_users")))); scrap_application.setStudent_number(paramMap.get("student_number")==null?null:String.valueOf(paramMap.get("student_number"))); scrap_application.setStudent_name(paramMap.get("student_name")==null?null:String.valueOf(paramMap.get("student_name"))); scrap_application.setDormitory(paramMap.get("dormitory")==null?null:String.valueOf(paramMap.get("dormitory"))); scrap_application.setReason_description(paramMap.get("reason_description")==null?null:String.valueOf(paramMap.get("reason_description"))); scrap_application.setExamine_state(paramMap.get("examine_state")==null?null:String.valueOf(paramMap.get("examine_state"))); scrap_application.setExamine_reply(paramMap.get("examine_reply")==null?null:String.valueOf(paramMap.get("examine_reply"))); scrap_application.setSource_table(paramMap.get("source_table")==null?null:String.valueOf(paramMap.get("source_table"))); scrap_application.setSource_id(paramMap.get("source_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_id")))); scrap_application.setSource_user_id(paramMap.get("source_user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_user_id")))); this.setEntity(queryMap,configMap,scrap_application); System.out.println("报废申请修改成功"); return success(1); } /** * 修改审核状态 * * @param id 要修改的记录ID * @param newState 新的审核状态 * @return 提示信息:审核成功/失败 */ @Transactional @GetMapping("/update_examine_state") public String updateExamineState(Long id, String newState) throws IOException { // 检查传入的状态是否合法 if (!newState.equals("未审核") && !newState.equals("已通过") && !newState.equals("未通过")) { return "非法的审核状态"; } Map<String,String> queryMap = new HashMap<>(); queryMap.put("id",String.valueOf(id)); // 根据ID查找记录 ScrapApplication scrap_application = service.findOne(queryMap); if (scrap_application!=null) { // 更新审核状态 scrap_application.setExamine_state(newState); this.setEntity(queryMap,new HashMap<>(),scrap_application); return "审核成功"; } else { return "审核失败:记录不存在";前端:基于Vue.js框架构建用户界面,使用HTML5、CSS3和JavaScript实现页面结构与交互逻辑,通过Vue Router管理路由,Vuex或Pinia维护全局状态。采用Element UI或Vant组件库快速搭建界面,Axios封装HTTP请求实现与后端的数据通信。
后端:基于springboot框架搭建,遵循Controller-Service-Mapper三层架构。Controller层接收前端请求并校验参数,Service层处理核心业务逻辑,Mapper层通过MyBatis或MyBatis-Plus完成数据库操作。使用Spring Security或Shiro结合JWT实现用户认证与权限控制。
数据库:采用MySQL存储持久化数据,Redis缓存热点信息以提升系统性能。
开发工具:使用IDEA开发后端,VSCode或HBuilderX开发前端,Git进行版本管理,Maven和npm分别管理前后端依赖。
源码获取
私信联系我即可~
大家点赞、收藏、关注、评论啦
👇精彩专栏 推荐订阅👇
海量实战库,源码任你选! 坐拥Java项目2000+套
海量实战库,源码任你选! 坐拥Python项目1000+套
海量实战库,源码任你选! 坐拥小程序/app项目500+套
✅获取源码请私信✅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️