From d12a57dc1353ae9aa2add06dc67071ff3414ff0d Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Tue, 11 Mar 2025 20:51:32 +0800 Subject: [PATCH] feat(warehouse): add copy functionality for Warehouse and its Shelves --- .../controller/WarehouseController.java | 11 ++++ .../warehouse/service/WarehouseService.java | 57 +++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/src/main/java/cn/lihongjie/coal/warehouse/controller/WarehouseController.java b/src/main/java/cn/lihongjie/coal/warehouse/controller/WarehouseController.java index afbf0894..b1696e6d 100644 --- a/src/main/java/cn/lihongjie/coal/warehouse/controller/WarehouseController.java +++ b/src/main/java/cn/lihongjie/coal/warehouse/controller/WarehouseController.java @@ -51,4 +51,15 @@ public class WarehouseController { public Page list(@RequestBody CommonQuery request) { return this.service.list(request); } + + + + @PostMapping("/copy") + public WarehouseDto copy(@RequestBody IdRequest request) { + return this.service.copy(request); + } + + + + } diff --git a/src/main/java/cn/lihongjie/coal/warehouse/service/WarehouseService.java b/src/main/java/cn/lihongjie/coal/warehouse/service/WarehouseService.java index 5dec8ab0..0cefaa21 100644 --- a/src/main/java/cn/lihongjie/coal/warehouse/service/WarehouseService.java +++ b/src/main/java/cn/lihongjie/coal/warehouse/service/WarehouseService.java @@ -1,5 +1,6 @@ package cn.lihongjie.coal.warehouse.service; +import cn.hutool.core.bean.BeanUtil; import cn.lihongjie.coal.base.dto.CommonQuery; import cn.lihongjie.coal.base.dto.IdRequest; import cn.lihongjie.coal.base.service.BaseService; @@ -11,8 +12,15 @@ import cn.lihongjie.coal.warehouse.entity.WarehouseEntity; import cn.lihongjie.coal.warehouse.mapper.WarehouseMapper; import cn.lihongjie.coal.warehouse.repository.WarehouseRepository; import cn.lihongjie.coal.warehouseShelve.dto.CreateWarehouseShelveDto; +import cn.lihongjie.coal.warehouseShelve.entity.WarehouseShelveEntity; +import cn.lihongjie.coal.warehouseShelve.repository.WarehouseShelveRepository; import cn.lihongjie.coal.warehouseShelve.service.WarehouseShelveService; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Predicate; +import jakarta.persistence.criteria.Root; + import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -20,9 +28,12 @@ import org.springframework.core.convert.ConversionService; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; +import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Service @Slf4j @Transactional @@ -87,4 +98,50 @@ public class WarehouseService extends BaseService all = warehouseShelveRepository.findAll(new Specification() { + @Override + public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { + + return criteriaBuilder.and( + criteriaBuilder.equal(root.get("warehouse").get("id"), request.getId()) + ); + + } + }); + + + + for (WarehouseShelveEntity shelveEntity : all) { + WarehouseShelveEntity copyShelve = new WarehouseShelveEntity(); + BeanUtil.copyProperties(shelveEntity, copyShelve); + copyShelve.setId(null); + copyShelve.setWarehouse(copy); + warehouseShelveRepository.save(copyShelve); + } + + + return this.getById(copy.getId()); + + + } }