From c448fbec7a77c2a7baf1cb8afef61723dcf69696 Mon Sep 17 00:00:00 2001 From: 935090232@qq.com <ak473600000> Date: Sun, 13 Mar 2022 23:12:16 +0800 Subject: [PATCH] 重构:套餐项目 --- zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 279 ------------------------------------------------------- 1 files changed, 2 insertions(+), 277 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 ed9cb4b..99bff37 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 @@ -42,7 +42,6 @@ import com.matrix.system.score.service.ScoreVipDetailService; import com.matrix.system.shopXcx.mqTask.AsyncMessageRouting; import com.matrix.system.wechart.templateMsg.UniformMsgParam; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -144,9 +143,6 @@ @Autowired private SysOrderServiceHelper sysOrderServiceHelper; - - @Autowired - private SysProjServicesService projServicesService; @@ -501,14 +497,13 @@ sysOrderServiceHelper.addTaocanProj(pageOrder); // 新增出库单 - addOutStore(pageOrder); + sysOrderServiceHelper.addOutStore(pageOrder); // 设置业绩 achieveNewService.addAchaeveByOrder(pageOrder); - //设置会员积分 - addVipScore(pageOrder); + sysOrderServiceHelper.addVipScore(pageOrder); //保存订单收款日志 saveOrderSkLog(pageOrder); @@ -636,159 +631,6 @@ } - /** - * 设置会员消费积分 - * @param pageOrder - */ - private void addVipScore(SysOrder pageOrder) { - - SysVipInfo vipInfo = sysVipInfoDao.selectById(pageOrder.getVipId()); - - List<SysOrderFlow> flows = pageOrder.getFlows(); - int[] cashScore = {0, 0, 0}; - //现金支付金额 - BigDecimal cashPayAmount = flows.stream() - .filter(item -> (!item.getPayMethod().equals("储值卡")) && (!item.getPayMethod().equals("欠款"))) - .map(SysOrderFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); - BusParameterSettings cashConsumption = busParameterSettingsDao.selectCompanyParamByCode(ScoreSettingConstant.CASH_CONSUMPTION, vipInfo.getCompanyId()); - if (cashPayAmount != null - && cashPayAmount.compareTo(BigDecimal.ZERO) > 0 - && StringUtils.isNotBlank(cashConsumption.getParamValue())) { - - BigDecimal scoreSetting0 = new BigDecimal(cashConsumption.getParamValue()); - if (scoreSetting0.compareTo(BigDecimal.ZERO) > 0) { - cashScore[0] = cashPayAmount.divide(scoreSetting0).intValue(); - } - - if (StringUtils.isNotBlank(cashConsumption.getParamValue1())) { - BigDecimal scoreSetting1 = new BigDecimal(cashConsumption.getParamValue1()); - if (scoreSetting1.compareTo(BigDecimal.ZERO) > 0) { - cashScore[1] = cashPayAmount.divide(scoreSetting1).intValue(); - } - - } - - if (StringUtils.isNotBlank(cashConsumption.getParamValue2())) { - BigDecimal scoreSetting2 = new BigDecimal(cashConsumption.getParamValue2()); - if (scoreSetting2.compareTo(BigDecimal.ZERO) > 0) { - cashScore[2] = cashPayAmount.divide(scoreSetting2).intValue(); - } - - } - } - - int[] cardScore = {0, 0, 0}; - //储值卡本金支付金额 - BigDecimal cardPayAmount = flows.stream() - .filter(item -> item.getPayMethod().equals("储值卡") && item.getIsGift().equals("N")) - .map(SysOrderFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); - - BusParameterSettings principalBalanceConsumption = busParameterSettingsDao.selectCompanyParamByCode(ScoreSettingConstant.PRINCIPAL_BALANCE_CONSUMPTION, vipInfo.getCompanyId()); - if (cardPayAmount != null - && cardPayAmount.compareTo(BigDecimal.ZERO) > 0 - && StringUtils.isNotBlank(principalBalanceConsumption.getParamValue())) { - - BigDecimal scoreSetting0 = new BigDecimal(principalBalanceConsumption.getParamValue()); - if (scoreSetting0.compareTo(BigDecimal.ZERO) > 0) { - cardScore[0] = cardPayAmount.divide(scoreSetting0).intValue(); - } - - if (StringUtils.isNotBlank(principalBalanceConsumption.getParamValue1())) { - BigDecimal scoreSetting1 = new BigDecimal(principalBalanceConsumption.getParamValue1()); - if (scoreSetting1.compareTo(BigDecimal.ZERO) > 0) { - cardScore[1] = cardPayAmount.divide(scoreSetting1).intValue(); - } - } - - if (StringUtils.isNotBlank(principalBalanceConsumption.getParamValue2())) { - BigDecimal scoreSetting2 = new BigDecimal(principalBalanceConsumption.getParamValue2()); - if (scoreSetting2.compareTo(BigDecimal.ZERO) > 0) { - cardScore[2] = cardPayAmount.divide(scoreSetting2).intValue(); - } - } - } - - int[] giftScore = {0, 0, 0}; - //储值卡本赠送付金额 - BigDecimal giftPayAmount = flows.stream() - .filter(item -> item.getPayMethod().equals("储值卡") && item.getIsGift().equals("Y")) - .map(SysOrderFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); - BusParameterSettings bonusBalanceConsumption = busParameterSettingsDao.selectCompanyParamByCode(ScoreSettingConstant.BONUS_BALANCE_CONSUMPTION, vipInfo.getCompanyId()); - if (giftPayAmount != null - && giftPayAmount.compareTo(BigDecimal.ZERO) > 0 - && StringUtils.isNotBlank(bonusBalanceConsumption.getParamValue())) { - - BigDecimal scoreSetting0 = new BigDecimal(bonusBalanceConsumption.getParamValue()); - if (scoreSetting0.compareTo(BigDecimal.ZERO) > 0) { - giftScore[0] = giftPayAmount.divide(scoreSetting0).intValue(); - } - - if (StringUtils.isNotBlank(bonusBalanceConsumption.getParamValue1())) { - BigDecimal scoreSetting1 = new BigDecimal(bonusBalanceConsumption.getParamValue1()); - if (scoreSetting1.compareTo(BigDecimal.ZERO) > 0) { - giftScore[1] = giftPayAmount.divide(scoreSetting1).intValue(); - } - } - - if (StringUtils.isNotBlank(bonusBalanceConsumption.getParamValue2())) { - BigDecimal scoreSetting2 = new BigDecimal(bonusBalanceConsumption.getParamValue2()); - if (scoreSetting2.compareTo(BigDecimal.ZERO) > 0) { - giftScore[2] = giftPayAmount.divide(scoreSetting2).intValue(); - } - } - } - - int selfScore = cashScore[0] + cardScore[0] + giftScore[0]; - int parentScore = cashScore[1] + cardScore[1] + giftScore[1]; - int topParentScore = cashScore[2] + cardScore[2] + giftScore[2]; - - - //添加自己的积分 - if (selfScore > 0) { - scoreVipDetailService.addScore( - vipInfo.getId(), - pageOrder.getStaffId(), - pageOrder.getShopId(), - selfScore, - pageOrder.getId(), - ScoreVipDetail.SCORE_VIP_TYPE_CASH, - "消费奖励" - ); - } - - if (vipInfo.getRecommendId() != null) { - //推荐注册老带新积分奖励 - SysVipInfo referrerVip = sysVipInfoDao.selectById(vipInfo.getRecommendId()); - if (parentScore > 0) { - scoreVipDetailService.addScore( - referrerVip.getId(), - pageOrder.getStaffId(), - pageOrder.getShopId(), - parentScore, - pageOrder.getId(), - ScoreVipDetail.SCORE_VIP_TYPE_CASH, - "推荐消费奖励" - ); - } - //推荐注册二级带新积分奖励 - if (referrerVip.getRecommendId() != null) { - SysVipInfo topVipInfo = sysVipInfoDao.selectById(referrerVip.getRecommendId()); - if (topParentScore > 0) { - scoreVipDetailService.addScore( - topVipInfo.getId(), - pageOrder.getStaffId(), - pageOrder.getShopId(), - topParentScore, - pageOrder.getId(), - ScoreVipDetail.SCORE_VIP_TYPE_CASH, - "推荐消费奖励" - ); - } - } - } - } - - @@ -802,7 +644,6 @@ @Override public void updateAfterMoney(SysOrder pageOrder) { SysOrder sourceOrder = sysOrderDao.selectById(pageOrder.getId()); - //添加支付流水 sysOrderServiceHelper.addOrderFlow(pageOrder,true); @@ -836,122 +677,6 @@ } - /** - * @param order 新增出库单并更新本店库存 - * @author:姜友瑶 - * @date 2016年9月2日 - */ - @Override - public void addOutStore(SysOrder order) { - - BusParameterSettings manageStockSetting = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WAREHOUSE_MANAGE_STOCK, order.getCompanyId()); - if (AppConstance.IS_Y.equals(manageStockSetting.getParamValue())) { - - List<SysOutStoreItem> storeItemList = new ArrayList<>(); - - for (SysOrderItem sysOrderItem : order.getItems()) { - - if (ShoppingGoods.SHOPPING_GOODS_TYPE_JJCP.equals(sysOrderItem.getType())) { - - SysOutStoreItem storeItem = new SysOutStoreItem(); - storeItem.setSkuId(sysOrderItem.getGoodsId()); - storeItem.setAmount(Double.valueOf(sysOrderItem.getCount())); - storeItemList.add(storeItem); - - } else if (ShoppingGoods.SHOPPING_GOODS_TYPE_TC.equals(sysOrderItem.getType()) - - || ShoppingGoods.SHOPPING_GOODS_TYPE_ZHK.equals(sysOrderItem.getType())) { - - List<ShoppingGoodsAssemble> goodsList = new ArrayList<>(); - - goodsList.addAll(shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(sysOrderItem.getGoodsId(), ShoppingGoods.SHOPPING_GOODS_TYPE_JJCP)); - - if (ShoppingGoods.SHOPPING_GOODS_TYPE_ZHK.equals(sysOrderItem.getType())) { - //综合卡处理,中的套餐,中的家居产品 - List<ShoppingGoodsAssemble> zhkAssemble = shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(sysOrderItem.getGoodsId(), ShoppingGoods.SHOPPING_GOODS_TYPE_TC); - zhkAssemble.forEach(item -> { - goodsList.addAll(shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(item.getAssembleGoodId(), ShoppingGoods.SHOPPING_GOODS_TYPE_JJCP)); - }); - } - - goodsList.forEach(item -> { - SysOutStoreItem storeItem = new SysOutStoreItem(); - storeItem.setSkuId(item.getAssembleGoodId()); - storeItem.setAmount(Double.valueOf(item.getTotal())); - storeItemList.add(storeItem); - }); - } - } - - if (CollectionUtils.isNotEmpty(storeItemList)) { - Long warehouseId = warehouseDao.findShopWarehouse(order.getShopId()).get(0).getId(); - SysOutStore outStore = new SysOutStore(); - outStore.setOutStoreNo(codeService.getOutStoreCode()); - outStore.setOrderId(order.getId()); - outStore.setShopId(order.getShopId()); - outStore.setShopId(order.getShopId()); - outStore.setStaffId(order.getStaffId()); - outStore.setType(Dictionary.OUT_STORE_JJCPCK); - outStore.setServiceNo(order.getOrderNo()); - outStore.setTime(new Date()); - outStore.setCheckStatus(Dictionary.CHECK_STATUS_DSH); - outStore.setCompanyId(order.getCompanyId()); - sysOutStoreDao.insert(outStore); - - //出库明细,根据批次维度定义 - List<SysOutStoreItem> realOutStoreItemList = new ArrayList<>(); - - storeItemList.forEach(outStoreItem -> { - - //设置出库主键 - outStoreItem.setOutStoreId(outStore.getId()); - - //计算库存总数是否满足本次扣减的需求 - List<SysStoreInfo> stores = storeInfoDao.selectStoInfoBySku(outStoreItem.getSkuId(), warehouseId); - double sum = stores.stream().mapToDouble(item -> item.getStoreTotal()).sum(); - if (sum < outStoreItem.getAmount()) { - ShoppingGoods sysGoods = shoppingGoodsDao.selectById(outStoreItem.getSkuId()); - if (sysGoods != null) { - throw new GlobleException("出库失败:【" + sysGoods.getName() + "库存不足】"); - - } else { - throw new GlobleException("出库失败没有找到出库产品"); - } - } - - //循环获取所有批次产品,并扣减库存 - Double number = outStoreItem.getAmount(); - for (SysStoreInfo storeInfo : stores) { - Double oldStoreTotal = storeInfo.getStoreTotal(); - Double surplus = storeInfo.getStoreTotal() - number; - //更新库存 - storeInfo.setStoreTotal(surplus < 0 ? 0 : surplus); - - //每次扣减库存都创建一个出库记录 - SysOutStoreItem sysOutStoreItem = new SysOutStoreItem(); - BeanUtils.copyProperties(outStoreItem, sysOutStoreItem); - sysOutStoreItem.setStoreId(storeInfo.getId()); - sysOutStoreItem.setAmount(oldStoreTotal - storeInfo.getStoreTotal()); - realOutStoreItemList.add(sysOutStoreItem); - - storeInfoDao.update(storeInfo); - //扣除后剩余库存大于0则跳出扣除,否则剩余数量的负数的绝对值就是再次扣减的数量 - if (surplus > 0) { - break; - } else { - number = Math.abs(surplus); - } - } - }); - sysOutStoreItemDao.batchInsert(realOutStoreItemList); - } - - } else { - LogUtil.debug("不管理库存"); - } - - - } -- Gitblit v1.9.1