一、前情提要
上一次我们完成了工单管理接口的开发,这一次我们来实现历史工单的开发,其实历史工单的开发和工单管理开发差不多,基本的增删改查即可。
二、接口功能设想
接口需要有基本的增删改查功能外,还需要在查询功能上,有维修问题关键字查询,因为历史工单是给以后的机房管理员遇到问题时,查询有没有相关的问题解决方案,所以需要对问题进行模糊查询。
三、接口设计及实现
注意:以下的接口不再进行详细说明,需要的同学请查看我的GitHub
getAllCompleteOrderInfo
(获得所有已完成的维修工单)getCompleteOrderInfoById
(通过已完成维修工单ID获得工单信息)updateCompleteOrder
(更新完成维修工单)deleteCompleteOrder
(删除完成维修工单)
1.创建完成工单的VO类CompleteOrderVO
在com.repairsystem.entity.vo
创建VO类CompleteOrderVO
package com.repairsystem.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
* @author CheungChingYin
* @date 2018/11/2
* @time 21:37
*/
public class CompleteOrderVO {
private Integer orderId;
private String problem;
private String remark;
private String adminName;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date completeTime;
private String imagePath;
private String className;
private String buildingName;
private Integer computerNumber;
public Integer getOrderId() {
return orderId;
}
public void setOrderId(Integer orderId) {
this.orderId = orderId;
}
public String getProblem() {
return problem;
}
public void setProblem(String problem) {
this.problem = problem;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getAdminName() {
return adminName;
}
public void setAdminName(String adminName) {
this.adminName = adminName;
}
public Date getCompleteTime() {
return completeTime;
}
public void setCompleteTime(Date completeTime) {
this.completeTime = completeTime;
}
public String getImagePath() {
return imagePath;
}
public void setImagePath(String imagePath) {
this.imagePath = imagePath;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getBuildingName() {
return buildingName;
}
public void setBuildingName(String buildingName) {
this.buildingName = buildingName;
}
public Integer getComputerNumber() {
return computerNumber;
}
public void setComputerNumber(Integer computerNumber) {
this.computerNumber = computerNumber;
}
@Override
public String toString() {
return "CompleteOrderVO{" +
"orderId=" + orderId +
", problem='" + problem + '\'' +
", remark='" + remark + '\'' +
", adminName='" + adminName + '\'' +
", completeTime=" + completeTime +
", imagePath='" + imagePath + '\'' +
", className='" + className + '\'' +
", buildingName='" + buildingName + '\'' +
", computerNumber=" + computerNumber +
'}';
}
}
2.创建历史工单的接口CompleteOrderController
在com.repairsystem.web.controller
创建类CompleteOrderController
@RestController
@Api(value = "完成维修工单相关接口", tags = {"完成维修工单业务相关接口"})
@RequestMapping("/completeOrders")
public class CompleteOrderController {
@Autowired
private CompleteOrderService completeOrderService;
}
3.实现通过关键词搜索已完成维修工单问题:getCompleteOrderInfoByKeyWord
- URI:
/completeOrders/getCompleteOrderInfoByKeyWord
- 请求方式:
GET
- 请求参数:
page
(当前页,基本类型为String
) - 请求参数:
keyWord
(搜索关键词,基本类型为String
) - 返回信息:状态码200,相应的问题信息(请求成功时)
- 返回信息:状态码500,传入的当前页(page)不能为空(传入当前页为空时)
- 返回信息:状态码500,传入的查询关键字(keyWord)不能为空(传入查询关键字为空时)
- 实现方式:
1.检查传入的参数是否为空,如果为空则返回传入参数为空的信息。
2.对传入的当前页进行分页,生成分页信息。
3.调用服务层的模糊查询方法进行查询。
4.返回所有信息。
@ApiOperation(value = "通过关键词搜索已完成维修工单问题")
@ApiImplicitParams({
@ApiImplicitParam(name = "page", value = "当前页", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "keyWord",value = "搜索关键词",required = true,dataType = "String",paramType = "query")
})
@GetMapping("getCompleteOrderInfoByKeyWord")
public JsonResult getCompleteOrderInfoByKeyWord(String page, String keyWord){
if (StringUtils.isBlank(page)) {
return JsonResult.errorMsg("传入的当前页(page)不能为空");
}
if (StringUtils.isBlank(keyWord)) {
return JsonResult.errorMsg("传入的查询关键字(keyWord)不能为空");
}
PageHelper.startPage(Integer.parseInt(page), ConstantUtils.Page.PAGESIZE);
List<CompleteOrder> listCompleteOrder = completeOrderService.searchCompleteOrderByKeyWord(keyWord);
List<CompleteOrderVO> listVO = Entity2VO.entityList2VOList(listCompleteOrder,CompleteOrderVO.class);
Map<String, Object> pageMap = PageUtils.pageHandler(page,listCompleteOrder.size()+"");
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("pageMap", pageMap);
resultMap.put("Info", listVO);
return JsonResult.ok(resultMap);
}
到这里,Controller层开发——历史工单相关接口已经开发完成了。如果您对次篇文章有疑问,可以在文章下方留言,谢谢您的阅读。如对【机房报修管理系统】系列文章有兴趣,可以关注或收藏我的文章,您的支持是我最大的动力,我会尽快推出下一期内容,敬请期待。