|  |  | 
 |  |  |         if (!Dictionary.ORDER_STATU_DFK.equals(pageOrder.getStatu())) { | 
 |  |  |             throw new GlobleException("该订单已经收过款,请刷新页面再试!"); | 
 |  |  |         } | 
 |  |  |         // 更新收款时间 | 
 |  |  |         pageOrder.setPayTime(new Date()); | 
 |  |  |         pageOrder.setStatu(Dictionary.ORDER_STATU_YFK); | 
 |  |  |         sysOrderDao.update(pageOrder); | 
 |  |  |  | 
 |  |  |         // 获取用户信息 | 
 |  |  |         SysVipInfo vipInfo = sysVipInfoDao.selectById(pageOrder.getVipId()); | 
 |  |  | 
 |  |  |             sysVipInfoDao.update(vipInfo); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //设置订单的成交状态 | 
 |  |  |         changeOrderStatu(pageOrder); | 
 |  |  |         //添加支付流水 | 
 |  |  |         addOrderFlow(pageOrder); | 
 |  |  |  | 
 |  |  |         // 设置会员充值卡使用情况 | 
 |  |  |         addMoneyCardUse(pageOrder); | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 收款改变订单状态,划扣金额 | 
 |  |  |      * 创建支付流水 | 
 |  |  |      * | 
 |  |  |      * @author:姜友瑶 | 
 |  |  |      */ | 
 |  |  |     private void changeOrderStatu(SysOrder sourceOrder) { | 
 |  |  |     private void addOrderFlow(SysOrder sourceOrder) { | 
 |  |  |  | 
 |  |  |         String orderStatus = Dictionary.ORDER_STATU_YFK; | 
 |  |  |         String flowType = SysOrderFlow.FLOW_TYPE_BUY; | 
 |  |  |         double cashPayTotal = 0D; | 
 |  |  |         double cardPayTotal = 0D; | 
 |  |  |  | 
 |  |  |         //处理支付流水 | 
 |  |  |         int flowCount = 1; | 
 |  |  |         for (SysOrderFlow flow : sourceOrder.getFlows()) { | 
 |  |  |  | 
 |  |  |             //支付内容摘要设置 | 
 |  |  |             Long goodsId = sourceOrder.getItems().get(0).getGoodsId(); | 
 |  |  |             ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId); | 
 |  |  |             flow.setFlowContent(goods.getName() + "等" + sourceOrder.getItems().size() + "件产品"); | 
 |  |  |  | 
 |  |  |             // 若是退款,则取负数 | 
 |  |  |             if (Dictionary.ORDER_STATU_TK.equals(sourceOrder.getStatu())) { | 
 |  |  |                 flowType = SysOrderFlow.FLOW_TYPE_REFUND; | 
 |  |  |                 flow.setFlowType(SysOrderFlow.FLOW_TYPE_REFUND); | 
 |  |  |                 flow.setAmount(flow.getAmount().negate()); | 
 |  |  |                 flow.setOrderId(sourceOrder.getOldOrderId()); | 
 |  |  |             } else { | 
 |  |  |                 flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY); | 
 |  |  |                 flow.setOrderId(sourceOrder.getId()); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             //欠款处理 | 
 |  |  |             if (SysOrderFlow.PAY_METHOD_ARREARS.equals(flow.getPayMethod())) { | 
 |  |  |                 orderStatus = Dictionary.ORDER_STATU_QK; | 
 |  |  |                 sourceOrder.setArrears(flow.getAmount().doubleValue()); | 
 |  |  |                 sysOrderDao.update(sourceOrder); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             //统计储值卡支付 | 
 |  |  |             if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) { | 
 |  |  |                 if (flow.getCardId() != null) { | 
 |  |  |                     MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId()); | 
 |  |  |                     cardPayTotal += flow.getAmount().doubleValue(); | 
 |  |  |  | 
 |  |  |                     //修改储值卡余额 | 
 |  |  |                     cardPaySk(moneyCardUse, sourceOrder, flow); | 
 |  |  |                 }else{ | 
 |  |  |                     throw new GlobleException("无效的储值卡支付方式"); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             //统计现金支付 | 
 |  |  |             if (!SysOrderFlow.PAY_METHOD_ARREARS.equals(flow.getPayMethod()) | 
 |  |  |                     && !SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) { | 
 |  |  |                 cashPayTotal += flow.getAmount().doubleValue(); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             flow.setFlowNo(codeService.getFlowCode() + "-" + flowCount); | 
 |  |  |             flow.setVipId(sourceOrder.getVipId()); | 
 |  |  |             flow.setFlowType(flowType); | 
 |  |  |             flow.setShopId(sourceOrder.getShopId()); | 
 |  |  |             flow.setCompanyId(sourceOrder.getCompanyId()); | 
 |  |  |             sysOrderFlowDao.insert(flow); | 
 |  |  |             flowCount++; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //修改订单信息 | 
 |  |  |         if (Dictionary.ORDER_STATU_TK.equals(sourceOrder.getStatu())) { | 
 |  |  |             orderStatus = Dictionary.ORDER_STATU_TK; | 
 |  |  |         } | 
 |  |  |         // 更新收款状态 | 
 |  |  |         sourceOrder.setPayTime(new Date()); | 
 |  |  |         sourceOrder.setStatu(orderStatus); | 
 |  |  |         sourceOrder.setCardPay(cardPayTotal); | 
 |  |  |         sourceOrder.setCashPay(cashPayTotal); | 
 |  |  |         sysOrderDao.update(sourceOrder); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         moneyCardUseFlowDao.insert(moneyCardUseFlow); | 
 |  |  |  | 
 |  |  |         order.setFlows(czVo.getFlows()); | 
 |  |  |         changeOrderStatu(order); | 
 |  |  |         addOrderFlow(order); | 
 |  |  |         // 添加员工业绩 | 
 |  |  |         achieveNewService.addAchaeveByOrder(order); | 
 |  |  |         return order; | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Transactional(rollbackFor = Exception.class) | 
 |  |  |     @Override | 
 |  |  |     public void refundOrderMoney(SysOrder pageOrder) { | 
 |  |  |     public void refundOrderMoney(SysOrder sysOrder) { | 
 |  |  |         SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
 |  |  |  | 
 |  |  |         // 修改订单状态 | 
 |  |  |         changeOrderStatu(pageOrder); | 
 |  |  |         //原订单设置为退款状态 | 
 |  |  |         SysOrder sourceOrder=new SysOrder(); | 
 |  |  |         sourceOrder.setId(sysOrder.getOldOrderId()); | 
 |  |  |         sourceOrder.setStatu(Dictionary.ORDER_STATU_TK); | 
 |  |  |         sysOrderDao.update(sourceOrder); | 
 |  |  |  | 
 |  |  |         List<SysOrderItem> returnItems = new ArrayList<>(); | 
 |  |  |         for (SysOrderItem item : pageOrder.getItems()) { | 
 |  |  |         sysOrder.setId(null); | 
 |  |  |         sysOrder.setStaffId(user.getSuId()); | 
 |  |  |         sysOrder.setCompanyId(user.getCompanyId()); | 
 |  |  |         sysOrder.setShopId(user.getShopId()); | 
 |  |  |         sysOrder.setOrderType(SysOrder.ORDER_TYPE_REFUND); | 
 |  |  |         sysOrder.setOrderTime(new Date()); | 
 |  |  |         sysOrder.setOrderNo(codeService.getRefundOrderNo()); | 
 |  |  |         sysOrder.setZkTotal(-sysOrder.getZkTotal()); | 
 |  |  |         //新增订单 | 
 |  |  |         sysOrderDao.insert(sysOrder); | 
 |  |  |         //插入明细 | 
 |  |  |         for (SysOrderItem item : sysOrder.getItems()) { | 
 |  |  |  | 
 |  |  |             //更新原订单明细的可退数量 | 
 |  |  |             SysOrderItem oldItem=new SysOrderItem(); | 
 |  |  |             oldItem.setId(item.getId()); | 
 |  |  |             oldItem.setRefundCount(item.getCount()); | 
 |  |  |             orderItemDao.update(oldItem); | 
 |  |  |  | 
 |  |  |             //插入新的订单明细 | 
 |  |  |             item.setId(null); | 
 |  |  |             item.setCount(-item.getCount()); | 
 |  |  |             item.setOrderId(sysOrder.getId()); | 
 |  |  |             orderItemDao.insert(item); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         // 添加订单收款流水 | 
 |  |  |         addOrderFlow(sysOrder); | 
 |  |  |         //退款退套餐退项目 | 
 |  |  |         refundProjUse(sysOrder); | 
 |  |  |  | 
 |  |  |         // 设置业绩 | 
 |  |  |         achieveNewService.addAchaeveByOrder(sysOrder); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 退款退项目,套餐,卡项 | 
 |  |  |      * @param sysOrder | 
 |  |  |      */ | 
 |  |  |     private void refundProjUse(SysOrder sysOrder) { | 
 |  |  |         SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
 |  |  |  | 
 |  |  |         //记录需要退库存的产品 | 
 |  |  |         List<SysOrderItem> returnGoodsList = new ArrayList<>(); | 
 |  |  |  | 
 |  |  |         for (SysOrderItem item : sysOrder.getItems()) { | 
 |  |  |  | 
 |  |  |             SysProjUse queryProjUse = new SysProjUse(); | 
 |  |  |             queryProjUse.setIsOver(Dictionary.FLAG_NO_N); | 
 |  |  |             queryProjUse.setStatus(Dictionary.TAOCAN_STATUS_YX); | 
 |  |  |             queryProjUse.setOrderItemId(item.getOldItemId()); | 
 |  |  |             // 修改项目信息 | 
 |  |  |             if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(item.getType()) || Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(item.getType())) { | 
 |  |  |  | 
 |  |  |                 if (Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(item.getType())) { | 
 |  |  |                     if (Dictionary.FLAG_YES_Y.equals(item.getIsReturnStore())) { | 
 |  |  |                         returnItems.add(item); | 
 |  |  |                         returnGoodsList.add(item); | 
 |  |  |                     } | 
 |  |  |                 } else { | 
 |  |  |                     SysProjUse sysProjUse = sysProjUseDao.selectByModel(queryProjUse).get(0); | 
 |  |  |  | 
 |  |  |                     int sub = sysProjUse.getSurplusCount() - item.getCount(); | 
 |  |  |                     sysProjUse.setSurplusCount(sub); | 
 |  |  |                     if (sub <= 0) { | 
 |  |  |                     if (sub < 0) { | 
 |  |  |                       throw new GlobleException("项目余次不足"); | 
 |  |  |                     }else if(sub==0){ | 
 |  |  |                         sysProjUse.setIsOver(Dictionary.FLAG_YES_Y); | 
 |  |  |                         sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX); | 
 |  |  |                     } | 
 |  |  |                     sysProjUse.setSurplusCount(sub); | 
 |  |  |                     sysProjUseDao.update(sysProjUse); | 
 |  |  |  | 
 |  |  |                     SysProjUseFlow sysProjUseFlow = SysProjUseMapper.INSTANCE.projUseToFlow(sysProjUse); | 
 |  |  |                     sysProjUseFlow.setOptionType("退款修改"); | 
 |  |  |                     sysProjUseFlow.setId(null); | 
 |  |  | 
 |  |  |             if (Dictionary.SHOPPING_GOODS_TYPE_TC.equals(item.getType())) { | 
 |  |  |                 queryProjUse.setTaocanId(-1L); | 
 |  |  |                 List<SysProjUse> sysProjUses = sysProjUseDao.selectByModel(queryProjUse); | 
 |  |  |                 if (item.getCount() > sysProjUses.size()) { | 
 |  |  |                     throw new GlobleException("数据异常"); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |                 for (int i = 0; i < item.getCount(); i++) { | 
 |  |  |  | 
 |  |  |                     SysProjUse sysProjUse = sysProjUses.get(i); | 
 |  |  |                     sysProjUse.setIsOver(Dictionary.FLAG_YES_Y); | 
 |  |  |                     sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX); | 
 |  |  |  | 
 |  |  |                     sysProjUseDao.update(sysProjUse); | 
 |  |  |                     SysProjUseFlow sysProjUseFlow = SysProjUseMapper.INSTANCE.projUseToFlow(sysProjUse); | 
 |  |  |                     sysProjUseFlow.setOptionType("退款修改"); | 
 |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 家居产品退库存 | 
 |  |  |         if (CollectionUtils.isNotEmpty(returnItems)) { | 
 |  |  |             refundInstore(returnItems); | 
 |  |  |         if (CollectionUtils.isNotEmpty(returnGoodsList)) { | 
 |  |  |             refundInstore(returnGoodsList); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 设置业绩 | 
 |  |  |         achieveNewService.addAchaeveByOrder(pageOrder); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** |