mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 07:46:40 +08:00
feat(warehouse): add copy functionality for Warehouse and its Shelves
This commit is contained in:
@@ -51,4 +51,15 @@ public class WarehouseController {
|
||||
public Page<WarehouseDto> list(@RequestBody CommonQuery request) {
|
||||
return this.service.list(request);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@PostMapping("/copy")
|
||||
public WarehouseDto copy(@RequestBody IdRequest request) {
|
||||
return this.service.copy(request);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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<WarehouseEntity, WarehouseRepo
|
||||
|
||||
return page.map(this.mapper::toDto);
|
||||
}
|
||||
|
||||
@Autowired
|
||||
WarehouseShelveRepository warehouseShelveRepository;
|
||||
|
||||
public WarehouseDto copy(IdRequest request) {
|
||||
|
||||
|
||||
WarehouseEntity entity = this.get(request.getId());
|
||||
|
||||
WarehouseEntity copy = new WarehouseEntity();
|
||||
|
||||
BeanUtil.copyProperties(entity, copy);
|
||||
|
||||
copy.setId(null);
|
||||
copy.setCode(copy.getCode() + "_副本");
|
||||
|
||||
|
||||
this.repository.save(copy);
|
||||
|
||||
|
||||
List<WarehouseShelveEntity> all = warehouseShelveRepository.findAll(new Specification<WarehouseShelveEntity>() {
|
||||
@Override
|
||||
public Predicate toPredicate(Root<WarehouseShelveEntity> 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());
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user