123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- package com.kmall.admin.controller;
- import com.kmall.admin.dto.ExportExcelDto;
- import com.kmall.admin.dto.TaxDetailDto;
- import com.kmall.admin.entity.OrderEntity;
- import com.kmall.admin.service.OrderService;
- import com.kmall.admin.service.SalesDataUploadService;
- import com.kmall.admin.utils.ParamUtils;
- import com.kmall.common.constant.Dict;
- import com.kmall.common.utils.DateUtils;
- import com.kmall.common.utils.R;
- import com.kmall.common.utils.excel.ExcelExport;
- 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.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * @author zhangchuangbiao
- * @version 1.0
- * 2020-12-22 13:59
- */
- @RestController
- @RequestMapping("exportExcel")
- public class ExportExcelController {
- private static String ISO = "iso-8859-1";
- private static String UTF = "utf-8";
- private static final Logger LOGGER = LoggerFactory.getLogger(ExportExcelController.class);
- @Autowired
- private OrderService orderService;
- @Autowired
- private SalesDataUploadService salesDataUploadService;
- @RequestMapping(value = "/exportSalesExcel")
- public R exportOffilineOrder(@RequestParam Map<String, Object> params, HttpServletResponse response, HttpServletRequest request) throws ParseException {
- ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
- // 账单日期
- String billDate = (String) params.get("billDate");
- params = ParamUtils.setTimeMap(params);
- try {
- billDate = new String(billDate.getBytes(ISO), UTF);
- } catch (Exception e) {
- e.printStackTrace();
- }
- billDate = DateUtils.getDate(billDate);
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- Date sDate = sdf.parse(billDate);
- Calendar c = Calendar.getInstance();
- c.setTime(sDate);
- c.add(Calendar.DAY_OF_MONTH, 1);//利用Calendar 实现 Date日期+1天
- sDate = c.getTime();
- // 汇总日期
- String summaryDate = sdf.format(sDate);
- params.put("isOnfiilineOrder", Dict.isOnfflineOrder.item_1.getItem());
- SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
- ExcelExport ee = new ExcelExport("CW保税 新零售销售额统计_"+format.format(new Date()));
- // ==================================第一个sheet-销售总额===============================================
- ExportExcelDto exportExcelDto = orderService.querySumAmount(billDate,"");
- Map<String,String> firstSheetFirstRowValue = new HashMap<>();
- // "汇总日期","账单日期","销售含税总额","当期退T-1日前金额","销售含税净额","销售税前总额","税款总额","当期退T-1日前税款","当期税款金额","成功订单数"
- firstSheetFirstRowValue.put("汇总日期",summaryDate); // 汇总日期
- firstSheetFirstRowValue.put("账单日期",billDate); // 账单日期
- firstSheetFirstRowValue.put("销售含税总额",exportExcelDto.getTotalAmount()); // 销售含税总额
- firstSheetFirstRowValue.put("当期退T-1日前金额",exportExcelDto.getRefundPreviousAmount()); // 当期退T-1日前金额
- firstSheetFirstRowValue.put("销售含税净额",exportExcelDto.getNetAmount()); // 销售含税净额
- firstSheetFirstRowValue.put("销售税前总额",exportExcelDto.getPreTaxTotalAmount()); // 销售税前总额
- firstSheetFirstRowValue.put("税款总额",exportExcelDto.getTotalTax()); // 税款总额
- firstSheetFirstRowValue.put("当期退T-1日前税款",exportExcelDto.getPreviousTax()); // 当前退T-1日前税款
- firstSheetFirstRowValue.put("当期税款金额",exportExcelDto.getCurrentTax()); // 当期税款金额
- firstSheetFirstRowValue.put("成功订单数",exportExcelDto.getSuccessNumber()); // 成功订单数
- Map<String,String> firstSheetSecondRowValue = new HashMap<>();
- // "汇总日期","账单日期","当期退当天金额(销售总额已减扣)","当期退当天订单数","退T-1日前订单总额(销售总额已减扣)","退T-1日前订单总数","当期退单总额(销售总额已减扣)","当日退款总单数"
- firstSheetSecondRowValue.put("汇总日期",summaryDate); // 汇总日期
- firstSheetSecondRowValue.put("账单日期",billDate); // 账单日期
- firstSheetSecondRowValue.put("当期退当天金额(销售总额已减扣)",exportExcelDto.getRefundCurrentAmount()); // 当期退当天金额(销售总额已减扣)
- firstSheetSecondRowValue.put("当期退当天订单数",exportExcelDto.getRefundCurrentCount()); // 当期退当天订单数
- firstSheetSecondRowValue.put("退T-1日前订单总额(销售总额已减扣)",exportExcelDto.getRefundPreviousAmount()); // 退T-1日前订单总额(销售总额已减扣)
- firstSheetSecondRowValue.put("退T-1日前订单总数",exportExcelDto.getRefundPreviousCount()); // 退T-1日前订单总数
- firstSheetSecondRowValue.put("当期退单总额(销售总额已减扣)",exportExcelDto.getRefundAmount()); // 当期退单总额(销售总额已减扣)
- firstSheetSecondRowValue.put("当日退款总单数",exportExcelDto.getRefundCount()); // 当日退款总单数
- // ==================================第二个sheet-销售订单金额===========================================
- String[] saleHeader = new String[]{"订单编号", "操作店员", "购买类型", "订单业务类型", "订单状态",
- "付款状态", "实际支付", "订单总价","下单时间", "付款时间", "退T-1日前订单金额", "T-1日前订单生成时间"};
- Map<String,List<OrderEntity>> orderEntityListMap = orderService.querySaleOrderList(billDate,"");
- // 当期的订单
- List<OrderEntity> orderEntityList = orderEntityListMap.get("current");
- List<Map<String, Object>> list = new LinkedList<>();
- if (orderEntityList != null && orderEntityList.size() > 0) {
- for (OrderEntity orderEntity : orderEntityList) {
- LinkedHashMap<String, Object> map = new LinkedHashMap<>();
- // 订单业务类型
- String orderBizType = orderEntity.getOrderBizType();
- // 订单状态
- Integer orderStatus = orderEntity.getOrderStatus();
- // 付款状态
- Integer payStatus = orderEntity.getPayStatus();
- map.put("订单编号", orderEntity.getOrderSn());
- map.put("操作店员", orderEntity.getUserName());
- map.put("购买类型", Dict.isOnfflineOrder.item_1.getItem().equals(orderEntity.getIsOnfflineOrder()) ? "线下购买" : "线上购买");
- map.put("订单业务类型", StringUtils.isEmpty(orderBizType)?"":Dict.orderBizType.valueOf("item_"+orderBizType).getItemName());
- map.put("订单状态", Dict.orderStatus.valueOf("item_"+orderStatus).getItemName());
- map.put("付款状态", Dict.payStatus.valueOf("item_"+payStatus).getItemName());
- map.put("实际支付", orderEntity.getActualPrice());
- map.put("订单总价", orderEntity.getOrderPrice());
- map.put("下单时间", orderEntity.getAddTime());
- map.put("付款时间", orderEntity.getPayTime());
- map.put("退T-1日前订单金额", orderEntity.getPayTime());
- map.put("T-1日前订单生成时间", orderEntity.getPayTime());
- list.add(map);
- }
- }
- // 前期的订单
- List<OrderEntity> previousList = orderEntityListMap.get("previous");
- if (previousList != null && previousList.size() > 0) {
- for (OrderEntity orderEntity : previousList) {
- LinkedHashMap<String, Object> map = new LinkedHashMap<>();
- // 订单业务类型
- String orderBizType = orderEntity.getOrderBizType();
- // 订单状态
- Integer orderStatus = orderEntity.getOrderStatus();
- // 付款状态
- Integer payStatus = orderEntity.getPayStatus();
- map.put("订单编号", orderEntity.getOrderSn());
- map.put("操作店员", orderEntity.getUserName());
- map.put("购买类型", Dict.isOnfflineOrder.item_1.getItem().equals(orderEntity.getIsOnfflineOrder()) ? "线下购买" : "线上购买");
- map.put("订单业务类型", StringUtils.isEmpty(orderBizType)?"":Dict.orderBizType.valueOf("item_"+orderBizType).getItemName());
- map.put("订单状态", Dict.orderStatus.valueOf("item_"+orderStatus).getItemName());
- map.put("付款状态", Dict.payStatus.valueOf("item_"+payStatus).getItemName());
- map.put("实际支付", orderEntity.getActualPrice());
- map.put("订单总价", orderEntity.getOrderPrice());
- map.put("下单时间", "");
- map.put("付款时间", "");
- map.put("退T-1日前订单金额", orderEntity.getActualPrice());
- map.put("T-1日前订单生成时间", orderEntity.getPayTime());
- list.add(map);
- }
- }
- // ==================================第三个sheet-订单税款明细===========================================
- String[] taxDetailHeader = new String[]{"订单编号", "门店编号", "门店名称", "商品编码", "完税总价格",
- "进口增值税率(%)", "进口从价消费税率(%)", "应征增值税", "应征消费税", "总税额",
- "税单接收时间","退T-1日前应征增值税","退T-1日前应征消费税","退T-1日前总税额","T-1日前生成时间"};
- Map<String,List<TaxDetailDto>> TaxDetailEntityListMap = orderService.queryTaxDetailList(billDate,"");
- List<Map<String,Object>> taxList = new LinkedList<>();
- // 获取当前税率
- List<TaxDetailDto> current = TaxDetailEntityListMap.get("current");
- if (current != null && current.size() > 0) {
- for (TaxDetailDto taxDetailDto : current) {
- LinkedHashMap<String, Object> map = new LinkedHashMap<>();
- map.put("订单编号", taxDetailDto.getOrderSn());
- map.put("门店编号", taxDetailDto.getStoreSn());
- map.put("门店名称", taxDetailDto.getStoreName());
- map.put("商品编码", taxDetailDto.getSku());
- map.put("完税总价格", taxDetailDto.getPretaxPrice());
- map.put("进口增值税率(%)", taxDetailDto.getVatRate());
- map.put("进口从价消费税率(%)", taxDetailDto.getSaleTaxRate());
- map.put("应征增值税", taxDetailDto.getVat());
- map.put("应征消费税", taxDetailDto.getSaleTax());
- map.put("总税额", taxDetailDto.getTax());
- map.put("税单接收时间", taxDetailDto.getReceiveTaxTime());
- taxList.add(map);
- }
- }
- List<TaxDetailDto> previous = TaxDetailEntityListMap.get("previous");
- if (previous != null && previous.size() > 0) {
- for (TaxDetailDto taxDetailDto : previous) {
- LinkedHashMap<String, Object> map = new LinkedHashMap<>();
- map.put("订单编号", taxDetailDto.getOrderSn());
- map.put("门店编号", taxDetailDto.getStoreSn());
- map.put("门店名称", taxDetailDto.getStoreName());
- map.put("商品编码", taxDetailDto.getSku());
- map.put("完税总价格", taxDetailDto.getPretaxPrice());
- map.put("进口增值税率(%)", taxDetailDto.getVatRate());
- map.put("进口从价消费税率(%)", taxDetailDto.getSaleTaxRate());
- map.put("退T-1日前应征增值税", taxDetailDto.getPreVat());
- map.put("退T-1日前应征消费税", taxDetailDto.getPreSaleTax());
- map.put("退T-1日前总税额", taxDetailDto.getPreTax());
- map.put("T-1日前生成时间", taxDetailDto.getPreTaxTime());
- taxList.add(map);
- }
- }
- ee.addSalesFirstSheet("销售总额", firstSheetFirstRowValue, firstSheetSecondRowValue);
- ee.addSheetByMap("销售订单金额", list, saleHeader);
- ee.addSheetByMap("订单税款明细", taxList, taxDetailHeader);
- ee.export(response);
- return R.ok();
- }
- }
|