mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-18 23:36:52 +08:00
合并代码
This commit is contained in:
@@ -1,40 +1,30 @@
|
|||||||
package com.xboe.module.boecase.api;
|
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.PageList;
|
||||||
import com.xboe.common.Pagination;
|
import com.xboe.common.Pagination;
|
||||||
import com.xboe.common.utils.StringUtil;
|
import com.xboe.common.utils.StringUtil;
|
||||||
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.core.cache.IXaskCache;
|
|
||||||
import com.xboe.core.cache.XaskCacheProvider;
|
|
||||||
import com.xboe.core.log.AutoLog;
|
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.Cases;
|
||||||
|
import com.xboe.module.boecase.entity.CasesMajorType;
|
||||||
import com.xboe.module.boecase.service.ICasesService;
|
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 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);
|
return success(casesPageList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出案例数据
|
||||||
|
* */
|
||||||
|
@PostMapping("/exportCase")
|
||||||
|
public void exportCase(Pagination pager, CaseVo caseVo,HttpServletResponse response){
|
||||||
|
OutputStream OutputStream=null;
|
||||||
|
try {
|
||||||
|
OutputStream = response.getOutputStream();
|
||||||
|
LinkedHashMap<String,String> 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<Cases> list = casesService.managerList(pager.getPageIndex(), pager.getPageSize(), caseVo).getList();
|
||||||
|
List<CaseExportVo> 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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出我的案例
|
* 导出我的案例
|
||||||
* */
|
* */
|
||||||
|
|||||||
@@ -16,4 +16,6 @@ public class CasesFiledVo {
|
|||||||
private String authorId;
|
private String authorId;
|
||||||
|
|
||||||
private String authorName;
|
private String authorName;
|
||||||
|
|
||||||
|
private Boolean excellent;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,21 +82,34 @@ public class Cases extends BaseEntity {
|
|||||||
@Column(name = "status",length = 1)
|
@Column(name = "status",length = 1)
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
|
// 浏览量
|
||||||
@Column(name = "views", nullable = false)
|
@Column(name = "views", nullable = false)
|
||||||
private Integer views;
|
private Integer views;
|
||||||
|
|
||||||
|
// 评论量
|
||||||
@Column(name = "comments", nullable = false)
|
@Column(name = "comments", nullable = false)
|
||||||
private Integer comments;
|
private Integer comments;
|
||||||
|
|
||||||
|
// 点赞量
|
||||||
@Column(name = "praises", nullable = false)
|
@Column(name = "praises", nullable = false)
|
||||||
private Integer praises;
|
private Integer praises;
|
||||||
|
|
||||||
|
// 分享量
|
||||||
@Column(name = "shares", nullable = false)
|
@Column(name = "shares", nullable = false)
|
||||||
private Integer shares;
|
private Integer shares;
|
||||||
|
|
||||||
|
// 收藏量
|
||||||
@Column(name = "favorites", nullable = false)
|
@Column(name = "favorites", nullable = false)
|
||||||
private Integer favorites;
|
private Integer favorites;
|
||||||
|
|
||||||
|
// 推荐量
|
||||||
|
@Column(name = "recommends", nullable = false)
|
||||||
|
private Integer recommends;
|
||||||
|
|
||||||
|
// 引用量
|
||||||
|
@Column(name = "cites", nullable = false)
|
||||||
|
private Integer cites;
|
||||||
|
|
||||||
/**摘要,对应数据对接中的,caseSummary字段*/
|
/**摘要,对应数据对接中的,caseSummary字段*/
|
||||||
@Column(name = "summary", nullable = true, columnDefinition = "text")
|
@Column(name = "summary", nullable = true, columnDefinition = "text")
|
||||||
private String summary;
|
private String summary;
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
package com.xboe.module.boecase.service.impl;
|
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.OrderCondition;
|
||||||
import com.xboe.common.PageList;
|
import com.xboe.common.PageList;
|
||||||
import com.xboe.common.utils.IDGenerator;
|
import com.xboe.common.utils.IDGenerator;
|
||||||
@@ -29,7 +27,6 @@ import java.time.LocalDateTime;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@@ -179,150 +176,13 @@ public class CasesServiceImpl implements ICasesService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageList<Cases> queryRecommendPageCasesV2(CasePageVo caseVo) {
|
public PageList<Cases> queryRecommendPageCasesV2(CasePageVo caseVo) {
|
||||||
|
PageRequest pageRequest = PageRequest.of(caseVo.getPageIndex(), caseVo.getPageSize());
|
||||||
String hql = "select b.* from boe_cases_recommend_push_record a LEFT JOIN boe_cases b on. a.case_id = b.id\n" +
|
Page<Cases> cases = casesRecordDao.queryList(pageRequest, caseVo);
|
||||||
"where a.push_user_id=1 GROUP BY b.id ORDER BY a.sys_create_time DESC";
|
PageList<Cases> pageList = new PageList<>();
|
||||||
|
pageList.setCount((int) cases.getTotalElements());
|
||||||
QueryBuilder query = QueryBuilder.from(Cases.class);
|
pageList.setPageSize(cases.getSize());
|
||||||
PageList<Cases> page = null;
|
pageList.setList(cases.getContent());
|
||||||
List<IFieldFilter> filters = new ArrayList<>();
|
return pageList;
|
||||||
filters.add(FieldFilters.eq("deleted", false));
|
|
||||||
List<IFieldFilter> likes = new ArrayList<IFieldFilter>();
|
|
||||||
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<Long> notInIds = caseVo.getNotInIds();
|
|
||||||
if (CollUtil.isNotEmpty(notInIds)) {
|
|
||||||
filters.add(FieldFilters.notIn("id", notInIds));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (StringUtil.isNotBlank(caseVo.getKeyWord())) {
|
|
||||||
filters.add(FieldFilters.or(likes));
|
|
||||||
}
|
|
||||||
|
|
||||||
List<OrgDomainDto> 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<IFieldFilter> 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<String> 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<String> 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<CasesMajorType> list = casesMajorTypeDao.findList(from.builder());
|
|
||||||
List<Object[]> listFields = null;
|
|
||||||
try {
|
|
||||||
listFields = casesMajorTypeDao.findListFields(from.builder());
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("查询失败", e);
|
|
||||||
}
|
|
||||||
List<String> 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -8,21 +8,30 @@ import java.time.LocalDateTime;
|
|||||||
@Data
|
@Data
|
||||||
public class CaseExportVo {
|
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 title;
|
||||||
|
|
||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
private LocalDateTime endTime;
|
|
||||||
|
|
||||||
private String caseScope;
|
private String caseScope;
|
||||||
|
|
||||||
private Integer views;
|
private LocalDateTime endTime;
|
||||||
|
|
||||||
private Integer praises;
|
|
||||||
|
|
||||||
private Integer shares;
|
|
||||||
|
|
||||||
private Integer favorites;
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user