diff --git a/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseBillVoucherItemService.java b/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseBillVoucherItemService.java index 8cf0e68..622f53c 100644 --- a/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseBillVoucherItemService.java +++ b/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseBillVoucherItemService.java @@ -2,25 +2,22 @@ package com.ecep.contract.ds.contract.service; import java.util.List; -import com.ecep.contract.util.SpecificationUtils; -import com.ecep.contract.vo.ContractVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Caching; import org.springframework.context.annotation.Lazy; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; +import com.ecep.contract.EntityService; import com.ecep.contract.IEntityService; import com.ecep.contract.QueryService; import com.ecep.contract.ds.contract.repository.PurchaseBillVoucherItemRepository; import com.ecep.contract.ds.vendor.model.PurchaseBillVoucherItem; import com.ecep.contract.service.VoableService; +import com.ecep.contract.vo.ContractVo; import com.ecep.contract.vo.PurchaseBillVoucherItemVo; import com.fasterxml.jackson.databind.JsonNode; @@ -28,25 +25,31 @@ import com.fasterxml.jackson.databind.JsonNode; @Service @CacheConfig(cacheNames = "purchase-bill-voucher-item") public class PurchaseBillVoucherItemService - implements IEntityService, QueryService, + extends EntityService + implements IEntityService, QueryService, VoableService { @Lazy @Autowired private PurchaseBillVoucherItemRepository repository; - @Override - public PurchaseBillVoucherItem getById(Integer id) { - return repository.findById(id).orElse(null); - } - @Cacheable(key = "#p0") @Override - public PurchaseBillVoucherItem findById(Integer id) { - return repository.findById(id).orElse(null); + public PurchaseBillVoucherItemVo findById(Integer id) { + return repository.findById(id).map(PurchaseBillVoucherItem::toVo).orElse(null); } @Override - public Specification getSearchSpecification(String searchText) { + protected PurchaseBillVoucherItemRepository getRepository() { + return repository; + } + + @Override + public PurchaseBillVoucherItem createNewEntity() { + return new PurchaseBillVoucherItem(); + } + + @Override + protected Specification buildSearchSpecification(String searchText) { return (root, query, builder) -> { return builder.or( builder.like(root.get("description"), "%" + searchText + "%")); @@ -54,19 +57,8 @@ public class PurchaseBillVoucherItemService } @Override - public Page findAll(Specification spec, Pageable pageable) { - return repository.findAll(spec, pageable); - } - - @Override - public Page findAll(JsonNode paramsNode, Pageable pageable) { - Specification spec = null; - if (paramsNode.has("searchText")) { - spec = getSearchSpecification(paramsNode.get("searchText").asText()); - } - - spec = SpecificationUtils.andParam(spec, paramsNode, "voucher"); - return findAll(spec, pageable); + protected Specification buildParameterSpecification(JsonNode paramsNode) { + return null; } @Caching(evict = { @@ -87,10 +79,6 @@ public class PurchaseBillVoucherItemService return repository.save(entity); } - public List findAll(Specification spec, Sort sort) { - return repository.findAll(spec, sort); - } - @Override public void updateByVo(PurchaseBillVoucherItem model, PurchaseBillVoucherItemVo vo) { model.setId(vo.getId()); diff --git a/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseBillVoucherService.java b/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseBillVoucherService.java index 852cbbe..524ca57 100644 --- a/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseBillVoucherService.java +++ b/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseBillVoucherService.java @@ -1,12 +1,7 @@ package com.ecep.contract.ds.contract.service; -import java.util.List; -import com.ecep.contract.ds.vendor.model.PurchaseBillVoucherItem; -import com.ecep.contract.ds.vendor.model.PurchaseOrderItem; -import jakarta.persistence.criteria.Root; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; @@ -18,11 +13,12 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; +import com.ecep.contract.EntityService; import com.ecep.contract.IEntityService; import com.ecep.contract.QueryService; import com.ecep.contract.SpringApp; +import com.ecep.contract.ds.MyRepository; import com.ecep.contract.ds.company.service.CompanyService; import com.ecep.contract.ds.company.service.InvoiceService; import com.ecep.contract.ds.contract.repository.PurchaseBillVoucherRepository; @@ -39,40 +35,21 @@ import com.fasterxml.jackson.databind.JsonNode; @Lazy @Service @CacheConfig(cacheNames = "purchase-bill-voucher") -public class PurchaseBillVoucherService +public class PurchaseBillVoucherService extends EntityService implements IEntityService, QueryService, VoableService { - private static final Logger logger = LoggerFactory.getLogger(PurchaseBillVoucherService.class); + @Lazy @Autowired private PurchaseBillVoucherRepository repository; - @Override - public PurchaseBillVoucher getById(Integer id) { - return repository.findById(id).orElse(null); - } - @Override @Cacheable(key = "#p0") public PurchaseBillVoucherVo findById(Integer id) { return repository.findById(id).map(PurchaseBillVoucher::toVo).orElse(null); } - @Override - public Specification getSearchSpecification(String searchText) { - // if null - if (!StringUtils.hasText(searchText)) { - return null; - } - - return (root, query, builder) -> { - return builder.or( - builder.like(root.get("code"), "%" + searchText + "%"), - builder.like(root.get("description"), "%" + searchText + "%")); - }; - } - @Cacheable(key = "'code-'+#p0") public PurchaseBillVoucherVo findByCode(String code) { return repository.findByCode(code).map(PurchaseBillVoucher::toVo).orElse(null); @@ -88,16 +65,17 @@ public class PurchaseBillVoucherService } /** - * 保存实体对象,异步方法 + * 保存实体对象 * * @param voucher 要保存的实体对象 - * @return 返回异步调用 + * @return 返回保存后的实体 */ @Caching(evict = { @CacheEvict(key = "#p0.id"), @CacheEvict(key = "'code-'+#p0.code"), @CacheEvict(key = "'refId-'+#p0.refId") }) + @Override public PurchaseBillVoucher save(PurchaseBillVoucher voucher) { return repository.save(voucher); } @@ -112,47 +90,30 @@ public class PurchaseBillVoucherService repository.delete(order); } - public long count() { - return repository.count(); - } - public long count(Specification spec) { - return repository.count(spec); + @Override + protected Specification buildParameterSpecification(JsonNode paramsNode) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'buildParameterSpecification'"); } @Override - public Page findAll(Specification spec, Pageable pageable) { - return repository.findAll(spec, pageable); + protected PurchaseBillVoucherRepository getRepository() { + return repository; } @Override - public Page findAll(JsonNode paramsNode, Pageable pageable) { - Specification spec = null; - if (paramsNode.has("searchText")) { - spec = getSearchSpecification(paramsNode.get("searchText").asText()); - } - // field - spec = SpecificationUtils.andParam(spec, paramsNode, "company", "inventory"); - if (paramsNode.has("purchaseOrder")) { - spec = SpecificationUtils.and(spec, (root, query, cb) -> { - Root voucherItemRoot = query.from(PurchaseBillVoucherItem.class); - Root orderItemRoot = query.from(PurchaseOrderItem.class); - return cb.and( - cb.equal(voucherItemRoot.get("orderItem"), orderItemRoot), - cb.equal(orderItemRoot.get("order").get("id"), paramsNode.get("purchaseOrder").asInt()), - cb.equal(root, voucherItemRoot.get("voucher")) - ); - }); - } - return findAll(spec, pageable).map(PurchaseBillVoucher::toVo); + public PurchaseBillVoucher createNewEntity() { + return new PurchaseBillVoucher(); } - public List findAll(Specification spec, Sort sort) { - return repository.findAll(spec, sort); - } - - public List search(String searchText) { - return repository.findAll(getSearchSpecification(searchText), Pageable.ofSize(10)).getContent(); + @Override + protected Specification buildSearchSpecification(String searchText) { + return (root, query, builder) -> { + return builder.or( + builder.like(root.get("code"), "%" + searchText + "%"), + builder.like(root.get("description"), "%" + searchText + "%")); + }; } @Override @@ -200,4 +161,5 @@ public class PurchaseBillVoucherService model.setVerifier(employeeService.getById(vo.getVerifierId())); } } + } diff --git a/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseOrderItemService.java b/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseOrderItemService.java index 3c08e9e..95de42c 100644 --- a/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseOrderItemService.java +++ b/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseOrderItemService.java @@ -3,10 +3,6 @@ package com.ecep.contract.ds.contract.service; import java.util.List; import java.util.Objects; -import com.ecep.contract.ds.vendor.model.PurchaseOrder; -import com.ecep.contract.vo.ContractItemVo; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; @@ -15,38 +11,31 @@ import org.springframework.cache.annotation.Caching; import org.springframework.context.annotation.Lazy; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; +import com.ecep.contract.EntityService; import com.ecep.contract.IEntityService; import com.ecep.contract.QueryService; import com.ecep.contract.SpringApp; import com.ecep.contract.ds.contract.repository.PurchaseOrderItemRepository; import com.ecep.contract.ds.other.service.InventoryService; +import com.ecep.contract.ds.vendor.model.PurchaseOrder; import com.ecep.contract.ds.vendor.model.PurchaseOrderItem; import com.ecep.contract.service.ServiceException; import com.ecep.contract.service.VoableService; -import com.ecep.contract.util.SpecificationUtils; import com.ecep.contract.vo.PurchaseOrderItemVo; import com.fasterxml.jackson.databind.JsonNode; @Lazy @Service @CacheConfig(cacheNames = "contract-purchase-order-item") -public class PurchaseOrderItemService implements IEntityService, QueryService, +public class PurchaseOrderItemService extends EntityService implements IEntityService, QueryService, VoableService { - private static final Logger logger = LoggerFactory.getLogger(PurchaseOrderItemService.class); @Lazy @Autowired private PurchaseOrderItemRepository repository; - @Override - public PurchaseOrderItem getById(Integer id) { - return repository.findById(id).orElse(null); - } - @Cacheable(key = "#p0") @Override public PurchaseOrderItemVo findById(Integer id) { @@ -62,59 +51,13 @@ public class PurchaseOrderItemService implements IEntityService 1) { PurchaseOrderItem item = list.removeLast(); repository.delete(item); - if (logger.isInfoEnabled()) { - logger.info("Duplicate PurchaseOrderItem, Delete {}", item); - } } return list.getFirst().toVo(); } - @Override - public Specification getSearchSpecification(String searchText) { - if (!StringUtils.hasText(searchText)) { - return null; - } - return (root, query, builder) -> { - return builder.or(builder.like(root.get("description"), "%" + searchText + "%")); - }; - } - - @Override - public Page findAll(Specification spec, Pageable pageable) { - return repository.findAll(spec, pageable); - } - @Override public Page findAll(JsonNode paramsNode, Pageable pageable) { - Specification spec = null; - if (paramsNode.has("searchText")) { - spec = getSearchSpecification(paramsNode.get("searchText").asText()); - } - // field - spec = SpecificationUtils.andParam(spec, paramsNode, "order", "inventory", "contractItem"); - -// if (paramsNode.has("contractItem")) { -// ContractItemService itemService = SpringApp.getBean(ContractItemService.class); -// var contractItem = itemService.findById(paramsNode.get("contractItem").asInt()); -// -// if (contractItem.getInventoryId() == null) { -// spec = SpecificationUtils.and(spec, (root, query, builder) -> { -// return builder.and( -// builder.equal(root.get("order").get("contract").get("id"), contractItem.getContractId()), -// builder.equal(root.get("inventory").get("id"), null) -// ); -// }); -// } else { -// spec = SpecificationUtils.and(spec, (root, query, builder) -> { -// return builder.and( -// builder.equal(root.get("order").get("contract").get("id"), contractItem.getContractId()), -// builder.equal(root.get("inventory").get("id"), contractItem.getInventoryId()) -// ); -// }); -// } -// } - - return findAll(spec, pageable).map(PurchaseOrderItem::toVo); + return super.findAll(paramsNode, pageable); } @Caching(evict = { @@ -134,10 +77,6 @@ public class PurchaseOrderItemService implements IEntityService findAll(Specification spec, Sort sort) { - return repository.findAll(spec, sort); - } - @Override public void updateByVo(PurchaseOrderItem model, PurchaseOrderItemVo vo) { if (model == null) { @@ -183,4 +122,26 @@ public class PurchaseOrderItemService implements IEntityService findAllByOrder(PurchaseOrder order) { return repository.findAllByOrder(order); } -} + + @Override + protected PurchaseOrderItemRepository getRepository() { + return repository; + } + + @Override + public PurchaseOrderItem createNewEntity() { + return new PurchaseOrderItem(); + } + + @Override + protected Specification buildSearchSpecification(String searchText) { + return (root, query, builder) -> { + return builder.or(builder.like(root.get("description"), "%" + searchText + "%")); + }; + } + + @Override + protected Specification buildParameterSpecification(JsonNode paramsNode) { + throw new UnsupportedOperationException("Unimplemented method 'buildParameterSpecification'"); + } +} \ No newline at end of file diff --git a/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseOrdersService.java b/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseOrdersService.java index c6681fd..31af736 100644 --- a/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseOrdersService.java +++ b/server/src/main/java/com/ecep/contract/ds/contract/service/PurchaseOrdersService.java @@ -3,8 +3,6 @@ package com.ecep.contract.ds.contract.service; import java.util.List; import com.ecep.contract.vo.ContractVo; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; @@ -13,10 +11,10 @@ import org.springframework.cache.annotation.Caching; import org.springframework.context.annotation.Lazy; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; +import com.ecep.contract.EntityService; import com.ecep.contract.IEntityService; import com.ecep.contract.QueryService; import com.ecep.contract.SpringApp; @@ -26,7 +24,6 @@ import com.ecep.contract.ds.contract.model.Contract; import com.ecep.contract.ds.vendor.model.PurchaseOrder; import com.ecep.contract.service.ServiceException; import com.ecep.contract.service.VoableService; -import com.ecep.contract.util.SpecificationUtils; import com.ecep.contract.vo.PurchaseOrderVo; import com.fasterxml.jackson.databind.JsonNode; @@ -36,31 +33,32 @@ import com.fasterxml.jackson.databind.JsonNode; @Lazy @Service @CacheConfig(cacheNames = "contract-purchase-order") -public class PurchaseOrdersService implements IEntityService, QueryService, +public class PurchaseOrdersService extends EntityService + implements IEntityService, QueryService, VoableService { - private static final Logger logger = LoggerFactory.getLogger(PurchaseOrdersService.class); @Lazy @Autowired private PurchaseOrderRepository repository; - @Lazy - @Autowired - private EmployeeService employeeService; - @Override - public PurchaseOrder getById(Integer id) { - return repository.findById(id).orElse(null); + protected PurchaseOrderRepository getRepository() { + return repository; } - @Override @Cacheable(key = "#p0") + @Override public PurchaseOrderVo findById(Integer id) { return repository.findById(id).map(PurchaseOrder::toVo).orElse(null); } @Override - public Specification getSearchSpecification(String searchText) { + public PurchaseOrder createNewEntity() { + return new PurchaseOrder(); + } + + @Override + protected Specification buildSearchSpecification(String searchText) { return (root, query, builder) -> { return builder.or( builder.like(root.get("code"), "%" + searchText + "%"), @@ -108,31 +106,9 @@ public class PurchaseOrdersService implements IEntityService, Que repository.delete(order); } - public long count() { - return repository.count(); - } - - public long count(Specification spec) { - return repository.count(spec); - } - @Override - public Page findAll(Specification spec, Pageable pageable) { - return repository.findAll(spec, pageable); - } - - @Override - public Page findAll(JsonNode paramsNode, Pageable pageable) { - Specification spec = null; - if (paramsNode.has("searchText")) { - spec = getSearchSpecification(paramsNode.get("searchText").asText()); - } - spec = SpecificationUtils.andParam(spec, paramsNode, "contract"); - return findAll(spec, pageable).map(PurchaseOrder::toVo); - } - - public List findAll(Specification spec, Sort sort) { - return repository.findAll(spec, sort); + protected Specification buildParameterSpecification(JsonNode paramsNode) { + throw new UnsupportedOperationException("Unimplemented method 'buildParameterSpecification'"); } public List findAllByContract(Contract contract) { @@ -143,15 +119,6 @@ public class PurchaseOrdersService implements IEntityService, Que return repository.findAllByContractId(contract.getId()); } - public List search(String searchText) { - Specification spec = (root, query, builder) -> { - return builder.or( - builder.like(root.get("name"), "%" + searchText + "%"), - builder.like(root.get("code"), "%" + searchText + "%")); - }; - return repository.findAll(spec, Pageable.ofSize(10)).getContent(); - } - @Override public void updateByVo(PurchaseOrder model, PurchaseOrderVo vo) { if (model == null || vo == null) { diff --git a/server/src/main/java/com/ecep/contract/ds/contract/service/SalesBillVoucherItemService.java b/server/src/main/java/com/ecep/contract/ds/contract/service/SalesBillVoucherItemService.java index 8f504dd..995c663 100644 --- a/server/src/main/java/com/ecep/contract/ds/contract/service/SalesBillVoucherItemService.java +++ b/server/src/main/java/com/ecep/contract/ds/contract/service/SalesBillVoucherItemService.java @@ -1,19 +1,15 @@ package com.ecep.contract.ds.contract.service; -import java.util.List; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Caching; import org.springframework.context.annotation.Lazy; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; +import com.ecep.contract.EntityService; import com.ecep.contract.IEntityService; import com.ecep.contract.QueryService; import com.ecep.contract.ds.contract.repository.SalesBillVoucherItemRepository; @@ -25,50 +21,19 @@ import com.fasterxml.jackson.databind.JsonNode; @Lazy @Service @CacheConfig(cacheNames = "sales-bill-voucher-item") -public class SalesBillVoucherItemService +public class SalesBillVoucherItemService extends EntityService implements IEntityService, QueryService, VoableService { @Lazy @Autowired private SalesBillVoucherItemRepository repository; - @Override - public SalesBillVoucherItem getById(Integer id) { - return repository.findById(id).orElse(null); - } - @Cacheable(key = "#p0") @Override public SalesBillVoucherItemVo findById(Integer id) { return repository.findById(id).map(SalesBillVoucherItem::toVo).orElse(null); } - @Override - public Specification getSearchSpecification(String searchText) { - return (root, query, builder) -> { - return builder.or( - builder.like(root.get("description"), "%" + searchText + "%")); - }; - } - - @Override - public Page findAll(Specification spec, Pageable pageable) { - return repository.findAll(spec, pageable); - } - - public List findAll(Specification spec, Sort sort) { - return repository.findAll(spec, sort); - } - - @Override - public Page findAll(JsonNode paramsNode, Pageable pageable) { - Specification spec = null; - if (paramsNode.has("searchText")) { - spec = getSearchSpecification(paramsNode.get("searchText").asText()); - } - return findAll(spec, pageable).map(SalesBillVoucherItem::toVo); - } - @Caching(evict = { @CacheEvict(key = "'item-'+#p0.id") }) @@ -85,12 +50,26 @@ public class SalesBillVoucherItemService return repository.save(entity); } - public long countItems() { - return repository.count(); + @Override + protected SalesBillVoucherItemRepository getRepository() { + return repository; } - public long countItems(Specification spec) { - return repository.count(spec); + @Override + public SalesBillVoucherItem createNewEntity() { + return new SalesBillVoucherItem(); + } + + @Override + protected Specification buildSearchSpecification(String searchText) { + return (root, query, builder) -> { + return builder.or(builder.like(root.get("description"), "%" + searchText + "%")); + }; + } + + @Override + protected Specification buildParameterSpecification(JsonNode paramsNode) { + throw new UnsupportedOperationException("Unimplemented method 'buildParameterSpecification'"); } @Override @@ -103,4 +82,5 @@ public class SalesBillVoucherItemService model.setPrice(vo.getPrice()); model.setDescription(vo.getDescription()); } + } \ No newline at end of file diff --git a/server/src/main/java/com/ecep/contract/ds/customer/repository/CompanyCustomerEvaluationFormFileRepository.java b/server/src/main/java/com/ecep/contract/ds/customer/repository/CompanyCustomerEvaluationFormFileRepository.java index 0d1221a..e958437 100644 --- a/server/src/main/java/com/ecep/contract/ds/customer/repository/CompanyCustomerEvaluationFormFileRepository.java +++ b/server/src/main/java/com/ecep/contract/ds/customer/repository/CompanyCustomerEvaluationFormFileRepository.java @@ -2,24 +2,26 @@ package com.ecep.contract.ds.customer.repository; import java.util.List; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import com.ecep.contract.ds.MyRepository; import com.ecep.contract.ds.customer.model.CompanyCustomer; import com.ecep.contract.ds.customer.model.CompanyCustomerEvaluationFormFile; import com.ecep.contract.ds.customer.model.CompanyCustomerFile; @Repository -public interface CompanyCustomerEvaluationFormFileRepository extends JpaRepository, JpaSpecificationExecutor { +public interface CompanyCustomerEvaluationFormFileRepository + extends MyRepository { List findAllByCustomerFileCustomer(@Param("customer") CompanyCustomer customer); - @Query(value = "SELECT * FROM COMPANY_CUSTOMER_FILE ccf left join COMPANY_CUSTOMER_EVALUATION_FORM_FILE CCEFF on ccf.ID = CCEFF.ID " + + @Query(value = "SELECT * FROM COMPANY_CUSTOMER_FILE ccf left join COMPANY_CUSTOMER_EVALUATION_FORM_FILE CCEFF on ccf.ID = CCEFF.ID " + + "where ccf.CUSTOMER_ID=:customer and ccf.TYPE=:fileType", nativeQuery = true) - List findAllByCustomerAndType(@Param("customer") int companyCustomerId, @Param("fileType") String type); + List findAllByCustomerAndType(@Param("customer") int companyCustomerId, + @Param("fileType") String type); CompanyCustomerEvaluationFormFile findByCustomerFile(CompanyCustomerFile customerFile); } diff --git a/server/src/main/java/com/ecep/contract/ds/customer/service/CompanyCustomerEntityService.java b/server/src/main/java/com/ecep/contract/ds/customer/service/CompanyCustomerEntityService.java index 9cb94d3..7818ec5 100644 --- a/server/src/main/java/com/ecep/contract/ds/customer/service/CompanyCustomerEntityService.java +++ b/server/src/main/java/com/ecep/contract/ds/customer/service/CompanyCustomerEntityService.java @@ -12,23 +12,25 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; +import com.ecep.contract.EntityService; import com.ecep.contract.IEntityService; import com.ecep.contract.QueryService; +import com.ecep.contract.ds.MyRepository; import com.ecep.contract.ds.customer.repository.CompanyCustomerEntityRepository; import com.ecep.contract.ds.other.service.EmployeeService; import com.ecep.contract.ds.customer.model.CompanyCustomer; import com.ecep.contract.ds.customer.model.CompanyCustomerEntity; import com.ecep.contract.service.VoableService; -import com.ecep.contract.util.SpecificationUtils; import com.ecep.contract.vo.CompanyCustomerEntityVo; import com.fasterxml.jackson.databind.JsonNode; @Lazy @Service @CacheConfig(cacheNames = "company-customer-entity") -public class CompanyCustomerEntityService implements IEntityService, QueryService, VoableService { +public class CompanyCustomerEntityService extends EntityService + implements IEntityService, QueryService, + VoableService { @Lazy @Autowired private CompanyCustomerEntityRepository repository; @@ -42,11 +44,6 @@ public class CompanyCustomerEntityService implements IEntityService getSearchSpecification(String searchText) { - if (!StringUtils.hasText(searchText)) { - return null; - } - return SpecificationUtils.andWith(searchText, this::buildSearchSpecification); - } - protected Specification buildSearchSpecification(String searchText) { return (root, query, builder) -> { return builder.or( @@ -70,25 +60,9 @@ public class CompanyCustomerEntityService implements IEntityService search(String searchText) { - Specification spec = getSearchSpecification(searchText); - return repository.findAll(spec, Pageable.ofSize(10)).getContent(); - } - @Override - public Page findAll(Specification spec, Pageable pageable) { - return repository.findAll(spec, pageable); - } - - @Override - public Page findAll(JsonNode paramsNode, Pageable pageable) { - Specification spec = null; - if (paramsNode.has("searchText")) { - spec = getSearchSpecification(paramsNode.get("searchText").asText()); - } - // field - spec = SpecificationUtils.andParam(spec, paramsNode, "customer"); - return findAll(spec, pageable).map(CompanyCustomerEntity::toVo); + protected Specification buildParameterSpecification(JsonNode paramsNode) { + throw new UnsupportedOperationException("Unimplemented method 'buildParameterSpecification'"); } @Caching(evict = { @@ -126,6 +100,16 @@ public class CompanyCustomerEntityService implements IEntityService getRepository() { + return repository; + } + + @Override + public CompanyCustomerEntity createNewEntity() { + return new CompanyCustomerEntity(); + } + @Override public void updateByVo(CompanyCustomerEntity entity, CompanyCustomerEntityVo vo) { // 优化关联实体处理逻辑 - 客户关联 diff --git a/server/src/main/java/com/ecep/contract/ds/customer/service/CompanyCustomerEvaluationFormFileService.java b/server/src/main/java/com/ecep/contract/ds/customer/service/CompanyCustomerEvaluationFormFileService.java index 9b93c2d..56351f3 100644 --- a/server/src/main/java/com/ecep/contract/ds/customer/service/CompanyCustomerEvaluationFormFileService.java +++ b/server/src/main/java/com/ecep/contract/ds/customer/service/CompanyCustomerEvaluationFormFileService.java @@ -3,12 +3,9 @@ package com.ecep.contract.ds.customer.service; import java.util.List; import com.ecep.contract.constant.ParamConstant; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Caching; import org.springframework.context.annotation.Lazy; import org.springframework.data.domain.Page; @@ -16,9 +13,11 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; +import com.ecep.contract.EntityService; import com.ecep.contract.IEntityService; import com.ecep.contract.QueryService; import com.ecep.contract.SpringApp; +import com.ecep.contract.ds.MyRepository; import com.ecep.contract.ds.customer.repository.CompanyCustomerEvaluationFormFileRepository; import com.ecep.contract.ds.customer.model.CompanyCustomer; import com.ecep.contract.ds.customer.model.CompanyCustomerEvaluationFormFile; @@ -33,30 +32,31 @@ import com.fasterxml.jackson.databind.JsonNode; @Service @CacheConfig(cacheNames = "company-customer-evaluation-form-file") public class CompanyCustomerEvaluationFormFileService - implements IEntityService, QueryService, + extends EntityService + implements IEntityService, QueryService, VoableService { - private static final Logger logger = LoggerFactory.getLogger(CompanyCustomerEvaluationFormFileService.class); @Lazy @Autowired private CompanyCustomerEvaluationFormFileRepository repository; @Override - public CompanyCustomerEvaluationFormFile getById(Integer id) { - return repository.findById(id).orElse(null); - } - - @Cacheable(key = "#p0") - @Override - public CompanyCustomerEvaluationFormFile findById(Integer id) { - return getById(id); + protected CompanyCustomerEvaluationFormFileRepository getRepository() { + return repository; } @Override - public Specification getSearchSpecification(String searchText) { - if (!org.springframework.util.StringUtils.hasText(searchText)) { - return null; - } + public CompanyCustomerEvaluationFormFileVo findById(Integer id) { + return repository.findById(id).map(CompanyCustomerEvaluationFormFile::toVo).orElse(null); + } + + @Override + public CompanyCustomerEvaluationFormFile createNewEntity() { + return new CompanyCustomerEvaluationFormFile(); + } + + @Override + protected Specification buildSearchSpecification(String searchText) { return (root, query, builder) -> { var customerFile = root.get("customerFile"); return builder.or( @@ -64,8 +64,7 @@ public class CompanyCustomerEvaluationFormFileService builder.like(root.get("level"), "%" + searchText + "%"), builder.and( customerFile.isNotNull(), - builder.like(customerFile.get("filePath"), "%" + searchText + "%") - )); + builder.like(customerFile.get("filePath"), "%" + searchText + "%"))); }; } @@ -86,31 +85,23 @@ public class CompanyCustomerEvaluationFormFileService } @Override - public Page findAll(Specification spec, - Pageable pageable) { - return repository.findAll(spec, pageable); - } - - @Override - public Page findAll(JsonNode paramsNode, Pageable pageable) { + protected Specification buildParameterSpecification(JsonNode paramsNode) { Specification spec = null; - if (paramsNode.has(ParamConstant.KEY_SEARCH_TEXT)) { - spec = getSearchSpecification(paramsNode.get(ParamConstant.KEY_SEARCH_TEXT).asText()); - } - if (paramsNode.has("customer")) { spec = SpecificationUtils.and(spec, - (root, query, builder) -> builder.equal(root.get("customerFile").get("customer").get("id"), paramsNode.get("customer").asInt())); + (root, query, builder) -> builder.equal(root.get("customerFile").get("customer").get("id"), + paramsNode.get("customer").asInt())); } if (paramsNode.has("company")) { spec = SpecificationUtils.and(spec, - (root, query, builder) -> builder.equal(root.get("customerFile").get("customer").get("company").get("id"), paramsNode.get("company").asInt())); + (root, query, builder) -> builder.equal( + root.get("customerFile").get("customer").get("company").get("id"), + paramsNode.get("company").asInt())); } spec = SpecificationUtils.andParam(spec, paramsNode, "customerFile"); spec = SpecificationUtils.andFieldEqualParam(spec, paramsNode, "catalog", "level"); - - return findAll(spec, pageable); + return spec; } /** @@ -178,4 +169,5 @@ public class CompanyCustomerEvaluationFormFileService } } } + } \ No newline at end of file diff --git a/server_entity_services.md b/server_entity_services.md index 909130c..137b618 100644 --- a/server_entity_services.md +++ b/server_entity_services.md @@ -29,16 +29,16 @@ | ContractService | 是 | | ContractTypeService | 是 | | ExtendVendorInfoService | 是 | -| PurchaseBillVoucherItemService | 否 | -| PurchaseBillVoucherService | 否 | -| PurchaseOrderItemService | 否 | -| PurchaseOrdersService | 否 | +| PurchaseBillVoucherItemService | 是 | +| PurchaseBillVoucherService | 是 | +| PurchaseOrderItemService | 是 | +| PurchaseOrdersService | 是 | | SaleOrdersService | 是 | -| SalesBillVoucherItemService | 否 | +| SalesBillVoucherItemService | 是 | | SalesBillVoucherService | 是 | | SalesOrderItemService | 是 | -| CompanyCustomerEntityService | 否 | -| CompanyCustomerEvaluationFormFileService | 否 | +| CompanyCustomerEntityService | 是 | +| CompanyCustomerEvaluationFormFileService | 是 | | CompanyCustomerFileService | 否 | | CompanyCustomerFileTypeService | 否 | | CustomerCatalogService | 否 |