| | |
| | | @Override |
| | | public void closeGoodsorder( Goodsorder goodsorder ,int type ) { |
| | | |
| | | // |
| | | List<MemberRides> memberRides = getMemberRidesForClose(goodsorder.getId()); |
| | | //默认结算为押金金额 |
| | | BigDecimal closeMoney = new BigDecimal(0.00); |
| | | if (!CollectionUtils.isEmpty(memberRides)){ |
| | | //骑行总时长 |
| | | closeMoney = getCloseMoneyByRides(memberRides,true).getAmount(); |
| | | closeMoney = getCloseMoneyByRides(memberRides,true,goodsorder.getMoney()).getAmount(); |
| | | //实际结算价格,记录在最高车型记录上 |
| | | memberRides.get(0).setActualPrice(closeMoney); |
| | | for(MemberRides model :memberRides){ |
| | |
| | | goodsorderMapper.updateById(update); |
| | | } |
| | | |
| | | private RidesDetailResponse getCloseMoneyByRides(List<MemberRides> memberRides,boolean isClose) { |
| | | private RidesDetailResponse getCloseMoneyByRides(List<MemberRides> memberRides,boolean isClose,BigDecimal yjMoney) { |
| | | RidesDetailResponse ridesDetailResponse = new RidesDetailResponse(); |
| | | BigDecimal closeMoney = new BigDecimal(0.00); |
| | | int durationSum = 0; |
| | | MemberRides topRides =memberRides.get(0); |
| | | //取最高车型计算方案结算订单 |
| | | for(MemberRides rides : memberRides){ |
| | | if ( isClose && Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()!=(Constants.formatIntegerNum(rides.getStatus()))){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前订单有未完成的骑行,无法强制结算"); |
| | | } |
| | | durationSum += Constants.formatIntegerNum(rides.getDuration());//累计骑行(计费)时长 |
| | | if(Constants.formatIntegerNum(topRides.getSortnum())<Constants.formatIntegerNum(rides.getSortnum())){ |
| | | topRides = rides; |
| | | } |
| | | } |
| | | MemberRides topRides =memberRides.get(0); |
| | | // MemberRides topRides =memberRides.get(0); |
| | | if(durationSum > 0 && topRides != null){ |
| | | int baseTime =Constants.formatIntegerNum(topRides.getBaseTime()); |
| | | closeMoney = Constants.formatDecimalNum(topRides.getBasePrice()); |
| | |
| | | } |
| | | } |
| | | } |
| | | //如果订单价格封顶了,取订单 价格 |
| | | if(Constants.compareBigdecimal(closeMoney, yjMoney) ==1){ |
| | | closeMoney = yjMoney; |
| | | } |
| | | ridesDetailResponse.setDuration(durationSum); |
| | | ridesDetailResponse.setAmount(closeMoney); |
| | | ridesDetailResponse.setBikeType(topRides.getParamName()); |
| | |
| | | MPJLambdaWrapper<MemberRides> wrapper = new MPJLambdaWrapper<>(); |
| | | wrapper.eq(MemberRides::getOrdreId,id); |
| | | wrapper.ne(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.LOCKING_DEFEAT.getKey()); |
| | | wrapper.selectAll(MemberRides.class).selectAs(BaseParam::getName, MemberRides::getParamName); |
| | | wrapper.selectAll(MemberRides.class) |
| | | .selectAs(BaseParam::getSortnum, MemberRides::getSortnum) |
| | | .selectAs(BaseParam::getName, MemberRides::getParamName); |
| | | wrapper.leftJoin(BaseParam.class, BaseParam::getId, MemberRides::getParamId); |
| | | wrapper.orderByDesc(BaseParam::getSortnum); |
| | | //取最高车型作为计价方案 |
| | |
| | | List<MemberRides> memberRides = memberRidesJoinMapper.selectJoinList(MemberRides.class,new MPJLambdaWrapper<MemberRides>() |
| | | .selectAll(MemberRides.class) |
| | | .selectAs(BaseParam::getName,MemberRides::getParamName) |
| | | .selectAs(BaseParam::getSortnum,MemberRides::getSortnum) |
| | | .leftJoin(BaseParam.class,BaseParam::getId,MemberRides::getParamId) |
| | | .eq(MemberRides::getOrdreId,id) |
| | | .in(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey(),Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()) |
| | |
| | | return memberRidesResponse; |
| | | }).collect(Collectors.toList()); |
| | | //累计和预算结算金额 |
| | | RidesDetailResponse ridesDetailResponse = getCloseMoneyByRides(memberRides,false);; |
| | | RidesDetailResponse ridesDetailResponse = getCloseMoneyByRides(memberRides,false,goodsorder.getMoney()); |
| | | if(Constants.formatIntegerNum(goodsorder.getStatus())!= Constants.goodsorderStatus.pay){ |
| | | //如果非已支付但未结算,使用订单金额 |
| | | ridesDetailResponse.setAmount(goodsorder.getCloseMoney()); |