Ver código fonte

feat: exportzb to mq

shc 3 anos atrás
pai
commit
99fa19a4c4

+ 72 - 24
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ReportExportController.java

@@ -19,11 +19,15 @@
 
 package com.qunzhixinxi.hnqz.admin.controller;
 
+import cn.hutool.json.JSONUtil;
 import com.alibaba.csp.sentinel.util.StringUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 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;
@@ -31,11 +35,17 @@ import com.qunzhixinxi.hnqz.admin.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.entity.input.WmPackageExportApiInput;
 import com.qunzhixinxi.hnqz.admin.enums.ReportEnum;
 import com.qunzhixinxi.hnqz.admin.service.*;
+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;
@@ -77,6 +87,8 @@ public class ReportExportController {
 	private final JavaMailSender sender;
 
 	private final UpmsConfig upmsConfig;
+	private final RedisTemplate<String,String> redisTemplate;
+	private final RabbitMqClient rabbitMqClient;
 
 
 
@@ -164,6 +176,39 @@ public class ReportExportController {
 
 
 
+	// /**
+	//  * 个人报告导出--导出汇总或详情  汇总和详情合为一个模版
+	//  * @param wmTask
+	//  * @return
+	//  * @throws IOException
+	//  */
+	// @GetMapping("/exportZbReport")
+	// public R exportZbReport(WmTask wmTask) throws IOException {
+	// 	String packageId=wmTask.getScorePackageDrugId();
+	// 	if (null == packageId) {
+	// 		return R.failed("积分包ID不能为空");
+	// 	}
+	// 	LambdaQueryWrapper<WmTask> queryWrapper=new LambdaQueryWrapper();
+	// 	queryWrapper.in(WmTask::getScorePackageId, Arrays.asList(packageId.split(",")));
+	// 	queryWrapper.eq(WmTask::getTaskStatus,"3");
+	// 	queryWrapper.eq(WmTask::getDelFlag,"0");
+	// 	queryWrapper.eq(WmTask::getEnableFlag,"0");
+	// 	queryWrapper.eq(WmTask::getRealFlag,"0");
+	// 	List<WmTask> taskList=wmTaskService.list(queryWrapper);
+	// 	if(taskList.isEmpty()){
+	// 		return R.failed("未查询到审核通过的任务");
+	// 	}
+	// 	String ids = taskList.stream().map(WmTask::getId).collect(Collectors.joining("," ));
+	// 	wmTask.setScorePackageId(packageId);
+	// 	wmTask.setId(ids);
+	//
+	// 	return reportExportService.exportZb(wmTask);//报告汇总
+	//
+	//
+	// }
+
+
+
 	/**
 	 * 个人报告导出--导出汇总或详情  汇总和详情合为一个模版
 	 * @param wmTask
@@ -172,26 +217,29 @@ public class ReportExportController {
 	 */
 	@GetMapping("/exportZbReport")
 	public R exportZbReport(WmTask wmTask) throws IOException {
-		String packageId=wmTask.getScorePackageDrugId();
-		if (null == packageId) {
-			return R.failed("积分包ID不能为空");
-		}
-		LambdaQueryWrapper<WmTask> queryWrapper=new LambdaQueryWrapper();
-		queryWrapper.in(WmTask::getScorePackageId, Arrays.asList(packageId.split(",")));
-		queryWrapper.eq(WmTask::getTaskStatus,"3");
-		queryWrapper.eq(WmTask::getDelFlag,"0");
-		queryWrapper.eq(WmTask::getEnableFlag,"0");
-		queryWrapper.eq(WmTask::getRealFlag,"0");
-		List<WmTask> taskList=wmTaskService.list(queryWrapper);
-		if(taskList.isEmpty()){
-			return R.failed("未查询到审核通过的任务");
+
+		String key = String.format(CacheConstants.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("已有在途生成记录,能耐心等待");
+
 		}
-		String ids = taskList.stream().map(WmTask::getId).collect(Collectors.joining("," ));
-		wmTask.setScorePackageId(packageId);
-		wmTask.setId(ids);
 
-		return reportExportService.exportZb(wmTask);//报告汇总
 
+		HnqzUser user = SecurityUtils.getUser();
+		BaseMap map = new BaseMap();
+		map.put("requestBody", JSONUtil.toJsonStr(wmTask));
+		map.put("username",user.getUsername());
+		map.put("deptId",user.getDeptId());
+
+		rabbitMqClient.sendMessage(MqConstants.DIRECT_MODE_REPORT_EXPORT_ZB_QUEUE,map);
+
+		redisTemplate.opsForValue().set(key, WmReportOpt.WmReportOptStatus.GENERATING.name());
+
+		return R.ok("开始导出,请耐心等待");
 
 	}
 
@@ -286,13 +334,13 @@ public class ReportExportController {
 
 
 
-	/**
-	 * 个人报告导出--导出汇总或详情
-	 * @param wmTask
-	 *@param exportType  1 导出汇总  2导出详情
-	 * @return
-	 * @throws IOException
-	 */
+	// /**
+	//  * 个人报告导出--导出汇总或详情
+	//  * @param wmTask
+	//  *@param exportType  1 导出汇总  2导出详情
+	//  * @return
+	//  * @throws IOException
+	//  */
 //	@GetMapping("/exportZbReport")
 //	public R exportZbReport(WmTask wmTask, String exportType) throws IOException {
 //		String packageId=wmTask.getScorePackageDrugId();