def get_comptador_cini(self, polissa_id): comp_obj = self.connection.GiscedataLecturesComptador cid = get_comptador(self.connection, polissa_id, self.year) cini = '' if cid: comptador = comp_obj.read(cid[0], ['cini']) cini = comptador['cini'] or '' return cini
def get_data_comptador(self, polissa_id): comp_obj = self.connection.GiscedataLecturesComptador comp_id = get_comptador(self.connection, polissa_id, self.year) data = '' if comp_id: comp_id = comp_id[0] comp = comp_obj.read(comp_id, ['data_alta']) data = comp['data_alta'].split('-') # Format MM/YYYY data = '%s/%s' % (data[1], data[0]) return data
def consumer(self): """ Consumer function to generate F1 :return: None """ o_codi_r1 = 'R1-%s' % self.codi_r1[-3:] O = self.connection ultim_dia_any = '%s-12-31' % self.year search_glob = [ ('state', 'not in', ('esborrany', 'validar')), ('data_alta', '<=', ultim_dia_any), '|', ('data_baixa', '>=', ultim_dia_any), ('data_baixa', '=', False) ] context_glob = {'date': ultim_dia_any, 'active_test': False} while True: try: item = self.input_q.get() self.progress_q.put(item) fields_to_read = [ 'name', 'id_escomesa', 'id_municipi', 'cne_anual_activa', 'cne_anual_reactiva', 'cnmc_potencia_facturada', 'et', 'polisses', 'potencia_conveni', 'potencia_adscrita', "node_id" ] cups = O.GiscedataCupsPs.read(item, fields_to_read) if not cups or not cups.get('name'): self.input_q.task_done() continue if self.reducir_cups: o_name = cups['name'][:20] else: o_name = cups['name'][:22] o_codi_ine_mun = '' o_codi_ine_prov = '' o_zona = '' o_potencia_facturada = format_f( cups['cnmc_potencia_facturada'], 3) or '' if 'et' in cups: o_zona = self.get_zona_qualitat(cups['et']) if cups['id_municipi']: id_mun = cups["id_municipi"][0] o_codi_ine_prov, o_codi_ine_mun = self.get_ine(id_mun) o_nom_node = cups.get("node_id")[1] o_tensio = '' o_connexio = '' vertex = False if cups and cups['id_escomesa'] and "node_id" not in cups: o_connexio = self.get_tipus_connexio( cups['id_escomesa'][0] ) search_params = [('escomesa', '=', cups['id_escomesa'][0])] bloc_escomesa_id = O.GiscegisBlocsEscomeses.search( search_params ) if bloc_escomesa_id: bloc_escomesa = O.GiscegisBlocsEscomeses.read( bloc_escomesa_id[0], ['node', 'vertex'] ) if bloc_escomesa['vertex']: vertex = O.GiscegisVertex.read( bloc_escomesa['vertex'][0], ['x', 'y'] ) if bloc_escomesa['node']: node = O.GiscegisNodes.read( [bloc_escomesa['node'][0]], ['name']) o_nom_node = node[0]['name'] o_nom_node = o_nom_node.replace('*', '') search_params = [('cups', '=', cups['id'])] + search_glob polissa_id = O.GiscedataPolissa.search( search_params, 0, 1, 'data_alta desc', context_glob) o_potencia = '' o_cnae = '' o_pot_ads = cups.get('potencia_adscrita', '0,000') or '0,000' o_equip = 'MEC' o_cod_tfa = '' o_estat_contracte = 0 # energies consumides o_anual_activa = format_f( cups['cne_anual_activa'] or 0.0, decimals=3) o_anual_reactiva = format_f( cups['cne_anual_reactiva'] or 0.0, decimals=3) if polissa_id: fields_to_read = [ 'potencia', 'cnae', 'tarifa', 'butlletins', 'tensio' ] polissa = O.GiscedataPolissa.read( polissa_id[0], fields_to_read, context_glob ) if 'RE' in polissa['tarifa'][1]: continue if polissa['tensio']: o_tensio = format_f( float(polissa['tensio']) / 1000.0, decimals=3) o_potencia = polissa['potencia'] if polissa['cnae']: cnae_id = polissa['cnae'][0] if cnae_id in self.cnaes: o_cnae = self.cnaes[cnae_id] else: o_cnae = O.GiscemiscCnae.read( cnae_id, ['name'] )['name'] self.cnaes[cnae_id] = o_cnae else: try: polissa_act = O.GiscedataPolissa.read( polissa_id[0], fields_to_read ) cnae_id = polissa_act['cnae'][0] if cnae_id in self.cnaes: o_cnae = self.cnaes[cnae_id] else: o_cnae = O.GiscemiscCnae.read( cnae_id, ['name'] )['name'] self.cnaes[cnae_id] = o_cnae except: pass comptador_actiu = get_comptador( self.connection, polissa['id'], self.year) if comptador_actiu: comptador_actiu = comptador_actiu[0] comptador = O.GiscedataLecturesComptador.read( comptador_actiu, ['cini', 'tg'] ) if not comptador['cini']: comptador['cini'] = '' if comptador.get('tg', False): o_equip = 'SMT' elif re.findall(CINI_TG_REGEXP, comptador['cini']): o_equip = 'SMT' else: o_equip = 'MEC' if polissa['tarifa']: o_cod_tfa = self.get_codi_tarifa(polissa['tarifa'][1]) else: # Si no trobem polissa activa, considerem # "Contrato no activo (CNA)" o_equip = 'CNA' o_estat_contracte = 1 search_modcon = [ ('id', 'in', cups['polisses']), ('data_inici', '<=', ultim_dia_any) ] modcons = None if len(cups['polisses']): modcons = O.GiscedataPolissaModcontractual.search( search_modcon, 0, 1, 'data_inici desc' , {'active_test': False}) if modcons: modcon_id = modcons[0] fields_to_read_modcon = [ 'cnae', 'tarifa', 'tensio', 'potencia' ] modcon = O.GiscedataPolissaModcontractual.read( modcon_id, fields_to_read_modcon) if modcon['tarifa']: o_cod_tfa = self.get_codi_tarifa( modcon['tarifa'][1] ) if modcon['cnae']: cnae_id = modcon['cnae'][0] if cnae_id in self.cnaes: o_cnae = self.cnaes[cnae_id] else: o_cnae = O.GiscemiscCnae.read( cnae_id, ['name'] )['name'] self.cnaes[cnae_id] = o_cnae if modcon['tensio']: o_tensio = format_f( float(modcon['tensio']) / 1000.0, decimals=3) if modcon['potencia']: o_potencia = format_f( float(modcon['potencia']), decimals=3) else: # No existeix modificació contractual per el CUPS o_potencia = cups['potencia_conveni'] if cups.get('id_escomesa', False): search_params = [ ('escomesa', '=', cups['id_escomesa'][0]) ] id_esc_gis = O.GiscegisEscomesesTraceability.search( search_params ) if id_esc_gis: tensio_gis = O.GiscegisEscomesesTraceability.read( id_esc_gis, ['tensio'] )[0]['tensio'] o_tensio = format_f( float(tensio_gis) / 1000.0, decimals=3) else: o_tensio = '' if self.default_o_cnae: o_cnae = self.default_o_cnae if self.default_o_cod_tfa: o_cod_tfa = self.default_o_cod_tfa o_any_incorporacio = self.year res_srid = ['', ''] if vertex: res_srid = convert_srid( self.codi_r1, get_srid(O), (vertex['x'], vertex['y'])) self.output_q.put([ o_nom_node, # Nudo format_f(res_srid[0], decimals=3), # X format_f(res_srid[1], decimals=3), # Y '', # Z o_cnae, # CNAE o_equip, # Equipo de medida o_cod_tfa, # Codigo de tarifa o_zona, # Zona de calidad o_name, # CUPS o_codi_r1, # Codigo de la distribuidora o_codi_ine_mun, # Municipio o_codi_ine_prov, # Provincia o_connexio, # Conexion o_tensio, # Tension de alimentacion o_estat_contracte, # Estado de contrato format_f(o_potencia or '0,000', decimals=3), # Potencia contratada format_f(o_potencia_facturada, decimals=3), # Potencia facturada format_f(o_pot_ads, decimals=3), # Potencia adscrita a la instalacion format_f(o_anual_activa, decimals=3), # Energia activa anual consumida format_f(o_anual_reactiva, decimals=3), # Energia reactiva anual consumida o_any_incorporacio # Año informacion ]) except Exception: traceback.print_exc() if self.raven: self.raven.captureException() finally: self.input_q.task_done()
def consumer(self): o_codi_r1 = 'R1-%s' % self.codi_r1[-3:] O = self.connection ultim_dia_any = '%s-12-31' % self.year search_glob = [ ('state', 'not in', ('esborrany', 'validar')), ('data_alta', '<=', ultim_dia_any), '|', ('data_baixa', '>=', ultim_dia_any), ('data_baixa', '=', False) ] context_glob = {'date': ultim_dia_any, 'active_test': False} while True: try: item = self.input_q.get() self.progress_q.put(item) fields_to_read = [ 'name', 'id_escomesa', 'id_municipi', 'cne_anual_activa', 'cne_anual_reactiva', 'cnmc_potencia_facturada', 'et' ] cups = O.GiscedataCupsPs.read(item, fields_to_read) if not cups or not cups.get('name'): self.input_q.task_done() continue o_name = cups['name'][:22] o_codi_ine = '' o_codi_prov = '' o_zona = '' o_potencia_facturada = cups['cnmc_potencia_facturada'] or '' if 'et' in cups: o_zona = self.get_zona_qualitat(cups['et']) if cups['id_municipi']: municipi = O.ResMunicipi.read( cups['id_municipi'][0], ['ine'] ) ine = get_ine(self.connection, municipi['ine']) o_codi_ine = ine[1] o_codi_prov = ine[0] o_utmx = '' o_utmy = '' o_utmz = '' o_nom_node = '' o_tensio = '' o_connexio = '' if cups and cups['id_escomesa']: o_connexio = self.get_tipus_connexio( cups['id_escomesa'][0] ) search_params = [('escomesa', '=', cups['id_escomesa'][0])] bloc_escomesa_id = O.GiscegisBlocsEscomeses.search( search_params ) if bloc_escomesa_id: bloc_escomesa = O.GiscegisBlocsEscomeses.read( bloc_escomesa_id[0], ['node', 'vertex'] ) if bloc_escomesa['vertex']: vertex = O.GiscegisVertex.read( bloc_escomesa['vertex'][0], ['x', 'y'] ) o_utmx = round(vertex['x'], 3) o_utmy = round(vertex['y'], 3) if bloc_escomesa['node']: search_params = [('start_node', '=', bloc_escomesa['node'][0])] edge_id = O.GiscegisEdge.search(search_params) if not edge_id: search_params = [('end_node', '=', bloc_escomesa['node'][0])] edge_id = O.GiscegisEdge.search(search_params) if edge_id: edge = O.GiscegisEdge.read( edge_id[0], ['name'] ) o_nom_node = edge['name'] search_params = [('cups', '=', cups['id'])] + search_glob polissa_id = O.GiscedataPolissa.search( search_params, 0, 1, 'data_alta desc', context_glob) o_potencia = '' o_cnae = '' o_pot_ads = '' o_equip = 'MEC' o_cod_tfa = '' o_estat_contracte = 0 if polissa_id: fields_to_read = [ 'potencia', 'cnae', 'tarifa', 'butlletins', 'tensio' ] polissa = O.GiscedataPolissa.read( polissa_id[0], fields_to_read, context_glob ) if polissa['tensio']: o_tensio = polissa['tensio'] / 1000.0 o_potencia = polissa['potencia'] if polissa['cnae']: o_cnae = polissa['cnae'][1] # Mirem si té l'actualització dels butlletins if polissa.get('butlletins', []): butlleti = O.GiscedataButlleti.read( polissa['butlletins'][-1], ['pot_max_admisible'] ) o_pot_ads = butlleti['pot_max_admisible'] comptador_actiu = get_comptador( self.connection, polissa['id'], self.year) if comptador_actiu: comptador_actiu = comptador_actiu[0] comptador = O.GiscedataLecturesComptador.read( comptador_actiu, ['cini', 'tg'] ) if not comptador['cini']: comptador['cini'] = '' if comptador.get('tg', False): o_equip = 'SMT' elif re.findall(CINI_TG_REGEXP, comptador['cini']): o_equip = 'SMT' else: o_equip = 'MEC' if polissa['tarifa']: o_cod_tfa = self.get_codi_tarifa(polissa['tarifa'][1]) else: # Si no trobem polissa activa, considerem # "Contrato no activo (CNA)" o_equip = 'CNA' o_estat_contracte = 1 #energies consumides o_anual_activa = cups['cne_anual_activa'] or 0.0 o_anual_reactiva = cups['cne_anual_reactiva'] or 0.0 o_any_incorporacio = self.year + 1 self.output_q.put([ o_nom_node, o_utmx, o_utmy, o_utmz, o_cnae, o_equip, o_cod_tfa, o_zona, o_name, o_codi_r1, o_codi_ine, o_codi_prov, o_connexio, o_tensio, o_estat_contracte, o_potencia, o_potencia_facturada, o_pot_ads or o_potencia, o_anual_activa, o_anual_reactiva, o_any_incorporacio ]) except: traceback.print_exc() if self.raven: self.raven.captureException() finally: self.input_q.task_done()