【机房报修管理系统】后端篇(十二) Service层开发——工单管理服务

一、前情提要


    上一次我们做到了配置Shiro,这一次我们来完成工单管理服务的开发。


二、接口设计


1.获取全部维修工单服务:searchAllOrder

  • 参数:无
  • 返回值:List<Orders>

2.通过维修工单ID获取维修工单信息:searchOrderById

  • 参数:id(维修工单ID,类型为:Integer
  • 返回值:Orders(工单实体类)

3.获得维修工单总数:getOrderCount

  • 参数:无
  • 返回值:Integer

4.保存工单信息:saveOrder

  • 参数:Orders(工单实体类)
  • 返回值:无

5.更新工单信息:updateOrder

  • 参数:Orders(工单实体类)
  • 返回值:无

6.删除工单信息:deleteOrder

  • 参数:Orders(工单实体类)
  • 返回值:无


三、实践操作


注意:我不会对所有接口进行详解,只会对一些需要注意的地方进行讲解。

1.按照上方设计的接口编写接口类OrdersService

com.repairsystem.service创建接口OrdersService

package com.repairsystem.service;

import com.repairsystem.entity.Orders;

import java.util.List;

/**
 * @author CheungChingYin
 * @date 2019/1/15
 * @time 14:28
 */
public interface OrdersService {

    /**
     * 获取全部维修单
     * @return
     */
    List<Orders> searchAllOrder();

    /**
     * 按照维修单号搜索维修单
     * @param id
     * @return
     */
    Orders searchOrderById(Integer id);

    /**
     * 获得工单总数量
     * @return
     */
    Integer getOrderCount();

    /**
     * 添加维修单
     * @param order
     *
     */
    void saveOrder(Orders order);

    /**
     * 更新维修单
     * @param order
     */
    void updateOrder(Orders order);

    /**
     * 删除维修单
     * @param id
     */
    void deleteOrder(Integer id);

}

2.创建接口实现类OrdersServiceImpl

com.repairsystem.service.Impl下创建接口实现类OrdersServiceImpl,实现OrdersService接口。

/**
 * @author CheungChingYin
 * @date 2019/1/15
 * @time 14:33
 */
@Service
public class OrdersServiceImpl implements OrdersService {

    @Autowired
    OrdersMapper ordersMapper;
}

3.保存工单信息:saveOrder的实现

  • 参数:Orders(工单实体类)
  • 返回值:无
    在这里插入图片描述
        在保存工单的时候,我们并不会将所有的字段进行保存,如images_path(上传图片路径)、admin_id(接手的管理员ID),因为在用户上传工单的时候,不一定会上传图片,还有工单一开始保存的时候并不会有管理员接手,管理员需要手动点击接受工单按钮才能填上管理员的ID。这样可能会缺少一两个数据库字段,在通用Mapper中该如何实现?难道需要自己手动写SQL语句?
        不!在通用Mapper中已经有预料到这一种情况,写了一个名为insertSelective()的方法,这个方法对于insert()的不同之处在于:
  • insert()需要将存入数据库的全部的字段的数据都不能为空
  • insertSelective()可以将只存入一些数据库字段的数据,不要求全部存入。

OrdersServiceImpl重写saveOrder方法即可。

@Transactional(propagation = Propagation.REQUIRED)
    @Override
    public void saveOrder(Orders order) {

        ordersMapper.insertSelective(order);
    }

4.获取全部维修工单服务:searchAllOrder的实现

  • 参数:无
  • 返回值:List<Orders>

    由于在Orders这个数据表有外键的出现,而通用Mapper并不会多表查询,所以只能是由我们自己来写SQL语句。

orders表有两个外键class_idbuilding_id
在这里插入图片描述

我们需要回显class_namebuilding_name的信息,所以我们需要这样做:
由于我们在实体类Orders中并没有classNamebuildingName两个成员变量,所以我们需要先创建这两个成员变量。
在实体类Orders中添加成员变量

private String className;
private String buildingName;

/*Getter和Setter方法省略*/

在mapper配置文件OrdersMapper.xml中的<resultMap>节点中添加这两个成员变量(注意:property属性值必须和实体类中的成员变量名一致

<result column="className" property="className" jdbcType="VARCHAR"/>
<result column="buildingName" property="buildingName" jdbcType="VARCHAR"/>

然后在OrdersMapper.xml中编写相关的SQL语句,这里的SQL语句我选择使用Left Join
注意:下面SQL语句中AS className 必须要和上面的column属性值一致

<select id="getAllOrder" resultMap="BaseResultMap">
        SELECT
            o.*, c.class_name AS className,
            b.building_name AS buildingName,
            a.admin_name AS adminName
        FROM
            orders AS o
        LEFT JOIN class AS c ON c.class_id = o.class_id
        LEFT JOIN building AS b ON b.building_id = o.building_id
        LEFT JOIN administrator AS a ON a.admin_id = o.admin_id
        ORDER BY
            o.submit_time DESC
    </select>

之后在Mapper接口文件com.repairsystem.dao.OrdersMapper创建相应的接口方法(注意:接口方法名字必须和mapper配置文件中的id属性值一致

public interface OrdersMapper extends MyMapper<Orders> {
	List<Orders> getAllOrder();
}

最后在service中通过mapper对象调用方法即可,在com.repairsystem.service.Impl.OrdersServiceImpl编写以下代码:

	@Transactional(propagation = Propagation.SUPPORTS)
    @Override
    public List<Orders> searchAllOrder() {

        return ordersMapper.getAllOrder();
    }

    到这里,Service层开发——工单管理服务开发已经完成了。如果您对次篇文章有疑问,可以在文章下方留言,谢谢您的阅读。如对【机房报修管理系统】系列文章有兴趣,可以关注或收藏我的文章,您的支持是我最大的动力,我会尽快推出下一期内容,敬请期待。

网上报修系统B8.0,适用于企业、高等院校、政府部门、中小学校等物品、设备报修管理与维修登记。 一、前台部分 用户报修报修内容包括故障部门、故障具体地点、报修类型、联系人及联系电话、故障主题、故障描述等。其中故障部门和地点,通过三级选项选出,不必填写。若要自定义填写可通过后台功能配置中设置。 报修管理:⒈工单管理:用户提交报修单后,在未派单前,可在报修管理中进行修改或删除。⒉未完成工单:便于了解派单情况和维修进程。⒊用户评价:用户对已完成的维修工作进行评价。 派单管理:派单管理员对不同的报修单委派相应类型的维修人员。若维修人员不及时受理,派单管理员可以改派。 维修管理:⒈报修单受理:可以单个受理,也可批量受理。⒉维修登记:在未完成状态下,可以填写维修进程报告;在完成状态下,填写维修记录。⒊已完成工单,提供查询与统计功能。 用户中心:显示用户个人信息,修改密码、修改资料、报修统计(报修总数、已完成数、未完成数)。 公告信息:用于公布本系统使用过程中各种注意事项、通知、公告信息。 二、后台管理部分 报修信息的管理与查询: ⒈综合管理:可以查询各类报修信息,可删除或批量删除报修信息,可修改全部报修和维修信息。 ⒉分类管理: 未派单类:显示全部未派单的报修信息及总数。可以修改、删除报修信息,给各报修单指派维修人员。 未受理类:显示全部未受理的报修信息及总数。可单个受理和批量受理。可改派维修人员。 未完成类:显示全部未完成维修的报修信息及总数。可进行维修登记,填写维修进程和维修记录。 已完成类:显示全部已完成的报修单信息及总数。可分未评价、满意、不满意类来显示。 综合统计:包括报修统计、维修统计、类型统计。 可以统计某时间段各位报修人员的报修总数、未派单数、已派单数、未完成数、已完成数;维修人员维修总数、已完成维修数、未完成维修数、已完成率、用户满意数、不满意数、未评价数、满意率;故障类型总数、未派单数、已派单数、已完成维修数、未完成维修数、已完成率。时间段可由管理员自由选择。 用户管理:超级管理员密码修改、添加单个用户、自定量添加用户(添加个数由管理员定)、从Excel导入用户(先下载excel模块,按要求填写用户信息上传到本系统,提交数据)。 用户管理实行分类管理:目前分为超级管理员、派单人员、维修人员、报修人员,除超级管理员不能删除外,其它类型人员均可删除或批量删除,各类人员的信息均可修改和查询。 系统设置: ⒈系统设置:可修改系统名称、网站地址、联系地址、联系电话等,可修改页脚代码及内容以及页头右侧代码及内容。 ⒉功能配置:主要包括是否禁止使用本系统;是否执行注册审核;是否执行自动派单;在用户报修时,故障部门和地点,是否执行自定义填写。 ⒊系统通知:添加、修改或删除通知、公告信息。 ⒋报修类型:添加、修改或删除报修类型。 ⒌故障部门:添加、修改、删除一、二、三级故障部门。便于报修时选择。 ⒍故障地点:添加、修改、删除一、二、二级故障地点。便于报修时选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值