mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 15:55:18 +08:00
feat: 按照id、编码、商品条码搜索商品
This commit is contained in:
@@ -53,5 +53,12 @@ public class WarehouseGoodsController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
@PostMapping("/searchByCode")
|
||||
public WarehouseGoodsDto searchByCode(@RequestBody IdRequest request) {
|
||||
return this.service.searchByCode(request);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.lihongjie.coal.base.dto.CommonQuery;
|
||||
import cn.lihongjie.coal.base.dto.IdRequest;
|
||||
import cn.lihongjie.coal.base.mapper.CommonMapper;
|
||||
import cn.lihongjie.coal.base.service.BaseService;
|
||||
import cn.lihongjie.coal.common.Ctx;
|
||||
import cn.lihongjie.coal.warehouseGoods.dto.CreateWarehouseGoodsDto;
|
||||
import cn.lihongjie.coal.warehouseGoods.dto.UpdateWarehouseGoodsDto;
|
||||
import cn.lihongjie.coal.warehouseGoods.dto.WarehouseGoodsDto;
|
||||
@@ -11,19 +12,30 @@ import cn.lihongjie.coal.warehouseGoods.entity.WarehouseGoodsEntity;
|
||||
import cn.lihongjie.coal.warehouseGoods.mapper.WarehouseGoodsMapper;
|
||||
import cn.lihongjie.coal.warehouseGoods.repository.WarehouseGoodsRepository;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.PersistenceContext;
|
||||
import jakarta.persistence.criteria.CriteriaBuilder;
|
||||
import jakarta.persistence.criteria.CriteriaQuery;
|
||||
import jakarta.persistence.criteria.Predicate;
|
||||
import jakarta.persistence.criteria.Root;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
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
|
||||
@@ -73,10 +85,49 @@ public class WarehouseGoodsService
|
||||
|
||||
return page.map(this.mapper::toDto);
|
||||
}
|
||||
@Autowired
|
||||
private CommonMapper commonMapper;
|
||||
|
||||
@Autowired ObjectMapper objectMapper;
|
||||
@Autowired private CommonMapper commonMapper;
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
public WarehouseGoodsDto searchByCode(IdRequest request) {
|
||||
|
||||
String id = request.getId();
|
||||
|
||||
List<WarehouseGoodsEntity> all =
|
||||
this.repository.findAll(
|
||||
new Specification<WarehouseGoodsEntity>() {
|
||||
@Override
|
||||
public Predicate toPredicate(
|
||||
Root<WarehouseGoodsEntity> root,
|
||||
CriteriaQuery<?> query,
|
||||
CriteriaBuilder criteriaBuilder) {
|
||||
return criteriaBuilder.or(
|
||||
criteriaBuilder.equal(root.get("id"), id),
|
||||
criteriaBuilder.and(
|
||||
criteriaBuilder.equal(root.get("code"), id),
|
||||
criteriaBuilder.equal(
|
||||
root.get("organizationId"),
|
||||
Ctx.currentUser().getOrganizationId())),
|
||||
criteriaBuilder.and(
|
||||
criteriaBuilder.equal(root.get("barCode"), id),
|
||||
criteriaBuilder.equal(
|
||||
root.get("organizationId"),
|
||||
Ctx.currentUser().getOrganizationId())));
|
||||
}
|
||||
});
|
||||
|
||||
if (CollectionUtils.isEmpty(all)) {
|
||||
return null;
|
||||
} else if (all.size() > 1) {
|
||||
log.warn(
|
||||
"find more than one result by code: {} {}",
|
||||
id,
|
||||
objectMapper.writeValueAsString(all));
|
||||
|
||||
return mapper.toDto(all.get(0));
|
||||
} else {
|
||||
return mapper.toDto(all.get(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user