From c10d6358b9f014375a13821465bc978d0c0da22e Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Wed, 29 May 2024 17:17:08 +0800
Subject: [PATCH] 通过E呼即办数据统计

---
 src/main/java/org/springblade/modules/discuss/controller/UserTopicsController.java |   94 ++++++++++++++++++++++++++++++++--------------
 1 files changed, 65 insertions(+), 29 deletions(-)

diff --git a/src/main/java/org/springblade/modules/discuss/controller/UserTopicsController.java b/src/main/java/org/springblade/modules/discuss/controller/UserTopicsController.java
index 9cc4d3a..0ddb529 100644
--- a/src/main/java/org/springblade/modules/discuss/controller/UserTopicsController.java
+++ b/src/main/java/org/springblade/modules/discuss/controller/UserTopicsController.java
@@ -19,28 +19,37 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.xxl.job.core.biz.impl.ExecutorBizImpl;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.SpringUtil;
 import org.springblade.modules.discuss.entity.PublicDiscussEntity;
 import org.springblade.modules.discuss.entity.UserTopicsEntity;
+import org.springblade.modules.discuss.excel.UserTopicsExcel;
 import org.springblade.modules.discuss.service.IPublicDiscussService;
 import org.springblade.modules.discuss.service.IUserTopicsService;
 import org.springblade.modules.discuss.vo.TopicsVO;
 import org.springblade.modules.discuss.vo.UserTopicsVO;
 import org.springblade.modules.discuss.wrapper.UserTopicsWrapper;
+import org.springblade.modules.house.excel.HouseExcel;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.io.OutputStream;
+import java.net.URLEncoder;
 import java.util.List;
 
 /**
@@ -54,6 +63,8 @@
 @RequestMapping("blade-userTopics/userTopics")
 @Api(value = "用户议题报表", tags = "用户议题报表接口")
 public class UserTopicsController extends BladeController {
+	private static Logger logger = LoggerFactory.getLogger(UserTopicsController.class);
+
 
 	private final IUserTopicsService userTopicsService;
 
@@ -67,6 +78,7 @@
 		UserTopicsEntity detail = userTopicsService.getOne(Condition.getQueryWrapper(userTopics));
 		return R.data(UserTopicsWrapper.build().entityVO(detail));
 	}
+
 	/**
 	 * 用户议题报表 分页
 	 */
@@ -116,29 +128,7 @@
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入userTopics")
 	public R submit(@Valid @RequestBody UserTopicsEntity userTopics) {
-		userTopics.setUserId(AuthUtil.getUserId());
-		// 判断是否一户一票 还是一人一票
-		IPublicDiscussService bean = SpringUtil.getBean(IPublicDiscussService.class);
-		PublicDiscussEntity one = bean.getOne(Wrappers.<PublicDiscussEntity>lambdaQuery().eq(PublicDiscussEntity::getId, userTopics.getPublicDiscussId()));
-		// 一户一票
-		if (one.getVoteRestrictions().equals(CommonConstant.NUMBER_ONE)) {
-			long count = userTopicsService.count(Wrappers.<UserTopicsEntity>lambdaQuery()
-				.eq(UserTopicsEntity::getPublicDiscussId, userTopics.getPublicDiscussId())
-				.eq(UserTopicsEntity::getUserId, userTopics.getUserId())
-				.eq(UserTopicsEntity::getHouseCode, userTopics.getHouseCode()));
-			if (count > 0) {
-				return R.fail("您房屋已经投票,不能重复投票!");
-			}
-			// 一人一票
-		} else {
-			long count = userTopicsService.count(Wrappers.<UserTopicsEntity>lambdaQuery()
-				.eq(UserTopicsEntity::getPublicDiscussId, userTopics.getPublicDiscussId())
-				.eq(UserTopicsEntity::getUserId, userTopics.getUserId()));
-			if (count > 0) {
-				return R.fail("您已投票,不能重复投票!");
-			}
-		}
-		return R.status(userTopicsService.save(userTopics));
+		return R.status(userTopicsService.saveUserTopicsEntity(userTopics));
 	}
 
 	/**
@@ -147,8 +137,11 @@
 	@PostMapping("/remove")
 	@ApiOperationSupport(order = 7)
 	@ApiOperation(value = "逻辑删除", notes = "传入ids")
-	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		return R.status(userTopicsService.removeByIds(Func.toLongList(ids)));
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam Integer ids) {
+		UserTopicsEntity userTopicsEntity = new UserTopicsEntity();
+		userTopicsEntity.setDeleteFlag(1);
+		userTopicsEntity.setId(ids);
+		return R.status(userTopicsService.updateById(userTopicsEntity));
 	}
 
 	/**
@@ -157,9 +150,52 @@
 	@PostMapping("/updateBath")
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "批量更新", notes = "传入topics")
-	public R updateBath(@Valid @RequestBody List<TopicsVO> topics) throws Exception {
-		Boolean result = userTopicsService.batchSave(topics);
-		return R.status(result);
+	public R updateBath(@Valid @RequestBody TopicsVO topics) throws Exception {
+		String result = userTopicsService.batchSave(topics);
+		if (result.equals("200")) {
+			return R.data("操作成功");
+		}
+		return R.fail(result);
+	}
+
+	/**
+	 * 导出用户
+	 */
+	@GetMapping("/exportUser")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "导出用户", notes = "传入userTopics")
+	public void exportUser(UserTopicsVO userTopics, HttpServletResponse response) {
+		List<UserTopicsExcel> list = userTopicsService.exportUser(userTopics);
+		ExcelUtil.export(response, "投票人员" + DateUtil.time(), "投票人员数据表", list, UserTopicsExcel.class);
+	}
+
+	/**
+	 * 导出Excel文件的方法。
+	 * 该方法用于将用户主题数据导出为Excel格式,供用户下载。
+	 *
+	 * @param response 用于设置HTTP响应,包括内容类型和文件名等信息。
+	 * @param userTopics 包含要导出的数据的用户主题视图对象。
+	 * @return 该方法不返回任何内容,而是将数据直接输出到HTTP响应的输出流中。
+	 */
+	@GetMapping("/exportDataIndex")
+	public void exportExcel(HttpServletResponse response, UserTopicsVO userTopics) {
+	    try (OutputStream out = response.getOutputStream()) {
+	        // 设置响应的内容类型为Excel文件
+	        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+	        // 设置响应的字符编码为UTF-8
+	        response.setCharacterEncoding("utf-8");
+	        // 编码文件名,并替换+号为%20,以兼容URL下载
+	        String fileName = URLEncoder.encode("投票人员", "UTF-8").replaceAll("\\+", "%20");
+	        // 设置响应头,指示浏览器以附件形式下载文件,并设置文件名
+	        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
+	        // 调用服务层处理Excel数据的写入
+	        userTopicsService.handleExcel(out, userTopics);
+	        // 刷新输出流
+	        out.flush();
+	    } catch (Exception e) {
+	        // 记录异常信息
+	        logger.error(e.getMessage(), e);
+	    }
 	}
 
 

--
Gitblit v1.9.3