zhongrj
2024-04-01 079c4fdc2ac37c06ef3aa17672a8e5dff69c58bc
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,10 +150,37 @@
   @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);
   }
   @GetMapping("/exportDataIndex")
   public void exportExcel(HttpServletResponse response,UserTopicsVO userTopics) {
      try (OutputStream out = response.getOutputStream()) {
         response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
         response.setCharacterEncoding("utf-8");
         String fileName = URLEncoder.encode("投票人员", "UTF-8").replaceAll("\\+", "%20");
         response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
         userTopicsService.handleExcel(out,userTopics);
         out.flush();
      } catch (Exception e) {
         logger.error(e.getMessage(),e);
      }}
}