Переглянути джерело

feat: 结算审批-待审核报告导出-word

李学松 2 роки тому
батько
коміт
4db1e5ffcc

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

@@ -178,6 +178,90 @@ public class ReportExportController {
 	//
 	// }
 
+	/**
+	 * 结算报告管理--导出汇总或详情
+	 * @param wmReport
+	 * @return
+	 * @throws IOException
+	 */
+	@GetMapping("/exportNbReviewReport")
+	public R exportNbReviewReport(WmReport wmReport) {
+
+
+		String key = String.format(CacheConstants.EXPORT_NB_REVIEW_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());
+		map.put("approvalOpinion", null);
+
+		rabbitMqClient.sendMessage(MqConstants.DIRECT_MODE_REPORT_EXPORT_NB_REVIEW_QUEUE,map);
+
+		redisTemplate.opsForValue().set(key, WmReportOpt.WmReportOptStatus.GENERATING.name(),
+				CacheConstants.DEF_REPORT_CREATING_TTL, TimeUnit.MILLISECONDS);
+
+		return R.ok("开始导出,请耐心等待");
+
+
+	}
+
+	/**
+	 * 结算报告管理--导出汇总或详情
+	 *
+	 * @param wmReport
+	 * @return
+	 * @throws IOException
+	 */
+	@GetMapping("/exportNbReviewReport/status")
+	public R exportNbReviewReportStatus(WmReport wmReport) {
+
+		String key = String.format(CacheConstants.EXPORT_NB_REVIEW_REPORT_CACHE, wmReport.getId());
+
+		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 wmReport