Bladeren bron

pos桌台批量下载二维码zip

gqx 2 jaren geleden
bovenliggende
commit
29315e535e

+ 254 - 200
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosTableController.java

@@ -1,22 +1,27 @@
 package org.jeecg.modules.pos.controller;
 
-import java.io.File;
-import java.io.FileInputStream;
+import java.io.*;
+import java.net.*;
 import java.util.*;
 import java.util.stream.Collectors;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
+import cn.hutool.core.io.FastByteArrayOutputStream;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.URLUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import me.chanjar.weixin.common.error.WxErrorException;
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.exception.JeecgBootException;
@@ -69,8 +74,8 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
 @RequestMapping("/pos/posTable")
 @Slf4j
 public class PosTableController extends JeecgController<PosTable, IPosTableService> {
-	@Autowired
-	private IPosTableService posTableService;
+	 @Autowired
+	 private IPosTableService posTableService;
 	 @Autowired
 	 private IPosTypeService posTypeService;
 	 @Autowired
@@ -84,138 +89,139 @@ public class PosTableController extends JeecgController<PosTable, IPosTableServi
 	 @Resource
 	 private RedisTemplate redisTemplate;
 
-	/**
-	 * 分页列表查询
-	 *
-	 * @param posTable
-	 * @param pageNo
-	 * @param pageSize
-	 * @param req
-	 * @return
-	 */
-	//@AutoLog(value = "pos_table-分页列表查询")
-	@ApiOperation(value="pos_table-分页列表查询", notes="pos_table-分页列表查询")
-	@GetMapping(value = "/list")
-	public Result<IPage<PosTable>> queryPageList(PosTable posTable,
-								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-								   HttpServletRequest req) {
-		QueryWrapper<PosTable> queryWrapper = QueryGenerator.initQueryWrapper(posTable, req.getParameterMap());
-		Page<PosTable> page = new Page<PosTable>(pageNo, pageSize);
-		IPage<PosTable> pageList = posTableService.page(page, queryWrapper);
-		pageList.getRecords().forEach(item -> {
-			PosType type = posTypeService.getById(item.getPosTypeId());
-			if (type != null) {
-				item.setTypeName(type.getName());
-			}
-			PosRegion region = posRegionService.getById(item.getPosRegionId());
-			if (region != null) {
-				item.setRegionName(region.getName());
-			}
-			PosTableType tableType = posTableTypeService.getById(item.getPosTableTypeId());
-			if (tableType != null) {
-				item.setTableTypeName(tableType.getName());
-			}
-		});
-		return Result.OK(pageList);
-	}
+	 /**
+	  * 分页列表查询
+	  *
+	  * @param posTable
+	  * @param pageNo
+	  * @param pageSize
+	  * @param req
+	  * @return
+	  */
+	 //@AutoLog(value = "pos_table-分页列表查询")
+	 @ApiOperation(value = "pos_table-分页列表查询", notes = "pos_table-分页列表查询")
+	 @GetMapping(value = "/list")
+	 public Result<IPage<PosTable>> queryPageList(PosTable posTable,
+												  @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+												  @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+												  HttpServletRequest req) {
+		 QueryWrapper<PosTable> queryWrapper = QueryGenerator.initQueryWrapper(posTable, req.getParameterMap());
+		 Page<PosTable> page = new Page<PosTable>(pageNo, pageSize);
+		 IPage<PosTable> pageList = posTableService.page(page, queryWrapper);
+		 pageList.getRecords().forEach(item -> {
+			 PosType type = posTypeService.getById(item.getPosTypeId());
+			 if (type != null) {
+				 item.setTypeName(type.getName());
+			 }
+			 PosRegion region = posRegionService.getById(item.getPosRegionId());
+			 if (region != null) {
+				 item.setRegionName(region.getName());
+			 }
+			 PosTableType tableType = posTableTypeService.getById(item.getPosTableTypeId());
+			 if (tableType != null) {
+				 item.setTableTypeName(tableType.getName());
+			 }
+		 });
+		 return Result.OK(pageList);
+	 }
 
 	 /**
 	  * 查询桌台用餐列表
+	  *
 	  * @param posTable
 	  * @param pageNo
 	  * @param pageSize
 	  * @param req
 	  * @return
 	  */
-	 @ApiOperation(value="pos_table-分页列表查询", notes="pos_table-分页列表查询")
+	 @ApiOperation(value = "pos_table-分页列表查询", notes = "pos_table-分页列表查询")
 	 @GetMapping(value = "/tableList")
 	 public Result<IPage<PosTable>> tableList(PosTable posTable,
-												  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-												  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-												  HttpServletRequest req) {
+											  @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+											  @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+											  HttpServletRequest req) {
 		 QueryWrapper<PosTable> queryWrapper = QueryGenerator.initQueryWrapper(posTable, req.getParameterMap());
 		 Page<PosTable> page = new Page<PosTable>(pageNo, pageSize);
 		 IPage<PosTable> pageList = posTableService.page(page, queryWrapper);
 		 pageList.getRecords().forEach(item -> {
-		 	if(item.getState().equals(2)||item.getState().equals(3)||item.getState().equals(4)) {
-				LambdaQueryWrapper<PosOrderGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-				lambdaQueryWrapper.eq(PosOrderGoods::getPosTableId, item.getId());
-				lambdaQueryWrapper.orderByDesc(PosOrderGoods::getCreateTime);
-				Page<PosOrderGoods> page2 = new Page<PosOrderGoods>(1, 1);
-				lambdaQueryWrapper.orderByDesc(PosOrderGoods::getCreateTime);
-				IPage<PosOrderGoods> posOrderGoodsList = posOrderGoodsService.page(page2, lambdaQueryWrapper);
-				if (ObjectUtils.isNotEmpty(posOrderGoodsList.getRecords())) {
-					item.setPosOrderGoods(posOrderGoodsList.getRecords().get(0));
-				}
-			}
+			 if (item.getState().equals(2) || item.getState().equals(3) || item.getState().equals(4)) {
+				 LambdaQueryWrapper<PosOrderGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+				 lambdaQueryWrapper.eq(PosOrderGoods::getPosTableId, item.getId());
+				 lambdaQueryWrapper.orderByDesc(PosOrderGoods::getCreateTime);
+				 Page<PosOrderGoods> page2 = new Page<PosOrderGoods>(1, 1);
+				 lambdaQueryWrapper.orderByDesc(PosOrderGoods::getCreateTime);
+				 IPage<PosOrderGoods> posOrderGoodsList = posOrderGoodsService.page(page2, lambdaQueryWrapper);
+				 if (ObjectUtils.isNotEmpty(posOrderGoodsList.getRecords())) {
+					 item.setPosOrderGoods(posOrderGoodsList.getRecords().get(0));
+				 }
+			 }
 		 });
 		 return Result.OK(pageList);
 	 }
 
-	/**
-	 *   添加
-	 *
-	 * @param posTable
-	 * @return
-	 */
-	@AutoLog(value = "pos_table-添加")
-	@ApiOperation(value="pos_table-添加", notes="pos_table-添加")
-	//@RequiresPermissions("pos:pos_table:add")
-	@PostMapping(value = "/add")
-	public Result<String> add(@RequestBody PosTable posTable) {
-		if (posTable.getTenantId() == null || posTable.getTenantId().equals("")) {
-			LoginUser user = TokenUtils.getAuthUser();
-			if (user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")) {
-				posTable.setTenantId(user.getRelTenantIds());
-			} else {
-				throw new JeecgBootException("当前登录人租户信息错误");
-			}
-		}
+	 /**
+	  * 添加
+	  *
+	  * @param posTable
+	  * @return
+	  */
+	 @AutoLog(value = "pos_table-添加")
+	 @ApiOperation(value = "pos_table-添加", notes = "pos_table-添加")
+	 //@RequiresPermissions("pos:pos_table:add")
+	 @PostMapping(value = "/add")
+	 public Result<String> add(@RequestBody PosTable posTable) {
+		 if (posTable.getTenantId() == null || posTable.getTenantId().equals("")) {
+			 LoginUser user = TokenUtils.getAuthUser();
+			 if (user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")) {
+				 posTable.setTenantId(user.getRelTenantIds());
+			 } else {
+				 throw new JeecgBootException("当前登录人租户信息错误");
+			 }
+		 }
 
-		posTable.setId(UUIDGenerator.generate());
-		LambdaQueryWrapper<WxAppConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(WxAppConfig::getTenantId, posTable.getTenantId());
-		WxAppConfig wxApp = wxAppConfigService.getOne(lambdaQueryWrapper);
-		if (wxApp == null) {
-			throw new JeecgBootException("没有找到此appid");
-		}
-		//获取小程序二维码
-		try {
-			WxMaInRedisConfigStorage configStorage = new WxMaInRedisConfigStorage(redisTemplate);
-			configStorage.setAppid(wxApp.getAppId());
-			configStorage.setSecret(wxApp.getAppSecret());
-			WxMaService wxMaService = new WxMaServiceImpl();
-			wxMaService.setWxMaConfig(configStorage);
+		 posTable.setId(UUIDGenerator.generate());
+		 LambdaQueryWrapper<WxAppConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		 lambdaQueryWrapper.eq(WxAppConfig::getTenantId, posTable.getTenantId());
+		 WxAppConfig wxApp = wxAppConfigService.getOne(lambdaQueryWrapper);
+		 if (wxApp == null) {
+			 throw new JeecgBootException("没有找到此appid");
+		 }
+		 //获取小程序二维码
+		 try {
+			 WxMaInRedisConfigStorage configStorage = new WxMaInRedisConfigStorage(redisTemplate);
+			 configStorage.setAppid(wxApp.getAppId());
+			 configStorage.setSecret(wxApp.getAppSecret());
+			 WxMaService wxMaService = new WxMaServiceImpl();
+			 wxMaService.setWxMaConfig(configStorage);
 
-			File file = wxMaService.getQrcodeService().createQrcode("page/dc/index?id="+posTable.getId(), 430);
-			try {
-				MultipartFile cMultiFile = new MockMultipartFile("file", file.getName(), null, new FileInputStream(file));
-				String path = CommonUtils.upload(cMultiFile, "temp", CommonConstant.UPLOAD_TYPE_OSS);
-				posTable.setQrCode(path);
-			} catch (IOException e) {
-				e.printStackTrace();
-			}
+			 File file = wxMaService.getQrcodeService().createQrcode("page/dc/index?id=" + posTable.getId(), 430);
+			 try {
+				 MultipartFile cMultiFile = new MockMultipartFile("file", file.getName(), null, new FileInputStream(file));
+				 String path = CommonUtils.upload(cMultiFile, "temp", CommonConstant.UPLOAD_TYPE_OSS);
+				 posTable.setQrCode(path);
+			 } catch (IOException e) {
+				 e.printStackTrace();
+			 }
 
-		} catch (WxErrorException e) {
-			e.printStackTrace();
+		 } catch (WxErrorException e) {
+			 e.printStackTrace();
 
-			throw new JeecgBootException("获取小程序二维码失败:" + e.getMessage());
-		}
-		posTableService.save(posTable);
-		return Result.OK("添加成功!");
-	}
+			 throw new JeecgBootException("获取小程序二维码失败:" + e.getMessage());
+		 }
+		 posTableService.save(posTable);
+		 return Result.OK("添加成功!");
+	 }
 
 
 	 /**
-	  *  桌台用餐下单
+	  * 桌台用餐下单
 	  *
 	  * @param posTable
 	  * @return
 	  */
 	 @AutoLog(value = "pos_table-桌台用餐下单")
-	 @ApiOperation(value="pos_table-桌台用餐下单", notes="pos_table-桌台用餐下单")
-	 @RequestMapping(value = "/addOrder", method = {RequestMethod.PUT,RequestMethod.POST})
+	 @ApiOperation(value = "pos_table-桌台用餐下单", notes = "pos_table-桌台用餐下单")
+	 @RequestMapping(value = "/addOrder", method = {RequestMethod.PUT, RequestMethod.POST})
 	 public Result<String> addOrder(@RequestBody PosTable posTable) {
 		 PosTable table = posTableService.getById(posTable.getId());
 		 if (!table.getState().equals(0)) {
@@ -227,102 +233,150 @@ public class PosTableController extends JeecgController<PosTable, IPosTableServi
 		 return Result.OK("下单成功!");
 	 }
 
-	/**
-	 *  编辑
-	 *
-	 * @param posTable
-	 * @return
-	 */
-	@AutoLog(value = "pos_table-编辑")
-	@ApiOperation(value="pos_table-编辑", notes="pos_table-编辑")
-	//@RequiresPermissions("pos:pos_table:edit")
-	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
-	public Result<String> edit(@RequestBody PosTable posTable) {
-		posTableService.updateById(posTable);
-		return Result.OK("编辑成功!");
-	}
+	 /**
+	  * 编辑
+	  *
+	  * @param posTable
+	  * @return
+	  */
+	 @AutoLog(value = "pos_table-编辑")
+	 @ApiOperation(value = "pos_table-编辑", notes = "pos_table-编辑")
+	 //@RequiresPermissions("pos:pos_table:edit")
+	 @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+	 public Result<String> edit(@RequestBody PosTable posTable) {
+		 posTableService.updateById(posTable);
+		 return Result.OK("编辑成功!");
+	 }
 
-	/**
-	 *   通过id删除
-	 *
-	 * @param id
-	 * @return
-	 */
-	@AutoLog(value = "pos_table-通过id删除")
-	@ApiOperation(value="pos_table-通过id删除", notes="pos_table-通过id删除")
-	//@RequiresPermissions("pos:pos_table:delete")
-	@DeleteMapping(value = "/delete")
-	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
-		posTableService.removeById(id);
-		return Result.OK("删除成功!");
-	}
+	 /**
+	  * 通过id删除
+	  *
+	  * @param id
+	  * @return
+	  */
+	 @AutoLog(value = "pos_table-通过id删除")
+	 @ApiOperation(value = "pos_table-通过id删除", notes = "pos_table-通过id删除")
+	 //@RequiresPermissions("pos:pos_table:delete")
+	 @DeleteMapping(value = "/delete")
+	 public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
+		 posTableService.removeById(id);
+		 return Result.OK("删除成功!");
+	 }
 
-	/**
-	 *  批量删除
-	 *
-	 * @param ids
-	 * @return
-	 */
-	@AutoLog(value = "pos_table-批量删除")
-	@ApiOperation(value="pos_table-批量删除", notes="pos_table-批量删除")
-	//@RequiresPermissions("pos:pos_table:deleteBatch")
-	@DeleteMapping(value = "/deleteBatch")
-	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		this.posTableService.removeByIds(Arrays.asList(ids.split(",")));
-		return Result.OK("批量删除成功!");
-	}
+	 /**
+	  * 批量删除
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "pos_table-批量删除")
+	 @ApiOperation(value = "pos_table-批量删除", notes = "pos_table-批量删除")
+	 //@RequiresPermissions("pos:pos_table:deleteBatch")
+	 @DeleteMapping(value = "/deleteBatch")
+	 public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+		 this.posTableService.removeByIds(Arrays.asList(ids.split(",")));
+		 return Result.OK("批量删除成功!");
+	 }
 
-	/**
-	 * 通过id查询
-	 *
-	 * @param id
-	 * @return
-	 */
-	//@AutoLog(value = "pos_table-通过id查询")
-	@ApiOperation(value="pos_table-通过id查询", notes="pos_table-通过id查询")
-	@GetMapping(value = "/queryById")
-	public Result<PosTable> queryById(@RequestParam(name="id",required=true) String id) {
-		PosTable posTable = posTableService.getById(id);
-		if(posTable==null) {
-			return Result.error("未找到对应数据");
-		}
-		if(posTable.getState().equals(2)) {
-			LambdaQueryWrapper<PosOrderGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-			lambdaQueryWrapper.eq(PosOrderGoods::getPosTableId, posTable.getId());
-			lambdaQueryWrapper.orderByDesc(PosOrderGoods::getCreateTime);
-			Page<PosOrderGoods> page2 = new Page<PosOrderGoods>(1, 1);
-			lambdaQueryWrapper.orderByDesc(PosOrderGoods::getCreateTime);
-			IPage<PosOrderGoods> posOrderGoodsList = posOrderGoodsService.page(page2, lambdaQueryWrapper);
-			if (ObjectUtils.isNotEmpty(posOrderGoodsList.getRecords())) {
-				posTable.setPosOrderGoods(posOrderGoodsList.getRecords().get(0));
-			}
-		}
-		return Result.OK(posTable);
-	}
+	 /**
+	  * 通过id查询
+	  *
+	  * @param id
+	  * @return
+	  */
+	 //@AutoLog(value = "pos_table-通过id查询")
+	 @ApiOperation(value = "pos_table-通过id查询", notes = "pos_table-通过id查询")
+	 @GetMapping(value = "/queryById")
+	 public Result<PosTable> queryById(@RequestParam(name = "id", required = true) String id) {
+		 PosTable posTable = posTableService.getById(id);
+		 if (posTable == null) {
+			 return Result.error("未找到对应数据");
+		 }
+		 if (posTable.getState().equals(2)) {
+			 LambdaQueryWrapper<PosOrderGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			 lambdaQueryWrapper.eq(PosOrderGoods::getPosTableId, posTable.getId());
+			 lambdaQueryWrapper.orderByDesc(PosOrderGoods::getCreateTime);
+			 Page<PosOrderGoods> page2 = new Page<PosOrderGoods>(1, 1);
+			 lambdaQueryWrapper.orderByDesc(PosOrderGoods::getCreateTime);
+			 IPage<PosOrderGoods> posOrderGoodsList = posOrderGoodsService.page(page2, lambdaQueryWrapper);
+			 if (ObjectUtils.isNotEmpty(posOrderGoodsList.getRecords())) {
+				 posTable.setPosOrderGoods(posOrderGoodsList.getRecords().get(0));
+			 }
+		 }
+		 return Result.OK(posTable);
+	 }
+
+	 /**
+	  * 导出excel
+	  *
+	  * @param request
+	  * @param posTable
+	  */
+	 //@RequiresPermissions("pos:pos_table:exportXls")
+	 @RequestMapping(value = "/exportXls")
+	 public ModelAndView exportXls(HttpServletRequest request, PosTable posTable) {
+		 return super.exportXls(request, posTable, PosTable.class, "pos_table");
+	 }
 
-    /**
-    * 导出excel
-    *
-    * @param request
-    * @param posTable
-    */
-    //@RequiresPermissions("pos:pos_table:exportXls")
-    @RequestMapping(value = "/exportXls")
-    public ModelAndView exportXls(HttpServletRequest request, PosTable posTable) {
-        return super.exportXls(request, posTable, PosTable.class, "pos_table");
-    }
+	 /**
+	  * 通过excel导入数据
+	  *
+	  * @param request
+	  * @param response
+	  * @return
+	  */
+	 //@RequiresPermissions("pos:pos_table:importExcel")
+	 @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+	 public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+		 return super.importExcel(request, response, PosTable.class);
+	 }
 
-    /**
-      * 通过excel导入数据
-    *
-    * @param request
-    * @param response
-    * @return
-    */
-    //@RequiresPermissions("pos:pos_table:importExcel")
-    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
-    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-        return super.importExcel(request, response, PosTable.class);
-    }
+	 @ApiOperation(value = "批量下载二维码压缩包", notes = "批量下载二维码压缩包")
+	 @GetMapping(value = "/makeQRCode")
+	 public void makeQRCode(HttpServletResponse response, @RequestParam(name = "ids", required = true) String ids) {
+		 ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+		 ZipOutputStream zip = new ZipOutputStream(outputStream);
+		 List<PosTable> posTables = this.posTableService.listByIds(Arrays.asList(ids.split(",")));
+		 for (PosTable posTable : posTables) {
+			 if (StringUtils.isNotBlank(posTable.getQrCode())) {
+				 URL url3 = null;
+				 try {
+					 url3 = new URL(posTable.getQrCode());
 
+					 //得到图片的流
+					 InputStream stream = URLUtil.getStream(url3);
+					 FastByteArrayOutputStream read = IoUtil.read(stream);
+					 byte[] bytes = read.toByteArray();
+					 try {
+						 // 文件流添加到zip流
+						 zip.putNextEntry(new ZipEntry(posTable.getName() + ".png"));
+						 zip.write(bytes);
+						 IOUtils.closeQuietly(read);
+						 zip.flush();
+						 zip.closeEntry();
+					 } catch (IOException e) {
+						 log.error("下载失败!", e);
+					 }
+				 } catch (MalformedURLException e) {
+					 e.printStackTrace();
+				 }
+			 }
+		 }
+		 IOUtils.closeQuietly(zip);
+		 byte[] bytes = outputStream.toByteArray();
+//由响应response直接输入到前端
+		 response.reset();
+		 try {
+			 response.addHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("桌台二维码.zip", "UTF-8"));
+		 } catch (UnsupportedEncodingException e) {
+			 e.printStackTrace();
+		 }
+		 response.addHeader("Content-Length", "" + bytes.length);
+		 response.setContentType("application/octet-stream; charset=UTF-8");
+		 try {
+			 IOUtils.write(bytes, response.getOutputStream());
+		 } catch (IOException e) {
+			 e.printStackTrace();
+		 }
+	 }
 }