| package com.matrix.system.hive.statistics; | 
|   | 
| import com.matrix.core.pojo.AjaxResult; | 
| import com.matrix.core.tools.DateUtil; | 
| import com.matrix.core.tools.LogUtil; | 
| import com.matrix.core.tools.StringUtils; | 
| import com.matrix.core.tools.excl.ExcelSheetPO; | 
| import com.matrix.core.tools.excl.ExcelUtil; | 
| import com.matrix.core.tools.excl.ExcelVersion; | 
| import com.matrix.system.common.tools.DataAuthUtil; | 
| import com.matrix.system.hive.action.util.QueryUtil; | 
| import com.matrix.system.hive.dao.SysOrderFlowDao; | 
| import com.matrix.system.hive.dto.OrderFlowListDto; | 
| import com.matrix.system.hive.vo.OrderFlowVo; | 
| import io.swagger.annotations.Api; | 
| import io.swagger.annotations.ApiOperation; | 
| import io.swagger.annotations.ApiResponse; | 
| import io.swagger.annotations.ApiResponses; | 
| import org.springframework.web.bind.annotation.*; | 
|   | 
| import javax.annotation.Resource; | 
| import javax.servlet.http.HttpServletResponse; | 
| import java.io.IOException; | 
| import java.io.OutputStream; | 
| import java.text.SimpleDateFormat; | 
| import java.util.ArrayList; | 
| import java.util.Date; | 
| import java.util.List; | 
|   | 
| /** | 
|  * 交易流水统计 | 
|  */ | 
| @CrossOrigin(origins = "*") | 
| @Api(value = "OrderFlowAction", tags = "交易流水") | 
| @RestController | 
| @RequestMapping(value = "/admin/orderFlow") | 
| public class OrderFlowAction { | 
|   | 
|     @Resource | 
|     private SysOrderFlowDao orderFlowDao; | 
|     /** | 
|      * 交易流水查询 | 
|      */ | 
|   | 
|     @ApiOperation(value = "查询交易流水") | 
|     @ApiResponses({ | 
|             @ApiResponse(code = 200, message = "OK",  response = OrderFlowListDto.class) | 
|     }) | 
|     @PostMapping(value = "/findOrderFlow") | 
|     public @ResponseBody | 
|     AjaxResult findOrderFlow(@RequestBody OrderFlowListDto orderFlowListDto) { | 
|         if(StringUtils.isBlank(orderFlowListDto.getSort())){ | 
|             orderFlowListDto.setSort("createTime"); | 
|             orderFlowListDto.setOrder("desc"); | 
|         } | 
|         if (!DataAuthUtil.hasAllShopAuth()) { | 
|             QueryUtil.setQueryLimit(orderFlowListDto); | 
|         } else { | 
|             QueryUtil.setQueryLimitCom(orderFlowListDto); | 
|         } | 
|         List<OrderFlowVo> rows = orderFlowDao.selectInPage(orderFlowListDto); | 
|         Integer total = orderFlowDao.selectTotal(orderFlowListDto); | 
|         AjaxResult result = AjaxResult.buildSuccessInstance(rows, total); | 
|         return result; | 
|     } | 
|   | 
|     /** | 
|      * 导出Excel | 
|      */ | 
|     @GetMapping(value = "/exportOrderFlowExcel") | 
|     public void exportOrderFlowExcel(OrderFlowListDto orderFlowListDto, HttpServletResponse res) { | 
|         OutputStream os = null; | 
|         try { | 
|             if (!DataAuthUtil.hasAllShopAuth()) { | 
|                 QueryUtil.setQueryLimit(orderFlowListDto); | 
|             } else { | 
|                 QueryUtil.setQueryLimitCom(orderFlowListDto); | 
|             } | 
|             orderFlowListDto.setLimit(null); | 
|             List<OrderFlowVo> rows = orderFlowDao.selectInPage(orderFlowListDto); | 
|             res.setCharacterEncoding("UTF-8"); | 
|             res.setHeader("content-type", "application/octet-stream;charset=UTF-8"); | 
|             res.setContentType("application/octet-stream;charset=UTF-8"); | 
|   | 
|             Date date = new Date(); | 
|             SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss"); | 
|             res.setHeader("Content-Disposition", "attachment;filename=" + | 
|                     java.net.URLEncoder.encode("交易流水" + dateFormat.format(date) + ".xlsx".trim(), "UTF-8")); | 
|             os = res.getOutputStream(); | 
|             ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, disPoseExcelData(rows), os, true); | 
|         } catch (Exception e) { | 
|             LogUtil.error("交易流水导出异常", e); | 
|         } finally { | 
|             if (os != null) { | 
|                 try { | 
|                     os.close(); | 
|                 } catch (IOException e) { | 
|                     LogUtil.error("关闭资源异常", e); | 
|                 } | 
|             } | 
|         } | 
|     } | 
|   | 
|     private List<ExcelSheetPO> disPoseExcelData(List<OrderFlowVo> orderFlowVos) { | 
|         List<ExcelSheetPO> res = new ArrayList<>(); | 
|         ExcelSheetPO orderSheet = new ExcelSheetPO(); | 
|         orderSheet.setSheetName("交易流水"); | 
|         orderSheet.setTitle("交易流水"); | 
|         String[] header = new String[]{"订单编号", "交易内容", "交易时间", "交易类型", "交易金额", "会员姓名", | 
|                 "支付方式", "支付流水号", "操作人",  "门店名称"}; | 
|         orderSheet.setHeaders(header); | 
|         List<List<Object>> body = new ArrayList<>(); | 
|         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); | 
|         for (OrderFlowVo flowVo : orderFlowVos) { | 
|                 List<Object> bodyItem = new ArrayList<>(); | 
|                 bodyItem.add(flowVo.getOrderNo()); | 
|                 bodyItem.add(flowVo.getFlowContent()); | 
|                 bodyItem.add(DateUtil.dateFormatStr(flowVo.getCreateTime(),DateUtil.DATE_FORMAT_MM)); | 
|                 bodyItem.add(flowVo.getFlowType()); | 
|                 bodyItem.add(flowVo.getAmount()); | 
|                 bodyItem.add(flowVo.getVipName()); | 
|                 bodyItem.add(flowVo.getPayMethod()); | 
|                 bodyItem.add(flowVo.getFlowNo()); | 
|                 bodyItem.add(flowVo.getStaffName()); | 
|                 bodyItem.add(flowVo.getShopName()); | 
|                 body.add(bodyItem); | 
|         } | 
|         orderSheet.setDataList(body); | 
|         res.add(orderSheet); | 
|         return res; | 
|     } | 
|   | 
|   | 
|   | 
|   | 
| } |