查看订单详情进行分页
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.CommonResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
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.*;
|
||||||
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.dal.dataobject.billing.BillingDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.billing.BillingDO;
|
||||||
import cn.iocoder.yudao.module.member.service.billing.BillingService;
|
import cn.iocoder.yudao.module.member.service.billing.BillingService;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
@ -79,22 +76,14 @@ public class AppBillingController {
|
|||||||
}
|
}
|
||||||
@GetMapping("/totalMoney")
|
@GetMapping("/totalMoney")
|
||||||
@Operation(summary = "获取月时间段的金额")
|
@Operation(summary = "获取月时间段的金额")
|
||||||
public CommonResult<BigDecimal> getBillingPage(@DateTimeFormat(pattern = "yyyy-MM-dd")
|
public CommonResult<BigDecimal> getBillingPage(BillingPageDataVo vo) {
|
||||||
@RequestParam("time") Date time,
|
BigDecimal totalMoney = billingService.getTotalMoney(vo);
|
||||||
@RequestParam("billingType") Integer billingType,
|
|
||||||
@RequestParam("carteenId") Long carteenId,
|
|
||||||
@RequestParam("userId")Long userId) {
|
|
||||||
BigDecimal totalMoney = billingService.getTotalMoney(time, billingType, carteenId,userId);
|
|
||||||
return success(totalMoney);
|
return success(totalMoney);
|
||||||
}
|
}
|
||||||
@GetMapping("/data")
|
@GetMapping("/data")
|
||||||
@Operation(summary = "获取月时间段的订单详情")
|
@Operation(summary = "获取月时间段的订单详情")
|
||||||
public CommonResult<Object> getData(@DateTimeFormat(pattern = "yyyy-MM-dd")
|
public CommonResult<Object> getData(BillingPageDataVo vo) {
|
||||||
@RequestParam("time") Date time,
|
Object data = billingService.getData(vo);
|
||||||
@RequestParam("billingType") Integer billingType,
|
|
||||||
@RequestParam("carteenId") Long carteenId,
|
|
||||||
@RequestParam("userId")Long userId) {
|
|
||||||
Object data = billingService.getData(time, billingType, carteenId,userId);
|
|
||||||
return success(data);
|
return success(data);
|
||||||
}
|
}
|
||||||
@GetMapping("/TypeTotal")
|
@GetMapping("/TypeTotal")
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package cn.iocoder.yudao.module.member.service.billing;
|
package cn.iocoder.yudao.module.member.service.billing;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
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.BillingPageReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.billing.vo.BillingRespMoneyVO;
|
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.billing.vo.BillingSaveReqVO;
|
||||||
@ -66,13 +67,10 @@ public interface BillingService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取指定时间段的所有金额
|
* 获取指定时间段的所有金额
|
||||||
* @param time
|
|
||||||
* @param billingType
|
|
||||||
* @param carteenId
|
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
BigDecimal getTotalMoney(Date time,Integer billingType,Long carteenId,Long userId);
|
BigDecimal getTotalMoney(BillingPageDataVo vo);
|
||||||
Object getData(Date time,Integer billingType,Long carteenId,Long userId);
|
Object getData(BillingPageDataVo vo);
|
||||||
String getMemberId(Long userId);
|
String getMemberId(Long userId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -5,6 +5,7 @@ import cn.hutool.core.date.DateTime;
|
|||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.map.MapUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.json.JSONArray;
|
import cn.hutool.json.JSONArray;
|
||||||
import cn.hutool.json.JSONUtil;
|
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.mapper.BaseMapperX;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
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.BillingPageReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.billing.vo.BillingRespMoneyVO;
|
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.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.billing.BillingDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO;
|
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.orderspacecapsule.OrderSpaceCapsuleMapper;
|
||||||
import cn.iocoder.yudao.module.member.dal.mysql.storeorder.StoreOrderMapper;
|
import cn.iocoder.yudao.module.member.dal.mysql.storeorder.StoreOrderMapper;
|
||||||
import cn.iocoder.yudao.module.member.enums.*;
|
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 org.springframework.stereotype.Service;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@ -41,6 +50,7 @@ import java.util.*;
|
|||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
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.*;
|
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -64,6 +74,55 @@ public class BillingServiceImpl implements BillingService {
|
|||||||
private MemberGroupMapper memberGroupMapper;
|
private MemberGroupMapper memberGroupMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private CardMapper cardMapper;
|
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
|
* @param startTime
|
||||||
@ -426,21 +485,37 @@ public class BillingServiceImpl implements BillingService {
|
|||||||
.map(f -> BigDecimal.valueOf(f.getTotalPrice()))
|
.map(f -> BigDecimal.valueOf(f.getTotalPrice()))
|
||||||
.reduce(BigDecimal.ZERO, BigDecimal::add); // 求和
|
.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
|
@Override
|
||||||
public BigDecimal getTotalMoney(Date time, Integer billingType, Long carteenId, Long userId) {
|
public BigDecimal getTotalMoney(BillingPageDataVo vo) {
|
||||||
List<?> data =(List<?>) getData(time, billingType, carteenId, userId);
|
// 获取当前单位下的所有成员
|
||||||
|
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
|
@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);
|
PageResult<?> orders = getOrders(vo, memberList);
|
||||||
if (CollUtil.isEmpty(orders)) {
|
if (ObjUtil.isEmpty(orders)) {
|
||||||
throw exception(BILLING_NOT_ORDER_EXISTS);
|
throw exception(BILLING_NOT_ORDER_EXISTS);
|
||||||
}
|
}
|
||||||
return orders;
|
return orders;
|
||||||
@ -505,17 +580,27 @@ public class BillingServiceImpl implements BillingService {
|
|||||||
throw new IllegalArgumentException("Unsupported billing type: " + billingType);
|
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 start = DateUtil.beginOfMonth(vo.getTime());
|
||||||
DateTime end = DateUtil.endOfMonth(time);
|
DateTime end = DateUtil.endOfMonth(vo.getTime());
|
||||||
switch (BillingEnum.fromCode(billingType)) {
|
switch (BillingEnum.fromCode(vo.getBillingType())) {
|
||||||
case BILLING_CANTEEN:
|
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:
|
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:
|
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:
|
default:
|
||||||
throw new IllegalArgumentException("Unsupported billing type");
|
throw new IllegalArgumentException("Unsupported billing type");
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ spring:
|
|||||||
autoconfigure:
|
autoconfigure:
|
||||||
exclude:
|
exclude:
|
||||||
- com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
|
- 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.config.AdminServerAutoConfiguration # 禁用 Spring Boot Admin 的 Server 的自动配置
|
||||||
- de.codecentric.boot.admin.server.ui.config.AdminServerUiAutoConfiguration # 禁用 Spring Boot Admin 的 Server UI 的自动配置
|
- de.codecentric.boot.admin.server.ui.config.AdminServerUiAutoConfiguration # 禁用 Spring Boot Admin 的 Server UI 的自动配置
|
||||||
- de.codecentric.boot.admin.client.config.SpringBootAdminClientAutoConfiguration # 禁用 Spring Boot Admin 的 Client 的自动配置
|
- de.codecentric.boot.admin.client.config.SpringBootAdminClientAutoConfiguration # 禁用 Spring Boot Admin 的 Client 的自动配置
|
||||||
|
Reference in New Issue
Block a user