From f83b62252df79afbfa19f4cf1be0487d9e37a123 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 05 May 2022 18:48:09 +0800 Subject: [PATCH] 20220505 --- zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 261 ++++++++++++++++------------------------------------ 1 files changed, 80 insertions(+), 181 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 bd48315..19b45ec 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 @@ -1,17 +1,17 @@ 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.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; @@ -29,12 +29,14 @@ 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.MoneyCardPayDto; +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.padApi.dto.PadOrderListDto; +import com.matrix.system.padApi.vo.PadOrderDetailVo; import com.matrix.system.score.service.ScoreVipDetailService; import com.matrix.system.shopXcx.mqTask.AsyncMessageRouting; import com.matrix.system.wechart.templateMsg.UniformMsgParam; @@ -42,7 +44,6 @@ 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; @@ -57,14 +58,8 @@ @Autowired private SysOrderItemDao orderItemDao; @Autowired - private SysProjUseDao sysProjUseDao; private SysProjUseService sysProjUseService; - - @Autowired - private SysStoreInfoDao storeInfoDao; - @Autowired - private CodeService codeService; @Autowired SysVipInfoDao sysVipInfoDao; @Autowired @@ -104,26 +99,12 @@ @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; @@ -153,7 +134,7 @@ if (Objects.isNull(sysOrder.getId())) { LogUtil.info("新增正向订单"); - return sysOrderServiceHelper.saveOrder(sysOrder,SysOrder.ORDER_TYPE_SEAL); + return sysOrderServiceHelper.saveOrder(sysOrder); } else { LogUtil.info("修改订单"); return sysOrderServiceHelper.modifyOrder(sysOrder); @@ -185,6 +166,7 @@ /** * 已付款订单取消 + * * @param order */ private void cancelYFKOrder(SysOrder order) { @@ -247,6 +229,7 @@ /** * 待付款订单取消 + * * @param order */ private void cancelDFKOrder(SysOrder order) { @@ -293,7 +276,6 @@ // 设置会员充值卡使用情况 sysOrderServiceHelper.addMoneyCardUse(pageOrder); - // 改变客户项目套餐使用情况 sysOrderServiceHelper.addTaocanProj(pageOrder); @@ -376,6 +358,7 @@ /** * 检查订单是否满足支付条件 + * * @param pageOrder */ private void checkOrderAblePay(SysOrder pageOrder) { @@ -489,18 +472,21 @@ public SysOrder moneyCardCz(CzXkVo czVo) { // 新增一个充值订单 - SysOrder order =sysOrderServiceHelper.createCzOrder(czVo); + SysOrder order = sysOrderServiceHelper.createCzOrder(czVo); //新增会员卡金额 MoneyCardUse cardUser = moneyCardUseDao.selectVipCard(czVo.getVipId()); - MoneyCardPayDto moneyCardPayDto=new MoneyCardPayDto(); - moneyCardPayDto.setRealMoney(MoneyUtil.add(cardUser.getRealMoney(), czVo.getBjmoney())); - moneyCardPayDto.setGiftMoney(MoneyUtil.add(cardUser.getGiftMoney(), czVo.getGiftMoney())); - moneyCardPayDto.setCarUseId(cardUser.getId()); - moneyCardPayDto.setOrderId(order.getId()); - moneyCardPayDto.setOrderNo(order.getOrderNo()); - moneyCardPayDto.setType(MoneyCardUseFlow.USE_TYPE_CZ); - moneyCardUseService.changeMoneyCard(Arrays.asList(moneyCardPayDto)); + 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)); // 更新订单主表信息 payEndUpdateOrderInfo(order); @@ -530,8 +516,18 @@ } @Override + public List<PadOrderDetailVo> findPadApiOrderListInPage(PadOrderListDto orderListDto, PaginationVO pageVo) { + return sysOrderDao.selectPadApiOrderListInPage(orderListDto, pageVo); + } + + @Override public int findApiOrderListTotal(OrderListDto orderListDto) { return sysOrderDao.selectApiOrderListTotal(orderListDto); + } + + @Override + public int findPadApiOrderListTotal(PadOrderListDto orderListDto) { + return sysOrderDao.selectPadApiOrderListTotal(orderListDto); } @Override @@ -559,56 +555,25 @@ 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); - 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, @@ -618,142 +583,76 @@ sysOrder.getVipId()); } + /** * 退款退项目,套餐,卡项 * * @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); -- Gitblit v1.9.1