
После того, как вы инициировали цепочку документооборота, вам нужно сохранить возвращенный messageId, к примеру "6c3a7be9-26aa-4327-bb10-6f4807739675". С помощью него можно запросить статус документов и подпись для уже подписанных. Примечание. Новый WordPress продолжает портить кусочки исходного кода в текстах заметок, добавляя закрывающие теги для того, что он считает тегами. Если знаете, как это победить, пишите в комментариях.
По messageId можно получить Message:
DiadocMessage_GetApiProtos.Message message = diadocApi
.getMessageClient()
.getMessage(currentBoxId, messageId); |
DiadocMessage_GetApiProtos.Message message = diadocApi
.getMessageClient()
.getMessage(currentBoxId, messageId);
currentBoxId - тот ящик, с которого была инициирована цепочка документооборота.
Из сообщения можно достать список сущностей и отфильтровать:
List<diadocmessage_getapiprotos.entity> fileList = message
.getEntitiesList()
.stream()
.filter(entity -> (entity.getEntityType()
// неподписанный контрагентом файл имеет пустое имя файла!
.equals(DiadocMessage_GetApiProtos.EntityType.Attachment) && StringUtils.isBlank(entity.getFileName())))
.collect(Collectors.toList());</diadocmessage_getapiprotos.entity> |
List<diadocmessage_getapiprotos.entity> fileList = message
.getEntitiesList()
.stream()
.filter(entity -> (entity.getEntityType()
// неподписанный контрагентом файл имеет пустое имя файла!
.equals(DiadocMessage_GetApiProtos.EntityType.Attachment) && StringUtils.isBlank(entity.getFileName())))
.collect(Collectors.toList());</diadocmessage_getapiprotos.entity>
Заполнить списки с подписанными и неподписанными файлами можно так:
List<entitywrapper> unsigned = new ArrayList<>();
List<entitywrapper> signed = new ArrayList<>();
fileList.forEach(fileEntity -> {
Entity wrapper = new EntityWrapper();
DiadocMessage_GetApiProtos.Entity parent = getEntityWithId(fileEntity.getParentEntityId(), message);
if (parent != null) {
wrapper.setEntityId(parent.getEntityId());
wrapper.setFilename(parent.getFileName());
wrapper.setEntityType(parent.getEntityType().name());
wrapper.setAttachmentType(parent.getAttachmentType().name());
DiadocMessage_GetApiProtos.Entity signatureEntity =
getSignatureEntityForFileEntity(parent.getEntityId(), currentBoxId, message);
if (signatureEntity == null) {
unsigned.add(wrapper);
} else {
signed.add(wrapper);
}
}
});
public static DiadocMessage_GetApiProtos.Entity getSignatureEntityForFileEntity(String fileEntityId, String currentBoxId, DiadocMessage_GetApiProtos.Message message) {
Optional<diadocmessage_getapiprotos.entity> optional = message
.getEntitiesList()
.stream()
.filter(entity -> entity.getParentEntityId().equals(fileEntityId)
& !entity.getSignerBoxId().equals(currentBoxId)
& entity.getEntityType().equals(DiadocMessage_GetApiProtos.EntityType.Signature))
.findFirst();
if (optional.isPresent()) {
return optional.get();
} else {
return null;
}
}
public static DiadocMessage_GetApiProtos.Entity getEntityWithId(String entityId, DiadocMessage_GetApiProtos.Message message) {
Optional<diadocmessage_getapiprotos.entity> optional = message
.getEntitiesList()
.stream()
.filter(entity -> entity.getEntityId().equals(entityId))
.findFirst();
if (optional.isPresent()) {
return optional.get();
} else {
return null;
}
}
</diadocmessage_getapiprotos.entity></diadocmessage_getapiprotos.entity></entitywrapper></entitywrapper> |
List<entitywrapper> unsigned = new ArrayList<>();
List<entitywrapper> signed = new ArrayList<>();
fileList.forEach(fileEntity -> {
Entity wrapper = new EntityWrapper();
DiadocMessage_GetApiProtos.Entity parent = getEntityWithId(fileEntity.getParentEntityId(), message);
if (parent != null) {
wrapper.setEntityId(parent.getEntityId());
wrapper.setFilename(parent.getFileName());
wrapper.setEntityType(parent.getEntityType().name());
wrapper.setAttachmentType(parent.getAttachmentType().name());
DiadocMessage_GetApiProtos.Entity signatureEntity =
getSignatureEntityForFileEntity(parent.getEntityId(), currentBoxId, message);
if (signatureEntity == null) {
unsigned.add(wrapper);
} else {
signed.add(wrapper);
}
}
});
public static DiadocMessage_GetApiProtos.Entity getSignatureEntityForFileEntity(String fileEntityId, String currentBoxId, DiadocMessage_GetApiProtos.Message message) {
Optional<diadocmessage_getapiprotos.entity> optional = message
.getEntitiesList()
.stream()
.filter(entity -> entity.getParentEntityId().equals(fileEntityId)
& !entity.getSignerBoxId().equals(currentBoxId)
& entity.getEntityType().equals(DiadocMessage_GetApiProtos.EntityType.Signature))
.findFirst();
if (optional.isPresent()) {
return optional.get();
} else {
return null;
}
}
public static DiadocMessage_GetApiProtos.Entity getEntityWithId(String entityId, DiadocMessage_GetApiProtos.Message message) {
Optional<diadocmessage_getapiprotos.entity> optional = message
.getEntitiesList()
.stream()
.filter(entity -> entity.getEntityId().equals(entityId))
.findFirst();
if (optional.isPresent()) {
return optional.get();
} else {
return null;
}
}
</diadocmessage_getapiprotos.entity></diadocmessage_getapiprotos.entity></entitywrapper></entitywrapper>
Класс EntityWrapper:
public class EntityWrapper {
private String entityId;
private String entityType;
private String attachmentType;
private String filename;
//(геттеры и сеттеры)
} |
public class EntityWrapper {
private String entityId;
private String entityType;
private String attachmentType;
private String filename;
//(геттеры и сеттеры)
}
Теперь вы можете составить с помощью списка unsigned напоминание контрагенту о том, что ему нужно подписать документы.