Merge remote-tracking branch 'origin/master'

This commit is contained in:
Boolean
2023-06-18 16:00:07 +08:00
6 changed files with 153 additions and 0 deletions

View File

@@ -11,13 +11,16 @@ import com.xboe.common.PageList;
import com.xboe.common.Pagination; import com.xboe.common.Pagination;
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.enums.CasesPushStatusEnum;
import com.xboe.enums.CasesRecommendLaunchTypeEnum; import com.xboe.enums.CasesRecommendLaunchTypeEnum;
import com.xboe.module.boecase.entity.CasesRecommend; import com.xboe.module.boecase.entity.CasesRecommend;
import com.xboe.module.boecase.entity.CasesRecommendLaunchImport; 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.ICasesRecommendLaunchImportService;
import com.xboe.module.boecase.service.ICasesRecommendPushRecordService; import com.xboe.module.boecase.service.ICasesRecommendPushRecordService;
import com.xboe.module.boecase.service.ICasesRecommendService; import com.xboe.module.boecase.service.ICasesRecommendService;
import com.xboe.module.boecase.vo.CasesRecommendLaunchVo; import com.xboe.module.boecase.vo.CasesRecommendLaunchVo;
import com.xboe.module.boecase.vo.CasesRecommendPushVo;
import com.xboe.module.boecase.vo.CasesRecommendVo; import com.xboe.module.boecase.vo.CasesRecommendVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -27,7 +30,11 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List; 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 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<CasesRecommendPushRecord> recordList = iCasesRecommendPushRecordService.findAllByRecommendId(casesRecommendId);
// 用个List<Map>装表格的所有内容
// 拼接上列明。我这里用的最土的方法,很不优雅别学我
List<Map<String, Object>> rows = recordList.stream().map(it -> {
Map<String, Object> 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<Boolean> 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);
}
} }

View File

@@ -1,7 +1,10 @@
package com.xboe.module.boecase.service; package com.xboe.module.boecase.service;
import com.xboe.module.boecase.entity.CasesRecommendPushRecord;
import com.xboe.module.boecase.vo.CasesRecommendLaunchVo; import com.xboe.module.boecase.vo.CasesRecommendLaunchVo;
import java.util.List;
public interface ICasesRecommendPushRecordService { public interface ICasesRecommendPushRecordService {
@@ -13,4 +16,17 @@ public interface ICasesRecommendPushRecordService {
*/ */
boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch); boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch);
/**
* 根据案例推荐ID查询案例推送列表信息
* @param recommendId
* @return
*/
List<CasesRecommendPushRecord> findAllByRecommendId(String recommendId);
/**
* 重新推送或撤回
* @param isWithdraw 是否撤回
* @param casesRecommendId 案例推荐ID
*/
void rePushOrWithdraw(boolean isWithdraw, String casesRecommendId);
} }

View File

@@ -19,4 +19,11 @@ public interface ICasesRecommendService {
* @param id * @param id
*/ */
void delete(String id); void delete(String id);
/**
* 根据ID查询
* @param id
* @return
*/
CasesRecommend findById(String id);
} }

View File

@@ -16,6 +16,7 @@ import com.xboe.module.boecase.entity.CasesRecommendPushRecord;
import com.xboe.module.boecase.service.ICasesRecommendPushRecordService; import com.xboe.module.boecase.service.ICasesRecommendPushRecordService;
import com.xboe.module.boecase.vo.CasesRecommendLaunchVo; import com.xboe.module.boecase.vo.CasesRecommendLaunchVo;
import com.xboe.system.user.dao.UserDao; import com.xboe.system.user.dao.UserDao;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -61,6 +62,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR
casesRecommend.setCaseCount(casesRecommendLaunch.getCasesIdList().size()); casesRecommend.setCaseCount(casesRecommendLaunch.getCasesIdList().size());
casesRecommend.setUserCount(casesRecommendLaunch.getPushUserIdList().size()); casesRecommend.setUserCount(casesRecommendLaunch.getPushUserIdList().size());
casesRecommend.setRecommendOrgName(casesRecommendLaunch.getRecommendOrgName()); casesRecommend.setRecommendOrgName(casesRecommendLaunch.getRecommendOrgName());
casesRecommend.setPushProgress(CasesPushStatusEnum.WAIT_PUSH.name());
casesRecommendDao.save(casesRecommend); casesRecommendDao.save(casesRecommend);
List<String> caseIds = new ArrayList<>(); List<String> caseIds = new ArrayList<>();
@@ -93,4 +95,31 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR
return true; return true;
} }
@Override
public List<CasesRecommendPushRecord> 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<CasesRecommendPushRecord> 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);
}
}
} }

View File

@@ -46,4 +46,9 @@ public class CasesRecommendServiceImpl implements ICasesRecommendService {
public void delete(String id) { public void delete(String id) {
casesRecommendDao.setDeleted(id); casesRecommendDao.setDeleted(id);
} }
@Override
public CasesRecommend findById(String id) {
return casesRecommendDao.get(id);
}
} }

View File

@@ -0,0 +1,10 @@
package com.xboe.module.boecase.vo;
import lombok.Data;
@Data
public class CasesRecommendPushVo {
/** 案例推荐id */
private String casesRecommendId;
}