店员业绩
This commit is contained in:
@@ -19,8 +19,14 @@ import com.starry.admin.modules.order.module.vo.PlayOrderEvaluateQueryVo;
|
||||
import com.starry.admin.modules.order.module.vo.PlayOrderStateEditVo;
|
||||
import com.starry.admin.modules.order.service.IPlayOrderEvaluateInfoService;
|
||||
import com.starry.admin.modules.order.service.IPlayOrderInfoService;
|
||||
import com.starry.admin.modules.personnel.module.entity.PlayPersonnelGroupInfoEntity;
|
||||
import com.starry.admin.modules.personnel.service.IPlayPersonnelGroupInfoService;
|
||||
import com.starry.admin.modules.statistics.service.IPlayClerkPerformanceService;
|
||||
import com.starry.admin.modules.weichat.entity.*;
|
||||
import com.starry.admin.modules.weichat.entity.clerk.*;
|
||||
import com.starry.admin.modules.weichat.entity.clerk.PlayClerkLevelAndRankingVo;
|
||||
import com.starry.admin.modules.weichat.entity.clerk.PlayClerkLevelInfoReturnVo;
|
||||
import com.starry.admin.modules.weichat.entity.clerk.PlayClerkUserInfoQueryVo;
|
||||
import com.starry.admin.modules.weichat.entity.clerk.PlayClerkUserInfoResultVo;
|
||||
import com.starry.admin.modules.weichat.entity.gift.PlayClerkGiftReturnVo;
|
||||
import com.starry.admin.modules.weichat.entity.order.PlayClerkOrderDetailsReturnVo;
|
||||
import com.starry.admin.modules.weichat.entity.order.PlayClerkOrderInfoQueryVo;
|
||||
@@ -36,9 +42,11 @@ import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
@@ -87,61 +95,24 @@ public class WxClerkController {
|
||||
@Resource
|
||||
private IPlayGiftInfoService giftInfoService;
|
||||
|
||||
@Resource
|
||||
private IPlayClerkPerformanceService playClerkPerformanceService;
|
||||
|
||||
@Resource
|
||||
private IPlayPersonnelGroupInfoService playPersonnelGroupInfoService;
|
||||
|
||||
|
||||
/**
|
||||
* 店员获取个人业绩信息
|
||||
*/
|
||||
@ClerkUserLogin
|
||||
@PostMapping("/user/queryPerformanceInfo")
|
||||
public R queryPerformanceInfo(@Validated @RequestBody PlayClerkPerformanceInfoQueryVo vo) {
|
||||
public R queryPerformanceInfo(@Validated @RequestBody PlayClerkWxPerformanceInfoQueryVo vo) {
|
||||
PlayClerkUserInfoEntity entity = clerkUserInfoService.selectById(ThreadLocalRequestDetail.getClerkUserInfo().getId());
|
||||
PlayClerkLevelInfoEntity level = playClerkLevelInfoService.selectPlayClerkLevelInfoById(entity.getLevelId());
|
||||
List<PlayClerkLevelInfoEntity> clerkLevelInfoEntity = playClerkLevelInfoService.selectAll();
|
||||
List<PlayOrderInfoEntity> orderInfoEntities = playOrderInfoService.clerkSelectOrderInfoList(entity.getId(), vo.getStartTime(), vo.getEndTime());
|
||||
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 : orderInfoEntities) {
|
||||
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.setClerkId(ThreadLocalRequestDetail.getClerkUserInfo().getId());
|
||||
returnVo.setLevelName(level.getName());
|
||||
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 R.ok(returnVo);
|
||||
List<PlayPersonnelGroupInfoEntity> groupInfoEntities = playPersonnelGroupInfoService.selectAll();
|
||||
return R.ok(playClerkPerformanceService.getClerkPerformanceInfo(entity, orderInfoEntities, clerkLevelInfoEntity, groupInfoEntities));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.starry.admin.modules.weichat.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author admin
|
||||
* @since 2024/6/10 下午8:58
|
||||
**/
|
||||
@Data
|
||||
public class PlayClerkWxPerformanceInfoQueryVo {
|
||||
|
||||
/**
|
||||
* 店员ID
|
||||
*/
|
||||
private String clerkId;
|
||||
|
||||
|
||||
/**
|
||||
* 订单开始时间
|
||||
*/
|
||||
private String startTime;
|
||||
|
||||
|
||||
/**
|
||||
* 订单结束时间
|
||||
*/
|
||||
private String endTime;
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
package com.starry.admin.modules.weichat.entity.clerk;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @author admin
|
||||
* @since 2024/6/10 下午8:58
|
||||
**/
|
||||
@Data
|
||||
public class PlayClerkPerformanceInfoQueryVo {
|
||||
|
||||
private String clerkId;
|
||||
|
||||
|
||||
private String startTime;
|
||||
|
||||
|
||||
private String endTime;
|
||||
}
|
||||
@@ -1,107 +0,0 @@
|
||||
package com.starry.admin.modules.weichat.entity.clerk;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author admin
|
||||
* @since 2024/6/10 下午8:58
|
||||
**/
|
||||
@Data
|
||||
public class PlayClerkPerformanceInfoReturnVo {
|
||||
|
||||
|
||||
/**
|
||||
* 店员ID
|
||||
*/
|
||||
private String clerkId;
|
||||
/**
|
||||
* 分组名称
|
||||
*/
|
||||
private String groupName = "分组1";
|
||||
/**
|
||||
* 分组名称
|
||||
*/
|
||||
private String levelName = "金牌";
|
||||
/**
|
||||
* 在线时长
|
||||
*/
|
||||
private Integer onlineDuration = 0;
|
||||
/**
|
||||
* 订单总数
|
||||
*/
|
||||
private Integer orderNumber = 0;
|
||||
/**
|
||||
* 首单数
|
||||
*/
|
||||
private Integer orderFirstNumber = 0;
|
||||
/**
|
||||
* 续单数
|
||||
*/
|
||||
private Integer orderContinueNumber = 0;
|
||||
/**
|
||||
* 退款单数
|
||||
*/
|
||||
private Integer orderRefundNumber = 0;
|
||||
/**
|
||||
* 超时未接单数
|
||||
*/
|
||||
private Integer ordersExpiredNumber = 0;
|
||||
/**
|
||||
* 订单金额
|
||||
*/
|
||||
private BigDecimal finalAmount = BigDecimal.ZERO;
|
||||
/**
|
||||
* 首单金额
|
||||
*/
|
||||
private BigDecimal orderFirstAmount = BigDecimal.ZERO;
|
||||
/**
|
||||
* 续单金额
|
||||
*/
|
||||
private BigDecimal orderTotalAmount = BigDecimal.ZERO;
|
||||
/**
|
||||
* 打赏金额
|
||||
*/
|
||||
private BigDecimal orderRewardAmount = BigDecimal.ZERO;
|
||||
/**
|
||||
* 退款金额
|
||||
*/
|
||||
private BigDecimal orderRefundAmount = BigDecimal.ZERO;
|
||||
/**
|
||||
* 用户数
|
||||
*/
|
||||
private Integer customNumber = 0;
|
||||
|
||||
/**
|
||||
* 连续用户数
|
||||
*/
|
||||
private final Integer continuousCustomNumber = 0;
|
||||
/**
|
||||
* 续单比例
|
||||
*/
|
||||
private final BigDecimal orderContinueProportion = BigDecimal.ZERO;
|
||||
/**
|
||||
* 订单平均价格
|
||||
*/
|
||||
private final BigDecimal averageUnitPrice = BigDecimal.ZERO;
|
||||
|
||||
/**
|
||||
* 续费率
|
||||
*/
|
||||
private BigDecimal orderContinueRechargeProportion = BigDecimal.ZERO;
|
||||
/**
|
||||
* 退单率
|
||||
*/
|
||||
private BigDecimal orderChargebackProportion = BigDecimal.ZERO;
|
||||
/**
|
||||
* 续客率
|
||||
*/
|
||||
private BigDecimal continuousCustomProportion = BigDecimal.ZERO;
|
||||
/**
|
||||
* 店员预计收入
|
||||
*/
|
||||
private BigDecimal estimatedRevenue = BigDecimal.ZERO;
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user