diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/impl/ProductInfoServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/impl/ProductInfoServiceImpl.java index 97544549..e2be6ec4 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/impl/ProductInfoServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/impl/ProductInfoServiceImpl.java @@ -83,7 +83,7 @@ public class ProductInfoServiceImpl implements ProductInfoService { String productCode = criteria.getProductCode(); if(!StringUtils.isEmpty(productCode)){ - Predicate productCodePredicate = criteriaBuilder.equal(root.get("productCode"), productCode); + Predicate productCodePredicate = criteriaBuilder.like(root.get("productCode").as(String.class), "%" + criteria.getProductCode() + "%"); targetPredicateList.add(productCodePredicate); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/customerOrder/domain/CustomerOrderProduct.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/customerOrder/domain/CustomerOrderProduct.java index f774999d..27c90107 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/customerOrder/domain/CustomerOrderProduct.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/customerOrder/domain/CustomerOrderProduct.java @@ -29,7 +29,7 @@ public class CustomerOrderProduct implements Serializable { // 所属客户订单 @Column(name = "customer_order_code") - private Long customerOrderCode; + private String customerOrderCode; // 产品主键 @Column(name = "product_id") diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/customerOrder/repository/CustomerOrderRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/customerOrder/repository/CustomerOrderRepository.java index 695c1c0a..2a911307 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/customerOrder/repository/CustomerOrderRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/customerOrder/repository/CustomerOrderRepository.java @@ -37,8 +37,8 @@ public interface CustomerOrderRepository extends JpaRepository productNumberTempExist){ - customerOrderRepository.updateProcStatus(ProcStatusEnum.COMPLETED.getCode()); + if(productNumberTemp == productNumberTempExist){ + customerOrderRepository.updateProcStatus(ProcStatusEnum.COMPLETED.getCode(), customerOrderCode); }else{ - customerOrderRepository.updateProcStatus(ProcStatusEnum.SENDING_GOOD.getCode()); + customerOrderRepository.updateProcStatus(ProcStatusEnum.SENDING_GOOD.getCode(), customerOrderCode); } } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/domain/OutSourceInspectionCertificateProduct.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/domain/OutSourceInspectionCertificateProduct.java index 32d532a4..5e785152 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/domain/OutSourceInspectionCertificateProduct.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/domain/OutSourceInspectionCertificateProduct.java @@ -39,6 +39,10 @@ public class OutSourceInspectionCertificateProduct implements Serializable { @Column(name = "out_source_inspection_certificate_id") private Long outSourceInspectionCertificateId; + // 所属委外验收单 + @Column(name = "out_source_inspection_certificate_code") + private String outSourceInspectionCertificateCode; + @Column(name = "product_code") private String productCode; @@ -63,6 +67,13 @@ public class OutSourceInspectionCertificateProduct implements Serializable { @Column(name = "scrap_number") private Integer scrapNumber; + + // 所属委外加工单 + @Column(name = "out_source_process_sheet_code") + private String outSourceProcessSheetCode; + + + public void copy(OutSourceInspectionCertificateProduct source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/domain/OutSourceProcessSheetProduct.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/domain/OutSourceProcessSheetProduct.java index 3f8c93d6..7ac92dcc 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/domain/OutSourceProcessSheetProduct.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/domain/OutSourceProcessSheetProduct.java @@ -42,6 +42,11 @@ public class OutSourceProcessSheetProduct implements Serializable { @Column(name = "out_source_process_sheet_id") private Long outSourceProcessSheetId; + + @Column(name = "out_source_process_sheet_code") + private String outSourceProcessSheetCode; + + // 产品主键 @Column(name = "product_id",nullable = false) private Long productId; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/repository/OutSourceInspectionCertificateProductRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/repository/OutSourceInspectionCertificateProductRepository.java index 4a70277e..9bd84d09 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/repository/OutSourceInspectionCertificateProductRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/repository/OutSourceInspectionCertificateProductRepository.java @@ -1,5 +1,6 @@ package me.zhengjie.modules.wms.outSourceProductSheet.repository; +import me.zhengjie.modules.wms.invoice.domain.InvoiceProduct; import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceInspectionCertificateProduct; import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheetProduct; import org.springframework.data.jpa.repository.JpaRepository; @@ -26,4 +27,12 @@ public interface OutSourceInspectionCertificateProductRepository extends JpaRepo @Modifying @Query(value = "delete s_out_source_inspection_certificate_product where product_code = ?1 and out_source_inspection_certificate_id = ?2", nativeQuery = true) void deleteByProductCodeAndOutSourceInspectionCertificateId(String productCode, Long outSourceInspectionCertificateId); + + + /** + * 根据委外加工单,查看委外验收单产品列表 + * @param outSourceProcessSheetCode + * @return + */ + List findByOutSourceProcessSheetCodeAndStatusTrue(String outSourceProcessSheetCode); } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/repository/OutSourceProcessSheetProductRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/repository/OutSourceProcessSheetProductRepository.java index ebe2c1eb..db5092dd 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/repository/OutSourceProcessSheetProductRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/repository/OutSourceProcessSheetProductRepository.java @@ -1,6 +1,5 @@ package me.zhengjie.modules.wms.outSourceProductSheet.repository; -import me.zhengjie.modules.wms.invoice.domain.InvoiceProduct; import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheetProduct; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; @@ -23,6 +22,13 @@ public interface OutSourceProcessSheetProductRepository extends JpaRepository queryByOutSourceProcessSheetIdAndStatusTrue(Long outSourceProcessSheetId); + /** + * 根据委外加工单code查看委外加工单产品信息,且status为true + * @param outSourceProcessSheetCode + * @return + */ + List queryByOutSourceProcessSheetCodeAndStatusTrue(String outSourceProcessSheetCode); + @Modifying @Query(value = "delete from s_out_source_process_sheet_product where product_code = ?1 and out_source_process_sheet_id = ?2", nativeQuery = true) void deleteByProductCodeAndOutSourceProcessSheetId(String productCode, Long outSourceProcessSheetId); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/repository/OutSourceProcessSheetRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/repository/OutSourceProcessSheetRepository.java index 9249635d..77f0dd3b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/repository/OutSourceProcessSheetRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/repository/OutSourceProcessSheetRepository.java @@ -3,6 +3,7 @@ package me.zhengjie.modules.wms.outSourceProductSheet.repository; import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheet; 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; /** @@ -18,4 +19,8 @@ public interface OutSourceProcessSheetRepository extends JpaRepository specification = new Specification() { @@ -148,9 +152,12 @@ public class OutSourceInspectionCertificateServiceImpl implements OutSourceInspe @Override @Transactional(rollbackFor = Exception.class) public OutSourceInspectionCertificateDTO create(CreateOutSourceInspectionCertificateRequest createOutSourceInspectionCertificateRequest) { + // 委外加工单code + String outSourceProcessSheetCode = createOutSourceInspectionCertificateRequest.getOutSourceProcessSheetCode(); OutSourceInspectionCertificate outSourceInspectionCertificate = new OutSourceInspectionCertificate(); BeanUtils.copyProperties(createOutSourceInspectionCertificateRequest, outSourceInspectionCertificate); + // 委外验收单code String outSourceInspectionCertificateCode = outSourceInspectionCertificate.getOutSourceInspectionCertificateCode(); if(!StringUtils.hasLength(outSourceInspectionCertificateCode)){ throw new BadRequestException("委外验收单单据编号不能为空!"); @@ -172,6 +179,8 @@ public class OutSourceInspectionCertificateServiceImpl implements OutSourceInspe OutSourceInspectionCertificateProduct outSourceInspectionCertificateProduct = new OutSourceInspectionCertificateProduct(); BeanUtils.copyProperties(outSourceInspectionCertificateProductRequest, outSourceInspectionCertificateProduct); outSourceInspectionCertificateProduct.setStatus(true); + outSourceInspectionCertificateProduct.setOutSourceProcessSheetCode(outSourceProcessSheetCode); + outSourceInspectionCertificateProduct.setOutSourceInspectionCertificateCode(outSourceInspectionCertificateCode); outSourceInspectionCertificateProduct.setOutSourceInspectionCertificateId(outSourceInspectionCertificate.getId()); outSourceInspectionCertificateProductRepository.save(outSourceInspectionCertificateProduct); } @@ -217,7 +226,46 @@ public class OutSourceInspectionCertificateServiceImpl implements OutSourceInspe messageRepository.saveAll(messageList); } - // 修改为外加工单状态 + // 查看指定委外加工单下的委外验收单产品信息 + Map existProduct = new HashMap<>(); + List existProductList = outSourceInspectionCertificateProductRepository.findByOutSourceProcessSheetCodeAndStatusTrue(outSourceProcessSheetCode); + if(!CollectionUtils.isEmpty(existProductList)){ + Map> existProductMap = existProductList.stream().collect(Collectors.groupingBy(OutSourceInspectionCertificateProduct::getProductCode)); + for(Map.Entry> entry : existProductMap.entrySet()){ + String productCode = entry.getKey(); + List invoiceProductListTemp = entry.getValue(); + if(!CollectionUtils.isEmpty(invoiceProductListTemp)){ + Long productNumberTotal = invoiceProductListTemp.stream().mapToLong(OutSourceInspectionCertificateProduct::getQualifiedNumber).sum(); + existProduct.put(productCode, productNumberTotal); + } + } + } + Map sourceProduct = new HashMap<>(); + List sourceProductList = outSourceProcessSheetProductRepository.queryByOutSourceProcessSheetCodeAndStatusTrue(outSourceProcessSheetCode); + if(!CollectionUtils.isEmpty(sourceProductList)){ + Map> sourceProductMap = sourceProductList.stream().collect(Collectors.groupingBy(OutSourceProcessSheetProduct::getProductCode)); + for(Map.Entry> entry : sourceProductMap.entrySet()){ + String productCode = entry.getKey(); + List customerOrderProductListTemp = entry.getValue(); + if(!CollectionUtils.isEmpty(customerOrderProductListTemp)){ + Long productNumberTotal = customerOrderProductListTemp.stream().mapToLong(OutSourceProcessSheetProduct::getProductNumber).sum(); + sourceProduct.put(productCode, productNumberTotal); + } + } + } + + if(!CollectionUtils.isEmpty(sourceProduct)){ + for(Map.Entry entry : sourceProduct.entrySet()){ + String productCodeTemp = entry.getKey(); + long productNumberTemp = entry.getValue(); + long productNumberTempExist = existProduct.get(productCodeTemp); + if(productNumberTemp == productNumberTempExist){ + outSourceProcessSheetRepository.updateProcStatus(ProcStatusEnum.COMPLETED.getCode(), outSourceProcessSheetCode); + }else{ + outSourceProcessSheetRepository.updateProcStatus(ProcStatusEnum.OUT_SOURCE_INSPECTION_ING.getCode(), outSourceProcessSheetCode); + } + } + } }catch (Exception e){ log.error("单据编号:插入消息失败!"); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/service/impl/OutSourceProcessSheetServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/service/impl/OutSourceProcessSheetServiceImpl.java index c68a772a..16a67132 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/service/impl/OutSourceProcessSheetServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/outSourceProductSheet/service/impl/OutSourceProcessSheetServiceImpl.java @@ -223,6 +223,7 @@ public class OutSourceProcessSheetServiceImpl implements OutSourceProcessSheetSe OutSourceProcessSheetProduct outSourceProcessSheetProduct = new OutSourceProcessSheetProduct(); BeanUtils.copyProperties(outSourceProcessSheetProductRequest, outSourceProcessSheetProduct); outSourceProcessSheetProduct.setStatus(true); + outSourceProcessSheetProduct.setOutSourceProcessSheetCode(outSourceProcessSheetCode); outSourceProcessSheetProduct.setOutSourceProcessSheetId(outSourceProcessSheet.getId()); outSourceProcessSheetProductRepository.save(outSourceProcessSheetProduct); }