| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- package cn.com.goldenwater.dcproj.controller.general;
- import cn.com.goldenwater.core.web.BaseController;
- import cn.com.goldenwater.core.web.BaseResponse;
- import cn.com.goldenwater.dcproj.dao.BisInspRsvrRgstrDao;
- import cn.com.goldenwater.dcproj.dto.BisInspRsvrRgstrPcDto;
- import cn.com.goldenwater.dcproj.param.TypeExportParam;
- import cn.com.goldenwater.dcproj.utils.export.ExcelFieldUtil;
- import cn.com.goldenwater.dcproj.utils.export.FieldFormatSkExp;
- import cn.com.goldenwater.dcproj.utils.export.FieldFormatSkImp;
- import cn.com.goldenwater.dcproj.utils.export.template.CreateSkExcelTemplate;
- import cn.com.goldenwater.dcproj.utils.impexcel.ExpAndImpUtil;
- import cn.com.goldenwater.dcproj.utils.impexcel.ImpUtil;
- import cn.com.goldenwater.id.util.UuidUtil;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import io.swagger.annotations.ApiParam;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.data.redis.core.RedisTemplate;
- 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.bind.annotation.RestController;
- import org.springframework.web.multipart.MultipartFile;
- import javax.servlet.http.HttpServletResponse;
- import java.io.File;
- import java.io.IOException;
- import java.util.*;
- /**
- * <p>
- * 通用的导出导入Test Controller
- * </p>
- *
- * @author liyz
- * @date 2019/7/19 19:24
- **/
- @Api(value = "通用的导出导入Test", tags = "通用的导出导入Test")
- @RestController
- @RequestMapping("/dc/geai")
- public class GeneralExpAndImpTestController extends BaseController {
- @Value("${export.templatePath}")
- private String templatePath;
- @Value("${impExcel.basePath}")
- private String impFileCachePath;
- @Autowired
- private RedisTemplate redisTemplate;
- @Autowired
- private ExcelFieldUtil excelFieldUtil;
- @Autowired
- private CreateSkExcelTemplate createSkExcelTemplate;
- @Autowired
- private BisInspRsvrRgstrDao bisInspRsvrRgstrDao;
- @ApiOperation(value = "下载")
- @RequestMapping(value = "/download", method = {RequestMethod.GET})
- public BaseResponse<String> download(HttpServletResponse response) {
- try {
- // 参数1 HttpServletResponse
- // 参数2 数据集,从库里查出来的要导出的数据集,没有给空对象,不为null
- // 参数3 模板的路径
- // 参数4 从模板的第几行开始写入数据 key行号 -1
- // 参数5 sheet的名称,也是导出的模板的名称
- // 获取数据集,具体业务根据情况来写,最终得到一个List
- TypeExportParam tep = new TypeExportParam();
- tep.setType("rsvr");
- tep.setPresId("8C50B3937D1546B0BD7CBEB28DE84CC4");
- // 水库
- tep.setpType("1");
- tep.setTableIds("08");
- // 0未督查 1督查中 2已督查
- tep.setState("1,0");
- tep.setId("001041005001");
- List<BisInspRsvrRgstrPcDto> data = bisInspRsvrRgstrDao.findPcPage(tep);
- List<Map<String, Object>> list = excelFieldUtil.getBisInspRsvrRgstrPcDtoTemplate(createSkExcelTemplate.getBisVo(data, tep));
- String filePath = templatePath + "/" + File.separator + "sk-t8-q2.xls";
- // key所在的
- int startRow = 4;
- String sheetName = "水库模板";
- // 使用通用的下载模板的方法
- ExpAndImpUtil.download(response, list, filePath, startRow, sheetName);
- } catch (Exception e) {
- e.printStackTrace();
- return buildSuccessResponse("下载失败!");
- }
- return buildSuccessResponse("下载成功!");
- }
- @ApiOperation(value = "上传")
- @RequestMapping(value = "/upload", method = {RequestMethod.GET, RequestMethod.POST})
- public BaseResponse<String> upload(@ApiParam("数据流") @RequestParam() MultipartFile file) {
- // 返回[存储路径]
- String filePath = "";
- try {
- // 参数1 文件流
- // 参数2 要写入的文件夹,注意,是文件夹
- String folderPath = ImpUtil.getDateFormatPath(impFileCachePath);
- // 使用通用的上传方法
- filePath = ExpAndImpUtil.upload(file, folderPath);
- } catch (IOException e) {
- return buildSuccessResponse("上传失败!");
- }
- return buildSuccessResponse(filePath);
- }
- @ApiOperation(value = "解析")
- @RequestMapping(value = "/parse", method = {RequestMethod.GET})
- public BaseResponse<Map<String, Object>> parse(@ApiParam("存储路径") @RequestParam() String filePath) {
- // 返回 数据集
- List<LinkedHashMap<String, Object>> listParse = new ArrayList<>();
- List<LinkedHashMap<String, Object>> listShow = new ArrayList<>();
- Map<String, Object> map = new HashMap<>();
- try {
- // 参数1 文件路径
- // 参数2 从第几行开始解析 key所在的行号 -1
- // 参数3 格式化的类,这个类用于把字典项转换和判断有无错误
- // 用通用方法解析得到解析后的数据,可入库的数据
- listParse = ExpAndImpUtil.parseData(filePath, 4, FieldFormatSkImp.class);
- // 把数据存在redis里,前端点击插入的时候,直接根据cacheId取
- String cacheId = UuidUtil.uuid();
- redisTemplate.opsForList().rightPushAll(cacheId, listParse);
- // 用通用方法解析得到解析后的数据,展示给前台的数据
- listShow = ExpAndImpUtil.showData(listParse, FieldFormatSkExp.class);
- // 返回给前台的数据
- map.put("listParse", listShow);
- map.put("cacheId", cacheId);
- } catch (IOException e) {
- e.printStackTrace();
- }
- return buildSuccessResponse(map);
- }
- }
|