From 63f6bdb2c401fa7d2d853ef08da7c926a991485c Mon Sep 17 00:00:00 2001 From: Yen Date: Thu, 28 Sep 2023 16:53:23 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BmsSupplierAddressController.java | 4 +- .../oms/controller/OmsOrderController.java | 17 ++++ .../qs/serve/modules/oms/entity/OmsOrder.java | 4 + .../modules/oms/entity/OmsOrderItem.java | 5 + .../oms/entity/bo/OmsSpuAssesInfoBo.java | 25 +++++ .../oms/entity/vo/OmsConfirmOrderResult.java | 6 ++ .../oms/entity/vo/OmsSpuAssesInfo.java | 16 ++++ .../modules/oms/service/OmsOrderService.java | 11 ++- .../oms/service/impl/OmsOrderServiceImpl.java | 91 ++++++++++++++++--- .../modules/tbs/common/util/QuarterUtil.java | 26 +++++- .../impl/VtbVerificationServiceImpl.java | 30 ++++++ 11 files changed, 217 insertions(+), 18 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/oms/entity/bo/OmsSpuAssesInfoBo.java create mode 100644 src/main/java/com/qs/serve/modules/oms/entity/vo/OmsSpuAssesInfo.java diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierAddressController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierAddressController.java index f291fb07..5cca733f 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierAddressController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierAddressController.java @@ -93,8 +93,8 @@ public class BmsSupplierAddressController { }else { param.setDefaultFlag(0); } - boolean result = bmsSupplierAddressService.save(param); - return R.isTrue(result); + bmsSupplierAddressService.save(param); + return R.ok(param); } /** diff --git a/src/main/java/com/qs/serve/modules/oms/controller/OmsOrderController.java b/src/main/java/com/qs/serve/modules/oms/controller/OmsOrderController.java index a8ad3f64..1c79ad03 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/OmsOrderController.java +++ b/src/main/java/com/qs/serve/modules/oms/controller/OmsOrderController.java @@ -8,8 +8,12 @@ import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.PageUtil; +import com.qs.serve.modules.oms.entity.OmsOrderItem; import com.qs.serve.modules.oms.entity.bo.OmsCheckParam; +import com.qs.serve.modules.oms.entity.bo.OmsSpuAssesInfoBo; import com.qs.serve.modules.oms.entity.bo.OmsUrgentParam; +import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; +import com.qs.serve.modules.oms.service.OmsOrderItemService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -21,6 +25,8 @@ import com.qs.serve.modules.oms.service.OmsOrderService; import javax.validation.Valid; import java.time.LocalDateTime; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 订单模块 订单 @@ -34,6 +40,7 @@ import java.util.List; public class OmsOrderController { private OmsOrderService omsOrderService; + private OmsOrderItemService omsOrderItemService; /** * 翻页 @@ -121,5 +128,15 @@ public class OmsOrderController { return R.error("当前状态无法删除"); } + /** + * 预估信息 + * @param param + * @return + */ + @PostMapping("/assess") + public R> getSpuAssess(@Valid @RequestBody OmsSpuAssesInfoBo param){ + return R.ok(omsOrderService.getSpuAssess(param)); + } + } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java index 434423f5..27d1916d 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java @@ -36,6 +36,9 @@ public class OmsOrder implements Serializable { @TableField(condition = SqlCondition.LIKE) private String orderSn; + /** 订单类型:0->普通订单 */ + private Integer orderType; + /** 供应商ID */ @NotNull(message = "供应商ID不能为空") private Long supplierId; @@ -154,5 +157,6 @@ public class OmsOrder implements Serializable { @TableField(exist = false) private Object checkUserInfo; + } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java index e897526f..88587d93 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.oms.entity; import java.math.BigDecimal; import java.time.LocalDateTime; import java.io.Serializable; +import java.util.List; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; @@ -113,5 +114,9 @@ public class OmsOrderItem implements Serializable { @TableField(fill = FieldFill.UPDATE) private String updateBy; + /** 评估数量列表 */ + @TableField(exist = false) + private List assessInfoList; + } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsSpuAssesInfoBo.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsSpuAssesInfoBo.java new file mode 100644 index 00000000..3921252a --- /dev/null +++ b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsSpuAssesInfoBo.java @@ -0,0 +1,25 @@ +package com.qs.serve.modules.oms.entity.bo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; +import java.util.List; +/** + * @author YenHex + * @since 2023/9/28 + */ +@Data +public class OmsSpuAssesInfoBo { + + /** 年 */ + private Integer yearNum; + + /** 月 */ + private Integer monthNum; + + /** 供应商ID */ + private String supplierId; + + /** spuId列表 */ + private List spuIds; + +} diff --git a/src/main/java/com/qs/serve/modules/oms/entity/vo/OmsConfirmOrderResult.java b/src/main/java/com/qs/serve/modules/oms/entity/vo/OmsConfirmOrderResult.java index c9aa2156..62bd4f19 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/vo/OmsConfirmOrderResult.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/vo/OmsConfirmOrderResult.java @@ -21,6 +21,8 @@ public class OmsConfirmOrderResult { private BmsSupplier supplier; + private Integer orderType; + /** 购物车列表 */ private List shoppingCarts; @@ -33,4 +35,8 @@ public class OmsConfirmOrderResult { @JsonIgnore private ShoppingCartsCheckResult cartsCheckResult; + /** 维度来源 sku、spu */ + @JsonIgnore + private String latitudeFrom; + } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/vo/OmsSpuAssesInfo.java b/src/main/java/com/qs/serve/modules/oms/entity/vo/OmsSpuAssesInfo.java new file mode 100644 index 00000000..dff240e8 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/oms/entity/vo/OmsSpuAssesInfo.java @@ -0,0 +1,16 @@ +package com.qs.serve.modules.oms.entity.vo; + +import lombok.Data; + +/** + * @author YenHex + * @since 2023/9/28 + */ +@Data +public class OmsSpuAssesInfo { + + private Long spuId; + + private Integer num; + +} diff --git a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java index 739906b5..8a76ebf7 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java +++ b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java @@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.modules.oms.entity.OmsOrder; import com.qs.serve.modules.oms.entity.bo.OmsOrderBo; import com.qs.serve.modules.oms.entity.bo.OmsOrderPcBo; +import com.qs.serve.modules.oms.entity.bo.OmsSpuAssesInfoBo; import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; - +import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; +import java.util.List; /** * 订单 服务接口 * @author YenHex @@ -43,5 +45,12 @@ public interface OmsOrderService extends IService { */ OmsOrder createOrderPc(OmsOrderPcBo omsOrderBo); + /** + * 获取spu预估信息 + * @param param + * @return + */ + List getSpuAssess(OmsSpuAssesInfoBo param); + } diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java index ac00bfaa..c38a0944 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java @@ -1,5 +1,6 @@ package com.qs.serve.modules.oms.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.util.*; @@ -17,11 +18,17 @@ import com.qs.serve.modules.oms.entity.bo.CreateOrderParam; import com.qs.serve.modules.oms.entity.bo.OmsOrderBo; import com.qs.serve.modules.oms.entity.bo.OmsOrderBo.*; import com.qs.serve.modules.oms.entity.bo.OmsOrderPcBo; +import com.qs.serve.modules.oms.entity.bo.OmsSpuAssesInfoBo; import com.qs.serve.modules.oms.entity.dto.OmsCalcAmount; import com.qs.serve.modules.oms.entity.dto.ShoppingCartsCheckResult; import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; +import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; import com.qs.serve.modules.oms.service.OmsOrderItemService; import com.qs.serve.modules.oms.service.OmsShoppingCartService; +import com.qs.serve.modules.sale.entity.SalePlan; +import com.qs.serve.modules.sale.entity.SalePlanGoods; +import com.qs.serve.modules.sale.mapper.SalePlanGoodsMapper; +import com.qs.serve.modules.sale.mapper.SalePlanMapper; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysUserService; import lombok.AllArgsConstructor; @@ -34,9 +41,7 @@ import com.qs.serve.modules.oms.mapper.OmsOrderMapper; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -55,6 +60,8 @@ public class OmsOrderServiceImpl extends ServiceImpl im private BmsSupplierAddressService bmsSupplierAddressService; private SysUserService sysUserService; private OmsOrderItemService omsOrderItemService; + private SalePlanMapper salePlanMapper; + private SalePlanGoodsMapper salePlanGoodsMapper; @Override @@ -98,6 +105,7 @@ public class OmsOrderServiceImpl extends ServiceImpl im BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getDefault(Long.parseLong(supplier.getId())); OmsConfirmOrderResult confirmOrderResult = new OmsConfirmOrderResult(); confirmOrderResult.setSupplier(supplier); + confirmOrderResult.setOrderType(confirmOrder.getOrderType()); confirmOrderResult.setShoppingCarts(shoppingCarts); confirmOrderResult.setDefaultAddress(supplierAddress); confirmOrderResult.setAmountInfo(calcAmount); @@ -150,6 +158,7 @@ public class OmsOrderServiceImpl extends ServiceImpl im confirmOrderResult.setDefaultAddress(supplierAddress); confirmOrderResult.setAmountInfo(calcAmount); confirmOrderResult.setShoppingCarts(shoppingCartList); + confirmOrderResult.setOrderType(confirmOrder.getOrderType()); return confirmOrderResult; } @@ -157,14 +166,17 @@ public class OmsOrderServiceImpl extends ServiceImpl im @Transactional(rollbackFor = Exception.class) public OmsOrder createOrder(OmsOrderBo omsOrderBo) { OmsConfirmOrderResult confirmOrder = this.confirmOrder(omsOrderBo); + confirmOrder.setLatitudeFrom("SKU"); CreateOrderParam createOrderParam = omsOrderBo.getCreateOrderParam(); return this.buildOmsOrder(confirmOrder, createOrderParam); } @Override + @Transactional(rollbackFor = Exception.class) public OmsOrder createOrderPc(OmsOrderPcBo omsOrderBo) { OmsConfirmOrderResult confirmOrder = this.confirmOrderPc(omsOrderBo); + confirmOrder.setLatitudeFrom("SPU"); CreateOrderParam createOrderParam = omsOrderBo.getCreateOrderParam(); return this.buildOmsOrder(confirmOrder, createOrderParam); } @@ -180,6 +192,7 @@ public class OmsOrderServiceImpl extends ServiceImpl im List shoppingCarts = confirmOrder.getShoppingCarts(); OmsOrder order = new OmsOrder(); order.setOrderSn("SN"+CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder)); + order.setOrderType(confirmOrder.getOrderType()); order.setSupplierId(Long.parseLong(supplier.getId())); order.setSupplierCode(supplier.getCode()); order.setSupplierName(supplier.getName()); @@ -195,27 +208,43 @@ public class OmsOrderServiceImpl extends ServiceImpl im this.save(order); List orderItems = new ArrayList<>(); for (OmsShoppingCart shoppingCart : shoppingCarts) { - GoodSkuVo goodSkuVo = shoppingCart.getGoodSkuVo(); OmsOrderItem orderItem = new OmsOrderItem(); orderItem.setOrderId(order.getId()); orderItem.setOrderSn(order.getOrderSn()); - orderItem.setSpuId(goodSkuVo.getSpuId()); - orderItem.setSpuCode(goodSkuVo.getSpuCode()); - orderItem.setSpuTitle(goodSkuVo.getName()); - orderItem.setSkuId(goodSkuVo.getId()); - orderItem.setSkuCode(goodSkuVo.getSkuCode()); - orderItem.setSkuUnit(goodSkuVo.getUnitName()); - orderItem.setSkuImg(goodSkuVo.getPicUrl()); - orderItem.setSpecValues(goodSkuVo.getSpecInfos()); + if(confirmOrder.getLatitudeFrom()!=null&&confirmOrder.getLatitudeFrom().equals("SPU")){ + // spu维度 + orderItem.setSpuId(shoppingCart.getSpuId()); + orderItem.setSpuCode(shoppingCart.getSpuCode()); + orderItem.setSpuTitle(shoppingCart.getSpecInfo()); + orderItem.setSkuId(shoppingCart.getId()); + orderItem.setSkuCode(shoppingCart.getSkuCode()); + orderItem.setSkuUnit(null); + orderItem.setSkuImg(shoppingCart.getPicUrl()); + orderItem.setSpecValues(shoppingCart.getSpecInfo()); + orderItem.setMarketPrice(BigDecimal.ZERO); + orderItem.setSalesPrice(BigDecimal.ZERO); + }else { + // 默认sku + GoodSkuVo goodSkuVo = shoppingCart.getGoodSkuVo(); + orderItem.setSpuId(goodSkuVo.getSpuId()); + orderItem.setSpuCode(goodSkuVo.getSpuCode()); + orderItem.setSpuTitle(goodSkuVo.getName()); + orderItem.setSkuId(goodSkuVo.getId()); + orderItem.setSkuCode(goodSkuVo.getSkuCode()); + orderItem.setSkuUnit(goodSkuVo.getUnitName()); + orderItem.setSkuImg(goodSkuVo.getPicUrl()); + orderItem.setSpecValues(goodSkuVo.getSpecInfos()); + orderItem.setMarketPrice(goodSkuVo.getMarketPrice()); + orderItem.setSalesPrice(goodSkuVo.getSalesPrice()); + } orderItem.setQuantity(shoppingCart.getQuantity()); - orderItem.setMarketPrice(goodSkuVo.getMarketPrice()); - orderItem.setSalesPrice(goodSkuVo.getSalesPrice()); orderItem.setCusPrice(shoppingCart.getSupplierSalesPrice()); orderItems.add(orderItem); } omsOrderItemService.saveBatch(orderItems); //清空勾选的购物车 List cartIds = confirmOrder.getShoppingCarts().stream() + .filter(a->a.getId()!=null) .map(OmsShoppingCart::getId).collect(Collectors.toList()); if(CollectionUtil.isNotEmpty(cartIds)){ omsShoppingCartService.removeBatchByIds(cartIds); @@ -223,5 +252,39 @@ public class OmsOrderServiceImpl extends ServiceImpl im return order; } + + @Override + public List getSpuAssess(OmsSpuAssesInfoBo param) { + List spuIds = param.getSpuIds(); + Integer year = param.getYearNum(); + Integer month = param.getMonthNum(); + String supplierId = param.getSupplierId(); + LambdaQueryWrapper spLqw = new LambdaQueryWrapper<>(); + spLqw.eq(SalePlan::getYearNum,year); + spLqw.eq(SalePlan::getMonthNum,month); + spLqw.eq(SalePlan::getSupplierId,supplierId); + spLqw.eq(SalePlan::getPlanState,1); + List salePlanList = salePlanMapper.selectList(spLqw); + Map spuIdAndSum = new HashMap<>(); + if(salePlanList.size()>0){ + List spIds = salePlanList.stream().map(SalePlan::getId).collect(Collectors.toList()); + LambdaQueryWrapper spgLqw = new LambdaQueryWrapper<>(); + spgLqw.eq(SalePlanGoods::getPlanId,spIds); + spgLqw.in(SalePlanGoods::getTargetId,spuIds); + List salePlanGoodsList = salePlanGoodsMapper.selectList(spgLqw); + for (SalePlanGoods planGoods : salePlanGoodsList) { + spuIdAndSum.merge(planGoods.getTargetId(), planGoods.getQty(), Integer::sum); + } + } + List spuAssesInfoList = new ArrayList<>(); + for (Long spuId : spuIds) { + OmsSpuAssesInfo assesInfo = new OmsSpuAssesInfo(); + assesInfo.setSpuId(spuId); + Integer sum = spuIdAndSum.get(spuId); + assesInfo.setNum(sum==null?0:sum); + spuAssesInfoList.add(assesInfo); + } + return spuAssesInfoList; + } } diff --git a/src/main/java/com/qs/serve/modules/tbs/common/util/QuarterUtil.java b/src/main/java/com/qs/serve/modules/tbs/common/util/QuarterUtil.java index 06c17795..44c11606 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/util/QuarterUtil.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/util/QuarterUtil.java @@ -16,7 +16,13 @@ public class QuarterUtil { public static final List q3 = Arrays.asList(7,8,9); public static final List q4 = Arrays.asList(10,11,12); - public static final List getQuarterNumbers(Integer year,Integer month){ + /** + * 获取季度月份 + * @param year + * @param month + * @return + */ + public static List getQuarterNumbers(Integer year,Integer month){ Integer year100 = year*100; if(q1.contains(month)){ return q1.stream().map(a->year100+a).collect(Collectors.toList()); @@ -30,4 +36,22 @@ public class QuarterUtil { return null; } + /** + * 返回第几季度 + * @param month + * @return + */ + public static Integer getQuarterNumber(Integer month){ + if(q1.contains(month)){ + return 1; + }else if(q2.contains(month)){ + return 2; + }else if(q3.contains(month)){ + return 3; + }else if(q4.contains(month)){ + return 4; + } + return null; + } + } diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java index 0a00fc95..dc7a6e48 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java @@ -32,6 +32,7 @@ import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tbs.common.TbsActivityState; import com.qs.serve.modules.tbs.common.TbsCostApplyState; import com.qs.serve.modules.tbs.common.TbsSeeYonConst; +import com.qs.serve.modules.tbs.common.util.QuarterUtil; import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil; import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.bo.TbsActivityReopenBo; @@ -823,6 +824,35 @@ public class VtbVerificationServiceImpl extends ServiceImpl costPercentLambdaQueryWrapper = new LambdaQueryWrapper<>(); +// costPercentLambdaQueryWrapper.eq(TbsCostPercent::getCostApplyId, activity.getCostApplyId()); +// List costPercentList = costPercentMapper.selectList(costPercentLambdaQueryWrapper); +// if(costPercentList.size()>0){ +// TbsCostPercent costPercent = costPercentList.get(0); +// data.put("ytdCusExpenseRate",costPercent.getYtdCustomerPercent()); +// data.put("ytdEmpExpenseRate",costPercent.getYtdUserPercent()); +// data.put("ytdAdminiExpenseRate",costPercent.getYtdRegionPercent()); +// data.put("ytdSalesExpenseRate",costPercent.getYtdRegion2Percent()); +// data.put("cusExpenseRate",costPercent.getQtdCustomerPercent()); +// data.put("empExpenseRate",costPercent.getQtdUserPercent()); +// data.put("salesExpenseRate",costPercent.getQtdRegionPercent()); +// data.put("adminiExpenseRate",costPercent.getQtdRegion2Percent()); +// data.put("budgetExpenseRate",costPercent.getQtdBudgetPercent()); +// data.put("ytdBudgetExpenseRate",costPercent.getYtdBudgetPercent()); +// } //读取费费率 TbsCostApply tbsCostApply = costApplyService.getById(activity.getCostApplyId()); costApplyService.buildMainData4ROI(tbsCostApply,data);