Commit cdb32d01 by 邹磊浩

修改代码

parent 1b1b6d84
......@@ -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));
}
}
......@@ -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;
}
......
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 {
*/
private String remark;
private Long userId;
}
......@@ -11,7 +11,10 @@ public class OrderColumnarVo implements Serializable {
* 业务名称
*/
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
* @param type
* @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;
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);
}
......@@ -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);
......
......@@ -121,10 +121,13 @@
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">
AND DATE(t.finish_time) = CURDATE()
</if>
......
......@@ -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
LEFT JOIN company AS co ON co.id = e.company_id
<where>
<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 test="bo.userId != null">
and co.uid = #{bo.userId}
</if>
</where>
</select>
<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