jiangping
2023-10-26 687d0fc2de844e09864cc2ea2b24550069a50546
server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -26,6 +26,7 @@
import com.doumee.dao.business.model.MemberRides;
import com.doumee.dao.business.vo.GoodsorderExportVO;
import com.doumee.dao.business.vo.GoodsorderTotalDataVO;
import com.doumee.dao.business.web.request.BikeRepairDTO;
import com.doumee.dao.business.web.request.GoodsorderCanBanlanceDTO;
import com.doumee.dao.business.web.request.MemberRidesQuery;
import com.doumee.dao.business.web.request.RefundDTO;
@@ -170,13 +171,27 @@
        IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        pageWrap.getModel().setPayStatus(Constants.ONE); //只查询支付成功的
        MPJLambdaWrapper<Goodsorder> queryWrapper = initQueryParamByModel(pageWrap.getModel());
        return PageData.from(goodsorderJoinMapper.selectJoinPage(page, GoodsorderExportVO.class,queryWrapper));
        IPage<GoodsorderExportVO> goodsorderExportVOIPage = goodsorderJoinMapper.selectJoinPage(page, GoodsorderExportVO.class, queryWrapper);
        if (!CollectionUtils.isEmpty(goodsorderExportVOIPage.getRecords())){
            goodsorderExportVOIPage.getRecords().forEach(s->{
                s.setMoney(Constants.translateMoney(s.getMoney()));
                s.setRefundMoney(Constants.translateMoney(s.getRefundMoney()));
            });
        }
        return PageData.from(goodsorderExportVOIPage);
    }
    @Override
    public   List<GoodsorderExportVO> findExportAccountDetailPage(Goodsorder model){
        model.setPayStatus(Constants.ONE); //只查询支付成功的
        MPJLambdaWrapper<Goodsorder> queryWrapper = initQueryParamByModel(model);
        List<GoodsorderExportVO> goodsorderList = goodsorderJoinMapper.selectJoinList(GoodsorderExportVO.class,queryWrapper);
        if (!CollectionUtils.isEmpty(goodsorderList)){
            goodsorderList.forEach(s->{
                s.setMoney(Constants.translateMoney(s.getMoney()));
                s.setCloseMoney(Constants.translateMoney(s.getCloseMoney()));
                s.setRefundMoney(Constants.translateMoney(s.getRefundMoney()));
            });
        }
       /*   List<GoodsorderExportVO> list = new ArrayList<>();
        if(goodsorderList!=null){
            for(Goodsorder order : goodsorderList){
@@ -394,6 +409,8 @@
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    @Override
    public void closeGoodsorder( Goodsorder goodsorder ,int type ) {
//
        List<MemberRides> memberRides = getMemberRidesForClose(goodsorder.getId());
        //默认结算为押金金额
        BigDecimal closeMoney = new BigDecimal(0.00);
@@ -424,6 +441,8 @@
        if(Constants.REFUND_TYPE.PLAT_FORCE.getKey() == type){
            //如果是强制结算
            update.setCloseType(Constants.ONE);
            LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
            update.setEditor(principal.getId());
        }else  if(Constants.REFUND_TYPE.NORMAL.getKey() == type){
            //如果是自行結算
            update.setCloseType(Constants.ZERO);
@@ -441,6 +460,7 @@
            refundDTO.setTotalAmount(goodsorder.getMoney());
            refundDTO.setMemberId(goodsorder.getMemberId());
            refundDTO.setReason(Constants.REFUND_TYPE.get(type).getName());
            refundDTO.setCreator(update.getEditor());
            refundDTO.setType(type);
            Refund refund = wxMiniUtilService.wxRefund(refundDTO);
            update.setCloseId(refund.getId());
@@ -529,7 +549,7 @@
        BigDecimal refundMoney = total == null?new BigDecimal(0):Constants.formatDecimalNum(total.getMoney());
        //可退剩余 单位元
        BigDecimal canBalance =Constants.translateMoney(Constants.formatDecimalNum(goodsorder.getMoney()).subtract(refundMoney));
        if(canBalance.compareTo(money) > Constants.ZERO){
        if(canBalance.compareTo(money) >= Constants.ZERO){
            RefundDTO refundDTO = new RefundDTO();
            refundDTO.setOrderId(orderId);
            refundDTO.setCanBalance(canBalance);
@@ -565,7 +585,7 @@
        BigDecimal reduce =  total!=null?Constants.formatDecimalNum(total.getMoney()):new BigDecimal(0);
        goodsorderCanBanlanceDTO.setHasRefundMoney(Constants.translateMoney(reduce));
        BigDecimal subtract = Constants.translateMoney(goodsorder.getMoney()).subtract(goodsorderCanBanlanceDTO.getCloseMoney()).subtract(goodsorderCanBanlanceDTO.getHasRefundMoney());
        BigDecimal subtract = Constants.translateMoney(goodsorder.getMoney()).subtract(goodsorderCanBanlanceDTO.getHasRefundMoney());
        goodsorderCanBanlanceDTO.setCanBanlanceMoney(subtract.compareTo(new BigDecimal("0")) > 0 ? subtract : new BigDecimal("0"));
        return goodsorderCanBanlanceDTO;
    }
@@ -583,35 +603,39 @@
            model.setPayNum(0);
            model.setRefundNum(0);
            QueryWrapper<Goodsorder> queryWrapper = new QueryWrapper<>();
            queryWrapper.lambda().ge(param.getStartDate() !=null,Goodsorder::getPayDate,DateUtil.getShortDateStr(param.getStartDate()));
            queryWrapper.lambda().le(param.getEndDate() !=null,Goodsorder::getPayDate,DateUtil.getShortDateStr(param.getEndDate()));
            if(Objects.nonNull(param.getStartDate())){
                queryWrapper.lambda().ge(param.getStartDate() !=null,Goodsorder::getPayDate, Utils.Date.getStart(param.getStartDate()));
            }
            if(Objects.nonNull(param.getEndDate())) {
                queryWrapper.lambda().le(param.getEndDate() != null, Goodsorder::getPayDate, Utils.Date.getEnd(param.getEndDate()));
            }
            queryWrapper.lambda().eq(Goodsorder::getPayStatus, Constants.ONE);//已支付
            queryWrapper.lambda().eq(Goodsorder::getIsdeleted, Constants.ZERO);
            queryWrapper.lambda().groupBy(Goodsorder::getStatus);
            queryWrapper.select( "count(id) as count_num"
                    ,"sum(money) as money" );
            queryWrapper.select( "status ","count(id) as count_num"
                    ,"sum(money) as money","sum(close_money) as close_money" );
            //按订单状态分组统计
            List<Goodsorder> detailList = goodsorderMapper.selectList(queryWrapper);
            for(Goodsorder goodsorder : detailList){
                if(Constants.formatIntegerNum(goodsorder.getStatus()) == Constants.GOODSORDER_STATUS.CLOSE.getKey()){
                    //已结算
                    model.setClosedNum(model.getClosedNum()+goodsorder.getCountNum());
                    model.setClosedMoney(model.getClosedMoney().add(Constants.formatDecimalNum(goodsorder.getCloseMoney())));
                    model.setClosedMoney(model.getClosedMoney().add(Constants.translateMoney(goodsorder.getCloseMoney())));
                    model.setPayNum(model.getPayNum()+goodsorder.getCountNum());
                    model.setPayMoney(model.getPayMoney().add(Constants.formatDecimalNum(goodsorder.getMoney())));
                    model.setPayMoney(model.getPayMoney().add(Constants.translateMoney(goodsorder.getMoney())));
                }else  if(Constants.formatIntegerNum(goodsorder.getStatus()) == Constants.GOODSORDER_STATUS.HAVING_PAY.getKey()){
                    //已支付未结算
                    model.setUnClosedNum(model.getUnClosedNum()+goodsorder.getCountNum());
                    model.setUnClosedMoney(model.getUnClosedMoney().add(Constants.formatDecimalNum(goodsorder.getMoney())));
                    model.setUnClosedMoney(model.getUnClosedMoney().add(Constants.translateMoney(goodsorder.getMoney())));
                    model.setPayNum(model.getPayNum()+goodsorder.getCountNum());
                    model.setPayMoney(model.getPayMoney().add(Constants.formatDecimalNum(goodsorder.getMoney())));
                    model.setPayMoney(model.getPayMoney().add(Constants.translateMoney(goodsorder.getMoney())));
                }
            }
        QueryWrapper<Refund> queryWrapper2 = new QueryWrapper<>();
        queryWrapper2.lambda().ge(param.getStartDate() !=null,Refund::getDoneDate,DateUtil.getShortDateStr(param.getStartDate()));
        queryWrapper2.lambda().le(param.getEndDate() !=null,Refund::getDoneDate,DateUtil.getShortDateStr(param.getEndDate()));
        queryWrapper2.lambda().ge(param.getStartDate() !=null,Refund::getDoneDate,Utils.Date.getStart(param.getStartDate()));
        queryWrapper2.lambda().le(param.getEndDate() !=null,Refund::getDoneDate,Utils.Date.getEnd(param.getEndDate()));
        queryWrapper2.lambda().eq(Refund::getIsdeleted, Constants.ZERO);
        queryWrapper2.select( "count(id) as count_num"
                ,"sum(money) as money" );
@@ -619,7 +643,7 @@
        Refund  refund = refundMapper.selectOne(queryWrapper2.last("limit 1"));
        if(refund !=null){
            model.setRefundNum(Constants.formatIntegerNum(refund.getCountNum()));
            model.setRefundMoney( Constants.formatDecimalNum(refund.getMoney()));
            model.setRefundMoney(Constants.translateMoney(Constants.formatDecimalNum(refund.getMoney())));
        }
        return  model;
    }
@@ -630,8 +654,13 @@
            throw  new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        List<MemberRides> memberRides = memberRidesJoinMapper.selectList(new QueryWrapper<MemberRides>()
                .lambda().eq(MemberRides::getOrdreId,id).orderByDesc(MemberRides::getCreateDate));
        List<MemberRides> memberRides = memberRidesJoinMapper.selectJoinList(MemberRides.class,new MPJLambdaWrapper<MemberRides>()
                .selectAll(MemberRides.class)
                .selectAs(BaseParam::getName,MemberRides::getParamName)
                .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())
                .orderByDesc(MemberRides::getCreateDate));
        if (!CollectionUtils.isEmpty(memberRides)){
            //预计结算价格和计算时长
            int freeTime = 0;