935090232@qq.com
2022-03-18 baa1c7ecdc47c5da14790b422007ce21e0547ffa
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -37,8 +37,6 @@
import com.matrix.system.hive.pojo.ShoppingCarItem;
import com.matrix.system.hive.pojo.ShoppingCarItemsVo;
import com.matrix.system.hive.service.*;
import com.matrix.system.score.constant.ScoreSettingConstant;
import com.matrix.system.score.entity.ScoreVipDetail;
import com.matrix.system.score.service.ScoreVipDetailService;
import com.matrix.system.shopXcx.mqTask.AsyncMessageRouting;
import com.matrix.system.wechart.templateMsg.UniformMsgParam;
@@ -145,7 +143,6 @@
    private SysOrderServiceHelper sysOrderServiceHelper;
    @Autowired
    MoneyCardUseService moneyCardUseService;
@@ -156,91 +153,15 @@
    @Transactional(rollbackFor = Exception.class)
    public SysOrder checkAndSaveOrder(SysOrder sysOrder) {
        // 计算订单折扣金额,收款情况下 计算订单总额
        double zkTotal = 0.0;
        // 判断是否为退款
        String orderStatus = Dictionary.ORDER_STATU_DFK;
        if (Dictionary.ORDER_STATU_TK.equals(sysOrder.getStatu())) {
            orderStatus = Dictionary.ORDER_STATU_TK;
        }
        // 页面的pageOrder 参数只包含支付金额信息,不带有购买商品
        for (SysOrderItem item : sysOrder.getItems()) {
            // 若为退款,则先更新原有数量
            if (orderStatus.equals(Dictionary.ORDER_STATU_TK)) {
                SysOrderItem sysOrderItem = new SysOrderItem();
                sysOrderItem.setId(item.getId());
                sysOrderItem.setCount(item.getPreCount() - item.getCount());
                orderItemDao.update(sysOrderItem);
            }
            item.setId(null);
            ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(item.getGoodsId());
            item.setType(shoppingGoods.getGoodType());
            if (item.getZkPrice() == 0) {
                item.setIsFree(Dictionary.FLAG_YES);
            }
            // 订单欠款减去支付金额 设置实际欠款
            Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount()));
            zkTotal = MoneyUtil.add(zkTotal, itemZkTotal);
            item.setStatus(orderStatus);
        }
        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
        sysOrder.setZkTotal(zkTotal);
        sysOrder.setStatu(orderStatus);
        SysOrder source = null;
        if (sysOrder.getId() != null) {
            source = sysOrderDao.selectById(sysOrder.getId());
        }
        sysOrder.setStaffId(source != null ? source.getStaffId() : user.getSuId());
        sysOrder.setCompanyId(source != null ? source.getCompanyId() : user.getCompanyId());
        if (sysOrder.getId() == null) {
            //新增订单
            sysOrder.setOrderNo(codeService.getOrderCode());
            sysOrderDao.insert(sysOrder);
            //保存单据日志
            operationLogService.saveOperation(sysOrder.getCompanyId(), sysOrder.getShopId(), user.getSuId(),
                    OperationFunctionEnum.ORDER,
                    OperationButtonEnum.CREATE,
                    sysOrder.getId(),
                    sysOrder.getOrderNo(),
                    sysOrder.getVipId());
        if (Objects.isNull(sysOrder.getId())) {
            LogUtil.info("新增正向订单");
            return sysOrderServiceHelper.saveOrder(sysOrder);
        } else {
            //更新订单
            sysOrderDao.update(sysOrder);
            //删除原有订单明细
            orderItemDao.deleteByOrderId(sysOrder.getId());
            //保存单据日志
            operationLogService.saveOperation(sysOrder.getCompanyId(), sysOrder.getShopId(), user.getSuId(),
                    OperationFunctionEnum.ORDER,
                    OperationButtonEnum.UPDATE,
                    sysOrder.getId(),
                    sysOrder.getOrderNo(),
                    sysOrder.getVipId(),
                    "修改订单内容");
            LogUtil.info("修改订单");
            return sysOrderServiceHelper.modifyOrder(sysOrder);
        }
        sysOrder.getItems().forEach(sysOrderItem -> {
            sysOrderItem.setOrderId(sysOrder.getId());
            if (sysOrder.getStatu().equals(Dictionary.ORDER_STATU_TK)) {
                // 取负数
                sysOrderItem.setCount(-sysOrderItem.getCount());
                orderItemDao.insert(sysOrderItem);
                // 调整回来
                sysOrderItem.setCount(-sysOrderItem.getCount());
            } else {
                orderItemDao.insert(sysOrderItem);
            }
        });
        return sysOrder;
    }
    /**
@@ -485,7 +406,7 @@
        sysVipInfoService.updateDealStatus(pageOrder.getVipId(), BooleanEnum.TRUE.getValue());
        //添加支付流水
        sysOrderServiceHelper.addOrderFlow(pageOrder,false);
        sysOrderServiceHelper.addOrderFlow(pageOrder, false);
        //扣除储值卡余额
        sysOrderServiceHelper.cardPaySk(pageOrder);
@@ -533,7 +454,7 @@
     * @param pageOrder
     */
    private void updateOrderInfo(SysOrder pageOrder) {
        LogUtil.info("付款更新订单信息 id={}",pageOrder.getId());
        LogUtil.info("付款更新订单信息 id={}", pageOrder.getId());
        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
        pageOrder.setCashierId(user.getSuId());
@@ -594,7 +515,7 @@
        //检查业绩设置
        checkOrderAchieve(pageOrder);
        LogUtil.info("订单满足支付条件 id={}",pageOrder.getId());
        LogUtil.info("订单满足支付条件 id={}", pageOrder.getId());
    }
@@ -631,12 +552,9 @@
    }
    /**
     * 补交
     *
     * @author:姜友瑶
     * @date 2016年9月19日
     */
@@ -646,7 +564,7 @@
        SysOrder sourceOrder = sysOrderDao.selectById(pageOrder.getId());
        //添加支付流水
        sysOrderServiceHelper.addOrderFlow(pageOrder,true);
        sysOrderServiceHelper.addOrderFlow(pageOrder, true);
        //扣除储值卡余额
        sysOrderServiceHelper.cardPaySk(pageOrder);
@@ -667,7 +585,7 @@
        if (refundTotal == pageOrder.getArrears()) {
            sourceOrder.setStatu(Dictionary.ORDER_STATU_YFK);
        }else{
        } else {
            sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
        }
        sourceOrder.setArrears(sourceOrder.getArrears() - refundTotal);
@@ -675,14 +593,6 @@
        sourceOrder.setCashPay(sourceOrder.getCashPay() == null ? 0 : sourceOrder.getCashPay() + cashPayTotal);
        sysOrderDao.update(sourceOrder);
    }
    /**
@@ -773,7 +683,7 @@
        order.setFlows(czVo.getFlows());
        sysOrderServiceHelper.addOrderFlow(order,false);
        sysOrderServiceHelper.addOrderFlow(order, false);
        // 添加员工业绩
        achieveNewService.addAchaeveByOrder(order);
@@ -867,7 +777,7 @@
        // 添加订单收款流水
        sysOrderServiceHelper.addOrderFlow(sysOrder,false);
        sysOrderServiceHelper.addOrderFlow(sysOrder, false);
        //退款退套餐退项目
        refundProjUse(sysOrder);
        //删除积分