Commit 709456c1 authored by George Novikov's avatar George Novikov

отдельное сохранение списка версий, вывод версий через /api/template/allVersion/{code}

parent 66a9e279
......@@ -57,7 +57,7 @@ public class TemplateDto {
.code(te.getCode())
.status(te.getStatus())
.templateFile(new TemplateFileDataDto(te.getTemplate().getId(),te.getTemplate().getName(), te.getTemplate().getData()))
.headerFile(te.getTempleateHeader()!=null?new TemplateFileDataDto(te.getTempleateHeader().getId(),te.getTempleateHeader().getName(), te.getTempleateHeader().getData()):null)
.headerFile(te.getTemplateHeader()!=null?new TemplateFileDataDto(te.getTemplateHeader().getId(),te.getTemplateHeader().getName(), te.getTemplateHeader().getData()):null)
.type(te.getType().getCode())
.project(te.getProject())
.version(te.getVersion())
......@@ -72,7 +72,7 @@ public class TemplateDto {
.status(te.getStatus())
.project(te.getProject())
.templateFile(new TemplateFileDataDto(te.getTemplate().getId(),te.getTemplate().getName(), te.getTemplate().getData()))
.headerFile(te.getTempleateHeader()!=null?new TemplateFileDataDto(te.getTempleateHeader().getId(),te.getTempleateHeader().getName(), te.getTempleateHeader().getData()):null)
.headerFile(te.getTemplateHeader()!=null?new TemplateFileDataDto(te.getTemplateHeader().getId(),te.getTemplateHeader().getName(), te.getTemplateHeader().getData()):null)
.type(te.getType().getCode())
.version(te.getVersion())
.build();
......@@ -99,6 +99,24 @@ public class TemplateDto {
return new PageImpl<>(dtos, PageRequest.of(all.getNumber(),all.getSize()),all.getTotalElements());
}
public static Page<TemplateDto> toDtoList(Page<TemplateEntity> all, Page<TemplateEntity> versions){
if(all.getContent() == null && versions.getContent() == null) return null;
List<TemplateDto> dtos = new ArrayList<>();
if (all.getContent() != null){
for (TemplateEntity te:all.getContent()) {
dtos.add(TemplateDto.toDtoAll(te));
}
}
if (versions.getContent() != null){
for (TemplateEntity ver:versions.getContent()) {
dtos.add(TemplateDto.toDtoAll(ver));
}
}
return new PageImpl<>(dtos, PageRequest.of(all.getNumber(),all.getSize()),all.getTotalElements());
}
@Data
@AllArgsConstructor
@NoArgsConstructor
......
......@@ -46,7 +46,7 @@ public class TemplateResponseDto {
.status(te.getStatus())
.project(te.getProject())
.templateFile(new TemplateDto.TemplateFileDataDto(te.getTemplate().getId(), te.getTemplate().getName(), te.getTemplate().getData()))
.headerFile(te.getTempleateHeader() != null ? new TemplateDto.TemplateFileDataDto(te.getTempleateHeader().getId(), te.getTempleateHeader().getName(), te.getTempleateHeader().getData()) : null)
.headerFile(te.getTemplateHeader() != null ? new TemplateDto.TemplateFileDataDto(te.getTemplateHeader().getId(), te.getTemplateHeader().getName(), te.getTemplateHeader().getData()) : null)
.type(te.getType().getCode())
.version(te.getVersion())
.build();
......
......@@ -19,9 +19,45 @@ public class TemplateEntity {
@ManyToOne
private DTemplateType type;
@OneToOne
private TemplateFileInfoEntity template;
private TemplateFileInfoEntity template;
@OneToOne
private TemplateFileInfoEntity templeateHeader;
private TemplateFileInfoEntity templateHeader;
@Override
public boolean equals(Object o){
if (this == o) return true;
if (o == null || !(o instanceof TemplateEntity)) return false;
TemplateEntity other = (TemplateEntity) o;
/* Примитивы */
boolean isCodeEqual = this.code == other.getCode() || (this.code != null && this.code.equals(other.getCode()));
boolean isNameEqual = this.name == other.getName() || (this.name != null && this.name.equals(other.getName()));
boolean isStatusEqual = this.status == other.getStatus() || (this.status != null && this.status.equals(other.getStatus()));
boolean isProjectEqual = this.project == other.getProject() || (this.project != null && this.project.equals(other.getProject()));
/* Сложные типы */
boolean isTypeEqual = this.type == other.getType() || (this.type != null && this.type.equals(other.getType()));
boolean isTemplateEqual = this.template == other.getTemplate() || (this.template != null && this.template.equals(other.getTemplate()));
boolean isHeaderEqual = this.templateHeader == other.getTemplateHeader() || (this.templateHeader != null && this.templateHeader.equals(other.getTemplateHeader()));
return isCodeEqual && isNameEqual && isStatusEqual && isProjectEqual && isTypeEqual && isTemplateEqual && isHeaderEqual;
}
@Override
public int hashCode(){
int hash = 17;
if (code != null) hash = 31 * hash * code.hashCode();
if (name != null) hash = 31 * hash * name.hashCode();
if (status != null) hash = 31 * hash * status.hashCode();
if (project != null) hash = 31 * hash * project.hashCode();
if (type != null) hash = 31 * hash * type.hashCode();
if (template != null) hash = 31 * hash * template.hashCode();
if (templateHeader != null) hash = 31 * hash * templateHeader.hashCode();
return hash;
}
}
......@@ -21,4 +21,34 @@ public class TemplateFileInfoEntity {
private String path;
private Integer hash;
private byte[] data;
@Override
public boolean equals(Object o){
if (this == o) return true;
if (o == null || !(o instanceof TemplateFileInfoEntity)) return false;
TemplateFileInfoEntity other = (TemplateFileInfoEntity) o;
boolean isNameEqual = this.name == other.getName() || (this.name != null && this.name.equals(other.getName()));
boolean isHeaderEqual = this.isHeader == other.getIsHeader() || (this.isHeader != null && this.isHeader.equals(other.getIsHeader()));
boolean isPathEqual = this.path == other.getPath() || (this.path != null && this.path.equals(other.getPath()));
boolean isHashEqual = this.hash == other.getHash() || (this.hash != null && this.hash.equals(other.getHash()));
boolean isDataEqual = this.data == other.getData() || (this.data != null && this.data.equals(other.getData()));
return isNameEqual && isHeaderEqual && isPathEqual && isHashEqual && isDataEqual;
}
@Override
public int hashCode(){
int hashResult = 17;
if (name != null) hashResult = 31 * hashResult * name.hashCode();
if (isHeader != null) hashResult = 31 * hashResult * isHeader.hashCode();
if (path != null) hashResult = 31 * hashResult * path.hashCode();
if (hash != null) hashResult = 31 * hashResult * hash.hashCode();
if (data != null) hashResult = 31 * hashResult * data.hashCode();
return hashResult;
}
}
package kz.project.printedFormsService.data.repository;
import kz.project.printedFormsService.data.entity.TemplateEntity;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
public interface TemplateVersionRepository extends JpaRepository<TemplateEntity, Long> {
Page<TemplateEntity> findAllByCode(Pageable pageable, String code);
}
......@@ -5,13 +5,9 @@ import kz.project.printedFormsService.data.dto.TemplateDataForReportDto;
import kz.project.printedFormsService.data.dto.TemplateDto;
import kz.project.printedFormsService.data.dto.TemplateResponseDto;
import kz.project.printedFormsService.data.dto.TemplateShortDto;
import kz.project.printedFormsService.data.entity.DocumentEntity;
import kz.project.printedFormsService.data.entity.TemplateEntity;
import kz.project.printedFormsService.data.entity.TemplateFileInfoEntity;
import kz.project.printedFormsService.data.repository.DTemplateTypeRepository;
import kz.project.printedFormsService.data.repository.DocumentRepository;
import kz.project.printedFormsService.data.repository.TemplateFileInfoRepository;
import kz.project.printedFormsService.data.repository.TemplateRepository;
import kz.project.printedFormsService.data.repository.*;
import kz.project.printedFormsService.exception.ValidationException;
import kz.project.printedFormsService.service.TemplateService;
import lombok.RequiredArgsConstructor;
......@@ -23,7 +19,6 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -32,6 +27,7 @@ import java.util.Map;
@RequiredArgsConstructor
public class TemplateServiceImpl implements TemplateService {
private final TemplateRepository repository;
private final TemplateVersionRepository versionRepository;
private final DTemplateTypeRepository dTemplateTypeRepository;
private final TemplateFileInfoRepository fileInfoRepository;
......@@ -42,7 +38,7 @@ public class TemplateServiceImpl implements TemplateService {
Map<String, byte[]> params = new HashMap<>();
TemplateEntity templateEntity = repository.findById(id).orElse(null);
if (templateEntity == null) throw new ValidationException("по данному параметру отсутствуют данные: " + id, 13);
TemplateDataForReportDto templ= new TemplateDataForReportDto(templateEntity.getType().getCode(), templateEntity.getTemplate().getData(), templateEntity.getTempleateHeader() != null ? templateEntity.getTempleateHeader().getData() : null);
TemplateDataForReportDto templ= new TemplateDataForReportDto(templateEntity.getType().getCode(), templateEntity.getTemplate().getData(), templateEntity.getTemplateHeader() != null ? templateEntity.getTemplateHeader().getData() : null);
params.put("type",templ.getType().getBytes(StandardCharsets.UTF_8));
params.put("body", templ.getBody());
params.put("header",templ.getHeader());
......@@ -80,7 +76,15 @@ public class TemplateServiceImpl implements TemplateService {
}
if (repository.findById(dto.getTemplateId()).isEmpty())
throw new ValidationException("Cо значением templateId=" + dto.getTemplateId() + "запись не существует" , 13);
return TemplateResponseDto.toDto(repository.save(createTemplateEntity(dto, files)));
TemplateEntity existingEntity = repository.findById(dto.getTemplateId()).get();
TemplateEntity receivedEntity = createTemplateEntity(dto, files);
if (!existingEntity.equals(receivedEntity)){
versionRepository.save(existingEntity);
}
return TemplateResponseDto.toDto(repository.save(receivedEntity));
}
......@@ -113,8 +117,15 @@ public class TemplateServiceImpl implements TemplateService {
public Page<TemplateDto> getAllTemplateByCode(String code, Pageable pageable) throws ValidationException {
if (code != null) {
Page<TemplateEntity> allByCode = repository.findAllByCode(pageable, code);
if (allByCode != null)
return TemplateDto.toDtoList(allByCode);
Page<TemplateEntity> allVersionsByCode = versionRepository.findAllByCode(pageable, code);
if (allByCode != null && allVersionsByCode != null)
return TemplateDto.toDtoList(allByCode, allVersionsByCode);
Page<TemplateEntity> existingPage = allByCode != null ? allByCode : allVersionsByCode;
if (existingPage != null)
return TemplateDto.toDtoList(existingPage);
}
throw new ValidationException("Не переданы обязательные поля", 13);
}
......@@ -142,9 +153,9 @@ public class TemplateServiceImpl implements TemplateService {
templateEntity.setVersion(dto.getVersion() + 1);
if (files != null && files.size() == 2 && files.get(1) != null) {
if (dto.getHeaderFileId() != null) {
templateEntity.setTempleateHeader(updateTemplateFiles(files.get(1), dto.getHeaderFileId(), true));
templateEntity.setTemplateHeader(updateTemplateFiles(files.get(1), dto.getHeaderFileId(), true));
} else {
templateEntity.setTempleateHeader(createTemplateFiles(files.get(1), true));
templateEntity.setTemplateHeader(createTemplateFiles(files.get(1), true));
}
}
templateEntity.setStatus(dto.getStatus());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment