Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package sx.register.de.egisso.raf.tasks;
- import sx.common.MsgBean;
- import sx.datastore.SXId;
- import sx.datastore.SXObj;
- import sx.datastore.meta.SXClass;
- import sx.datastore.params.SXObjListParams;
- import sx.datastore.params.SXUpdateObjParams;
- import sx.datastore.utils.SXCriteria;
- import sx.register.de.egisso.EGISSO;
- import sx.register.de.egisso.raf.beans.DeEgissoRafClientPackage;
- import sx.register.de.egisso.raf.beans.DeEgissoRafPackage;
- import sx.scheduler.SXTask;
- import sx.services.routing.org.OrgRoutingService;
- import sx.services.routing.org.bean.OrgRouting;
- import sx.services.routing.rcp.RPCParamsExecutor;
- import sx.services.routing.rcp.RPCParamsExecutorFactory;
- import java.util.Collections;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- /**
- * Задача отправки ответов пакетов обмена фактами
- */
- public class EgissoRafClientPackageProtocolMassSendTask extends SXTask {
- @Override
- protected MsgBean execute() {
- Map<Boolean, List<SXId>> completed = new SXObjListParams(DeEgissoRafClientPackage.CLASS_NAME)
- .setGetLinkedObjects(false).setActualizeObjTitle(false).setDefaultAttrCollection(SXClass.KEY_ATTRS)
- .addCondition(DeEgissoRafClientPackage.Attribute.PACKAGE_STATUS, DeEgissoRafClientPackage.PackageStatus.SENDING.getCode(), SXCriteria.EQUAL)
- .getListOfSXObj()
- .stream()
- .map(SXObj::getId)
- .collect(Collectors.partitioningBy(this::getFile));
- addMessage(String.format("Успешно обработано %s пакетов", completed.getOrDefault(Boolean.TRUE, Collections.emptyList()).size()));
- addMessage(String.format("Обработано с ошибками %s пакетов", completed.getOrDefault(Boolean.FALSE, Collections.emptyList()).size()));
- return null;
- }
- private Boolean getFile(SXId rafClientPackageId) {
- DeEgissoRafClientPackage rafClientPackage = EGISSO.getRafManager().getClientPackage(rafClientPackageId)
- .orElseThrow(() -> new IllegalStateException("Пакет обмена фактами назначения ЕГИССО не получен"));
- if (rafClientPackage.getResponseFileId() == null) {
- // TODO: 25.04.2019 дописать сообщение о том, что файл не сформирован
- addMessage(String.format("Пакет [%s]: Файл ответа не сформирован", rafClientPackage.getId()));
- return false;
- }
- OrgRouting orgRouting = OrgRoutingService.getInstance().getOrgRoutingByOrgGuid(rafClientPackage.getOsznGuid());
- if (orgRouting == null) {
- // TODO: 25.04.2019 Маршрутизация не настроена
- addMessage(String.format("Пакет [%s]: Не настроена маршрутизация", rafClientPackage.getId()));
- return false;
- }
- RPCParamsExecutor rpcParamsExecutor = RPCParamsExecutorFactory.getInstance().getExecuter(orgRouting.getOsznId());
- SXObj remotePackage;
- try {
- remotePackage = getRemotePackage(rpcParamsExecutor, rafClientPackage);
- } catch (Exception e) {
- // TODO: 25.04.2019 Ошибка поиска пакета фактов
- addMessage(String.format("Пакет [%s]: Ошибка поиска пакета фактов", rafClientPackage.getId()));
- return false;
- }
- if (remotePackage.getId() == null) {
- // TODO: 25.04.2019 Не найден пакет фактов
- addMessage(String.format("Пакет [%s]: Не найден пакет фактов", rafClientPackage.getId()));
- return false;
- }
- String remoteFile;
- try {
- remoteFile = rpcParamsExecutor.createFile(rafClientPackage.getResponseFileId());
- } catch (Exception e) {
- // TODO: 25.04.2019 Ошибка отправки пакета
- addMessage(String.format("Пакет [%s]: Ошибка отправки пакета", rafClientPackage.getId()));
- return false;
- }
- if (remoteFile == null) {
- // TODO: 25.04.2019 Пакет ответа не отправлен
- addMessage(String.format("Пакет [%s]: Пакет ответа не отправлен", rafClientPackage.getId()));
- return false;
- }
- try {
- updateRafPackage(rpcParamsExecutor, remotePackage, remoteFile);
- } catch (Exception e) {
- // TODO: 25.04.2019 Ошибка обновления пакета фактов
- addMessage(String.format("Пакет [%s]: Ошибка обновления пакета фактов", rafClientPackage.getId()));
- return false;
- }
- updateRafClientPackage(rafClientPackage);
- return true;
- }
- private SXObj getRemotePackage(RPCParamsExecutor rpcParamsExecutor, DeEgissoRafClientPackage rafClientPackage) throws Exception {
- return rpcParamsExecutor.executeByFirstObject(
- SXObjListParams.newInstance(DeEgissoRafPackage.CLASS_NAME)
- .setGetLinkedObjects(false).setActualizeObjTitle(false).setDefaultAttrCollection(SXClass.KEY_ATTRS)
- .addCondition(
- DeEgissoRafPackage.Attribute.GUID,
- rafClientPackage.getPackageId()
- .getObj(false, DeEgissoRafPackage.Attribute.GUID)
- .getStringAttr(DeEgissoRafPackage.Attribute.GUID)
- )
- );
- }
- private void updateRafPackage(RPCParamsExecutor rpcParamsExecutor, SXObj remotePackage, String remoteFile) throws Exception {
- rpcParamsExecutor.execute(
- SXUpdateObjParams.newInstance(remotePackage.getId())
- .setUpdateReadOnlyAttr(true)
- .setAttrValue(DeEgissoRafPackage.Attribute.PACKAGE_STATUS, DeEgissoRafPackage.PackageStatus.RESPONSE_RECEIVED.getCode())
- .setAttrValue(DeEgissoRafPackage.Attribute.RESPONSE_FILE, remoteFile)
- );
- }
- private void updateRafClientPackage(DeEgissoRafClientPackage rafClientPackage) {
- SXUpdateObjParams.newInstance(rafClientPackage.getId())
- .setUpdateReadOnlyAttr(true)
- .setAttrValue(DeEgissoRafClientPackage.Attribute.PACKAGE_STATUS, DeEgissoRafClientPackage.PackageStatus.PROCESSED.getCode())
- .updateObj();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement