From 2ca19d805dcbe5f0796067c1a91fbb890804e1eb Mon Sep 17 00:00:00 2001 From: wzy <wzy19931122ai@163.com> Date: Wed, 13 Jan 2021 10:18:11 +0800 Subject: [PATCH] modify --- zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 192 +++++++++++++++++++++++++++++++++++------------- 1 files changed, 140 insertions(+), 52 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java index e76196b..2afd6ee 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java @@ -159,8 +159,22 @@ // 计算订单折扣金额,收款情况下 计算订单总额 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()); @@ -171,12 +185,12 @@ // 订单欠款减去支付金额 设置实际欠款 Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount())); zkTotal=MoneyUtil.add(zkTotal, itemZkTotal); - item.setStatus(Dictionary.ORDER_STATU_DFK); + item.setStatus(orderStatus); } SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); sysOrder.setZkTotal(zkTotal); - sysOrder.setStatu(Dictionary.ORDER_STATU_DFK); + sysOrder.setStatu(orderStatus); sysOrder.setStaffId(user.getSuId()); sysOrder.setCompanyId(user.getCompanyId()); @@ -464,13 +478,20 @@ private void changeOrderStatu(SysOrder sourceOrder) { int i = 1; String orderStatus = Dictionary.ORDER_STATU_YFK; + double cashPayTotal = 0D; + double cardPayTotal = 0D; for (SysOrderFlow flow : sourceOrder.getFlows()) { flow.setFlowNo(codeService.getFlowCode() + "-" + i); Long goodsId = sourceOrder.getItems().get(0).getGoodsId(); ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId); flow.setFlowContent(goods.getName() + "等" + sourceOrder.getItems().size() + "件产品"); - flow.setOrderId(sourceOrder.getId()); + if (Dictionary.ORDER_STATU_TK.equals(sourceOrder.getStatu())) { + flow.setOrderId(sourceOrder.getOldOrderId()); + } else { + flow.setOrderId(sourceOrder.getId()); + } + flow.setVipId(sourceOrder.getVipId()); flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY); // 若使用储值卡付款 @@ -478,6 +499,7 @@ if (flow.getCardId() != null) { MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId()); cardPaySk(moneyCardUse, sourceOrder, flow); + cardPayTotal += flow.getAmount().doubleValue(); } } @@ -485,12 +507,22 @@ orderStatus = Dictionary.ORDER_STATU_QK; sourceOrder.setArrears(flow.getAmount().doubleValue()); } + + if (!SysOrderFlow.PAY_METHOD_ARREARS.equals(flow.getPayMethod()) && !SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) { + cashPayTotal += flow.getAmount().doubleValue(); + } sysOrderFlowDao.insert(flow); i++; } + if (Dictionary.ORDER_STATU_TK.equals(sourceOrder.getStatu())) { + orderStatus = Dictionary.ORDER_STATU_TK; + } + // 更新收款状态 sourceOrder.setStatu(orderStatus); + sourceOrder.setCardPay(cardPayTotal); + sourceOrder.setCashPay(cashPayTotal); sysOrderDao.update(sourceOrder); } @@ -720,66 +752,54 @@ @Transactional(rollbackFor = Exception.class) @Override public void updateAfterMoney(SysOrder pageOrder) { - SysOrder sourceOrder = sysOrderDao.selectById(pageOrder.getId()); + + int i = 1; + double refundTotal = 0D; + double cardPayTotal = 0D; + double cashPayTotal = 0D; + for (SysOrderFlow flow : pageOrder.getFlows()) { + flow.setFlowNo(codeService.getFlowCode() + "-" + i); + Long goodsId = pageOrder.getItems().get(0).getGoodsId(); + ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId); + flow.setFlowContent(goods.getName() + "等" + pageOrder.getItems().size() + "件产品"); + + flow.setOrderId(pageOrder.getId()); + flow.setVipId(pageOrder.getVipId()); + flow.setFlowType(SysOrderFlow.FLOW_TYPE_REPAY); + // 若使用储值卡付款 + if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) { + if (flow.getCardId() != null) { + cardPayTotal += flow.getAmount().doubleValue(); + MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId()); + cardPaySk(moneyCardUse, pageOrder, flow); + } + } else { + cashPayTotal += flow.getAmount().doubleValue(); + } + + refundTotal += flow.getAmount().doubleValue(); + sysOrderFlowDao.insert(flow); + i++; + } boolean haQk=false; - double cardPayTotal=0D; - double carshPayTotal=0D; - - - for(SysOrderItem pageItem:pageOrder.getItems()){ - SysOrderItem sourceItem=orderItemDao.selectById(pageItem.getId()); - - //结清 - if(sourceItem.getArrears() == pageItem.getPayMoney()){ - - sourceItem.setStatus(Dictionary.ORDER_STATU_YFK); - }else if(sourceItem.getArrears() > pageItem.getPayMoney()) { - //未结清 - sourceItem.setStatus(Dictionary.ORDER_STATU_QK); - haQk=true; - }else if(sourceItem.getArrears() < pageItem.getPayMoney()) { - - throw new GlobleException("支付金额不能大于欠款金额"); - - } - - //更新卡支付 - if (!pageItem.getPayMethod().equals(Dictionary.PAY_TYPE_MOENY)) { - // 查询要支付的充值卡 - MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(Long.parseLong(pageItem.getPayMethod())); - // 扣除付款卡金额并添加流水 TODO 补交卡支付 -// cardPaySk(moneyCardUse, sourceOrder, pageItem); - sourceItem.setCardPay((sourceItem.getCardPay()==null?0:sourceItem.getCardPay())+pageItem.getPayMoney()); - cardPayTotal+=pageItem.getPayMoney(); - }else{ - carshPayTotal+=pageItem.getPayMoney(); - sourceItem.setCashPay((sourceItem.getCashPay()==null?0:sourceItem.getCashPay())+pageItem.getPayMoney()); - } - - //更新订单明细状态 - sourceItem.setArrears(sourceItem.getArrears()-pageItem.getPayMoney()); - - orderItemDao.update(sourceItem); - + if (refundTotal == pageOrder.getArrears()) { + haQk = true; } + //更新收款状态 if(haQk){ - sourceOrder.setStatu(Dictionary.ORDER_STATU_QK); - }else{ sourceOrder.setStatu(Dictionary.ORDER_STATU_YFK); + }else{ + sourceOrder.setStatu(Dictionary.ORDER_STATU_QK); } - sourceOrder.setArrears(sourceOrder.getArrears()-carshPayTotal-cardPayTotal); - sourceOrder.setCardPay(sourceOrder.getCardPay()+cardPayTotal); - sourceOrder.setCashPay(sourceOrder.getCashPay()+carshPayTotal); + sourceOrder.setArrears(sourceOrder.getArrears() - refundTotal); + sourceOrder.setCardPay(sourceOrder.getCardPay() + cardPayTotal); + sourceOrder.setCashPay(sourceOrder.getCashPay() + cashPayTotal); sysOrderDao.update(sourceOrder); - - // 设置业绩 - achieveNewService.addAchaeveByOrder(pageOrder); - } @@ -1208,4 +1228,72 @@ public List<RankingVo> findStaffSaleAchieveRanking(SysOrder sysOrder) { return sysOrderDao.selectStaffSaleAchieveRanking(sysOrder); } + + @Override + public void refundOrderMoney(SysOrder pageOrder) { + + // 插入订单流水 + changeOrderStatu(pageOrder); + + for (SysOrderItem item : pageOrder.getItems()) { + + SysProjUse queryProjUse = new SysProjUse(); + queryProjUse.setIsOver(Dictionary.FLAG_NO_N); + queryProjUse.setStatus(Dictionary.TAOCAN_STATUS_YX); + queryProjUse.setOrderItemId(item.getId()); + // 修改项目信息 + if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(item.getType()) && Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(item.getType())) { + SysProjUse sysProjUse = sysProjUseDao.selectByModel(queryProjUse).get(0); + + int sub = sysProjUse.getSurplusCount() - item.getCount(); + sysProjUse.setSurplusCount(sub); + if (sub <= 0) { + sysProjUse.setIsOver(Dictionary.FLAG_YES_Y); + sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX); + } + sysProjUseDao.update(sysProjUse); + } + + if (Dictionary.SHOPPING_GOODS_TYPE_TC.equals(item.getType())) { + queryProjUse.setTaocanId(-1L); + SysProjUse sysProjUse = sysProjUseDao.selectByModel(queryProjUse).get(0); + sysProjUse.setIsOver(Dictionary.FLAG_YES_Y); + sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX); + + sysProjUseDao.update(sysProjUse); + } + + if (Dictionary.SHOPPING_GOODS_TYPE_CZK.equals(item.getType())) { + MoneyCardUse queryCardUse = new MoneyCardUse(); + queryCardUse.setIsOver(Dictionary.FLAG_NO_N); + queryCardUse.setStatus(Dictionary.TAOCAN_STATUS_YX); + queryCardUse.setOrderItemId(item.getId()); + + MoneyCardUse moneyCardUse = moneyCardUseDao.selectByModel(queryCardUse).get(0); + moneyCardUse.setIsOver(Dictionary.FLAG_YES_Y); + moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_WX); + moneyCardUseDao.update(moneyCardUse); + } + + // TODO 综合卡退款 + if (Dictionary.SHOPPING_GOODS_TYPE_ZHK.equals(item.getType())) { + + } + + } + + // 设置会员充值卡使用情况 + addMoneyCardUse(pageOrder); + + // 新增出库单 + addOutStore(pageOrder); + + // 改变客户项目套餐使用情况 + addTaocanProj(pageOrder); + + // 设置业绩 + achieveNewService.addAchaeveByOrder(pageOrder); + + setShopSelCount(pageOrder); + } } -- Gitblit v1.9.1