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 }
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 ''
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)
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()
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"),
def get_address(self): db = Client(config.PROD).connect() address = db["addresses"].find_one({"_id": Client.getId(self.__address_id)}) return address
'$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"),
"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
] 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")
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"]