查看订单详情进行分页
This commit is contained in:
@ -0,0 +1,21 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.billing.vo;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Schema(description = "小程序 - 开票选择订单详情")
|
||||
@Data
|
||||
public class BillingPageDataVo extends PageParam {
|
||||
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date time;
|
||||
private Integer billingType;
|
||||
private Long carteenId;
|
||||
private Long userId;
|
||||
}
|
@ -3,10 +3,7 @@ package cn.iocoder.yudao.module.member.controller.app.billing;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.billing.vo.BillingPageReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.billing.vo.BillingRespMoneyVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.billing.vo.BillingRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.billing.vo.BillingSaveReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.billing.vo.*;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.billing.BillingDO;
|
||||
import cn.iocoder.yudao.module.member.service.billing.BillingService;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
@ -79,22 +76,14 @@ public class AppBillingController {
|
||||
}
|
||||
@GetMapping("/totalMoney")
|
||||
@Operation(summary = "获取月时间段的金额")
|
||||
public CommonResult<BigDecimal> getBillingPage(@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
@RequestParam("time") Date time,
|
||||
@RequestParam("billingType") Integer billingType,
|
||||
@RequestParam("carteenId") Long carteenId,
|
||||
@RequestParam("userId")Long userId) {
|
||||
BigDecimal totalMoney = billingService.getTotalMoney(time, billingType, carteenId,userId);
|
||||
public CommonResult<BigDecimal> getBillingPage(BillingPageDataVo vo) {
|
||||
BigDecimal totalMoney = billingService.getTotalMoney(vo);
|
||||
return success(totalMoney);
|
||||
}
|
||||
@GetMapping("/data")
|
||||
@Operation(summary = "获取月时间段的订单详情")
|
||||
public CommonResult<Object> getData(@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
@RequestParam("time") Date time,
|
||||
@RequestParam("billingType") Integer billingType,
|
||||
@RequestParam("carteenId") Long carteenId,
|
||||
@RequestParam("userId")Long userId) {
|
||||
Object data = billingService.getData(time, billingType, carteenId,userId);
|
||||
public CommonResult<Object> getData(BillingPageDataVo vo) {
|
||||
Object data = billingService.getData(vo);
|
||||
return success(data);
|
||||
}
|
||||
@GetMapping("/TypeTotal")
|
||||
|
@ -1,6 +1,7 @@
|
||||
package cn.iocoder.yudao.module.member.service.billing;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.billing.vo.BillingPageDataVo;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.billing.vo.BillingPageReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.billing.vo.BillingRespMoneyVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.billing.vo.BillingSaveReqVO;
|
||||
@ -66,13 +67,10 @@ public interface BillingService {
|
||||
|
||||
/**
|
||||
* 获取指定时间段的所有金额
|
||||
* @param time
|
||||
* @param billingType
|
||||
* @param carteenId
|
||||
* @return
|
||||
*/
|
||||
BigDecimal getTotalMoney(Date time,Integer billingType,Long carteenId,Long userId);
|
||||
Object getData(Date time,Integer billingType,Long carteenId,Long userId);
|
||||
BigDecimal getTotalMoney(BillingPageDataVo vo);
|
||||
Object getData(BillingPageDataVo vo);
|
||||
String getMemberId(Long userId);
|
||||
|
||||
/**
|
||||
|
@ -5,6 +5,7 @@ import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONArray;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
@ -13,9 +14,14 @@ import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.billing.vo.BillingPageDataVo;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.billing.vo.BillingPageReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.billing.vo.BillingRespMoneyVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.billing.vo.BillingSaveReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.orderdetail.vo.OrderDetailRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsuleRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreOrderDetailVo;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.billing.BillingDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO;
|
||||
@ -29,6 +35,9 @@ import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper;
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.orderspacecapsule.OrderSpaceCapsuleMapper;
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.storeorder.StoreOrderMapper;
|
||||
import cn.iocoder.yudao.module.member.enums.*;
|
||||
import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService;
|
||||
import cn.iocoder.yudao.module.member.service.storeorderdetail.StoreOrderDetailService;
|
||||
import cn.iocoder.yudao.module.system.api.carteen.CarteenApi;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -41,6 +50,7 @@ import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.member.enums.BillingEnum.BILLING_CANTEEN;
|
||||
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
|
||||
|
||||
/**
|
||||
@ -64,6 +74,55 @@ public class BillingServiceImpl implements BillingService {
|
||||
private MemberGroupMapper memberGroupMapper;
|
||||
@Resource
|
||||
private CardMapper cardMapper;
|
||||
@Resource
|
||||
private StoreOrderDetailService storeOrderDetailService;
|
||||
@Resource
|
||||
private CarteenApi carteenApi;
|
||||
/**
|
||||
* 食堂
|
||||
* @param startTime
|
||||
* @param endTime
|
||||
* @return
|
||||
*/
|
||||
public PageResult<DishOrderDO> getDishOrderDO(BillingPageDataVo vo,Date startTime, Date endTime, List<Long> ids){
|
||||
return dishOrderMapper.selectPage(vo,new LambdaQueryWrapperX<DishOrderDO>()
|
||||
.betweenIfPresent(DishOrderDO::getCreateTime,startTime,endTime)
|
||||
.eq(DishOrderDO::getOrderStatus,DishOrderDO.COMPLETE)
|
||||
.eq(DishOrderDO::getBillingExist,Boolean.FALSE)
|
||||
.eq(DishOrderDO::getStoreId,vo.getCarteenId())
|
||||
.in(DishOrderDO::getUserId,ids)
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 超市
|
||||
* @param startTime
|
||||
* @param endTime
|
||||
* @return
|
||||
*/
|
||||
public PageResult<StoreOrderDO> getStoreOrderDO(BillingPageDataVo vo,Date startTime, Date endTime, List<Long> ids){
|
||||
return storeOrderMapper.selectPage(vo,new LambdaQueryWrapperX<StoreOrderDO>()
|
||||
.betweenIfPresent(StoreOrderDO::getCreateTime,startTime,endTime)
|
||||
.eq(StoreOrderDO::getStatus, StoreOrderStatusEnum.COMPLETE.getCode())
|
||||
.eq(StoreOrderDO::getBillingExist,Boolean.FALSE)
|
||||
.eq(StoreOrderDO::getCarteenId,vo.getCarteenId())
|
||||
.in(StoreOrderDO::getUserId,ids)
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 太空舱
|
||||
* @param startTime
|
||||
* @param endTime
|
||||
* @return
|
||||
*/
|
||||
public PageResult<OrderSpaceCapsuleDO> getOrderSpaceCapsuleDO(BillingPageDataVo vo,Date startTime, Date endTime, List<Long> ids){
|
||||
return orderSpaceCapsuleMapper.selectPage(vo,new LambdaQueryWrapperX<OrderSpaceCapsuleDO>()
|
||||
.betweenIfPresent(OrderSpaceCapsuleDO::getCreateTime,startTime,endTime)
|
||||
.eq(OrderSpaceCapsuleDO::getStatus, SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getCode())
|
||||
.eq(OrderSpaceCapsuleDO::getBillingExist,Boolean.FALSE)
|
||||
.eq(OrderSpaceCapsuleDO::getCarteenId,vo.getCarteenId())
|
||||
.in(OrderSpaceCapsuleDO::getUserId,ids)
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 食堂
|
||||
* @param startTime
|
||||
@ -426,21 +485,37 @@ public class BillingServiceImpl implements BillingService {
|
||||
.map(f -> BigDecimal.valueOf(f.getTotalPrice()))
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add); // 求和
|
||||
}
|
||||
|
||||
private List<?> getOrders(Date time, Integer billingType,List<Long> ids,Long carteenId) {
|
||||
// 获取时间内的订单
|
||||
DateTime start = DateUtil.beginOfMonth(time);
|
||||
DateTime end = DateUtil.endOfMonth(time);
|
||||
switch (BillingEnum.fromCode(billingType)) {
|
||||
case BILLING_CANTEEN:
|
||||
return getDishOrderDO(start, end, ids,carteenId);
|
||||
case BILLING_SUPERMARKET:
|
||||
return getStoreOrderDO(start, end, ids,carteenId);
|
||||
case BILLING_SPACE_CAPSULE:
|
||||
return getOrderSpaceCapsuleDO(start, end, ids,carteenId);
|
||||
default:
|
||||
throw new IllegalArgumentException("Unsupported billing type");
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public BigDecimal getTotalMoney(Date time, Integer billingType, Long carteenId, Long userId) {
|
||||
List<?> data =(List<?>) getData(time, billingType, carteenId, userId);
|
||||
public BigDecimal getTotalMoney(BillingPageDataVo vo) {
|
||||
// 获取当前单位下的所有成员
|
||||
List<Long> ids = getMemberListByUserId(vo.getUserId());
|
||||
List<?> data = getOrders(vo.getTime(), vo.getBillingType(), ids, vo.getCarteenId());
|
||||
// 根据账单类型计算总金额
|
||||
return calculateTotalMoneyByBillingType(billingType, data);
|
||||
return calculateTotalMoneyByBillingType(vo.getBillingType(), data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getData(Date time, Integer billingType, Long carteenId, Long userId) {
|
||||
public Object getData(BillingPageDataVo vo) {
|
||||
// 获取当前单位下的所有成员
|
||||
List<Long> memberList = getMemberListByUserId(userId);
|
||||
List<Long> memberList = getMemberListByUserId(vo.getUserId());
|
||||
// 获取订单并返回
|
||||
List<?> orders = getOrders(time, billingType, memberList,carteenId);
|
||||
if (CollUtil.isEmpty(orders)) {
|
||||
PageResult<?> orders = getOrders(vo, memberList);
|
||||
if (ObjUtil.isEmpty(orders)) {
|
||||
throw exception(BILLING_NOT_ORDER_EXISTS);
|
||||
}
|
||||
return orders;
|
||||
@ -505,17 +580,27 @@ public class BillingServiceImpl implements BillingService {
|
||||
throw new IllegalArgumentException("Unsupported billing type: " + billingType);
|
||||
}
|
||||
}
|
||||
private List<?> getOrders(Date time, Integer billingType,List<Long> ids,Long carteenId) {
|
||||
private PageResult<?> getOrders(BillingPageDataVo vo, List<Long> ids) {
|
||||
// 获取时间内的订单
|
||||
DateTime start = DateUtil.beginOfMonth(time);
|
||||
DateTime end = DateUtil.endOfMonth(time);
|
||||
switch (BillingEnum.fromCode(billingType)) {
|
||||
DateTime start = DateUtil.beginOfMonth(vo.getTime());
|
||||
DateTime end = DateUtil.endOfMonth(vo.getTime());
|
||||
switch (BillingEnum.fromCode(vo.getBillingType())) {
|
||||
case BILLING_CANTEEN:
|
||||
return getDishOrderDO(start, end, ids,carteenId);
|
||||
PageResult<DishOrderDO> dishOrderDO = getDishOrderDO(vo, start, end, ids);
|
||||
return BeanUtils.toBean(dishOrderDO, OrderDetailRespVO.class);
|
||||
case BILLING_SUPERMARKET:
|
||||
return getStoreOrderDO(start, end, ids,carteenId);
|
||||
PageResult<StoreOrderDO> pageResult =getStoreOrderDO(vo, start, end, ids);
|
||||
PageResult<StoreOrderRespVO> bean = BeanUtils.toBean(pageResult, StoreOrderRespVO.class);
|
||||
//处理订单详情
|
||||
for (StoreOrderRespVO vo1 : bean.getList()) {
|
||||
List<AppStoreOrderDetailVo> listByOrderNo = storeOrderDetailService.getListByOrderNo(vo1.getOrderId());
|
||||
vo1.setDetailDOS(listByOrderNo);
|
||||
vo1.setStoresName(carteenApi.getCarteenById(vo.getCarteenId()).getStoresName());
|
||||
}
|
||||
return bean;
|
||||
case BILLING_SPACE_CAPSULE:
|
||||
return getOrderSpaceCapsuleDO(start, end, ids,carteenId);
|
||||
PageResult<OrderSpaceCapsuleDO> orderSpaceCapsuleDO = getOrderSpaceCapsuleDO(vo, start, end, ids);
|
||||
return BeanUtils.toBean(orderSpaceCapsuleDO, OrderSpaceCapsuleRespVO.class);
|
||||
default:
|
||||
throw new IllegalArgumentException("Unsupported billing type");
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ spring:
|
||||
autoconfigure:
|
||||
exclude:
|
||||
- com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
|
||||
- org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置
|
||||
#- org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置
|
||||
- de.codecentric.boot.admin.server.config.AdminServerAutoConfiguration # 禁用 Spring Boot Admin 的 Server 的自动配置
|
||||
- de.codecentric.boot.admin.server.ui.config.AdminServerUiAutoConfiguration # 禁用 Spring Boot Admin 的 Server UI 的自动配置
|
||||
- de.codecentric.boot.admin.client.config.SpringBootAdminClientAutoConfiguration # 禁用 Spring Boot Admin 的 Client 的自动配置
|
||||
|
Reference in New Issue
Block a user