| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | @RequestMapping("blade-userTopics/userTopics") |
| | | @Api(value = "用户议题报表", tags = "用户议题报表接口") |
| | | public class UserTopicsController extends BladeController { |
| | | private static Logger logger = LoggerFactory.getLogger(UserTopicsController.class); |
| | | |
| | | |
| | | private final IUserTopicsService userTopicsService; |
| | | |
| | |
| | | UserTopicsEntity detail = userTopicsService.getOne(Condition.getQueryWrapper(userTopics)); |
| | | return R.data(UserTopicsWrapper.build().entityVO(detail)); |
| | | } |
| | | |
| | | /** |
| | | * 用户议题报表 分页 |
| | | */ |
| | |
| | | @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)); |
| | | } |
| | | |
| | | /** |
| | |
| | | @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)); |
| | | } |
| | | |
| | | /** |
| | |
| | | @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); |
| | | } |
| | | } |
| | | |
| | | |