Загрузка данных
import lombok.experimental.UtilityClass;
import org.springframework.util.CollectionUtils;
import ru.vtb.dc.cc.api.v1.dto.QuestionOutput;
import ru.vtb.dc.cc.api.v1.dto.QuestionRequest;
import ru.vtb.dc.question.api.v1.dto.ClientIdDto;
import ru.vtb.dc.question.api.v1.dto.FullMember;
import ru.vtb.dc.question.api.v1.dto.MemberDto;
import ru.vtb.dc.question.api.v1.dto.QuestionFileDto;
import ru.vtb.dc.question.api.v1.dto.QuestionResponse;
import ru.vtb.dc.question.api.v1.dto.QuestionType;
import java.util.List;
import java.util.stream.Collectors;
@UtilityClass
public class ExternalQuestionMapper {
public static ru.vtb.dc.question.api.v1.dto.QuestionRequest map(QuestionRequest questionRequest) {
ru.vtb.dc.question.api.v1.dto.QuestionRequest request = ru.vtb.dc.question.api.v1.dto.QuestionRequest.builder()
.name(questionRequest.getName())
.agendaId(questionRequest.getAgendaId())
.changeDecisionLabel(questionRequest.getChangeDecisionLabel())
.committee(questionRequest.getCommittee())
.committeeCode(questionRequest.getCommitteeCode())
.committeeShortName(questionRequest.getCommitteeShortName())
.coveringLetter(questionRequest.getCoveringLetter())
.decisionClassifier(questionRequest.getDecisionClassifier())
.formType(questionRequest.getFormType())
.deadline(questionRequest.getDeadline())
.isChangeable(questionRequest.isChangeable())
.isCancelable(questionRequest.isCancelable())
.isAdditionalQuestion(questionRequest.isAdditionalQuestion())
.isClosed(questionRequest.isClosed())
.isNotSet(questionRequest.isNotSet())
.isStrict810(questionRequest.getIsStrict810())
.parentId(questionRequest.getParentId())
.processId(questionRequest.getProcessId())
.projectInfo(questionRequest.getProjectInfo())
.questionNumber(questionRequest.getQuestionNumber())
.questionVersion(questionRequest.getQuestionVersion())
.status(questionRequest.getStatus())
.type(QuestionType.valueOf(questionRequest.getType().name()))
.build();
if (!CollectionUtils.isEmpty(questionRequest.getMembers())) {
request.setMembers(
questionRequest.getMembers().stream()
.map(fullMember ->
MemberDto.builder()
.userName(fullMember.getUserName())
.role(fullMember.getRole())
.build())
.collect(Collectors.toList())
);
}
if (!CollectionUtils.isEmpty(questionRequest.getClientIds())) {
request.setClientIds(
questionRequest.getClientIds().stream()
.map(it ->
ClientIdDto.builder()
.slxId(it.getSlxId())
.mdmCode(it.getMdmCode())
.build())
.collect(Collectors.toList())
);
}
return request;
}
public static QuestionOutput map(
QuestionResponse questionResponse,
List<FullMember> members,
List<QuestionFileDto> questionFileDtoList
) {
return QuestionOutput.builder()
.id(questionResponse.getQuestionId())
.parentId(questionResponse.getParentId())
.status(questionResponse.getStatus())
.questionVersion(questionResponse.getQuestionVersion())
.questionNumber(questionResponse.getQuestionNumber())
.type(ru.vtb.dc.cc.api.v1.dto.QuestionType.valueOf(questionResponse.getType().name()))
.name(questionResponse.getName())
.coveringLetter(questionResponse.getCoveringLetter())
.startDate(questionResponse.getStartDate())
.deadline(questionResponse.getDeadline())
.members(members.stream()
.map(fullMemberResponse ->
ru.vtb.dc.cc.api.v1.dto.FullMember.builder()
.questionId(questionResponse.getQuestionId())
.role(fullMemberResponse.getRole())
.division(fullMemberResponse.getDivision())
.fullName(fullMemberResponse.getFullName())
.isCustom(fullMemberResponse.isCustom())
.memberId(fullMemberResponse.getMemberId())
.userName(fullMemberResponse.getUserName())
.position(fullMemberResponse.getPosition())
.build())
.collect(Collectors.toList()))
.documents(questionFileDtoList.stream()
.map(questionFileDto ->
ru.vtb.dc.cc.api.v1.dto.QuestionFileDto.builder()
.id(questionFileDto.getId())
.cxkId(questionFileDto.getCxkId())
.questionId(questionFileDto.getQuestionId())
.documentType(questionFileDto.getDocumentType())
.documentTypeName(questionFileDto.getDocumentTypeName())
.active(questionFileDto.getActive())
.deleteDate(questionFileDto.getDeleteDate())
.addDate(questionFileDto.getAddDate())
.documentUrl(questionFileDto.getDocumentUrl())
.fileName(questionFileDto.getFileName())
.initiator(questionFileDto.getInitiator())
.size(questionFileDto.getSize())
.build())
.collect(Collectors.toList()))
.processId(questionResponse.getProcessId())
.projectInfo(questionResponse.getProjectInfo())
.decisionClassifier(questionResponse.getDecisionClassifier())
.committee(questionResponse.getCommittee())
.committeeCode(questionResponse.getCommitteeCode())
.committeeShortName(questionResponse.getCommitteeShortName())
.agendaId(questionResponse.getAgendaId())
.isCancelable(questionResponse.getIsCancelable())
.isChangeable(questionResponse.getIsChangeable())
.isClosed(questionResponse.isClosed())
.isNotSet(questionResponse.isNotSet())
.isAdditionalQuestion(questionResponse.isAdditionalQuestion())
.isStrict810(questionResponse.getIsStrict810())
.changeDecisionLabel(questionResponse.getChangeDecisionLabel())
.formType(questionResponse.getFormType())
.callbackUrl(questionResponse.getCallbackUrl())
.build();
}
}