This commit is contained in:
admin
2024-06-26 01:37:46 +08:00
parent 5a12ca5146
commit 12c7422908
6 changed files with 132 additions and 27 deletions

View File

@@ -280,9 +280,9 @@ public class PlayClerkUserInfoServiceImpl extends ServiceImpl<PlayClerkUserInfoM
if (StrUtil.isNotBlank(vo.getClerkId())) {
lambdaQueryWrapper.eq(PlayClerkUserInfoEntity::getId, vo.getClerkId());
}
if (StrUtil.isNotBlank(vo.getGroupId())) {
lambdaQueryWrapper.eq(PlayClerkUserInfoEntity::getGroupId, vo.getGroupId());
}
// if (StrUtil.isNotBlank(vo.getGroupId())) {
// lambdaQueryWrapper.eq(PlayClerkUserInfoEntity::getGroupId, vo.getGroupId());
// }
if (StrUtil.isNotBlank(vo.getSex())) {
lambdaQueryWrapper.eq(PlayClerkUserInfoEntity::getSex, vo.getSex());
}

View File

@@ -7,9 +7,7 @@ import com.starry.admin.modules.order.module.vo.*;
import com.starry.admin.modules.order.service.IPlayOrderInfoService;
import com.starry.admin.modules.order.service.IPlayOrderRandomInfoService;
import com.starry.admin.modules.personnel.service.IPlayPersonnelGroupInfoService;
import com.starry.admin.modules.system.entity.SysRoleEntity;
import com.starry.admin.modules.system.service.SysRoleService;
import com.starry.admin.utils.SecurityUtils;
import com.starry.common.annotation.Log;
import com.starry.common.context.CustomSecurityContextHolder;
import com.starry.common.enums.BusinessType;
@@ -19,10 +17,6 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
@@ -55,18 +49,6 @@ public class PlayOrderInfoController {
return R.ok(orderInfoService.selectOrderInfoPage(vo));
}
/**
* 查询7天内, 已完成 和 进行中的订单
* 然后进行统计
*/
@PostMapping("/listByTime")
public R listByTime(@Validated @RequestBody PlayOrderComplaintQueryVo vo) {
String startTime = "2024-06-24 00:00:00";
String nedTime = "2024-06-24 00:00:00";
List<PlayOrderInfoEntity> list = orderInfoService.listByTime("", startTime, nedTime, Stream.of("2","3").collect(Collectors.toList()));
return R.ok(list);
}
/**
* 订单退款

View File

@@ -39,7 +39,10 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.stream.Collectors;
import static com.starry.admin.modules.order.module.constant.OrderConstant.ORDER_STATUS_2;
@@ -275,10 +278,9 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getAcceptBy, clerkId);
}
if (orderStatus != null) {
lambdaQueryWrapper.in(PlayOrderInfoEntity::getOrderStatus, new ArrayList<>());
lambdaQueryWrapper.in(PlayOrderInfoEntity::getOrderStatus, orderStatus);
}
lambdaQueryWrapper.between(PlayOrderInfoEntity::getAcceptTime, startTime, endTime);
lambdaQueryWrapper.between(PlayOrderInfoEntity::getPurchaserTime, startTime, endTime);
return this.baseMapper.selectList(lambdaQueryWrapper);
}

View File

@@ -20,7 +20,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* 店员业绩查询对
@@ -61,4 +66,112 @@ public class PlayClerkPerformanceController {
});
return R.ok(voPage);
}
@PostMapping("/listByTime")
public R listByTime(@Validated @RequestBody PlayClerkPerformanceInfoQueryVo vo) {
vo.getEndOrderTime().get(1);
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//时间范围
List<String> dates = getDateRange(vo.getEndOrderTime().get(0), vo.getEndOrderTime().get(1));
//指定时间内所有订单
List<PlayOrderInfoEntity> orderInfoEntities = playOrderInfoService.listByTime("", vo.getEndOrderTime().get(0), vo.getEndOrderTime().get(1), Stream.of("2", "3").collect(Collectors.toList()));
List<PlayClerkPerformanceInfoReturnVo> orders = new ArrayList<>(dates.size());
for (String date : dates) {
orders.add(getPerformanceInfo(date, orderInfoEntities));
}
Map<String, Object> resultMap = new HashMap<>(orders.size());
resultMap.put("dates", dates);
resultMap.put("list", orders);
return R.ok(resultMap);
}
/**
* 根据订单开始时间和结束时间,组装订单统计信息的查询时间范围
*
* @param startTime 开始时间
* @param endTime 结束时间
* @return 时间范围
*/
public List<String> getDateRange(String startTime, String endTime) {
List<String> dates = new ArrayList<>();
LocalDateTime date1 = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDateTime date2 = LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
while (!date1.isAfter(date2)) {
dates.add(date1.toLocalDate().toString());
date1 = date1.plusDays(1);
}
return dates;
}
/**
* 组装统计数据
*
* @param performanceDate 统计时间
* @param orderInfoEntities 订单列表
* @return 统计数据
*/
public PlayClerkPerformanceInfoReturnVo getPerformanceInfo(String performanceDate, List<PlayOrderInfoEntity> orderInfoEntities) {
PlayClerkPerformanceInfoReturnVo vo = new PlayClerkPerformanceInfoReturnVo();
vo.setPerformanceDate(performanceDate);
List<PlayOrderInfoEntity> itemOrderInfo = new ArrayList<>();
for (PlayOrderInfoEntity orderInfoEntity : orderInfoEntities) {
//接单时间,在指定日期的 00:00:00点到23:5959之间
if (orderInfoEntity.getPurchaserTime().isAfter(LocalDateTime.parse(performanceDate + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))) && orderInfoEntity.getPurchaserTime().isBefore(LocalDateTime.parse(performanceDate + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))) {
itemOrderInfo.add(orderInfoEntity);
}
}
Set<String> customIds = new HashSet<>();
int orderContinueNumber = 0;
int orderRefundNumber = 0;
int ordersExpiredNumber = 0;
BigDecimal finalAmount = BigDecimal.ZERO;
BigDecimal orderFirstAmount = BigDecimal.ZERO;
BigDecimal orderTotalAmount = BigDecimal.ZERO;
BigDecimal orderRewardAmount = BigDecimal.ZERO;
BigDecimal orderRefundAmount = BigDecimal.ZERO;
BigDecimal estimatedRevenue = BigDecimal.ZERO;
for (PlayOrderInfoEntity orderInfoEntity : itemOrderInfo) {
customIds.add(orderInfoEntity.getPurchaserBy());
finalAmount = finalAmount.add(orderInfoEntity.getFinalAmount());
if ("1".equals(orderInfoEntity.getFirstOrder())) {
orderFirstAmount = orderFirstAmount.add(orderInfoEntity.getFinalAmount());
} else {
orderContinueNumber++;
orderTotalAmount = orderTotalAmount.add(orderInfoEntity.getFinalAmount());
}
if ("2".equals(orderInfoEntity.getPlaceType())) {
orderRewardAmount = orderRewardAmount.add(orderInfoEntity.getFinalAmount());
}
if ("1".equals(orderInfoEntity.getRefundType())) {
orderRefundNumber++;
orderRefundAmount = orderRefundAmount.add(orderInfoEntity.getRefundAmount());
}
if ("1".equals(orderInfoEntity.getOrdersExpiredState())) {
ordersExpiredNumber++;
}
}
PlayClerkPerformanceInfoReturnVo returnVo = new PlayClerkPerformanceInfoReturnVo();
returnVo.setOrderNumber(orderInfoEntities.size());
returnVo.setOrderContinueNumber(orderContinueNumber);
returnVo.setOrderRefundNumber(orderRefundNumber);
returnVo.setOrdersExpiredNumber(ordersExpiredNumber);
returnVo.setFinalAmount(finalAmount);
returnVo.setOrderFirstAmount(orderFirstAmount);
returnVo.setOrderTotalAmount(orderTotalAmount);
returnVo.setOrderRewardAmount(orderRewardAmount);
returnVo.setOrderRefundAmount(orderRefundAmount);
returnVo.setCustomNumber(customIds.size());
returnVo.setEstimatedRevenue(estimatedRevenue);
return returnVo;
}
}

View File

@@ -37,7 +37,10 @@ public class PlayClerkPerformanceInfoQueryVo extends BasePageEntity {
*/
private String listingState;
/**
* 订单状态ID
*/
private List<String> orderStatus;
/**
* 完成订单时间
*/

View File

@@ -113,5 +113,10 @@ public class PlayClerkPerformanceInfoReturnVo {
*/
private BigDecimal estimatedRevenue = BigDecimal.ZERO;
/**
* 统计时间
*/
private String performanceDate;
}