会议信息管理系统SSM记录(六)

该博客详细介绍了如何实现一个会议预定系统,包括创建MeetingController以查询会议室,添加功能以获取和显示部门及员工信息,使用Ajax实现动态选择部门加载员工,以及集成日历插件进行日期选择。此外,还涉及了会议预定实体类的创建,时间类型转换,以及添加会议请求的后台处理和数据库操作。
摘要由CSDN通过智能技术生成

目录:

(1)会议预定1

(2)会议预定2

(3)会议预约3

(4)会议预定4


(1)会议预定1

创建MeetingController:

//跳转预定会议页面
    @RequestMapping("/bookmeeting")
    public String bookmeeting(Model model){
        model.addAttribute("mrs",meetingRoomService.getAllMr());//查询所有会议室
        return "bookmeeting";
    }

 

删除预定页面部门的固定代码:

 

 修改:

 

 

 (2)会议预定2

添加json依赖:

在MeetingController添加:获取部门请求:

 

 //返回所有的部门
    @RequestMapping("/alldeps")
    @ResponseBody
    public List<Department> getAllDeps(){
        return departmentService.getAllDeps();
    }

 

 //获取所有部门
    public List<Department> getAllDeps() {
        return departmentMapper.getAllDeps();
    }
//获取所有部门
    List<Department> getAllDeps();
 <!--获取所有部门-->
    <select id="getAllDeps" resultType="com.xzb.meeting.model.Department">
        select *
        from department
    </select>

在MeetingController:添加 

获取员工请求:

 

 

 //通过部门编号获取员工
    @RequestMapping("/getempbydepid")
    @ResponseBody
    public List<Employee> getEmpsByDepId(Integer depId){
        return employeeService.getEmpsByDepId(depId);
    }

 在EmployeeService:添加:

 //通过部门编号获取员工
    public List<Employee> getEmpsByDepId(Integer depId) {
        return employeeMapper.getEmpsByDepId(depId);
    }

 在EmployeeMapper:添加这个方法:

 //通过部门编号获取员工
    List<Employee> getEmpsByDepId(Integer depId);

 EmployeeMapper.xml:书写sql语句:

 

 <!--通过部门编号获取员工-->
    <select id="getEmpsByDepId" resultType="com.xzb.meeting.model.Employee">
        select *
        from employee
        where departmentid = #{depId}
    </select>

引入在线jquery的依赖:

 

 <script type="application/javascript">
            
            
            var selDepartments;
            var selEmployees;
            var selSelectedEmployees;
            
            function body_load(){
                selDepartments = document.getElementById("selDepartments");
                selEmployees = document.getElementById("selEmployees");
                selSelectedEmployees = document.getElementById("selSelectedEmployees");

                //发送ajax请求  返回所有的部门
                $.get("/alldeps", function (data) {
                    for (let i = 0; i < data.length; i++) {
                        var item = data[i];
                        var dep = document.createElement("option");//创建一个option元素
                        dep.value = item.departmentId;
                        dep.text = item.departmentName;
                        selDepartments.appendChild(dep);//把option放到selDepartments下拉列表
                    }
                    fillEmployees();
                })
            }

            //填充下方的
            function fillEmployees(){
                clearList(selEmployees);//清除上次的
                var departmentid = selDepartments.options[selDepartments.selectedIndex].value;
                //发送ajax获取 通过部门编号获取员工
                $.get("/getempbydepid?depId="+departmentid,function (data) {
                    for(i=0;i<data.length;i++) {
                        var emp = document.createElement("option");
                        emp.value = data[i].employeeId;
                        emp.text = data[i].employeeName;
                        selEmployees.appendChild(emp);
                    }
                })
            }

            //清除方法
            function clearList(list){
                while(list.childElementCount > 0){
                    list.removeChild(list.lastChild);
                }
            }

            //选择员工
            function selectEmployees(){
                for(var i=0;i<selEmployees.options.length;i++){
                    if (selEmployees.options[i].selected){
                        addEmployee(selEmployees.options[i]);
                        selEmployees.options[i].selected = false;
                    }
                }
            }

            //把员工从右边从删除
            function deSelectEmployees(){
                var elementsToRemoved = new Array();
                var options = selSelectedEmployees.options;
                for(var i=0;i<options.length;i++){
                    if (options[i].selected){
                        elementsToRemoved.push(options[i]);
                    }
                }
                for(i=0;i<elementsToRemoved.length;i++){
                    selSelectedEmployees.removeChild(elementsToRemoved[i]);
                }
            }

            //把选择的员工添加到右边框内
            function addEmployee(optEmployee){
                var options = selSelectedEmployees.options;
                var i = 0;
                var insertIndex = -1;
                while(i < options.length){
                    if (optEmployee.value == options[i].value){
                        return;
                    } else if (optEmployee.value < options[i].value) {
                        insertIndex = i;
                        break;
                    }
                    i++;
                }
                var opt = document.createElement("option");
                opt.value = optEmployee.value;
                opt.text = optEmployee.text;
                opt.selected = true;
                
                if (insertIndex == -1){
                    selSelectedEmployees.appendChild(opt);
                } else {
                    selSelectedEmployees.insertBefore(opt, options[insertIndex]);
                }
            }            
        </script>

(3)会议预约3

 

使用日历的插件

 

在配置文件中mvc:spring-servlet.xml中配置不拦截:

 

 然后 在页面引入js文件:

修改:

 

 

 

 

 (4)会议预定4

创建Meeting实体类:

创建DataConverter:时间类型转换:

package com.xzb.meeting.converter;

import org.springframework.core.convert.converter.Converter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 类型转换
 */
public class DateConverter implements Converter<String, Date> {

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    public Date convert(String source) {
        try {
            return sdf.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
}

 在配置文件中配置:mvc:spring-servlet.xml

 

在MeetingController中添加:预约会议方法:

//添加会议请求  meeting会议的信息  mps:参加人员的数组
    @RequestMapping("/doAddMeeting")
    public String bookMeeting(Meeting meeting, Integer[] mps, HttpSession httpSession){
        Employee currentuser = (Employee) httpSession.getAttribute("currentuser");//从session里面获取当前登录的用户
        meeting.setReservationistid(currentuser.getEmployeeId());//设置meeting信息,设置发起会议的用户
        Integer result = meetingService.addmeeting(meeting,mps);
        if (result == 1){
            return "redirect:/searchmeetings";
        }else {
            return "forward:/bookmeeting";
        }
    }

 在MeetingService:添加:

 

 


    //添加会议请求   mps 参加会议的员工的员工ID
    public Integer addmeeting(Meeting meeting, Integer[] mps) {
        meeting.setReservationtime(new Date());
        meeting.setStatus(0);//设置会议的状态
        Integer result = meetingMapper.addmeeting(meeting);//往会议表添加一条数据
        meetingMapper.addParticipants(meeting.getMeetingid(),mps);//往会议员工记录表添加一条数据
        return result;
    }

在MeetingMapper:添加:

 //添加会议请求
    Integer addmeeting(Meeting meeting);
//添加参会人员
    void addParticipants(@Param("meetingid") Integer meetingid,@Param("mps") Integer[] mps);

MeetingMapper.xml添加sql语句

 <!--添加会议请求-->
    <insert id="addmeeting" useGeneratedKeys="true" keyProperty="meetingid">
        insert into meeting (meetingname,roomid,reservationistid,numberofparticipants,starttime,endtime,reservationtime,canceledtime,description,status)
        values (#{meetingname}, #{roomid}, #{reservationistid}, #{numberofparticipants}, #{starttime}, #{endtime},
                #{reservationtime}, #{canceledtime}, #{description}, #{status})
    </insert>
<!--添加参会人员-->
    <insert id="addParticipants">
        insert into meetingparticipants(meetingid,employeeid) values
        <foreach collection="mps" item="mp" separator=",">
            (#{meetingid},#{mp})
        </foreach>
    </insert>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
车辆信息管理系统ssm是基于Spring+SpringMVC+MyBatis的一种软件开发框架,用于管理车辆信息的系统。该系统可以对车辆信息进行录入、查询、修改和删除等操作。 首先,车辆信息管理系统ssm具有良好的可扩展性和可维护性。通过使用Spring框架,可以实现松耦合的开发模式,将业务逻辑和数据访问层分开,便于后期系统的扩展和维护。SpringMVC作为Web层的框架,可以将请求和处理解耦,方便系统的开发和测试。 其次,车辆信息管理系统ssm还具备高性能和稳定性。通过使用MyBatis作为数据访问层的框架,可以提高数据库访问的效率,并且支持数据库的读写分离和缓存等功能,减少数据库的压力,提高系统的运行稳定性。 此外,车辆信息管理系统ssm还具备良好的用户体验和界面友好性。通过使用Ajax技术,可以实现页面的异步加载和局部刷新,提高系统的响应速度,并减少用户的等待时间。同时,通过合理设计系统的用户界面,使得用户可以方便地进行操作,提高系统的易用性。 最后,车辆信息管理系统ssm还具备丰富的功能和灵活的配置。可以通过系统的配置文件,灵活地配置系统的各项参数,满足不同用户的需求。同时,系统还可以实现车辆信息的统计分析和报表生成等功能,方便用户对车辆信息进行管理和分析。 综上所述,车辆信息管理系统ssm具备可扩展性、可维护性、高性能、稳定性、用户体验和界面友好性、丰富的功能和灵活的配置等优点。在实际应用中,该系统可以提高车辆信息管理的效率和准确性,为用户提供便捷的车辆管理服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值