diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java index f993d740..3da88829 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java @@ -1,40 +1,30 @@ package com.xboe.module.boecase.api; -import java.io.OutputStream; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; - -import com.xboe.core.orm.FieldFilters; -import com.xboe.module.boecase.dao.CasesMajorTypeDao; -import com.xboe.module.boecase.dto.*; -import com.xboe.module.boecase.entity.CasesMajorType; -import com.xboe.module.boecase.vo.CaseExportVo; -import com.xboe.module.dict.entity.DictItem; -import com.xboe.module.excel.ExportsExcelSenderUtil; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - import com.xboe.common.PageList; import com.xboe.common.Pagination; import com.xboe.common.utils.StringUtil; import com.xboe.core.JsonResponse; import com.xboe.core.api.ApiBaseController; -import com.xboe.core.cache.IXaskCache; -import com.xboe.core.cache.XaskCacheProvider; import com.xboe.core.log.AutoLog; +import com.xboe.core.orm.FieldFilters; +import com.xboe.module.boecase.dao.CasesMajorTypeDao; +import com.xboe.module.boecase.dto.*; import com.xboe.module.boecase.entity.Cases; +import com.xboe.module.boecase.entity.CasesMajorType; import com.xboe.module.boecase.service.ICasesService; - +import com.xboe.module.boecase.vo.CaseExportVo; +import com.xboe.module.dict.entity.DictItem; +import com.xboe.module.excel.ExportsExcelSenderUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; /** * 案例 @@ -174,6 +164,51 @@ public class CasesApi extends ApiBaseController { return success(casesPageList); } + /** + * 导出案例数据 + * */ + @PostMapping("/exportCase") + public void exportCase(Pagination pager, CaseVo caseVo,HttpServletResponse response){ + OutputStream OutputStream=null; + try { + OutputStream = response.getOutputStream(); + LinkedHashMap map = new LinkedHashMap<>(); + map.put("浏览量","views"); + map.put("推荐量","recommends"); + map.put("引用量","cites"); + map.put("点赞量","praises"); + map.put("评论量","comments"); + map.put("分享量","shares"); + map.put("收藏量","favorites"); + map.put("导出时间","exportDate"); + map.put("作者","authorName"); + List list = casesService.managerList(pager.getPageIndex(), pager.getPageSize(), caseVo).getList(); + List exportVos = new ArrayList<>(); + LocalDateTime now = LocalDateTime.now(); + for (Cases c:list){ + CaseExportVo caseExportVo = new CaseExportVo(); + caseExportVo.setViews(c.getViews()); + caseExportVo.setRecommends(c.getRecommends()); + caseExportVo.setCites(c.getCites()); + caseExportVo.setPraises(c.getPraises()); + caseExportVo.setComments(c.getComments()); + caseExportVo.setShares(c.getShares()); + caseExportVo.setFavorites(c.getFavorites()); + caseExportVo.setExportDate(now); + caseExportVo.setAuthorName(c.getAuthorName()); + + + exportVos.add(caseExportVo); + } + + response.setContentType("application/octet-stream"); + response.setHeader("Content-disposition", "attachment;filename=cases.xls"); + ExportsExcelSenderUtil.export(map,exportVos, OutputStream,"yyyy-MM-dd HH:mm:ss"); + }catch (Exception e){ + log.error("导出失败",e.getMessage()); + } + } + /** * 导出我的案例 * */ diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/CasesFiledVo.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/CasesFiledVo.java index 0f425963..108bc494 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/CasesFiledVo.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/CasesFiledVo.java @@ -16,4 +16,6 @@ public class CasesFiledVo { private String authorId; private String authorName; + + private Boolean excellent; } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java index ba5aec6e..05039700 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java @@ -82,20 +82,33 @@ public class Cases extends BaseEntity { @Column(name = "status",length = 1) private Integer status; + // 浏览量 @Column(name = "views", nullable = false) private Integer views; + // 评论量 @Column(name = "comments", nullable = false) private Integer comments; + // 点赞量 @Column(name = "praises", nullable = false) private Integer praises; + // 分享量 @Column(name = "shares", nullable = false) private Integer shares; + // 收藏量 @Column(name = "favorites", nullable = false) private Integer favorites; + + // 推荐量 + @Column(name = "recommends", nullable = false) + private Integer recommends; + + // 引用量 + @Column(name = "cites", nullable = false) + private Integer cites; /**摘要,对应数据对接中的,caseSummary字段*/ @Column(name = "summary", nullable = true, columnDefinition = "text") diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index acb24ef1..50f65a04 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -1,7 +1,5 @@ package com.xboe.module.boecase.service.impl; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; import com.xboe.common.OrderCondition; import com.xboe.common.PageList; import com.xboe.common.utils.IDGenerator; @@ -29,7 +27,6 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Objects; @Slf4j @Service @@ -179,150 +176,13 @@ public class CasesServiceImpl implements ICasesService { @Override public PageList queryRecommendPageCasesV2(CasePageVo caseVo) { - - String hql = "select b.* from boe_cases_recommend_push_record a LEFT JOIN boe_cases b on. a.case_id = b.id\n" + - "where a.push_user_id=1 GROUP BY b.id ORDER BY a.sys_create_time DESC"; - - QueryBuilder query = QueryBuilder.from(Cases.class); - PageList page = null; - List filters = new ArrayList<>(); - filters.add(FieldFilters.eq("deleted", false)); - List likes = new ArrayList(); - likes.add(FieldFilters.like("title", LikeMatchMode.ANYWHERE, caseVo.getKeyWord())); - likes.add(FieldFilters.like("authorName", LikeMatchMode.ANYWHERE, caseVo.getKeyWord())); - likes.add(FieldFilters.like("keyword1", LikeMatchMode.ANYWHERE, caseVo.getKeyWord())); - likes.add(FieldFilters.like("keyword2", LikeMatchMode.ANYWHERE, caseVo.getKeyWord())); - likes.add(FieldFilters.like("keyword3", LikeMatchMode.ANYWHERE, caseVo.getKeyWord())); - likes.add(FieldFilters.like("keyword4", LikeMatchMode.ANYWHERE, caseVo.getKeyWord())); - likes.add(FieldFilters.like("keyword5", LikeMatchMode.ANYWHERE, caseVo.getKeyWord())); - List notInIds = caseVo.getNotInIds(); - if (CollUtil.isNotEmpty(notInIds)) { - filters.add(FieldFilters.notIn("id", notInIds)); - } - - if (StringUtil.isNotBlank(caseVo.getKeyWord())) { - filters.add(FieldFilters.or(likes)); - } - - List orgDomainDtos = caseVo.getOrgDomainDtos(); - IFieldFilter orgDomain = null; - if (CollUtil.isNotEmpty(orgDomainDtos)) { - for (int i = 0; i < orgDomainDtos.size(); i++) { - OrgDomainDto domainDto = orgDomainDtos.get(i); - String orgDomainParent = domainDto.getOrgDomainParent(); - String orgDomainParent2 = domainDto.getOrgDomainParent2(); - String orgDomainParent3 = domainDto.getOrgDomainParent3(); - List fieldFilters = new ArrayList<>(); - IFieldFilter itemFilter = null; - if (StrUtil.isNotBlank(orgDomainParent)) { - itemFilter = FieldFilters.eq("orgDomainParent", orgDomainParent); - } - if (StrUtil.isNotBlank(orgDomainParent2)) { - IFieldFilter orgDomainParentFilter = FieldFilters.eq("orgDomainParent2", orgDomainParent2); - if (Objects.nonNull(itemFilter)) { - itemFilter = FieldFilters.and(itemFilter, orgDomainParentFilter); - } else { - itemFilter = orgDomainParentFilter; - } - } - if (StrUtil.isNotBlank(orgDomainParent3)) { - IFieldFilter orgDomainParent3Filter = FieldFilters.eq("orgDomainParent3", orgDomainParent3); - if (Objects.nonNull(itemFilter)) { - itemFilter = FieldFilters.and(itemFilter, orgDomainParent3Filter); - } else { - itemFilter = orgDomainParent3Filter; - } - } - if (i == 0) { - orgDomain = itemFilter; - } else { - orgDomain = FieldFilters.or(orgDomain, itemFilter); - } - } - } - if (Objects.nonNull(orgDomain)) { - filters.add(orgDomain); - } - //创建时间过滤 - List years = caseVo.getYears(); - if (CollUtil.isNotEmpty(years)) { - FieldFilters.in("YEAR(sysCreateTime)", years); - } - - //增加只是查询有附件的 - filters.add(FieldFilters.isNotNull("filePath")); - filters.add(FieldFilters.ne("filePath", "")); - - if (StringUtil.isNotBlank(caseVo.getMajorType())) { - - QueryBuilder from = QueryBuilder.from(CasesMajorType.class); - //前端直接字符串拼接传,后端转化数组 - if (caseVo.getMajorType().contains(",")) { - String[] split = caseVo.getMajorType().split(","); - List strings = Arrays.asList(split); - from.addFilter(FieldFilters.in("majorId", strings)); - } else { - from.addFilter(FieldFilters.eq("majorId", caseVo.getMajorType())); - } - from.addGroupBy("caseId"); - from.addFields("id", "caseId"); -// List list = casesMajorTypeDao.findList(from.builder()); - List listFields = null; - try { - listFields = casesMajorTypeDao.findListFields(from.builder()); - } catch (Exception e) { - log.error("查询失败", e); - } - List list1 = new ArrayList<>(); - if (listFields != null && !listFields.isEmpty()) { - for (Object[] obj : listFields) { - list1.add((String) obj[1]); - } - } - if (list1 != null && !list1.isEmpty()) { - query.addFilter(FieldFilters.in("id", list1)); - } else { - //如果所点击的内容分类都没有案例数据,应该返回空 - return page; - } - } - - if (StringUtils.isNotBlank(caseVo.getCaseType())) { - filters.add(FieldFilters.eq("caseType", caseVo.getCaseType())); - } - if (caseVo.getBreCommend() != null) { - if (!caseVo.getBreCommend()) { - filters.add(FieldFilters.eq("breCommend", 0)); - } else { - filters.add(FieldFilters.eq("breCommend", 1)); - } - } - if (caseVo.getIsTop() != null && caseVo.getIsTop()) { - query.addOrder(OrderCondition.desc("isTop")); - query.addOrder(OrderCondition.desc("topTime")); - } - //如果选择的是优秀案例,那么这里就按优秀案例的试试排序 - if (caseVo.getExcellent() != null && caseVo.getExcellent()) { - filters.add(FieldFilters.eq("excellent", caseVo.getExcellent())); - } - OrderCondition order = null; - if (StringUtils.isNotBlank(caseVo.getOrderField())) { - if (caseVo.getOrderAsc() == null || caseVo.getOrderAsc()) { - order = OrderCondition.asc(caseVo.getOrderField()); - } else { - order = OrderCondition.desc(caseVo.getOrderField()); - } - } else { - order = OrderCondition.desc("sysCreateTime"); - } - query.addFilters(filters); - query.addOrder(order); - query.addOrder(OrderCondition.rand()); - query.setPageIndex(caseVo.getPageIndex()); - query.setPageSize(caseVo.getPageSize()); - page = casesDao.findPage(query.builder()); - - return page; + PageRequest pageRequest = PageRequest.of(caseVo.getPageIndex(), caseVo.getPageSize()); + Page cases = casesRecordDao.queryList(pageRequest, caseVo); + PageList pageList = new PageList<>(); + pageList.setCount((int) cases.getTotalElements()); + pageList.setPageSize(cases.getSize()); + pageList.setList(cases.getContent()); + return pageList; } /** diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CaseExportVo.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CaseExportVo.java index 7c04eb2d..6a5bcef9 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CaseExportVo.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CaseExportVo.java @@ -8,21 +8,30 @@ import java.time.LocalDateTime; @Data public class CaseExportVo { + private Integer views; + + private Integer recommends; + + private Integer cites; + + private Integer praises; + + private Integer comments; + + private Integer shares; + + private Integer favorites; + + private LocalDateTime exportDate; + + private String authorName; private String title; private String status; - private LocalDateTime endTime; - private String caseScope; - private Integer views; - - private Integer praises; - - private Integer shares; - - private Integer favorites; + private LocalDateTime endTime; }