wzy
2022-10-09 99091a8cbb8e098575c75a7c640b568addbcc29d
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -183,8 +183,14 @@
    }
    @Override
    public SysOrder findById(Long id) {
    public  SysOrder  findById(Long id) {
        return sysOrderDao.selectById(id);
    }
    @Override
    public List<SysOrder> findByIds(List<Long> ids) {
        return sysOrderDao.selectByIds(ids);
    }
@@ -341,6 +347,8 @@
                                moneyCardUseFlow.setTimes(1);
                            }
                        }
                        moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
                        moneyCardUseDao.update(moneyCardUse);
                        //插入充值卡变动流水
                        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
@@ -927,21 +935,26 @@
        // 充值卡订单欠款检测
        if (Dictionary.FLAG_NO_N.equals(moneyCardUse.getIsVipCar())) {
            SysOrder sysOrder = sysOrderDao.selectById(orderItemDao.selectById(moneyCardUse.getOrderItemId()).getOrderId());
            if (Dictionary.ORDER_STATU_QK.equals(sysOrder.getStatu())) {
                if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) {
                    throw new GlobleException("充值卡订单存在欠款,无法使用赠送余额支付");
                }
            SysOrderItem item = orderItemDao.selectById(moneyCardUse.getOrderItemId());
            if (item != null) {
                SysOrder sysOrder = sysOrderDao.selectById(item.getOrderId());
                if (sysOrder != null) {
                    if (Dictionary.ORDER_STATU_QK.equals(sysOrder.getStatu())) {
                        if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) {
                            throw new GlobleException("充值卡订单存在欠款,无法使用赠送余额支付");
                        }
                // 若该笔订单中,有多项明细,则充值卡直接无法支付; 若订单中,仅充值卡一项,则已付款和充值卡使用情况判断是否可使用
                List<SysOrderItem> items = orderItemDao.selectByOrderId(sysOrder.getId());
                if (items.size() > 1) {
                    throw new GlobleException("充值卡订单存在欠款,无法支付");
                } else {
                    double totalUse = moneyCardUseFlowDao.selectCardUseAmount(moneyCardUse.getId());
                    Double hasPay = sysOrder.getZkTotal() - sysOrder.getArrears();
                    if (hasPay < (totalUse + flow.getAmount().doubleValue())) {
                        throw new GlobleException("充值卡订单存在欠款,已支付金额不足");
                        // 若该笔订单中,有多项明细,则充值卡直接无法支付; 若订单中,仅充值卡一项,则已付款和充值卡使用情况判断是否可使用
                        List<SysOrderItem> items = orderItemDao.selectByOrderId(sysOrder.getId());
                        if (items.size() > 1) {
                            throw new GlobleException("充值卡订单存在欠款,无法支付");
                        } else {
                            double totalUse = moneyCardUseFlowDao.selectCardUseAmount(moneyCardUse.getId());
                            Double hasPay = sysOrder.getZkTotal() - sysOrder.getArrears();
                            if (hasPay < (totalUse + flow.getAmount().doubleValue())) {
                                throw new GlobleException("充值卡订单存在欠款,已支付金额不足");
                            }
                        }
                    }
                }
            }
@@ -1375,7 +1388,7 @@
        //赠送项目是否计算消耗业绩否则 赠送产品按原价计算消耗
        boolean zsConsumeAchieve = projServicesService.skipServiceOrderStep(Dictionary.ZS_CONSUME_ACHIEVE);
        if (zsConsumeAchieve) {
            if (sysOrderItem.getPrice() <= 0) {
            if (sysOrderItem.getZkPrice() <= 0) {
                //等于0取原价
                if (taocanId == null) {
                    puse.setPrice(goodsAssemble.getShoppingGoods().getPrice());