From 9e530fa2aee385cb331e3c76d0765e78c40e35f7 Mon Sep 17 00:00:00 2001 From: 陶杰 <1378534974@qq.com> Date: 星期四, 10 十月 2024 13:44:08 +0800 Subject: [PATCH] 1.增加基类是ID是string且是逻辑删的 2.财务报表-合伙人报表 --- src/main/java/com/mzl/flower/web/v2/report/OrderReportController.java | 22 +++ src/main/java/com/mzl/flower/base/BaseEntityLogic.java | 49 ++++++++ src/main/java/com/mzl/flower/dto/response/report/OrderPartnerReportResultVO.java | 68 +++++++++++ src/main/java/com/mzl/flower/mapper/report/OrderReportMapper.java | 5 src/main/java/com/mzl/flower/service/report/OrderReportService.java | 19 +++ src/main/java/com/mzl/flower/dto/response/report/OrderReportCalendarBO.java | 3 src/main/resources/mapper/report/OrderReportMapper.xml | 89 ++++++++++++++ src/main/java/com/mzl/flower/dto/request/report/QueryOrderDTO.java | 3 src/main/java/com/mzl/flower/entity/FlowerCommentDO.java | 5 src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java | 80 +++++++++++++ 10 files changed, 340 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/mzl/flower/base/BaseEntityLogic.java b/src/main/java/com/mzl/flower/base/BaseEntityLogic.java new file mode 100644 index 0000000..a1f3d10 --- /dev/null +++ b/src/main/java/com/mzl/flower/base/BaseEntityLogic.java @@ -0,0 +1,49 @@ +package com.mzl.flower.base; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class BaseEntityLogic { + @TableId("id") + private String id; + + @TableField("create_by") + private String createBy; + + @TableField("create_time") + private LocalDateTime createTime; + + @TableField("update_by") + private String updateBy; + + @TableField("update_time") + private LocalDateTime updateTime; + + @TableField("deleted") + @TableLogic + private Boolean deleted; + + public void create(String userId) { + this.createBy = userId; + this.updateBy = userId; + this.createTime = LocalDateTime.now(); + this.updateTime = LocalDateTime.now(); + this.deleted = false; + } + + public void create() { + this.createTime = LocalDateTime.now(); + this.updateTime = LocalDateTime.now(); + this.deleted = false; + } + + public void update(String userId) { + this.updateBy = userId; + this.updateTime = LocalDateTime.now(); + } +} diff --git a/src/main/java/com/mzl/flower/dto/request/report/QueryOrderDTO.java b/src/main/java/com/mzl/flower/dto/request/report/QueryOrderDTO.java index a6fb34e..64ed2ad 100644 --- a/src/main/java/com/mzl/flower/dto/request/report/QueryOrderDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/report/QueryOrderDTO.java @@ -33,4 +33,7 @@ // @NotNull(message = "下单日期不能为空") private LocalDate calDate; + @ApiModelProperty(value = "是否是合伙人,默认0") + private Integer partnerFlag; + } diff --git a/src/main/java/com/mzl/flower/dto/response/report/OrderPartnerReportResultVO.java b/src/main/java/com/mzl/flower/dto/response/report/OrderPartnerReportResultVO.java new file mode 100644 index 0000000..b19dcca --- /dev/null +++ b/src/main/java/com/mzl/flower/dto/response/report/OrderPartnerReportResultVO.java @@ -0,0 +1,68 @@ +package com.mzl.flower.dto.response.report; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class OrderPartnerReportResultVO { + + @ApiModelProperty("下单日期") + @JsonFormat(pattern="yyyy-MM-dd" ,timezone="GMT+8") + @DateTimeFormat(pattern="yyyy-MM-dd") + private LocalDateTime orderDate; + + @ApiModelProperty("销售额") + private BigDecimal orderTotal; + + @ApiModelProperty("合伙人ID") + private String partnerId; + + @ApiModelProperty("合伙人") + private String partnerName; + + @ApiModelProperty("合伙人-底价") + private BigDecimal orderPartnerPriceAmount; + + + @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 orderFeePartner; + + @ApiModelProperty("总包干费--暂无") + private BigDecimal partnerTotalFeeAmount; + + @ApiModelProperty("实际销售扎数") + private Integer realSaleNum; + +// @ApiModelProperty("利润--总包干费没有无法计算") +// private BigDecimal profitFeeAmount; +// +// @ApiModelProperty("结算状态--暂无") +// private String settleStatus; + +} diff --git a/src/main/java/com/mzl/flower/dto/response/report/OrderReportCalendarBO.java b/src/main/java/com/mzl/flower/dto/response/report/OrderReportCalendarBO.java index a59a58d..9866d52 100644 --- a/src/main/java/com/mzl/flower/dto/response/report/OrderReportCalendarBO.java +++ b/src/main/java/com/mzl/flower/dto/response/report/OrderReportCalendarBO.java @@ -20,5 +20,8 @@ @ApiModelProperty(value = "合伙人id") private Long partnerId; + @ApiModelProperty(value = "是否是合伙人,默认0") + private Integer partnerFlag; + } diff --git a/src/main/java/com/mzl/flower/entity/FlowerCommentDO.java b/src/main/java/com/mzl/flower/entity/FlowerCommentDO.java index b5614e0..328fc4a 100644 --- a/src/main/java/com/mzl/flower/entity/FlowerCommentDO.java +++ b/src/main/java/com/mzl/flower/entity/FlowerCommentDO.java @@ -1,10 +1,9 @@ package com.mzl.flower.entity; import com.baomidou.mybatisplus.annotation.TableName; -import com.mzl.flower.base.BaseEntity; - import java.time.LocalDateTime; +import com.mzl.flower.base.BaseEntityLogic; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -19,7 +18,7 @@ @EqualsAndHashCode(callSuper = true) @Accessors(chain = true) @TableName("t_flower_comment") -public class FlowerCommentDO extends BaseEntity { +public class FlowerCommentDO extends BaseEntityLogic { /** diff --git a/src/main/java/com/mzl/flower/mapper/report/OrderReportMapper.java b/src/main/java/com/mzl/flower/mapper/report/OrderReportMapper.java index 1dad7a0..c4b039a 100644 --- a/src/main/java/com/mzl/flower/mapper/report/OrderReportMapper.java +++ b/src/main/java/com/mzl/flower/mapper/report/OrderReportMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.dto.response.report.OrderDetailReportResultVO; +import com.mzl.flower.dto.response.report.OrderPartnerReportResultVO; import com.mzl.flower.dto.response.report.OrderReportCalendarBO; import com.mzl.flower.dto.response.report.OrderReportResultVO; import org.apache.ibatis.annotations.Param; @@ -12,4 +13,8 @@ OrderReportResultVO getOrderDateReport(@Param("dto") OrderReportCalendarBO calendarBO); List<OrderDetailReportResultVO> getOrderDetailReport(@Param("dto") OrderReportCalendarBO calendarBO, Page page); + + OrderPartnerReportResultVO getPartnerOrderDateReport(@Param("dto") OrderReportCalendarBO calendarBO); + + OrderPartnerReportResultVO getPartnerOrderDateReportStatis(@Param("dto") OrderReportCalendarBO bo); } diff --git a/src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java index ab707ee..a915f65 100644 --- a/src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java +++ b/src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java @@ -4,6 +4,7 @@ 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.OrderPartnerReportResultVO; import com.mzl.flower.dto.response.report.OrderReportCalendarBO; import com.mzl.flower.dto.response.report.OrderReportResultVO; import com.mzl.flower.mapper.report.OrderReportMapper; @@ -201,6 +202,85 @@ } + @Override + public Page<OrderPartnerReportResultVO> getPartnerSalePage(Page page, QueryOrderDTO dto) { + List<OrderReportCalendarBO> calendarBOList= calendarService.getOrderDatePage(page,dto); + + final List<OrderPartnerReportResultVO> list = calendarBOList.stream().map(calendarBO -> { + if(null!=dto.getPartnerId()) calendarBO.setPartnerId(dto.getPartnerId()); +// if(null!=dto.getPartnerFlag()) calendarBO.setPartnerFlag(dto.getPartnerFlag()); + // 查询合伙人 + calendarBO.setPartnerFlag(1); + OrderPartnerReportResultVO vo2=orderReportMapper.getPartnerOrderDateReport(calendarBO); + if(null==vo2) vo2=new OrderPartnerReportResultVO(); + vo2.setOrderDate(calendarBO.getCalDate()); + + return vo2; + }).collect(Collectors.toList()); + + page.setRecords(list); + return page; + } + + @Override + public OrderPartnerReportResultVO getPartnerSaleStatis(QueryOrderDTO dto) { + + OrderReportCalendarBO bo=new OrderReportCalendarBO(); + if(null!=dto.getPartnerId()) bo.setPartnerId(dto.getPartnerId()); + bo.setStartDate(calculateStartTime(dto.getStartDate())); + bo.setEndDate(calculateEndTime(dto.getEndDate())); + OrderPartnerReportResultVO vo2=orderReportMapper.getPartnerOrderDateReportStatis(bo); + + return vo2; + } + + @Override + public void exportPartnerSalesList(HttpServletResponse response, QueryOrderDTO dto) { + List<OrderReportCalendarBO> calendarBOList= calendarService.getOrderDateList(dto); + final List<OrderPartnerReportResultVO> list = calendarBOList.stream().map(calendarBO -> { + if(null!=dto.getPartnerId()) calendarBO.setPartnerId(dto.getPartnerId()); +// if(null!=dto.getPartnerFlag()) calendarBO.setPartnerFlag(dto.getPartnerFlag()); + // 查询合伙人 + calendarBO.setPartnerFlag(1); + OrderPartnerReportResultVO vo2=orderReportMapper.getPartnerOrderDateReport(calendarBO); + if(null==vo2) vo2=new OrderPartnerReportResultVO(); + vo2.setOrderDate(calendarBO.getCalDate()); + + return vo2; + }).collect(Collectors.toList()); + + String[] rowsName = new String[]{"序号","下单日期", "合伙人ID", "合伙人","底价" + , "合伙人加价", "会员折扣","优惠券","售后扣合伙人款","总包干费","实际销售扎数"}; + List<Object[]> dataList = new ArrayList<>(); + int sn = 1; + for (OrderPartnerReportResultVO o : list) { + Object[] objs = new Object[rowsName.length]; + int a = 0; + objs[a++] = sn; // 序号 + objs[a++] = format(o.getOrderDate(), "yyyy-MM-dd"); // 下单日期 + objs[a++] = o.getPartnerId(); // 合伙人ID + objs[a++] = o.getPartnerName(); // 合伙人 + objs[a++] = o.getOrderPartnerPriceAmount(); // 合伙人底价 + objs[a++] = o.getOrderMarkupPartnerAmount(); //合伙人加价 + objs[a++] = o.getOrderPriceDiscountAmount();//会员折扣 + objs[a++] = o.getOrderCouponAmountTotal(); // 优惠券 + objs[a++] = o.getOrderFeePartner(); //售后扣合伙人款 + objs[a++] = o.getPartnerTotalFeeAmount(); // 总包干费 + objs[a++] = o.getRealSaleNum(); // 实际销售扎数 + 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 部分 diff --git a/src/main/java/com/mzl/flower/service/report/OrderReportService.java b/src/main/java/com/mzl/flower/service/report/OrderReportService.java index e5f29c2..06065d5 100644 --- a/src/main/java/com/mzl/flower/service/report/OrderReportService.java +++ b/src/main/java/com/mzl/flower/service/report/OrderReportService.java @@ -3,6 +3,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.OrderPartnerReportResultVO; import com.mzl.flower.dto.response.report.OrderReportResultVO; import javax.servlet.http.HttpServletResponse; @@ -18,4 +19,22 @@ void exportSalesList(HttpServletResponse response, QueryOrderDTO dto); public void exportOrderDetail(HttpServletResponse response, QueryOrderDTO queryOrderDTO); + + /** + * 合伙人结算列表 + * @param page + * @param dto + * @return + */ + Page<OrderPartnerReportResultVO> getPartnerSalePage(Page page, QueryOrderDTO dto); + + /** + * 合伙人结算列表统计 + * + * @param dto + * @return + */ + OrderPartnerReportResultVO getPartnerSaleStatis(QueryOrderDTO dto); + + void exportPartnerSalesList(HttpServletResponse response, QueryOrderDTO dto); } diff --git a/src/main/java/com/mzl/flower/web/v2/report/OrderReportController.java b/src/main/java/com/mzl/flower/web/v2/report/OrderReportController.java index b94025a..741d754 100644 --- a/src/main/java/com/mzl/flower/web/v2/report/OrderReportController.java +++ b/src/main/java/com/mzl/flower/web/v2/report/OrderReportController.java @@ -68,4 +68,26 @@ orderReportService.exportOrderDetail(response, queryOrderDTO); } + + @GetMapping("/partner/sale/page") + @ApiOperation(value = "合伙人-查询-分页", notes = "合伙人-查询-分页") + public ResponseEntity<ReturnDataDTO<Page<OrderReportResultVO>>> getPartnerPage( + Page page,@Validated QueryOrderDTO dto + ) { + return returnData(R.SUCCESS.getCode(), ConverterUtil.transPage(orderReportService.getPartnerSalePage(page,dto), OrderReportResultVO.class)); + } + + @GetMapping("/partner/sale/statis") + @ApiOperation(value = "合伙人-查询-分页", notes = "合伙人-查询-分页") + public ResponseEntity<ReturnDataDTO<Page<OrderReportResultVO>>> getPartnerPageStatis(@Validated QueryOrderDTO dto + ) { + return returnData(R.SUCCESS.getCode(), ConverterUtil.transObject(orderReportService.getPartnerSaleStatis(dto), OrderReportResultVO.class)); + } + + @GetMapping({"/partner/sale/export"}) + @ApiOperation(value = "合伙人报告列表导出") + public void partnerExportSales(HttpServletResponse response,@Validated QueryOrderDTO dto){ + orderReportService.exportPartnerSalesList(response, dto); + } + } \ No newline at end of file diff --git a/src/main/resources/mapper/report/OrderReportMapper.xml b/src/main/resources/mapper/report/OrderReportMapper.xml index ea1e697..47c7696 100644 --- a/src/main/resources/mapper/report/OrderReportMapper.xml +++ b/src/main/resources/mapper/report/OrderReportMapper.xml @@ -160,6 +160,94 @@ ) </if> </select> + <select id="getPartnerOrderDateReport" resultType="com.mzl.flower.dto.response.report.OrderPartnerReportResultVO"> + <include refid="partnerBaseSql"></include> + </select> + <select id="getPartnerOrderDateReportStatis" + resultType="com.mzl.flower.dto.response.report.OrderPartnerReportResultVO"> + select + sum(order_total) as order_total, + sum(order_partner_price_amount) as order_partner_price_amount, + sum(order_supplier_price_amount) as order_supplier_price_amount, + sum(order_markup_one_amount) as order_markup_one_amount, + sum(order_markup_two_amount) as order_markup_two_amount, + sum(order_markup_partner_amount) as order_markup_partner_amount, + sum(order_price_discount_amount) as order_price_discount_amount, + sum(order_coupon_amount_total) as order_coupon_amount_total, + sum(order_check_fee) as order_check_fee, + sum(order_lack_fee_supplier) as order_lack_fee_supplier, + sum(order_replace_fee) as order_replace_fee, + sum(order_fee_supplier) as order_fee_supplier, + sum(order_fee_partner) as order_fee_partner, + sum(order_fee_platform) as order_fee_platform, + sum(order_fee_platform_pack) as order_fee_platform_pack, + sum(order_fee_platform_check) as order_fee_platform_check, + sum(order_fee_platform_transport) as order_fee_platform_transport, + sum(order_total_fee) as order_total_fee, + sum(order_fee_packing_transport) as order_fee_packing_transport, + sum(order_num) as order_num, + sum(order_replace_num) as order_replace_num, + sum(order_reduce_num) as order_reduce_num, + sum(order_lack_num) as order_lack_num, + sum(real_sale_num) as real_sale_num + from <include refid="partnerBaseSql"></include> + </select> + + <sql id="partnerBaseSql"> + select + sum(order_total) as order_total, + sum(order_supplier_price_amount)+sum(order_markup_one_amount)+sum(order_markup_two_amount) as order_partner_price_amount, + sum(order_supplier_price_amount) as order_supplier_price_amount, + sum(order_markup_one_amount) as order_markup_one_amount, + sum(order_markup_two_amount) as order_markup_two_amount, + sum(order_markup_partner_amount) as order_markup_partner_amount, + sum(order_price_discount_amount) as order_price_discount_amount, + sum(order_coupon_amount_total) as order_coupon_amount_total, + sum(order_check_fee) as order_check_fee, + sum(order_lack_fee_supplier) as order_lack_fee_supplier, + sum(order_replace_fee) as order_replace_fee, + sum(order_fee_supplier) as order_fee_supplier, + sum(order_fee_partner) as order_fee_partner, + sum(order_fee_platform) as order_fee_platform, + sum(order_fee_platform_pack) as order_fee_platform_pack, + sum(order_fee_platform_check) as order_fee_platform_check, + sum(order_fee_platform_transport) as order_fee_platform_transport, + sum(order_total_fee) as order_total_fee, + sum(order_fee_packing_transport) as order_fee_packing_transport, + sum(order_num) as order_num, + sum(order_replace_num) as order_replace_num, + sum(order_reduce_num) as order_reduce_num, + sum(order_lack_num) as order_lack_num, + sum(order_num)-sum(order_lack_num) as real_sale_num, + partner_id, + partner_name + from ( + select + o.order_no,o.payment_time,o.status_backend,vor.*,ci.partner_id,p.name as partner_name + from t_order o + left join ( + <include refid="baseSql"></include> + ) vor + on o.id =vor.order_id + left join t_customer_info ci + on o.create_by=ci.user_id + left join t_partner_info p + on ci.partner_id=p.id + where o.deleted=0 + and o.status_backend not in ('PENDING','CANCEL','REFUND') + and ci.partner_id is not null + <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 ci.partner_id = #{dto.partnerId} + </if> + ) t + group by partner_id,partner_name + </sql> <sql id="baseSql"> @@ -227,6 +315,7 @@ <if test="dto.endDate != null"> and o.payment_time <= #{dto.endDate} </if> + )t1 group by order_id ) t2 -- Gitblit v1.9.3