def getAddress(_id):
    _address = prod["addresses"].find_one({"_id": Client.getId(_id)})
    if "_class" in _address:
        del _address["_class"]
    if _address:
        return _address
    return ''
def get_trusted_persons(claim):
    persons = []
    if "trustedPersons" in claim:
        for person in claim["trustedPersons"]:
            persons.append(
                Client.getId(str(person["trustedPerson"]["trustedId"])))
    data = get_data_from_db(persons)
    return data
def get_data_from_db(ids):
    persons_list = []
    addresses_ids = []
    documents = []
    persons = dps["persons"].find({"_id": {"$in": ids}})
    for person in persons:
        persons_list.append(person)
        documents = get_person_documents(
            Client.getId(person["currIdentityDocId"])
        ) if "currIdentityDocId" in person else []
        for ad in addresses_types:
            if ad in person:
                addresses_ids.append(Client.getId(person[ad]))
    addresses = get_addresses(addresses_ids)
    return {
        "persons": persons_list,
        "documents": documents,
        "addresses": addresses
    }
Example #4
0
def get_string_address(obj, param):
    AddressId = get_attribute(obj, param)
    if AddressId != '':
        address_projection = {
            "country": 1,
            "region": 1,
            "area": 1,
            "locality": 1,
            "street": 1,
            "houseNumber": 1,
            "corps": 1,
            "room": 1,
            "countryPrefix": 1,
            "regionPrefix": 1,
            "areaPrefix": 1,
            "localityPrefix": 1,
            "streetPrefix": 1,
            "houseNumberPrefix": 1,
            "corpsPrefix": 1,
            "roomPrefix": 1,
        }
        address = prod["addresses"].find_one({"_id": Client.getId(AddressId)},
                                             address_projection)
        if address is not None:
            addressObj = {
                "country":
                get_prefix(address, "country"),
                "region":
                get_prefix(address, "region"),
                "area":
                get_prefix(address, "area"),
                "locality":
                get_prefix(address, "locality"),
                "street":
                get_prefix(address, "street"),
                "houseNumber":
                f'д. {get_prefix(address, "houseNumber")}'
                if get_prefix(address, "houseNumber") != '' else '',
                "corps":
                get_prefix(address, "corps"),
                "room":
                f'кв. {get_prefix(address, "room")}'
                if get_prefix(address, "room") != '' else ''
            }
            reg_adr = []
            for adr in list(addressObj.keys()):
                if addressObj[adr] == '':
                    del addressObj[adr]
                else:
                    reg_adr.append(addressObj[adr])
            return ", ".join(reg_adr)
    return ''
Example #5
0
 def get_person(self):
     db = Client(config.DPS, "dps").connect()
     person = db["persons"].find_one({"_id": Client.getId(self.person_id)})
     return person
from rldd.Person import Person
from rldd.client import Client
from rldd.config import PROD, DPS, DEV

db = Client(PROD).connect()
dps = Client(DPS, "dps").connect()

claims = db["claims"].find({
    "service.srguServiceId": "1234567891000000001",
    "persons": {
        "$ne": "5f85826a2b794559a73bbb1f"
    }
})
person = Person(
    dps["persons"].find_one({"_id": Client.getId("5f85826a2b794559a73bbb1f")}),
    db)
person.form_person_to_claim()
full_person = person.get_full_person()
iteration = 0

updater = {
    "persons.0": str(person.get_id()),
    "personsInfo.0": full_person,
    "person": {
        "surname": person.get_attr("surname"),
        "firstName": person.get_attr("firstName"),
        "middleName": person.get_attr("middleName"),
        "applicantType": "PHYSICAL",
        "fio": person.get_fio()
    }
}
for claim in claims:
    iteration += 1
    claimId = claim["_id"]
    ccn = claim[
        "customClaimNumber"] if "customClaimNumber" in claim else claimId
    if "statuses" not in claim:
        result_file.write(
            f"{claimId};{ccn};;статусы в теле заявки отсутствуют\n")
        continue

    body_statuses = get_statuses(claim["statuses"])

    statuses = list(db["claims_status"].find({
        "claimId": str(claimId)
    }, {
        "statusCode": 1,
        "statusDate": 1,
        "_id": 1
    }).sort("statusDate", pymongo.ASCENDING))
    claims_statuses = get_statuses(statuses)
    result_list = list(set(claims_statuses) - set(body_statuses))
    if len(result_list) > 0:
        ids = ", ".join(result_list)
        codes = []
        for res in result_list:
            status = db["claims_status"].find_one({"_id": Client.getId(res)})
            codes.append(status["statusCode"])
        codes = ", ".join(codes)
        result_file.write(f"{claimId};{ccn};{ids};{codes}\n")
    print(iteration)
Example #8
0
from rldd.client import Client
from rldd import config

db = Client(config.PROD).connect()
claimsFile = open("claimIds.txt")
claimsList = claimsFile.read().split("\n")
resultFile = open("resultStages.csv", "w+", newline="")
resultFile.write("customClaimNumber\n")
for claimId in claimsList:
    claim = db["claims"].find_one({"_id": Client.getId(claimId)})
    if claim:
        if "resultStatus" in claim:
            continue
        upd = db["claims"].update_one({"_id": claim["_id"]}, {
            "$push": {
                "deadlineStages": {
                    "stageType": "DEADLINE_TRANSFER",
                    "stageName": "Перенос регламентного срока",
                    "deadline": 4,
                    "deadlineInWorkDays": True
                }
            }
        })
        print(
            f"Claim {claim['customClaimNumber']} has been corrected: {upd.modified_count} / {upd.matched_count}"
        )
        resultFile.write(
            f"{claim['customClaimNumber']};{upd.modified_count}\n")
resultFile.close()
Example #9
0
import csv
from rldd.client import Client
from rldd import config

dps = Client(config.DPS, 'dps').connect()["persons"]
db = Client(config.PROD).connect()
res_file = open('data.csv', 'w+')
iteration = 0
with open('data2.csv') as csv_file:
    file = csv.reader(csv_file, delimiter=',')
    for row in file:
        iteration += 1
        personId = row[2]
        person = dps.find_one({"_id": Client.getId(personId)})

        print(iteration, personId)
def getDoc(_id):
    _doc = db["docs"].find_one({"_id": Client.getId(_id)})
    if "_class" in doc:
        del _doc["_class"]
    return _doc
    else:
        return ''


fields = [
    'ФИО', 'Телефоны', 'Почта', 'Дата рождения', 'ДУЛ Серия', 'ДУЛ Номер',
    'Адрес регистрации', 'Адрес проживания', 'Номера заявок',
    'Дата создания заявления', 'Наименование процедуры'
    'Номера автомобиля'
]

result_file = open('result_file.csv', 'w+')
result_file.write(f'{";".join(fields)}\n')
for person_id in persons_list:

    person = persons.find_one({"_id": Client.getId(person_id)})

    if not person:
        continue

    reg_address = getAddress(checkValue(
        person, 'registrationAddressId')) if checkValue(
            person, 'registrationAddressId') != '' else ''
    loc_address = getAddress(
        checkValue(person, 'locationAddressId')) if checkValue(
            person, 'locationAddressId') != '' else ''

    result = {
        'fio': getFio(person),
        "phone": get_contact(person, "MBT", "PHN"),
        "email": get_contact(person, "EML"),
Example #12
0
 def get_address(self):
     db = Client(config.PROD).connect()
     address = db["addresses"].find_one({"_id": Client.getId(self.__address_id)})
     return address
Example #13
0
        '$in': ["47", "84"]
    },
    "statusDate": {
        '$gte': Client.ISODate("2019-12-31T21:00:00.000+0000")
    }
})


def getAttribute(obj, attr):
    if attr in obj:
        return obj[attr]
    return None


for status in statuses:
    claimId = Client.getId(status["claimId"])
    claim = db["claims"].find_one({"_id": claimId})
    if claim:

        if "service" in claim:
            result_str = ""
            service = claim["service"]
            if getAttribute(service, "srguServiceId") not in srguList:
                srguList.append(getAttribute(service, "srguServiceId"))
                obj = {
                    "srguServiceId":
                    getAttribute(service, "srguServiceId"),
                    "srguServiceName":
                    getAttribute(service, "srguServiceName"),
                    "srguServicePassportId":
                    getAttribute(service, "srguServicePassportId"),
Example #14
0
     "locality": 1,
     "street": 1,
     "houseNumber": 1,
     "corps": 1,
     "room": 1,
     "countryPrefix": 1,
     "regionPrefix": 1,
     "areaPrefix": 1,
     "localityPrefix": 1,
     "streetPrefix": 1,
     "houseNumberPrefix": 1,
     "corpsPrefix": 1,
     "roomPrefix": 1,
 }
 address = prod["addresses"].find_one(
     {"_id": Client.getId(registrationAddressId)},
     address_projection)
 if address is not None:
     addressObj = {
         "country":
         get_prefix(address, "country"),
         "region":
         get_prefix(address, "region"),
         "area":
         get_prefix(address, "area"),
         "locality":
         get_prefix(address, "locality"),
         "street":
         get_prefix(address, "street"),
         "houseNumber":
         f'д. {get_prefix(address, "houseNumber")}'
        claimNum = row[2]
        result_data = {
            "statements._id": rs_id,
            "statements.internalNum": "",
            "orgName": "",
            "orgCode": "",
            "name": "",
            "statements.recordRequisites.recordNum": "",
            "whenClose": "",
            "guid_name": ""
        }

        client = pymongo.MongoClient("mongodb://*****:*****@10.50.109.227:27017/pvdrs")
        db = client["pvdrs"]

        doc = db["rs_appeal"].find_one({"statements._id": Client.getId(rs_id)})
        if doc:
            appeal_id = doc["_id"]
            for state in doc["statements"]:
                if state["_id"] == Client.getId(rs_id):
                    result_data["statements.internalNum"] = state["internalNum"]
                    if "recordRequisites" in state:
                        if "recordNum" in state["recordRequisites"]:
                            result_data["statements.recordRequisites.recordNum"] = state["recordRequisites"]["recordNum"]

            event = doc["createEvent"]["performer"]
            orgName = event["orgName"]

            if "\n" in orgName:
                orgName = orgName.replace('\n', '')
            if "\r" in orgName:
def getAddress(_id):
    _address = db["addresses"].find_one({"_id": Client.getId(_id)})
    if "_class" in _address:
        del _address["_class"]
    return _address
Example #17
0
]
projection = {
    "surname": 1,
    "firstName": 1,
    "middleName": 1,
    "contacts": 1,
    "registrationAddressId": 1
}
result_file.write(';'.join(fields) + '\n')

with open('data.txt') as data:
    # Convert CSV to LIST, set start position
    lines = list(csv.reader(data, delimiter="\n"))[2811971:]
    for row in lines:

        person = pers["persons"].find_one({"_id": Client.getId(row[0])},
                                          projection)
        if person:
            iteration += 1
            address = getAddress(checkValue(
                person, 'registrationAddressId')) if checkValue(
                    person, 'registrationAddressId') != '' else ''
            result = {
                'omsu': checkValue(address, "area"),
                'locality': checkValue(address, "locality"),
                'street': checkValue(address, "street"),
                'houseNumber': checkValue(address, "houseNumber"),
                'room': checkValue(address, "room"),
                'fio': getFio(person),
                "phone": get_contact(person, "MBT", "PHN"),
                "email": get_contact(person, "EML")
Example #18
0
from rldd.client import Client
from rldd import config

servicesIds = [
    "53fdca4b6fcd6174c4e5d8a6"
]
db_list = Client(config.REMOTE, '').get_db_list()
main_base = Client(config.REMOTE, 'mfc-work').connect()
for dbName in db_list:
    if dbName.startswith('mfc'):
        db = Client(config.REMOTE, dbName).connect()
        collection_list: list = db.list_collection_names()
        for coll in collection_list:
            if coll == "doc_dss_tags":
                for serv_id in servicesIds:
                    doc_dss_tags = main_base["doc_dss_tags"].find({"service": DBRef("services", Client.getId(serv_id))})
                    service = main_base["services"].find_one({"_id": Client.getId(serv_id)})
                    if service:
                        inDocsItems = service["inDocsItems"]
                        in_docs = service["in_docs"]
                        for doc in in_docs:
                            docId = doc.id
                            collection = doc.collection
                            main_doc = main_base[collection].find_one({"_id": docId})
                            if main_doc:
                                del main_doc["_id"]
                                db[collection].update_one({"_id": docId}, {"$set": main_doc}, upsert=True)
                        db["services"].update_one({"_id": Client.getId(serv_id)}, {"$set": {"in_docs": in_docs, "inDocsItems": inDocsItems}})
                    for doc_dss_tag in doc_dss_tags:
                        dss_id = doc_dss_tag["_id"]
                        del doc_dss_tag["_id"]
import csv
from rldd.client import Client
from rldd import config
res_file = open('newData.csv', 'w+')
res_file.write("statusId;claimId;customClaimNumber\n")
iteration = 0
with open('data.csv', newline='') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=';')
    for row in spamreader:
        iteration += 1
        _id = row[0]
        db = Client(config.PROD).connect()
        status = db["claims_status"].find_one({"_id": Client.getId(_id)})
        if status:
            claim = db["claims"].find_one(
                {"_id": Client.getId(status["claimId"])})
            claimId = claim["_id"]
            ccn = claim["customClaimNumber"]
            print(f"{iteration} {_id} {ccn}")
            res_file.write(f"{_id};{claimId};{ccn}\n")
statuses = db["claims_status"].find(query, no_cursor_timeout=True)
serviceDict = {}
iteration = 0
for status in statuses:
    iteration += 1
    print(f"{iteration} / {total_count}")
    claimId = status["claimId"]
    statusesList = list(db["claims_status"].find({
        "claimId": claimId
    }).sort("statusDate", pymongo.ASCENDING))
    for index, statusElement in enumerate(statusesList):
        if statusElement["statusCode"] == "53":
            if len(statusesList) > index + 1:
                if statusesList[index + 1]["statusCode"] == "2":
                    claim = db["claims"].find_one(
                        {"_id": Client.getId(claimId)})
                    if claim:
                        if "service" in claim:
                            try:
                                srguService = claim["service"]["srguServiceId"]
                                srguName = claim["service"][
                                    "name"] if "name" in claim[
                                        "service"] else claim["service"][
                                            "srguServiceName"]
                            except KeyError:
                                print(KeyError, claimId)
                                continue
                            if srguService not in serviceDict:
                                serviceDict[srguService] = srguName
                                print(claimId, srguName, srguService)
 def get_claim_number(self, _id):
     claim = db["claims"].find_one({"_id": Client.getId(_id)})
     return claim["customClaimNumber"]