|
@@ -1,5 +1,6 @@
|
|
|
package com.qs.mp.web.controller.api.admin;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
@@ -36,6 +37,7 @@ import io.swagger.annotations.ApiOperation;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Comparator;
|
|
|
+import java.util.Iterator;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import ma.glasnost.orika.MapperFacade;
|
|
@@ -256,6 +258,94 @@ public class TicketBoxMgrController extends BaseApiController {
|
|
|
return AjaxResult.error("导入失败,请联系管理员");
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ @Log(title = "导出印刷", businessType = BusinessType.EXPORT)
|
|
|
+ @PostMapping("/exportDraw")
|
|
|
+ public AjaxResult exportDraw(@RequestBody BathIdParam ids) {
|
|
|
+ if (null == ids || null == ids.getIds() || ids.getIds().size() == 0) {
|
|
|
+ return AjaxResult.error("请选择需要导出的盲票组");
|
|
|
+ }
|
|
|
+ TicketBox ticketBox = ticketBoxService.getById(ids.getIds().get(0));
|
|
|
+ if (null == ticketBox || StringUtils.isBlank(ticketBox.getBoxId())) {
|
|
|
+ return AjaxResult.error("选择的盲票组数据异常, 请联系管理员或重试");
|
|
|
+ }
|
|
|
+ List<TicketExcel> excelList = new ArrayList<TicketExcel>();
|
|
|
+ List<Ticket> listAll = new ArrayList<Ticket>();
|
|
|
+ // 首先查询要导出的数据总数
|
|
|
+ LambdaQueryWrapper<Ticket> queryWrapper = new LambdaQueryWrapper<Ticket>();
|
|
|
+ queryWrapper.eq(Ticket::getBoxId, ids.getIds().get(0));
|
|
|
+ int totalSize = ticketService.count(queryWrapper);
|
|
|
+ if (totalSize == 0) {
|
|
|
+ return AjaxResult.error("选择的盲票组中没有可导出的数据");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(totalSize > pageSize) {
|
|
|
+ int totalPage = totalSize%pageSize == 0 ? totalSize/pageSize : totalSize/pageSize+1;
|
|
|
+ for (int i = 0; i < totalPage; i++) {
|
|
|
+ LambdaQueryWrapper<Ticket> pageQueryWrapper = new LambdaQueryWrapper<Ticket>();
|
|
|
+ pageQueryWrapper.select(Ticket::getSerialNo, Ticket::getDrawNum, Ticket::getCipherLuckyNum);
|
|
|
+ pageQueryWrapper.eq(Ticket::getBoxId, ids.getIds().get(0));
|
|
|
+ pageQueryWrapper.last("limit "+ (i*pageSize) +", " + pageSize);
|
|
|
+ List<Ticket> list = ticketService.list(pageQueryWrapper);
|
|
|
+ if(null != list && list.size() > 0 ) {
|
|
|
+ listAll.addAll(list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ listAll = ticketService.list(queryWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(null != listAll && listAll.size() > 0 ) {
|
|
|
+ listAll.sort(Comparator.comparing(Ticket::getSerialNo));
|
|
|
+ for (Ticket ticket : listAll) {
|
|
|
+ if (null != ticket && StringUtils.isNotBlank(ticket.getSerialNo())
|
|
|
+ && StringUtils.isNotBlank(ticket.getDrawNum())
|
|
|
+ && StringUtils.isNotBlank(ticket.getCipherLuckyNum())) {
|
|
|
+ TicketExcel ticketExcel = new TicketExcel();
|
|
|
+ ticketExcel.setSerialNo(ticket.getSerialNo());
|
|
|
+ ticketExcel.setUrl(exportUrl + ticket.getSerialNo());
|
|
|
+ ticketExcel.setDrawNum(formatDraw(ticket.getDrawNum()));
|
|
|
+ ticketExcel.setCipherLuckyNum(RSAUtil.decrypt(ticket.getCipherLuckyNum()));
|
|
|
+ excelList.add(ticketExcel);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ExcelUtil<TicketExcel> util = new ExcelUtil<TicketExcel>(TicketExcel.class);
|
|
|
+ return util.exportExcel(excelList, ticketBox.getTitle(), false);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出印刷格式化
|
|
|
+ * @param drawNum
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private String formatDraw(String drawNum) {
|
|
|
+ if(StringUtils.isNotBlank(drawNum)) {
|
|
|
+ try {
|
|
|
+ List<String> drawList = new ArrayList<String>();
|
|
|
+ JSONArray jsonArray = JSONArray.parseArray(drawNum);
|
|
|
+ if(null != jsonArray && jsonArray.size() > 0) {
|
|
|
+ for (int i = 0; i < jsonArray.size(); i++) {
|
|
|
+ JSONObject jo = jsonArray.getJSONObject(i);
|
|
|
+ if(null != jo && jo.containsKey("name")
|
|
|
+ && jo.containsKey("num")) {
|
|
|
+ drawList.add(jo.getString("name")+jo.getString("num"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(null != drawList && drawList.size() >0) {
|
|
|
+ return StringUtils.join(drawList.toArray(), " ");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
|
|
|
}
|