mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-16 22:36:50 +08:00
提交文件导入
This commit is contained in:
@@ -1,12 +1,16 @@
|
|||||||
package com.xboe.module.boecase.api;
|
package com.xboe.module.boecase.api;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.ListUtil;
|
||||||
|
import cn.hutool.core.io.IoUtil;
|
||||||
import cn.hutool.poi.excel.ExcelReader;
|
import cn.hutool.poi.excel.ExcelReader;
|
||||||
import cn.hutool.poi.excel.ExcelUtil;
|
import cn.hutool.poi.excel.ExcelUtil;
|
||||||
|
import cn.hutool.poi.excel.ExcelWriter;
|
||||||
import com.xboe.common.PageList;
|
import com.xboe.common.PageList;
|
||||||
import com.xboe.common.Pagination;
|
import com.xboe.common.Pagination;
|
||||||
import com.xboe.core.JsonResponse;
|
import com.xboe.core.JsonResponse;
|
||||||
import com.xboe.core.api.ApiBaseController;
|
import com.xboe.core.api.ApiBaseController;
|
||||||
import com.xboe.module.boecase.entity.CasesRecommend;
|
import com.xboe.module.boecase.entity.CasesRecommend;
|
||||||
|
import com.xboe.module.boecase.entity.CasesRecommendLaunchImport;
|
||||||
import com.xboe.module.boecase.service.ICasesRecommendLaunchImportService;
|
import com.xboe.module.boecase.service.ICasesRecommendLaunchImportService;
|
||||||
import com.xboe.module.boecase.service.ICasesRecommendService;
|
import com.xboe.module.boecase.service.ICasesRecommendService;
|
||||||
import com.xboe.module.boecase.vo.CasesRecommendLaunchVo;
|
import com.xboe.module.boecase.vo.CasesRecommendLaunchVo;
|
||||||
@@ -17,6 +21,8 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.ServletOutputStream;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -61,6 +67,19 @@ public class CasesRecommendApi extends ApiBaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取导入纪录
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
@GetMapping("/import-info")
|
||||||
|
public JsonResponse<CasesRecommendLaunchImport> excelImport(String importId) {
|
||||||
|
CasesRecommendLaunchImport byId = iCasesRecommendLaunchImportService.getById(importId);
|
||||||
|
return success(byId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入
|
* 导入
|
||||||
*
|
*
|
||||||
@@ -72,8 +91,8 @@ public class CasesRecommendApi extends ApiBaseController {
|
|||||||
public JsonResponse<String> excelImport(@RequestParam("file") MultipartFile file) throws Exception {
|
public JsonResponse<String> excelImport(@RequestParam("file") MultipartFile file) throws Exception {
|
||||||
ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
|
ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
|
||||||
List<List<Object>> read = reader.read();
|
List<List<Object>> read = reader.read();
|
||||||
|
String s = iCasesRecommendLaunchImportService.importData(read);
|
||||||
return success(null);
|
return success(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -84,7 +103,22 @@ public class CasesRecommendApi extends ApiBaseController {
|
|||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@GetMapping("/download")
|
@GetMapping("/download")
|
||||||
public void download(String importId) {
|
public void download(String importId, HttpServletResponse response) throws Exception {
|
||||||
|
|
||||||
|
List<String> dataList = iCasesRecommendLaunchImportService.downFailData(importId);
|
||||||
|
|
||||||
|
// 通过工具类创建writer,默认创建xls格式
|
||||||
|
ExcelWriter writer = ExcelUtil.getWriter();
|
||||||
|
|
||||||
|
writer.writeHeadRow(ListUtil.toList("标题"));
|
||||||
|
writer.write(dataList);
|
||||||
|
response.setContentType("application/vnd.ms-excel;charset=utf-8");
|
||||||
|
response.setHeader("Content-Disposition", "attachment;filename=failData.xls");
|
||||||
|
ServletOutputStream out = response.getOutputStream();
|
||||||
|
|
||||||
|
writer.flush(out, true);
|
||||||
|
writer.close();
|
||||||
|
IoUtil.close(out);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,32 +1,37 @@
|
|||||||
package com.xboe.module.boecase.dao;
|
package com.xboe.module.boecase.dao;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.springframework.stereotype.Repository;
|
|
||||||
|
|
||||||
import com.xboe.common.OrderCondition;
|
import com.xboe.common.OrderCondition;
|
||||||
import com.xboe.common.PageList;
|
import com.xboe.common.PageList;
|
||||||
import com.xboe.core.orm.BaseDao;
|
import com.xboe.core.orm.BaseDao;
|
||||||
|
import com.xboe.core.orm.FieldFilters;
|
||||||
import com.xboe.core.orm.IFieldFilter;
|
import com.xboe.core.orm.IFieldFilter;
|
||||||
import com.xboe.module.boecase.entity.Cases;
|
import com.xboe.module.boecase.entity.Cases;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public class CasesDao extends BaseDao<Cases> {
|
public class CasesDao extends BaseDao<Cases> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 案例列表分页
|
* 案例列表分页
|
||||||
* */
|
*/
|
||||||
public PageList<Cases> queryPageCases(int pageIndex, int pageSize, String keyWord,OrderCondition order, List<IFieldFilter> filters){
|
public PageList<Cases> queryPageCases(int pageIndex, int pageSize, String keyWord, OrderCondition order, List<IFieldFilter> filters) {
|
||||||
PageList<Cases> page = this.getGenericDao().findPage(pageIndex, pageSize, getEntityClass(), filters, order);
|
PageList<Cases> page = this.getGenericDao().findPage(pageIndex, pageSize, getEntityClass(), filters, order);
|
||||||
return page;
|
return page;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 案例列表置顶分页*
|
* 案例列表置顶分页*
|
||||||
* */
|
*/
|
||||||
public PageList<Cases> queryPageIsTop(int pageIndex,int pageSize,String keyWord,OrderCondition order,List<IFieldFilter> filters){
|
public PageList<Cases> queryPageIsTop(int pageIndex, int pageSize, String keyWord, OrderCondition order, List<IFieldFilter> filters) {
|
||||||
PageList<Cases> page = this.getGenericDao().findPage(pageIndex, pageSize, getEntityClass(), filters, order);
|
PageList<Cases> page = this.getGenericDao().findPage(pageIndex, pageSize, getEntityClass(), filters, order);
|
||||||
return page;
|
return page;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Cases getByTitle(String title) {
|
||||||
|
return this.getGenericDao().findOne(Cases.class, FieldFilters.eq("title", title));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,19 +22,19 @@ public class CasesRecommendLaunchImport extends BaseEntity {
|
|||||||
* 总条数
|
* 总条数
|
||||||
*/
|
*/
|
||||||
@Column(name = "total_num",length = 20)
|
@Column(name = "total_num",length = 20)
|
||||||
private Long totalNum;
|
private Integer totalNum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 成功条数
|
* 成功条数
|
||||||
*/
|
*/
|
||||||
@Column(name = "success_num",length = 20)
|
@Column(name = "success_num",length = 20)
|
||||||
private Long successNum;
|
private Integer successNum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 失败条数
|
* 失败条数
|
||||||
*/
|
*/
|
||||||
@Column(name = "fail_num",length = 20)
|
@Column(name = "fail_num",length = 20)
|
||||||
private Long failNum;
|
private Integer failNum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上传状态1进行中2成功3失败
|
* 上传状态1进行中2成功3失败
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.xboe.module.boecase.service;
|
package com.xboe.module.boecase.service;
|
||||||
|
|
||||||
|
|
||||||
|
import com.xboe.module.boecase.entity.CasesRecommendLaunchImport;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface ICasesRecommendLaunchImportService {
|
public interface ICasesRecommendLaunchImportService {
|
||||||
@@ -13,4 +15,21 @@ public interface ICasesRecommendLaunchImportService {
|
|||||||
*/
|
*/
|
||||||
String importData(List<List<Object>> dataList);
|
String importData(List<List<Object>> dataList);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下载失败的数据
|
||||||
|
*
|
||||||
|
* @param importId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<String> downFailData(String importId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取导入结果信息
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
CasesRecommendLaunchImport getById(String id);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,83 @@
|
|||||||
package com.xboe.module.boecase.service.impl;
|
package com.xboe.module.boecase.service.impl;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import com.xboe.core.orm.FieldFilters;
|
||||||
|
import com.xboe.module.boecase.dao.CasesDao;
|
||||||
|
import com.xboe.module.boecase.dao.CasesRecommendLaunchImportDao;
|
||||||
|
import com.xboe.module.boecase.dao.CasesRecommendLaunchImportDataDao;
|
||||||
|
import com.xboe.module.boecase.entity.Cases;
|
||||||
|
import com.xboe.module.boecase.entity.CasesRecommendLaunchImport;
|
||||||
|
import com.xboe.module.boecase.entity.CasesRecommendLaunchImportData;
|
||||||
import com.xboe.module.boecase.service.ICasesRecommendLaunchImportService;
|
import com.xboe.module.boecase.service.ICasesRecommendLaunchImportService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class CasesRecommendLaunchImportServiceImpl implements ICasesRecommendLaunchImportService {
|
public class CasesRecommendLaunchImportServiceImpl implements ICasesRecommendLaunchImportService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CasesRecommendLaunchImportDao casesRecommendLaunchImportDao;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CasesRecommendLaunchImportDataDao casesRecommendLaunchImportDataDao;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CasesDao casesDao;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String importData(List<List<Object>> dataList) {
|
public String importData(List<List<Object>> dataList) {
|
||||||
return null;
|
if (CollectionUtil.isEmpty(dataList)) {
|
||||||
|
throw new RuntimeException("导入数据为空");
|
||||||
|
}
|
||||||
|
int totalNum = dataList.size();
|
||||||
|
int successNum = 0;
|
||||||
|
int failNum = 0;
|
||||||
|
Long importId = IdUtil.getSnowflakeNextId();
|
||||||
|
|
||||||
|
for (int i = 1; i < dataList.size(); i++) {
|
||||||
|
String caseTitle = dataList.get(i).get(0).toString();
|
||||||
|
CasesRecommendLaunchImportData casesRecommendLaunchImportData = new CasesRecommendLaunchImportData();
|
||||||
|
casesRecommendLaunchImportData.setImportId(importId + "");
|
||||||
|
casesRecommendLaunchImportData.setCaseTitle(caseTitle);
|
||||||
|
Cases cases = casesDao.getByTitle(caseTitle);
|
||||||
|
if (cases == null) {
|
||||||
|
failNum++;
|
||||||
|
casesRecommendLaunchImportData.setStatus(2);
|
||||||
|
} else {
|
||||||
|
casesRecommendLaunchImportData.setStatus(1);
|
||||||
|
casesRecommendLaunchImportData.setCaseTitle(caseTitle);
|
||||||
|
}
|
||||||
|
casesRecommendLaunchImportDataDao.save(casesRecommendLaunchImportData);
|
||||||
|
successNum++;
|
||||||
|
}
|
||||||
|
CasesRecommendLaunchImport casesRecommendLaunchImport = new CasesRecommendLaunchImport();
|
||||||
|
casesRecommendLaunchImport.setFailNum(failNum);
|
||||||
|
casesRecommendLaunchImport.setId(importId + "");
|
||||||
|
casesRecommendLaunchImport.setSuccessNum(successNum);
|
||||||
|
casesRecommendLaunchImport.setTotalNum(totalNum);
|
||||||
|
casesRecommendLaunchImportDao.save(casesRecommendLaunchImport);
|
||||||
|
return importId + "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> downFailData(String importId) {
|
||||||
|
|
||||||
|
List<CasesRecommendLaunchImportData> dataList = casesRecommendLaunchImportDataDao.findList(FieldFilters.eq("import_id", importId));
|
||||||
|
if (CollectionUtil.isEmpty(dataList)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return dataList.stream().map(CasesRecommendLaunchImportData::getCaseTitle).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CasesRecommendLaunchImport getById(String id) {
|
||||||
|
return casesRecommendLaunchImportDao.get(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user