From c32ea1352c5844153467220f46525deb38bf597d Mon Sep 17 00:00:00 2001 From: wangwenchao Date: Sat, 17 Jun 2023 22:30:50 +0800 Subject: [PATCH 1/2] =?UTF-8?q?1.=E5=88=86=E6=9E=90=E6=A1=88=E4=BE=8B?= =?UTF-8?q?=E6=8E=A8=E8=8D=90=E9=A1=B5=E9=9D=A2=E5=85=B6=E4=BB=96=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E9=9C=80=E6=B1=82=EF=BC=9B2.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=9B3.=E5=A2=9E=E5=8A=A0=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E6=A1=88=E4=BE=8B=E6=8E=A8=E8=8D=90ID=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=A1=88=E4=BE=8B=E6=8E=A8=E9=80=81=E8=AE=B0=E5=BD=95=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=8E=A5=E5=8F=A3=EF=BC=9B4.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E4=BF=AE=E6=94=B9=E6=A1=88=E4=BE=8B=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E8=AE=B0=E5=BD=95=E4=B8=AD=E6=8E=A8=E9=80=81=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=8E=A5=E5=8F=A3=EF=BC=9B5.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=92=A4=E5=9B=9E=E5=92=8C=E9=87=8D=E6=96=B0=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/boecase/api/CasesRecommendApi.java | 86 +++++++++++++++++++ .../ICasesRecommendPushRecordService.java | 16 ++++ .../service/ICasesRecommendService.java | 7 ++ .../CasesRecommendPushRecordServiceImpl.java | 29 +++++++ .../impl/CasesRecommendServiceImpl.java | 5 ++ .../boecase/vo/CasesRecommendPushVo.java | 10 +++ 6 files changed, 153 insertions(+) create mode 100644 servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CasesRecommendPushVo.java diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java index b9083604..2c120fc9 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java @@ -11,13 +11,16 @@ import com.xboe.common.PageList; import com.xboe.common.Pagination; import com.xboe.core.JsonResponse; import com.xboe.core.api.ApiBaseController; +import com.xboe.enums.CasesPushStatusEnum; import com.xboe.enums.CasesRecommendLaunchTypeEnum; import com.xboe.module.boecase.entity.CasesRecommend; import com.xboe.module.boecase.entity.CasesRecommendLaunchImport; +import com.xboe.module.boecase.entity.CasesRecommendPushRecord; import com.xboe.module.boecase.service.ICasesRecommendLaunchImportService; import com.xboe.module.boecase.service.ICasesRecommendPushRecordService; import com.xboe.module.boecase.service.ICasesRecommendService; import com.xboe.module.boecase.vo.CasesRecommendLaunchVo; +import com.xboe.module.boecase.vo.CasesRecommendPushVo; import com.xboe.module.boecase.vo.CasesRecommendVo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -27,7 +30,11 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 案例推荐表 @@ -153,5 +160,84 @@ public class CasesRecommendApi extends ApiBaseController { return success(iCasesRecommendPushRecordService.launchPush(casesRecommendLaunch)); } + /** + * 信息下载 + * + * @return + * @throws Exception + */ + @GetMapping("/info_download") + public void infoDownload(String casesRecommendId, HttpServletResponse response) { + if (StringUtils.isEmpty(casesRecommendId)) { + throw new RuntimeException("缺少必要参数"); + } + // 拿取表格里需要的数据 + List recordList = iCasesRecommendPushRecordService.findAllByRecommendId(casesRecommendId); + // 用个List装表格的所有内容 + // 拼接上列明。我这里用的最土的方法,很不优雅别学我 + List> rows = recordList.stream().map(it -> { + Map row = new LinkedHashMap<>(); + row.put("案例名称", it.getCaseTitle()); + row.put("推送用户", it.getPushUserName()); + row.put("所属组织", "it.get"); + row.put("推送时间", it.getPushTime()); + row.put("是否查看", it.getReadFlag()); + row.put("首次查看时间", it.getReadStartTime()); + row.put("总查看时间", it.getReadEndTime()); + return row; + }).collect(Collectors.toList()); + // 通过工具类创建writer + try (ExcelWriter writer = ExcelUtil.getWriter(true); + // 输出流 + ServletOutputStream servletOutputStream = response.getOutputStream(); + ){ + // 一次性写出内容 + writer.write(rows, true); + // 微调一下每个列的宽度 + writer.setColumnWidth(0,50); + writer.setColumnWidth(1,16); + writer.setColumnWidth(2,24); + writer.setColumnWidth(3,34); + writer.setColumnWidth(4,10); + writer.setColumnWidth(5,20); + writer.setColumnWidth(6,20); + // 此处的response.setContentType 和教程里的不同 + response.setContentType("application/octet-stream"); + // filename就是表格的名字,这个无所谓,反正前端还会重命名 + response.setHeader("Content-Disposition","attachment;filename=test.xlsx"); + + writer.flush(servletOutputStream,true); + }catch (Exception e){ + throw new RuntimeException(e.getMessage()); + } + + } + + + /** + * 重新推送或撤回 + * + * @param casesRecommendPushVo + * @return + */ + @PostMapping("/rePushOrWithdraw") + public JsonResponse rePushOrWithdraw(@RequestBody CasesRecommendPushVo casesRecommendPushVo) { + if (StringUtils.isEmpty(casesRecommendPushVo.getCasesRecommendId())) { + throw new RuntimeException("缺少必要参数"); + } + // 查询 + CasesRecommend db = iCasesRecommendService.findById(casesRecommendPushVo.getCasesRecommendId()); + if (CasesPushStatusEnum.PUSH_SUCCESS.name().equalsIgnoreCase(db.getPushProgress())){ + // 当为推送成功时为 + iCasesRecommendPushRecordService.rePushOrWithdraw(true, casesRecommendPushVo.getCasesRecommendId()); + }else if (CasesPushStatusEnum.PUSH_FAIL.name().equalsIgnoreCase(db.getPushProgress()) + || CasesPushStatusEnum.PUSH_REVOKE.name().equalsIgnoreCase(db.getPushProgress())){ + // 推送失败或者已撤回时 + iCasesRecommendPushRecordService.rePushOrWithdraw(false, casesRecommendPushVo.getCasesRecommendId()); + } + + return success(true); + } + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java index 86bb4715..ca60c161 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java @@ -1,7 +1,10 @@ package com.xboe.module.boecase.service; +import com.xboe.module.boecase.entity.CasesRecommendPushRecord; import com.xboe.module.boecase.vo.CasesRecommendLaunchVo; +import java.util.List; + public interface ICasesRecommendPushRecordService { @@ -13,4 +16,17 @@ public interface ICasesRecommendPushRecordService { */ boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch); + /** + * 根据案例推荐ID查询案例推送列表信息 + * @param recommendId + * @return + */ + List findAllByRecommendId(String recommendId); + + /** + * 重新推送或撤回 + * @param isWithdraw 是否撤回 + * @param casesRecommendId 案例推荐ID + */ + void rePushOrWithdraw(boolean isWithdraw, String casesRecommendId); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendService.java index fbfc2b3e..4ce96881 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendService.java @@ -19,4 +19,11 @@ public interface ICasesRecommendService { * @param id */ void delete(String id); + + /** + * 根据ID查询 + * @param id + * @return + */ + CasesRecommend findById(String id); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java index 24379ec2..a02a3fe6 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java @@ -16,6 +16,7 @@ import com.xboe.module.boecase.entity.CasesRecommendPushRecord; import com.xboe.module.boecase.service.ICasesRecommendPushRecordService; import com.xboe.module.boecase.vo.CasesRecommendLaunchVo; import com.xboe.system.user.dao.UserDao; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -61,6 +62,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR casesRecommend.setCaseCount(casesRecommendLaunch.getCasesIdList().size()); casesRecommend.setUserCount(casesRecommendLaunch.getPushUserIdList().size()); casesRecommend.setRecommendOrgName(casesRecommendLaunch.getRecommendOrgName()); + casesRecommend.setPushProgress(CasesPushStatusEnum.PUSH_SUCCESS.name()); casesRecommendDao.save(casesRecommend); List caseIds = new ArrayList<>(); @@ -93,4 +95,31 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR return true; } + + @Override + public List findAllByRecommendId(String recommendId) { + CasesRecommendPushRecord ex = new CasesRecommendPushRecord(); + ex.setRecommendId(recommendId); + return casesRecommendPushRecordDao.findListByExample(ex); + } + + @Override + public void rePushOrWithdraw(boolean isWithdraw, String casesRecommendId) { + if (StringUtils.isEmpty(casesRecommendId)){ + throw new RuntimeException("缺少必要参数"); + } + List recordList = findAllByRecommendId(casesRecommendId); + if (isWithdraw){ + recordList.stream().forEach(record -> + record.setPushStatus(CasesPushStatusEnum.PUSH_REVOKE.getStatus()) + ); + }else { + recordList.stream().forEach(record -> + record.setPushStatus(CasesPushStatusEnum.PUSH_ING.getStatus()) + ); + } + if (CollectionUtil.isNotEmpty(recordList)) { + casesRecommendPushRecordDao.saveList(recordList); + } + } } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendServiceImpl.java index 530c385a..f07f31bf 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendServiceImpl.java @@ -46,4 +46,9 @@ public class CasesRecommendServiceImpl implements ICasesRecommendService { public void delete(String id) { casesRecommendDao.setDeleted(id); } + + @Override + public CasesRecommend findById(String id) { + return casesRecommendDao.get(id); + } } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CasesRecommendPushVo.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CasesRecommendPushVo.java new file mode 100644 index 00000000..6fae162a --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CasesRecommendPushVo.java @@ -0,0 +1,10 @@ +package com.xboe.module.boecase.vo; + +import lombok.Data; + +@Data +public class CasesRecommendPushVo { + + /** 案例推荐id */ + private String casesRecommendId; +} From 649a412a4afa5a7236337c1202f5fee7d51f4c2c Mon Sep 17 00:00:00 2001 From: Guava Date: Sun, 18 Jun 2023 11:24:36 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/CasesRecommendPushRecordServiceImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java index a02a3fe6..30d6ec82 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java @@ -62,7 +62,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR casesRecommend.setCaseCount(casesRecommendLaunch.getCasesIdList().size()); casesRecommend.setUserCount(casesRecommendLaunch.getPushUserIdList().size()); casesRecommend.setRecommendOrgName(casesRecommendLaunch.getRecommendOrgName()); - casesRecommend.setPushProgress(CasesPushStatusEnum.PUSH_SUCCESS.name()); + casesRecommend.setPushProgress(CasesPushStatusEnum.WAIT_PUSH.name()); casesRecommendDao.save(casesRecommend); List caseIds = new ArrayList<>(); @@ -105,15 +105,15 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR @Override public void rePushOrWithdraw(boolean isWithdraw, String casesRecommendId) { - if (StringUtils.isEmpty(casesRecommendId)){ + if (StringUtils.isEmpty(casesRecommendId)) { throw new RuntimeException("缺少必要参数"); } List recordList = findAllByRecommendId(casesRecommendId); - if (isWithdraw){ + if (isWithdraw) { recordList.stream().forEach(record -> - record.setPushStatus(CasesPushStatusEnum.PUSH_REVOKE.getStatus()) + record.setPushStatus(CasesPushStatusEnum.PUSH_REVOKE.getStatus()) ); - }else { + } else { recordList.stream().forEach(record -> record.setPushStatus(CasesPushStatusEnum.PUSH_ING.getStatus()) );