59 lines
2.2 KiB
Python
59 lines
2.2 KiB
Python
from collections import defaultdict
|
|
from uuid import UUID
|
|
|
|
from app.App import App
|
|
from core.domain.map.CrnMicroUpdate import CrnMicroUpdateState, CrnMicroUpdate
|
|
from core.domain.map.CrnPoint import CrnPoint
|
|
from core.extend.logger import Progress
|
|
from core.types.Id import Id
|
|
|
|
App.init()
|
|
|
|
# ids = App.repos.optimizationResultRepo.getAllIds()
|
|
microLocations = App.repos.crnMicroUpdateRepo.getAllByState(state=CrnMicroUpdateState.POTRJENO)
|
|
ids = [Id(value=UUID('70faa8ef-83da-4b5f-9e76-84d1d5acb995'))]
|
|
posta_hisa_crn: dict[int, dict[int, (CrnPoint, CrnMicroUpdate)]] = defaultdict(dict)
|
|
hisa_micro: dict[int, CrnMicroUpdate] = {}
|
|
|
|
for m in sorted(microLocations, key=lambda x: x.createdAt):
|
|
hisa_micro[m.hisa] = m
|
|
|
|
progress = Progress("Optimization result migration", ids)
|
|
for i, id in enumerate(ids):
|
|
optimizationResult = App.repos.optimizationResultRepo.get(id=id)
|
|
opt = App.repos.optimizationRepo.get(id=optimizationResult.optimizationId)
|
|
posta = opt.posta.value
|
|
postOffice = App.repos.postOfficeRepo.get(posta=posta)
|
|
if posta not in posta_hisa_crn:
|
|
posta_hisa_crn[posta] = {crn.hisa: crn for crn in App.services.postaService.getCrnPoints(posta=posta)}
|
|
hisa_crn = posta_hisa_crn[posta]
|
|
for ri, route in enumerate(optimizationResult.routes):
|
|
for pi, point in enumerate(route.points):
|
|
point.crnPoint.attr.dostopnost = 'Kolo'
|
|
point.crnPoint.attr.namen = None
|
|
point.crnPoint.attr.nevarenPes = None
|
|
point.crnPoint.attr.dostopenNabiralnik = None
|
|
|
|
mikro = hisa_micro.get(point.crnPoint.hisa, None)
|
|
if mikro is not None:
|
|
point.crnPoint.attr.mikroLat = mikro.lat
|
|
point.crnPoint.attr.mikroLon = mikro.lon
|
|
|
|
optimizationResult.routes[ri].points[pi] = point
|
|
|
|
for pi, point in enumerate(optimizationResult.unvisited):
|
|
point.crnPoint.attr.dostopnost = 'Kolo'
|
|
point.crnPoint.attr.namen = None
|
|
point.crnPoint.attr.nevarenPes = None
|
|
point.crnPoint.attr.dostopenNabiralnik = None
|
|
|
|
mikro = hisa_micro.get(point.crnPoint.hisa, None)
|
|
if mikro is not None:
|
|
point.crnPoint.attr.mikroLat = mikro.lat
|
|
point.crnPoint.attr.mikroLon = mikro.lon
|
|
|
|
optimizationResult.unvisited[pi] = point
|
|
|
|
App.repos.optimizationResultRepo.post(optimizationResult)
|
|
progress.log(i, f"https://optdos.posta.si/optimizations/{opt.id.value}/result/{optimizationResult.id.value}")
|