From 31bd3cc97df18aeb910c8253868b75269d79ad93 Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 4 Dec 2023 10:04:00 +0800 Subject: [PATCH] =?UTF-8?q?sku=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../goods/controller/GoodsSkuController.java | 86 +++++++++++++++++-- .../goods/entity/bo/GoodsSkuImportBo.java | 12 ++- .../goods/service/GoodsSpuService.java | 2 + .../service/impl/GoodsSpuServiceImpl.java | 18 +++- 4 files changed, 104 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java index b2f4d3bf..b7c54a21 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java @@ -9,12 +9,14 @@ import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.PageUtil; import com.qs.serve.modules.goods.entity.GoodsSkuSpecValue; +import com.qs.serve.modules.goods.entity.GoodsSpu; import com.qs.serve.modules.goods.entity.bo.GoodsSkuBo; import com.qs.serve.modules.goods.entity.bo.GoodsSkuImportBo; import com.qs.serve.modules.goods.entity.bo.GoodsSpuImportBo; import com.qs.serve.modules.goods.entity.vo.GoodSkuVo; import com.qs.serve.modules.goods.entity.vo.GoodsSkuSpecValueVo; import com.qs.serve.modules.goods.service.GoodsSkuSpecValueService; +import com.qs.serve.modules.goods.service.GoodsSpuService; import com.qs.serve.modules.sale.entity.SalePlanGoods; import com.qs.serve.modules.sale.service.SalePlanGoodsService; import com.qs.serve.modules.tbs.common.TbsGoodsType; @@ -33,6 +35,7 @@ import com.qs.serve.modules.goods.entity.GoodsSku; import com.qs.serve.modules.goods.service.GoodsSkuService; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Random; @@ -50,6 +53,7 @@ import java.util.stream.Collectors; public class GoodsSkuController { private GoodsSkuService goodsSkuService; + private GoodsSpuService goodsSpuService; private GoodsSkuSpecValueService goodsSkuSpecValueService; private TbsActivityGoodsService activityGoodsService; private TbsBudgetConditionService budgetConditionService; @@ -219,21 +223,21 @@ public class GoodsSkuController { for (TbsActivityGoods item : activityGoodsList) { for (GoodsSkuImportBo.SkuItem skuItem : param.getSkuList()) { if(item.getTargetCode().equals(skuItem.getSkuCode())&&DELETE.equals(skuItem.getOpt())){ - skuItem.setErrMsg(skuItem.getErrMsg()==null?"活动含有当前商品,删除失败;":skuItem.getErrMsg()+"活动含有当前商品,删除失败;"); + skuItem.setErrMsg(skuItem.getErrMsg()==null?"活动含有当前商品,删除失败;":skuItem.getErrMsg()+"\n活动含有当前商品,删除失败;"); } } } for (TbsBudgetCondition item : budgetConditionList) { for (GoodsSkuImportBo.SkuItem skuItem : param.getSkuList()) { if(item.getTargetCode().equals(skuItem.getSkuCode())&&DELETE.equals(skuItem.getOpt())){ - skuItem.setErrMsg(skuItem.getErrMsg()==null?"预算含有当前商品,删除失败;":skuItem.getErrMsg()+"预算含有当前商品,删除失败;"); + skuItem.setErrMsg(skuItem.getErrMsg()==null?"预算含有当前商品,删除失败;":skuItem.getErrMsg()+"\n预算含有当前商品,删除失败;"); } } } for (SalePlanGoods item : salePlanGoodsList) { for (GoodsSkuImportBo.SkuItem skuItem : param.getSkuList()) { if(item.getTargetCode().equals(skuItem.getSkuCode())&&DELETE.equals(skuItem.getOpt())){ - skuItem.setErrMsg(skuItem.getErrMsg()==null?"销售计划含有当前商品,删除失败;":skuItem.getErrMsg()+"销售计划含有当前商品,删除失败;"); + skuItem.setErrMsg(skuItem.getErrMsg()==null?"销售计划含有当前商品,删除失败;":skuItem.getErrMsg()+"\n销售计划含有当前商品,删除失败;"); } } } @@ -249,18 +253,86 @@ public class GoodsSkuController { } //处理更新和新增 + List skuCodes = param.getSkuList().stream().map(a->a.getSkuCode()).distinct().collect(Collectors.toList()); + List spuCodes = param.getSkuList().stream().map(a->a.getSpuCode()).distinct().collect(Collectors.toList()); + List skuList = goodsSkuService.getByCodes(skuCodes); + List spuList = goodsSpuService.getByCodes(spuCodes); for (GoodsSkuImportBo.SkuItem skuItem : param.getSkuList()) { String opt = skuItem.getOpt(); + if(opt.equals(DELETE)){ + continue; + } + GoodsSku sku = this.selectSku(skuList,skuItem.getSkuCode()); + GoodsSpu spu = this.selectSpu(spuList,skuItem.getSpuCode()); if(UPDATE.equals(opt)){ - - //TODO 更新 + //更新 + if(sku==null){ + skuItem.setErrMsg(skuItem.getErrMsg()==null?"无匹配编码产品,更新失败;":skuItem.getErrMsg()+"\n无匹配编码产品,更新失败;"); + continue; + } + GoodsSku goodsSku = buildByImportItem(skuItem); + goodsSku.setId(sku.getId()); + if(spu!=null){ + goodsSku.setSpuId(spu.getId()); + } + goodsSkuService.updateById(goodsSku); }else if (SAVE.equals(opt)){ - //TODO 更新 - + //保存 + if(sku!=null){ + skuItem.setErrMsg(skuItem.getErrMsg()==null?"已保存,新增失败;":skuItem.getErrMsg()+"\n已保存,新增失败;"); + continue; + } + if(spu!=null){ + skuItem.setErrMsg(skuItem.getErrMsg()==null?"SKU不存在,新增失败;":skuItem.getErrMsg()+"\nSKU不存在,新增失败;"); + continue; + } + GoodsSku addSku = buildByImportItem(skuItem); + addSku.setSpuId(spu.getId()); + goodsSkuService.save(addSku); } } return R.ok(param); } + private GoodsSku buildByImportItem(GoodsSkuImportBo.SkuItem skuItem){ + GoodsSku udpSku = new GoodsSku(); + udpSku.setSkuCode(skuItem.getSkuCode()); + udpSku.setSkuName(skuItem.getSkuName()); + udpSku.setSalesPrice(skuItem.getSalesPrice()); + udpSku.setMarketPrice(skuItem.getSalesPrice()); + udpSku.setCostPrice(skuItem.getSalesPrice()); + udpSku.setStock(skuItem.getStock()); + udpSku.setWeight(skuItem.getWeight()); + udpSku.setVolume(skuItem.getVolume()); + udpSku.setMinPurchase(skuItem.getMinPurchase()); + udpSku.setOrderFlag(skuItem.getOrderFlag()); + udpSku.setSpecialFlag(skuItem.getSpecialFlag()); + udpSku.setCostFlag(skuItem.getCostFlag()); + udpSku.setBelong(skuItem.getBelong()); + udpSku.setWrapVal(skuItem.getWrapVal()); + udpSku.setTasteVal(skuItem.getTasteVal()); + udpSku.setSpecInfos(skuItem.getBelong()+";"+skuItem.getTasteVal()+";"+skuItem.getWrapVal()); + udpSku.setRemark(skuItem.getRemark()); + return udpSku; + } + + private GoodsSku selectSku( List skuList, String skuCode){ + for (GoodsSku goodsSku : skuList) { + if(goodsSku.getSkuCode().equals(skuCode)){ + return goodsSku; + } + } + return null; + } + + private GoodsSpu selectSpu( List spuList, String skuCode){ + for (GoodsSpu goodsSpu : spuList) { + if(goodsSpu.getSkuCode().equals(skuCode)){ + return goodsSpu; + } + } + return null; + } + } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSkuImportBo.java b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSkuImportBo.java index f506ee73..bf460193 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSkuImportBo.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSkuImportBo.java @@ -32,12 +32,15 @@ public class GoodsSkuImportBo { @NotNull private String skuCode; - /** 商品名字 */ + /** 商品名字(新增时不能为空) */ private String skuName; /** 库存 */ private Integer stock; + /** 销售价格(元) */ + private BigDecimal salesPrice; + /** 重量(kg) */ private BigDecimal weight; @@ -53,6 +56,9 @@ public class GoodsSkuImportBo { /** 是否特殊品 1、是;0否 */ private Integer specialFlag; + /** 是否特殊品 1、是;0否 */ + private Integer costFlag; + /** 产地 */ private String belong; @@ -62,8 +68,8 @@ public class GoodsSkuImportBo { /** 口味 */ private String tasteVal; - /** 销售价格 */ - private BigDecimal salesPrice; + /** 备注 */ + private String remark; private String errMsg; } diff --git a/src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java b/src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java index 8c3a9d06..c5bac6bc 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java +++ b/src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java @@ -30,6 +30,8 @@ public interface GoodsSpuService extends IService { GoodsSpu getByCode(String code); + List getByCodes(List codes); + GoodsSpu getByName(String name); List saveBatchTasteSpu(GoodsSpuBatchTasteBo batchTasteBo); diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java index fcab0e01..b14cf0da 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java @@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.config.properties.ProjectApisProperties; import com.qs.serve.common.model.dto.RowParam; -import com.qs.serve.common.util.CopierUtil; -import com.qs.serve.common.util.HttpUtil; -import com.qs.serve.common.util.JsonUtil; -import com.qs.serve.common.util.StringUtils; +import com.qs.serve.common.util.*; import com.qs.serve.modules.bms.entity.BmsFactory; import com.qs.serve.modules.bms.service.BmsFactoryService; import com.qs.serve.modules.goods.entity.*; @@ -71,6 +68,19 @@ public class GoodsSpuServiceImpl extends ServiceImpl im return getOne(lqw,false); } + @Override + public List getByCodes(List codes) { + if(codes==null){ + codes = new ArrayList<>(); + } + if(CollectionUtil.isEmpty(codes)){ + codes.add("-1"); + } + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(GoodsSpu::getSpuCode,codes); + return list(lqw); + } + @Override public GoodsSpu getByName(String name) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>();