From a1293d642b46cc3275057217c2b10d22d16deb25 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Tue, 24 Sep 2024 11:07:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=80=97=E6=9D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/TbProskuConRepository.java | 5 +- .../cons/rest/TbProskuConController.java | 3 +- .../cons/service/TbProskuConService.java | 3 +- .../cons/service/dto/TbProskuConDtoV2.java | 15 ++++ .../service/impl/TbProskuConServiceImpl.java | 84 +++++++++---------- 5 files changed, 61 insertions(+), 49 deletions(-) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbProskuConDtoV2.java diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbProskuConRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbProskuConRepository.java index f9d89f75..e16d6305 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbProskuConRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbProskuConRepository.java @@ -3,6 +3,7 @@ package cn.ysk.cashier.cons.repository; import cn.ysk.cashier.cons.domain.TbProskuCon; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import java.util.List; @@ -18,7 +19,9 @@ public interface TbProskuConRepository extends JpaRepository upV2(@Validated @RequestBody List resources) throws Exception { + public ResponseEntity upV2(@Validated @RequestBody TbProskuConDtoV2 resources) throws Exception { try { tbProskuConService.upV2(resources); return new ResponseEntity<>(HttpStatus.CREATED); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/TbProskuConService.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/TbProskuConService.java index 61287cfe..1da5e530 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/TbProskuConService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/TbProskuConService.java @@ -3,6 +3,7 @@ package cn.ysk.cashier.cons.service; import cn.ysk.cashier.cons.domain.TbProskuCon; import cn.ysk.cashier.cons.service.dto.ProskuInfo; import cn.ysk.cashier.cons.service.dto.TbProskuConDto; +import cn.ysk.cashier.cons.service.dto.TbProskuConDtoV2; import cn.ysk.cashier.cons.service.dto.TbProskuConQueryCriteria; import org.springframework.data.domain.Pageable; import java.util.Map; @@ -44,7 +45,7 @@ public interface TbProskuConService { * @return TbProskuConDto */ TbProskuConDto create(List resources) throws Exception; - void upV2(List resources) throws Exception; + void upV2(TbProskuConDtoV2 resources) throws Exception; /** * 编辑 diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbProskuConDtoV2.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbProskuConDtoV2.java new file mode 100644 index 00000000..b11f8d8b --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbProskuConDtoV2.java @@ -0,0 +1,15 @@ +package cn.ysk.cashier.cons.service.dto; + +import cn.ysk.cashier.cons.domain.TbProskuCon; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +@Data +public class TbProskuConDtoV2 { + + @NotNull + private Integer productId; + List cons; +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbProskuConServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbProskuConServiceImpl.java index 46b0c563..27bed072 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbProskuConServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbProskuConServiceImpl.java @@ -6,6 +6,7 @@ import cn.ysk.cashier.cons.domain.TbConsSuppFlow; import cn.ysk.cashier.cons.domain.TbProskuCon; import cn.ysk.cashier.cons.repository.TbConsInfoRepository; import cn.ysk.cashier.cons.service.dto.ProskuInfo; +import cn.ysk.cashier.cons.service.dto.TbProskuConDtoV2; import cn.ysk.cashier.exception.BadRequestException; import cn.ysk.cashier.pojo.product.TbProduct; import cn.ysk.cashier.pojo.product.TbProductSku; @@ -160,55 +161,46 @@ public class TbProskuConServiceImpl implements TbProskuConService { @Override @Transactional(rollbackFor = Exception.class) - public void upV2(List resources) { - List newCons=new ArrayList<>(); - Map> conMap = resources.stream() - .collect(Collectors.groupingBy(TbProskuCon::getProductId)); - for (Integer proId : conMap.keySet()) { - TbProduct product= tbProductRepository.getById(proId); - if(Objects.isNull(product)){ - throw new BadRequestException("对应的商品信息不存在"); + public void upV2(TbProskuConDtoV2 resources) { + if (CollectionUtils.isEmpty(resources.getCons())) { + tbProskuConRepository.deleteAllByProductId(resources.getProductId()); + return; + } + List newCons = new ArrayList<>(); + TbProduct product = tbProductRepository.getById(resources.getProductId()); + if (Objects.isNull(product)) { + throw new BadRequestException("对应的商品信息不存在"); + } + + List collect = resources.getCons().stream().map(TbProskuCon::getId).collect(Collectors.toList()); + //现有的 + List tbProskuCons = tbProskuConRepository.searchAllByProductId(resources.getProductId()); + List delIds = new ArrayList<>(); + for (TbProskuCon tbProskuCon : tbProskuCons) { + if (!collect.contains(tbProskuCon.getId())) { + delIds.add(tbProskuCon.getId()); } - List cons = conMap.get(proId); - List collect = cons.stream().map(TbProskuCon::getId).collect(Collectors.toList()); - //现有的 - List tbProskuCons = tbProskuConRepository.searchAllByProductId(proId); - List delIds = new ArrayList<>(); - for (TbProskuCon tbProskuCon : tbProskuCons) { - if (!collect.contains(tbProskuCon.getId())) { - delIds.add(tbProskuCon.getId()); + } + if (!CollectionUtils.isEmpty(delIds)) { + tbProskuConRepository.deleteAllById(delIds); + } + + //判断 + for (TbProskuCon resource : resources.getCons()) { + TbConsInfo tbConsInfo = tbConsInfoRepository.findById(resource.getConInfoId()).orElseGet(TbConsInfo::new); + if (ObjectUtil.isNull(tbConsInfo) || ObjectUtil.isNull(tbConsInfo.getId())) { + throw new BadRequestException("对应的耗材信息不存在"); + } + if (resource.getProductSkuId() != 0) { + TbProductSku sku = tbProductSkuRepository.findById(resource.getProductSkuId()).orElseGet(TbProductSku::new); + if (ObjectUtil.isNull(sku) || ObjectUtil.isNull(sku.getId())) { + throw new BadRequestException("规格信息不存在"); } } - if (!CollectionUtils.isEmpty(delIds)) { - tbProskuConRepository.deleteAllById(delIds); - } - //判断 - for (TbProskuCon resource : cons) { - TbConsInfo tbConsInfo = tbConsInfoRepository.findById(resource.getConInfoId()).orElseGet(TbConsInfo::new); - if (ObjectUtil.isNull(tbConsInfo) || ObjectUtil.isNull(tbConsInfo.getId())) { - throw new BadRequestException("对应的耗材信息不存在"); - } - TbProductSku sku = new TbProductSku(); - if (resource.getProductSkuId() != 0) { - sku = tbProductSkuRepository.findById(resource.getProductSkuId()).orElseGet(TbProductSku::new); - if (ObjectUtil.isNull(sku) || ObjectUtil.isNull(sku.getId())) { - throw new BadRequestException("规格信息不存在"); - } - } - int count = tbProskuConRepository.countByConInfoIdAndProductSkuIdAndShopId(resource.getConInfoId(), resource.getProductSkuId(), resource.getShopId(), resource.getProductId()); - if (count <= 0) { - newCons.add(resource); - } else { - if (resource.getProductSkuId() != 0) { - throw new BadRequestException(StringUtils.isNotBlank(sku.getSpecSnap()) ? sku.getSpecSnap() : "".concat(" 对应的耗材").concat(tbConsInfo.getConName()).concat("关系已存在")); - } else { - throw new BadRequestException(" 对应的耗材".concat(tbConsInfo.getConName()).concat("关系已存在")); - } - } - } - if(!CollectionUtils.isEmpty(newCons)){ - tbProskuConRepository.saveAll(newCons); - } + newCons.add(resource); + } + if (!CollectionUtils.isEmpty(newCons)) { + tbProskuConRepository.saveAll(newCons); } }