开票功能修改
This commit is contained in:
		| @ -152,5 +152,6 @@ public interface ErrorCodeConstants { | |||||||
|     ErrorCode BILLING_NOT_EXISTS = new ErrorCode(1_004_023_00, "开票记录不存在"); |     ErrorCode BILLING_NOT_EXISTS = new ErrorCode(1_004_023_00, "开票记录不存在"); | ||||||
|     ErrorCode BILLING_NOT_ORDER_EXISTS= new ErrorCode(1_004_023_00, "该时间段没有订单可开票"); |     ErrorCode BILLING_NOT_ORDER_EXISTS= new ErrorCode(1_004_023_00, "该时间段没有订单可开票"); | ||||||
|     ErrorCode BILLING_NOT_ORDER_REFUSE= new ErrorCode(1_004_024_00, "拒绝理由不能为空"); |     ErrorCode BILLING_NOT_ORDER_REFUSE= new ErrorCode(1_004_024_00, "拒绝理由不能为空"); | ||||||
|  |     ErrorCode BILLING_NOT_ORDER_SECURITY= new ErrorCode(1_004_023_41, "没有权限给单位统一开票"); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
| @ -62,6 +62,6 @@ public class BillingPageReqVO extends PageParam { | |||||||
|     private LocalDateTime[] createTime; |     private LocalDateTime[] createTime; | ||||||
|     @Schema(description = "发票商品名称") |     @Schema(description = "发票商品名称") | ||||||
|     private String billingName; |     private String billingName; | ||||||
|     @Schema(description = "订单ids") |     @Schema(description = "单位所有开票的userid") | ||||||
|     private String orderId; |     private String orderId; | ||||||
| } | } | ||||||
| @ -79,6 +79,6 @@ public class BillingRespVO { | |||||||
|     @Schema(description = "发票商品名称") |     @Schema(description = "发票商品名称") | ||||||
|     @ExcelProperty("发票商品名称") |     @ExcelProperty("发票商品名称") | ||||||
|     private String billingName; |     private String billingName; | ||||||
|     @Schema(description = "订单ids") |     @Schema(description = "单位所有开票的userid") | ||||||
|     private String orderId; |     private String orderId; | ||||||
| } | } | ||||||
| @ -70,6 +70,6 @@ public class BillingSaveReqVO { | |||||||
|     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | ||||||
|     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") | ||||||
|     private Date endTime; |     private Date endTime; | ||||||
|     @Schema(description = "订单id") |     @Schema(description = "单位所有开票的userid") | ||||||
|     private Set<Long> orderId; |     private Set<Long> orderId; | ||||||
| } | } | ||||||
| @ -31,7 +31,7 @@ public class AppBillingController { | |||||||
|     @PostMapping("/create") |     @PostMapping("/create") | ||||||
|     @Operation(summary = "创建开票记录") |     @Operation(summary = "创建开票记录") | ||||||
|     public CommonResult<String> createBilling(@Valid @RequestBody BillingSaveReqVO createReqVO) { |     public CommonResult<String> createBilling(@Valid @RequestBody BillingSaveReqVO createReqVO) { | ||||||
|         return success(billingService.createBilling(createReqVO)); |         return success(billingService.createBillingUnit(createReqVO)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @PutMapping("/update") |     @PutMapping("/update") | ||||||
|  | |||||||
| @ -87,7 +87,7 @@ public class BillingDO extends BaseDO { | |||||||
|      */ |      */ | ||||||
|     private String billingName; |     private String billingName; | ||||||
|     /** |     /** | ||||||
|      * 订单id 用json |      * userid 用json | ||||||
|      */ |      */ | ||||||
|     private String orderId; |     private String orderId; | ||||||
| } | } | ||||||
| @ -72,5 +72,12 @@ public class CardDO extends BaseDO { | |||||||
|      * 微信充值金额 |      * 微信充值金额 | ||||||
|      */ |      */ | ||||||
|     private BigDecimal wxAmount; |     private BigDecimal wxAmount; | ||||||
|  |     /** | ||||||
|  |      * 是否开票 | ||||||
|  |      */ | ||||||
|  |     private Integer billingExist; | ||||||
|  |     /** | ||||||
|  |      * 开票编号 | ||||||
|  |      */ | ||||||
|  |     private String billingNum; | ||||||
| } | } | ||||||
| @ -1,5 +1,6 @@ | |||||||
| package cn.iocoder.yudao.module.member.dal.mysql.card; | package cn.iocoder.yudao.module.member.dal.mysql.card; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.collection.CollUtil; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
| 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; | ||||||
| @ -7,16 +8,24 @@ import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardPageReqVO; | |||||||
| import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardMonthVO; | import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardMonthVO; | ||||||
| import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO; | import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO; | ||||||
| import cn.iocoder.yudao.module.member.controller.app.card.vo.FaceVo; | import cn.iocoder.yudao.module.member.controller.app.card.vo.FaceVo; | ||||||
|  | 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.enums.BillingStatusEnum; | ||||||
| import cn.iocoder.yudao.module.member.util.MemberConstants; | import cn.iocoder.yudao.module.member.util.MemberConstants; | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||||
|  | import com.baomidou.mybatisplus.extension.conditions.update.UpdateChainWrapper; | ||||||
| import org.apache.ibatis.annotations.Mapper; | import org.apache.ibatis.annotations.Mapper; | ||||||
| import org.apache.ibatis.annotations.Param; | import org.apache.ibatis.annotations.Param; | ||||||
| import org.apache.ibatis.annotations.Select; | import org.apache.ibatis.annotations.Select; | ||||||
|  |  | ||||||
| import java.math.BigDecimal; | import java.math.BigDecimal; | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
|  | import java.util.Collection; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  | import java.util.Objects; | ||||||
|  | import java.util.Set; | ||||||
|  | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 余额变动明细 Mapper |  * 余额变动明细 Mapper | ||||||
| @ -66,5 +75,25 @@ public interface CardMapper extends BaseMapperX<CardDO> { | |||||||
|         } |         } | ||||||
|         return lastCardDO.getMoney(); |         return lastCardDO.getMoney(); | ||||||
|     } |     } | ||||||
|  |     default List<CardDO> getMoneyByUserIds(Collection<Long> userIds , String flag, String type,Integer var){ | ||||||
|  |        return selectList(new LambdaQueryWrapperX<CardDO>() | ||||||
|  |                 .eq(CardDO::getFlag, flag) | ||||||
|  |                 .eq(CardDO::getType, type) | ||||||
|  |                 .eq(CardDO::getBillingExist,var) | ||||||
|  |                 .in(CardDO::getUserId, userIds)); | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |     default BigDecimal getTotalMoneyByuserIds(Collection<Long> userIds, String flag, String type) { | ||||||
|  |         List<CardDO> cardDOS = selectList(new LambdaQueryWrapper<CardDO>() | ||||||
|  |                 .eq(CardDO::getFlag, flag) | ||||||
|  |                 .eq(CardDO::getType, type) | ||||||
|  |                 .ne(CardDO::getBillingExist, BillingStatusEnum.BILLING_INVOICING_IS_COMPLETE.getCode()) | ||||||
|  |                 .in(CardDO::getUserId, userIds)); | ||||||
|  |         return   cardDOS.stream() | ||||||
|  |                 .map(CardDO::getChangeMoney) | ||||||
|  |                 .filter(Objects::nonNull) | ||||||
|  |                 .reduce(BigDecimal.ZERO, BigDecimal::add); | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
| @ -16,7 +16,7 @@ public enum CostTypeEnum { | |||||||
|     MORNING("2", "早餐"), |     MORNING("2", "早餐"), | ||||||
|     NOON("3", "午餐"), |     NOON("3", "午餐"), | ||||||
|     NIGHT("4", "晚餐"), |     NIGHT("4", "晚餐"), | ||||||
|     ADMIN_PAY("5","管理后台充值"), |     ADMIN_PAY("5","现金充值"), | ||||||
|     REFUND("6","退款"), |     REFUND("6","退款"), | ||||||
|     WITHDRAW("7","微信提现"), |     WITHDRAW("7","微信提现"), | ||||||
|     CASH_WITHDRAW("8","现金提现"), |     CASH_WITHDRAW("8","现金提现"), | ||||||
|  | |||||||
| @ -22,6 +22,13 @@ public interface BillingService { | |||||||
|      */ |      */ | ||||||
|     String createBilling(@Valid BillingSaveReqVO createReqVO); |     String createBilling(@Valid BillingSaveReqVO createReqVO); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 单位统一开票 | ||||||
|  |      * @param createReqVO | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     String createBillingUnit(@Valid BillingSaveReqVO createReqVO); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 更新开票记录 |      * 更新开票记录 | ||||||
|      * |      * | ||||||
|  | |||||||
| @ -12,24 +12,28 @@ 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.api.card.CardApi; | ||||||
| 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.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.group.MemberGroupDO; | ||||||
| import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO; | import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO; | ||||||
| import cn.iocoder.yudao.module.member.dal.dataobject.orderspacecapsule.OrderSpaceCapsuleDO; | import cn.iocoder.yudao.module.member.dal.dataobject.orderspacecapsule.OrderSpaceCapsuleDO; | ||||||
| import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO; | import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO; | ||||||
| import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; | import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; | ||||||
| import cn.iocoder.yudao.module.member.dal.mysql.billing.BillingMapper; | import cn.iocoder.yudao.module.member.dal.mysql.billing.BillingMapper; | ||||||
|  | import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper; | ||||||
|  | import cn.iocoder.yudao.module.member.dal.mysql.group.MemberGroupMapper; | ||||||
| import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper; | 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.BillingEnum; | import cn.iocoder.yudao.module.member.enums.*; | ||||||
| import cn.iocoder.yudao.module.member.enums.BillingStatusEnum; |  | ||||||
| import cn.iocoder.yudao.module.member.enums.SpaceCapsuleOrderEnum; |  | ||||||
| import cn.iocoder.yudao.module.member.enums.StoreOrderStatusEnum; |  | ||||||
| import cn.iocoder.yudao.module.member.service.user.MemberUserService; | import cn.iocoder.yudao.module.member.service.user.MemberUserService; | ||||||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||||
|  | import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; | ||||||
|  | import com.baomidou.mybatisplus.extension.conditions.update.UpdateChainWrapper; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||||
|  |  | ||||||
| @ -72,6 +76,11 @@ public class BillingServiceImpl implements BillingService { | |||||||
|     private DishOrderMapper dishOrderMapper; |     private DishOrderMapper dishOrderMapper; | ||||||
|     @Resource |     @Resource | ||||||
|     private StoreOrderMapper storeOrderMapper; |     private StoreOrderMapper storeOrderMapper; | ||||||
|  |     @Resource | ||||||
|  |     private MemberGroupMapper memberGroupMapper; | ||||||
|  |     @Resource | ||||||
|  |     private CardMapper cardMapper; | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 食堂 |      * 食堂 | ||||||
| @ -169,6 +178,42 @@ public class BillingServiceImpl implements BillingService { | |||||||
|         // 返回主键 ID |         // 返回主键 ID | ||||||
|         return billing.getId(); |         return billing.getId(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     @Transactional(rollbackFor = Exception.class) | ||||||
|  |     public String createBillingUnit(BillingSaveReqVO createReqVO) { | ||||||
|  |         Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); | ||||||
|  |         //校验是否为管理员 | ||||||
|  |         MemberGroupDO memberGroupDO = memberGroupMapper.selectOne(new LambdaQueryWrapperX<MemberGroupDO>() | ||||||
|  |                 .eq(MemberGroupDO::getUserId, loginUserId) | ||||||
|  |                 .last(" limit 1") | ||||||
|  |         ); | ||||||
|  |         if(ObjUtil.isEmpty(memberGroupDO)) throw exception(BILLING_NOT_ORDER_SECURITY); | ||||||
|  |         // 插入 BillingDO 对象并生成唯一主键 | ||||||
|  |         BillingDO billing = BeanUtils.toBean(createReqVO, BillingDO.class); | ||||||
|  |         billing.setId(IdUtil.getSnowflakeNextId() + ""); | ||||||
|  |         billing.setUserName(memberGroupDO.getName()); | ||||||
|  |         billing.setUserPhone(String.valueOf(memberGroupDO.getId())); | ||||||
|  |         billing.setUserId(loginUserId); | ||||||
|  |         //查询单位充值的金额 | ||||||
|  |         List<CardDO> moneyByUserIds = cardMapper.getMoneyByUserIds(createReqVO.getOrderId(), CardDO.ADD, CostTypeEnum.ADMIN_PAY.getCode(),BillingStatusEnum.BILLING_INVOICING_REJECTION.getCode()); | ||||||
|  |         if(CollUtil.isEmpty(moneyByUserIds))throw exception(BILLING_NOT_ORDER_EXISTS); | ||||||
|  |         BigDecimal totalMoney = moneyByUserIds.stream() | ||||||
|  |                 .map(CardDO::getChangeMoney) | ||||||
|  |                 .filter(Objects::nonNull) | ||||||
|  |                 .reduce(BigDecimal.ZERO, BigDecimal::add); | ||||||
|  |         moneyByUserIds.forEach(f-> f.setBillingExist(BillingStatusEnum.BILLING_INVOICING.getCode())); | ||||||
|  |         cardMapper.updateBatch(moneyByUserIds); | ||||||
|  |         billing.setBillingMoney(totalMoney); | ||||||
|  |         billing.setOrderId(JSONUtil.toJsonStr(createReqVO.getOrderId())); | ||||||
|  |         billing.setBillingName(memberGroupDO.getName()+" 消费 "+totalMoney+" 元"); | ||||||
|  |         billing.setRequestBillingTime(LocalDateTime.now()); | ||||||
|  |         billing.setStatus(BillingStatusEnum.BILLING_INVOICING.getCode()); | ||||||
|  |         // 插入 BillingDO 对象到数据库 | ||||||
|  |         billingMapper.insert(billing); | ||||||
|  |         // 返回主键 ID | ||||||
|  |         return billing.getId(); | ||||||
|  |     } | ||||||
|     // 计算订单的总金额,处理 Double 到 BigDecimal 的转换 |     // 计算订单的总金额,处理 Double 到 BigDecimal 的转换 | ||||||
|     private <T> BigDecimal calculateTotalMoney1(List<T> orders, Function<T, Double> moneyMapper) { |     private <T> BigDecimal calculateTotalMoney1(List<T> orders, Function<T, Double> moneyMapper) { | ||||||
|         return orders.stream() |         return orders.stream() | ||||||
| @ -231,20 +276,10 @@ public class BillingServiceImpl implements BillingService { | |||||||
|             Set<Long> orderIds = jsonArray.stream() |             Set<Long> orderIds = jsonArray.stream() | ||||||
|                     .map(object -> Long.parseLong(object.toString())) // 将每个元素转换为 Long |                     .map(object -> Long.parseLong(object.toString())) // 将每个元素转换为 Long | ||||||
|                     .collect(Collectors.toSet()); |                     .collect(Collectors.toSet()); | ||||||
|             //拒绝就把锁住的订单释放掉 |             LambdaUpdateChainWrapper<CardDO> wrapper = new LambdaUpdateChainWrapper<>(cardMapper); | ||||||
|             switch (BillingEnum.fromCode(updateObj.getBillingType())){ |             wrapper.in(CardDO::getId,orderIds); | ||||||
|                 case BILLING_CANTEEN: |             wrapper.set(CardDO::getBillingExist,BillingStatusEnum.BILLING_INVOICING_REJECTION.getCode()); | ||||||
|                     dishOrderMapper.updateByIdBillingExist(orderIds,Boolean.FALSE); |             cardMapper.update(wrapper); | ||||||
|                     break; |  | ||||||
|                 case BILLING_SUPERMARKET: |  | ||||||
|                     storeOrderMapper.updateByIdBillingExist(orderIds,Boolean.FALSE); |  | ||||||
|                     break; |  | ||||||
|                 case BILLING_SPACE_CAPSULE: |  | ||||||
|                     orderSpaceCapsuleMapper.updateByIdBillingExist(orderIds,Boolean.FALSE); |  | ||||||
|                     break; |  | ||||||
|                 default: |  | ||||||
|                     throw new IllegalArgumentException("Unsupported billing type"); |  | ||||||
|             } |  | ||||||
|         } |         } | ||||||
|         billingMapper.updateById(updateObj); |         billingMapper.updateById(updateObj); | ||||||
|     } |     } | ||||||
| @ -276,33 +311,22 @@ public class BillingServiceImpl implements BillingService { | |||||||
|     public BillingRespMoneyVO getHaveWithoutMoney(Long userId) { |     public BillingRespMoneyVO getHaveWithoutMoney(Long userId) { | ||||||
|         BillingRespMoneyVO b=new BillingRespMoneyVO(); |         BillingRespMoneyVO b=new BillingRespMoneyVO(); | ||||||
|         //查询开票的订单 |         //查询开票的订单 | ||||||
|  |         MemberGroupDO memberGroupDO = memberGroupMapper.selectOne(new LambdaQueryWrapperX<MemberGroupDO>() | ||||||
|  |                 .eq(MemberGroupDO::getUserId, userId) | ||||||
|  |                 .last(" limit 1") | ||||||
|  |         ); | ||||||
|         BigDecimal reduce = billingMapper.selectList(new LambdaQueryWrapperX<BillingDO>() |         BigDecimal reduce = billingMapper.selectList(new LambdaQueryWrapperX<BillingDO>() | ||||||
|                         .eq(BillingDO::getStatus, BillingStatusEnum.BILLING_INVOICING_IS_COMPLETE.getCode()) |                         .eq(BillingDO::getStatus, BillingStatusEnum.BILLING_INVOICING_IS_COMPLETE.getCode()) | ||||||
|                         .eq(BillingDO::getUserId,userId) |                         .eq(BillingDO::getUserId,memberGroupDO.getId()) | ||||||
|                 ).stream() |                 ).stream() | ||||||
|                 .map(BillingDO::getBillingMoney) |                 .map(BillingDO::getBillingMoney) | ||||||
|                 .reduce(BigDecimal.ZERO, BigDecimal::add);// 求和 |                 .reduce(BigDecimal.ZERO, BigDecimal::add);// 求和 | ||||||
|  |         //获取当前单位下的所有人 | ||||||
|  |         List<Long> memberList = memberGroupMapper.getMemberList(memberGroupDO.getId()); | ||||||
|  |         //获取所有未开票的 | ||||||
|  |         BigDecimal moneyByUserIds = cardMapper.getTotalMoneyByuserIds(memberList, CardDO.ADD, CostTypeEnum.ADMIN_PAY.getCode()); | ||||||
|  |         b.setWithoutMoney(moneyByUserIds); | ||||||
|         b.setHaveMoney(reduce); |         b.setHaveMoney(reduce); | ||||||
|         BigDecimal reduce1 = orderSpaceCapsuleMapper.selectList(new LambdaQueryWrapperX<OrderSpaceCapsuleDO>() |  | ||||||
|                         .eq(OrderSpaceCapsuleDO::getStatus, SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getCode()) |  | ||||||
|                         .eq(OrderSpaceCapsuleDO::getBillingExist, Boolean.FALSE) |  | ||||||
|                         .eq(OrderSpaceCapsuleDO::getUserId,userId) |  | ||||||
|                 ) |  | ||||||
|                 .stream().map(OrderSpaceCapsuleDO::getMoney) |  | ||||||
|                 .reduce(BigDecimal.ZERO, BigDecimal::add);// 求和 |  | ||||||
|         BigDecimal reduce2 = dishOrderMapper.selectList(new LambdaQueryWrapperX<DishOrderDO>() |  | ||||||
|                         .eq(DishOrderDO::getOrderStatus, DishOrderDO.COMPLETE) |  | ||||||
|                         .eq(DishOrderDO::getBillingExist, Boolean.FALSE).eq(DishOrderDO::getUserId,userId)) |  | ||||||
|                 .stream().map(DishOrderDO::getTotalMoney) |  | ||||||
|                 .reduce(BigDecimal.ZERO, BigDecimal::add);// 求和 |  | ||||||
|         BigDecimal reduce3 = storeOrderMapper.selectList(new LambdaQueryWrapperX<StoreOrderDO>() |  | ||||||
|                         .eq(StoreOrderDO::getStatus, StoreOrderStatusEnum.COMPLETE.getCode()) |  | ||||||
|                         .eq(StoreOrderDO::getBillingExist, Boolean.FALSE).eq(StoreOrderDO::getUserId,userId)) |  | ||||||
|                 .stream().map(f-> BigDecimal.valueOf(f.getTotalPrice())) |  | ||||||
|                 .reduce(BigDecimal.ZERO, BigDecimal::add);// 求和 |  | ||||||
|         BigDecimal add = reduce1.add(reduce2).add(reduce3); |  | ||||||
|         b.setWithoutMoney(add); |  | ||||||
|         return b; |         return b; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
		Reference in New Issue
	
	Block a user
	 qjq
					qjq