Commit cdb32d01 by 邹磊浩

修改代码

parent 1b1b6d84
...@@ -8,8 +8,10 @@ import com.pz.common.core.domain.PageQuery; ...@@ -8,8 +8,10 @@ import com.pz.common.core.domain.PageQuery;
import com.pz.common.core.domain.R; import com.pz.common.core.domain.R;
import com.pz.common.core.page.TableDataInfo; import com.pz.common.core.page.TableDataInfo;
import com.pz.system.domain.bo.DbghOrderBo; 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.DbghOrderVo;
import com.pz.system.domain.vo.OrderColumnarVo; import com.pz.system.domain.vo.OrderColumnarVo;
import com.pz.system.domain.vo.OrderLineVo;
import com.pz.system.mapper.TotalOrderMapper; import com.pz.system.mapper.TotalOrderMapper;
import com.pz.common.core.domain.R; import com.pz.common.core.domain.R;
import com.pz.merchant.service.ICompanyService; import com.pz.merchant.service.ICompanyService;
...@@ -21,6 +23,7 @@ import com.pz.system.domain.vo.DbghOrderVo; ...@@ -21,6 +23,7 @@ import com.pz.system.domain.vo.DbghOrderVo;
import com.pz.system.service.IStoreApplyService; import com.pz.system.service.IStoreApplyService;
import com.pz.system.service.ISysUserService; import com.pz.system.service.ISysUserService;
import com.pz.system.service.ITotalOrderService; import com.pz.system.service.ITotalOrderService;
import com.pz.system.service.ITotalOrderService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -32,6 +35,7 @@ import javax.validation.constraints.NotNull; ...@@ -32,6 +35,7 @@ import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 数据总览 * 数据总览
...@@ -44,6 +48,7 @@ import java.util.List; ...@@ -44,6 +48,7 @@ import java.util.List;
@RestController @RestController
@RequestMapping("/system/data") @RequestMapping("/system/data")
public class DataViewController extends BaseController { public class DataViewController extends BaseController {
private final ITotalOrderService iTotalOrderService;
private final ISysUserService iSysUserService; private final ISysUserService iSysUserService;
...@@ -53,8 +58,6 @@ public class DataViewController extends BaseController { ...@@ -53,8 +58,6 @@ public class DataViewController extends BaseController {
private final IStoreApplyService iStoreApplyService; private final IStoreApplyService iStoreApplyService;
private final ITotalOrderService iTotalOrderService;
/** /**
* 新增用户统计 * 新增用户统计
*/ */
...@@ -126,9 +129,9 @@ public class DataViewController extends BaseController { ...@@ -126,9 +129,9 @@ public class DataViewController extends BaseController {
/** /**
* 数据总览柱状图 * 数据总览柱状图
*/ */
@GetMapping("/findOrderColumnarVoList/{type}") @GetMapping("/findOrderColumnarVoList")
public R<List<OrderColumnarVo>> findOrderColumnarVoList( public R<List<OrderLineVo>> findOrderColumnarVoList(
@PathVariable Integer type) { OrderColumnarBo bo) {
return R.ok(totalOrderMapper.findOrderColumnarVoList(type)); return R.ok(iTotalOrderService.findOrderColumnarVoList(bo));
} }
} }
...@@ -16,7 +16,9 @@ import java.time.LocalTime; ...@@ -16,7 +16,9 @@ import java.time.LocalTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 时间工具类 * 时间工具类
...@@ -87,6 +89,37 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { ...@@ -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 * 日期路径 即年/月/日 如2018/08/08
*/ */
...@@ -97,11 +130,12 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { ...@@ -97,11 +130,12 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
/** /**
* 字符串转换成日期 * 字符串转换成日期
*
* @param strDate 日期字符串 * @param strDate 日期字符串
* @param pattern 日期的格式,如:DateUtils.DATE_TIME_PATTERN * @param pattern 日期的格式,如:DateUtils.DATE_TIME_PATTERN
*/ */
public static Date stringToDate(String strDate, String pattern) { public static Date stringToDate(String strDate, String pattern) {
if (StringUtils.isBlank(strDate)){ if (StringUtils.isBlank(strDate)) {
return null; return null;
} }
......
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;
}
...@@ -79,5 +79,5 @@ public class YypzOrderBo extends BaseEntity { ...@@ -79,5 +79,5 @@ public class YypzOrderBo extends BaseEntity {
*/ */
private String remark; private String remark;
private Long userId;
} }
...@@ -11,7 +11,10 @@ public class OrderColumnarVo implements Serializable { ...@@ -11,7 +11,10 @@ public class OrderColumnarVo implements Serializable {
* 业务名称 * 业务名称
*/ */
private String name; private String name;
/**
* 日期
*/
private String time;
/** /**
* 数量 * 数量
*/ */
......
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;
}
...@@ -71,5 +71,5 @@ public interface TotalOrderMapper extends BaseMapperPlus<TotalOrderMapper, Total ...@@ -71,5 +71,5 @@ public interface TotalOrderMapper extends BaseMapperPlus<TotalOrderMapper, Total
* @param type * @param type
* @return * @return
*/ */
List<OrderColumnarVo> findOrderColumnarVoList(@Param("type") Integer type); List<OrderColumnarVo> findOrderColumnarVoList(@Param("time") String time);
} }
...@@ -6,17 +6,22 @@ import com.pz.common.core.domain.R; ...@@ -6,17 +6,22 @@ import com.pz.common.core.domain.R;
import com.pz.system.domain.TotalOrder; import com.pz.system.domain.TotalOrder;
import com.pz.system.domain.bo.CreateOrderBo; import com.pz.system.domain.bo.CreateOrderBo;
import com.pz.system.domain.bo.DataViewBo; 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.AccompanyDemandVo;
import com.pz.system.domain.vo.DataOrderVo; import com.pz.system.domain.vo.DataOrderVo;
import com.pz.system.domain.vo.DataViewVo; 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.vo.TotalOrderVo;
import com.pz.system.domain.bo.TotalOrderBo; import com.pz.system.domain.bo.TotalOrderBo;
import com.pz.common.core.page.TableDataInfo; import com.pz.common.core.page.TableDataInfo;
import com.pz.common.core.domain.PageQuery; import com.pz.common.core.domain.PageQuery;
import org.apache.ibatis.annotations.Param;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 总订单Service接口 * 总订单Service接口
...@@ -165,4 +170,11 @@ public interface ITotalOrderService { ...@@ -165,4 +170,11 @@ public interface ITotalOrderService {
* 订单量 * 订单量
*/ */
DataOrderVo orderQuantity(DataViewBo dataViewBo); DataOrderVo orderQuantity(DataViewBo dataViewBo);
/**
* 数据总览
* @param bo
* @return
*/
List<OrderLineVo> findOrderColumnarVoList(OrderColumnarBo bo);
} }
...@@ -22,6 +22,7 @@ import com.pz.common.enums.CommonOrderStatus; ...@@ -22,6 +22,7 @@ import com.pz.common.enums.CommonOrderStatus;
import com.pz.common.enums.TotalOrderStatus; import com.pz.common.enums.TotalOrderStatus;
import com.pz.common.exception.ServiceException; import com.pz.common.exception.ServiceException;
import com.pz.common.helper.LoginHelper; import com.pz.common.helper.LoginHelper;
import com.pz.common.utils.DateUtils;
import com.pz.common.utils.HttpUtils; import com.pz.common.utils.HttpUtils;
import com.pz.common.utils.JsonUtils; import com.pz.common.utils.JsonUtils;
import com.pz.merchant.domain.Company; import com.pz.merchant.domain.Company;
...@@ -38,6 +39,7 @@ import com.pz.system.datastructure.OrderDelayQueue; ...@@ -38,6 +39,7 @@ import com.pz.system.datastructure.OrderDelayQueue;
import com.pz.system.datastructure.TotalOrderDelayOperator; import com.pz.system.datastructure.TotalOrderDelayOperator;
import com.pz.system.domain.*; import com.pz.system.domain.*;
import com.pz.system.domain.bo.CreateOrderBo; 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.DataViewBo;
import com.pz.system.domain.bo.TotalOrderBo; import com.pz.system.domain.bo.TotalOrderBo;
import com.pz.system.domain.vo.*; import com.pz.system.domain.vo.*;
...@@ -60,6 +62,7 @@ import java.time.format.DateTimeFormatter; ...@@ -60,6 +62,7 @@ import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder; import java.time.format.DateTimeFormatterBuilder;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/** /**
* 总订单Service业务层处理 * 总订单Service业务层处理
...@@ -1237,6 +1240,42 @@ public class TotalOrderServiceImpl implements ITotalOrderService { ...@@ -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() { public String getOrderSn() {
long timestamp = System.currentTimeMillis(); long timestamp = System.currentTimeMillis();
String timestampStr = Long.toString(timestamp); String timestampStr = Long.toString(timestamp);
......
...@@ -121,10 +121,13 @@ ...@@ -121,10 +121,13 @@
where total_order.id = #{id} where total_order.id = #{id}
</select> </select>
<select id="findOrderColumnarVoList" resultType="com.pz.system.domain.vo.OrderColumnarVo"> <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 FROM business b
LEFT JOIN total_order t ON t.business_id = b.id LEFT JOIN total_order t ON t.business_id = b.id
AND t.`status` = 2 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"> <if test="type == 1">
AND DATE(t.finish_time) = CURDATE() AND DATE(t.finish_time) = CURDATE()
</if> </if>
......
...@@ -49,9 +49,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -49,9 +49,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LEFT JOIN department AS d ON d.id = yyod.did LEFT JOIN department AS d ON d.id = yyod.did
LEFT JOIN services AS s ON s.id = tlo.service_id LEFT JOIN services AS s ON s.id = tlo.service_id
LEFT JOIN employees AS e ON e.id = tlo.em_id LEFT JOIN employees AS e ON e.id = tlo.em_id
LEFT JOIN company AS co ON co.id = e.company_id
<where>
<if test="bo.orderSn != null and bo.orderSn != ''"> <if test="bo.orderSn != null and bo.orderSn != ''">
where tlo.order_sn LIKE CONCAT('%', #{bo.orderSn}, '%') and tlo.order_sn LIKE CONCAT('%', #{bo.orderSn}, '%')
</if> </if>
<if test="bo.userId != null">
and co.uid = #{bo.userId}
</if>
</where>
</select> </select>
<select id="selectSonOrderInfoByTotalId" resultType="com.pz.merchant.domain.vo.SonOrderVo"> <select id="selectSonOrderInfoByTotalId" resultType="com.pz.merchant.domain.vo.SonOrderVo">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment