diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java index e13546e5..de90e766 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java @@ -1,12 +1,16 @@ 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.ExcelUtil; +import cn.hutool.poi.excel.ExcelWriter; import com.xboe.common.PageList; import com.xboe.common.Pagination; import com.xboe.core.JsonResponse; import com.xboe.core.api.ApiBaseController; 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.ICasesRecommendService; import com.xboe.module.boecase.vo.CasesRecommendLaunchVo; @@ -17,6 +21,8 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -61,6 +67,19 @@ public class CasesRecommendApi extends ApiBaseController { } + /** + * 获取导入纪录 + * + * @return + * @throws Exception + */ + @GetMapping("/import-info") + public JsonResponse excelImport(String importId) { + CasesRecommendLaunchImport byId = iCasesRecommendLaunchImportService.getById(importId); + return success(byId); + } + + /** * 导入 * @@ -72,8 +91,8 @@ public class CasesRecommendApi extends ApiBaseController { public JsonResponse excelImport(@RequestParam("file") MultipartFile file) throws Exception { ExcelReader reader = ExcelUtil.getReader(file.getInputStream()); List> read = reader.read(); - - return success(null); + String s = iCasesRecommendLaunchImportService.importData(read); + return success(s); } @@ -84,7 +103,22 @@ public class CasesRecommendApi extends ApiBaseController { * @throws Exception */ @GetMapping("/download") - public void download(String importId) { + public void download(String importId, HttpServletResponse response) throws Exception { + + List 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); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesDao.java index e5dc25a0..21b0a098 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesDao.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesDao.java @@ -1,32 +1,37 @@ package com.xboe.module.boecase.dao; -import java.util.List; - -import org.springframework.stereotype.Repository; - import com.xboe.common.OrderCondition; import com.xboe.common.PageList; import com.xboe.core.orm.BaseDao; +import com.xboe.core.orm.FieldFilters; import com.xboe.core.orm.IFieldFilter; import com.xboe.module.boecase.entity.Cases; +import org.springframework.stereotype.Repository; + +import java.util.List; @Repository public class CasesDao extends BaseDao { /** * 案例列表分页 - * */ - public PageList queryPageCases(int pageIndex, int pageSize, String keyWord,OrderCondition order, List filters){ + */ + public PageList queryPageCases(int pageIndex, int pageSize, String keyWord, OrderCondition order, List filters) { PageList page = this.getGenericDao().findPage(pageIndex, pageSize, getEntityClass(), filters, order); return page; } + /** * 案例列表置顶分页* - * */ - public PageList queryPageIsTop(int pageIndex,int pageSize,String keyWord,OrderCondition order,List filters){ + */ + public PageList queryPageIsTop(int pageIndex, int pageSize, String keyWord, OrderCondition order, List filters) { PageList page = this.getGenericDao().findPage(pageIndex, pageSize, getEntityClass(), filters, order); return page; } + public Cases getByTitle(String title) { + return this.getGenericDao().findOne(Cases.class, FieldFilters.eq("title", title)); + } + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendLaunchImport.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendLaunchImport.java index 8bf09093..0c593482 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendLaunchImport.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendLaunchImport.java @@ -22,19 +22,19 @@ public class CasesRecommendLaunchImport extends BaseEntity { * 总条数 */ @Column(name = "total_num",length = 20) - private Long totalNum; + private Integer totalNum; /** * 成功条数 */ @Column(name = "success_num",length = 20) - private Long successNum; + private Integer successNum; /** * 失败条数 */ @Column(name = "fail_num",length = 20) - private Long failNum; + private Integer failNum; /** * 上传状态1进行中2成功3失败 diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendLaunchImportService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendLaunchImportService.java index a7f0e3b2..6b784dd0 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendLaunchImportService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendLaunchImportService.java @@ -1,6 +1,8 @@ package com.xboe.module.boecase.service; +import com.xboe.module.boecase.entity.CasesRecommendLaunchImport; + import java.util.List; public interface ICasesRecommendLaunchImportService { @@ -13,4 +15,21 @@ public interface ICasesRecommendLaunchImportService { */ String importData(List> dataList); + + /** + * 下载失败的数据 + * + * @param importId + * @return + */ + List downFailData(String importId); + + /** + * 获取导入结果信息 + * + * @param id + * @return + */ + CasesRecommendLaunchImport getById(String id); + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendLaunchImportServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendLaunchImportServiceImpl.java index 5782a149..02083a94 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendLaunchImportServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendLaunchImportServiceImpl.java @@ -1,16 +1,83 @@ 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 org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; @Service public class CasesRecommendLaunchImportServiceImpl implements ICasesRecommendLaunchImportService { + @Resource + private CasesRecommendLaunchImportDao casesRecommendLaunchImportDao; + + @Resource + private CasesRecommendLaunchImportDataDao casesRecommendLaunchImportDataDao; + + @Resource + private CasesDao casesDao; + @Override public String importData(List> 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 downFailData(String importId) { + + List 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); } }