BaseController.java
4.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
package com.bsth.controller;
import com.bsth.common.ResponseCode;
import com.bsth.service.BaseService;
import com.bsth.service.schedule.utils.DataImportExportService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
*
* @ClassName: BaseController
* @Description: TODO(基础的Controller实现)
* @author PanZhao
* @date 2016年3月17日 下午12:44:06
*
* @param <T>
* @param <ID> 主键类型
*/
public class BaseController<T, ID extends Serializable> {
@Autowired
protected BaseService<T, ID> baseService;
@Autowired
DataImportExportService dataImportExportService;
/**
*
* @Title: list
* @Description: TODO(多条件分页查询)
* @param @param map 查询条件
* @param @param page 页码
* @param @param size 每页显示数量
* @throws
*/
@RequestMapping(method = RequestMethod.GET)
public Page<T> list(@RequestParam Map<String, Object> map,
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "10") int size,
@RequestParam(defaultValue = "id") String order,
@RequestParam(defaultValue = "DESC") String direction){
Direction d;
if(null != direction && direction.equals("ASC"))
d = Direction.ASC;
else
d = Direction.DESC;
return baseService.list(map, new PageRequest(page, size, new Sort(d, order)));
}
/**
*
* @Title: list
* @Description: TODO(多条件查询)
* @param @param map
* @throws
*/
@RequestMapping(value = "/all", method = RequestMethod.GET)
public Iterable<T> list(@RequestParam Map<String, Object> map){
return baseService.list(map);
}
/**
*
* @Title: save
* @Description: TODO(持久化对象)
* @param @param t
* @param @return 设定文件
* @return Map<String,Object> {status: 1(成功),-1(失败)}
* @throws
*/
@RequestMapping(method = RequestMethod.POST)
public Map<String, Object> save(T t){
return baseService.save(t);
}
/**
*
* @Title: findById
* @Description: TODO(根据主键获取单个对象)
* @param @param id
* @throws
*/
@RequestMapping(value="/{id}",method = RequestMethod.GET)
public T findById(@PathVariable("id") ID id){
return baseService.findById(id);
}
/**
*
* @Title: delete
* @Description: TODO(根据主键删除对象)
* @param @param id
* @throws
*/
@RequestMapping(value="/{id}",method = RequestMethod.DELETE)
public Map<String, Object> delete(@PathVariable("id") ID id){
return baseService.delete(id);
}
/**
* 上传数据文件,并使用ktr转换文件导入数据。
* @param file
* @return
* @throws Exception
*/
@RequestMapping(value = "/dataImport", method = RequestMethod.POST)
public Map<String, Object> uploadDataAndImport(MultipartFile file) throws Exception {
Map<String, Object> resultMap = new HashMap<>();
try {
// 获取ktr转换文件绝对路径
File ktrfile = new File(this.getClass().getResource(getDataImportKtrClasspath()).toURI());
System.out.println(ktrfile.getAbsolutePath());
// 导入数据
dataImportExportService.fileDataImport(file, ktrfile);
resultMap.put("status", ResponseCode.SUCCESS);
resultMap.put("msg", "导入成功");
} catch (Exception exp) {
exp.printStackTrace();
resultMap.put("status", ResponseCode.ERROR);
resultMap.put("msg", exp.getLocalizedMessage());
}
return resultMap;
}
/**
* @return 数据导入的ktr转换文件类路径。
*/
protected String getDataImportKtrClasspath() {
// 默认返回异常,子类如果要使用导入功能,必须覆写此方法,指定ktr文件类路径
throw new RuntimeException("必须override,并指定ktr classpath");
}
}