Browse Source

Merge branch 'feat-20221128-exportexcel'

李学松 2 years ago
parent
commit
08642bf78a

+ 8 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/constant/CacheConstants.java

@@ -82,6 +82,14 @@ public interface CacheConstants {
 	String EXPORT_NBA_HISTORY_REPORT_CACHE = "export:nba_history_report:%s";
 	String EXPORT_NB_REPORT_CACHE = "export:nb_report:%s";
 
+	/**
+	 * excel报告导出缓存
+	 */
+	String EXCEL_EXPORT_ZB_REPORT_CACHE = "excel_export:zb_report:%s";
+	String EXCEL_EXPORT_NBA_REPORT_CACHE = "excel_export:nba_report:%s";
+	String EXCEL_EXPORT_NBA_HISTORY_REPORT_CACHE = "excel_export:nba_history_report:%s";
+	String EXCEL_EXPORT_NB_REPORT_CACHE = "excel_export:nb_report:%s";
+
 
 	Long DEF_REPORT_CREATING_TTL = 24L * 60 * 60 * 1000;
 

+ 6 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/constant/MqConstants.java

@@ -19,6 +19,12 @@ public interface MqConstants {
 	String DIRECT_MODE_REPORT_EXPORT_NBA_HISTORY_QUEUE = "direct_mode_report_export_nba_history_queue";
 	String DIRECT_MODE_REPORT_EXPORT_NB_QUEUE = "direct_mode_report_export_nb_queue";
 
+	// excel报告导出队列
+	String DIRECT_MODE_EXCEL_REPORT_EXPORT_ZB_QUEUE = "direct_mode_excel_report_export_zb_queue";
+	String DIRECT_MODE_EXCEL_REPORT_EXPORT_NBA_QUEUE = "direct_mode_excel_report_export_nba_queue";
+	String DIRECT_MODE_EXCEL_REPORT_EXPORT_NBA_HISTORY_QUEUE = "direct_mode_excel_report_export_nba_history_queue";
+	String DIRECT_MODE_EXCEL_REPORT_EXPORT_NB_QUEUE = "direct_mode_excel_report_export_nb_queue";
+
 	/**
 	 * gig服务队列
 	 */

+ 279 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ExcelReportExportController.java

@@ -0,0 +1,279 @@
+package com.qunzhixinxi.hnqz.admin.controller;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.csp.sentinel.util.StringUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qunzhixinxi.hnqz.admin.api.constant.CacheConstants;
+import com.qunzhixinxi.hnqz.admin.api.constant.MqConstants;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmReportOpt;
+import com.qunzhixinxi.hnqz.admin.config.UpmsConfig;
+import com.qunzhixinxi.hnqz.admin.entity.WmReport;
+import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
+import com.qunzhixinxi.hnqz.admin.entity.WmTask;
+import com.qunzhixinxi.hnqz.admin.entity.input.WmPackageExportApiInput;
+import com.qunzhixinxi.hnqz.admin.service.ReportExportService;
+import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
+import com.qunzhixinxi.hnqz.admin.service.WmReportService;
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
+import com.qunzhixinxi.hnqz.common.core.entity.BaseMap;
+import com.qunzhixinxi.hnqz.common.core.util.R;
+import com.qunzhixinxi.hnqz.common.rabbitmq.client.RabbitMqClient;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.mail.javamail.MimeMessageHelper;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * excel报告导出
+ * </p>
+ *
+ */
+@Slf4j
+@RestController
+@AllArgsConstructor
+@RequestMapping("/report/excel/export")
+@Api(value = "excelReportExport", tags = "导出管理模块")
+public class ExcelReportExportController {
+
+	private final RedisTemplate<String,String> redisTemplate;
+	private final RabbitMqClient rabbitMqClient;
+
+	/**
+	 * 结算报告管理--导出汇总或详情
+	 * @param wmReport
+	 * @return
+	 * @throws IOException
+	 */
+	@GetMapping("/exportNbReport")
+	public R exportNbReport(WmReport wmReport ) throws IOException {
+
+
+		String key = String.format(CacheConstants.EXCEL_EXPORT_NB_REPORT_CACHE, wmReport.getId());
+
+		String o = redisTemplate.opsForValue().get(key);
+
+		if (StringUtils.isNotEmpty(o) && WmReportOpt.WmReportOptStatus.GENERATING.name().equals(o)){
+
+			return R.failed("已有在途生成记录,能耐心等待");
+
+		}
+
+
+		HnqzUser user = SecurityUtils.getUser();
+		BaseMap map = new BaseMap();
+		map.put("requestBody", JSONUtil.toJsonStr(wmReport));
+		map.put("username",user.getUsername());
+		map.put("deptId",user.getDeptId());
+
+		rabbitMqClient.sendMessage(MqConstants.DIRECT_MODE_REPORT_EXPORT_NB_QUEUE,map);
+
+		redisTemplate.opsForValue().set(key, WmReportOpt.WmReportOptStatus.GENERATING.name(),
+				CacheConstants.DEF_REPORT_CREATING_TTL, TimeUnit.MILLISECONDS);
+
+		return R.ok("开始导出,请耐心等待");
+
+
+	}
+
+	/**
+	 * 个人报告导出状态
+	 *
+	 * @param wmTask
+	 * @return
+	 * @throws IOException
+	 */
+	@GetMapping("/exportZbReport/status")
+	public R exportZbReportStatus(WmTask wmTask) throws IOException {
+
+		String scorePackageDrugId = wmTask.getScorePackageDrugId();
+
+		// 判断是否是合并导出
+		if (scorePackageDrugId.contains(StrUtil.COMMA)) {
+			String[] idArr = scorePackageDrugId.split(StrUtil.COMMA);
+			scorePackageDrugId = Arrays.stream(idArr).sorted().collect(Collectors.joining(StrUtil.COMMA));
+			wmTask.setScorePackageDrugId(scorePackageDrugId);
+
+		}
+
+		String key = String.format(CacheConstants.EXCEL_EXPORT_ZB_REPORT_CACHE, wmTask.getScorePackageDrugId());
+
+		String o = redisTemplate.opsForValue().get(key);
+		WmReportOpt opt = new WmReportOpt();
+
+		if (StringUtils.isNotEmpty(o)) {
+			// 生成中的
+			if ("GENERATING".equals(o)) {
+				opt.setStatus(WmReportOpt.WmReportOptStatus.GENERATING);
+			}
+			// 生成失败的
+			else if (o.startsWith("ERROR")) {
+				opt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
+				opt.setErrorMsg(o.split(StrUtil.UNDERLINE)[1]);
+			}
+			// 生成失败的2
+			else if (!o.startsWith("http")) {
+				opt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
+				opt.setErrorMsg(o);
+			}
+			// 成功的
+			else {
+				Long expire = redisTemplate.opsForValue().getOperations().getExpire(key, TimeUnit.SECONDS);
+				opt.setStatus(WmReportOpt.WmReportOptStatus.GENERATED);
+				opt.setTtl(LocalDateTime.now().plusSeconds(expire));
+				opt.setLatestUrl(o);
+			}
+
+		} else {
+			opt.setStatus(WmReportOpt.WmReportOptStatus.NOT_GENERATE);
+		}
+
+		return R.ok(opt);
+
+	}
+
+	/**
+	 * 个人报告导出--导出汇总或详情  汇总和详情合为一个模版
+	 * @param wmTask
+	 * @return
+	 * @throws IOException
+	 */
+	@GetMapping("/exportZbReport")
+	public R exportZbReport(WmTask wmTask) throws IOException {
+
+		String scorePackageDrugId = wmTask.getScorePackageDrugId();
+
+		// 判断是否是合并导出
+		if (scorePackageDrugId.contains(StrUtil.COMMA)){
+			String[] idArr = scorePackageDrugId.split(StrUtil.COMMA);
+			scorePackageDrugId = Arrays.stream(idArr).sorted().collect(Collectors.joining(StrUtil.COMMA));
+			wmTask.setScorePackageDrugId(scorePackageDrugId);
+
+		}
+
+		String key = String.format(CacheConstants.EXCEL_EXPORT_ZB_REPORT_CACHE, wmTask.getScorePackageDrugId());
+
+		String o = redisTemplate.opsForValue().get(key);
+
+		if (StringUtils.isNotEmpty(o) && WmReportOpt.WmReportOptStatus.GENERATING.name().equals(o)){
+
+			return R.failed("已有在途生成记录,能耐心等待");
+
+		}
+
+
+		HnqzUser user = SecurityUtils.getUser();
+		BaseMap map = new BaseMap();
+		map.put("requestBody", JSONUtil.toJsonStr(wmTask));
+		map.put("username",user.getUsername());
+		map.put("deptId",user.getDeptId());
+
+//		SysDept dept = sysDeptService.getById(user.getDeptId());
+//		map.put("isGuangshengtang", "913500007297027606".equals(dept.getTaxCode()));
+
+		rabbitMqClient.sendMessage(MqConstants.DIRECT_MODE_EXCEL_REPORT_EXPORT_ZB_QUEUE,map);
+
+		redisTemplate.opsForValue().set(key, WmReportOpt.WmReportOptStatus.GENERATING.name(),
+				CacheConstants.DEF_REPORT_CREATING_TTL, TimeUnit.MILLISECONDS);
+
+		return R.ok("开始导出,请耐心等待");
+
+	}
+
+	/**
+	 * 任务中心--导出汇总或详情
+	 *
+	 * @param wmScorePackage
+	 * @return
+	 * @throws IOException
+	 */
+	@GetMapping("/exportNba")
+	public R<?> exportNba(WmScorePackage wmScorePackage) throws IOException {
+
+		String key = String.format(CacheConstants.EXCEL_EXPORT_NBA_REPORT_CACHE,wmScorePackage.getId());
+
+		String o = redisTemplate.opsForValue().get(key);
+
+		if (StringUtils.isNotEmpty(o) && WmReportOpt.WmReportOptStatus.GENERATING.name().equals(o)){
+
+			return R.failed("已有在途生成记录,能耐心等待");
+
+		}
+
+
+		HnqzUser user = SecurityUtils.getUser();
+		BaseMap map = new BaseMap();
+		map.put("requestBody",JSONUtil.toJsonStr(wmScorePackage));
+		map.put("username",user.getUsername());
+		map.put("deptId",user.getDeptId());
+
+		rabbitMqClient.sendMessage(MqConstants.DIRECT_MODE_EXCEL_REPORT_EXPORT_NBA_QUEUE,map);
+
+		redisTemplate.opsForValue().set(key, WmReportOpt.WmReportOptStatus.GENERATING.name(),
+				CacheConstants.DEF_REPORT_CREATING_TTL , TimeUnit.MILLISECONDS);
+
+		return R.ok("开始导出,请耐心等待");
+	}
+
+	/**
+	 * 历史数据导出报告
+	 *
+	 * @param wmScorePackage
+	 * @return
+	 * @throws IOException
+	 */
+	@GetMapping("/exportNbaHistory")
+	public R exportNbaHistory(WmScorePackage wmScorePackage) throws IOException {
+
+
+		String key = String.format(CacheConstants.EXCEL_EXPORT_NBA_HISTORY_REPORT_CACHE,wmScorePackage.getId());
+
+		String o = redisTemplate.opsForValue().get(key);
+
+		if (StringUtils.isNotEmpty(o) && WmReportOpt.WmReportOptStatus.GENERATING.name().equals(o)){
+
+			return R.failed("已有在途生成记录,能耐心等待");
+
+		}
+
+
+		HnqzUser user = SecurityUtils.getUser();
+		BaseMap map = new BaseMap();
+		map.put("requestBody",JSONUtil.toJsonStr(wmScorePackage));
+		map.put("username",user.getUsername());
+		map.put("deptId",user.getDeptId());
+
+		rabbitMqClient.sendMessage(MqConstants.DIRECT_MODE_EXCEL_REPORT_EXPORT_NBA_HISTORY_QUEUE,map);
+
+		redisTemplate.opsForValue().set(key, WmReportOpt.WmReportOptStatus.GENERATING.name(),
+				CacheConstants.DEF_REPORT_CREATING_TTL,TimeUnit.MILLISECONDS);
+
+		return R.ok("开始导出,请耐心等待");
+
+	}
+
+
+}

+ 5 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ReportExportController.java

@@ -283,6 +283,11 @@ public class ReportExportController {
 				opt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
 				opt.setErrorMsg(o.split(StrUtil.UNDERLINE)[1]);
 			}
+			// 生成失败的2
+			else if (!o.startsWith("http")) {
+				opt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
+				opt.setErrorMsg(o);
+			}
 			// 成功的
 			else {
 				Long expire = redisTemplate.opsForValue().getOperations().getExpire(key, TimeUnit.SECONDS);

+ 4 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageController.java

@@ -373,6 +373,8 @@ public class WmScorePackageController {
 			// 封装报告记录
 			wmS.setReportMqName(CacheConstants.EXPORT_NBA_HISTORY_REPORT_CACHE);
 			wmScorePackageService.getReportOpt(wmS);
+			// 封装excel报告状态
+			wmScorePackageService.getExcelReportOpt(wmS, CacheConstants.EXCEL_EXPORT_NBA_HISTORY_REPORT_CACHE);
 
 		}
 		pageAnswer.setRecords(list);
@@ -702,6 +704,8 @@ public class WmScorePackageController {
 			// 封装导出结果
 			ext.setReportMqName(CacheConstants.EXPORT_NBA_REPORT_CACHE);
 			wmScorePackageService.getReportOpt(ext);
+			// 封装excel报告状态
+			wmScorePackageService.getExcelReportOpt(ext, CacheConstants.EXCEL_EXPORT_NBA_REPORT_CACHE);
 		}
 
 		page1.getRecords().forEach(r -> {

+ 6 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmReport.java

@@ -155,4 +155,10 @@ public class WmReport extends Model<WmReport> {
 	 */
 	@TableField(exist = false)
 	private WmReportOpt reportOpt;
+
+	/**
+	 * excel报告操作状态
+	 */
+	@TableField(exist = false)
+	private WmReportOpt excelReportOpt;
 }

+ 6 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmScorePackage.java

@@ -519,6 +519,12 @@ public class WmScorePackage extends Model<WmScorePackage> {
 	@TableField(exist = false)
 	private String reportMqName;
 
+	/**
+	 * excel报告操作状态
+	 */
+	@TableField(exist = false)
+	private WmReportOpt excelReportOpt;
+
 	/**
 	 * 公对公结算记录
 	 */

+ 8 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageService.java

@@ -173,6 +173,14 @@ public interface WmScorePackageService extends IService<WmScorePackage> {
 
 	void getReportOpt(WmScorePackage wmScorePackage);
 
+	/**
+	 * 查询excel报告导出状态
+	 *
+	 * @param wmScorePackage
+	 * @param excelReportCacheKey
+	 */
+	void getExcelReportOpt(WmScorePackage wmScorePackage, String excelReportCacheKey);
+
 	/**
 	 * 校验积分包是否可以结算
 	 * @param pkg 基本包

+ 45 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmReportServiceImpl.java

@@ -117,6 +117,7 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
 
 		for (WmReport report : records){
 
+			// word报告状态
 			WmReportOpt opt = new WmReportOpt();
 
 			// 获取生成记录
@@ -134,6 +135,11 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
 					opt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
 					opt.setErrorMsg(o.split(StrUtil.UNDERLINE)[1]);
 				}
+				// 生成失败的2
+				else if (!o.startsWith("http")) {
+					opt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
+					opt.setErrorMsg(o);
+				}
 				// 成功的
 				else {
 					Long expire = redisTemplate.opsForValue().getOperations().getExpire(key, TimeUnit.SECONDS);
@@ -149,6 +155,45 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
 			}
 			report.setReportOpt(opt);
 
+
+			// excel报告状态
+			WmReportOpt excelPpt = new WmReportOpt();
+
+			// 获取生成记录
+			String excelKey = String.format(CacheConstants.EXCEL_EXPORT_NB_REPORT_CACHE, report.getId());
+			String excelO = redisTemplate.opsForValue().get(excelKey);
+
+			if (StrUtil.isNotEmpty(excelO)) {
+
+				// 生成中的
+				if ("GENERATING".equals(excelO)) {
+					excelPpt.setStatus(WmReportOpt.WmReportOptStatus.GENERATING);
+				}
+				// 生成失败的
+				else if (excelO.startsWith("ERROR")) {
+					excelPpt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
+					excelPpt.setErrorMsg(excelO.split(StrUtil.UNDERLINE)[1]);
+				}
+				// 生成失败的2
+				else if (!excelO.startsWith("http")) {
+					excelPpt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
+					excelPpt.setErrorMsg(excelO);
+				}
+				// 成功的
+				else {
+					Long expire = redisTemplate.opsForValue().getOperations().getExpire(excelKey, TimeUnit.SECONDS);
+					excelPpt.setStatus(WmReportOpt.WmReportOptStatus.GENERATED);
+					excelPpt.setTtl(LocalDateTime.now().plusSeconds(expire));
+					// o = "https://pre.yaoyi.net/admin/sys-file/wmkj/兼职学术信息沟通专员业绩报告(2249)-20211116191527.doc";
+					excelPpt.setLatestUrl(excelO);
+				}
+
+
+			} else {
+				excelPpt.setStatus(WmReportOpt.WmReportOptStatus.NOT_GENERATE);
+			}
+			report.setExcelReportOpt(excelPpt);
+
 		}
 
 		return reportListPage;

+ 64 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageServiceImpl.java

@@ -279,6 +279,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
 			scorePackage.setReportMqName(CacheConstants.EXPORT_ZB_REPORT_CACHE);
 			this.getReportOpt(scorePackage);
+			// 封装excel报告状态
+			this.getExcelReportOpt(scorePackage, CacheConstants.EXCEL_EXPORT_ZB_REPORT_CACHE);
+
 		}
 
 
@@ -2160,6 +2163,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 		scorePackage.setReportMqName(CacheConstants.EXPORT_ZB_REPORT_CACHE);
 		getReportOpt(scorePackage);
 
+		// 封装excel报告状态
+		this.getExcelReportOpt(scorePackage, CacheConstants.EXCEL_EXPORT_ZB_REPORT_CACHE);
+
 		// 接单对象范围名称
 		if (StrUtil.isNotBlank(scorePackage.getPackageUserScope())) {
 			String packageUserScopeName = wmTeamService.getPackageUserScopeName(scorePackage.getPackageUserScope());
@@ -2321,6 +2327,10 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 		// 封装报告状态
 		wmScorePackage.setReportMqName(CacheConstants.EXPORT_NBA_REPORT_CACHE);
 		getReportOpt(wmScorePackage);
+
+		// 封装excel报告状态
+		this.getExcelReportOpt(wmScorePackage, CacheConstants.EXCEL_EXPORT_NBA_REPORT_CACHE);
+
 		return wmScorePackage;
 	}
 
@@ -2350,6 +2360,11 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 				opt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
 				opt.setErrorMsg(o.split(StrUtil.UNDERLINE)[1]);
 			}
+			// 生成失败的2
+			else if (!o.startsWith("http")) {
+				opt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
+				opt.setErrorMsg(o);
+			}
 			// 成功的
 			else {
 				Long expire = redisTemplate.opsForValue().getOperations().getExpire(key, TimeUnit.SECONDS);
@@ -2368,6 +2383,55 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
 	}
 
+	/**
+	 * 查询excel报告导出状态
+	 *
+	 * @param wmScorePackage 列表
+	 * @param excelReportCacheKey 缓存key
+	 */
+	@Override
+	public void getExcelReportOpt(WmScorePackage wmScorePackage, String excelReportCacheKey) {
+
+		WmReportOpt opt = new WmReportOpt();
+
+		// 获取生成记录
+		String key = String.format(excelReportCacheKey, wmScorePackage.getId());
+		String o = redisTemplate.opsForValue().get(key);
+
+		if (StrUtil.isNotEmpty(o)) {
+
+			// 生成中的
+			if ("GENERATING".equals(o)) {
+				opt.setStatus(WmReportOpt.WmReportOptStatus.GENERATING);
+			}
+			// 生成失败的
+			else if (o.startsWith("ERROR")) {
+				opt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
+				opt.setErrorMsg(o.split(StrUtil.UNDERLINE)[1]);
+			}
+			// 生成失败的2
+			else if (!o.startsWith("http")) {
+				opt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
+				opt.setErrorMsg(o);
+			}
+			// 成功的
+			else {
+				Long expire = redisTemplate.opsForValue().getOperations().getExpire(key, TimeUnit.SECONDS);
+				opt.setStatus(WmReportOpt.WmReportOptStatus.GENERATED);
+				opt.setTtl(LocalDateTime.now().plusSeconds(expire));
+				// o = "https://pre.yaoyi.net/admin/sys-file/wmkj/兼职学术信息沟通专员业绩报告(2249)-20211116191527.doc";
+				opt.setLatestUrl(o);
+			}
+
+		} else {
+			opt.setStatus(WmReportOpt.WmReportOptStatus.NOT_GENERATE);
+		}
+
+
+		wmScorePackage.setExcelReportOpt(opt);
+
+	}
+
 	/**
 	 * 校验积分包是否可以结算
 	 *