ClientCustomerServiceRpcClient.java 6.57 KB
package com.infoloop.tianting.service.client;

import com.infoloop.tianting.clientcustomerservice.BatchCreateClientCustomerLabelRefsRpcRequest;
import com.infoloop.tianting.clientcustomerservice.BatchCreateClientCustomerLabelRefsRpcResponse;
import com.infoloop.tianting.clientcustomerservice.ClientCustomerLabelRefCreation;
import com.infoloop.tianting.clientcustomerservice.ClientCustomerServiceRpcGrpc;
import com.infoloop.tianting.clientcustomerservice.DeleteClientCustomerLabelRefsByIdsRpcRequest;
import com.infoloop.tianting.clientcustomerservice.DeleteClientCustomerLabelRefsRpcResponse;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByContactNoRpcRequest;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByContactNoRpcResponse;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByHISCustomerIdRpcRequest;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByHISCustomerIdRpcResponse;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByIdRpcRequest;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByIdRpcResponse;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByMobileRpcRequest;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByMobileRpcResponse;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomerHospitalRecordByCustomerIdRpcRequest;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomerHospitalRecordByCustomerIdRpcResponse;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomersByIdsRpcRequest;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomersByIdsRpcResponse;
import com.infoloop.tianting.clientcustomerservice.QueryClientCustomerLabelRefsByConditionRpcRequest;
import com.infoloop.tianting.clientcustomerservice.QueryClientCustomerLabelRefsByConditionRpcResponse;
import com.infoloop.tianting.model.dto.ClientLabelDTO.BatchCreateCustomerLabelRefDto;
import com.infoloop.tianting.model.dto.ClientLabelDTO.BatchDeleteCustomerLabelRefRequestDto;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class ClientCustomerServiceRpcClient {

  private final ClientCustomerServiceRpcGrpc.ClientCustomerServiceRpcBlockingStub
      clientCustomerServiceRpcBlockingStub;

  public GetClientCustomerByHISCustomerIdRpcResponse getClientCustomerByHISCustomerId(
      String hisCustomerId
  ) {
    final var request = GetClientCustomerByHISCustomerIdRpcRequest.newBuilder()
        .setHISCustomerId(hisCustomerId)
        .build();
    return clientCustomerServiceRpcBlockingStub.getClientCustomerByHISCustomerId(request);
  }

  public GetClientCustomerByContactNoRpcResponse getClientCustomerByContactNo(String contractNo) {
    final var request = GetClientCustomerByContactNoRpcRequest.newBuilder()
        .setContractNo(contractNo).build();
    return clientCustomerServiceRpcBlockingStub.getClientCustomerByContactNo(request);
  }

  public GetClientCustomerByIdRpcResponse getClientCustomerById(Integer enterpriseId, Integer id) {
    final var request = GetClientCustomerByIdRpcRequest.newBuilder()
        .setEnterpriseId(enterpriseId)
        .setIncludeDeleted(false)
        .setId(id)
        .build();
    return clientCustomerServiceRpcBlockingStub.getClientCustomerById(request);
  }

  public GetClientCustomersByIdsRpcResponse getClientCustomersByIds(
      Integer enterpriseId, List<Integer> ids) {
    final var request = GetClientCustomersByIdsRpcRequest.newBuilder()
        .setEnterpriseId(enterpriseId).addAllIds(ids)
        .build();
    return clientCustomerServiceRpcBlockingStub.getClientCustomersByIds(request);
  }

  public GetClientCustomerByMobileRpcResponse getClientCustomerByMobile(String phone) {
    final var request = GetClientCustomerByMobileRpcRequest.newBuilder()
        .setMobile(phone)
        .build();
    return clientCustomerServiceRpcBlockingStub.getClientCustomerByMobile(request);
  }

  public GetClientCustomerHospitalRecordByCustomerIdRpcResponse
  getClientCustomerHospitalRecordsByCustomerId(Integer enterpriseId, Integer customerId) {
    final var request = GetClientCustomerHospitalRecordByCustomerIdRpcRequest.newBuilder()
        .setCustomerId(customerId)
        .setEnterpriseId(enterpriseId)
        .setIncludeDeleted(false)
        .build();
    return clientCustomerServiceRpcBlockingStub.getClientCustomerHospitalRecordByCustomerId(request);
  }

  public BatchCreateClientCustomerLabelRefsRpcResponse batchCreateClientCustomerLabelRefs(
      BatchCreateCustomerLabelRefDto batchCreateCustomerLabelRefDto) {
    final var creations = batchCreateCustomerLabelRefDto.getCreations().stream().map(
        creation -> ClientCustomerLabelRefCreation.newBuilder()
            .setCustomerId(creation.getCustomerId())
            .setLabelId(creation.getLabelId())
            .build()
    ).collect(Collectors.toList());

    final var request = BatchCreateClientCustomerLabelRefsRpcRequest.newBuilder()
        .setCreationSource(batchCreateCustomerLabelRefDto.getCreationSource().getNumber())
        .setCreatedBy(batchCreateCustomerLabelRefDto.getCreatedBy())
        .setEnterpriseId(batchCreateCustomerLabelRefDto.getEnterpriseId())
        .addAllCreations(creations)
        .build();
    return clientCustomerServiceRpcBlockingStub.batchCreateClientCustomerLabelRefs(request);
  }

  public QueryClientCustomerLabelRefsByConditionRpcResponse getCustomerLabelsByCustomerId(
      Integer enterpriseId, Integer customerId
  ) {
    final var request =
        QueryClientCustomerLabelRefsByConditionRpcRequest.newBuilder()
            .setEnterpriseId(enterpriseId)
            .setShouldFilterCustomerIds(true)
            .addAllCustomerIds(List.of(customerId))
            .setShouldFilterLabelIds(false)
            .addLabelIds(0)
            .build();
    return clientCustomerServiceRpcBlockingStub.queryClientCustomerLabelRefsByCondition(request);
  }

  public DeleteClientCustomerLabelRefsRpcResponse batchDeleteClientCustomerLabelRefsByIds(
      BatchDeleteCustomerLabelRefRequestDto batchDeleteCustomerLabelRefRequestDto) {
    final var request = DeleteClientCustomerLabelRefsByIdsRpcRequest.newBuilder()
        .setEnterpriseId(batchDeleteCustomerLabelRefRequestDto.getEnterpriseId())
        .addAllIds(batchDeleteCustomerLabelRefRequestDto.getIds())
        .build();
    return clientCustomerServiceRpcBlockingStub.deleteClientCustomerLabelRefsByIds(request);
  }
}