mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-12 20:36:50 +08:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -17,6 +17,11 @@
|
|||||||
<java.version>1.8</java.version>
|
<java.version>1.8</java.version>
|
||||||
</properties>
|
</properties>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
<artifactId>poi-ooxml</artifactId>
|
||||||
|
<version>5.2.2</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.hutool</groupId>
|
<groupId>cn.hutool</groupId>
|
||||||
<artifactId>hutool-all</artifactId>
|
<artifactId>hutool-all</artifactId>
|
||||||
@@ -128,13 +133,6 @@
|
|||||||
<artifactId>easy-captcha</artifactId>
|
<artifactId>easy-captcha</artifactId>
|
||||||
<version>1.6.2</version>
|
<version>1.6.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!--poi-->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.poi</groupId>
|
|
||||||
<artifactId>poi</artifactId>
|
|
||||||
<version>4.0.1</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package com.xboe.data.dto;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author : civism
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2023/6/23 17:32
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ImportData {
|
||||||
|
|
||||||
|
private String importId;
|
||||||
|
|
||||||
|
|
||||||
|
private List<String> caseIdList;
|
||||||
|
|
||||||
|
|
||||||
|
private List<CasesTitle> caseTitleList;
|
||||||
|
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public static class CasesTitle {
|
||||||
|
|
||||||
|
private String caseId;
|
||||||
|
|
||||||
|
private String caseTitle;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.xboe.module.boecase.api;
|
package com.xboe.module.boecase.api;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import com.xboe.common.PageList;
|
import com.xboe.common.PageList;
|
||||||
import com.xboe.common.Pagination;
|
import com.xboe.common.Pagination;
|
||||||
import com.xboe.common.utils.StringUtil;
|
import com.xboe.common.utils.StringUtil;
|
||||||
@@ -17,6 +18,7 @@ import com.xboe.module.dict.entity.DictItem;
|
|||||||
import com.xboe.module.excel.ExportsExcelSenderUtil;
|
import com.xboe.module.excel.ExportsExcelSenderUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@@ -104,9 +106,10 @@ public class CasesApi extends ApiBaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/queryListV2")
|
@PostMapping("/queryListV2")
|
||||||
public JsonResponse<PageList<Cases>> queryCaseBreV2(@RequestBody CasePageVo req){
|
public JsonResponse<PageList<Cases>> queryCaseBreV2(@Validated @RequestBody CasePageVo req){
|
||||||
String type = req.getType();
|
String type = req.getType();
|
||||||
PageList<Cases> views = null;
|
PageList<Cases> views;
|
||||||
|
req.setUserId(getCurrent().getAccountId());
|
||||||
if (type.equals("recommend")) {
|
if (type.equals("recommend")) {
|
||||||
views = casesService.queryRecommendPageCasesV2(req);
|
views = casesService.queryRecommendPageCasesV2(req);
|
||||||
} else {
|
} else {
|
||||||
@@ -114,8 +117,9 @@ public class CasesApi extends ApiBaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(views!=null){
|
if(views!=null){
|
||||||
if(views.getList()!=null && !views.getList().isEmpty()){
|
List<Cases> cases = views.getList();
|
||||||
for (Cases c:views.getList()) {
|
if(CollUtil.isNotEmpty(cases)){
|
||||||
|
for (Cases c: cases) {
|
||||||
StringBuffer stringBuffer = new StringBuffer();
|
StringBuffer stringBuffer = new StringBuffer();
|
||||||
List<CasesMajorType> caseId = casesMajorTypeDao.findList(FieldFilters.eq("caseId", c.getId()));
|
List<CasesMajorType> caseId = casesMajorTypeDao.findList(FieldFilters.eq("caseId", c.getId()));
|
||||||
if(caseId!=null && !caseId.isEmpty()){
|
if(caseId!=null && !caseId.isEmpty()){
|
||||||
|
|||||||
@@ -8,10 +8,9 @@ import cn.hutool.poi.excel.ExcelReader;
|
|||||||
import cn.hutool.poi.excel.ExcelUtil;
|
import cn.hutool.poi.excel.ExcelUtil;
|
||||||
import cn.hutool.poi.excel.ExcelWriter;
|
import cn.hutool.poi.excel.ExcelWriter;
|
||||||
import com.xboe.common.PageList;
|
import com.xboe.common.PageList;
|
||||||
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.data.dto.ImportData;
|
||||||
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;
|
||||||
@@ -30,7 +29,6 @@ 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.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -56,17 +54,26 @@ public class CasesRecommendApi extends ApiBaseController {
|
|||||||
/**
|
/**
|
||||||
* 用于后台管理分页
|
* 用于后台管理分页
|
||||||
*
|
*
|
||||||
* @param pager
|
|
||||||
* @param casesRecommendVo
|
* @param casesRecommendVo
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PostMapping("/page")
|
@PostMapping("/page")
|
||||||
public JsonResponse<PageList<CasesRecommend>> page(Pagination pager, CasesRecommendVo casesRecommendVo) {
|
public JsonResponse<PageList<CasesRecommend>> page(@RequestBody CasesRecommendVo casesRecommendVo) {
|
||||||
PageList<CasesRecommend> page = iCasesRecommendService.page(pager.getPageIndex(), pager.getPageSize(), casesRecommendVo);
|
PageList<CasesRecommend> page = iCasesRecommendService.page(casesRecommendVo.getPageIndex(), casesRecommendVo.getPageSize(), casesRecommendVo);
|
||||||
|
// 组装查看率
|
||||||
|
page.getList().forEach(it -> {
|
||||||
|
List<CasesRecommendPushRecord> recordList = iCasesRecommendPushRecordService.findAllByRecommendId(it.getId());
|
||||||
|
if (CollectionUtil.isNotEmpty(recordList)) {
|
||||||
|
// 查看率:查看率=案例查看人数(各案例查看人数之合)/(当条推荐记录包含的案例 × 用户数)
|
||||||
|
long viewCount = recordList.stream().filter(record -> record.getReadFlag().equals(1)).count();
|
||||||
|
it.setViewRate(String.valueOf(viewCount * 100 / recordList.size()).concat("%"));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return success(page);
|
return success(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/delete")
|
@GetMapping("/delete")
|
||||||
public JsonResponse<Boolean> delete(String id) {
|
public JsonResponse<Boolean> delete(String id) {
|
||||||
if (StringUtils.isBlank(id)) {
|
if (StringUtils.isBlank(id)) {
|
||||||
return badRequest("缺少必要参数");
|
return badRequest("缺少必要参数");
|
||||||
@@ -89,7 +96,7 @@ public class CasesRecommendApi extends ApiBaseController {
|
|||||||
*/
|
*/
|
||||||
@GetMapping("/import-info")
|
@GetMapping("/import-info")
|
||||||
public JsonResponse<CasesRecommendLaunchImport> excelImport(String importId) {
|
public JsonResponse<CasesRecommendLaunchImport> excelImport(String importId) {
|
||||||
CasesRecommendLaunchImport byId = iCasesRecommendLaunchImportService.getById(importId);
|
CasesRecommendLaunchImport byId = iCasesRecommendLaunchImportService.getByImportId(importId);
|
||||||
return success(byId);
|
return success(byId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,11 +109,11 @@ public class CasesRecommendApi extends ApiBaseController {
|
|||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@PostMapping("/import")
|
@PostMapping("/import")
|
||||||
public JsonResponse<String> excelImport(@RequestParam("file") MultipartFile file) throws Exception {
|
public JsonResponse<ImportData> excelImport(@RequestParam("file") MultipartFile file) throws Exception {
|
||||||
ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
|
ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
|
||||||
List<List<Object>> read = reader.read();
|
List<List<Object>> read = reader.read();
|
||||||
String s = iCasesRecommendLaunchImportService.importData(read);
|
ImportData importData = iCasesRecommendLaunchImportService.importData(read);
|
||||||
return success(s);
|
return success(importData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -125,7 +132,9 @@ public class CasesRecommendApi extends ApiBaseController {
|
|||||||
ExcelWriter writer = ExcelUtil.getWriter();
|
ExcelWriter writer = ExcelUtil.getWriter();
|
||||||
|
|
||||||
writer.writeHeadRow(ListUtil.toList("标题"));
|
writer.writeHeadRow(ListUtil.toList("标题"));
|
||||||
|
if (CollectionUtil.isNotEmpty(dataList)) {
|
||||||
writer.write(dataList);
|
writer.write(dataList);
|
||||||
|
}
|
||||||
response.setContentType("application/vnd.ms-excel;charset=utf-8");
|
response.setContentType("application/vnd.ms-excel;charset=utf-8");
|
||||||
response.setHeader("Content-Disposition", "attachment;filename=failData.xls");
|
response.setHeader("Content-Disposition", "attachment;filename=failData.xls");
|
||||||
ServletOutputStream out = response.getOutputStream();
|
ServletOutputStream out = response.getOutputStream();
|
||||||
@@ -171,6 +180,7 @@ public class CasesRecommendApi extends ApiBaseController {
|
|||||||
if (StringUtils.isEmpty(casesRecommendId)) {
|
if (StringUtils.isEmpty(casesRecommendId)) {
|
||||||
throw new RuntimeException("缺少必要参数");
|
throw new RuntimeException("缺少必要参数");
|
||||||
}
|
}
|
||||||
|
CasesRecommend casesRecommend = iCasesRecommendService.findById(casesRecommendId);
|
||||||
// 拿取表格里需要的数据
|
// 拿取表格里需要的数据
|
||||||
List<CasesRecommendPushRecord> recordList = iCasesRecommendPushRecordService.findAllByRecommendId(casesRecommendId);
|
List<CasesRecommendPushRecord> recordList = iCasesRecommendPushRecordService.findAllByRecommendId(casesRecommendId);
|
||||||
// 用个List<Map>装表格的所有内容
|
// 用个List<Map>装表格的所有内容
|
||||||
@@ -179,36 +189,36 @@ public class CasesRecommendApi extends ApiBaseController {
|
|||||||
Map<String, Object> row = new LinkedHashMap<>();
|
Map<String, Object> row = new LinkedHashMap<>();
|
||||||
row.put("案例名称", it.getCaseTitle());
|
row.put("案例名称", it.getCaseTitle());
|
||||||
row.put("推送用户", it.getPushUserName());
|
row.put("推送用户", it.getPushUserName());
|
||||||
row.put("所属组织", "it.get");
|
row.put("所属组织", casesRecommend.getRecommendOrgName());
|
||||||
row.put("推送时间", it.getPushTime());
|
row.put("推送时间", it.getPushTime());
|
||||||
row.put("是否查看", it.getReadFlag());
|
row.put("是否查看", it.getReadFlag());
|
||||||
row.put("首次查看时间", it.getReadStartTime());
|
row.put("首次查看时间", it.getReadStartTime());
|
||||||
row.put("总查看时间", it.getReadEndTime());
|
row.put("总查看时间", it.getReadEndTime());
|
||||||
return row;
|
return row;
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
if (CollectionUtil.isNotEmpty(rows)){
|
if (CollectionUtil.isNotEmpty(rows)) {
|
||||||
// 通过工具类创建writer
|
// 通过工具类创建writer
|
||||||
try (ExcelWriter writer = ExcelUtil.getWriter(true);
|
try (ExcelWriter writer = ExcelUtil.getWriter();
|
||||||
// 输出流
|
// 输出流
|
||||||
ServletOutputStream servletOutputStream = response.getOutputStream()
|
ServletOutputStream servletOutputStream = response.getOutputStream()
|
||||||
){
|
) {
|
||||||
// 一次性写出内容
|
// 一次性写出内容
|
||||||
writer.write(rows, true);
|
writer.write(rows, true);
|
||||||
// 微调一下每个列的宽度
|
// 微调一下每个列的宽度
|
||||||
writer.setColumnWidth(0,50);
|
writer.setColumnWidth(0, 50);
|
||||||
writer.setColumnWidth(1,16);
|
writer.setColumnWidth(1, 16);
|
||||||
writer.setColumnWidth(2,24);
|
writer.setColumnWidth(2, 24);
|
||||||
writer.setColumnWidth(3,34);
|
writer.setColumnWidth(3, 34);
|
||||||
writer.setColumnWidth(4,10);
|
writer.setColumnWidth(4, 10);
|
||||||
writer.setColumnWidth(5,20);
|
writer.setColumnWidth(5, 20);
|
||||||
writer.setColumnWidth(6,20);
|
writer.setColumnWidth(6, 20);
|
||||||
// 此处的response.setContentType 和教程里的不同
|
// 此处的response.setContentType 和教程里的不同
|
||||||
response.setContentType("application/octet-stream");
|
response.setContentType("application/vnd.ms-excel;charset=utf-8");
|
||||||
// filename就是表格的名字,这个无所谓,反正前端还会重命名
|
// filename就是表格的名字,这个无所谓,反正前端还会重命名
|
||||||
response.setHeader("Content-Disposition","attachment;filename=推荐信息.xlsx");
|
response.setHeader("Content-Disposition", "attachment;filename=推荐信息.xls");
|
||||||
|
|
||||||
writer.flush(servletOutputStream,true);
|
writer.flush(servletOutputStream, true);
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
throw new RuntimeException(e.getMessage());
|
throw new RuntimeException(e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -227,17 +237,7 @@ public class CasesRecommendApi extends ApiBaseController {
|
|||||||
if (StringUtils.isEmpty(casesRecommendPushVo.getCasesRecommendId())) {
|
if (StringUtils.isEmpty(casesRecommendPushVo.getCasesRecommendId())) {
|
||||||
throw new RuntimeException("缺少必要参数");
|
throw new RuntimeException("缺少必要参数");
|
||||||
}
|
}
|
||||||
// 查询
|
iCasesRecommendService.rePushOrWithdraw(casesRecommendPushVo);
|
||||||
CasesRecommend db = iCasesRecommendService.findById(casesRecommendPushVo.getCasesRecommendId());
|
|
||||||
if (CasesPushStatusEnum.PUSH_SUCCESS.getStatus().equals(db.getPushProgress())){
|
|
||||||
// 当为推送成功时为
|
|
||||||
iCasesRecommendPushRecordService.rePushOrWithdraw(true, casesRecommendPushVo.getCasesRecommendId());
|
|
||||||
}else if (CasesPushStatusEnum.PUSH_FAIL.getStatus().equals(db.getPushProgress())
|
|
||||||
|| CasesPushStatusEnum.PUSH_REVOKE.getStatus().equals(db.getPushProgress())){
|
|
||||||
// 推送失败或者已撤回时
|
|
||||||
iCasesRecommendPushRecordService.rePushOrWithdraw(false, casesRecommendPushVo.getCasesRecommendId());
|
|
||||||
}
|
|
||||||
|
|
||||||
return success(true);
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package com.xboe.module.boecase.dao;
|
||||||
|
|
||||||
|
import com.xboe.module.boecase.entity.CasesMajorType;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface CasesMajorTypeRepoDao extends JpaRepository<CasesMajorType, String>, JpaSpecificationExecutor<CasesMajorType> {
|
||||||
|
|
||||||
|
@Query(nativeQuery = true, value = "select * from boe_cases_major_type as c where major_id in (:marjorIds) group by c.case_id")
|
||||||
|
List<CasesMajorType> findCasesBy(List<String> marjorIds);
|
||||||
|
}
|
||||||
@@ -18,8 +18,15 @@ import org.springframework.stereotype.Repository;
|
|||||||
@Repository
|
@Repository
|
||||||
public interface CasesRecordDao extends JpaRepository<Cases, String>, JpaSpecificationExecutor<Cases> {
|
public interface CasesRecordDao extends JpaRepository<Cases, String>, JpaSpecificationExecutor<Cases> {
|
||||||
|
|
||||||
@Query(nativeQuery = true, value = "select b.* from boe_cases_recommend_push_record a LEFT JOIN boe_cases b on. a.case_id = b.id and b.deleted=false " +
|
@Query(nativeQuery = true, value = "select b.id,b.sys_create_aid,b.sys_create_by,b.sys_create_time,b.deleted,b.sys_update_by,b.sys_update_time,b.sys_version," +
|
||||||
" where a.deleted=false and a.push_user_id= :#{#condition.userId}" +
|
"b.excellent_time,b.excellent,b.case_value,b.readers,b.keyword5,b.keyword4,b.keyword3,b.keyword2,b.keyword1,b.case_theme_description,b.case_theme" +
|
||||||
|
",b.case_type2,b.case_type1,b.case_type,b.case_owner_org,b.case_specialty_sequence,b.case_other_contributor,b.case_owner_phone,b.case_owner_department" +
|
||||||
|
",b.case_owner,b.case_flow,b.case_scope,b.is_leadership_plan,b.case_channel,b.email,b.contact_number,b.department,b.drafter,b.end_time,b.drafting_time," +
|
||||||
|
"b.confidentiality_level,b.approval_number,b.major_type,b.org_domain_parent3,b.org_domain_parent2,b.org_domain_parent,b.org_domain,b.summary,b.cites,b.recommends," +
|
||||||
|
"b.favorites,b.shares,b.praises,b.comments,b.views,b.status,b.top_time,b.is_top,b.recommend_time,b.bre_commend,b.cover_url,b.author_name,b.author_id,b.file_name" +
|
||||||
|
",b.file_path,b.content,b.company_id,b.title" +
|
||||||
|
" from boe_cases_recommend_push_record a LEFT JOIN boe_cases b on a.case_id = b.id and b.deleted=0 " +
|
||||||
|
" where a.deleted=0 and a.push_user_id= :#{#condition.userId}" +
|
||||||
" and if(:#{#condition.keyWord} is not null,b.title like CONCAT('%',:#{#condition.keyWord},'%')" +
|
" and if(:#{#condition.keyWord} is not null,b.title like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||||
" or b.author_name like CONCAT('%',:#{#condition.keyWord},'%')" +
|
" or b.author_name like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||||
" or b.keyword1 like CONCAT('%',:#{#condition.keyWord},'%')" +
|
" or b.keyword1 like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||||
@@ -28,10 +35,26 @@ public interface CasesRecordDao extends JpaRepository<Cases, String>, JpaSpecifi
|
|||||||
" or b.keyword4 like CONCAT('%',:#{#condition.keyWord},'%')" +
|
" or b.keyword4 like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||||
" or b.keyword5 like CONCAT('%',:#{#condition.keyWord},'%'),1=1)" +
|
" or b.keyword5 like CONCAT('%',:#{#condition.keyWord},'%'),1=1)" +
|
||||||
" and if(:#{#condition.years} is not null ,YEAR(b.sys_create_time) in (:#{#condition.years}),1=1 )" +
|
" and if(:#{#condition.years} is not null ,YEAR(b.sys_create_time) in (:#{#condition.years}),1=1 )" +
|
||||||
" and if(:#{#condition.majorType} is nto null ,b.major_type = :#{#condition.majorType},1=1) " +
|
" and if(:#{#condition.majorType} is not null ,b.major_type = :#{#condition.majorType},1=1) " +
|
||||||
" and if(:#{#condition.org1} is not null,b.org_domain_parent in (:#{#condition.org1}),1=1)" +
|
" and if(:#{#condition.org1} is not null,b.org_domain_parent in (:#{#condition.org1}),1=1)" +
|
||||||
" and if(:#{#condition.org2} is not null,b.org_domain_parent2 in (:#{#condition.org2}),1=1)" +
|
" and if(:#{#condition.org2} is not null,b.org_domain_parent2 in (:#{#condition.org2}),1=1)" +
|
||||||
" and if(:#{#condition.org3} is not null,b.org_domain_parent3 in (:#{#condition.org3}),1=1)" +
|
" and if(:#{#condition.org3} is not null,b.org_domain_parent3 in (:#{#condition.org3}),1=1)" +
|
||||||
" group by b.id order by a.sys_create_time DESC")
|
" group by b.id order by a.sys_create_time DESC",
|
||||||
|
countQuery = "select count(*)" +
|
||||||
|
" from boe_cases_recommend_push_record a LEFT JOIN boe_cases b on a.case_id = b.id and b.deleted=0 " +
|
||||||
|
" where a.deleted=0 and a.push_user_id= :#{#condition.userId}" +
|
||||||
|
" and if(:#{#condition.keyWord} is not null,b.title like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||||
|
" or b.author_name like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||||
|
" or b.keyword1 like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||||
|
" or b.keyword2 like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||||
|
" or b.keyword3 like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||||
|
" or b.keyword4 like CONCAT('%',:#{#condition.keyWord},'%')" +
|
||||||
|
" or b.keyword5 like CONCAT('%',:#{#condition.keyWord},'%'),1=1)" +
|
||||||
|
" and if(:#{#condition.years} is not null ,YEAR(b.sys_create_time) in (:#{#condition.years}),1=1 )" +
|
||||||
|
" and if(:#{#condition.majorType} is not null ,b.major_type = :#{#condition.majorType},1=1) " +
|
||||||
|
" and if(:#{#condition.org1} is not null,b.org_domain_parent in (:#{#condition.org1}),1=1)" +
|
||||||
|
" and if(:#{#condition.org2} is not null,b.org_domain_parent2 in (:#{#condition.org2}),1=1)" +
|
||||||
|
" and if(:#{#condition.org3} is not null,b.org_domain_parent3 in (:#{#condition.org3}),1=1)" +
|
||||||
|
" group by b.id")
|
||||||
Page<Cases> queryList(Pageable pageable, @Param("condition") CasePageVo casePage);
|
Page<Cases> queryList(Pageable pageable, @Param("condition") CasePageVo casePage);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class CasePageVo extends PageDto {
|
|||||||
|
|
||||||
private String authorName;
|
private String authorName;
|
||||||
|
|
||||||
private List<String> years;
|
private List<Object> years;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 已经返回给前端的案例需要过滤掉
|
* 已经返回给前端的案例需要过滤掉
|
||||||
@@ -62,21 +62,21 @@ public class CasePageVo extends PageDto {
|
|||||||
|
|
||||||
public List<String> getOrg1() {
|
public List<String> getOrg1() {
|
||||||
if (CollectionUtils.isNotEmpty(this.orgDomainDtos)) {
|
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;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getOrg2() {
|
public List<String> getOrg2() {
|
||||||
if (CollectionUtils.isNotEmpty(this.orgDomainDtos)) {
|
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;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getOrg3() {
|
public List<String> getOrg3() {
|
||||||
if (CollectionUtils.isNotEmpty(this.orgDomainDtos)) {
|
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;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,19 +2,17 @@ package com.xboe.module.boecase.dto;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class OrgDomainDto {
|
public class OrgDomainDto {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 组织领域1级
|
* 组织领域1级
|
||||||
*/
|
*/
|
||||||
private String orgDomainParent;
|
private String parent;
|
||||||
/**
|
/**
|
||||||
* 组织领域2级
|
* 组织领域子级
|
||||||
*/
|
*/
|
||||||
private String orgDomainParent2;
|
private List<OrgDomainDto> children;
|
||||||
/**
|
|
||||||
* 组织领域3级
|
|
||||||
*/
|
|
||||||
private String orgDomainParent3;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,6 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class PageDto {
|
public class PageDto {
|
||||||
|
|
||||||
private int pageIndex = 1;
|
private Integer pageIndex = 1;
|
||||||
private int pageSize = 10;
|
private Integer pageSize = 10;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -261,6 +261,12 @@ public class Cases extends BaseEntity {
|
|||||||
@Transient
|
@Transient
|
||||||
private List<String> majorIds;
|
private List<String> majorIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 推荐组织
|
||||||
|
*/
|
||||||
|
@Transient
|
||||||
|
private String recommendOrgName;
|
||||||
|
|
||||||
|
|
||||||
public Cases() {
|
public Cases() {
|
||||||
|
|
||||||
|
|||||||
@@ -46,9 +46,6 @@ public class CasesRecommend extends BaseEntity {
|
|||||||
/**查看率*/
|
/**查看率*/
|
||||||
@Column(name = "view_rate", length = 255)
|
@Column(name = "view_rate", length = 255)
|
||||||
private String viewRate;
|
private String viewRate;
|
||||||
/**推荐组织ID*/
|
|
||||||
@Column(name = "recommend_org_id", length = 20)
|
|
||||||
private String recommendOrgId;
|
|
||||||
|
|
||||||
/**推荐组织名称*/
|
/**推荐组织名称*/
|
||||||
@Column(name = "recommend_org_name", length = 255)
|
@Column(name = "recommend_org_name", length = 255)
|
||||||
|
|||||||
@@ -42,4 +42,7 @@ public class CasesRecommendLaunchImport extends BaseEntity {
|
|||||||
@Column(name = "process_status",length = 20)
|
@Column(name = "process_status",length = 20)
|
||||||
private Integer processStatus;
|
private Integer processStatus;
|
||||||
|
|
||||||
|
@Column(name = "import_id")
|
||||||
|
private String importId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import javax.persistence.Table;
|
|||||||
@Data
|
@Data
|
||||||
@Entity
|
@Entity
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@Table(name = SysConstant.TABLE_PRE + "cases_recommend_launch_import")
|
@Table(name = SysConstant.TABLE_PRE + "cases_recommend_launch_import_data")
|
||||||
public class CasesRecommendLaunchImportData extends BaseEntity {
|
public class CasesRecommendLaunchImportData extends BaseEntity {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -91,5 +91,11 @@ public class CasesRecommendPushRecord extends BaseEntity {
|
|||||||
@Column(name = "remark")
|
@Column(name = "remark")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
public CasesRecommendPushRecord() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public CasesRecommendPushRecord(String recommendId,String caseId) {
|
||||||
|
this.recommendId = recommendId;
|
||||||
|
this.caseId = caseId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.xboe.module.boecase.service;
|
package com.xboe.module.boecase.service;
|
||||||
|
|
||||||
|
|
||||||
|
import com.xboe.data.dto.ImportData;
|
||||||
import com.xboe.module.boecase.entity.CasesRecommendLaunchImport;
|
import com.xboe.module.boecase.entity.CasesRecommendLaunchImport;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -13,7 +14,7 @@ public interface ICasesRecommendLaunchImportService {
|
|||||||
* @param dataList
|
* @param dataList
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
String importData(List<List<Object>> dataList);
|
ImportData importData(List<List<Object>> dataList);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -30,6 +31,6 @@ public interface ICasesRecommendLaunchImportService {
|
|||||||
* @param id
|
* @param id
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
CasesRecommendLaunchImport getById(String id);
|
CasesRecommendLaunchImport getByImportId(String importId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.xboe.module.boecase.service;
|
|||||||
|
|
||||||
import com.xboe.common.PageList;
|
import com.xboe.common.PageList;
|
||||||
import com.xboe.module.boecase.entity.CasesRecommend;
|
import com.xboe.module.boecase.entity.CasesRecommend;
|
||||||
|
import com.xboe.module.boecase.vo.CasesRecommendPushVo;
|
||||||
import com.xboe.module.boecase.vo.CasesRecommendVo;
|
import com.xboe.module.boecase.vo.CasesRecommendVo;
|
||||||
|
|
||||||
public interface ICasesRecommendService {
|
public interface ICasesRecommendService {
|
||||||
@@ -26,4 +27,11 @@ public interface ICasesRecommendService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
CasesRecommend findById(String id);
|
CasesRecommend findById(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 撤回或者重新推送
|
||||||
|
* @param casesRecommendPushVo
|
||||||
|
*/
|
||||||
|
void rePushOrWithdraw(CasesRecommendPushVo casesRecommendPushVo);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ package com.xboe.module.boecase.service.impl;
|
|||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import com.xboe.core.orm.FieldFilters;
|
import com.xboe.core.orm.FieldFilters;
|
||||||
|
import com.xboe.data.dto.ImportData;
|
||||||
import com.xboe.module.boecase.dao.CasesDao;
|
import com.xboe.module.boecase.dao.CasesDao;
|
||||||
import com.xboe.module.boecase.dao.CasesRecommendLaunchImportDao;
|
import com.xboe.module.boecase.dao.CasesRecommendLaunchImportDao;
|
||||||
import com.xboe.module.boecase.dao.CasesRecommendLaunchImportDataDao;
|
import com.xboe.module.boecase.dao.CasesRecommendLaunchImportDataDao;
|
||||||
@@ -12,13 +13,15 @@ import com.xboe.module.boecase.entity.CasesRecommendLaunchImport;
|
|||||||
import com.xboe.module.boecase.entity.CasesRecommendLaunchImportData;
|
import com.xboe.module.boecase.entity.CasesRecommendLaunchImportData;
|
||||||
import com.xboe.module.boecase.service.ICasesRecommendLaunchImportService;
|
import com.xboe.module.boecase.service.ICasesRecommendLaunchImportService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Collections;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@Transactional
|
||||||
public class CasesRecommendLaunchImportServiceImpl implements ICasesRecommendLaunchImportService {
|
public class CasesRecommendLaunchImportServiceImpl implements ICasesRecommendLaunchImportService {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
@@ -31,53 +34,67 @@ public class CasesRecommendLaunchImportServiceImpl implements ICasesRecommendLau
|
|||||||
private CasesDao casesDao;
|
private CasesDao casesDao;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String importData(List<List<Object>> dataList) {
|
public ImportData importData(List<List<Object>> dataList) {
|
||||||
if (CollectionUtil.isEmpty(dataList)) {
|
if (CollectionUtil.isEmpty(dataList) || dataList.size() < 1) {
|
||||||
throw new RuntimeException("导入数据为空");
|
throw new RuntimeException("导入数据为空");
|
||||||
}
|
}
|
||||||
int totalNum = dataList.size();
|
int totalNum = dataList.size() - 1;
|
||||||
int successNum = 0;
|
int successNum = 0;
|
||||||
int failNum = 0;
|
int failNum = 0;
|
||||||
Long importId = IdUtil.getSnowflakeNextId();
|
String importId = IdUtil.getSnowflakeNextId() + "";
|
||||||
|
ImportData importData = new ImportData();
|
||||||
|
importData.setImportId(importId);
|
||||||
|
List<String> caseIds = new ArrayList<>();
|
||||||
|
|
||||||
|
List<ImportData.CasesTitle> caseTitleList = new ArrayList<>();
|
||||||
for (int i = 1; i < dataList.size(); i++) {
|
for (int i = 1; i < dataList.size(); i++) {
|
||||||
String caseTitle = dataList.get(i).get(0).toString();
|
String caseTitle = dataList.get(i).get(0).toString();
|
||||||
|
|
||||||
CasesRecommendLaunchImportData casesRecommendLaunchImportData = new CasesRecommendLaunchImportData();
|
CasesRecommendLaunchImportData casesRecommendLaunchImportData = new CasesRecommendLaunchImportData();
|
||||||
casesRecommendLaunchImportData.setImportId(importId + "");
|
casesRecommendLaunchImportData.setImportId(importId);
|
||||||
casesRecommendLaunchImportData.setCaseTitle(caseTitle);
|
casesRecommendLaunchImportData.setCaseTitle(caseTitle);
|
||||||
Cases cases = casesDao.getByTitle(caseTitle);
|
Cases cases = casesDao.getByTitle(caseTitle);
|
||||||
if (cases == null) {
|
if (cases == null) {
|
||||||
failNum++;
|
failNum++;
|
||||||
casesRecommendLaunchImportData.setStatus(2);
|
casesRecommendLaunchImportData.setStatus(2);
|
||||||
} else {
|
} else {
|
||||||
|
if (caseTitleList.size() < 10) {
|
||||||
|
caseTitleList.add(new ImportData.CasesTitle(cases.getId(), cases.getTitle()));
|
||||||
|
}
|
||||||
|
caseIds.add(cases.getId());
|
||||||
casesRecommendLaunchImportData.setStatus(1);
|
casesRecommendLaunchImportData.setStatus(1);
|
||||||
casesRecommendLaunchImportData.setCaseTitle(caseTitle);
|
casesRecommendLaunchImportData.setCaseTitle(caseTitle);
|
||||||
}
|
|
||||||
casesRecommendLaunchImportDataDao.save(casesRecommendLaunchImportData);
|
|
||||||
successNum++;
|
successNum++;
|
||||||
}
|
}
|
||||||
|
casesRecommendLaunchImportDataDao.save(casesRecommendLaunchImportData);
|
||||||
|
}
|
||||||
|
importData.setCaseTitleList(caseTitleList);
|
||||||
|
importData.setCaseIdList(caseIds);
|
||||||
CasesRecommendLaunchImport casesRecommendLaunchImport = new CasesRecommendLaunchImport();
|
CasesRecommendLaunchImport casesRecommendLaunchImport = new CasesRecommendLaunchImport();
|
||||||
casesRecommendLaunchImport.setFailNum(failNum);
|
casesRecommendLaunchImport.setFailNum(failNum);
|
||||||
casesRecommendLaunchImport.setId(importId + "");
|
casesRecommendLaunchImport.setImportId(importId);
|
||||||
casesRecommendLaunchImport.setSuccessNum(successNum);
|
casesRecommendLaunchImport.setSuccessNum(successNum);
|
||||||
casesRecommendLaunchImport.setTotalNum(totalNum);
|
casesRecommendLaunchImport.setTotalNum(totalNum);
|
||||||
|
casesRecommendLaunchImport.setProcessStatus(1);
|
||||||
casesRecommendLaunchImportDao.save(casesRecommendLaunchImport);
|
casesRecommendLaunchImportDao.save(casesRecommendLaunchImport);
|
||||||
return importId + "";
|
return importData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> downFailData(String importId) {
|
public List<String> downFailData(String importId) {
|
||||||
|
|
||||||
List<CasesRecommendLaunchImportData> dataList = casesRecommendLaunchImportDataDao.findList(FieldFilters.eq("import_id", importId));
|
List<CasesRecommendLaunchImportData> dataList = casesRecommendLaunchImportDataDao.findList(FieldFilters.eq("importId", importId)
|
||||||
|
, FieldFilters.eq("status", 2));
|
||||||
if (CollectionUtil.isEmpty(dataList)) {
|
if (CollectionUtil.isEmpty(dataList)) {
|
||||||
return Collections.emptyList();
|
return null;
|
||||||
}
|
}
|
||||||
return dataList.stream().map(CasesRecommendLaunchImportData::getCaseTitle).collect(Collectors.toList());
|
return dataList.stream().map(CasesRecommendLaunchImportData::getCaseTitle).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CasesRecommendLaunchImport getById(String id) {
|
public CasesRecommendLaunchImport getByImportId(String importId) {
|
||||||
return casesRecommendLaunchImportDao.get(id);
|
return casesRecommendLaunchImportDao.findOne(FieldFilters.eq("importId", importId));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,8 +114,8 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR
|
|||||||
record.setPushStatus(CasesPushStatusEnum.PUSH_REVOKE.getStatus())
|
record.setPushStatus(CasesPushStatusEnum.PUSH_REVOKE.getStatus())
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
recordList.stream().forEach(record ->
|
recordList.stream().filter(it -> CasesPushStatusEnum.PUSH_SUCCESS.getStatus() != it.getPushStatus()).forEach(record ->
|
||||||
record.setPushStatus(CasesPushStatusEnum.PUSH_ING.getStatus())
|
record.setPushStatus(CasesPushStatusEnum.WAIT_PUSH.getStatus())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(recordList)) {
|
if (CollectionUtil.isNotEmpty(recordList)) {
|
||||||
|
|||||||
@@ -5,9 +5,12 @@ import com.xboe.common.PageList;
|
|||||||
import com.xboe.core.orm.FieldFilters;
|
import com.xboe.core.orm.FieldFilters;
|
||||||
import com.xboe.core.orm.LikeMatchMode;
|
import com.xboe.core.orm.LikeMatchMode;
|
||||||
import com.xboe.core.orm.QueryBuilder;
|
import com.xboe.core.orm.QueryBuilder;
|
||||||
|
import com.xboe.enums.CasesPushStatusEnum;
|
||||||
import com.xboe.module.boecase.dao.CasesRecommendDao;
|
import com.xboe.module.boecase.dao.CasesRecommendDao;
|
||||||
import com.xboe.module.boecase.entity.CasesRecommend;
|
import com.xboe.module.boecase.entity.CasesRecommend;
|
||||||
|
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.CasesRecommendPushVo;
|
||||||
import com.xboe.module.boecase.vo.CasesRecommendVo;
|
import com.xboe.module.boecase.vo.CasesRecommendVo;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -22,20 +25,22 @@ public class CasesRecommendServiceImpl implements ICasesRecommendService {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private CasesRecommendDao casesRecommendDao;
|
private CasesRecommendDao casesRecommendDao;
|
||||||
|
@Resource
|
||||||
|
private ICasesRecommendPushRecordService iCasesRecommendPushRecordService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageList<CasesRecommend> page(int pageIndex, int pageSize, CasesRecommendVo casesRecommendVo) {
|
public PageList<CasesRecommend> page(int pageIndex, int pageSize, CasesRecommendVo casesRecommendVo) {
|
||||||
QueryBuilder query=QueryBuilder.from(CasesRecommend.class);
|
QueryBuilder query=QueryBuilder.from(CasesRecommend.class);
|
||||||
query.addFilter(FieldFilters.eq("deleted",false));
|
query.addFilter(FieldFilters.eq("deleted",false));
|
||||||
if(StringUtils.isNotBlank(casesRecommendVo.getRecommendName())){
|
if(StringUtils.isNotBlank(casesRecommendVo.getRecommendName())){
|
||||||
query.addFilter(FieldFilters.like("recommendBy", LikeMatchMode.ANYWHERE, casesRecommendVo.getRecommendName()));
|
query.addFilter(FieldFilters.like("recommend_by", LikeMatchMode.ANYWHERE, casesRecommendVo.getRecommendName()));
|
||||||
}
|
}
|
||||||
if(!CollectionUtils.isEmpty(casesRecommendVo.getRecommendTimeList())){
|
if(!CollectionUtils.isEmpty(casesRecommendVo.getRecommendTimeList())){
|
||||||
query.addFilter(FieldFilters.ge("recommendTime",casesRecommendVo.getRecommendTimeList().get(0)));
|
query.addFilter(FieldFilters.ge("recommend_time",casesRecommendVo.getRecommendTimeList().get(0)));
|
||||||
query.addFilter(FieldFilters.le("recommendTime",casesRecommendVo.getRecommendTimeList().get(1)));
|
query.addFilter(FieldFilters.le("recommend_time",casesRecommendVo.getRecommendTimeList().get(1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
query.addOrder(OrderCondition.desc("sysCreateTime"));
|
query.addOrder(OrderCondition.desc("sys_create_time"));
|
||||||
query.setPageIndex(pageIndex);
|
query.setPageIndex(pageIndex);
|
||||||
query.setPageSize(pageSize);
|
query.setPageSize(pageSize);
|
||||||
PageList<CasesRecommend> page = casesRecommendDao.findPage(query.builder());
|
PageList<CasesRecommend> page = casesRecommendDao.findPage(query.builder());
|
||||||
@@ -51,4 +56,24 @@ public class CasesRecommendServiceImpl implements ICasesRecommendService {
|
|||||||
public CasesRecommend findById(String id) {
|
public CasesRecommend findById(String id) {
|
||||||
return casesRecommendDao.get(id);
|
return casesRecommendDao.get(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void rePushOrWithdraw(CasesRecommendPushVo casesRecommendPushVo) {
|
||||||
|
// 查询
|
||||||
|
CasesRecommend db = casesRecommendDao.get(casesRecommendPushVo.getCasesRecommendId());
|
||||||
|
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());
|
||||||
|
}else if (CasesPushStatusEnum.PUSH_FAIL.getStatus().equals(db.getPushProgress())
|
||||||
|
|| CasesPushStatusEnum.PUSH_REVOKE.getStatus().equals(db.getPushProgress())){
|
||||||
|
// 推送失败或者已撤回时
|
||||||
|
iCasesRecommendPushRecordService.rePushOrWithdraw(false, casesRecommendPushVo.getCasesRecommendId());
|
||||||
|
db.setPushProgress(CasesPushStatusEnum.WAIT_PUSH.getStatus());
|
||||||
|
}
|
||||||
|
casesRecommendDao.update(db);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,32 +1,40 @@
|
|||||||
package com.xboe.module.boecase.service.impl;
|
package com.xboe.module.boecase.service.impl;
|
||||||
|
|
||||||
|
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.OrderCondition;
|
||||||
|
import com.xboe.common.OrderDirection;
|
||||||
import com.xboe.common.PageList;
|
import com.xboe.common.PageList;
|
||||||
import com.xboe.common.utils.IDGenerator;
|
import com.xboe.common.utils.IDGenerator;
|
||||||
import com.xboe.common.utils.StringUtil;
|
import com.xboe.common.utils.StringUtil;
|
||||||
import com.xboe.core.orm.*;
|
import com.xboe.core.orm.*;
|
||||||
import com.xboe.module.boecase.dao.CasesDao;
|
import com.xboe.module.boecase.dao.*;
|
||||||
import com.xboe.module.boecase.dao.CasesMajorTypeDao;
|
|
||||||
import com.xboe.module.boecase.dao.CasesRecordDao;
|
|
||||||
import com.xboe.module.boecase.dto.*;
|
import com.xboe.module.boecase.dto.*;
|
||||||
import com.xboe.module.boecase.entity.Cases;
|
import com.xboe.module.boecase.entity.Cases;
|
||||||
import com.xboe.module.boecase.entity.CasesMajorType;
|
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.boecase.service.ICasesService;
|
||||||
import com.xboe.module.dict.dao.SysDictionaryDao;
|
import com.xboe.module.dict.dao.SysDictionaryDao;
|
||||||
import com.xboe.module.dict.entity.DictItem;
|
import com.xboe.module.dict.entity.DictItem;
|
||||||
|
import com.xboe.orm.CustomFieldInFilter;
|
||||||
import com.xboe.school.vo.CasesVo;
|
import com.xboe.school.vo.CasesVo;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import javax.persistence.EntityManager;
|
||||||
|
import javax.persistence.PersistenceContext;
|
||||||
import javax.transaction.Transactional;
|
import javax.transaction.Transactional;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
import java.util.function.Function;
|
||||||
import java.util.List;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@@ -45,6 +53,15 @@ public class CasesServiceImpl implements ICasesService {
|
|||||||
@Resource
|
@Resource
|
||||||
private CasesRecordDao casesRecordDao;
|
private CasesRecordDao casesRecordDao;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CasesMajorTypeRepoDao casesMajorTypeRepoDao;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CasesRecommendPushRecordDao casesRecommendPushRecordDao;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CasesRecommendDao casesRecommendDao;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 案例分页查询,用于门户的查询
|
* 案例分页查询,用于门户的查询
|
||||||
*/
|
*/
|
||||||
@@ -84,11 +101,7 @@ public class CasesServiceImpl implements ICasesService {
|
|||||||
filters.add(FieldFilters.isNotNull("filePath"));
|
filters.add(FieldFilters.isNotNull("filePath"));
|
||||||
filters.add(FieldFilters.ne("filePath", ""));
|
filters.add(FieldFilters.ne("filePath", ""));
|
||||||
|
|
||||||
// if(StringUtil.isNotBlank(caseVo.getMajorType())){
|
|
||||||
// filters.add(FieldFilters.eq("majorType",caseVo.getMajorType()));
|
|
||||||
// }
|
|
||||||
if (StringUtil.isNotBlank(caseVo.getMajorType())) {
|
if (StringUtil.isNotBlank(caseVo.getMajorType())) {
|
||||||
|
|
||||||
QueryBuilder from = QueryBuilder.from(CasesMajorType.class);
|
QueryBuilder from = QueryBuilder.from(CasesMajorType.class);
|
||||||
//前端直接字符串拼接传,后端转化数组
|
//前端直接字符串拼接传,后端转化数组
|
||||||
if (caseVo.getMajorType().contains(",")) {
|
if (caseVo.getMajorType().contains(",")) {
|
||||||
@@ -165,13 +178,152 @@ public class CasesServiceImpl implements ICasesService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public PageList<Cases> queryPageCasesV2(CasePageVo caseVo) {
|
public PageList<Cases> queryPageCasesV2(CasePageVo caseVo) {
|
||||||
PageRequest pageRequest = PageRequest.of(caseVo.getPageIndex(), caseVo.getPageSize());
|
|
||||||
Page<Cases> cases = casesRecordDao.queryList(pageRequest, caseVo);
|
String keyword = caseVo.getKeyWord();
|
||||||
PageList<Cases> pageList = new PageList<>();
|
QueryBuilder query = QueryBuilder.from(Cases.class);
|
||||||
pageList.setCount((int) cases.getTotalElements());
|
PageList<Cases> page = null;
|
||||||
pageList.setPageSize(cases.getSize());
|
List<IFieldFilter> filters = new ArrayList<>();
|
||||||
pageList.setList(cases.getContent());
|
filters.add(FieldFilters.eq("deleted", false));
|
||||||
return pageList;
|
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()));
|
||||||
|
likes.add(FieldFilters.like("keyword2", LikeMatchMode.ANYWHERE, caseVo.getKeyWord()));
|
||||||
|
likes.add(FieldFilters.like("keyword3", LikeMatchMode.ANYWHERE, caseVo.getKeyWord()));
|
||||||
|
likes.add(FieldFilters.like("keyword4", LikeMatchMode.ANYWHERE, caseVo.getKeyWord()));
|
||||||
|
likes.add(FieldFilters.like("keyword5", LikeMatchMode.ANYWHERE, caseVo.getKeyWord()));
|
||||||
|
List<Long> notInIds = caseVo.getNotInIds();
|
||||||
|
if (CollUtil.isNotEmpty(notInIds)) {
|
||||||
|
filters.add(FieldFilters.notIn("id", notInIds));
|
||||||
|
}
|
||||||
|
|
||||||
|
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(FieldFilters.isNotNull("filePath"));
|
||||||
|
filters.add(FieldFilters.ne("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("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 (i == 0) {
|
||||||
|
orgDomain = itemFilter;
|
||||||
|
} else {
|
||||||
|
orgDomain = FieldFilters.or(orgDomain, itemFilter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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()));
|
||||||
|
}
|
||||||
|
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.addFilters(filters);
|
||||||
|
query.addOrder(order);
|
||||||
|
query.addOrder(OrderCondition.rand());
|
||||||
|
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
|
@Override
|
||||||
@@ -548,6 +700,8 @@ public class CasesServiceImpl implements ICasesService {
|
|||||||
cases.setPraises(0);
|
cases.setPraises(0);
|
||||||
cases.setShares(0);
|
cases.setShares(0);
|
||||||
cases.setFavorites(0);
|
cases.setFavorites(0);
|
||||||
|
cases.setCites(0);
|
||||||
|
cases.setRecommends(0);
|
||||||
StringBuffer stringBuffer = new StringBuffer();
|
StringBuffer stringBuffer = new StringBuffer();
|
||||||
List<String> majorIds = cases.getMajorIds();
|
List<String> majorIds = cases.getMajorIds();
|
||||||
for (String s : majorIds) {
|
for (String s : majorIds) {
|
||||||
|
|||||||
@@ -1,17 +1,18 @@
|
|||||||
package com.xboe.module.boecase.vo;
|
package com.xboe.module.boecase.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.xboe.common.Pagination;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class CasesRecommendVo {
|
public class CasesRecommendVo extends Pagination {
|
||||||
|
|
||||||
/** 推荐人姓名 */
|
/** 推荐人姓名 */
|
||||||
private String recommendName;
|
private String recommendName;
|
||||||
|
|
||||||
/** 推荐时间区间 */
|
/** 推荐时间区间 */
|
||||||
private List<LocalDateTime> recommendTimeList;
|
private List<String> recommendTimeList;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.xboe.orm;
|
||||||
|
|
||||||
|
import com.xboe.common.beans.KeyValue;
|
||||||
|
import com.xboe.core.orm.impl.FieldInFilter;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
public class CustomFieldInFilter extends FieldInFilter {
|
||||||
|
|
||||||
|
private String param;
|
||||||
|
|
||||||
|
public CustomFieldInFilter(String name,String param, Collection<Object> values) {
|
||||||
|
super(name, values);
|
||||||
|
this.param = param;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getNamed(String name, int order) {
|
||||||
|
return super.getNamed(param, order);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getNamed(String pre, String name, int order) {
|
||||||
|
return super.getNamed(pre, param, order);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,24 +1,24 @@
|
|||||||
package com.xboe.system.user.service.impl;
|
package com.xboe.system.user.service.impl;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
|
|
||||||
import com.xboe.common.OrderCondition;
|
import com.xboe.common.OrderCondition;
|
||||||
import com.xboe.core.orm.FilterCheckValue;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import com.xboe.common.PageList;
|
import com.xboe.common.PageList;
|
||||||
import com.xboe.core.orm.FieldFilters;
|
import com.xboe.core.orm.FieldFilters;
|
||||||
import com.xboe.core.orm.QueryBuilder;
|
import com.xboe.core.orm.QueryBuilder;
|
||||||
import com.xboe.core.orm.UpdateBuilder;
|
import com.xboe.core.orm.UpdateBuilder;
|
||||||
|
import com.xboe.module.boecase.dao.CasesRecommendPushRecordDao;
|
||||||
|
import com.xboe.module.boecase.entity.CasesRecommendPushRecord;
|
||||||
import com.xboe.system.user.dao.MessageDao;
|
import com.xboe.system.user.dao.MessageDao;
|
||||||
import com.xboe.system.user.entity.Message;
|
import com.xboe.system.user.entity.Message;
|
||||||
import com.xboe.system.user.service.IMessageService;
|
import com.xboe.system.user.service.IMessageService;
|
||||||
import com.xboe.system.user.vo.BatchMessage;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 消息
|
* 消息
|
||||||
@@ -29,6 +29,9 @@ public class MessageServiceImpl implements IMessageService {
|
|||||||
@Resource
|
@Resource
|
||||||
private MessageDao dao;
|
private MessageDao dao;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CasesRecommendPushRecordDao casesRecommendPushRecordDao;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageList<Message> query(int pageIndex, int pageSize, String aid, Boolean isRead) {
|
public PageList<Message> query(int pageIndex, int pageSize, String aid, Boolean isRead) {
|
||||||
QueryBuilder builder = QueryBuilder.from(Message.class);
|
QueryBuilder builder = QueryBuilder.from(Message.class);
|
||||||
@@ -72,6 +75,14 @@ public class MessageServiceImpl implements IMessageService {
|
|||||||
Message message = dao.get(id);
|
Message message = dao.get(id);
|
||||||
if(!message.getIsRead()){
|
if(!message.getIsRead()){
|
||||||
dao.updateFieldById(id,"isRead",true);
|
dao.updateFieldById(id,"isRead",true);
|
||||||
|
|
||||||
|
if("99".equals(message.getRefType())){
|
||||||
|
casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class)
|
||||||
|
.addUpdateField("readFlag",1)
|
||||||
|
.addUpdateField("readStartTime",new Date())
|
||||||
|
.addFilter(FieldFilters.eq("id",message.getRefId()))
|
||||||
|
.builder());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
@@ -94,6 +105,20 @@ public class MessageServiceImpl implements IMessageService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void updateIsRead(List<String> ids) {
|
public void updateIsRead(List<String> ids) {
|
||||||
|
if(CollectionUtils.isEmpty(ids)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//更新最后读时间
|
||||||
|
for (String id:ids){
|
||||||
|
Message message = dao.get(id);
|
||||||
|
if("99".equals(message.getRefType())){
|
||||||
|
casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class)
|
||||||
|
.addUpdateField("readEndTime",new Date())
|
||||||
|
.addFilter(FieldFilters.eq("id",message.getRefId()))
|
||||||
|
.builder());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dao.update(UpdateBuilder.from(Message.class)
|
dao.update(UpdateBuilder.from(Message.class)
|
||||||
.addUpdateField("isRead",true)
|
.addUpdateField("isRead",true)
|
||||||
.addFilter(FieldFilters.in("id",ids))
|
.addFilter(FieldFilters.in("id",ids))
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<configuration debug="false" scan="false">
|
<configuration debug="false" scan="false">
|
||||||
<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
|
<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
|
||||||
<property name="log.path" value="logs/${spring.application.name}"/>
|
<property name="log.path" value="~/app/logs/${spring.application.name}"/>
|
||||||
<!-- 彩色日志格式 -->
|
<!-- 彩色日志格式 -->
|
||||||
<property name="CONSOLE_LOG_PATTERN"
|
<property name="CONSOLE_LOG_PATTERN"
|
||||||
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
|
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
|
||||||
@@ -49,6 +49,8 @@
|
|||||||
|
|
||||||
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
|
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
|
||||||
<root level="INFO">
|
<root level="INFO">
|
||||||
|
<appender-ref ref="debug"/>
|
||||||
<appender-ref ref="console"/>
|
<appender-ref ref="console"/>
|
||||||
</root>
|
</root>
|
||||||
|
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.xboe.module.boecase.dao;
|
||||||
|
|
||||||
|
import com.xboe.module.boecase.entity.CasesMajorType;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.test.context.ActiveProfiles;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
@ActiveProfiles("dev")
|
||||||
|
class CasesMajorTypeRepoDaoTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CasesMajorTypeRepoDao casesMajorTypeRepoDao;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void findCasesBy() {
|
||||||
|
ArrayList<String> params = new ArrayList<>();
|
||||||
|
params.add("27737267694995149");
|
||||||
|
List<CasesMajorType> majorTypes = casesMajorTypeRepoDao.findCasesBy(params);
|
||||||
|
System.out.println(majorTypes);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.xboe.module.boecase.dao;
|
||||||
|
|
||||||
|
import com.xboe.module.boecase.dto.CasePageVo;
|
||||||
|
import com.xboe.module.boecase.entity.Cases;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
import org.springframework.test.context.ActiveProfiles;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
@ActiveProfiles("dev")
|
||||||
|
class CasesRecordDaoTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CasesRecordDao casesRecordDao;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package com.xboe.module.boecase.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.ListUtil;
|
||||||
|
import com.xboe.common.PageList;
|
||||||
|
import com.xboe.module.boecase.dto.CasePageVo;
|
||||||
|
import com.xboe.module.boecase.entity.Cases;
|
||||||
|
import com.xboe.module.boecase.service.ICasesService;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.test.context.ActiveProfiles;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
@ActiveProfiles("dev")
|
||||||
|
class CasesServiceImplTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ICasesService casesService;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void queryPageCasesV2() {
|
||||||
|
CasePageVo pageVo = new CasePageVo();
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
package com.xboe.constants;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author : civism
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2023/6/17 16:13
|
||||||
|
*/
|
||||||
|
public enum CasesPushStatusEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 推送状态1未推送2推送中3已推送4推送失败5已撤回
|
||||||
|
*/
|
||||||
|
WAIT_PUSH(1,"未推送"),
|
||||||
|
PUSH_ING(2,"推送中"),
|
||||||
|
PUSH_SUCCESS(3,"已推送"),
|
||||||
|
PUSH_FAIL(4,"推送失败"),
|
||||||
|
PUSH_REVOKE(5,"已撤回"),
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
CasesPushStatusEnum(Integer status, String desc) {
|
||||||
|
this.status = status;
|
||||||
|
this.desc = desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
|
||||||
|
private String desc;
|
||||||
|
|
||||||
|
|
||||||
|
public Integer getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDesc() {
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package com.xboe.module.cases.dao;
|
||||||
|
|
||||||
|
import com.xboe.core.orm.BaseDao;
|
||||||
|
import com.xboe.module.cases.entity.CasesRecommend;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public class CasesRecommendDao extends BaseDao<CasesRecommend> {
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.xboe.module.cases.dao;
|
||||||
|
|
||||||
|
import com.xboe.core.orm.BaseDao;
|
||||||
|
import com.xboe.module.cases.entity.CasesRecommendPushRecord;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public class CasesRecommendPushRecordDao extends BaseDao<CasesRecommendPushRecord> {
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package com.xboe.module.cases.entity;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.xboe.core.SysConstant;
|
||||||
|
import com.xboe.core.orm.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 案例推荐表
|
||||||
|
* */
|
||||||
|
@Data
|
||||||
|
@Entity
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@Table(name = SysConstant.TABLE_PRE+"cases_recommend")
|
||||||
|
public class CasesRecommend extends BaseEntity {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**推荐人ID*/
|
||||||
|
@Column(name = "recommend_id",nullable = false,length = 100)
|
||||||
|
private String recommendId;
|
||||||
|
|
||||||
|
/**推荐人*/
|
||||||
|
@Column(name = "recommend_by", length = 255)
|
||||||
|
private String recommendBy;
|
||||||
|
|
||||||
|
/**推荐时间*/
|
||||||
|
@Column(name = "recommend_time")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime recommendTime;
|
||||||
|
/**案例数*/
|
||||||
|
@Column(name = "case_count",length = 11)
|
||||||
|
private Integer caseCount;
|
||||||
|
/**用户数*/
|
||||||
|
@Column(name = "user_count",length = 11)
|
||||||
|
private Integer userCount;
|
||||||
|
/**推送进度*/
|
||||||
|
@Column(name = "push_progress", length = 255)
|
||||||
|
private String pushProgress;
|
||||||
|
/**查看率*/
|
||||||
|
@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)
|
||||||
|
private String recommendOrgName;
|
||||||
|
}
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
package com.xboe.module.cases.entity;
|
||||||
|
|
||||||
|
import com.xboe.core.SysConstant;
|
||||||
|
import com.xboe.core.orm.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 案例推荐发起导入
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Entity
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@Table(name = SysConstant.TABLE_PRE + "cases_recommend_push_record")
|
||||||
|
public class CasesRecommendPushRecord extends BaseEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 推送id
|
||||||
|
*/
|
||||||
|
@Column(name = "recommend_id")
|
||||||
|
private String recommendId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 案例id
|
||||||
|
*/
|
||||||
|
@Column(name = "case_id")
|
||||||
|
private String caseId;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 案例标题
|
||||||
|
*/
|
||||||
|
@Column(name = "case_title")
|
||||||
|
private String caseTitle;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 推送用户id
|
||||||
|
*/
|
||||||
|
@Column(name = "push_user_id")
|
||||||
|
private String pushUserId;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 推送用户名称
|
||||||
|
*/
|
||||||
|
@Column(name = "push_user_name")
|
||||||
|
private String pushUserName;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 推送状态1未推送2推送中3已推送4推送失败5已撤回
|
||||||
|
*/
|
||||||
|
@Column(name = "push_status")
|
||||||
|
private Integer pushStatus;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 推送时间
|
||||||
|
*/
|
||||||
|
@Column(name = "push_time")
|
||||||
|
private Date pushTime;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查看标识
|
||||||
|
*/
|
||||||
|
@Column(name = "read_flag")
|
||||||
|
private Integer readFlag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 首次查看时间
|
||||||
|
*/
|
||||||
|
@Column(name = "read_start_time")
|
||||||
|
private Date readStartTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后查看时间
|
||||||
|
*/
|
||||||
|
@Column(name = "read_end_time")
|
||||||
|
private Date readEndTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
@Column(name = "remark")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.xboe.module.cases.service;
|
||||||
|
|
||||||
|
import com.xboe.module.cases.entity.CasesRecommendPushRecord;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface ICasesRecommendPushRecordService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询推送纪录通过推送状态
|
||||||
|
*
|
||||||
|
* @param pushStatusList
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<CasesRecommendPushRecord> queryPushRecordByPushStatus(List<Integer> pushStatusList);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改
|
||||||
|
* @param casesRecommendPushRecord
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
boolean update(CasesRecommendPushRecord casesRecommendPushRecord);
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.xboe.module.cases.service;
|
||||||
|
|
||||||
|
import com.xboe.module.cases.entity.CasesRecommend;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface ICasesRecommendService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过推送状态查询
|
||||||
|
*
|
||||||
|
* @param pushProgress
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<CasesRecommend> queryByPushProgress(String pushProgress);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改
|
||||||
|
*
|
||||||
|
* @param casesRecommend
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
boolean update(CasesRecommend casesRecommend);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.xboe.module.cases.service.impl;
|
||||||
|
|
||||||
|
import com.xboe.core.orm.FieldFilters;
|
||||||
|
import com.xboe.module.cases.dao.CasesRecommendPushRecordDao;
|
||||||
|
import com.xboe.module.cases.entity.CasesRecommendPushRecord;
|
||||||
|
import com.xboe.module.cases.service.ICasesRecommendPushRecordService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushRecordService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CasesRecommendPushRecordDao casesRecommendPushRecordDao;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CasesRecommendPushRecord> queryPushRecordByPushStatus(List<Integer> pushStatusList) {
|
||||||
|
return casesRecommendPushRecordDao.getGenericDao().findList(CasesRecommendPushRecord.class, FieldFilters.in("push_status", pushStatusList));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean update(CasesRecommendPushRecord casesRecommendPushRecord) {
|
||||||
|
return casesRecommendPushRecordDao.getGenericDao().update(casesRecommendPushRecord) != null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.xboe.module.cases.service.impl;
|
||||||
|
|
||||||
|
import com.xboe.core.orm.FieldFilters;
|
||||||
|
import com.xboe.module.cases.dao.CasesRecommendDao;
|
||||||
|
import com.xboe.module.cases.entity.CasesRecommend;
|
||||||
|
import com.xboe.module.cases.service.ICasesRecommendService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class CasesRecommendServiceImpl implements ICasesRecommendService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CasesRecommendDao casesRecommendDao;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CasesRecommend> queryByPushProgress(String pushProgress) {
|
||||||
|
return casesRecommendDao.getGenericDao().findList(CasesRecommend.class, FieldFilters.eq("push_progress", pushProgress));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean update(CasesRecommend casesRecommend) {
|
||||||
|
return casesRecommendDao.getGenericDao().update(casesRecommend) != null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
package com.xboe.task;
|
||||||
|
|
||||||
|
import com.xboe.constants.CasesPushStatusEnum;
|
||||||
|
import com.xboe.core.event.IEventDataSender;
|
||||||
|
import com.xboe.module.cases.entity.CasesRecommend;
|
||||||
|
import com.xboe.module.cases.entity.CasesRecommendPushRecord;
|
||||||
|
import com.xboe.module.cases.service.ICasesRecommendPushRecordService;
|
||||||
|
import com.xboe.module.cases.service.ICasesRecommendService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author : civism
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2023/6/18 10:50
|
||||||
|
*/
|
||||||
|
@EnableScheduling
|
||||||
|
@Component("com.xboe.casetask.CasesRecommendPushSchedule")
|
||||||
|
@Slf4j
|
||||||
|
public class CasesRecommendPushSchedule {
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ICasesRecommendService casesRecommendService;
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ICasesRecommendPushRecordService casesRecommendPushRecordService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IEventDataSender eventDataSender;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 每分钟执行一次
|
||||||
|
*/
|
||||||
|
@Scheduled(cron = "0 * * * * ? ")
|
||||||
|
public void execute() {
|
||||||
|
List<CasesRecommend> casesRecommends = casesRecommendService.queryByPushProgress(CasesPushStatusEnum.WAIT_PUSH.name());
|
||||||
|
if (CollectionUtils.isEmpty(casesRecommends)) {
|
||||||
|
log.warn("没有推送纪录,无需推送");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (CasesRecommend casesRecommend : casesRecommends) {
|
||||||
|
List<Integer> pushStatusList = new ArrayList<>();
|
||||||
|
pushStatusList.add(CasesPushStatusEnum.WAIT_PUSH.getStatus());
|
||||||
|
pushStatusList.add(CasesPushStatusEnum.WAIT_PUSH.getStatus());
|
||||||
|
List<CasesRecommendPushRecord> casesRecommendPushRecords = casesRecommendPushRecordService.queryPushRecordByPushStatus(pushStatusList);
|
||||||
|
if (CollectionUtils.isEmpty(casesRecommendPushRecords)) {
|
||||||
|
//修改为推送完成 --- 无数据 无需推送
|
||||||
|
CasesRecommend tempUpdate = new CasesRecommend();
|
||||||
|
tempUpdate.setId(casesRecommend.getId());
|
||||||
|
tempUpdate.setPushProgress(CasesPushStatusEnum.PUSH_SUCCESS.name());
|
||||||
|
casesRecommendService.update(tempUpdate);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//修改为推送中
|
||||||
|
CasesRecommend tempUpdate = new CasesRecommend();
|
||||||
|
tempUpdate.setId(casesRecommend.getId());
|
||||||
|
tempUpdate.setPushProgress(CasesPushStatusEnum.PUSH_ING.name());
|
||||||
|
casesRecommendService.update(tempUpdate);
|
||||||
|
|
||||||
|
for (CasesRecommendPushRecord casesRecommendPushRecord : casesRecommendPushRecords) {
|
||||||
|
|
||||||
|
CasesRecommendPushRecord pushRecordTemp = new CasesRecommendPushRecord();
|
||||||
|
pushRecordTemp.setId(casesRecommendPushRecord.getId());
|
||||||
|
pushRecordTemp.setPushTime(new Date());
|
||||||
|
try {
|
||||||
|
|
||||||
|
eventDataSender.send("案例推荐", "recommendCases", "案例推荐【" + casesRecommendPushRecord.getCaseTitle() + "】",
|
||||||
|
casesRecommendPushRecord.getCaseId(), "99", casesRecommendPushRecord.getCaseTitle(),
|
||||||
|
casesRecommendPushRecord.getSysCreateAid(), casesRecommendPushRecord.getSysCreateBy(), "");
|
||||||
|
|
||||||
|
pushRecordTemp.setPushStatus(CasesPushStatusEnum.PUSH_SUCCESS.getStatus());
|
||||||
|
} catch (Exception e) {
|
||||||
|
pushRecordTemp.setPushStatus(CasesPushStatusEnum.PUSH_FAIL.getStatus());
|
||||||
|
}
|
||||||
|
casesRecommendPushRecordService.update(pushRecordTemp);
|
||||||
|
}
|
||||||
|
|
||||||
|
//修改为推送完成 --- 无数据 无需推送
|
||||||
|
CasesRecommend finishTemp = new CasesRecommend();
|
||||||
|
finishTemp.setId(casesRecommend.getId());
|
||||||
|
finishTemp.setPushProgress(CasesPushStatusEnum.PUSH_SUCCESS.name());
|
||||||
|
casesRecommendService.update(finishTemp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user