src/main/java/com/mzl/flower/dto/request/report/QueryAppSupplierDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/dto/response/report/AppSupplierStatisticsVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/dto/response/supplier/SupplierOrderDTO.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/DeliveryOrderService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/service/report/OrderReportService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/report/OrderReportMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/mzl/flower/dto/request/report/QueryAppSupplierDTO.java
对比新文件 @@ -0,0 +1,20 @@ package com.mzl.flower.dto.request.report; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data public class QueryAppSupplierDTO { @ApiModelProperty("供应商ID") private Long supplierId; @ApiModelProperty("当天的开始时间") private LocalDateTime startDateTime; @ApiModelProperty("当天的结束时间") private LocalDateTime endDateTime; } src/main/java/com/mzl/flower/dto/response/report/AppSupplierStatisticsVO.java
对比新文件 @@ -0,0 +1,30 @@ package com.mzl.flower.dto.response.report; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AppSupplierStatisticsVO { @ApiModelProperty("总成交:花农售卖全部的底价合计") private String allSupplierAmount; @ApiModelProperty("本月成交:本月售卖的底价合计") private String curMonSupplierAmount; @ApiModelProperty("上月成交:上月售卖的底价合计") private String lastMonSupplierAmount; @ApiModelProperty("今日成交:今日售卖的底价合计") private String todaySupplierAmount; @ApiModelProperty("缺货(本月):本月质检缺货,并且web端审核通过的数量合计") private String curMonLackNum; @ApiModelProperty("上月质检缺货,并且web端审核通过的数量合计") private String lastMonLackNum; @ApiModelProperty("本月质检降级,并且web端审核通过的数量合计") private String curMonReduceNum; @ApiModelProperty("上月质检降级,并且web端审核通过的数量合计") private String lastMonReduceNum; @ApiModelProperty("本月质检补货,并且web端审核通过的数量合计") private String curMonReplaceNum; @ApiModelProperty("上月质检补货,并且web端审核通过的数量合计") private String lastMonReplaceNum; } src/main/java/com/mzl/flower/dto/response/supplier/SupplierOrderDTO.java
@@ -37,4 +37,27 @@ @ApiModelProperty("今日配送总数") private Integer deliverTotal; @ApiModelProperty("总成交:花农售卖全部的底价合计") private String allSupplierAmount; @ApiModelProperty("本月成交:本月售卖的底价合计") private String curMonSupplierAmount; @ApiModelProperty("上月成交:上月售卖的底价合计") private String lastMonSupplierAmount; @ApiModelProperty("今日成交:今日售卖的底价合计") private String todaySupplierAmount; @ApiModelProperty("缺货(本月):本月质检缺货,并且web端审核通过的数量合计") private String curMonLackNum; @ApiModelProperty("上月质检缺货,并且web端审核通过的数量合计") private String lastMonLackNum; @ApiModelProperty("本月质检降级,并且web端审核通过的数量合计") private String curMonReduceNum; @ApiModelProperty("上月质检降级,并且web端审核通过的数量合计") private String lastMonReduceNum; @ApiModelProperty("本月质检补货,并且web端审核通过的数量合计") private String curMonReplaceNum; @ApiModelProperty("上月质检补货,并且web端审核通过的数量合计") private String lastMonReplaceNum; } src/main/java/com/mzl/flower/mapper/report/OrderReportMapper.java
@@ -1,6 +1,7 @@ package com.mzl.flower.mapper.report; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.dto.request.report.QueryAppSupplierDTO; import com.mzl.flower.dto.response.report.*; import com.mzl.flower.dto.request.report.QueryPartnerOrderDTO; import com.mzl.flower.dto.response.report.OrderDetailReportResultVO; @@ -29,4 +30,6 @@ List<OrderSupplierReportResultVO> getOrderSupplierReport(@Param("dto") SupplierReportCalendarBO calendarBO); OrderSupplierReportResultVO getOrderSupplierCountReport(@Param("dto") SupplierReportCalendarBO calendarBO); AppSupplierStatisticsVO getAppSupplierAmountStatistics(@Param("dto") QueryAppSupplierDTO dto); } src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.config.exception.ValidationException; import com.mzl.flower.dto.request.report.QueryAppSupplierDTO; import com.mzl.flower.dto.request.report.QueryOrderDTO; import com.mzl.flower.dto.request.report.QueryPartnerOrderDTO; import com.mzl.flower.dto.request.report.QuerySupplierDTO; @@ -16,6 +17,7 @@ import com.mzl.flower.service.report.OrderReportService; import com.mzl.flower.utils.ExcelExportUtil; import lombok.extern.slf4j.Slf4j; import org.apache.poi.hpsf.Decimal; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; @@ -341,6 +343,33 @@ log.error(e.getMessage(), e); } } @Override public AppSupplierStatisticsVO getAppSupplierStatistics(QueryAppSupplierDTO dto) { // TODO // 总成交:花农售卖全部的底价合计, // 本月成交:本月售卖的底价合计, // 上月成交:上月售卖的底价合计, // 今日成交:今日售卖的底价合计, // 近30天成交扎数:最近30天扎数合计(已有), // 今日成交扎数(已有) // 缺货(本月):本月质检缺货,并且web端审核通过的数量合计, // 缺货(上月):上月质检缺货,并且web端审核通过的数量合计, // 降级(本月):本月质检降级,并且web端审核通过的数量合计, // 降级(上月):上月质检降级,并且web端审核通过的数量合计, // 补货(本月):本月质检补货,并且web端审核通过的数量合计, // 补货(上月):上月质检补货,并且web端审核通过的数量合计, // 当天的开始时间 dto.setStartDateTime(getCurDayStartTime()); // 当天的结束时间 dto.setEndDateTime(getCurDayEndTime()); return orderReportMapper.getAppSupplierAmountStatistics(dto); } // 计算 startDate 的前一天 17:00:00 public static LocalDateTime calculateStartTime(LocalDateTime startDateTime) { // 获取 LocalDate 部分 @@ -370,5 +399,33 @@ return endOfDay; } // 获取当天的开始时间 public static LocalDateTime getCurDayStartTime() { LocalDateTime now = LocalDateTime.now(); LocalTime cutoffTime = LocalTime.of(17, 0); if (now.toLocalTime().isAfter(cutoffTime)) { // 当前时间大于17:00 return LocalDateTime.of(now.toLocalDate(), cutoffTime); } else { // 当前时间小于等于17:00 return LocalDateTime.of(now.minusDays(1).toLocalDate(), cutoffTime); } } // 获取当天的结束时间 public static LocalDateTime getCurDayEndTime() { LocalDateTime now = LocalDateTime.now(); LocalTime cutoffTime = LocalTime.of(17, 0); if (now.toLocalTime().isAfter(cutoffTime)) { // 当前时间大于17:00,结束时间为明天17:00 return LocalDateTime.of(now.plusDays(1).toLocalDate(), cutoffTime); } else { // 当前时间小于等于17:00,结束时间为当天17:00 return LocalDateTime.of(now.toLocalDate(), cutoffTime); } } } src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java
@@ -7,9 +7,11 @@ import com.mzl.flower.config.security.SecurityUtils; import com.mzl.flower.constant.Constants; import com.mzl.flower.dto.request.payment.*; import com.mzl.flower.dto.request.report.QueryAppSupplierDTO; import com.mzl.flower.dto.response.flower.ParamItemDTO; import com.mzl.flower.dto.response.flower.StationStatisticDTO; import com.mzl.flower.dto.response.payment.*; import com.mzl.flower.dto.response.report.AppSupplierStatisticsVO; import com.mzl.flower.dto.response.supplier.SupplierOrderDTO; import com.mzl.flower.entity.payment.*; import com.mzl.flower.entity.supplier.Station; @@ -21,6 +23,7 @@ import com.mzl.flower.mapper.supplier.StationMapper; import com.mzl.flower.service.BaseService; import com.mzl.flower.service.flower.FlowerParamService; import com.mzl.flower.service.report.OrderReportService; import com.mzl.flower.utils.UUIDGenerator; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -73,6 +76,9 @@ @Autowired private OrderItemSettlementService orderItemSettlementService; @Autowired private OrderReportService orderReportService; public void createDeliveryOrder(Order order) { String orderId = order.getId(); @@ -528,6 +534,12 @@ LocalDateTime s1 = endDate.plusDays(-30); Integer dealCountDay30 = deliveryOrderItemMapper.getDoItemCount(supplierId, null, s1, endDate); dto.setDealCountDay30(dealCountDay30); // 供应商 总成交、本月成交、上月成交、今日成交、缺货(本月)、上月质检缺货、本月质检降级、上月质检降级、本月质检补货、上月质检补货 QueryAppSupplierDTO appDto=new QueryAppSupplierDTO(); appDto.setSupplierId(supplierId); final AppSupplierStatisticsVO appSupplierStatistics = orderReportService.getAppSupplierStatistics(appDto); BeanUtils.copyProperties(appSupplierStatistics,dto); } return dto; src/main/java/com/mzl/flower/service/report/OrderReportService.java
@@ -1,13 +1,11 @@ package com.mzl.flower.service.report; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.dto.request.report.QueryAppSupplierDTO; import com.mzl.flower.dto.request.report.QueryOrderDTO; import com.mzl.flower.dto.request.report.QuerySupplierDTO; import com.mzl.flower.dto.request.report.QueryPartnerOrderDTO; 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 com.mzl.flower.dto.response.report.OrderSupplierReportResultVO; import com.mzl.flower.dto.response.report.*; import javax.servlet.http.HttpServletResponse; @@ -46,4 +44,13 @@ OrderSupplierReportResultVO getOrderSupplierClout(QuerySupplierDTO dto); void exportSupplierList(HttpServletResponse response, QuerySupplierDTO dto); /** * 获取App供应商那个统计数据 * @param dto * @return */ AppSupplierStatisticsVO getAppSupplierStatistics(QueryAppSupplierDTO dto); } src/main/resources/mapper/report/OrderReportMapper.xml
@@ -593,4 +593,134 @@ ) s group by dateinfo,supplier_id ) s2 </select> <select id="getAppSupplierAmountStatistics" resultType="com.mzl.flower.dto.response.report.AppSupplierStatisticsVO"> select ( <include refid="all_supplier_amount"></include> ) as all_supplier_amount , ( <include refid="cur_mon_supplier_amount"></include> ) as cur_mon_supplier_amount , ( <include refid="last_mon_supplier_amount"></include> ) as last_mon_supplier_amount , ( <include refid="today_supplier_amount"></include> ) as today_supplier_amount , ( <include refid="cur_mon_lack_num"></include> ) as cur_mon_lack_num , ( <include refid="last_mon_lack_num"></include> ) as last_mon_lack_num , ( <include refid="cur_mon_reduce_num"></include> ) as cur_mon_reduce_num , ( <include refid="last_mon_reduce_num"></include> ) as last_mon_reduce_num , ( <include refid="cur_mon_replace_num"></include> ) as cur_mon_replace_num , ( <include refid="last_mon_replace_num"></include> ) as last_mon_replace_num </select> <!--供应商总价款--> <sql id="all_supplier_amount"> select IFNULL(sum(oi.supplier_price*oi.num),0) as supplier_amount from t_order_item oi where oi.supplier_id=287 </sql> <!--本月成交:本月售卖的底价合计--> <sql id="cur_mon_supplier_amount"> select IFNULL(sum(oi.supplier_price*oi.num),0) as cur_mon_supplier_amount from t_order_item oi left join t_order o on oi.order_id = o.id where oi.supplier_id = #{dto.supplierId} and o.payment_time > DATE_FORMAT(LAST_DAY(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH)), '%Y-%m-%d 17:00:00') and o.payment_time <= DATE_FORMAT(LAST_DAY(CURRENT_DATE()), '%Y-%m-%d 17:00:00') </sql> <!--上月成交:上月售卖的底价合计--> <sql id="last_mon_supplier_amount"> select IFNULL(sum(oi.supplier_price*oi.num),0) as last_mon_supplier_amount from t_order_item oi left join t_order o on oi.order_id = o.id where oi.supplier_id = #{dto.supplierId} and o.payment_time > DATE_FORMAT(LAST_DAY(DATE_SUB(CURRENT_DATE(), INTERVAL 2 MONTH)), '%Y-%m-%d 17:00:00') and o.payment_time <= DATE_FORMAT(DATE_SUB(DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01'), INTERVAL 1 DAY), '%Y-%m-%d 17:00:00') </sql> <!--今日成交:今日售卖的底价合计 // todo 需要根据当前时间判断今日的开始时间和结束时间--> <sql id="today_supplier_amount"> select IFNULL(sum(oi.supplier_price*oi.num),0) as today_supplier_amount from t_order_item oi left join t_order o on oi.order_id = o.id where oi.supplier_id = #{dto.supplierId} and o.payment_time > #{dto.startDateTime} and o.payment_time <= #{dto.endDateTime} </sql> <!--缺货(本月):本月质检缺货,并且web端审核通过的数量合计--> <sql id="cur_mon_lack_num"> select IFNULL(sum(oic.num),0) as cur_mon_lack_num from t_order_item_check oic left join t_order_item oi on oic.order_item_id=oi.ID left join t_order o on oi.order_id = o.id where oi.supplier_id = #{dto.supplierId} and oic.type = 'lack' and oic.audit_status='AGREED' and o.payment_time > DATE_FORMAT(LAST_DAY(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH)), '%Y-%m-%d 17:00:00') and o.payment_time <= DATE_FORMAT(LAST_DAY(CURRENT_DATE()), '%Y-%m-%d 17:00:00') </sql> <!--缺货(上月):上月质检缺货,并且web端审核通过的数量合计--> <sql id="last_mon_lack_num"> select IFNULL(sum(oic.num),0) as last_mon_lack_num from t_order_item_check oic left join t_order_item oi on oic.order_item_id=oi.ID left join t_order o on oi.order_id = o.id where oi.supplier_id = #{dto.supplierId} and oic.type = 'lack' and oic.audit_status='AGREED' and o.payment_time > DATE_FORMAT(LAST_DAY(DATE_SUB(CURRENT_DATE(), INTERVAL 2 MONTH)), '%Y-%m-%d 17:00:00') and o.payment_time <= DATE_FORMAT(DATE_SUB(DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01'), INTERVAL 1 DAY), '%Y-%m-%d 17:00:00') </sql> <!--降级(本月):本月质检降级,并且web端审核通过的数量合计--> <sql id="cur_mon_reduce_num"> select IFNULL(sum(oic.num),0) as cur_mon_reduce_num from t_order_item_check oic left join t_order_item oi on oic.order_item_id=oi.ID left join t_order o on oi.order_id = o.id where oi.supplier_id = #{dto.supplierId} and oic.type = 'reduce' and oic.audit_status='AGREED' and o.payment_time > DATE_FORMAT(LAST_DAY(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH)), '%Y-%m-%d 17:00:00') and o.payment_time <= DATE_FORMAT(LAST_DAY(CURRENT_DATE()), '%Y-%m-%d 17:00:00') </sql> <!-- 降级(上月):上月质检降级,并且web端审核通过的数量合计--> <sql id="last_mon_reduce_num"> select IFNULL(sum(oic.num),0) as last_mon_reduce_num from t_order_item_check oic left join t_order_item oi on oic.order_item_id=oi.ID left join t_order o on oi.order_id = o.id where oi.supplier_id = #{dto.supplierId} and oic.type = 'reduce' and oic.audit_status='AGREED' and o.payment_time > DATE_FORMAT(LAST_DAY(DATE_SUB(CURRENT_DATE(), INTERVAL 2 MONTH)), '%Y-%m-%d 17:00:00') and o.payment_time <= DATE_FORMAT(DATE_SUB(DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01'), INTERVAL 1 DAY), '%Y-%m-%d 17:00:00') </sql> <!-- 补货(本月):本月质检补货,并且web端审核通过的数量合计--> <sql id="cur_mon_replace_num"> select IFNULL(sum(oic.num),0) as cur_mon_replace_num from t_order_item_check oic left join t_order_item oi on oic.order_item_id=oi.ID left join t_order o on oi.order_id = o.id where oi.supplier_id = #{dto.supplierId} and oic.type = 'replace' and oic.audit_status='AGREED' and o.payment_time > DATE_FORMAT(LAST_DAY(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH)), '%Y-%m-%d 17:00:00') and o.payment_time <= DATE_FORMAT(LAST_DAY(CURRENT_DATE()), '%Y-%m-%d 17:00:00') </sql> <!-- 补货(上月):上月质检补货,并且web端审核通过的数量合计--> <sql id="last_mon_replace_num"> select IFNULL(sum(oic.num),0) as last_mon_replace_num from t_order_item_check oic left join t_order_item oi on oic.order_item_id=oi.ID left join t_order o on oi.order_id = o.id where oi.supplier_id = #{dto.supplierId} and oic.type = 'replace' and oic.audit_status='AGREED' and o.payment_time > DATE_FORMAT(LAST_DAY(DATE_SUB(CURRENT_DATE(), INTERVAL 2 MONTH)), '%Y-%m-%d 17:00:00') and o.payment_time <= DATE_FORMAT(DATE_SUB(DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01'), INTERVAL 1 DAY), '%Y-%m-%d 17:00:00') </sql> </mapper>