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

import com.infoloop.tianting.clientcustomerservice.BatchCreateClientCustomerLabelRefsRpcRequest;
import com.infoloop.tianting.clientcustomerservice.BatchCreateClientCustomerLabelRefsRpcResponse;
import com.infoloop.tianting.clientcustomerservice.BatchCreateClientCustomerOperationRecordsRpcRequest;
import com.infoloop.tianting.clientcustomerservice.BatchUpdateClientCustomerHospitalRecordsRpcRequest;
import com.infoloop.tianting.clientcustomerservice.ClientCustomerHospitalRecordModification;
import com.infoloop.tianting.clientcustomerservice.ClientCustomerLabelRefCreation;
import com.infoloop.tianting.clientcustomerservice.ClientCustomerOperationRecordCreation;
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.GetClientCustomerByHISCustomerNoRpcRequest;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByHISCustomerNoRpcResponse;
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.GetClientCustomerHospitalRecordsByCustomerIdsRpcRequest;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomersByHISCustomerIdsRpcRequest;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomersByHISCustomerIdsRpcResponse;
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.clientcustomerservice.SingleClientCustomerHospitalRecordRpcResponse;
import com.infoloop.tianting.context.LoginContextHolder;
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 GetClientCustomerByHISCustomerNoRpcResponse getClientCustomerByHISCustomerNo(
            String hisCustomerNo
    ) {
        final var request = GetClientCustomerByHISCustomerNoRpcRequest.newBuilder()
                .setHISCustomerNo(hisCustomerNo)
                .build();
        return clientCustomerServiceRpcBlockingStub.getClientCustomerByHISCustomerNo(request);
    }

    public GetClientCustomersByHISCustomerIdsRpcResponse getClientCustomersByHISCustomerIds(
            List<String> hisCustomerIds
    ) {
        final var request = GetClientCustomersByHISCustomerIdsRpcRequest.newBuilder()
                .addAllHISCustomerIds(hisCustomerIds)
                .build();
        return clientCustomerServiceRpcBlockingStub.getClientCustomersByHISCustomerIds(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))
                        .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);
    }

    public List<SingleClientCustomerHospitalRecordRpcResponse> getClientCustomerHospitalRecordsByCustomerIds(int enterpriseId, List<Integer> ids) {
        final var request = GetClientCustomerHospitalRecordsByCustomerIdsRpcRequest.newBuilder()
                .setEnterpriseId(enterpriseId)
                .addAllCustomerIds(ids)
                .build();
        return clientCustomerServiceRpcBlockingStub.getClientCustomerHospitalRecordsByCustomerIds(request).getResponsesList();
    }

    public boolean batchUpdateClientCustomerHospitalRecords(LoginContextHolder.LoginInfo loginInfo, List<ClientCustomerHospitalRecordModification> modifications) {
        final var request = BatchUpdateClientCustomerHospitalRecordsRpcRequest.newBuilder()
                .setEnterpriseId(loginInfo.getEnterpriseId())
                .setUpdatedBy(loginInfo.getId())
                .setUpdateSource(loginInfo.getLoginSource().getValue())
                .addAllModifications(modifications)
                .build();
        return clientCustomerServiceRpcBlockingStub.batchUpdateClientCustomerHospitalRecords(request).getIsUpdated();
    }

    public boolean batchCreateClientCustomerOperationRecords(LoginContextHolder.LoginInfo loginInfo, List<ClientCustomerOperationRecordCreation> creations) {
        final var request = BatchCreateClientCustomerOperationRecordsRpcRequest.newBuilder()
                .setEnterpriseId(loginInfo.getEnterpriseId())
                .setCreatedBy(loginInfo.getId())
                .setCreationSource(loginInfo.getLoginSource().getValue())
                .addAllCreations(creations)
                .build();
        return clientCustomerServiceRpcBlockingStub.batchCreateClientCustomerOperationRecords(request).getIsCreated();
    }
}