在这个系列的最后一篇文章中,我们将会完成公寓管理的最后一部分,包括公寓信息的导入和导出。
首先,我们需要在House
实体中添加一个新的字段来表示公寓的类型:
@Entity
public class House {
// ... 其他字段 ...
@Column(name = "house_type")
private String houseType;
// ... 省略getter和setter方法 ...
}
然后,我们需要在house-service
模块中添加一个新的接口来处理导入和导出操作:
public interface IHouseService {
// ... 其他方法 ...
void importData(MultipartFile file) throws IOException;
void exportData(HttpServletResponse response) throws IOException;
}
接下来,在HouseService
类中实现这两个方法:
@Service
public class HouseService implements IHouseService {
// ... 其他方法 ...
@Override
public void importData(MultipartFile file) throws IOException {
List<House> houseList = ExcelUtil.importExcel(file, 1, 0, House.class);
houseRepository.saveAll(houseList);
}
@Override
public void exportData(HttpServletResponse response) throws IOException {
List<House> houseList = houseRepository.findAll();
ExcelUtil.exportExcel(response, "公寓信息", "公寓信息", House.class, houseList);
}
}
在house-web
模块中,我们需要添加对应的控制器方法:
@RestController
@RequestMapping("/api/house")
public class HouseController {
// ... 其他控制器方法 ...
@PostMapping("/import")
public ResponseEntity<?> importData(@RequestParam("file") MultipartFile file) throws IOException {
houseService.importData(file);
return ResponseEntity.ok("导入成功");
}
@GetMapping("/export")
public void exportData(HttpServletResponse response) throws IOException {
houseService.exportData(response);
}
}
最后,我们需要在house-web
模块的resources/static
目录下添加一个导入模板house-template.xlsx
,并在前端的src/views
目录下添加一个导入和导出的界面。
导入模板house-template.xlsx
的内容应该与我们导出的数据格式相匹配。
前端界面的代码大致如下:
<!-- 导入公寓信息的表单 -->
<el-form ref="importForm" :model="importForm" label-width="120px">
<el-form-item label="选择文件">
<el-upload
ref="upload"
action="/api/house/import"
:auto-upload="false"
:on-success="han