From a275398f86ec664a92e98cd24ed6dac2ae6c7192 Mon Sep 17 00:00:00 2001 From: 86182 Date: Tue, 6 Dec 2022 17:00:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A1=88=E4=BE=8B=E4=B8=89=E6=9C=9F=E8=BF=AD?= =?UTF-8?q?=E4=BB=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xboe/module/boecase/api/CasesApi.java | 69 +++++++++++- .../com/xboe/module/boecase/dto/CaseVo.java | 1 + .../com/xboe/module/boecase/entity/Cases.java | 17 ++- .../module/boecase/service/ICasesService.java | 11 ++ .../service/impl/CasesServiceImpl.java | 104 +++++++++++++++++- .../xboe/module/boecase/vo/CaseExportVo.java | 28 +++++ 6 files changed, 223 insertions(+), 7 deletions(-) create mode 100644 servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CaseExportVo.java 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 b0d0a6a6..235cf9a2 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,18 +1,20 @@ package com.xboe.module.boecase.api; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +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.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -94,6 +96,67 @@ public class CasesApi extends ApiBaseController { PageList pageList = casesService.queryList(pager.getPageIndex(), pager.getPageSize(), caseVo); return success(pageList); } + + /** + * 我的案例 + * */ + @PostMapping("/mylist") + public JsonResponse> mylist(Pagination pager,CaseVo caseVo){ + String aid = this.getCurrent().getAccountId(); + PageList casesPageList = casesService.myList(pager.getPageIndex(), pager.getPageSize(), caseVo, aid); + return success(casesPageList); + } + + /** + * 导出我的案例 + * */ + @PostMapping("/export") + public void export(CaseVo caseVo,HttpServletResponse response){ + String aid = this.getCurrent().getAccountId(); + OutputStream OutputStream=null; + try { + OutputStream = response.getOutputStream(); + LinkedHashMap map = new LinkedHashMap<>(); + map.put("案例名称","title"); + map.put("状态","status"); + map.put("审批完成时间","endTime"); + map.put("公开范围","caseScope"); + map.put("浏览量","views"); + map.put("点赞量","praises"); + map.put("分享量","shares"); + map.put("收藏量","favorites"); + List list = casesService.myList(caseVo, aid); + List exportVos = new ArrayList<>(); + for (Cases c:list){ + CaseExportVo caseExportVo = new CaseExportVo(); + caseExportVo.setTitle(c.getTitle()); + if(c.getStatus()!=null){ + if(c.getStatus()==1){ + caseExportVo.setStatus("待审核"); + } + if(c.getStatus()==2){ + caseExportVo.setStatus("未通过"); + } + if(c.getStatus()==3){ + caseExportVo.setStatus("已通过"); + } + } + caseExportVo.setEndTime(c.getEndTime()); + caseExportVo.setCaseScope(c.getCaseScope()); + caseExportVo.setViews(c.getViews()); + caseExportVo.setPraises(c.getPraises()); + caseExportVo.setShares(c.getShares()); + caseExportVo.setFavorites(c.getFavorites()); + exportVos.add(caseExportVo); + } + + response.setContentType("application/octet-stream"); + response.setHeader("Content-disposition", "attachment;filename=Teachers.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/CaseVo.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/CaseVo.java index 07dad061..e447ee5c 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/CaseVo.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/CaseVo.java @@ -28,4 +28,5 @@ public class CaseVo { + } 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 94d21eef..b603c2b5 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 @@ -79,8 +79,8 @@ public class Cases extends BaseEntity { * 2:已审核未通过 * 3:已审核通过 * */ -// @Column(name = "status",length = 1) -// private Integer status; + @Column(name = "status",length = 1) + private Integer status; @Column(name = "views", nullable = false) private Integer views; @@ -242,6 +242,19 @@ public class Cases extends BaseEntity { public Cases() { } + + public Cases(String id,String title,LocalDateTime endTime,Integer status, String caseScope,Integer views,Integer comments,Integer praises,Integer shares,Integer favorites){ + this.title=title; + super.setId(id); + this.endTime=endTime; + this.status=status; + this.caseScope=caseScope; + this.views=views; + this.comments=comments; + this.praises=praises; + this.shares=shares; + this.favorites=favorites; + } public Cases(String id,String title,String summary,String coverUrl,String authorId,String authorName,LocalDateTime sysCreateTime,Integer breCommend){ this.title=title; diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java index 91bb0e9a..c49e7ea2 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java @@ -24,6 +24,17 @@ public interface ICasesService{ * */ PageList queryList(int pageIndex,int pageSize,CaseVo caseVo); + + /** + * 我的案例 + * */ + PageList myList(int pageIndex,int pageSize,CaseVo caseVo,String aid); + + /** + * 导出的查询 + * */ + List myList(CaseVo caseVo,String aid); + /** * 设置置顶 * */ 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 0f6d1163..c0bcb031 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 @@ -68,19 +68,35 @@ public class CasesServiceImpl implements ICasesService { } if(StringUtils.isNotBlank(caseVo.getOrgDomain())){ - filters.add(FieldFilters.eq("orgDomainParent",caseVo.getOrgDomain())); + if(caseVo.getOrgDomain().contains(",")){ + String[] split = caseVo.getOrgDomain().split(","); + List strings = Arrays.asList(split); + filters.add(FieldFilters.in("orgDomainParent",strings)); + }else{ + filters.add(FieldFilters.eq("orgDomainParent",caseVo.getOrgDomain())); + } + } if(caseVo.getExcellent()!=null){ filters.add(FieldFilters.eq("excellent",caseVo.getExcellent())); } + // if(StringUtil.isNotBlank(caseVo.getMajorType())){ // filters.add(FieldFilters.eq("majorType",caseVo.getMajorType())); // } if(StringUtil.isNotBlank(caseVo.getMajorType())){ + QueryBuilder from = QueryBuilder.from(CasesMajorType.class); - from.addFilter(FieldFilters.eq("majorId",caseVo.getMajorType())); + //前端直接字符串拼接传,后端转化数组 + 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()); @@ -158,6 +174,7 @@ public class CasesServiceImpl implements ICasesService { if(caseVo.getIsTop()!=null) { query.addFilter(FieldFilters.eq("isTop",caseVo.getIsTop())); } + OrderCondition order=null; if(StringUtils.isNotBlank(caseVo.getOrderField())) { if(caseVo.getOrderAsc()==null || caseVo.getOrderAsc()) { @@ -222,6 +239,89 @@ public class CasesServiceImpl implements ICasesService { } + @Override + public PageList myList(int pageIndex, int pageSize, CaseVo caseVo, String aid) { + QueryBuilder query=QueryBuilder.from(Cases.class); + query.addFilter(FieldFilters.eq("deleted",false)); + if(StringUtils.isNotBlank(caseVo.getKeyWord())){ + query.addFilter(FieldFilters.like("title", LikeMatchMode.ANYWHERE, caseVo.getKeyWord())); + } + if(StringUtils.isNotBlank(caseVo.getOrgDomain())){ + query.addFilter(FieldFilters.eq("orgDomainParent",caseVo.getOrgDomain())); + } + 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())); + } + + if(StringUtils.isNotBlank(aid)){ + query.addFilter(FieldFilters.eq("authorId",aid)); + } + + 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.addOrder(order); + query.setPageIndex(pageIndex); + query.setPageSize(pageSize); + query.addFields("new Cases(id,title,endTime,status,caseScope,views,comments,praises,shares,favorites)"); + PageList page = casesDao.findPage(query.builder()); + return page; + } + + @Override + public List myList(CaseVo caseVo, String aid) { + QueryBuilder query=QueryBuilder.from(Cases.class); + query.addFilter(FieldFilters.eq("deleted",false)); + if(StringUtils.isNotBlank(caseVo.getKeyWord())){ + query.addFilter(FieldFilters.like("title", LikeMatchMode.ANYWHERE, caseVo.getKeyWord())); + } + if(StringUtils.isNotBlank(caseVo.getOrgDomain())){ + query.addFilter(FieldFilters.eq("orgDomainParent",caseVo.getOrgDomain())); + } + 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())); + } + + if(StringUtils.isNotBlank(aid)){ + query.addFilter(FieldFilters.eq("authorId",aid)); + } + + 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.addOrder(order); + + query.addFields("new Cases(id,title,endTime,status,caseScope,views,comments,praises,shares,favorites)"); + List list = casesDao.findList(query.builder()); + return list; + } + /** * 设置置顶 * */ 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 new file mode 100644 index 00000000..7c04eb2d --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CaseExportVo.java @@ -0,0 +1,28 @@ +package com.xboe.module.boecase.vo; + +import lombok.Data; +import org.apache.tomcat.jni.Local; + +import java.time.LocalDateTime; + +@Data +public class CaseExportVo { + + + + private String title; + + private String status; + + private LocalDateTime endTime; + + private String caseScope; + + private Integer views; + + private Integer praises; + + private Integer shares; + + private Integer favorites; +}