From cdb32d015012f973baa148d9b9e400ccfe966b52 Mon Sep 17 00:00:00 2001 From: jay <jay7417988@163.com> Date: Mon, 9 Oct 2023 18:53:36 +0800 Subject: [PATCH] 修改代码 --- pz-admin/src/main/java/com/pz/web/controller/system/DataViewController.java | 15 +++++++++------ pz-common/src/main/java/com/pz/common/utils/DateUtils.java | 36 +++++++++++++++++++++++++++++++++++- pz-system/src/main/java/com/pz/system/domain/bo/OrderColumnarBo.java | 25 +++++++++++++++++++++++++ pz-system/src/main/java/com/pz/system/domain/bo/YypzOrderBo.java | 2 +- pz-system/src/main/java/com/pz/system/domain/vo/OrderColumnarVo.java | 5 ++++- pz-system/src/main/java/com/pz/system/domain/vo/OrderLineVo.java | 13 +++++++++++++ pz-system/src/main/java/com/pz/system/mapper/TotalOrderMapper.java | 2 +- pz-system/src/main/java/com/pz/system/service/ITotalOrderService.java | 12 ++++++++++++ pz-system/src/main/java/com/pz/system/service/impl/TotalOrderServiceImpl.java | 39 +++++++++++++++++++++++++++++++++++++++ pz-system/src/main/resources/mapper/system/TotalOrderMapper.xml | 5 ++++- pz-system/src/main/resources/mapper/system/YypzOrderMapper.xml | 12 +++++++++--- 11 files changed, 152 insertions(+), 14 deletions(-) create mode 100644 pz-system/src/main/java/com/pz/system/domain/bo/OrderColumnarBo.java create mode 100644 pz-system/src/main/java/com/pz/system/domain/vo/OrderLineVo.java diff --git a/pz-admin/src/main/java/com/pz/web/controller/system/DataViewController.java b/pz-admin/src/main/java/com/pz/web/controller/system/DataViewController.java index 554f24f..397de6e 100644 --- a/pz-admin/src/main/java/com/pz/web/controller/system/DataViewController.java +++ b/pz-admin/src/main/java/com/pz/web/controller/system/DataViewController.java @@ -8,8 +8,10 @@ import com.pz.common.core.domain.PageQuery; import com.pz.common.core.domain.R; import com.pz.common.core.page.TableDataInfo; import com.pz.system.domain.bo.DbghOrderBo; +import com.pz.system.domain.bo.OrderColumnarBo; import com.pz.system.domain.vo.DbghOrderVo; import com.pz.system.domain.vo.OrderColumnarVo; +import com.pz.system.domain.vo.OrderLineVo; import com.pz.system.mapper.TotalOrderMapper; import com.pz.common.core.domain.R; import com.pz.merchant.service.ICompanyService; @@ -21,6 +23,7 @@ import com.pz.system.domain.vo.DbghOrderVo; import com.pz.system.service.IStoreApplyService; import com.pz.system.service.ISysUserService; import com.pz.system.service.ITotalOrderService; +import com.pz.system.service.ITotalOrderService; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; @@ -32,6 +35,7 @@ import javax.validation.constraints.NotNull; import javax.validation.constraints.NotEmpty; import java.util.List; +import java.util.Map; /** * 数据总览 @@ -44,6 +48,7 @@ import java.util.List; @RestController @RequestMapping("/system/data") public class DataViewController extends BaseController { + private final ITotalOrderService iTotalOrderService; private final ISysUserService iSysUserService; @@ -53,8 +58,6 @@ public class DataViewController extends BaseController { private final IStoreApplyService iStoreApplyService; - private final ITotalOrderService iTotalOrderService; - /** * 新增用户统计 */ @@ -126,9 +129,9 @@ public class DataViewController extends BaseController { /** * 数据总览柱状图 */ - @GetMapping("/findOrderColumnarVoList/{type}") - public R<List<OrderColumnarVo>> findOrderColumnarVoList( - @PathVariable Integer type) { - return R.ok(totalOrderMapper.findOrderColumnarVoList(type)); + @GetMapping("/findOrderColumnarVoList") + public R<List<OrderLineVo>> findOrderColumnarVoList( + OrderColumnarBo bo) { + return R.ok(iTotalOrderService.findOrderColumnarVoList(bo)); } } diff --git a/pz-common/src/main/java/com/pz/common/utils/DateUtils.java b/pz-common/src/main/java/com/pz/common/utils/DateUtils.java index 4a6d4e7..3ab22fb 100644 --- a/pz-common/src/main/java/com/pz/common/utils/DateUtils.java +++ b/pz-common/src/main/java/com/pz/common/utils/DateUtils.java @@ -16,7 +16,9 @@ import java.time.LocalTime; import java.time.ZoneId; import java.time.ZonedDateTime; +import java.util.ArrayList; import java.util.Date; +import java.util.List; /** * 时间工具类 @@ -87,6 +89,37 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { } } + public static List<String> getRecentDates(int days) { + List<String> recentDates = new ArrayList<>(); + LocalDate currentDate = LocalDate.now(); + java.time.format.DateTimeFormatter formatter = java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + for (int i = 0; i < days; i++) { + String date = currentDate.format(formatter); + recentDates.add(date); + currentDate = currentDate.minusDays(1); + } + // 添加当天日期 + recentDates.add(currentDate.format(formatter)); + return recentDates; + } + + public static List<String> getDateRange(String startDateStr, String endDateStr) { + List<String> dateList = new ArrayList<>(); + LocalDate startDate = LocalDate.parse(startDateStr); + LocalDate endDate = LocalDate.parse(endDateStr); + LocalDate currentDate = startDate; + java.time.format.DateTimeFormatter formatter = java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + while (!currentDate.isAfter(endDate)) { + dateList.add(currentDate.format(formatter)); + currentDate = currentDate.plusDays(1); + } + + return dateList; + } + + /** * 日期路径 即年/月/日 如2018/08/08 */ @@ -97,11 +130,12 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { /** * 字符串转换成日期 + * * @param strDate 日期字符串 * @param pattern 日期的格式,如:DateUtils.DATE_TIME_PATTERN */ public static Date stringToDate(String strDate, String pattern) { - if (StringUtils.isBlank(strDate)){ + if (StringUtils.isBlank(strDate)) { return null; } diff --git a/pz-system/src/main/java/com/pz/system/domain/bo/OrderColumnarBo.java b/pz-system/src/main/java/com/pz/system/domain/bo/OrderColumnarBo.java new file mode 100644 index 0000000..3bc8014 --- /dev/null +++ b/pz-system/src/main/java/com/pz/system/domain/bo/OrderColumnarBo.java @@ -0,0 +1,25 @@ +package com.pz.system.domain.bo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class OrderColumnarBo implements Serializable { + /** + * 0:近七天,1:近三十天,2:自定义 + */ + private Integer type; + + private String time; + + /** + * 自定义开始时间 + */ + private String startTime; + + /** + * 自定义结束时间 + */ + private String endTime; +} diff --git a/pz-system/src/main/java/com/pz/system/domain/bo/YypzOrderBo.java b/pz-system/src/main/java/com/pz/system/domain/bo/YypzOrderBo.java index 94f4344..9d71187 100644 --- a/pz-system/src/main/java/com/pz/system/domain/bo/YypzOrderBo.java +++ b/pz-system/src/main/java/com/pz/system/domain/bo/YypzOrderBo.java @@ -79,5 +79,5 @@ public class YypzOrderBo extends BaseEntity { */ private String remark; - + private Long userId; } diff --git a/pz-system/src/main/java/com/pz/system/domain/vo/OrderColumnarVo.java b/pz-system/src/main/java/com/pz/system/domain/vo/OrderColumnarVo.java index 6436e19..2644847 100644 --- a/pz-system/src/main/java/com/pz/system/domain/vo/OrderColumnarVo.java +++ b/pz-system/src/main/java/com/pz/system/domain/vo/OrderColumnarVo.java @@ -11,7 +11,10 @@ public class OrderColumnarVo implements Serializable { * 业务名称 */ private String name; - + /** + * 日期 + */ + private String time; /** * 数量 */ diff --git a/pz-system/src/main/java/com/pz/system/domain/vo/OrderLineVo.java b/pz-system/src/main/java/com/pz/system/domain/vo/OrderLineVo.java new file mode 100644 index 0000000..52660ed --- /dev/null +++ b/pz-system/src/main/java/com/pz/system/domain/vo/OrderLineVo.java @@ -0,0 +1,13 @@ +package com.pz.system.domain.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class OrderLineVo implements Serializable { + private String key; + + private List<OrderColumnarVo> list; +} diff --git a/pz-system/src/main/java/com/pz/system/mapper/TotalOrderMapper.java b/pz-system/src/main/java/com/pz/system/mapper/TotalOrderMapper.java index 4dbb1e4..b87a4f3 100644 --- a/pz-system/src/main/java/com/pz/system/mapper/TotalOrderMapper.java +++ b/pz-system/src/main/java/com/pz/system/mapper/TotalOrderMapper.java @@ -71,5 +71,5 @@ public interface TotalOrderMapper extends BaseMapperPlus<TotalOrderMapper, Total * @param type * @return */ - List<OrderColumnarVo> findOrderColumnarVoList(@Param("type") Integer type); + List<OrderColumnarVo> findOrderColumnarVoList(@Param("time") String time); } diff --git a/pz-system/src/main/java/com/pz/system/service/ITotalOrderService.java b/pz-system/src/main/java/com/pz/system/service/ITotalOrderService.java index 75506fd..780ee32 100644 --- a/pz-system/src/main/java/com/pz/system/service/ITotalOrderService.java +++ b/pz-system/src/main/java/com/pz/system/service/ITotalOrderService.java @@ -6,17 +6,22 @@ import com.pz.common.core.domain.R; import com.pz.system.domain.TotalOrder; import com.pz.system.domain.bo.CreateOrderBo; import com.pz.system.domain.bo.DataViewBo; +import com.pz.system.domain.bo.OrderColumnarBo; import com.pz.system.domain.vo.AccompanyDemandVo; import com.pz.system.domain.vo.DataOrderVo; import com.pz.system.domain.vo.DataViewVo; +import com.pz.system.domain.vo.OrderColumnarVo; +import com.pz.system.domain.vo.OrderLineVo; import com.pz.system.domain.vo.TotalOrderVo; import com.pz.system.domain.bo.TotalOrderBo; import com.pz.common.core.page.TableDataInfo; import com.pz.common.core.domain.PageQuery; +import org.apache.ibatis.annotations.Param; import javax.validation.constraints.NotNull; import java.util.Collection; import java.util.List; +import java.util.Map; /** * 总订单Service接口 @@ -165,4 +170,11 @@ public interface ITotalOrderService { * 订单量 */ DataOrderVo orderQuantity(DataViewBo dataViewBo); + + /** + * 数据总览 + * @param bo + * @return + */ + List<OrderLineVo> findOrderColumnarVoList(OrderColumnarBo bo); } diff --git a/pz-system/src/main/java/com/pz/system/service/impl/TotalOrderServiceImpl.java b/pz-system/src/main/java/com/pz/system/service/impl/TotalOrderServiceImpl.java index e13a703..a594c07 100644 --- a/pz-system/src/main/java/com/pz/system/service/impl/TotalOrderServiceImpl.java +++ b/pz-system/src/main/java/com/pz/system/service/impl/TotalOrderServiceImpl.java @@ -22,6 +22,7 @@ import com.pz.common.enums.CommonOrderStatus; import com.pz.common.enums.TotalOrderStatus; import com.pz.common.exception.ServiceException; import com.pz.common.helper.LoginHelper; +import com.pz.common.utils.DateUtils; import com.pz.common.utils.HttpUtils; import com.pz.common.utils.JsonUtils; import com.pz.merchant.domain.Company; @@ -38,6 +39,7 @@ import com.pz.system.datastructure.OrderDelayQueue; import com.pz.system.datastructure.TotalOrderDelayOperator; import com.pz.system.domain.*; import com.pz.system.domain.bo.CreateOrderBo; +import com.pz.system.domain.bo.OrderColumnarBo; import com.pz.system.domain.bo.DataViewBo; import com.pz.system.domain.bo.TotalOrderBo; import com.pz.system.domain.vo.*; @@ -60,6 +62,7 @@ import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * 总订单Service业务层处理 @@ -1237,6 +1240,42 @@ public class TotalOrderServiceImpl implements ITotalOrderService { } + @Override + public List<OrderLineVo> findOrderColumnarVoList(OrderColumnarBo bo) { + List<OrderLineVo> list = new ArrayList<>(); + List<String> recentDates; + switch (bo.getType()) { + case 1: + recentDates = DateUtils.getRecentDates(7); + break; + case 2: + recentDates = DateUtils.getRecentDates(30); + break; + case 3: + recentDates = DateUtils.getDateRange(bo.getStartTime(), bo.getEndTime()); + break; + default: + return list; + } + // 使用一个 Map 来缓存已经查询过的订单列列表 + Map<String, List<OrderColumnarVo>> orderMap = new HashMap<>(); + for (String time : recentDates) { + List<OrderColumnarVo> orderColumnarVoList = orderMap.get(time); + if (orderColumnarVoList == null) { + orderColumnarVoList = baseMapper.findOrderColumnarVoList(time); + orderMap.put(time, orderColumnarVoList); + } + OrderLineVo orderLineVo = new OrderLineVo(); + orderLineVo.setKey(time); + orderLineVo.setList(orderColumnarVoList); + list.add(orderLineVo); + } + + return list.stream() + .sorted(Comparator.comparing(OrderLineVo::getKey)) + .collect(Collectors.toList()); + } + public String getOrderSn() { long timestamp = System.currentTimeMillis(); String timestampStr = Long.toString(timestamp); diff --git a/pz-system/src/main/resources/mapper/system/TotalOrderMapper.xml b/pz-system/src/main/resources/mapper/system/TotalOrderMapper.xml index 1705359..0463f35 100644 --- a/pz-system/src/main/resources/mapper/system/TotalOrderMapper.xml +++ b/pz-system/src/main/resources/mapper/system/TotalOrderMapper.xml @@ -121,8 +121,11 @@ where total_order.id = #{id} </select> <select id="findOrderColumnarVoList" resultType="com.pz.system.domain.vo.OrderColumnarVo"> - SELECT b.`name` name, COUNT(t.business_id) AS num + SELECT b.`name` name,DATE (#{time}) AS time, COUNT(t.business_id) AS num FROM business b + LEFT JOIN total_order t ON t.business_id = b.id + AND t.`status` = 2 + AND DATE (t.create_time) = DATE (#{time}) LEFT JOIN total_order t ON t.business_id = b.id AND t.`status` = 2 <if test="type == 1"> diff --git a/pz-system/src/main/resources/mapper/system/YypzOrderMapper.xml b/pz-system/src/main/resources/mapper/system/YypzOrderMapper.xml index b1849e8..8a4829f 100644 --- a/pz-system/src/main/resources/mapper/system/YypzOrderMapper.xml +++ b/pz-system/src/main/resources/mapper/system/YypzOrderMapper.xml @@ -49,9 +49,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LEFT JOIN department AS d ON d.id = yyod.did LEFT JOIN services AS s ON s.id = tlo.service_id LEFT JOIN employees AS e ON e.id = tlo.em_id - <if test="bo.orderSn != null and bo.orderSn != ''"> - where tlo.order_sn LIKE CONCAT('%', #{bo.orderSn}, '%') - </if> + LEFT JOIN company AS co ON co.id = e.company_id + <where> + <if test="bo.orderSn != null and bo.orderSn != ''"> + and tlo.order_sn LIKE CONCAT('%', #{bo.orderSn}, '%') + </if> + <if test="bo.userId != null"> + and co.uid = #{bo.userId} + </if> + </where> </select> <select id="selectSonOrderInfoByTotalId" resultType="com.pz.merchant.domain.vo.SonOrderVo"> -- libgit2 0.26.0