From e971ea090aa1f320f3c3f78c3a2a8d50f16dd4d0 Mon Sep 17 00:00:00 2001 From: 935090232@qq.com <ak473600000> Date: Fri, 15 Jan 2021 23:38:19 +0800 Subject: [PATCH] 小程序预约接口修改 --- zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 622 ++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 406 insertions(+), 216 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 2981768..21f8bde 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 @@ -6,6 +6,12 @@ import com.matrix.core.tools.LogUtil; import com.matrix.core.tools.StringUtils; import com.matrix.core.tools.WebUtil; +import com.matrix.system.app.dto.OrderListDto; +import com.matrix.system.app.mapper.SysProjUseMapper; +import com.matrix.system.app.vo.OrderDetailAchieveItemVo; +import com.matrix.system.app.vo.OrderDetailItemVo; +import com.matrix.system.app.vo.OrderDetailVo; +import com.matrix.system.app.vo.RankingVo; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.common.dao.SysUsersDao; @@ -20,16 +26,14 @@ import com.matrix.system.hive.pojo.CzXkVo; import com.matrix.system.hive.pojo.ShoppingCarItem; import com.matrix.system.hive.pojo.ShoppingCarItemsVo; -import com.matrix.system.hive.service.AchieveNewService; -import com.matrix.system.hive.service.CodeService; -import com.matrix.system.hive.service.ShoppingGoodsService; -import com.matrix.system.hive.service.SysOrderService; +import com.matrix.system.hive.service.*; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpSession; +import javax.validation.constraints.NotEmpty; import java.util.*; /** @@ -80,10 +84,29 @@ private AchieveNewService achieveNewService; @Autowired + private AchieveNewDao achieveNewDao; + + @Autowired private WarehouseDao warehouseDao; @Autowired private ShoppingGoodsService shoppingGoodsService; + + @Autowired + private SysOrderFlowDao sysOrderFlowDao; + + @Autowired + private SysSupplierInfoDao sysSupplierInfoDao; + + @Autowired + private SysInstoreInfoDao sysInstoreInfoDao; + + @Autowired + private SysInstoreDetailDao sysInstoreDetailDao; + + @Autowired + private SysInstoreInfoService sysInstoreInfoService; + @Override public int add(SysOrder sysOrder) { @@ -143,24 +166,27 @@ @Override public SysOrder checkAndSaveOrder(SysOrder sysOrder) { - // 收款改变订单状态 - /** - * 判断订单条目的一个付款情况 - */ - // 计算现金支付金额 - double xjMoney = 0.0; - // 计算卡支付总额 - double cardMoney = 0.0; + // 计算订单折扣金额,收款情况下 计算订单总额 double zkTotal = 0.0; - /** - * 记录本次消费的卡,防止扣除多次消费记录 - */ - ArrayList<Long> userCard = new ArrayList<Long>(); + + // 判断是否为退款 + 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()); @@ -168,43 +194,16 @@ item.setIsFree(Dictionary.FLAG_YES); } - - // 如果支付方式是非现金则记录现金支付金额 - if (!item.getPayMethod().equals(PayMethodEnum.VIP_CARD.getCode())) { - xjMoney = MoneyUtil.add(xjMoney, item.getPayMoney()); - item.setCashPay(item.getPayMoney()); - } else { - cardMoney = MoneyUtil.add(cardMoney, item.getPayMoney()); - item.setCardPay(item.getPayMoney()); - - } - - // 订单欠款减去支付金额 设置实际欠款 Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount())); zkTotal=MoneyUtil.add(zkTotal, itemZkTotal); - item.setArrears(MoneyUtil.sub(itemZkTotal, item.getPayMoney())); - - - // 如果存在欠款,将条目状态设置为欠款 - if (item.getArrears() > 0) { - item.setStatus(Dictionary.ORDER_STATU_QK); - } else if (item.getArrears() < 0) { - item.setPayMoney(item.getZkPrice()); - item.setStatus(Dictionary.ORDER_STATU_DFK); - } else { - item.setStatus(Dictionary.ORDER_STATU_DFK); - } + item.setStatus(orderStatus); } - double arrears; + SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); - // 如果是收款,收款可以改变订单价格,所以需要求和出 订单折后价来计算本次欠款 - arrears = MoneyUtil.sub(zkTotal, MoneyUtil.add(cardMoney, xjMoney)); sysOrder.setZkTotal(zkTotal); - sysOrder.setArrears(arrears); - sysOrder.setCardPay(cardMoney); - sysOrder.setCashPay(xjMoney); - sysOrder.setStatu(Dictionary.ORDER_STATU_DFK); + sysOrder.setStatu(orderStatus); + sysOrder.setStaffId(user.getSuId()); sysOrder.setCompanyId(user.getCompanyId()); sysOrder.setPayTime(new Date()); @@ -222,7 +221,11 @@ sysOrder.getItems().forEach(sysOrderItem -> { sysOrderItem.setOrderId(sysOrder.getId()); + // 取负数 + sysOrderItem.setCount(-sysOrderItem.getCount()); orderItemDao.insert(sysOrderItem); + // 调整回来 + sysOrderItem.setCount(-sysOrderItem.getCount()); }); return sysOrder; @@ -355,7 +358,7 @@ throw new GlobleException("没用选择购买产品"); } // 获取会员信息,判断等级 获取相应家居折扣 - SysVipInfo info = (SysVipInfo) WebUtil.getSession().getAttribute(SystemConstance.CURRENT_CUSTOMER); + SysVipInfo info = sysVipInfoDao.selectById(car.getVipId()); //获取折扣----- Double zk = zk = 1.0; @@ -375,6 +378,7 @@ order.setStatu(Dictionary.ORDER_STATU_DFK); order.setCardPay(0.00); order.setCashPay(0.00); + order.setCompanyId(user.getCompanyId()); order.setBeatuyId(car.getBeatuyId() + ""); // 根据美疗师id查询美疗师姓名 if (car.getBeatuyId() != null) { @@ -488,44 +492,60 @@ * @author:姜友瑶 */ private void changeOrderStatu(SysOrder sourceOrder) { + int i = 1; + String orderStatus = Dictionary.ORDER_STATU_YFK; + String flowType = SysOrderFlow.FLOW_TYPE_BUY; + 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() + "件产品"); - boolean haQk=false; - - for(SysOrderItem sysOrderItem:sourceOrder.getItems()){ - - if(!sysOrderItem.getStatus().equals(Dictionary.ORDER_STATU_QK)){ - SysOrderItem updateItem=new SysOrderItem(); - updateItem.setId(sysOrderItem.getId()); - updateItem.setStatus(Dictionary.ORDER_STATU_YFK); - - if (sysOrderItem.getPayMethod().equals(Dictionary.PAY_TYPE_MOENY_CARD ) ) { - - if(sysOrderItem.getPayMethodDetail()!=null){ - // 查询要支付的充值卡 - MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(Long.parseLong(sysOrderItem.getPayMethodDetail())); - // 扣除付款卡金额并添加流水 - cardPaySk(moneyCardUse, sourceOrder, sysOrderItem); - }else{ - throw new GlobleException("请选择支付的会员卡"); - } - - - } - orderItemDao.update(updateItem); - }else { - haQk=true; + if (Dictionary.ORDER_STATU_TK.equals(sourceOrder.getStatu())) { + flowType = SysOrderFlow.FLOW_TYPE_REFUND; + // 若是退款,则取负数 + flow.setAmount(flow.getAmount().negate()); + flow.setOrderId(sourceOrder.getOldOrderId()); + } else { + flow.setOrderId(sourceOrder.getId()); } - } - //更新收款状态 - if(haQk){ - sourceOrder.setStatu(Dictionary.ORDER_STATU_QK); - }else{ - sourceOrder.setStatu(Dictionary.ORDER_STATU_YFK); + + flow.setVipId(sourceOrder.getVipId()); + flow.setFlowType(flowType); + // 若使用储值卡付款 + if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) { + if (flow.getCardId() != null) { + MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId()); + cardPaySk(moneyCardUse, sourceOrder, flow); + cardPayTotal += flow.getAmount().doubleValue(); + } + } + + if (SysOrderFlow.PAY_METHOD_ARREARS.equals(flow.getPayMethod())) { + 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(); + } + flow.setShopId(sourceOrder.getShopId()); + flow.setCompanyId(sourceOrder.getCompanyId()); + 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); - - } @@ -564,59 +584,50 @@ * 使用充值卡付款操作 * * @param sourceOrder - * @param userCard - * @param orderItem - * @param temp 设置是否扣除使用次数 true 扣除 + * @param moneyCardUse + * @param flow */ - private void cardPaySk(MoneyCardUse moneyCardUse, SysOrder sourceOrder, - SysOrderItem orderItem) { + private void cardPaySk(MoneyCardUse moneyCardUse, SysOrder sourceOrder, SysOrderFlow flow) { // 判断商品是否在充值卡的限制购买,判断分类 - if (!isInBangding(moneyCardUse, orderItem.getGoodsId())) { - throw new GlobleException(shoppingGoodsDao.selectById(orderItem.getGoodsId()).getName() + "不在" - + moneyCardUse.getCardName() + "优惠中"); - } - SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); - Double balance = moneyCardUse.getRealMoney(); - if (moneyCardUse.getGiftMoney() != null) { - balance = MoneyUtil.add(balance, moneyCardUse.getGiftMoney()); - } - // 判断金额是否足够支付 - if (balance >= orderItem.getPayMoney()) { - - MoneyCardUseFlow moneyCardUseFlow=new MoneyCardUseFlow(); - - // 余额充足先从本金中扣除 - if (moneyCardUse.getRealMoney() >= orderItem.getPayMoney()) { - double surplus = MoneyUtil.sub(moneyCardUse.getRealMoney(), orderItem.getPayMoney()); - moneyCardUse.setRealMoney(surplus); - moneyCardUseFlow.setTotal(0-orderItem.getPayMoney()); - - } else { - // 本金不够 - double surplus = MoneyUtil.sub(orderItem.getPayMoney(), moneyCardUse.getRealMoney()); - moneyCardUseFlow.setTotal(0- moneyCardUse.getRealMoney()); - // 扣除所有本金 - moneyCardUse.setRealMoney(0D); - moneyCardUse.setGiftMoney(MoneyUtil.sub(moneyCardUse.getGiftMoney(), surplus)); - // 只要是用了赠送金额购买的就视为赠送套餐 18-12-01 jyy - orderItem.setIsFree(Dictionary.FLAG_YES); - moneyCardUseFlow.setGiftMoney(0-surplus); + sourceOrder.getItems().forEach(item -> { + if (!isInBangding(moneyCardUse, item.getGoodsId())) { + throw new GlobleException(shoppingGoodsDao.selectById(item.getGoodsId()).getName() + "不在" + moneyCardUse.getCardName() + "优惠中"); } + }); - //设置卡项使用流水 - moneyCardUseFlow.setCarUseId(moneyCardUse.getId()); - moneyCardUseFlow.setOrderNo(sourceOrder.getOrderNo()); - moneyCardUseFlow.setVipId(sourceOrder.getVipId()); - moneyCardUseFlow.setTimes(-1); - moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CONSUMER); - moneyCardUseFlow.setCreateTime(new Date()); - moneyCardUseFlow.setOperationId(user.getSuId()); - moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney()+moneyCardUse.getRealMoney()); - moneyCardUseFlowDao.insert(moneyCardUseFlow); + SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); + MoneyCardUseFlow moneyCardUseFlow=new MoneyCardUseFlow(); + if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) { + if(moneyCardUse.getGiftMoney() >= flow.getAmount().doubleValue()) { + double surplus = MoneyUtil.sub(moneyCardUse.getGiftMoney(), flow.getAmount().doubleValue()); + moneyCardUse.setGiftMoney(surplus); + + moneyCardUseFlow.setGiftMoney(0D - flow.getAmount().doubleValue()); + } else { + throw new GlobleException(moneyCardUse.getCardName() + "余额不足"); + } } else { - throw new GlobleException(moneyCardUse.getCardName() + "余额不足"); + if(moneyCardUse.getRealMoney() >= flow.getAmount().doubleValue()) { + double surplus = MoneyUtil.sub(moneyCardUse.getRealMoney(), flow.getAmount().doubleValue()); + moneyCardUse.setRealMoney(surplus); + + moneyCardUseFlow.setTotal(0 - flow.getAmount().doubleValue()); + } else { + throw new GlobleException(moneyCardUse.getCardName() + "余额不足"); + } } + + //设置卡项使用流水 + moneyCardUseFlow.setCarUseId(moneyCardUse.getId()); + moneyCardUseFlow.setOrderNo(sourceOrder.getOrderNo()); + moneyCardUseFlow.setVipId(sourceOrder.getVipId()); + moneyCardUseFlow.setTimes(-1); + moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CONSUMER); + moneyCardUseFlow.setCreateTime(new Date()); + moneyCardUseFlow.setOperationId(user.getSuId()); + moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney()+moneyCardUse.getRealMoney()); + moneyCardUseFlowDao.insert(moneyCardUseFlow); // 达到使用次数后自动清空余额 if (!moneyCardUse.getIsVipCar().equals(Dictionary.FLAG_YES_Y) @@ -628,6 +639,12 @@ if (moneyCardUse.getRealMoney().equals(0D) && moneyCardUse.getGiftMoney().equals(0D)) { moneyCardUse.setIsOver(Dictionary.FLAG_YES_Y); moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_WX); + } + + ShoppingGoods shoppingGoods = shoppingGoodsService.findById(moneyCardUse.getGoodsId()); + if (shoppingGoods != null) { + Date invalidTime = shoppingGoodsService.calInvalidTime(shoppingGoods, 2, moneyCardUse.getFailTime()); + moneyCardUse.setFailTime(invalidTime); } // 更新充值卡信息 moneyCardUseDao.update(moneyCardUse); @@ -703,48 +720,46 @@ // 如果购买的是充值卡 if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_CZK)) { - ShoppingGoods moneyCar = shoppingGoodsDao.selectById(sysOrderItem.getGoodsId()); - MoneyCardUse moneyCardUse = new MoneyCardUse(); - moneyCardUse.setVipId(sourceOrder.getVipId()); - moneyCardUse.setGiftMoney(moneyCar.getReferencePice()); - moneyCardUse.setRealMoney(moneyCar.getSealPice()); - moneyCardUse.setGoodsId(moneyCar.getId()); - moneyCardUse.setIsOver(Dictionary.FLAG_NO_N); - moneyCardUse.setOrderItemId(sysOrderItem.getId()); - moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_GM); - moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX); - moneyCardUse.setCardName(moneyCar.getName()); - - if (Dictionary.FLAG_YES.equals(moneyCar.getCarIsAll())) { - moneyCardUse.setIsVipCar(Dictionary.FLAG_YES_Y); - } else { - // 非会籍卡 - moneyCardUse.setIsVipCar(Dictionary.FLAG_NO_N); - } - - // 是否为赠送 - if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_YES)) { - moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_ZS); - } else { + for(int i = 0; i < sysOrderItem.getCount(); i++) { + ShoppingGoods moneyCar = shoppingGoodsDao.selectById(sysOrderItem.getGoodsId()); + MoneyCardUse moneyCardUse = new MoneyCardUse(); + moneyCardUse.setVipId(sourceOrder.getVipId()); + moneyCardUse.setGiftMoney(moneyCar.getReferencePice()); + moneyCardUse.setRealMoney(moneyCar.getSealPice()); + moneyCardUse.setGoodsId(moneyCar.getId()); + moneyCardUse.setIsOver(Dictionary.FLAG_NO_N); + moneyCardUse.setOrderItemId(sysOrderItem.getId()); moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_GM); + moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX); + moneyCardUse.setCardName(moneyCar.getName()); + + if (Dictionary.FLAG_YES.equals(moneyCar.getCarIsAll())) { + moneyCardUse.setIsVipCar(Dictionary.FLAG_YES_Y); + } else { + // 非会籍卡 + moneyCardUse.setIsVipCar(Dictionary.FLAG_NO_N); + } + + // 是否为赠送 + if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_YES)) { + moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_ZS); + } else { + moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_GM); + } + if (moneyCar.getCarUseCount() == null || moneyCar.getCarUseCount() == 0) { + moneyCardUse.setUseTotal(999999999); + moneyCardUse.setLastCount(999999999); + } else { + moneyCardUse.setUseTotal(moneyCar.getCarUseCount()); + moneyCardUse.setLastCount(moneyCar.getCarUseCount()); + } + moneyCardUse.setVipId(sourceOrder.getVipId()); + + Date invalidTime = shoppingGoodsService.calInvalidTime(sysOrderItem.getShoppingGoods(), 1, null); + moneyCardUse.setFailTime(invalidTime); + + moneyCardUseDao.insert(moneyCardUse); } - if (moneyCar.getCarUseCount() == null || moneyCar.getCarUseCount() == 0) { - moneyCardUse.setUseTotal(999999999); - moneyCardUse.setLastCount(999999999); - } else { - moneyCardUse.setUseTotal(moneyCar.getCarUseCount()); - moneyCardUse.setLastCount(moneyCar.getCarUseCount()); - } - moneyCardUse.setVipId(sourceOrder.getVipId()); - if (moneyCar.getValidity() == null || moneyCar.getValidity() == 0) { - // 设置失效时间 - Calendar cal = Calendar.getInstance(); - cal.set(2200, 1, 1); - moneyCardUse.setFailTime(cal.getTime()); - } else { - moneyCardUse.setFailTime(DateUtil.nextNDate(new Date(), 30 * moneyCar.getValidity())); - } - moneyCardUseDao.insert(moneyCardUse); } } } @@ -756,66 +771,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())); - // 扣除付款卡金额并添加流水 - 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); - } @@ -1049,6 +1052,7 @@ taocanProjUse.setStatus(Dictionary.TAOCAN_STATUS_YX); taocanProjUse.setType(Dictionary.SHOPPING_GOODS_TYPE_TC); taocanProjUse.setIsCourse(taocanShoppingGoods.getIsCourse()); + taocanProjUse.setIsInfinite(taocanShoppingGoods.getIsInfinite()); // 赠送和打折后金额为0的都视为赠送项目 if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0) { taocanProjUse.setSource(Dictionary.TAOCAN_SOURCE_GM); @@ -1199,6 +1203,192 @@ } + @Override + public SysOrder findSysOrderTjByVipId(Long vipId) { + return sysOrderDao.selectVipOrderInfoTotal(vipId); + } + + @Override + public List<OrderDetailVo> findApiOrderListInPage(OrderListDto orderListDto, PaginationVO pageVo) { + return sysOrderDao.selectApiOrderListInPage(orderListDto, pageVo); + } + + @Override + public int findApiOrderListTotal(OrderListDto orderListDto) { + return sysOrderDao.selectApiOrderListTotal(orderListDto); + } + + @Override + public OrderDetailVo findApiOrderDetailByOrderId(Long orderId) { + OrderDetailVo orderDetail = sysOrderDao.selectApiOrderDetailById(orderId); + + if (orderDetail == null) { + throw new GlobleException("该订单不存在"); + } + + List<OrderDetailItemVo> items = orderItemDao.selectApiOrderDetailItemsByOrderId(orderId); + if (CollectionUtils.isNotEmpty(items)) { + for (OrderDetailItemVo item : items) { + List<OrderDetailAchieveItemVo> achieveItems = achieveNewDao.selectApiOrderItemAchieve(item.getId()); + item.setAchieves(achieveItems); + } + } + + orderDetail.setItems(items); + return orderDetail; + } + + @Override + public List<RankingVo> findApiShopAchieveRanking(SysOrder sysOrder) { + return sysOrderDao.selectShopAchieveRanking(sysOrder); + } + + @Override + public List<RankingVo> findStaffSaleAchieveRanking(SysOrder sysOrder) { + return sysOrderDao.selectStaffSaleAchieveRanking(sysOrder); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void refundOrderMoney(SysOrder pageOrder) { + SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); + // 插入订单流水 + changeOrderStatu(pageOrder); + + List<SysOrderItem> returnItems = new ArrayList<>(); + for (SysOrderItem item : pageOrder.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); + } + } else { + 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); + + SysProjUseFlow sysProjUseFlow = SysProjUseMapper.INSTANCE.projUseToFlow(sysProjUse); + sysProjUseFlow.setOptionType("退款修改"); + sysProjUseFlow.setId(null); + sysProjUseFlow.setUpdateBy(user.getSuName()); + sysProjUseFlow.setCreateBy(user.getSuName()); + sysProjUseDao.insertFlow(sysProjUseFlow); + } + } + + 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("退款修改"); + sysProjUseFlow.setId(null); + sysProjUseFlow.setUpdateBy(user.getSuName()); + sysProjUseFlow.setCreateBy(user.getSuName()); + sysProjUseDao.insertFlow(sysProjUseFlow); + } + } + + 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.getOldItemId()); + + List<MoneyCardUse> moneyCardUses = moneyCardUseDao.selectByModel(queryCardUse); + for(int i = 0; i < item.getCount(); i++) { + MoneyCardUse moneyCardUse = moneyCardUses.get(i); + 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())) { + + } + ShoppingGoods goods = shoppingGoodsDao.selectById(item.getGoodsId()); + goods.setRealSealCount(goods.getRealSealCount() - item.getCount()); + shoppingGoodsDao.update(goods); + } + + // 家居产品退库存 + if (CollectionUtils.isNotEmpty(returnItems)) { + refundInstore(returnItems); + } + + // 设置业绩 + achieveNewService.addAchaeveByOrder(pageOrder); + + } + + /** + * 退款入库 + */ + private void refundInstore(@NotEmpty List<SysOrderItem> items) { + SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); + SysSupplierInfo supplierInfo = new SysSupplierInfo(); + supplierInfo.setShopId(user.getShopId()); + supplierInfo = sysSupplierInfoDao.selectByModel(supplierInfo).get(0); + + Warehouse warehouse = warehouseDao.findShopWarehouse(user.getShopId()).get(0); + SysInstoreInfo instoreInfo = new SysInstoreInfo(); + instoreInfo.setInstoreType(SysInstoreInfo.INSTORE_TYPE_RETURN); + instoreInfo.setInstoreDate(new Date()); + instoreInfo.setSupplierId(supplierInfo.getId().toString()); + instoreInfo.setStoreId(warehouse.getId()); + instoreInfo.setCheckStatus(Dictionary.CHECK_STATUS_DSH); + // 设置入库单编号 + instoreInfo.setInstoreId(DateUtil.getTimeMark()); + instoreInfo.setShopId(user.getShopId()); + instoreInfo.setCompanyId(user.getCompanyId()); + sysInstoreInfoDao.insert(instoreInfo); + + Double total = 0.0; + List<SysInstoreDetail> instoreDetails = new ArrayList<>(); + for (SysOrderItem item : items) { + ShoppingGoods goods = shoppingGoodsDao.selectById(item.getGoodsId()); + SysInstoreDetail sysInstoreDetail = new SysInstoreDetail(); + sysInstoreDetail.setAmount(item.getCount().doubleValue()); + sysInstoreDetail.setPrice(item.getZkPrice()); + sysInstoreDetail.setSkuId(goods.getId()); + + total = MoneyUtil.add(MoneyUtil.mul(Double.parseDouble(sysInstoreDetail.getAmount() + ""), sysInstoreDetail.getPrice()), total); + sysInstoreDetail.setInstoreId(instoreInfo.getId()); + // 设置小计 + sysInstoreDetail.setPriceTotal(MoneyUtil.mul(Double.parseDouble(sysInstoreDetail.getAmount() + ""), sysInstoreDetail.getPrice())); + instoreDetails.add(sysInstoreDetail); + + } + instoreInfo.setSumall(total); + sysInstoreInfoDao.update(instoreInfo); + sysInstoreDetailDao.batchInsert(instoreDetails); + + sysInstoreInfoService.check(instoreInfo); + } } -- Gitblit v1.9.1