委外验收单 状态

pull/451/head
starrysky 2020-05-17 17:06:09 +08:00
parent 1dce7f2885
commit 0970a97d7c
15 changed files with 116 additions and 18 deletions

View File

@ -83,7 +83,7 @@ public class ProductInfoServiceImpl implements ProductInfoService {
String productCode = criteria.getProductCode(); String productCode = criteria.getProductCode();
if(!StringUtils.isEmpty(productCode)){ 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); targetPredicateList.add(productCodePredicate);
} }

View File

@ -29,7 +29,7 @@ public class CustomerOrderProduct implements Serializable {
// 所属客户订单 // 所属客户订单
@Column(name = "customer_order_code") @Column(name = "customer_order_code")
private Long customerOrderCode; private String customerOrderCode;
// 产品主键 // 产品主键
@Column(name = "product_id") @Column(name = "product_id")

View File

@ -37,8 +37,8 @@ public interface CustomerOrderRepository extends JpaRepository<CustomerOrder, Lo
* @param procStatus * @param procStatus
*/ */
@Modifying @Modifying
@Query(value = "update s_customer_order set proc_status = 0 where id = ?1", nativeQuery = true) @Query(value = "update s_customer_order set proc_status = ?1 where customer_order_code = ?2", nativeQuery = true)
void updateProcStatus(String procStatus); void updateProcStatus(String procStatus, String customerOrderCode);
} }

View File

@ -236,6 +236,7 @@ public class CustomerOrderServiceImpl implements CustomerOrderService {
BeanUtils.copyProperties(customerOrderProductRequest, customerOrderProduct); BeanUtils.copyProperties(customerOrderProductRequest, customerOrderProduct);
customerOrderProduct.setCustomerOrderId(customerOrder.getId()); customerOrderProduct.setCustomerOrderId(customerOrder.getId());
customerOrderProduct.setStatus(true); customerOrderProduct.setStatus(true);
customerOrderProduct.setCustomerOrderCode(customerOrderCode);
ProductInfo productInfo = productInfoRepository.findByProductCode(customerOrderProductRequest.getProductCode()); ProductInfo productInfo = productInfoRepository.findByProductCode(customerOrderProductRequest.getProductCode());
customerOrderProduct.setProductId(productInfo.getId()); customerOrderProduct.setProductId(productInfo.getId());
Long productNumber = customerOrderProduct.getProductNumber(); Long productNumber = customerOrderProduct.getProductNumber();

View File

@ -215,6 +215,10 @@ public class InvoiceServiceImpl implements InvoiceService {
throw new BadRequestException("客户订单编号不能为空!"); throw new BadRequestException("客户订单编号不能为空!");
} }
CustomerOrder customerOrder = customerOrderRepository.findByCustomerOrderCodeAndStatusTrue(customerOrderCode);
customerOrder.setProcStatus(ProcStatusEnum.SENDING_GOOD.getCode());
customerOrderRepository.save(customerOrder);
// 客户ID // 客户ID
Long customerId = createInvoiceRequest.getCustomerId(); Long customerId = createInvoiceRequest.getCustomerId();
if(null == customerId){ if(null == customerId){
@ -230,6 +234,7 @@ public class InvoiceServiceImpl implements InvoiceService {
throw new BadRequestException("客户不存在!"); throw new BadRequestException("客户不存在!");
} }
invoice.setCustomerName(customerInfo.getCustomerName()); invoice.setCustomerName(customerInfo.getCustomerName());
// 销售发货单号 // 销售发货单号
@ -378,10 +383,10 @@ public class InvoiceServiceImpl implements InvoiceService {
String productCodeTemp = entry.getKey(); String productCodeTemp = entry.getKey();
long productNumberTemp = entry.getValue(); long productNumberTemp = entry.getValue();
long productNumberTempExist = existProduct.get(productCodeTemp); long productNumberTempExist = existProduct.get(productCodeTemp);
if(productNumberTemp == productNumberTempExist || productNumberTemp > productNumberTempExist){ if(productNumberTemp == productNumberTempExist){
customerOrderRepository.updateProcStatus(ProcStatusEnum.COMPLETED.getCode()); customerOrderRepository.updateProcStatus(ProcStatusEnum.COMPLETED.getCode(), customerOrderCode);
}else{ }else{
customerOrderRepository.updateProcStatus(ProcStatusEnum.SENDING_GOOD.getCode()); customerOrderRepository.updateProcStatus(ProcStatusEnum.SENDING_GOOD.getCode(), customerOrderCode);
} }
} }
} }

View File

@ -39,6 +39,10 @@ public class OutSourceInspectionCertificateProduct implements Serializable {
@Column(name = "out_source_inspection_certificate_id") @Column(name = "out_source_inspection_certificate_id")
private Long outSourceInspectionCertificateId; private Long outSourceInspectionCertificateId;
// 所属委外验收单
@Column(name = "out_source_inspection_certificate_code")
private String outSourceInspectionCertificateCode;
@Column(name = "product_code") @Column(name = "product_code")
private String productCode; private String productCode;
@ -63,6 +67,13 @@ public class OutSourceInspectionCertificateProduct implements Serializable {
@Column(name = "scrap_number") @Column(name = "scrap_number")
private Integer scrapNumber; private Integer scrapNumber;
// 所属委外加工单
@Column(name = "out_source_process_sheet_code")
private String outSourceProcessSheetCode;
public void copy(OutSourceInspectionCertificateProduct source){ public void copy(OutSourceInspectionCertificateProduct source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
} }

View File

@ -42,6 +42,11 @@ public class OutSourceProcessSheetProduct implements Serializable {
@Column(name = "out_source_process_sheet_id") @Column(name = "out_source_process_sheet_id")
private Long outSourceProcessSheetId; private Long outSourceProcessSheetId;
@Column(name = "out_source_process_sheet_code")
private String outSourceProcessSheetCode;
// 产品主键 // 产品主键
@Column(name = "product_id",nullable = false) @Column(name = "product_id",nullable = false)
private Long productId; private Long productId;

View File

@ -1,5 +1,6 @@
package me.zhengjie.modules.wms.outSourceProductSheet.repository; 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.OutSourceInspectionCertificateProduct;
import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheetProduct; import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheetProduct;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
@ -26,4 +27,12 @@ public interface OutSourceInspectionCertificateProductRepository extends JpaRepo
@Modifying @Modifying
@Query(value = "delete s_out_source_inspection_certificate_product where product_code = ?1 and out_source_inspection_certificate_id = ?2", nativeQuery = true) @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); void deleteByProductCodeAndOutSourceInspectionCertificateId(String productCode, Long outSourceInspectionCertificateId);
/**
*
* @param outSourceProcessSheetCode
* @return
*/
List<OutSourceInspectionCertificateProduct> findByOutSourceProcessSheetCodeAndStatusTrue(String outSourceProcessSheetCode);
} }

View File

@ -1,6 +1,5 @@
package me.zhengjie.modules.wms.outSourceProductSheet.repository; package me.zhengjie.modules.wms.outSourceProductSheet.repository;
import me.zhengjie.modules.wms.invoice.domain.InvoiceProduct;
import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheetProduct; import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheetProduct;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
@ -23,6 +22,13 @@ public interface OutSourceProcessSheetProductRepository extends JpaRepository<Ou
@Query(value ="select * from s_out_source_process_sheet_product where out_source_process_sheet_id = ?1 and status =1", nativeQuery = true) @Query(value ="select * from s_out_source_process_sheet_product where out_source_process_sheet_id = ?1 and status =1", nativeQuery = true)
List<OutSourceProcessSheetProduct> queryByOutSourceProcessSheetIdAndStatusTrue(Long outSourceProcessSheetId); List<OutSourceProcessSheetProduct> queryByOutSourceProcessSheetIdAndStatusTrue(Long outSourceProcessSheetId);
/**
* codestatustrue
* @param outSourceProcessSheetCode
* @return
*/
List<OutSourceProcessSheetProduct> queryByOutSourceProcessSheetCodeAndStatusTrue(String outSourceProcessSheetCode);
@Modifying @Modifying
@Query(value = "delete from s_out_source_process_sheet_product where product_code = ?1 and out_source_process_sheet_id = ?2", nativeQuery = true) @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); void deleteByProductCodeAndOutSourceProcessSheetId(String productCode, Long outSourceProcessSheetId);

View File

@ -3,6 +3,7 @@ package me.zhengjie.modules.wms.outSourceProductSheet.repository;
import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheet; import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheet;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
/** /**
@ -18,4 +19,8 @@ public interface OutSourceProcessSheetRepository extends JpaRepository<OutSource
*/ */
@Query(value ="select * from s_out_source_process_sheet where out_source_process_sheet_code = ?1 and status = 1", nativeQuery = true) @Query(value ="select * from s_out_source_process_sheet where out_source_process_sheet_code = ?1 and status = 1", nativeQuery = true)
OutSourceProcessSheet findByOutSourceProcessSheetCode(String outSourceProcessSheetCode); OutSourceProcessSheet findByOutSourceProcessSheetCode(String outSourceProcessSheetCode);
@Modifying
@Query(value = "update s_out_source_process_sheet set proc_status = ?1 where out_source_process_sheet_code = ?2", nativeQuery = true)
void updateProcStatus(String procStatus, String outSourceProcessSheetCode);
} }

View File

@ -17,7 +17,7 @@ import java.util.List;
public class CreateOutSourceInspectionCertificateRequest implements Serializable { public class CreateOutSourceInspectionCertificateRequest implements Serializable {
// 所属委外加工单 // 所属委外加工单code
private String outSourceProcessSheetCode; private String outSourceProcessSheetCode;
// 制单人 // 制单人

View File

@ -27,6 +27,8 @@ public class OutSourceInspectionCertificateProductDTO implements Serializable {
// 所属委外验收单 // 所属委外验收单
private Long outSourceInspectionCertificateId; private Long outSourceInspectionCertificateId;
private Long outSourceInspectionCertificateCode;
private String productCode; private String productCode;
private Long productId; private Long productId;
@ -44,4 +46,7 @@ public class OutSourceInspectionCertificateProductDTO implements Serializable {
// 报废数量 // 报废数量
private Integer scrapNumber; private Integer scrapNumber;
// 所属委外加工单
private String outSourceProcessSheetCode;
} }

View File

@ -27,6 +27,8 @@ public class OutSourceProcessSheetProductDTO implements Serializable {
// 所属委外加工单 // 所属委外加工单
private Long outSourceProcessSheetId; private Long outSourceProcessSheetId;
private String outSourceProcessSheetCode;
// 产品主键 // 产品主键
private Long productId; private Long productId;

View File

@ -12,16 +12,19 @@ import me.zhengjie.modules.system.repository.UserRepository;
import me.zhengjie.modules.system.service.UserService; import me.zhengjie.modules.system.service.UserService;
import me.zhengjie.modules.system.service.dto.UserDTO; import me.zhengjie.modules.system.service.dto.UserDTO;
import me.zhengjie.modules.system.service.dto.UserQueryCriteria; import me.zhengjie.modules.system.service.dto.UserQueryCriteria;
import me.zhengjie.modules.wms.customerOrder.domain.CustomerOrderProduct;
import me.zhengjie.modules.wms.invoice.domain.InvoiceProduct;
import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceInspectionCertificate; import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceInspectionCertificate;
import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceInspectionCertificateProduct; import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceInspectionCertificateProduct;
import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheet; import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheet;
import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheetProduct; import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheetProduct;
import me.zhengjie.modules.wms.outSourceProductSheet.repository.OutSourceInspectionCertificateProductRepository; import me.zhengjie.modules.wms.outSourceProductSheet.repository.OutSourceInspectionCertificateProductRepository;
import me.zhengjie.modules.wms.outSourceProductSheet.repository.OutSourceProcessSheetProductRepository;
import me.zhengjie.modules.wms.outSourceProductSheet.repository.OutSourceProcessSheetRepository;
import me.zhengjie.modules.wms.outSourceProductSheet.request.*; import me.zhengjie.modules.wms.outSourceProductSheet.request.*;
import me.zhengjie.modules.wms.outSourceProductSheet.service.dto.*; import me.zhengjie.modules.wms.outSourceProductSheet.service.dto.*;
import me.zhengjie.modules.wms.outSourceProductSheet.service.mapper.OutSourceInspectionCertificateProductMapper; import me.zhengjie.modules.wms.outSourceProductSheet.service.mapper.OutSourceInspectionCertificateProductMapper;
import me.zhengjie.utils.SecurityUtils; import me.zhengjie.utils.*;
import me.zhengjie.utils.ValidationUtil;
import me.zhengjie.modules.wms.outSourceProductSheet.repository.OutSourceInspectionCertificateRepository; import me.zhengjie.modules.wms.outSourceProductSheet.repository.OutSourceInspectionCertificateRepository;
import me.zhengjie.modules.wms.outSourceProductSheet.service.OutSourceInspectionCertificateService; import me.zhengjie.modules.wms.outSourceProductSheet.service.OutSourceInspectionCertificateService;
import me.zhengjie.modules.wms.outSourceProductSheet.service.mapper.OutSourceInspectionCertificateMapper; import me.zhengjie.modules.wms.outSourceProductSheet.service.mapper.OutSourceInspectionCertificateMapper;
@ -32,17 +35,12 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import me.zhengjie.utils.PageUtil;
import me.zhengjie.utils.QueryHelp;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@ -79,6 +77,12 @@ public class OutSourceInspectionCertificateServiceImpl implements OutSourceInspe
@Autowired @Autowired
private UserRepository userRepository; private UserRepository userRepository;
@Autowired
private OutSourceProcessSheetProductRepository outSourceProcessSheetProductRepository;
@Autowired
private OutSourceProcessSheetRepository outSourceProcessSheetRepository;
@Override @Override
public Object queryAll(OutSourceInspectionCertificateQueryCriteria criteria, Pageable pageable){ public Object queryAll(OutSourceInspectionCertificateQueryCriteria criteria, Pageable pageable){
Specification<OutSourceInspectionCertificate> specification = new Specification<OutSourceInspectionCertificate>() { Specification<OutSourceInspectionCertificate> specification = new Specification<OutSourceInspectionCertificate>() {
@ -148,9 +152,12 @@ public class OutSourceInspectionCertificateServiceImpl implements OutSourceInspe
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public OutSourceInspectionCertificateDTO create(CreateOutSourceInspectionCertificateRequest createOutSourceInspectionCertificateRequest) { public OutSourceInspectionCertificateDTO create(CreateOutSourceInspectionCertificateRequest createOutSourceInspectionCertificateRequest) {
// 委外加工单code
String outSourceProcessSheetCode = createOutSourceInspectionCertificateRequest.getOutSourceProcessSheetCode();
OutSourceInspectionCertificate outSourceInspectionCertificate = new OutSourceInspectionCertificate(); OutSourceInspectionCertificate outSourceInspectionCertificate = new OutSourceInspectionCertificate();
BeanUtils.copyProperties(createOutSourceInspectionCertificateRequest, outSourceInspectionCertificate); BeanUtils.copyProperties(createOutSourceInspectionCertificateRequest, outSourceInspectionCertificate);
// 委外验收单code
String outSourceInspectionCertificateCode = outSourceInspectionCertificate.getOutSourceInspectionCertificateCode(); String outSourceInspectionCertificateCode = outSourceInspectionCertificate.getOutSourceInspectionCertificateCode();
if(!StringUtils.hasLength(outSourceInspectionCertificateCode)){ if(!StringUtils.hasLength(outSourceInspectionCertificateCode)){
throw new BadRequestException("委外验收单单据编号不能为空!"); throw new BadRequestException("委外验收单单据编号不能为空!");
@ -172,6 +179,8 @@ public class OutSourceInspectionCertificateServiceImpl implements OutSourceInspe
OutSourceInspectionCertificateProduct outSourceInspectionCertificateProduct = new OutSourceInspectionCertificateProduct(); OutSourceInspectionCertificateProduct outSourceInspectionCertificateProduct = new OutSourceInspectionCertificateProduct();
BeanUtils.copyProperties(outSourceInspectionCertificateProductRequest, outSourceInspectionCertificateProduct); BeanUtils.copyProperties(outSourceInspectionCertificateProductRequest, outSourceInspectionCertificateProduct);
outSourceInspectionCertificateProduct.setStatus(true); outSourceInspectionCertificateProduct.setStatus(true);
outSourceInspectionCertificateProduct.setOutSourceProcessSheetCode(outSourceProcessSheetCode);
outSourceInspectionCertificateProduct.setOutSourceInspectionCertificateCode(outSourceInspectionCertificateCode);
outSourceInspectionCertificateProduct.setOutSourceInspectionCertificateId(outSourceInspectionCertificate.getId()); outSourceInspectionCertificateProduct.setOutSourceInspectionCertificateId(outSourceInspectionCertificate.getId());
outSourceInspectionCertificateProductRepository.save(outSourceInspectionCertificateProduct); outSourceInspectionCertificateProductRepository.save(outSourceInspectionCertificateProduct);
} }
@ -217,7 +226,46 @@ public class OutSourceInspectionCertificateServiceImpl implements OutSourceInspe
messageRepository.saveAll(messageList); messageRepository.saveAll(messageList);
} }
// 修改为外加工单状态 // 查看指定委外加工单下的委外验收单产品信息
Map<String, Long> existProduct = new HashMap<>();
List<OutSourceInspectionCertificateProduct> existProductList = outSourceInspectionCertificateProductRepository.findByOutSourceProcessSheetCodeAndStatusTrue(outSourceProcessSheetCode);
if(!CollectionUtils.isEmpty(existProductList)){
Map<String, List<OutSourceInspectionCertificateProduct>> existProductMap = existProductList.stream().collect(Collectors.groupingBy(OutSourceInspectionCertificateProduct::getProductCode));
for(Map.Entry<String, List<OutSourceInspectionCertificateProduct>> entry : existProductMap.entrySet()){
String productCode = entry.getKey();
List<OutSourceInspectionCertificateProduct> invoiceProductListTemp = entry.getValue();
if(!CollectionUtils.isEmpty(invoiceProductListTemp)){
Long productNumberTotal = invoiceProductListTemp.stream().mapToLong(OutSourceInspectionCertificateProduct::getQualifiedNumber).sum();
existProduct.put(productCode, productNumberTotal);
}
}
}
Map<String, Long> sourceProduct = new HashMap<>();
List<OutSourceProcessSheetProduct> sourceProductList = outSourceProcessSheetProductRepository.queryByOutSourceProcessSheetCodeAndStatusTrue(outSourceProcessSheetCode);
if(!CollectionUtils.isEmpty(sourceProductList)){
Map<String, List<OutSourceProcessSheetProduct>> sourceProductMap = sourceProductList.stream().collect(Collectors.groupingBy(OutSourceProcessSheetProduct::getProductCode));
for(Map.Entry<String, List<OutSourceProcessSheetProduct>> entry : sourceProductMap.entrySet()){
String productCode = entry.getKey();
List<OutSourceProcessSheetProduct> 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<String, Long> 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){ }catch (Exception e){
log.error("单据编号:插入消息失败!"); log.error("单据编号:插入消息失败!");
} }

View File

@ -223,6 +223,7 @@ public class OutSourceProcessSheetServiceImpl implements OutSourceProcessSheetSe
OutSourceProcessSheetProduct outSourceProcessSheetProduct = new OutSourceProcessSheetProduct(); OutSourceProcessSheetProduct outSourceProcessSheetProduct = new OutSourceProcessSheetProduct();
BeanUtils.copyProperties(outSourceProcessSheetProductRequest, outSourceProcessSheetProduct); BeanUtils.copyProperties(outSourceProcessSheetProductRequest, outSourceProcessSheetProduct);
outSourceProcessSheetProduct.setStatus(true); outSourceProcessSheetProduct.setStatus(true);
outSourceProcessSheetProduct.setOutSourceProcessSheetCode(outSourceProcessSheetCode);
outSourceProcessSheetProduct.setOutSourceProcessSheetId(outSourceProcessSheet.getId()); outSourceProcessSheetProduct.setOutSourceProcessSheetId(outSourceProcessSheet.getId());
outSourceProcessSheetProductRepository.save(outSourceProcessSheetProduct); outSourceProcessSheetProductRepository.save(outSourceProcessSheetProduct);
} }