mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-13 12:56:48 +08:00
Merge branch 'master' of https://codeup.aliyun.com/648097ddb583fece2f059e59/boe/java-servers
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.xboe.module.boecase.api;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.xboe.common.PageList;
|
||||
import com.xboe.common.Pagination;
|
||||
import com.xboe.common.utils.StringUtil;
|
||||
@@ -105,9 +106,10 @@ public class CasesApi extends ApiBaseController {
|
||||
}
|
||||
|
||||
@PostMapping("/queryListV2")
|
||||
public JsonResponse<PageList<Cases>> queryCaseBreV2(@Validated CasePageVo req){
|
||||
public JsonResponse<PageList<Cases>> queryCaseBreV2(@Validated @RequestBody CasePageVo req){
|
||||
String type = req.getType();
|
||||
PageList<Cases> views = null;
|
||||
PageList<Cases> views;
|
||||
req.setUserId(getCurrent().getAccountId());
|
||||
if (type.equals("recommend")) {
|
||||
views = casesService.queryRecommendPageCasesV2(req);
|
||||
} else {
|
||||
@@ -115,8 +117,9 @@ public class CasesApi extends ApiBaseController {
|
||||
}
|
||||
|
||||
if(views!=null){
|
||||
if(views.getList()!=null && !views.getList().isEmpty()){
|
||||
for (Cases c:views.getList()) {
|
||||
List<Cases> cases = views.getList();
|
||||
if(CollUtil.isNotEmpty(cases)){
|
||||
for (Cases c: cases) {
|
||||
StringBuffer stringBuffer = new StringBuffer();
|
||||
List<CasesMajorType> caseId = casesMajorTypeDao.findList(FieldFilters.eq("caseId", c.getId()));
|
||||
if(caseId!=null && !caseId.isEmpty()){
|
||||
|
||||
@@ -198,7 +198,7 @@ public class CasesRecommendApi extends ApiBaseController {
|
||||
}).collect(Collectors.toList());
|
||||
if (CollectionUtil.isNotEmpty(rows)) {
|
||||
// 通过工具类创建writer
|
||||
try (ExcelWriter writer = ExcelUtil.getWriter(true);
|
||||
try (ExcelWriter writer = ExcelUtil.getWriter();
|
||||
// 输出流
|
||||
ServletOutputStream servletOutputStream = response.getOutputStream()
|
||||
) {
|
||||
@@ -213,9 +213,9 @@ public class CasesRecommendApi extends ApiBaseController {
|
||||
writer.setColumnWidth(5, 20);
|
||||
writer.setColumnWidth(6, 20);
|
||||
// 此处的response.setContentType 和教程里的不同
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setContentType("application/vnd.ms-excel;charset=utf-8");
|
||||
// filename就是表格的名字,这个无所谓,反正前端还会重命名
|
||||
response.setHeader("Content-Disposition", "attachment;filename=推荐信息.xlsx");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=推荐信息.xls");
|
||||
|
||||
writer.flush(servletOutputStream, true);
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -62,21 +62,21 @@ public class CasePageVo extends PageDto {
|
||||
|
||||
public List<String> getOrg1() {
|
||||
if (CollectionUtils.isNotEmpty(this.orgDomainDtos)) {
|
||||
return orgDomainDtos.stream().map(OrgDomainDto::getOrgDomainParent).filter(StrUtil::isNotBlank).collect(Collectors.toList());
|
||||
return orgDomainDtos.stream().map(OrgDomainDto::getParent).filter(StrUtil::isNotBlank).collect(Collectors.toList());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<String> getOrg2() {
|
||||
if (CollectionUtils.isNotEmpty(this.orgDomainDtos)) {
|
||||
return orgDomainDtos.stream().map(OrgDomainDto::getOrgDomainParent2).filter(StrUtil::isNotBlank).collect(Collectors.toList());
|
||||
return orgDomainDtos.stream().flatMap(it->it.getChildren().stream()).map(OrgDomainDto::getParent).filter(StrUtil::isNotBlank).collect(Collectors.toList());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<String> getOrg3() {
|
||||
if (CollectionUtils.isNotEmpty(this.orgDomainDtos)) {
|
||||
return orgDomainDtos.stream().map(OrgDomainDto::getOrgDomainParent3).filter(StrUtil::isNotBlank).collect(Collectors.toList());
|
||||
return orgDomainDtos.stream().flatMap(it->it.getChildren().stream().flatMap(i->i.getChildren().stream())).map(OrgDomainDto::getParent).filter(StrUtil::isNotBlank).collect(Collectors.toList());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -2,19 +2,17 @@ package com.xboe.module.boecase.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class OrgDomainDto {
|
||||
|
||||
/**
|
||||
* 组织领域1级
|
||||
*/
|
||||
private String orgDomainParent;
|
||||
private String parent;
|
||||
/**
|
||||
* 组织领域2级
|
||||
* 组织领域子级
|
||||
*/
|
||||
private String orgDomainParent2;
|
||||
/**
|
||||
* 组织领域3级
|
||||
*/
|
||||
private String orgDomainParent3;
|
||||
private List<OrgDomainDto> children;
|
||||
}
|
||||
|
||||
@@ -261,6 +261,9 @@ public class Cases extends BaseEntity {
|
||||
@Transient
|
||||
private List<String> majorIds;
|
||||
|
||||
@Transient
|
||||
private String recommendOrgName;
|
||||
|
||||
|
||||
public Cases() {
|
||||
|
||||
|
||||
@@ -46,9 +46,6 @@ public class CasesRecommend extends BaseEntity {
|
||||
/**查看率*/
|
||||
@Column(name = "view_rate", length = 255)
|
||||
private String viewRate;
|
||||
/**推荐组织ID*/
|
||||
@Column(name = "recommend_org_id", length = 20)
|
||||
private String recommendOrgId;
|
||||
|
||||
/**推荐组织名称*/
|
||||
@Column(name = "recommend_org_name", length = 255)
|
||||
|
||||
@@ -91,5 +91,11 @@ public class CasesRecommendPushRecord extends BaseEntity {
|
||||
@Column(name = "remark")
|
||||
private String remark;
|
||||
|
||||
public CasesRecommendPushRecord() {
|
||||
}
|
||||
|
||||
public CasesRecommendPushRecord(String recommendId,String caseId) {
|
||||
this.recommendId = recommendId;
|
||||
this.caseId = caseId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +61,10 @@ public class CasesRecommendServiceImpl implements ICasesRecommendService {
|
||||
public void rePushOrWithdraw(CasesRecommendPushVo casesRecommendPushVo) {
|
||||
// 查询
|
||||
CasesRecommend db = casesRecommendDao.get(casesRecommendPushVo.getCasesRecommendId());
|
||||
if (CasesPushStatusEnum.PUSH_SUCCESS.getStatus().equals(db.getPushProgress())){
|
||||
if (CasesPushStatusEnum.PUSH_SUCCESS.getStatus().equals(db.getPushProgress())
|
||||
|| CasesPushStatusEnum.WAIT_PUSH.getStatus().equals(db.getPushProgress())
|
||||
|| CasesPushStatusEnum.PUSH_ING.getStatus().equals(db.getPushProgress())
|
||||
){
|
||||
// 当为推送成功时为
|
||||
iCasesRecommendPushRecordService.rePushOrWithdraw(true, casesRecommendPushVo.getCasesRecommendId());
|
||||
db.setPushProgress(CasesPushStatusEnum.PUSH_REVOKE.getStatus());
|
||||
|
||||
@@ -4,17 +4,17 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.text.split.SplitIter;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.xboe.common.OrderCondition;
|
||||
import com.xboe.common.OrderDirection;
|
||||
import com.xboe.common.PageList;
|
||||
import com.xboe.common.utils.IDGenerator;
|
||||
import com.xboe.common.utils.StringUtil;
|
||||
import com.xboe.core.orm.*;
|
||||
import com.xboe.module.boecase.dao.CasesDao;
|
||||
import com.xboe.module.boecase.dao.CasesMajorTypeDao;
|
||||
import com.xboe.module.boecase.dao.CasesMajorTypeRepoDao;
|
||||
import com.xboe.module.boecase.dao.CasesRecordDao;
|
||||
import com.xboe.module.boecase.dao.*;
|
||||
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.entity.CasesRecommend;
|
||||
import com.xboe.module.boecase.entity.CasesRecommendPushRecord;
|
||||
import com.xboe.module.boecase.service.ICasesService;
|
||||
import com.xboe.module.dict.dao.SysDictionaryDao;
|
||||
import com.xboe.module.dict.entity.DictItem;
|
||||
@@ -22,6 +22,7 @@ import com.xboe.orm.CustomFieldInFilter;
|
||||
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;
|
||||
@@ -31,10 +32,8 @@ import javax.persistence.EntityManager;
|
||||
import javax.persistence.PersistenceContext;
|
||||
import javax.transaction.Transactional;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@@ -57,8 +56,11 @@ public class CasesServiceImpl implements ICasesService {
|
||||
@Resource
|
||||
private CasesMajorTypeRepoDao casesMajorTypeRepoDao;
|
||||
|
||||
@PersistenceContext
|
||||
private EntityManager entityManager;
|
||||
@Autowired
|
||||
private CasesRecommendPushRecordDao casesRecommendPushRecordDao;
|
||||
|
||||
@Autowired
|
||||
private CasesRecommendDao casesRecommendDao;
|
||||
|
||||
/**
|
||||
* 案例分页查询,用于门户的查询
|
||||
@@ -178,11 +180,11 @@ public class CasesServiceImpl implements ICasesService {
|
||||
public PageList<Cases> queryPageCasesV2(CasePageVo caseVo) {
|
||||
|
||||
String keyword = caseVo.getKeyWord();
|
||||
QueryBuilder query=QueryBuilder.from(Cases.class);
|
||||
PageList<Cases> page=null;
|
||||
QueryBuilder query = QueryBuilder.from(Cases.class);
|
||||
PageList<Cases> page = null;
|
||||
List<IFieldFilter> filters = new ArrayList<>();
|
||||
filters.add(FieldFilters.eq("deleted",false));
|
||||
List<IFieldFilter> likes=new ArrayList<IFieldFilter>();
|
||||
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()));
|
||||
@@ -195,58 +197,83 @@ public class CasesServiceImpl implements ICasesService {
|
||||
filters.add(FieldFilters.notIn("id", notInIds));
|
||||
}
|
||||
|
||||
if(StringUtil.isNotBlank(caseVo.getKeyWord())) {
|
||||
if (StringUtil.isNotBlank(caseVo.getKeyWord())) {
|
||||
filters.add(FieldFilters.or(likes));
|
||||
}
|
||||
|
||||
//创建时间过滤
|
||||
List<Object> years = caseVo.getYears();
|
||||
if (CollUtil.isNotEmpty(years)) {
|
||||
filters.add(new CustomFieldInFilter("YEAR(sysCreateTime)","sysCreateTime",years));
|
||||
filters.add(new CustomFieldInFilter("YEAR(sysCreateTime)", "sysCreateTime", years));
|
||||
}
|
||||
|
||||
//增加只是查询有附件的
|
||||
filters.add(FieldFilters.isNotNull("filePath"));
|
||||
filters.add(FieldFilters.ne("filePath",""));
|
||||
filters.add(FieldFilters.ne("filePath", ""));
|
||||
|
||||
String majorType = caseVo.getMajorType();
|
||||
if(StringUtil.isNotBlank(majorType)){
|
||||
if (StringUtil.isNotBlank(majorType)) {
|
||||
List<CasesMajorType> casesTypes = casesMajorTypeRepoDao.findCasesBy(StrUtil.split(majorType, ","));
|
||||
if(CollUtil.isNotEmpty(casesTypes)){
|
||||
if (CollUtil.isNotEmpty(casesTypes)) {
|
||||
List<String> caseIds = casesTypes.stream().map(CasesMajorType::getCaseId).collect(Collectors.toList());
|
||||
query.addFilter(FieldFilters.in("id",caseIds));
|
||||
}else {
|
||||
query.addFilter(FieldFilters.in("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("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("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("orgDomainParent3", thirds);
|
||||
itemFilter = FieldFilters.and(itemFilter, orgDomainParent3Filter);
|
||||
}
|
||||
}
|
||||
|
||||
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 (i == 0) {
|
||||
orgDomain = itemFilter;
|
||||
} else {
|
||||
orgDomain = FieldFilters.or(orgDomain, itemFilter);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(caseVo.getIsTop()!=null && caseVo.getIsTop()) {
|
||||
if (Objects.nonNull(orgDomain)) {
|
||||
filters.add(orgDomain);
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(caseVo.getCaseType())) {
|
||||
filters.add(FieldFilters.eq("caseType", caseVo.getCaseType()));
|
||||
}
|
||||
if (caseVo.getIsTop() != null && caseVo.getIsTop()) {
|
||||
query.addOrder(OrderCondition.desc("isTop"));
|
||||
query.addOrder(OrderCondition.desc("topTime"));
|
||||
}
|
||||
//如果选择的是优秀案例,那么这里就按优秀案例的试试排序
|
||||
if(caseVo.getExcellent()!=null){
|
||||
filters.add(FieldFilters.eq("excellent",caseVo.getExcellent()));
|
||||
if (caseVo.getExcellent() != null) {
|
||||
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());
|
||||
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");
|
||||
} else {
|
||||
order = OrderCondition.desc("sysCreateTime");
|
||||
}
|
||||
|
||||
query.addFilters(filters);
|
||||
@@ -255,19 +282,59 @@ public class CasesServiceImpl implements ICasesService {
|
||||
query.setPageIndex(caseVo.getPageIndex());
|
||||
query.setPageSize(caseVo.getPageSize());
|
||||
page = casesDao.findPage(query.builder());
|
||||
List<Cases> list = page.getList();
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
List<String> caseIds = list.stream().map(Cases::getId).collect(Collectors.toList());
|
||||
QueryBuilder recommendCasesQuery = QueryBuilder.from(CasesRecommendPushRecord.class);
|
||||
recommendCasesQuery.addField("new CasesRecommendPushRecord(recommendId,caseId)");
|
||||
List<IFieldFilter> subFilters = new ArrayList<>();
|
||||
subFilters.add(FieldFilters.eq("pushUserId", caseVo.getUserId()));
|
||||
subFilters.add(FieldFilters.in("caseId", caseIds));
|
||||
subFilters.add(FieldFilters.eq("pushStatus", 4));
|
||||
subFilters.add(FieldFilters.eq("deleted", Boolean.FALSE));
|
||||
|
||||
QueryBuilder queryBuilder = recommendCasesQuery.addFilters(subFilters)
|
||||
.addOrder("sysCreateTime", OrderDirection.DESC)
|
||||
.addGroupBy("recommendId");
|
||||
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);
|
||||
builder.addField("new CasesRecommend(id,recommendOrgName)");
|
||||
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, String> collect = recommands.stream().collect(Collectors.toMap(k -> k.getId(), v -> v.getRecommendOrgName()));
|
||||
list.forEach(it -> {
|
||||
CasesRecommendPushRecord one = CollUtil.findOne(pushRecords, (a) -> StrUtil.equals(a.getCaseId(), it.getId()));
|
||||
if (Objects.nonNull(one)) {
|
||||
String recommendOrgName = collect.get(one.getRecommendId());
|
||||
it.setBreCommend(1);
|
||||
it.setRecommendOrgName(recommendOrgName);
|
||||
} else {
|
||||
it.setBreCommend(0);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageList<Cases> queryRecommendPageCasesV2(CasePageVo caseVo) {
|
||||
PageRequest pageRequest = PageRequest.of(caseVo.getPageIndex(), caseVo.getPageSize());
|
||||
Page<Cases> cases = casesRecordDao.queryList(pageRequest, caseVo);
|
||||
PageList<Cases> pageList = new PageList<>();
|
||||
pageList.setCount((int) cases.getTotalElements());
|
||||
pageList.setPageSize(cases.getSize());
|
||||
pageList.setList(cases.getContent());
|
||||
return pageList;
|
||||
PageRequest pageRequest = PageRequest.of(caseVo.getPageIndex(), caseVo.getPageSize());
|
||||
Page<Cases> cases = casesRecordDao.queryList(pageRequest, caseVo);
|
||||
PageList<Cases> pageList = new PageList<>();
|
||||
pageList.setCount((int) cases.getTotalElements());
|
||||
pageList.setPageSize(cases.getSize());
|
||||
pageList.setList(cases.getContent());
|
||||
return pageList;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -25,6 +25,7 @@ class CasesServiceImplTest {
|
||||
// pageVo.setYears(ListUtil.toList(2023));
|
||||
pageVo.setPageIndex(1);
|
||||
pageVo.setPageSize(10);
|
||||
pageVo.setUserId("199");
|
||||
pageVo.setExcellent(Boolean.TRUE);
|
||||
PageList<Cases> casesV2 = casesService.queryPageCasesV2(pageVo);
|
||||
System.out.println(casesV2);
|
||||
|
||||
Reference in New Issue
Block a user