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..1ff22dae 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 @@ -2,7 +2,9 @@ package com.xboe.module.boecase.service.impl; import cn.hutool.core.collection.CollectionUtil; 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 +18,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 +57,10 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR @Resource private CasesRecommendPushRecordDao casesRecommendPushRecordDao; + + @Autowired(required = false) + private IEventDataSender eventDataSender; + @Override public boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser) { @@ -93,10 +104,55 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR casesRecommendPushRecordDao.saveList(pushRecords); } } - + //发送推送案例消息 + sendCasesRecommend(casesRecommend); 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();