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

一、前情提要


    上一次我们对维修工单服务进行开发,这一次我们对历史工单服务进行开发。


二、接口设计


1.获取所有完成的维修表单:searchAllCompleteOrder

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

2.获取完成维修表单数量:getCompleteOrderCount `

  • 参数:无
  • 返回值:Integer

3.通过表单Id获取表单信息:searchCompleteOrderById

  • 参数:id(表单ID,类型为Integer
  • 返回值:CompleteOrder(完成工单的实体类)

4.通过关键字搜索完成维修工单:searchCompleteOrderByKeyWord

  • 参数:keyWord(问题关键词,类型为String
  • 返回值:List<CompleteOrder>(由于搜索可能会有多条结果,需要使用List

5.保存已完成表单信息:saveCompleteOrder

  • 参数:CompleteOrder(完成工单实体类)
  • 返回值:无

6.更新完成表单信息:updateCompleteOrder

  • 参数:CompleteOrder(完成工单实体类)
  • 返回值:无

7.删除完成表单信息:deleteCompleteOrder

  • 参数:id(表单ID,类型为Integer
  • 返回值:无

三、实践操作


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

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

com.repairsystem.service下创建接口类CompleteOrderService

package com.repairsystem.service;

import com.repairsystem.entity.CompleteOrder;

import java.util.List;

/**
 * @author CheungChingYin
 * @date 2019/1/16
 * @time 15:45
 */
public interface CompleteOrderService {

    /**
     * 获取所有完成表单
     * @return
     */
    List<CompleteOrder> searchAllCompleteOrder();

    /**
     * 获取完成维修表单数量
     * @return
     */
    Integer getCompleteOrderCount();

    /**
     * 通过表单Id获取表单信息
     * @param id
     * @return
     */
    CompleteOrder searchCompleteOrderById(Integer id);

    /**
     * 通过关键字搜索完成维修工单
     * @param keyWord
     * @return
     */
    List<CompleteOrder> searchCompleteOrderByKeyWord(String keyWord);

    /**
     * 保存已完成表单信息
     * @param completeOrder
     */
    void saveCompleteOrder(CompleteOrder completeOrder);

    /**
     * 更新完成表单信息
     * @param completeOrder
     */
    void updateCompleteOrder(CompleteOrder completeOrder);

    /**
     * 删除完成表单信息
     * @param id
     */
    void deleteCompleteOrder(Integer id);


}

2.编写接口实现类CompleteOrderServiceImpl

com.repairsystem.service.Impl创建接口实现类CompleteOrderServiceImpl,实现接口CompleteOrderService

@Service
public class CompleteOrderServiceImpl implements CompleteOrderService {

    @Autowired
    private CompleteOrderMapper completeOrderMapper;
 }

3.实现通过关键字搜索完成维修工单:searchCompleteOrderByKeyWord

  • 参数:keyWord(问题关键词,类型为String
  • 返回值:List<CompleteOrder>(由于搜索可能会有多条结果,需要使用List

由于在查询的时候需要多表查询,自动生成的实体类会少了两个成员变量,需要我们手动添加。
com.repairsystem.entity.CompleteOrder下添加成员变量

private String className;
private String buildingName;
/*Getter和Setter方法省略*/

在历史工单服务中,数据库的查询也像工单管理服务那样需要用到多表查询,说以我们只能手动编写SQL语句。
首先在com.repairsystem.dao.CompleteOrderMapper中定义好接口searchCompleteOrderByKeyWord

public interface CompleteOrderMapper extends MyMapper<CompleteOrder> {
 	List<CompleteOrder> getCompleteOrderByKeyWord(String keyWord);
}

由于在实体类添加了两个成员变量,所以需要我们在<resultMap>节点上添加相对应的节点

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

在相对应的Mapper映射文件中手动编写SQL语句
里面的#{keyWord}对应上面接口的形参

<select id="getCompleteOrderByKeyWord" resultMap="BaseResultMap" parameterType="java.lang.String">
        SELECT
            co.*,a.admin_name AS adminName,
            c.class_name AS className,
            b.building_name AS buildingName
        FROM
            complete_order AS co
        LEFT JOIN class AS c ON c.class_id = co.class_id
        LEFT JOIN building AS b ON b.building_id = co.building_id
        LEFT JOIN administrator AS a ON a.admin_id = co.admin_id
        WHERE
            co.problem LIKE "%"#{keyWord}"%"
        ORDER BY
            co.complete_time DESC
    </select>

实现接口方法
com.repairsystem.service.Impl.CompleteOrderServiceImpl编写以下代码

@Transactional(propagation = Propagation.SUPPORTS)
    @Override
    public CompleteOrder searchCompleteOrderById(Integer id) {

        if(StringUtils.isBlank(id.toString())){
            throw new CompleteOrderIdIsNullException("传入的完成表单ID不能为空");
        }
        return completeOrderMapper.getCompleteOrderById(id);
    }

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值