src/main/java/com/mzl/flower/dto/request/report/QueryOrderDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/dto/response/report/OrderDetailReportResultVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/mapper/report/OrderReportMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/service/report/OrderReportService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/web/v2/report/OrderReportController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/payment/OrderItemMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/report/OrderReportMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/mzl/flower/dto/request/report/QueryOrderDTO.java
@@ -26,4 +26,11 @@ @ApiModelProperty(value = "合伙人id") private Long partnerId; @ApiModelProperty(value = "下单日期") @JsonFormat(pattern="yyyy-MM-dd" ,timezone="GMT+8") @DateTimeFormat(pattern="yyyy-MM-dd") @NotNull(message = "下单日期不能为空") private LocalDate calDate; } src/main/java/com/mzl/flower/dto/response/report/OrderDetailReportResultVO.java
对比新文件 @@ -0,0 +1,89 @@ package com.mzl.flower.dto.response.report; import com.mzl.flower.base.AbstractTransDTO; import com.mzl.flower.base.annotation.DictTrans; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data public class OrderDetailReportResultVO extends AbstractTransDTO { @ApiModelProperty("订单号") private String orderNo; @ApiModelProperty("下单用户") private String customer; @ApiModelProperty("收货人地址") private String address; @ApiModelProperty("合伙人") private String partnerName; @ApiModelProperty("下单时间") private LocalDateTime orderDate; @ApiModelProperty("订单金额") private BigDecimal orderTotal; @ApiModelProperty("花农底价") private BigDecimal orderSupplierPriceAmount; @ApiModelProperty("平台区间加价") private BigDecimal orderMarkupOneAmount; @ApiModelProperty("平台加价") private BigDecimal orderMarkupTwoAmount; @ApiModelProperty("平台区域加价") private BigDecimal platformAreaFeeAmount; @ApiModelProperty("合伙人加价") private BigDecimal orderMarkupPartnerAmount; @ApiModelProperty("合伙人区间加价") private BigDecimal partnerSectionFeeAmount; @ApiModelProperty("会员折扣") private BigDecimal orderPriceDiscountAmount; @ApiModelProperty("优惠券") private BigDecimal orderCouponAmountTotal; @ApiModelProperty("质检降级扣款") private BigDecimal orderCheckFee; @ApiModelProperty("质检缺货扣款") private BigDecimal orderLackFeeSupplier; @ApiModelProperty("质检补货扣款") private BigDecimal orderReplaceFee; @ApiModelProperty("售后扣合伙人款") private BigDecimal orderFeePartner; @ApiModelProperty("售后扣花农款") private BigDecimal orderFeeSupplier; @ApiModelProperty("售后扣平台款") private BigDecimal orderFeePlatform; @ApiModelProperty("总包干费") private BigDecimal partnerTotalFeeAmount; @ApiModelProperty("销售扎数") private Integer realSaleNum; @ApiModelProperty("利润") private BigDecimal profitFeeAmount; @ApiModelProperty("结算状态") @DictTrans(target = "settleStatusStr", codeType = "ORDER_STATUS_BACKEND") private String settleStatus; private String settleStatusStr; } src/main/java/com/mzl/flower/mapper/report/OrderReportMapper.java
@@ -1,9 +1,15 @@ package com.mzl.flower.mapper.report; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.dto.response.report.OrderDetailReportResultVO; import com.mzl.flower.dto.response.report.OrderReportCalendarBO; import com.mzl.flower.dto.response.report.OrderReportResultVO; import org.apache.ibatis.annotations.Param; import java.util.List; public interface OrderReportMapper { OrderReportResultVO getOrderDateReport(@Param("dto") OrderReportCalendarBO calendarBO); List<OrderDetailReportResultVO> getOrderDetailReport(@Param("dto") OrderReportCalendarBO calendarBO, Page page); } src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java
@@ -1,7 +1,9 @@ package com.mzl.flower.service.impl.report; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.config.exception.ValidationException; import com.mzl.flower.dto.request.report.QueryOrderDTO; import com.mzl.flower.dto.response.report.OrderDetailReportResultVO; import com.mzl.flower.dto.response.report.OrderReportCalendarBO; import com.mzl.flower.dto.response.report.OrderReportResultVO; import com.mzl.flower.mapper.report.OrderReportMapper; @@ -10,18 +12,17 @@ import com.mzl.flower.service.report.OrderReportService; import com.mzl.flower.utils.ExcelExportUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.servlet.http.HttpServletResponse; import java.net.URLEncoder; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.stream.Collectors; @@ -51,6 +52,21 @@ return vo2; }).collect(Collectors.toList()); page.setRecords(list); return page; } @Override public Page<OrderDetailReportResultVO> getOrderDetailPage(Page page, QueryOrderDTO dto) { OrderReportCalendarBO orderReportCalendarBO = new OrderReportCalendarBO(); if (StringUtils.isEmpty(dto.getCalDate())) { throw new ValidationException("日期不能为空"); } LocalDateTime orderTime = dto.getCalDate().atStartOfDay(); orderReportCalendarBO.setPartnerId(dto.getPartnerId()); orderReportCalendarBO.setStartDate(calculateStartTime(orderTime)); orderReportCalendarBO.setEndDate(calculateEndTime(orderTime)); List<OrderDetailReportResultVO> list = orderReportMapper.getOrderDetailReport(orderReportCalendarBO, page); page.setRecords(list); return page; } @@ -124,6 +140,67 @@ } } @Override public void exportOrderDetail(HttpServletResponse response, QueryOrderDTO dto) { if (StringUtils.isEmpty(dto.getCalDate())) { throw new ValidationException("日期不能为空"); } OrderReportCalendarBO orderReportCalendarBO = new OrderReportCalendarBO(); LocalDateTime orderTime = dto.getCalDate().atStartOfDay(); orderReportCalendarBO.setPartnerId(dto.getPartnerId()); orderReportCalendarBO.setStartDate(calculateStartTime(orderTime)); orderReportCalendarBO.setEndDate(calculateEndTime(orderTime)); List<OrderDetailReportResultVO> odrs = orderReportMapper.getOrderDetailReport(orderReportCalendarBO, null); String[] rowsName = new String[]{"序号","订单号", "下单用户", "收货人地址", "合伙人", "下单时间", "订单金额" , "花农底价", "平台区间加价", "平台加价", "平台区域加价", "合伙人加价", "合伙人区间加价", "会员折扣" , "优惠券", "降级扣款", "缺货扣款", "补货扣款", "售后扣合伙人款", "售后扣花农款", "售后扣平台款", "总包干费" , "销售扎数", "利润", "结算状态"}; List<Object[]> dataList = new ArrayList<>(); int sn = 1; for (OrderDetailReportResultVO o : odrs) { Object[] objs = new Object[rowsName.length]; int a = 0; objs[a++] = sn; objs[a++] = o.getOrderNo(); objs[a++] = o.getCustomer(); objs[a++] = o.getAddress(); objs[a++] = o.getPartnerName(); objs[a++] = o.getOrderDate(); objs[a++] = o.getOrderTotal(); objs[a++] = o.getOrderSupplierPriceAmount(); objs[a++] = o.getOrderMarkupOneAmount(); objs[a++] = o.getOrderMarkupTwoAmount(); objs[a++] = o.getPlatformAreaFeeAmount(); objs[a++] = o.getOrderMarkupPartnerAmount(); objs[a++] = o.getPartnerSectionFeeAmount(); objs[a++] = o.getOrderPriceDiscountAmount(); objs[a++] = o.getOrderCouponAmountTotal(); objs[a++] = o.getOrderCheckFee(); objs[a++] = o.getOrderLackFeeSupplier(); objs[a++] = o.getOrderReplaceFee(); objs[a++] = o.getOrderFeePartner(); objs[a++] = o.getOrderFeeSupplier(); objs[a++] = o.getOrderFeePlatform(); objs[a++] = o.getPartnerTotalFeeAmount(); objs[a++] = o.getRealSaleNum(); objs[a++] = o.getProfitFeeAmount(); objs[a++] = o.getSettleStatus(); dataList.add(objs); sn++; } ExcelExportUtil excelExportUtil = new ExcelExportUtil("订单结算明细", rowsName, dataList, response); try { response.addHeader("filename", URLEncoder.encode("订单结算明细.xls", "UTF-8")); response.addHeader("Access-Control-Expose-Headers", "filename"); excelExportUtil.export(); } catch (Exception e) { log.error(e.getMessage(), e); } } // 计算 startDate 的前一天 17:00:00 public static LocalDateTime calculateStartTime(LocalDateTime startDateTime) { // 获取 LocalDate 部分 src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java
@@ -247,6 +247,7 @@ objs[a++] = format(d.getCreateTime(), "yyyy-MM-dd HH:mm:ss"); objs[a++] = d.getRemarks(); dataList.add(objs); sn++; src/main/java/com/mzl/flower/service/report/OrderReportService.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.dto.request.report.QueryOrderDTO; import com.mzl.flower.dto.response.report.OrderDetailReportResultVO; import com.mzl.flower.dto.response.report.OrderReportResultVO; import javax.servlet.http.HttpServletResponse; @@ -9,7 +10,12 @@ public interface OrderReportService { Page<OrderReportResultVO> getSalePage(Page page, QueryOrderDTO dto); //获取当天销售结算统计结果 Page<OrderDetailReportResultVO> getOrderDetailPage(Page page, QueryOrderDTO dto); OrderReportResultVO getSaleStatis(QueryOrderDTO dto); void exportSalesList(HttpServletResponse response, QueryOrderDTO dto); public void exportOrderDetail(HttpServletResponse response, QueryOrderDTO queryOrderDTO); } src/main/java/com/mzl/flower/web/v2/report/OrderReportController.java
@@ -5,24 +5,13 @@ import com.mzl.flower.base.BaseController; import com.mzl.flower.base.R; import com.mzl.flower.base.ReturnDataDTO; import com.mzl.flower.config.exception.ValidationException; import com.mzl.flower.dto.request.coupon.CreateCouponRecordDTO; import com.mzl.flower.dto.request.coupon.QueryCouponRecordDTO; import com.mzl.flower.dto.request.payment.OrderItemSalesQueryDTO; import com.mzl.flower.dto.request.report.QueryOrderDTO; import com.mzl.flower.dto.response.coupon.CouponRecordResultVO; import com.mzl.flower.dto.response.coupon.CouponRecordVO; import com.mzl.flower.dto.response.report.OrderDetailReportResultVO; import com.mzl.flower.dto.response.report.OrderReportResultVO; import com.mzl.flower.entity.coupon.CouponRecordDO; import com.mzl.flower.entity.coupon.CouponTemplateDO; import com.mzl.flower.enums.CouponStatusEnum; import com.mzl.flower.service.coupon.CouponRecordService; import com.mzl.flower.service.coupon.CouponTemplateService2; import com.mzl.flower.service.report.OrderReportService; import com.mzl.flower.utils.ConverterUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; @@ -67,4 +56,16 @@ orderReportService.exportSalesList(response, dto); } @GetMapping("/detail/page") @ApiOperation(value = "查询-分页", notes = "查询-分页") public ResponseEntity<ReturnDataDTO<Page<OrderDetailReportResultVO>>> detail(Page page, QueryOrderDTO dto) { return returnData(R.SUCCESS.getCode(), orderReportService.getOrderDetailPage(page, dto)); } @GetMapping("/detail/export") @ApiOperation(value = "订单结算明细导出") public void exportOrderDetail(HttpServletResponse response, QueryOrderDTO queryOrderDTO) { orderReportService.exportOrderDetail(response, queryOrderDTO); } } src/main/resources/mapper/payment/OrderItemMapper.xml
@@ -29,7 +29,21 @@ where oic.order_item_id = oi.id and oic.type = 'reduce' and oic.audit_status = 'AGREED' ) reduceAmount ) reduceAmountSELECT oi.*, s.name stationName, si.contact_tel supplierTel, si.contact_name supplierContact , (select oic.num from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'replace') replaceNum , (select oic.num from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'reduce') reduceNum , (select oic.num from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'lack') lackNum , (select oic.audit_status from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'replace') replaceStatus , (select oic.audit_status from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'reduce') reduceStatus , (select oic.audit_status from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'lack') lackStatus , (select count(1) from t_order_item_check oic where oic.order_item_id = oi.id and oic.audit_status is null) unProcessCount , ois.lack_fee_supplier, ois.replace_fee, ois.check_fee FROM t_order_item oi left join t_station s on s.id = oi.station_id left join t_supplier_info si on si.id = oi.supplier_id left join t_order_item_settlement ois on ois.order_item_id = oi.id WHERE oi.deleted = 0 and oi.order_id = #{orderId} , (select oic.deduct_amount from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'lack' @@ -42,21 +56,7 @@ </select> <select id="getPlatformOrderItems" resultType="com.mzl.flower.dto.response.payment.OrderItemPlatformListDTO"> SELECT oi.*, s.name stationName, si.contact_tel supplierTel, si.contact_name supplierContact , (select oic.num from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'replace') replaceNum , (select oic.num from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'reduce') reduceNum , (select oic.num from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'lack') lackNum , (select oic.audit_status from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'replace') replaceStatus , (select oic.audit_status from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'reduce') reduceStatus , (select oic.audit_status from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'lack') lackStatus , (select count(1) from t_order_item_check oic where oic.order_item_id = oi.id and oic.audit_status is null) unProcessCount , ois.lack_fee_supplier, ois.replace_fee, ois.check_fee FROM t_order_item oi left join t_station s on s.id = oi.station_id left join t_supplier_info si on si.id = oi.supplier_id left join t_order_item_settlement ois on ois.order_item_id = oi.id WHERE oi.deleted = 0 and oi.order_id = #{orderId} </select> <select id="getOrderItems" resultType="com.mzl.flower.dto.response.payment.OrderItemListDTO"> src/main/resources/mapper/report/OrderReportMapper.xml
@@ -49,4 +49,34 @@ ) t </select> <select id="getOrderDetailReport" resultType="com.mzl.flower.dto.response.report.OrderDetailReportResultVO"> select o.order_no, o.customer, CONCAT( o.customer_province, ' ', o.customer_city, ' ', o.customer_region, ' ', o.customer_address ) AS address, o.partner_name, o.create_time as orderDate, o.payment_time, o.status_backend as settleStatus, vor.order_num-vor.order_lack_num as real_sale_num, vor.* from t_order o left join v_order_report vor on o.id =vor.order_id where o.deleted=0 and o.status_backend not in ('PENDING','CANCEL','REFUND') <if test="dto.startDate != null"> and o.payment_time > #{dto.startDate} </if> <if test="dto.endDate != null"> and o.payment_time <= #{dto.endDate} </if> <if test="dto.partnerId != null"> and o.create_by in ( select user_id from t_customer_info where partner_id=#{dto.partnerId} ) </if> </select> </mapper>