管理端支持下载结算单账单

This commit is contained in:
pikachu1995@126.com 2024-01-24 09:48:25 +08:00
parent 9e3b9c8f38
commit 178544fe2d
2 changed files with 81 additions and 8 deletions

View File

@ -30,6 +30,10 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@ -37,9 +41,9 @@ import org.springframework.transaction.annotation.Transactional;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.Date;
import java.util.List;
import java.util.*;
/**
* 结算单业务层实现
@ -217,8 +221,61 @@ public class BillServiceImpl extends ServiceImpl<BillMapper, Bill> implements Bi
@Override
public void download(HttpServletResponse response, String id) {
Bill bill = this.getById(id);
ExcelWriter writer = ExcelUtil.getWriterWithSheet("入账订单");
//创建Excel工作薄对象
ExcelWriter writer = ExcelUtil.getWriterWithSheet("店铺结算单");
writer.setSheet("店铺结算单");
Map<String,Object> map=new LinkedHashMap<>();
map.put("创建时间",DateUtil.format(bill.getCreateTime(), "yyyy-MM-dd"));
writer.setColumnWidth(0, 15);
map.put("账单号",bill.getSn());
writer.setColumnWidth(1, 30);
map.put("结算开始时间",DateUtil.format(bill.getStartTime(), "yyyy-MM-dd"));
writer.setColumnWidth(2, 15);
map.put("结算结束时间",DateUtil.format(bill.getEndTime(), "yyyy-MM-dd"));
writer.setColumnWidth(3, 15);
map.put("账单状态",BillStatusEnum.valueOf(bill.getBillStatus()).description());
map.put("店铺名称",bill.getStoreName());
writer.setColumnWidth(5, 15);
map.put("平台付款时间",DateUtil.format(bill.getPayTime(), "yyyy-MM-dd"));
writer.setColumnWidth(6, 15);
map.put("银行开户名",bill.getBankAccountName());
writer.setColumnWidth(7, 15);
map.put("银行账号",bill.getBankAccountNumber());
writer.setColumnWidth(8, 15);
map.put("开户行",bill.getBankName());
writer.setColumnWidth(9, 15);
map.put("联行号",bill.getBankCode());
map.put("订单金额",bill.getOrderPrice());
map.put("退单金额",bill.getRefundPrice());
map.put("平台收取服务费",bill.getCommissionPrice());
writer.setColumnWidth(13, 15);
map.put("退单退回平台服务费",bill.getRefundCommissionPrice());
writer.setColumnWidth(14, 25);
map.put("分销佣金",bill.getDistributionCommission());
map.put("退单退还分销佣金",bill.getDistributionRefundCommission());
writer.setColumnWidth(16, 20);
map.put("平台优惠券补贴",bill.getSiteCouponCommission());
writer.setColumnWidth(17, 15);
map.put("退单退回平台优惠券补贴",bill.getSiteCouponRefundCommission());
writer.setColumnWidth(18, 25);
map.put("积分商品补贴",bill.getSiteCouponCommission());
writer.setColumnWidth(19, 15);
map.put("积分商品补贴",bill.getPointSettlementPrice());
writer.setColumnWidth(20, 15);
map.put("退单退回积分商品补贴",bill.getPointRefundSettlementPrice());
writer.setColumnWidth(21, 25);
map.put("砍价商品补贴",bill.getKanjiaSettlementPrice());
writer.setColumnWidth(22, 15);
map.put("退单退回砍价补贴",bill.getKanjiaRefundSettlementPrice());
writer.setColumnWidth(23, 25);
map.put("最终结算金额",bill.getBillPrice());
writer.setColumnWidth(24, 15);
writer.writeRow(map,true);
writer.setSheet("入账订单");
writer.addHeaderAlias("createTime", "入账时间");
writer.setColumnWidth(0, 20);
@ -241,7 +298,6 @@ public class BillServiceImpl extends ServiceImpl<BillMapper, Bill> implements Bi
writer.addHeaderAlias("billPrice", "应结金额");
writer.setColumnWidth(11, 20);
List<StoreFlowPayDownloadVO> storeFlowList = storeFlowService.getStoreFlowPayDownloadVO(StoreFlowQueryDTO.builder().type(FlowTypeEnum.PAY.name()).bill(bill).build());
writer.write(storeFlowList, true);
@ -256,7 +312,7 @@ public class BillServiceImpl extends ServiceImpl<BillMapper, Bill> implements Bi
writer.setColumnWidth(3, 20);
writer.addHeaderAlias("goodsName", "商品名称");
writer.setColumnWidth(4, 70);
writer.addHeaderAlias("num", "销售");
writer.addHeaderAlias("num", "退款");
writer.addHeaderAlias("finalPrice", "退款金额");
writer.addHeaderAlias("commissionPrice", "平台分佣");
writer.addHeaderAlias("siteCouponPrice", "平台优惠券");
@ -269,23 +325,26 @@ public class BillServiceImpl extends ServiceImpl<BillMapper, Bill> implements Bi
writer.addHeaderAlias("billPrice", "结算金额");
writer.setColumnWidth(12, 20);
List<StoreFlowRefundDownloadVO> storeFlowRefundDownloadVOList = storeFlowService.getStoreFlowRefundDownloadVO(StoreFlowQueryDTO.builder().type(FlowTypeEnum.REFUND.name()).bill(bill).build());
writer.write(storeFlowRefundDownloadVOList, true);
ServletOutputStream out = null;
try {
writer.setOnlyAlias(true);
//设置公共属性列表名称
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(bill.getStoreName() + "-" + bill.getSn(), "UTF8") + ".xls");
response.setHeader("Content-Disposition", URLEncoder.encode("店铺结算单详情", "UTF8") + ".xls");
out = response.getOutputStream();
writer.flush(out, true);
} catch (Exception e) {
log.error("下载结算单错误", e);
log.error("下载列表错误", e);
} finally {
writer.close();
IoUtil.close(out);
}
}
}

View File

@ -1,6 +1,8 @@
package cn.lili.controller.store;
import cn.lili.common.context.ThreadContextHolder;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.security.OperationalJudgment;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.order.order.entity.dos.StoreFlow;
@ -17,6 +19,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull;
/**
@ -66,4 +69,15 @@ public class BillManagerController {
return ResultUtil.success();
}
@ApiOperation(value = "下载结算单", produces = "application/octet-stream")
@ApiImplicitParam(name = "id", value = "结算单ID", required = true, paramType = "path", dataType = "String")
@GetMapping(value = "/downLoad/{id}")
public void downLoadDeliverExcel(@PathVariable String id) {
OperationalJudgment.judgment(billService.getById(id));
HttpServletResponse response = ThreadContextHolder.getHttpResponse();
billService.download(response, id);
}
}