mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-09 02:46:50 +08:00
Merge branch 'master' of https://codeup.aliyun.com/648097ddb583fece2f059e59/boe/java-servers
This commit is contained in:
@@ -189,7 +189,7 @@ public class CasesApi extends ApiBaseController {
|
||||
map.put("收藏量","favorites");
|
||||
map.put("导出时间","exportDate");
|
||||
map.put("作者","authorName");
|
||||
List<Cases> list = casesService.managerList(pager.getPageIndex(), pager.getPageSize(), caseVo).getList();
|
||||
List<Cases> list = casesService.exportCase(caseVo);
|
||||
List<CaseExportVo> exportVos = new ArrayList<>();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
for (Cases c:list){
|
||||
|
||||
@@ -22,6 +22,8 @@ public interface ICasesService{
|
||||
* */
|
||||
PageList<Cases> managerList(int pageIndex,int pageSize,CaseVo caseVo);
|
||||
|
||||
List<Cases> exportCase(CaseVo caseVo);
|
||||
|
||||
List<Cases> managerCaseTitleList(CaseVo caseVo);
|
||||
|
||||
/**
|
||||
@@ -105,5 +107,6 @@ public interface ICasesService{
|
||||
PageList<Cases> queryRecommendPageCasesV2(CasePageVo req);
|
||||
|
||||
List<CasesVo> caseIndexV2(CurrentUser current);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -25,8 +25,6 @@ import com.xboe.school.vo.CasesVo;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -261,7 +259,7 @@ public class CasesServiceImpl implements ICasesService {
|
||||
query.addOrder(OrderCondition.desc("topTime"));
|
||||
}
|
||||
//如果选择的是优秀案例,那么这里就按优秀案例的试试排序
|
||||
if (caseVo.getExcellent() != null && caseVo.getExcellent()) {
|
||||
if (caseVo.getExcellent() != null) {
|
||||
filters.add(FieldFilters.eq("excellent", caseVo.getExcellent()));
|
||||
}
|
||||
OrderCondition order = null;
|
||||
@@ -289,15 +287,15 @@ public class CasesServiceImpl implements ICasesService {
|
||||
List<IFieldFilter> subFilters = new ArrayList<>();
|
||||
subFilters.add(FieldFilters.eq("pushUserId", caseVo.getUserId()));
|
||||
subFilters.add(FieldFilters.in("caseId", caseIds));
|
||||
subFilters.add(FieldFilters.eq("pushStatus", 3));
|
||||
subFilters.add(FieldFilters.eq("pushStatus", 4));
|
||||
subFilters.add(FieldFilters.eq("deleted", Boolean.FALSE));
|
||||
|
||||
QueryBuilder queryBuilder = recommendCasesQuery.addFilters(subFilters)
|
||||
.addOrder("sysCreateTime", OrderDirection.DESC)
|
||||
.addGroupBy("caseId");
|
||||
.addGroupBy("recommendId");
|
||||
List<CasesRecommendPushRecord> pushRecords = casesRecommendPushRecordDao.findList(queryBuilder.builder());
|
||||
if (CollUtil.isNotEmpty(pushRecords)) {
|
||||
List<String> rIds = pushRecords.stream().map(CasesRecommendPushRecord::getRecommendId).distinct().collect(Collectors.toList());
|
||||
List<String> rIds = pushRecords.stream().map(CasesRecommendPushRecord::getRecommendId).collect(Collectors.toList());
|
||||
QueryBuilder builder = QueryBuilder.from(CasesRecommend.class);
|
||||
builder.addField("new CasesRecommend(id,recommendOrgName)");
|
||||
List<IFieldFilter> recommendFilters = new ArrayList<>();
|
||||
@@ -328,51 +326,99 @@ public class CasesServiceImpl implements ICasesService {
|
||||
@Override
|
||||
public PageList<Cases> queryRecommendPageCasesV2(CasePageVo caseVo) {
|
||||
|
||||
PageRequest pageRequest = PageRequest.of(caseVo.getPageIndex() - 1, caseVo.getPageSize());
|
||||
Page<Cases> cases = casesRecordDao.queryList(pageRequest,caseVo);
|
||||
PageList<Cases> pageList = new PageList<>();
|
||||
pageList.setCount((int) cases.getTotalElements());
|
||||
pageList.setPageSize(cases.getSize());
|
||||
List<Cases> content = cases.getContent();
|
||||
List<String> caseIds = content.stream().map(Cases::getId).collect(Collectors.toList());
|
||||
String userId = caseVo.getUserId();
|
||||
if (CollUtil.isNotEmpty(caseIds)) {
|
||||
QueryBuilder recommendCasesQuery = QueryBuilder.from(CasesRecommendPushRecord.class);
|
||||
recommendCasesQuery.addField("new CasesRecommendPushRecord(recommendId,caseId)");
|
||||
List<IFieldFilter> subFilters = new ArrayList<>();
|
||||
subFilters.add(FieldFilters.eq("pushUserId", userId));
|
||||
subFilters.add(FieldFilters.in("caseId", caseIds));
|
||||
subFilters.add(FieldFilters.eq("pushStatus", 3));
|
||||
subFilters.add(FieldFilters.eq("deleted", Boolean.FALSE));
|
||||
PageList<Cases> page = null;
|
||||
QueryBuilder query=QueryBuilder.from("CasesRecommendPushRecord a, Cases b");
|
||||
query.addFields("b");
|
||||
query.addFilter(FieldFilters.eqField("a.caseId", "b.id"));
|
||||
query.addFilter(FieldFilters.eq("b.deleted",false));
|
||||
query.addFilter(FieldFilters.eq("a.pushUserId",caseVo.getUserId()));
|
||||
List<IFieldFilter> likes = new ArrayList<IFieldFilter>();
|
||||
String keyword = caseVo.getKeyWord();
|
||||
likes.add(FieldFilters.like("b.title", LikeMatchMode.ANYWHERE, keyword));
|
||||
likes.add(FieldFilters.like("b.authorName", LikeMatchMode.ANYWHERE, keyword));
|
||||
likes.add(FieldFilters.like("b.keyword1", LikeMatchMode.ANYWHERE, keyword));
|
||||
likes.add(FieldFilters.like("b.keyword2", LikeMatchMode.ANYWHERE, keyword));
|
||||
likes.add(FieldFilters.like("b.keyword3", LikeMatchMode.ANYWHERE, keyword));
|
||||
likes.add(FieldFilters.like("b.keyword4", LikeMatchMode.ANYWHERE, keyword));
|
||||
likes.add(FieldFilters.like("b.keyword5", LikeMatchMode.ANYWHERE, keyword));
|
||||
List<IFieldFilter> filters = new ArrayList<>();
|
||||
|
||||
QueryBuilder queryBuilder = recommendCasesQuery.addFilters(subFilters)
|
||||
.addOrder("sysCreateTime", OrderDirection.DESC)
|
||||
.addGroupBy("caseId");
|
||||
List<CasesRecommendPushRecord> pushRecords = casesRecommendPushRecordDao.findList(queryBuilder.builder());
|
||||
if (CollUtil.isNotEmpty(pushRecords)) {
|
||||
List<String> rIds = pushRecords.stream().map(CasesRecommendPushRecord::getRecommendId).collect(Collectors.toList());
|
||||
QueryBuilder builder = QueryBuilder.from(CasesRecommend.class);
|
||||
List<IFieldFilter> recommendFilters = new ArrayList<>();
|
||||
recommendFilters.add(FieldFilters.eq("deleted", Boolean.FALSE));
|
||||
recommendFilters.add(FieldFilters.in("id", rIds));
|
||||
builder.addFilters(recommendFilters);
|
||||
List<CasesRecommend> recommands = casesRecommendDao.findList(builder.builder());
|
||||
if (CollUtil.isNotEmpty(recommands)) {
|
||||
Map<String, CasesRecommend> collect = recommands.stream().collect(Collectors.toMap(k -> k.getId(), item->item));
|
||||
content.forEach(it -> {
|
||||
CasesRecommendPushRecord one = CollUtil.findOne(pushRecords, (a) -> StrUtil.equals(a.getCaseId(), it.getId()));
|
||||
if (Objects.nonNull(one)) {
|
||||
CasesRecommend recommend = collect.get(one.getRecommendId());
|
||||
it.setBreCommend(1);
|
||||
it.setRecommendOrgName(recommend.getRecommendOrgName());
|
||||
it.setSysCreateTime(recommend.getRecommendTime());
|
||||
}
|
||||
});
|
||||
if (StringUtil.isNotBlank(caseVo.getKeyWord())) {
|
||||
filters.add(FieldFilters.or(likes));
|
||||
}
|
||||
//创建时间过滤
|
||||
List<Object> years = caseVo.getYears();
|
||||
if (CollUtil.isNotEmpty(years)) {
|
||||
filters.add(new CustomFieldInFilter("YEAR(b.sysCreateTime)", "b.sysCreateTime", years));
|
||||
}
|
||||
//增加只是查询有附件的
|
||||
filters.add(FieldFilters.isNotNull("b.filePath"));
|
||||
filters.add(FieldFilters.ne("b.filePath", ""));
|
||||
|
||||
String majorType = caseVo.getMajorType();
|
||||
if (StringUtil.isNotBlank(majorType)) {
|
||||
List<CasesMajorType> casesTypes = casesMajorTypeRepoDao.findCasesBy(StrUtil.split(majorType, ","));
|
||||
if (CollUtil.isNotEmpty(casesTypes)) {
|
||||
List<String> caseIds = casesTypes.stream().map(CasesMajorType::getCaseId).collect(Collectors.toList());
|
||||
query.addFilter(FieldFilters.in("b.id", caseIds));
|
||||
} else {
|
||||
return page;
|
||||
}
|
||||
}
|
||||
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.getParent();
|
||||
IFieldFilter itemFilter = FieldFilters.eq("b.orgDomainParent", orgDomainParent);
|
||||
List<OrgDomainDto> orgDomainParent2 = domainDto.getChildren();
|
||||
if (CollUtil.isNotEmpty(orgDomainParent2)) {
|
||||
List<String> seconds = orgDomainParent2.stream().map(OrgDomainDto::getParent).collect(Collectors.toList());
|
||||
IFieldFilter orgDomainParentFilter = FieldFilters.in("b.orgDomainParent2", seconds);
|
||||
itemFilter = FieldFilters.and(itemFilter, orgDomainParentFilter);
|
||||
}
|
||||
for (OrgDomainDto orgDomainDto : orgDomainParent2) {
|
||||
List<OrgDomainDto> orgDomainParent3 = orgDomainDto.getChildren();
|
||||
if (CollUtil.isNotEmpty(orgDomainParent3)) {
|
||||
List<String> thirds = orgDomainParent3.stream().map(OrgDomainDto::getParent).collect(Collectors.toList());
|
||||
IFieldFilter orgDomainParent3Filter = FieldFilters.eq("b.orgDomainParent3", thirds);
|
||||
itemFilter = FieldFilters.and(itemFilter, orgDomainParent3Filter);
|
||||
}
|
||||
}
|
||||
if (i == 0) {
|
||||
orgDomain = itemFilter;
|
||||
} else {
|
||||
orgDomain = FieldFilters.or(orgDomain, itemFilter);
|
||||
}
|
||||
}
|
||||
}
|
||||
pageList.setList(content);
|
||||
return pageList;
|
||||
if (Objects.nonNull(orgDomain)) {
|
||||
filters.add(orgDomain);
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(caseVo.getCaseType())) {
|
||||
filters.add(FieldFilters.eq("b.caseType", caseVo.getCaseType()));
|
||||
}
|
||||
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("b.pushTime");
|
||||
}
|
||||
|
||||
query.addFilters(filters);
|
||||
query.addGroupBy("b.id");
|
||||
query.addOrder(order);
|
||||
query.addOrder(OrderCondition.rand());
|
||||
query.setPageIndex(caseVo.getPageIndex());
|
||||
query.setPageSize(caseVo.getPageSize());
|
||||
page = casesDao.findPage(query.builder());
|
||||
return page;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
@@ -399,9 +445,6 @@ public class CasesServiceImpl implements ICasesService {
|
||||
if (caseVo.getExcellent() != null) {
|
||||
query.addFilter(FieldFilters.eq("excellent", caseVo.getExcellent()));
|
||||
}
|
||||
// if(StringUtil.isNotBlank(caseVo.getMajorType())){
|
||||
// query.addFilter(FieldFilters.eq("majorType",caseVo.getMajorType()));
|
||||
// }
|
||||
if (caseVo.getIsTop() != null) {
|
||||
query.addFilter(FieldFilters.eq("isTop", caseVo.getIsTop()));
|
||||
}
|
||||
@@ -426,6 +469,40 @@ public class CasesServiceImpl implements ICasesService {
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Cases> exportCase(CaseVo caseVo) {
|
||||
List<IFieldFilter> filters = new ArrayList<>();
|
||||
filters.add(FieldFilters.eq("deleted", false));
|
||||
if (StringUtils.isNotBlank(caseVo.getKeyWord())) {
|
||||
filters.add(FieldFilters.like("title", LikeMatchMode.ANYWHERE, caseVo.getKeyWord()));
|
||||
}
|
||||
if (StringUtils.isNotBlank(caseVo.getOrgDomain())) {
|
||||
filters.add(FieldFilters.eq("orgDomainParent", caseVo.getOrgDomain()));
|
||||
}
|
||||
if (caseVo.getExcellent() != null) {
|
||||
filters.add(FieldFilters.eq("excellent", caseVo.getExcellent()));
|
||||
}
|
||||
if (caseVo.getIsTop() != null) {
|
||||
filters.add(FieldFilters.eq("isTop", caseVo.getIsTop()));
|
||||
}
|
||||
if (StringUtils.isNotBlank(caseVo.getAuthorName())) {
|
||||
filters.add(FieldFilters.like("authorName", LikeMatchMode.ANYWHERE, caseVo.getAuthorName()));
|
||||
}
|
||||
|
||||
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");
|
||||
}
|
||||
List<Cases> list = casesDao.findListByFilters(order, filters);
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Cases> managerCaseTitleList(CaseVo caseVo) {
|
||||
QueryBuilder query = QueryBuilder.from(Cases.class);
|
||||
|
||||
Reference in New Issue
Block a user