mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-14 05:16:49 +08:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -37,7 +37,6 @@ import java.io.OutputStream;
|
|||||||
import java.util.ArrayList;
|
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.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -123,6 +122,27 @@ public class CasesRecommendApi extends ApiBaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下载错误数据
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
@PostMapping("/download-template")
|
||||||
|
public void downloadTemplate(HttpServletResponse response) throws Exception {
|
||||||
|
// 通过工具类创建writer,默认创建xls格式
|
||||||
|
ExcelWriter writer = ExcelUtil.getWriter();
|
||||||
|
writer.writeHeadRow(ListUtil.toList("标题"));
|
||||||
|
response.setContentType("application/vnd.ms-excel;charset=utf-8");
|
||||||
|
response.setHeader("Content-Disposition", "attachment;filename=failData.xls");
|
||||||
|
ServletOutputStream out = response.getOutputStream();
|
||||||
|
|
||||||
|
writer.flush(out, true);
|
||||||
|
writer.close();
|
||||||
|
IoUtil.close(out);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 下载错误数据
|
* 下载错误数据
|
||||||
*
|
*
|
||||||
@@ -186,17 +206,17 @@ public class CasesRecommendApi extends ApiBaseController {
|
|||||||
throw new RuntimeException("缺少必要参数");
|
throw new RuntimeException("缺少必要参数");
|
||||||
}
|
}
|
||||||
|
|
||||||
try(OutputStream outputStream = response.getOutputStream()) {
|
try (OutputStream outputStream = response.getOutputStream()) {
|
||||||
// 用个List<Map>装表格的所有内容
|
// 用个List<Map>装表格的所有内容
|
||||||
// 拼接上列明。我这里用的最土的方法,很不优雅别学我
|
// 拼接上列明。我这里用的最土的方法,很不优雅别学我
|
||||||
LinkedHashMap<String,String> map = new LinkedHashMap<>();
|
LinkedHashMap<String, String> map = new LinkedHashMap<>();
|
||||||
map.put("案例名称","caseTitle");
|
map.put("案例名称", "caseTitle");
|
||||||
map.put("推送用户","pushUserName");
|
map.put("推送用户", "pushUserName");
|
||||||
map.put("所属组织","recommendOrgName");
|
map.put("所属组织", "recommendOrgName");
|
||||||
map.put("推送时间","pushTime");
|
map.put("推送时间", "pushTime");
|
||||||
map.put("是否查看","readFlag");
|
map.put("是否查看", "readFlag");
|
||||||
map.put("首次查看时间","readStartTime");
|
map.put("首次查看时间", "readStartTime");
|
||||||
map.put("总查看时间","totalReadTime");
|
map.put("总查看时间", "totalReadTime");
|
||||||
|
|
||||||
CasesRecommend casesRecommend = iCasesRecommendService.findById(vo.getCasesRecommendId());
|
CasesRecommend casesRecommend = iCasesRecommendService.findById(vo.getCasesRecommendId());
|
||||||
|
|
||||||
@@ -212,7 +232,7 @@ public class CasesRecommendApi extends ApiBaseController {
|
|||||||
exportVo.setPushTime(DateUtil.formatDateTime(record.getPushTime()));
|
exportVo.setPushTime(DateUtil.formatDateTime(record.getPushTime()));
|
||||||
exportVo.setReadFlag(record.getReadFlag() == 1 ? "是" : "否");
|
exportVo.setReadFlag(record.getReadFlag() == 1 ? "是" : "否");
|
||||||
exportVo.setReadStartTime(DateUtil.formatDateTime(record.getReadStartTime()));
|
exportVo.setReadStartTime(DateUtil.formatDateTime(record.getReadStartTime()));
|
||||||
if (ObjectUtil.isNotEmpty(record.getReadStartTime()) && ObjectUtil.isNotEmpty(record.getReadEndTime())){
|
if (ObjectUtil.isNotEmpty(record.getReadStartTime()) && ObjectUtil.isNotEmpty(record.getReadEndTime())) {
|
||||||
exportVo.setTotalReadTime(DateUtil.formatBetween(record.getReadStartTime(), record.getReadEndTime()));
|
exportVo.setTotalReadTime(DateUtil.formatBetween(record.getReadStartTime(), record.getReadEndTime()));
|
||||||
}
|
}
|
||||||
return exportVo;
|
return exportVo;
|
||||||
@@ -221,10 +241,10 @@ public class CasesRecommendApi extends ApiBaseController {
|
|||||||
|
|
||||||
response.setContentType("application/octet-stream");
|
response.setContentType("application/octet-stream");
|
||||||
response.setHeader("Content-disposition", "attachment;filename=casesRecommend.xls");
|
response.setHeader("Content-disposition", "attachment;filename=casesRecommend.xls");
|
||||||
ExportsExcelSenderUtil.export(map, exportVos, outputStream,"yyyy-MM-dd HH:mm:ss");
|
ExportsExcelSenderUtil.export(map, exportVos, outputStream, "yyyy-MM-dd HH:mm:ss");
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
log.error("导出失败",e.getMessage());
|
log.error("导出失败", e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
package com.xboe.module.boecase.service.impl;
|
package com.xboe.module.boecase.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.xboe.core.CurrentUser;
|
import com.xboe.core.CurrentUser;
|
||||||
|
import com.xboe.core.event.IEventDataSender;
|
||||||
import com.xboe.core.orm.FieldFilters;
|
import com.xboe.core.orm.FieldFilters;
|
||||||
|
import com.xboe.core.orm.UpdateBuilder;
|
||||||
import com.xboe.data.outside.IOutSideDataService;
|
import com.xboe.data.outside.IOutSideDataService;
|
||||||
import com.xboe.enums.CasesPushStatusEnum;
|
import com.xboe.enums.CasesPushStatusEnum;
|
||||||
import com.xboe.module.boecase.dao.CasesDao;
|
import com.xboe.module.boecase.dao.CasesDao;
|
||||||
@@ -16,19 +19,24 @@ 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 lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Transactional
|
@Transactional
|
||||||
|
@Slf4j
|
||||||
public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushRecordService {
|
public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushRecordService {
|
||||||
|
|
||||||
|
|
||||||
@@ -50,6 +58,10 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR
|
|||||||
@Resource
|
@Resource
|
||||||
private CasesRecommendPushRecordDao casesRecommendPushRecordDao;
|
private CasesRecommendPushRecordDao casesRecommendPushRecordDao;
|
||||||
|
|
||||||
|
|
||||||
|
@Autowired(required = false)
|
||||||
|
private IEventDataSender eventDataSender;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser) {
|
public boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser) {
|
||||||
|
|
||||||
@@ -63,6 +75,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR
|
|||||||
casesRecommend.setRecommendOrgName(casesRecommendLaunch.getRecommendOrgName());
|
casesRecommend.setRecommendOrgName(casesRecommendLaunch.getRecommendOrgName());
|
||||||
casesRecommend.setPushProgress(CasesPushStatusEnum.WAIT_PUSH.getStatus());
|
casesRecommend.setPushProgress(CasesPushStatusEnum.WAIT_PUSH.getStatus());
|
||||||
casesRecommendDao.save(casesRecommend);
|
casesRecommendDao.save(casesRecommend);
|
||||||
|
log.info("案例推送对象 {}", JSONUtil.toJsonStr(casesRecommend));
|
||||||
|
|
||||||
List<String> caseIds = new ArrayList<>();
|
List<String> caseIds = new ArrayList<>();
|
||||||
if (casesRecommendLaunch.getLaunchType() == 1) {
|
if (casesRecommendLaunch.getLaunchType() == 1) {
|
||||||
@@ -93,10 +106,59 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR
|
|||||||
casesRecommendPushRecordDao.saveList(pushRecords);
|
casesRecommendPushRecordDao.saveList(pushRecords);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
//发送推送案例消息
|
||||||
|
sendCasesRecommend(casesRecommend);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("推送失败", e);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改轧辊天
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @param pushProgress
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private boolean updateProcessStatus(String id, Integer pushProgress) {
|
||||||
|
return casesRecommendDao.updateMultiFieldById(id, UpdateBuilder.create("pushProgress", pushProgress)) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendCasesRecommend(CasesRecommend casesRecommend) {
|
||||||
|
List<Integer> pushStatusList = new ArrayList<>();
|
||||||
|
pushStatusList.add(CasesPushStatusEnum.WAIT_PUSH.getStatus());
|
||||||
|
List<CasesRecommendPushRecord> casesRecommendPushRecords = casesRecommendPushRecordDao.getGenericDao().findList(CasesRecommendPushRecord.class, FieldFilters.in("pushStatus", pushStatusList));
|
||||||
|
if (CollectionUtils.isEmpty(casesRecommendPushRecords)) {
|
||||||
|
//修改为推送完成 --- 无数据 无需推送
|
||||||
|
updateProcessStatus(casesRecommend.getId(), CasesPushStatusEnum.PUSH_SUCCESS.getStatus());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//修改为推送中
|
||||||
|
updateProcessStatus(casesRecommend.getId(), CasesPushStatusEnum.PUSH_ING.getStatus());
|
||||||
|
|
||||||
|
for (CasesRecommendPushRecord casesRecommendPushRecord : casesRecommendPushRecords) {
|
||||||
|
|
||||||
|
Integer pushStatus;
|
||||||
|
try {
|
||||||
|
|
||||||
|
eventDataSender.send("案例推荐", "recommendCases", "案例推荐【" + casesRecommendPushRecord.getCaseTitle() + "】",
|
||||||
|
casesRecommendPushRecord.getCaseId(), "99", casesRecommendPushRecord.getCaseTitle(),
|
||||||
|
casesRecommendPushRecord.getSysCreateAid(), casesRecommendPushRecord.getSysCreateBy(), "");
|
||||||
|
|
||||||
|
pushStatus = CasesPushStatusEnum.PUSH_SUCCESS.getStatus();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("推荐案例失败", e);
|
||||||
|
pushStatus = CasesPushStatusEnum.PUSH_FAIL.getStatus();
|
||||||
|
}
|
||||||
|
casesRecommendPushRecordDao.updateMultiFieldById(casesRecommendPushRecord.getId(), UpdateBuilder.create("pushStatus", pushStatus), UpdateBuilder.create("pushTime", new Date()));
|
||||||
|
}
|
||||||
|
//修改为推送完成 --- 无数据 无需推送
|
||||||
|
updateProcessStatus(casesRecommend.getId(), CasesPushStatusEnum.PUSH_SUCCESS.getStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<CasesRecommendPushRecord> findAllByRecommendId(String recommendId) {
|
public List<CasesRecommendPushRecord> findAllByRecommendId(String recommendId) {
|
||||||
CasesRecommendPushRecord ex = new CasesRecommendPushRecord();
|
CasesRecommendPushRecord ex = new CasesRecommendPushRecord();
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<!--应用名称-->
|
<!--应用名称-->
|
||||||
<property name="APP_NAME" value="boe-server-all"/>
|
<property name="APP_NAME" value="boe-server-all"/>
|
||||||
<!--日志文件保存路径-->
|
<!--日志文件保存路径-->
|
||||||
<property name="LOG_FILE_PATH" value="~/app/logs/"/>
|
<property name="LOG_FILE_PATH" value="/app/logs/"/>
|
||||||
<contextName>${APP_NAME}</contextName>
|
<contextName>${APP_NAME}</contextName>
|
||||||
<!--每天记录日志到文件appender-->
|
<!--每天记录日志到文件appender-->
|
||||||
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@@ -42,7 +41,7 @@ public class CasesRecommendPushSchedule {
|
|||||||
/**
|
/**
|
||||||
* 每分钟执行一次
|
* 每分钟执行一次
|
||||||
*/
|
*/
|
||||||
@Scheduled(cron = "0 */1 * * * ?")
|
// @Scheduled(cron = "0 */1 * * * ?")
|
||||||
public void execute() {
|
public void execute() {
|
||||||
log.info("启动案例推荐定时任务");
|
log.info("启动案例推荐定时任务");
|
||||||
List<CasesRecommend> casesRecommends = casesRecommendService.queryByPushProgress(CasesPushStatusEnum.WAIT_PUSH.getStatus());
|
List<CasesRecommend> casesRecommends = casesRecommendService.queryByPushProgress(CasesPushStatusEnum.WAIT_PUSH.getStatus());
|
||||||
|
|||||||
Reference in New Issue
Block a user