From a8983f48bfc10e70aee2b041658abf2d64d38874 Mon Sep 17 00:00:00 2001 From: luozukai Date: Thu, 14 Feb 2019 14:31:00 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=95=86=E9=93=BA][=E6=96=B0=E5=A2=9E][?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=AF=BC=E5=87=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/controller/WxShopController.java | 19 +++ .../com/iformall/enums/EnumPointType.java | 43 ++++++ .../com/iformall/mapper/WxShopMapper.java | 1 + .../com/iformall/service/WxShopService.java | 9 ++ .../impl/WxCUserBasicInfoServiceImpl.java | 37 +---- .../service/impl/WxShopServiceImpl.java | 143 +++++++++++++++++- .../java/com/iformall/utils/DownFileUtil.java | 40 +++++ .../main/resources/mapper/WxShopMapper.xml | 122 ++++++++++++++- 8 files changed, 375 insertions(+), 39 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumPointType.java create mode 100644 mallinkService/src/main/java/com/iformall/utils/DownFileUtil.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxShopController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxShopController.java index 08209bfa1..882226518 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxShopController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxShopController.java @@ -3,16 +3,20 @@ package com.iformall.controller; import com.github.pagehelper.PageInfo; import com.iformall.common.Result; import com.iformall.common.ResultData; +import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxShop; import com.iformall.service.WxShopService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.Map; /** @@ -119,4 +123,19 @@ public class WxShopController extends BaseController { return new ResultData(page); } + @ApiOperation("导出店铺") + @GetMapping("/exportShop") + public void exportShop(@ModelAttribute WxShop wxShop, HttpServletRequest request, HttpServletResponse response) { + logger.debug("[" + getIpAddr() + "] WxShopController::exportShop"); + if (null == wxShop){ + wxShop = new WxShop(); + } + wxShop.setTenantId(getTenantId()); + wxShop.setSortColumns(WxShop.Field.Id_DESC); + wxShopService.exportShop(wxShop, request, response); + } + + + + } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumPointType.java b/mallinkService/src/main/java/com/iformall/enums/EnumPointType.java new file mode 100644 index 000000000..40cea2391 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumPointType.java @@ -0,0 +1,43 @@ +package com.iformall.enums; + + +/** + * @author luozukai + * 点位类型1固定点位2临时促销点位3宣传点位4ATM点位5仓库点位6其他点位 + */ + +public enum EnumPointType { + + POINT1(1, "固定点位"), + POINT2(2, "临时促销点位"), + POINT3(3, "宣传点位"), + POINT4(4, "ATM点位"), + POINT5(5, "仓库点位"), + OTHER(6, "其他点位"), + ; + + public static EnumPointType getEnum(Integer code) { + for (EnumPointType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumPointType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxShopMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxShopMapper.java index 2104ef3ed..630277d27 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxShopMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxShopMapper.java @@ -26,4 +26,5 @@ public interface WxShopMapper extends CommonMapper { int hasShopNumber(WxShop wxShop); + List> findListWithMerchantMap(WxShop record); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxShopService.java b/mallinkService/src/main/java/com/iformall/service/WxShopService.java index 5a434f51f..105e59e1a 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxShopService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxShopService.java @@ -4,6 +4,8 @@ import java.util.*; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.WxShop; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; public interface WxShopService { @@ -50,4 +52,11 @@ public interface WxShopService { PageInfo> listShopFromContract(WxShop wxShop, Integer pageNum, Integer pageSize); + /** + * 导出商铺数据 + * @param wxShop + * @param request + * @param response + */ + void exportShop(WxShop wxShop, HttpServletRequest request, HttpServletResponse response); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java index fc69aee85..a39d613fb 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java @@ -19,6 +19,7 @@ import com.iformall.service.WxCUserBasicInfoService; import com.iformall.service.WxCUserTagsService; import com.iformall.service.WxScoreRulesService; import com.iformall.utils.Constant; +import com.iformall.utils.DownFileUtil; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Cell; @@ -267,43 +268,13 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { workbook.write(fileOut); fileOut.close(); workbook.close(); - downFile(filepath, filename,"会员信息数据.xlsx",response, request); + DownFileUtil.downFile(filepath,"会员信息数据.xlsx",response, request); FileUtils.forceDelete(file); } catch (Exception e) { e.printStackTrace(); } } - public void downFile(String filePath, String filename,String exportFileName, HttpServletResponse response, - HttpServletRequest req) throws IOException { - try { - response.reset(); - response.setContentType("bin"); - String agent = req.getHeader("user-agent"); - if (agent.contains("Firefox")) { - response.setHeader("Content-disposition", - "attachment; filename=" - + new String(exportFileName.getBytes("GB2312"), - "ISO-8859-1")); - } else { - response - .setHeader("Content-disposition", - "attachment; filename=" - + java.net.URLEncoder.encode(exportFileName, - "UTF-8")); - } - // 循环取出流中的数据 - byte[] b = new byte[1024]; - int len; - InputStream inStream = new FileInputStream(filePath); - while ((len = inStream.read(b)) > 0) - response.getOutputStream().write(b, 0, len); - inStream.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } - @Override public void exportTemplate(HttpServletRequest request, HttpServletResponse response, String tenantId) { @@ -424,7 +395,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { workbook.write(fileOut); fileOut.close(); workbook.close(); - downFile(filepath, filename, "会员信息模板.xlsx",response, request); + DownFileUtil.downFile(filepath, "会员信息模板.xlsx",response, request); FileUtils.forceDelete(file); } catch (Exception e) { logger.error("导出模板:" + e.getMessage()); @@ -699,7 +670,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { fileOut.close(); workbook.close(); String name = (record.getIsPay()!=null && 1==record.getIsPay())?"线上缴费车辆数据":"进出车辆数据"; - downFile(filepath, filename,name+".xlsx",response, request); + DownFileUtil.downFile(filepath,name+".xlsx",response, request); FileUtils.forceDelete(file); } catch (Exception e) { e.printStackTrace(); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java index 3db7d7d45..b61bea0c2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java @@ -1,20 +1,29 @@ package com.iformall.service.impl; +import java.io.*; import java.util.*; - import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.WxShop; -import com.iformall.enums.EnumShopStatus; +import com.iformall.enums.*; import com.iformall.mapper.WxShopMapper; import com.iformall.service.WxShopService; +import com.iformall.utils.Constant; +import com.iformall.utils.DownFileUtil; +import org.apache.commons.io.FileUtils; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.xssf.streaming.SXSSFSheet; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; @Service public class WxShopServiceImpl implements WxShopService { @@ -23,7 +32,6 @@ public class WxShopServiceImpl implements WxShopService { @Autowired WxShopMapper wxShopMapper; - @Override public PageInfo listAsPage(WxShop record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxShopMapper.findList(record)); @@ -31,7 +39,6 @@ public class WxShopServiceImpl implements WxShopService { @Override public PageInfo> listMapAsPage(WxShop record, Integer pageIndex, Integer pageSize) { - PageHelper.startPage(pageIndex, pageSize); List> shops = wxShopMapper.findListMap(record); PageInfo> pageInfo = new PageInfo<>(shops); @@ -103,4 +110,132 @@ public class WxShopServiceImpl implements WxShopService { return pageInfo; } + @Override + public void exportShop(WxShop wxShop, HttpServletRequest request, HttpServletResponse response) { + List> shopList = wxShopMapper.findListWithMerchantMap(wxShop); + + SXSSFWorkbook workbook; + String filepath = Constant.fileDirectory; + File savefile = new File(filepath); + if (!savefile.exists()) { + savefile.mkdirs(); + } + String filename = UUID.randomUUID() + ".xlsx"; + filepath = filepath + filename; + + try { + File file = new File(filepath); + workbook = new SXSSFWorkbook(100); + String sheetName = EnumRentShopType.SHOP.getCode().equals(wxShop.getType())?"店铺列表":"多经点位列表"; + SXSSFSheet sheetTwo = workbook.createSheet(sheetName); + Row rowtwo = sheetTwo.createRow(0); + + Cell cell1,cell2,cell3,cell4,cell5,cell6,cell7,cell8,cell9,cell10,cell11; + if(EnumRentShopType.POINT.getCode().equals(wxShop.getType())){ + Cell cell0 = rowtwo.createCell(0); + cell0.setCellValue("多经点位类型"); + cell1 = rowtwo.createCell(1); + cell2 = rowtwo.createCell(2); + cell3 = rowtwo.createCell(3); + cell4 = rowtwo.createCell(4); + cell5 = rowtwo.createCell(5); + cell6 = rowtwo.createCell(6); + cell7 = rowtwo.createCell(7); + cell8 = rowtwo.createCell(8); + cell9 = rowtwo.createCell(9); + cell10 = rowtwo.createCell(10); + cell11 = rowtwo.createCell(11); + }else{ + cell1 = rowtwo.createCell(0); + cell2 = rowtwo.createCell(1); + cell3 = rowtwo.createCell(2); + cell4 = rowtwo.createCell(3); + cell5 = rowtwo.createCell(4); + cell6 = rowtwo.createCell(5); + cell7 = rowtwo.createCell(6); + cell8 = rowtwo.createCell(7); + cell9 = rowtwo.createCell(8); + cell10 = rowtwo.createCell(9); + cell11 = rowtwo.createCell(10); + } + + cell1.setCellValue(EnumRentShopType.SHOP.getCode().equals(wxShop.getType())?"店铺号":"多经点位号"); + cell2.setCellValue("租赁商户"); + cell3.setCellValue("楼层"); + cell4.setCellValue("楼座"); + cell5.setCellValue("建筑面积(㎡)"); + cell6.setCellValue("计租面积(㎡)"); + cell7.setCellValue("状态"); + // 商户信息 + cell8.setCellValue("经营业态"); + cell9.setCellValue("品牌"); + cell10.setCellValue("负责人"); + cell11.setCellValue("负责人电话"); + + for (int i = 0; i < shopList.size(); i++) { + rowtwo = sheetTwo.createRow(i + 1); + Map entity = shopList.get(i); + + if(EnumRentShopType.POINT.getCode().equals(wxShop.getType())){ + Cell cell0 = rowtwo.createCell(0); + if (entity.get("pointType") != null) { + cell0.setCellValue(EnumPointType.getEnum((Integer) entity.get("pointType")).getMessage()); + } + cell1 = rowtwo.createCell(1); + cell2 = rowtwo.createCell(2); + cell3 = rowtwo.createCell(3); + cell4 = rowtwo.createCell(4); + cell5 = rowtwo.createCell(5); + cell6 = rowtwo.createCell(6); + cell7 = rowtwo.createCell(7); + cell8 = rowtwo.createCell(8); + cell9 = rowtwo.createCell(9); + cell10 = rowtwo.createCell(10); + cell11 = rowtwo.createCell(11); + }else{ + cell1 = rowtwo.createCell(0); + cell2 = rowtwo.createCell(1); + cell3 = rowtwo.createCell(2); + cell4 = rowtwo.createCell(3); + cell5 = rowtwo.createCell(4); + cell6 = rowtwo.createCell(5); + cell7 = rowtwo.createCell(6); + cell8 = rowtwo.createCell(7); + cell9 = rowtwo.createCell(8); + cell10 = rowtwo.createCell(9); + cell11 = rowtwo.createCell(10); + } + cell1.setCellValue((String)entity.get("shopNumber")); + cell2.setCellValue((String)entity.get("merchantName")); + cell3.setCellValue((String)entity.get("floor")); + cell4.setCellValue((String)entity.get("building")); + cell5.setCellValue((String)entity.get("buildArea")); + cell6.setCellValue((String)entity.get("operationArea")); + if(entity.get("status") != null) { + if(EnumShopStatus.RENT.getCode().equals(entity.get("status"))) { + cell7.setCellValue("已出租"); + // 查询商户信息 + cell8.setCellValue((String)entity.get("title")); + cell9.setCellValue((String)entity.get("brand")); + cell10.setCellValue((String)entity.get("link_person")); + cell11.setCellValue((String)entity.get("link_phone")); + }else{ + cell7.setCellValue("未出租"); + } + } + } + + FileOutputStream fileOut = new FileOutputStream(file); + workbook.write(fileOut); + fileOut.close(); + workbook.close(); + String name = "店铺列表"; + DownFileUtil.downFile(filepath,name+".xlsx",response, request); + FileUtils.forceDelete(file); + } catch (Exception e) { + e.printStackTrace(); + } + } + + } diff --git a/mallinkService/src/main/java/com/iformall/utils/DownFileUtil.java b/mallinkService/src/main/java/com/iformall/utils/DownFileUtil.java new file mode 100644 index 000000000..047602078 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/utils/DownFileUtil.java @@ -0,0 +1,40 @@ +package com.iformall.utils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; + +/** + * @author luozukai + * 文件下载 + * @date 2019/2/13 15:32 + */ +public class DownFileUtil { + + public static void downFile(String filePath,String exportFileName, HttpServletResponse response, + HttpServletRequest req) throws IOException { + response.reset(); + response.setContentType("bin"); + String agent = req.getHeader("user-agent"); + if (agent.contains("Firefox")) { + response.setHeader("Content-disposition", + "attachment; filename=" + + new String(exportFileName.getBytes("GB2312"), + "ISO-8859-1")); + } else { + response.setHeader("Content-disposition", + "attachment; filename=" + + java.net.URLEncoder.encode(exportFileName, + "UTF-8")); + } + // 循环取出流中的数据 + byte[] b = new byte[1024]; + int len; + InputStream inStream = new FileInputStream(filePath); + while ((len = inStream.read(b)) > 0) + response.getOutputStream().write(b, 0, len); + inStream.close(); + } +} diff --git a/mallinkService/src/main/resources/mapper/WxShopMapper.xml b/mallinkService/src/main/resources/mapper/WxShopMapper.xml index 1e6148900..2b8cba18e 100644 --- a/mallinkService/src/main/resources/mapper/WxShopMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxShopMapper.xml @@ -152,7 +152,8 @@ s.img_url imgUrl,s.operation_area operationArea, s.status,b.building_name building,f.floor_name floor,m.`name` merchantName,m.id merchantId, m.link_person linkPerson,m.link_phone linkPhone,s.manager,s.manager_phone managerPhone, - s.type,s.point_type pointType,s.addr + s.type,s.point_type pointType,s.addr, + m. from wx_shop s left join wx_merchant_shop ms on ms.shop_id=s.id and ms.is_del=0 left join wx_merchant m on ms.merchant_id=m.id left join wx_mall_building b on s.building=b.id @@ -258,10 +259,127 @@ order by s.${sortColumns} + + + + and s.`id` = #{id} + + + + + and s.`tenant_id`= #{tenantId} + + + + + and s.`shop_number` like concat('%', #{shopNumber},'%') + + + + + and s.`build_area` like concat('%', #{buildArea},'%') + + + + + and s.`operation_area` like concat('%', #{operationArea},'%') + + + + + and s.`building`= #{building} + + + + + and s.`floor` = #{floor} + + + + + and s.`status` = #{status} + + + + + and s.`x` = #{x} + + + + + and s.`y` = #{y} + + + + + and s.`addr` like concat('%', #{addr},'%') + + + + + and s.`baidu_poi` like concat('%', #{baiduPoi},'%') + + + + + and s.`longitude` = #{longitude} + + + + + and s.`latitude` = #{latitude} + + + + + and s.`create_date` = #{createDate} + + + + + and s.`update_date` = #{updateDate} + + + + and s.`manager` = #{manager} + + + and s.`manager_phone` = #{managerPhone} + + + and s.`type` = #{type} + + + + and s.`point_type` = #{pointType} + + + and s.id in + + #{idItem} + + + order by s.${sortColumns} + + + +