diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java index 3f15911e..14caf745 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java @@ -37,7 +37,6 @@ import java.io.OutputStream; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; 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("缺少必要参数"); } - try(OutputStream outputStream = response.getOutputStream()) { + try (OutputStream outputStream = response.getOutputStream()) { // 用个List装表格的所有内容 // 拼接上列明。我这里用的最土的方法,很不优雅别学我 - LinkedHashMap map = new LinkedHashMap<>(); - map.put("案例名称","caseTitle"); - map.put("推送用户","pushUserName"); - map.put("所属组织","recommendOrgName"); - map.put("推送时间","pushTime"); - map.put("是否查看","readFlag"); - map.put("首次查看时间","readStartTime"); - map.put("总查看时间","totalReadTime"); + LinkedHashMap map = new LinkedHashMap<>(); + map.put("案例名称", "caseTitle"); + map.put("推送用户", "pushUserName"); + map.put("所属组织", "recommendOrgName"); + map.put("推送时间", "pushTime"); + map.put("是否查看", "readFlag"); + map.put("首次查看时间", "readStartTime"); + map.put("总查看时间", "totalReadTime"); CasesRecommend casesRecommend = iCasesRecommendService.findById(vo.getCasesRecommendId()); @@ -212,7 +232,7 @@ public class CasesRecommendApi extends ApiBaseController { exportVo.setPushTime(DateUtil.formatDateTime(record.getPushTime())); exportVo.setReadFlag(record.getReadFlag() == 1 ? "是" : "否"); 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())); } return exportVo; @@ -221,10 +241,10 @@ public class CasesRecommendApi extends ApiBaseController { response.setContentType("application/octet-stream"); response.setHeader("Content-disposition", "attachment;filename=casesRecommend.xls"); - ExportsExcelSenderUtil.export(map, exportVos, outputStream,"yyyy-MM-dd HH:mm:ss"); - }catch (Exception e){ + ExportsExcelSenderUtil.export(map, exportVos, outputStream, "yyyy-MM-dd HH:mm:ss"); + } catch (Exception e) { e.printStackTrace(); - log.error("导出失败",e.getMessage()); + log.error("导出失败", e.getMessage()); } } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java index c8ab2105..01d070a7 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java @@ -1,8 +1,11 @@ package com.xboe.module.boecase.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.json.JSONUtil; import com.xboe.core.CurrentUser; +import com.xboe.core.event.IEventDataSender; import com.xboe.core.orm.FieldFilters; +import com.xboe.core.orm.UpdateBuilder; import com.xboe.data.outside.IOutSideDataService; import com.xboe.enums.CasesPushStatusEnum; 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.vo.CasesRecommendLaunchVo; 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.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service @Transactional +@Slf4j public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushRecordService { @@ -50,6 +58,10 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR @Resource private CasesRecommendPushRecordDao casesRecommendPushRecordDao; + + @Autowired(required = false) + private IEventDataSender eventDataSender; + @Override public boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser) { @@ -63,6 +75,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR casesRecommend.setRecommendOrgName(casesRecommendLaunch.getRecommendOrgName()); casesRecommend.setPushProgress(CasesPushStatusEnum.WAIT_PUSH.getStatus()); casesRecommendDao.save(casesRecommend); + log.info("案例推送对象 {}", JSONUtil.toJsonStr(casesRecommend)); List caseIds = new ArrayList<>(); if (casesRecommendLaunch.getLaunchType() == 1) { @@ -93,10 +106,59 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR casesRecommendPushRecordDao.saveList(pushRecords); } } - + try { + //发送推送案例消息 + sendCasesRecommend(casesRecommend); + } catch (Exception e) { + log.error("推送失败", e); + } 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 pushStatusList = new ArrayList<>(); + pushStatusList.add(CasesPushStatusEnum.WAIT_PUSH.getStatus()); + List 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 public List findAllByRecommendId(String recommendId) { CasesRecommendPushRecord ex = new CasesRecommendPushRecord(); diff --git a/servers/boe-server-all/src/main/resources/log/logback-dev.xml b/servers/boe-server-all/src/main/resources/log/logback-dev.xml index 1c041e11..97f328fc 100644 --- a/servers/boe-server-all/src/main/resources/log/logback-dev.xml +++ b/servers/boe-server-all/src/main/resources/log/logback-dev.xml @@ -6,7 +6,7 @@ - + ${APP_NAME} diff --git a/servers/boe-server-task/src/main/java/com/xboe/task/CasesRecommendPushSchedule.java b/servers/boe-server-task/src/main/java/com/xboe/task/CasesRecommendPushSchedule.java index 1d5e660e..ef673122 100644 --- a/servers/boe-server-task/src/main/java/com/xboe/task/CasesRecommendPushSchedule.java +++ b/servers/boe-server-task/src/main/java/com/xboe/task/CasesRecommendPushSchedule.java @@ -10,7 +10,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -42,7 +41,7 @@ public class CasesRecommendPushSchedule { /** * 每分钟执行一次 */ - @Scheduled(cron = "0 */1 * * * ?") +// @Scheduled(cron = "0 */1 * * * ?") public void execute() { log.info("启动案例推荐定时任务"); List casesRecommends = casesRecommendService.queryByPushProgress(CasesPushStatusEnum.WAIT_PUSH.getStatus());