| | |
| | | package com.matrix.system.hive.service.imp; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.google.common.collect.Lists; |
| | | import com.matrix.component.asyncmessage.AsyncMessageManager; |
| | | import com.matrix.core.constance.MatrixConstance; |
| | | import com.matrix.core.exception.GlobleException; |
| | | import com.matrix.core.pojo.PaginationVO; |
| | | import com.matrix.core.tools.DateUtil; |
| | | 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.hive.bean.*; |
| | | import com.matrix.system.hive.dao.*; |
| | | import com.matrix.system.hive.dto.GoodsSealLimitDto; |
| | | import com.matrix.system.hive.dto.MoneyCardOperationDto; |
| | | import com.matrix.system.hive.dto.ProjUseOperationDto; |
| | | import com.matrix.system.hive.dto.SysOrderItemDto; |
| | | import com.matrix.system.hive.plugin.util.CollectionUtils; |
| | | import com.matrix.system.hive.plugin.util.MoneyUtil; |
| | | import com.matrix.system.hive.pojo.CzXkVo; |
| | | import com.matrix.system.hive.service.*; |
| | | import com.matrix.system.score.service.ScoreVipDetailService; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.validation.constraints.NotEmpty; |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | |
| | | @Autowired |
| | | private SysOrderItemDao orderItemDao; |
| | | @Autowired |
| | | private SysProjUseDao sysProjUseDao; |
| | | private SysProjUseService sysProjUseService; |
| | | |
| | | |
| | | @Autowired |
| | | private SysStoreInfoDao storeInfoDao; |
| | | @Autowired |
| | | private CodeService codeService; |
| | | @Autowired |
| | | SysVipInfoDao sysVipInfoDao; |
| | | @Autowired |
| | | SysOutStoreDao sysOutStoreDao; |
| | | SysOutStoreService sysOutStoreService; |
| | | @Autowired |
| | | SysOutStoreItemDao sysOutStoreItemDao; |
| | | @Autowired |
| | |
| | | @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; |
| | | |
| | | @Autowired |
| | | BusParameterSettingsDao parameterSettingsDao; |
| | |
| | | |
| | | /** |
| | | * 已付款订单取消 |
| | | * |
| | | * @param order |
| | | */ |
| | | private void cancelYFKOrder(SysOrder order) { |
| | |
| | | //储值卡退款 |
| | | sysOrderServiceHelper.returnMoneyCardPay(order); |
| | | |
| | | //套餐项目取消 |
| | | List<SysOrderItem> sysOrderItems = orderItemDao.selectByOrderId(order.getId()); |
| | | for (SysOrderItem orderItem : sysOrderItems) { |
| | | // 充值卡类型退款 |
| | |
| | | //删除出库单,恢复库存 |
| | | SysOutStore sysOutStore = new SysOutStore(); |
| | | sysOutStore.setOrderId(order.getId()); |
| | | List<SysOutStore> sysOutStores = sysOutStoreDao.selectByModel(sysOutStore); |
| | | List<SysOutStore> sysOutStores = sysOutStoreService.findByModel(sysOutStore); |
| | | if (sysOutStores.size() == 1) { |
| | | sysOutStore = sysOutStores.get(0); |
| | | List<SysOutStoreItem> outStoreItemList = sysOutStoreItemDao.selectByOrderId(sysOutStore.getId()); |
| | | for (SysOutStoreItem item : outStoreItemList) { |
| | | SysStoreInfo sysStoreInfo = storeInfoDao.selectById(item.getStoreId()); |
| | | sysStoreInfo.setStoreTotal(sysStoreInfo.getStoreTotal() + item.getAmount()); |
| | | //更新库存 |
| | | storeInfoDao.update(sysStoreInfo); |
| | | } |
| | | sysOutStoreDao.deleteById(sysOutStore.getId()); |
| | | sysOutStoreItemDao.deleteByOrderId(sysOutStore.getId()); |
| | | sysOutStoreService.cancelOutStore(sysOutStore.getId()); |
| | | } |
| | | |
| | | // 删除业绩 |
| | | AchieveNew achieveNew = new AchieveNew(); |
| | | achieveNew.setOrderId(order.getId()); |
| | | achieveNewService.removeByModel(achieveNew); |
| | | achieveNewService.removeByOrderId(order.getId()); |
| | | |
| | | // 删除收款记录 |
| | | sysOrderFlowDao.deleteByOrderId(order.getId()); |
| | |
| | | // 取消订单 |
| | | order.setStatu(Dictionary.ORDER_STATU_YQX); |
| | | sysOrderDao.update(order); |
| | | |
| | | //保存单据日志 |
| | | operationLogService.saveOperation(order.getCompanyId(), order.getShopId(), sysUsers.getSuId(), |
| | | OperationFunctionEnum.ORDER, |
| | |
| | | |
| | | /** |
| | | * 待付款订单取消 |
| | | * |
| | | * @param order |
| | | */ |
| | | private void cancelDFKOrder(SysOrder order) { |
| | |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void updateReceiptMoney(SysOrder pageOrder) throws GlobleException { |
| | | public void payOrder(SysOrder pageOrder) throws GlobleException { |
| | | |
| | | //校验订单是否满足收款条件 |
| | | checkOrderAblePay(pageOrder); |
| | | |
| | | // 更新订单主表信息 |
| | | updateOrderInfo(pageOrder); |
| | | |
| | | // 设置用户为成交客户 |
| | | sysVipInfoService.updateDealStatus(pageOrder.getVipId(), BooleanEnum.TRUE.getValue()); |
| | | payEndUpdateOrderInfo(pageOrder); |
| | | |
| | | //添加支付流水 |
| | | sysOrderServiceHelper.addOrderFlow(pageOrder, false); |
| | |
| | | |
| | | // 设置会员充值卡使用情况 |
| | | sysOrderServiceHelper.addMoneyCardUse(pageOrder); |
| | | |
| | | // 改变客户项目套餐使用情况 |
| | | sysOrderServiceHelper.addTaocanProj(pageOrder); |
| | | |
| | |
| | | * |
| | | * @param pageOrder |
| | | */ |
| | | private void updateOrderInfo(SysOrder pageOrder) { |
| | | private void payEndUpdateOrderInfo(SysOrder pageOrder) { |
| | | LogUtil.info("付款更新订单信息 id={}", pageOrder.getId()); |
| | | SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); |
| | | pageOrder.setCashierId(user.getSuId()); |
| | |
| | | |
| | | |
| | | sysOrderDao.update(pageOrder); |
| | | |
| | | |
| | | // 设置用户为成交客户 |
| | | sysVipInfoService.updateDealStatus(pageOrder.getVipId(), BooleanEnum.TRUE.getValue()); |
| | | } |
| | | |
| | | /** |
| | | * 检查订单是否满足支付条件 |
| | | * |
| | | * @param pageOrder |
| | | */ |
| | | private void checkOrderAblePay(SysOrder pageOrder) { |
| | |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public SysOrder updateAddCardMoney(CzXkVo czVo) { |
| | | SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); |
| | | |
| | | // SysVipInfo vip = (SysVipInfo) WebUtil.getSession().getAttribute(SystemConstance.CURRENT_CUSTOMER); |
| | | // czVo.setVipId(vip.getId()); |
| | | |
| | | //更新会员会员卡金额 |
| | | MoneyCardUse cardUser = moneyCardUseDao.selectVipCard(czVo.getVipId()); |
| | | cardUser.setRealMoney(MoneyUtil.add(cardUser.getRealMoney(), czVo.getBjmoney())); |
| | | cardUser.setGiftMoney(MoneyUtil.add(cardUser.getGiftMoney(), czVo.getGiftMoney())); |
| | | moneyCardUseDao.update(cardUser); |
| | | |
| | | |
| | | // 为会员新增积分 |
| | | SysVipInfo vipInfo = sysVipInfoDao.selectById(cardUser.getVipId()); |
| | | vipInfo.setPointAll(vipInfo.getPointAll() == null ? 0 : vipInfo.getPointAll() + czVo.getJf()); |
| | | sysVipInfoDao.update(vipInfo); |
| | | |
| | | public SysOrder moneyCardCz(CzXkVo czVo) { |
| | | |
| | | // 新增一个充值订单 |
| | | SysOrder order = new SysOrder(); |
| | | order.setArrears(0D); |
| | | order.setTotal(czVo.getBjmoney()); |
| | | order.setZkTotal(czVo.getBjmoney()); |
| | | order.setCashPay(czVo.getBjmoney()); |
| | | order.setShopId(user.getShopId()); |
| | | order.setOrderNo(codeService.getOrderCode()); |
| | | order.setVipId(czVo.getVipId()); |
| | | Date orderTime = new Date(); |
| | | if (StringUtils.isNotBlank(czVo.getDateTime())) { |
| | | orderTime = DateUtil.stringToDateNew(czVo.getDateTime(), DateUtil.DATE_FORMAT_DD); |
| | | } |
| | | order.setOrderTime(orderTime); |
| | | order.setPayTime(orderTime); |
| | | order.setRemark(cardUser.getCardName()); |
| | | order.setStaffId(user.getSuId()); |
| | | order.setIsCross(2 + ""); |
| | | order.setOrderType(SysOrder.ORDER_TYPE_SEAL); |
| | | order.setStatu(Dictionary.ORDER_STATU_YFK); |
| | | order.setCompanyId(user.getCompanyId()); |
| | | sysOrderDao.insert(order); |
| | | SysOrder order = sysOrderServiceHelper.createCzOrder(czVo); |
| | | |
| | | SysOrderItem orderItem = new SysOrderItem(); |
| | | orderItem.setOrderId(order.getId()); |
| | | orderItem.setOrderNo(order.getOrderNo()); |
| | | orderItem.setArrears(0D); |
| | | ShoppingGoods shoppingGoods = shoppingGoodsDao.selectVipCzGoods(); |
| | | orderItem.setGoodsId(shoppingGoods.getId()); |
| | | orderItem.setPayMethod(Dictionary.PAY_TYPE_MOENY); |
| | | orderItem.setCashPay(czVo.getBjmoney()); |
| | | orderItem.setZkPrice(czVo.getBjmoney()); |
| | | orderItem.setCardPay(0D); |
| | | orderItem.setType(Dictionary.SHOPPING_GOODS_TYPE_CZK); |
| | | orderItem.setCount(1); |
| | | orderItem.setIsFree(Dictionary.FLAG_NO); |
| | | orderItem.setPrice(czVo.getBjmoney()); |
| | | orderItem.setStatus(Dictionary.ORDER_STATU_YFK); |
| | | orderItem.setAchieveList(czVo.getAchaeveList()); |
| | | orderItem.setShoppingGoods(shoppingGoods); |
| | | orderItemDao.insert(orderItem); |
| | | List<SysOrderItem> items = new ArrayList<>(); |
| | | items.add(orderItem); |
| | | order.setItems(items); |
| | | //新增会员卡金额 |
| | | MoneyCardUse cardUser = moneyCardUseDao.selectVipCard(czVo.getVipId()); |
| | | MoneyCardOperationDto moneyCardOperationDto = new MoneyCardOperationDto(); |
| | | moneyCardOperationDto.setRealMoney(czVo.getBjmoney()); |
| | | moneyCardOperationDto.setGiftMoney(czVo.getGiftMoney()); |
| | | moneyCardOperationDto.setCarUseId(cardUser.getId()); |
| | | moneyCardOperationDto.setOrderId(order.getId()); |
| | | moneyCardOperationDto.setOrderNo(order.getOrderNo()); |
| | | moneyCardOperationDto.setType(MoneyCardUseFlow.USE_TYPE_CZ); |
| | | |
| | | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); |
| | | moneyCardOperationDto.setUpdateUser(user.getSuId()); |
| | | moneyCardUseService.changeMoneyCard(Arrays.asList(moneyCardOperationDto)); |
| | | |
| | | //设置卡项使用流水 |
| | | MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow(); |
| | | moneyCardUseFlow.setTotal(czVo.getBjmoney()); |
| | | moneyCardUseFlow.setGiftMoney(czVo.getGiftMoney()); |
| | | moneyCardUseFlow.setCarUseId(czVo.getCardId()); |
| | | moneyCardUseFlow.setVipId(czVo.getVipId()); |
| | | moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CZ); |
| | | moneyCardUseFlow.setOrderNo(order.getOrderNo()); |
| | | moneyCardUseFlow.setCreateTime(new Date()); |
| | | moneyCardUseFlow.setOperationId(user.getSuId()); |
| | | moneyCardUseFlow.setBalance(cardUser.getGiftMoney() + cardUser.getRealMoney()); |
| | | moneyCardUseFlow.setCarUseId(cardUser.getId()); |
| | | moneyCardUseFlowDao.insert(moneyCardUseFlow); |
| | | // 更新订单主表信息 |
| | | payEndUpdateOrderInfo(order); |
| | | |
| | | order.setFlows(czVo.getFlows()); |
| | | |
| | | //添加支付流水 |
| | | sysOrderServiceHelper.addOrderFlow(order, false); |
| | | |
| | | // 添加员工业绩 |
| | | // 设置业绩 |
| | | achieveNewService.addAchaeveByOrder(order); |
| | | |
| | | //设置会员积分 |
| | | sysOrderServiceHelper.addVipScore(order); |
| | | |
| | | return order; |
| | | |
| | |
| | | return sysOrderDao.selectShopAchieveRanking(sysOrder); |
| | | } |
| | | |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | | public void refundOrderMoney(SysOrder sysOrder) { |
| | | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); |
| | | public void orderTk(SysOrder sysOrder) { |
| | | |
| | | //原订单设置为退款状态 |
| | | SysOrder sourceOrder = new SysOrder(); |
| | | sourceOrder.setId(sysOrder.getOldOrderId()); |
| | | sourceOrder.setIsHasRefund(SysOrder.IS_HAS_REFUND_Y); |
| | | // sourceOrder.setStatu(Dictionary.ORDER_STATU_TK); |
| | | sysOrderDao.update(sourceOrder); |
| | | SysOrder oldOrder = sysOrderDao.selectById(sysOrder.getOldOrderId()); |
| | | |
| | | sysOrder.setId(null); |
| | | sysOrder.setStaffId(user.getSuId()); |
| | | sysOrder.setCompanyId(user.getCompanyId()); |
| | | sysOrder.setShopId(user.getShopId()); |
| | | sysOrder.setOrderType(SysOrder.ORDER_TYPE_REFUND); |
| | | sysOrder.setStatu(Dictionary.ORDER_STATU_YFK); |
| | | Date now = new Date(); |
| | | sysOrder.setOrderTime(now); |
| | | sysOrder.setPayTime(now); |
| | | 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); |
| | | } |
| | | |
| | | |
| | | //创建并保存退款订单 |
| | | sysOrder = sysOrderServiceHelper.createTkOrder(sysOrder); |
| | | // 添加订单收款流水 |
| | | sysOrderServiceHelper.addOrderFlow(sysOrder, false); |
| | | //退款退套餐退项目 |
| | | refundProjUse(sysOrder); |
| | | //删除积分 |
| | | SysOrder oldOrder = sysOrderDao.selectById(sysOrder.getOldOrderId()); |
| | | scoreVipDetailService.removeByBusinessId(oldOrder.getVipId(), oldOrder.getId()); |
| | | |
| | | // 设置业绩 |
| | | achieveNewService.addAchaeveByOrder(sysOrder); |
| | | |
| | | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); |
| | | //保存单据日志 |
| | | operationLogService.saveOperation(sysOrder.getCompanyId(), sysOrder.getShopId(), user.getSuId(), |
| | | OperationFunctionEnum.ORDER, |
| | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 退款退项目,套餐,卡项 |
| | | * |
| | | * @param sysOrder |
| | | */ |
| | | private void refundProjUse(SysOrder sysOrder) { |
| | | |
| | | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); |
| | | |
| | | //记录需要退库存的产品 |
| | | List<SysOrderItem> returnGoodsList = new ArrayList<>(); |
| | | //需要退的套餐和项目 |
| | | List<ProjUseOperationDto> projUseDtoList = Lists.newArrayList(); |
| | | //需要退的储值卡 |
| | | List<MoneyCardOperationDto> moneyCardOperationDtos = Lists.newArrayList(); |
| | | |
| | | for (SysOrderItem item : sysOrder.getItems()) { |
| | | |
| | | SysProjUse queryProjUse = new SysProjUse(); |
| | | 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()) && Dictionary.FLAG_YES_Y.equals(item.getIsReturnStore())) { |
| | | |
| | | if (Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(item.getType())) { |
| | | if (Dictionary.FLAG_YES_Y.equals(item.getIsReturnStore())) { |
| | | returnGoodsList.add(item); |
| | | } |
| | | } else { |
| | | SysProjUse sysProjUse = sysProjUseDao.selectByModel(queryProjUse).get(0); |
| | | returnGoodsList.add(item); |
| | | |
| | | int sub = sysProjUse.getSurplusCount() - item.getCount(); |
| | | 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); |
| | | sysProjUseFlow.setUpdateBy(user.getSuName()); |
| | | sysProjUseFlow.setCreateBy(user.getSuName()); |
| | | sysProjUseDao.insertFlow(sysProjUseFlow); |
| | | } |
| | | } else if (Dictionary.SHOPPING_GOODS_TYPE_TC.equals(item.getType()) |
| | | || Dictionary.SHOPPING_GOODS_TYPE_XM.equals(item.getType())) { |
| | | ProjUseOperationDto dto = new ProjUseOperationDto(); |
| | | dto.setGoodsId(item.getGoodsId()); |
| | | dto.setCount(item.getRefundCount()); |
| | | dto.setOrderItemId(item.getOldItemId()); |
| | | dto.setUpdateUserId(user.getSuId()); |
| | | projUseDtoList.add(dto); |
| | | |
| | | }else if (Dictionary.SHOPPING_GOODS_TYPE_CZK.equals(item.getType())) { |
| | | MoneyCardOperationDto moneyCardOperationDto = new MoneyCardOperationDto(); |
| | | moneyCardOperationDto.setOrderId(sysOrder.getId()); |
| | | moneyCardOperationDto.setOrderNo(sysOrder.getOrderNo()); |
| | | moneyCardOperationDto.setOrderItemId(item.getOldItemId()); |
| | | moneyCardOperationDto.setType(MoneyCardUseFlow.USE_TYPE_ORDRE_TK); |
| | | moneyCardOperationDto.setUpdateUser(user.getSuId()); |
| | | moneyCardOperationDto.setOrderNo(sysOrder.getOrderNo()); |
| | | moneyCardOperationDto.setRealMoney(item.getZkPrice()); |
| | | moneyCardOperationDtos.add(moneyCardOperationDto); |
| | | } |
| | | |
| | | if (Dictionary.SHOPPING_GOODS_TYPE_TC.equals(item.getType())) { |
| | | queryProjUse.setTaocanId(-1L); |
| | | List<SysProjUse> sysProjUses = sysProjUseDao.selectByModel(queryProjUse); |
| | | |
| | | |
| | | for (int i = 0; i < sysProjUses.size(); 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.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); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | ShoppingGoods goods = shoppingGoodsDao.selectById(item.getGoodsId()); |
| | | goods.setRealSealCount(goods.getRealSealCount() - item.getCount()); |
| | | shoppingGoodsDao.update(goods); |
| | | } |
| | | |
| | | BusParameterSettings manageStockSetting = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WAREHOUSE_MANAGE_STOCK, sysOrder.getCompanyId()); |
| | | if (AppConstance.IS_Y.equals(manageStockSetting.getParamValue())) { |
| | | // if (AppConstance.IS_Y.equals(manageStockSetting.getParamValue())) { |
| | | if (BooleanEnum.TRUE.getValue() == manageStockSetting.getIntParamValue()) { |
| | | // 家居产品退库存 |
| | | if (CollectionUtils.isNotEmpty(returnGoodsList)) { |
| | | refundInstore(returnGoodsList); |
| | | LogUtil.info("订单退款:退产品库存:{}", JSON.toJSONString(returnGoodsList)); |
| | | sysOrderServiceHelper.refundInstore(returnGoodsList); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 退款入库 |
| | | */ |
| | | 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); |
| | | |
| | | if(CollUtil.isNotEmpty(projUseDtoList)){ |
| | | LogUtil.info("订单退款:退套餐项目:{}", JSON.toJSONString(projUseDtoList)); |
| | | sysProjUseService.projectTk(projUseDtoList); |
| | | } |
| | | instoreInfo.setSumall(total); |
| | | sysInstoreInfoDao.update(instoreInfo); |
| | | sysInstoreDetailDao.batchInsert(instoreDetails); |
| | | |
| | | sysInstoreInfoService.check(instoreInfo); |
| | | if(CollUtil.isNotEmpty(moneyCardOperationDtos)){ |
| | | LogUtil.info("订单退款:储值卡:{}", JSON.toJSONString(moneyCardOperationDtos)); |
| | | moneyCardUseService.moneyCardTk(moneyCardOperationDtos); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | | public BigDecimal findVipArrearsByVipId(Long vipId) { |
| | | return sysOrderDao.selectArrearsByVipId(vipId); |