|
|
|
@@ -53,7 +53,7 @@ export class AgrarmonitorPollingService implements OnModuleInit {
|
|
|
|
|
await this.upsertSetting('agrarmonitor_tag_verbucht', '9');
|
|
|
|
|
await this.upsertSetting('agrarmonitor_tag_hochgeladen', '');
|
|
|
|
|
await this.upsertSetting('agrarmonitor_link_field', '');
|
|
|
|
|
await this.upsertSetting('agrarmonitor_tag_posteingang', '');
|
|
|
|
|
await this.upsertSetting('agrarmonitor_tag_manuell', '');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Cron(process.env['AGRARMONITOR_POLLING_CRON'] || '0 */30 * * * *')
|
|
|
|
@@ -68,20 +68,20 @@ export class AgrarmonitorPollingService implements OnModuleInit {
|
|
|
|
|
this.processVerarbeiteteDocuments().catch((err) => this.logger.error('Cron-Upload-Check-Fehler:', err));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async getPollingConfig(): Promise<{ tagFertig: string; tagVerbucht: string; tagHochgeladen: string; linkField: string; tagPosteingang: string }> {
|
|
|
|
|
const [fertig, verbucht, hochgeladen, linkField, posteingang] = await Promise.all([
|
|
|
|
|
async getPollingConfig(): Promise<{ tagFertig: string; tagVerbucht: string; tagHochgeladen: string; linkField: string; tagManuell: string }> {
|
|
|
|
|
const [fertig, verbucht, hochgeladen, linkField, manuell] = await Promise.all([
|
|
|
|
|
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_fertig' }),
|
|
|
|
|
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_verbucht' }),
|
|
|
|
|
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_hochgeladen' }),
|
|
|
|
|
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_link_field' }),
|
|
|
|
|
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_posteingang' }),
|
|
|
|
|
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_manuell' }),
|
|
|
|
|
]);
|
|
|
|
|
return {
|
|
|
|
|
tagFertig: fertig?.Wert ?? '4',
|
|
|
|
|
tagVerbucht: verbucht?.Wert ?? '9',
|
|
|
|
|
tagHochgeladen: hochgeladen?.Wert ?? '',
|
|
|
|
|
linkField: linkField?.Wert ?? '',
|
|
|
|
|
tagPosteingang: posteingang?.Wert ?? '',
|
|
|
|
|
tagManuell: manuell?.Wert ?? '',
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -90,16 +90,16 @@ export class AgrarmonitorPollingService implements OnModuleInit {
|
|
|
|
|
tagVerbucht: string,
|
|
|
|
|
tagHochgeladen: string,
|
|
|
|
|
linkField: string,
|
|
|
|
|
tagPosteingang: string,
|
|
|
|
|
): Promise<{ tagFertig: string; tagVerbucht: string; tagHochgeladen: string; linkField: string; tagPosteingang: string }> {
|
|
|
|
|
tagManuell: string,
|
|
|
|
|
): Promise<{ tagFertig: string; tagVerbucht: string; tagHochgeladen: string; linkField: string; tagManuell: string }> {
|
|
|
|
|
await Promise.all([
|
|
|
|
|
this.settingRepo.update({ Tag: 'agrarmonitor_tag_fertig' }, { Wert: tagFertig }),
|
|
|
|
|
this.settingRepo.update({ Tag: 'agrarmonitor_tag_verbucht' }, { Wert: tagVerbucht }),
|
|
|
|
|
this.settingRepo.update({ Tag: 'agrarmonitor_tag_hochgeladen' }, { Wert: tagHochgeladen }),
|
|
|
|
|
this.settingRepo.update({ Tag: 'agrarmonitor_link_field' }, { Wert: linkField }),
|
|
|
|
|
this.settingRepo.update({ Tag: 'agrarmonitor_tag_posteingang' }, { Wert: tagPosteingang }),
|
|
|
|
|
this.settingRepo.update({ Tag: 'agrarmonitor_tag_manuell' }, { Wert: tagManuell }),
|
|
|
|
|
]);
|
|
|
|
|
return { tagFertig, tagVerbucht, tagHochgeladen, linkField, tagPosteingang };
|
|
|
|
|
return { tagFertig, tagVerbucht, tagHochgeladen, linkField, tagManuell };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async runPolling(): Promise<PollingResult> {
|
|
|
|
@@ -295,17 +295,17 @@ export class AgrarmonitorPollingService implements OnModuleInit {
|
|
|
|
|
this.logger.log('Starte Upload-Check');
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
const [hochgeladenSetting, fertigSetting, linkFieldSetting, posteingangSetting] = await Promise.all([
|
|
|
|
|
const [hochgeladenSetting, fertigSetting, linkFieldSetting, manuellSetting] = await Promise.all([
|
|
|
|
|
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_hochgeladen' }),
|
|
|
|
|
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_fertig' }),
|
|
|
|
|
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_link_field' }),
|
|
|
|
|
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_posteingang' }),
|
|
|
|
|
this.settingRepo.findOneBy({ Tag: 'agrarmonitor_tag_manuell' }),
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
const tagHochgeladenId = parseInt(hochgeladenSetting?.Wert ?? '', 10);
|
|
|
|
|
const tagFertigId = parseInt(fertigSetting?.Wert ?? '4', 10);
|
|
|
|
|
const linkFieldId = parseInt(linkFieldSetting?.Wert ?? '', 10);
|
|
|
|
|
const tagPosteingangId = parseInt(posteingangSetting?.Wert ?? '', 10);
|
|
|
|
|
const tagManuellId = parseInt(manuellSetting?.Wert ?? '', 10);
|
|
|
|
|
|
|
|
|
|
if (isNaN(tagHochgeladenId)) {
|
|
|
|
|
this.logger.warn('Tag "hochgeladen" nicht konfiguriert — Upload-Check übersprungen');
|
|
|
|
@@ -396,12 +396,12 @@ export class AgrarmonitorPollingService implements OnModuleInit {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Weder verbucht noch im Dateieingang → zurück in Posteingang
|
|
|
|
|
if (!isNaN(tagPosteingangId)) {
|
|
|
|
|
// Weder verbucht noch im Dateieingang → Tag "Manuell bearbeiten" setzen
|
|
|
|
|
if (!isNaN(tagManuellId)) {
|
|
|
|
|
const currentTags: number[] = (doc.tags as number[]) ?? [];
|
|
|
|
|
const newTags = [...new Set(currentTags.filter(t => t !== tagHochgeladenId).concat([tagPosteingangId]))];
|
|
|
|
|
const newTags = [...new Set(currentTags.filter(t => t !== tagHochgeladenId).concat([tagManuellId]))];
|
|
|
|
|
await this.paperlessService.updateDocument(doc.id as number, { tags: newTags });
|
|
|
|
|
this.logger.log(`${interneBelegnummer} nicht mehr in Agrarmonitor — zurück in Posteingang`);
|
|
|
|
|
this.logger.log(`${interneBelegnummer} nicht mehr in Agrarmonitor — als manuell bearbeiten markiert`);
|
|
|
|
|
result.updated++;
|
|
|
|
|
} else {
|
|
|
|
|
result.skipped++;
|
|
|
|
|