From c5223c69cf8cf0bc4e1f10045cf774d2b050c9c1 Mon Sep 17 00:00:00 2001 From: José Maria Villac Pinheiro Date: Thu, 20 Oct 2016 09:53:53 -0200 Subject: [PATCH] 20-10-2016 - GeoSan 7.4.0 - Implementação de funcionalidade para associar rapidamente mais de uma ligação a um ramal selecionado pelo usuário. Estas ligações vem das coordenadas GPS do coletor do GSAN. --- install/GeraSetupGeoSan/ArquivosInstGeoSan/GeoSan.exe | Bin 4001792 -> 0 bytes install/GeraSetupGeoSan/Codigo Gerador Instalador Geosan com TerraComponents.iss | 2 +- install/GeraSetupGeoSan/Output/SetupGeoSan-v.07.04.00.exe | Bin 0 -> 25304995 bytes trunk/Forms/frmCanvas.frm | 145 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------- trunk/Forms/frmMain.frm | 12 ++++++------ trunk/GeoSan.exe | Bin 4001792 -> 0 bytes trunk/GeoSan.vbp | 4 ++-- trunk/GeoSan.vbw | 8 ++++---- trunk/Modules/Global.bas | 2 +- trunk/classes/clsTerraLib.cls | 7 ++++--- 10 files changed, 112 insertions(+), 68 deletions(-) create mode 100644 install/GeraSetupGeoSan/Output/SetupGeoSan-v.07.04.00.exe diff --git a/install/GeraSetupGeoSan/ArquivosInstGeoSan/GeoSan.exe b/install/GeraSetupGeoSan/ArquivosInstGeoSan/GeoSan.exe index 1ec941d..a63f1cd 100644 Binary files a/install/GeraSetupGeoSan/ArquivosInstGeoSan/GeoSan.exe and b/install/GeraSetupGeoSan/ArquivosInstGeoSan/GeoSan.exe differ diff --git a/install/GeraSetupGeoSan/Codigo Gerador Instalador Geosan com TerraComponents.iss b/install/GeraSetupGeoSan/Codigo Gerador Instalador Geosan com TerraComponents.iss index 6aa09e1..7380f0a 100644 --- a/install/GeraSetupGeoSan/Codigo Gerador Instalador Geosan com TerraComponents.iss +++ b/install/GeraSetupGeoSan/Codigo Gerador Instalador Geosan com TerraComponents.iss @@ -1,5 +1,5 @@ #define SetupBaseName "SetupGeoSan-v." -#define AppVersionFile "07.03.03" +#define AppVersionFile "07.04.00" [Setup] AppName=GeoSan diff --git a/install/GeraSetupGeoSan/Output/SetupGeoSan-v.07.04.00.exe b/install/GeraSetupGeoSan/Output/SetupGeoSan-v.07.04.00.exe new file mode 100644 index 0000000..da2ae55 Binary files /dev/null and b/install/GeraSetupGeoSan/Output/SetupGeoSan-v.07.04.00.exe differ diff --git a/trunk/Forms/frmCanvas.frm b/trunk/Forms/frmCanvas.frm index e7f0f74..c373b17 100644 --- a/trunk/Forms/frmCanvas.frm +++ b/trunk/Forms/frmCanvas.frm @@ -205,27 +205,87 @@ Dim conexao As New ADODB.connection Dim cConsumidor As New clsConsumidorControler Dim object_id_consumidorSelecionado As Long 'referente ao cadastro de ligações com GPS em campo é a seleção do consumidor que será utilizado para ligar ao ramal Dim object_id_redeSelecionada As Long 'referente ao trecho de rede selecionado ao qual serão criados os ramais e ligados os consumidores +Dim object_id_ramalAddConsumerSelecionado As Long 'referente ao ramal que foi selecionado, para que os outros consumidores sejam adicionados ao mesmo +Dim object_id_ramalAddConsumerConsumidorSelecionado As Long 'referente ao consumidor selecionado pelo usuário, o qual será adicionado ao ramal já existente 'Constantes utilizadas na função ConvertTwipsToPixels para converter pixel para milímetro Const WU_LOGPIXELSX = 88 Const WU_LOGPIXELSY = 90 + +'Insere uma ligação de água do coletor de campo obtida pelo GPS do celular, no ramal selecionado +' +' +' +Private Sub InsereLigacaoNoRamalSelecionado(object_id_ramalSelecionado As Long, object_id_consumidoreSelecionado As Long) + Dim debugCodigoErro As String + Dim rsInsereRamaisAguaLigacao As ADODB.Recordset + Dim rsApagaLigacaoGpsCadastrada As ADODB.Recordset + Dim strAbreConexaoInsereRamaisAguaLigacao As String + Dim volumeFaturado As Double + Dim numeroDaLigacaoComDV As String + Dim strApagaGeometriaDaLigacaoGpsCadastrada As String + Dim strInsereLigacao As String + Dim strApagaLigacaoGpsCadastrada As String + On Error GoTo Trata_Erro + + '1 - Insere em RAMAIS_AGUA_LIGACAO a ligação selecionada pelo usuário + On Error GoTo Transacao_Erro + Conn.BeginTrans + debugCodigoErro = "0" + Set rsInsereRamaisAguaLigacao = New ADODB.Recordset + strAbreConexaoInsereRamaisAguaLigacao = "SELECT NRO_LIGACA, VOL_FATURA FROM NXGS_V_LIG_COMERCIAL_GPS WHERE object_id_331 = " + CStr(object_id_consumidoreSelecionado) + debugCodigoErro = "1 - Select: " & strAbreConexaoInsereRamaisAguaLigacao + rsInsereRamaisAguaLigacao.Open strAbreConexaoInsereRamaisAguaLigacao, Conn, adOpenKeyset, adLockOptimistic, adCmdText + 'Inicia a atualização de RAMAIS_AGUA com todos os dados + If rsInsereRamaisAguaLigacao.EOF = False Then 'Tem que encontrar a linha em RAMAIS_AGUA que acabou de ser inserida + volumeFaturado = IIf(IsNull(rsInsereRamaisAguaLigacao!VOL_FATURA), 0, rsInsereRamaisAguaLigacao!VOL_FATURA) + numeroDaLigacaoComDV = rsInsereRamaisAguaLigacao!NRO_LIGACA + End If + strInsereLigacao = "INSERT INTO RAMAIS_AGUA_LIGACAO (OBJECT_ID_,NRO_LIGACAO,CONSUMO_LPS) " + strInsereLigacao = strInsereLigacao & "VALUES ('" & object_id_ramalSelecionado & "','" & numeroDaLigacaoComDV & "', " & volumeFaturado & ")" + Conn.execute (strInsereLigacao) + rsInsereRamaisAguaLigacao.Close + + ' 7 - Apaga NX GPS + debugCodigoErro = "2" + Set rsApagaLigacaoGpsCadastrada = New ADODB.Recordset + strApagaLigacaoGpsCadastrada = "SELECT NRO_LIGACA FROM NXGS_V_LIG_COMERCIAL_GPS WHERE object_id_331 = " + CStr(object_id_consumidorSelecionado) + rsApagaLigacaoGpsCadastrada.Open strAbreConexaoInsereRamaisAguaLigacao, Conn, adOpenKeyset, adLockOptimistic, adCmdText + strApagaLigacaoGpsCadastrada = "DELETE FROM NXGS_V_LIG_COMERCIAL_GPS WHERE object_id_331 = " + CStr(object_id_consumidorSelecionado) + Conn.execute (strApagaLigacaoGpsCadastrada) + debugCodigoErro = "3" + strApagaGeometriaDaLigacaoGpsCadastrada = "DELETE FROM POINTS331 WHERE object_id = " + CStr(object_id_consumidoreSelecionado) + Conn.execute (strApagaGeometriaDaLigacaoGpsCadastrada) + rsApagaLigacaoGpsCadastrada.Close + Conn.CommitTrans + On Error GoTo Trata_Erro + debugCodigoErro = "4" + + TCanvas.plotView + Exit Sub + +Trata_Erro: + If Err.Number = 0 Or Err.Number = 20 Then + Resume Next + Else + ErroUsuario.Registra "frmCanvas", "InsereRamalLigacaoGPS - Código Erro: " & debugCodigoErro, CStr(Err.Number), CStr(Err.Description), True, glo.enviaEmails + End + End If + Exit Sub + +Transacao_Erro: + Conn.RollbackTrans + Conn.Close + ErroUsuario.Registra "frmCanvas", "InsereRamalLigacaoGPS - Código Erro: " & debugCodigoErro, CStr(Err.Number), CStr(Err.Description), True, glo.enviaEmails + End + Exit Sub +End Sub + 'Insere um ramal e a ligação do mesmo, para os consumidores levantados com GPS ' ' ' Private Sub InsereRamalLigacaoGPS(object_id_ligacaoGPS As Long, object_id_rede As Long) - ' XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX FASE 1 - É UM NOVO RAMAL - ' Sequência de operações - ' 1 - Insere linha em RAMAIS_AGUA - ' 2 - Insere a geometria de linha do ramal em LINES7 - ' 3 - Insere a geometria do ponto da ligação em POINTS7 - ' 4 - Atualiza os dados de RAMAIS_AGUA inclusive com o OBJECT_ID do trecho de rede e OBJECT_ID do ramal - ' 5 - Cria uma string com os números das ligações selecionadas pelo usuário - ' 6 - Insere em RAMAIS_AGUA_LIGACAO as ligações selecionadas pelo usuário - 'Tabelas de água a serem consultadas -' TB_Ramais = "RAMAIS_AGUA" 'Informações sobre os ramais -' TB_Ligacoes = "RAMAIS_AGUA_LIGACAO" 'Informações sobre as ligações de água -' TB_comercial = "NXGS_V_LIG_COMERCIAL" 'Informações sobre os dados das ligações de água. Geralmente uma vista para o sistema comercial On Error GoTo Trata_Erro Dim debugCodigoErro As String Dim objIdRamalTemporarioDoUsuario As String @@ -260,7 +320,6 @@ Private Sub InsereRamalLigacaoGPS(object_id_ligacaoGPS As Long, object_id_rede A Dim strApagaGeometriaDaLigacaoGpsCadastrada As String Dim retornoPontoDoRamalInserido As Long Dim geomIdRamal As Integer -' Dim objectIdRamal As String Dim volumeFaturado As Double Dim numeroDaLigacaoComDV As String @@ -286,6 +345,7 @@ Private Sub InsereRamalLigacaoGPS(object_id_ligacaoGPS As Long, object_id_rede A rsAdicionaNovoAtributoRamalAgua.Close 'Termina de adicionar a linha do ramal de água com os dados temporários da mesma Conn.CommitTrans On Error GoTo Trata_Erro + '2 - Adiciona geometria da linha de ramal de água debugCodigoErro = "1" retornoPontoGPS = TeDatabase1.setCurrentLayer("NXGS_V_LIG_COMERCIAL_GPS") @@ -299,21 +359,6 @@ Private Sub InsereRamalLigacaoGPS(object_id_ligacaoGPS As Long, object_id_rede A retornoPontoGPS = TeDatabase1.setCurrentLayer("RAMAIS_AGUA") retornoAdicionaLinhaRamal = TeDatabase1.addLine(idUnicoRamaisAgua, linhaRamalX(0), linhaRamalY(0), 2) - '3 - obtem o geoId máximo da tabela de geometria de linhas, último entrado -' debugCodigoErro = "2" -' On Error GoTo Transacao_Erro -' Conn.BeginTrans -' Set rsConsultaMaximoGeoId = New ADODB.Recordset -' strConsultaMaxGeoIdLinhaRamal = "SELECT Max ([geom_id]) From LINES7 WHERE object_id = '" + objIdRamalTemporarioDoUsuario + "'" -' rsConsultaMaximoGeoId.Open strConsultaMaxGeoIdLinhaRamal, Conn, adOpenForwardOnly, adLockOptimistic -' If rsConsultaMaximoGeoId.EOF = False Then -' Dim valorMaximo As Integer -' valorMaximo = rsConsultaMaximoGeoId.Fields(0).value -' geomIdRamal = valorMaximo -' objectIdRamal = CStr(geomIdRamal) -' End If -' rsConsultaMaximoGeoId.Close -' Conn.CommitTrans On Error GoTo Trata_Erro '4 - Adiciona geometria do ponto ao ramail debugCodigoErro = "3" @@ -337,23 +382,7 @@ Private Sub InsereRamalLigacaoGPS(object_id_ligacaoGPS As Long, object_id_rede A rsAtualizaDadosDoRamal.Close Conn.CommitTrans On Error GoTo Trata_Erro - - '5 - Atualiza Lines7 -' debugCodigoErro = "5" -' Set rsAtualizaDadosLinhaRamal = New ADODB.Recordset -' strAtualizaDadosDaLinhaRamal = "SELECT * FROM LINES7 WHERE OBJECT_ID = '" + objIdRamalTemporarioDoUsuario + "'" -' On Error GoTo Transacao_Erro -' Conn.BeginTrans -' rsAtualizaDadosLinhaRamal.Open strAtualizaDadosDaLinhaRamal, Conn, adOpenKeyset, adLockOptimistic, adCmdText -' 'Inicia a atualização de RAMAIS_AGUA com todos os dados -' If rsAtualizaDadosLinhaRamal.EOF = False Then 'Tem que encontrar a linha em RAMAIS_AGUA que acabou de ser inserida -' rsAtualizaDadosLinhaRamal!object_id = objectIdRamal 'Agora coloca o OBJECT_ID do ramal correto, o anterior tinha o nome do usuário-data-hora -' rsAtualizaDadosLinhaRamal.Update -' End If -' rsAtualizaDadosLinhaRamal.Close -' Conn.CommitTrans -' On Error GoTo Trata_Erro - + ' 6 - Insere em RAMAIS_AGUA_LIGACAO a ligação selecionada pelo usuário On Error GoTo Transacao_Erro Conn.BeginTrans @@ -995,8 +1024,8 @@ Public Sub Tb_SELECT(ByVal Button As String) TCanvas.Select Tr.TerraEvent = tg_DrawRamalAddConsumer TCanvas.clearEditItens TypeGeometry.Polyguns: TCanvas.clearEditItens TypeGeometry.lines: TCanvas.clearEditItens TypeGeometry.points: TCanvas.clearEditItens TypeGeometry.texts - TCanvas.setCurrentLayer ("NXGS_V_LIG_COMERCIAL_GPS") - FrmMain.sbStatusBar.Panels(1).Text = "Selecione o consumidor a ser adicionado" + TCanvas.setCurrentLayer ("RAMAIS_AGUA") + FrmMain.sbStatusBar.Panels(1).Text = "Selecione o ramal para adicionar o consumidor" FrmMain.sbStatusBar.Panels(2).Text = " " Case "kdrawramalAuto" TCanvas.Normal ' TCanvas da area normal desmarca item 1, item2, item3, item4 e 128 @@ -1394,12 +1423,12 @@ On Error GoTo Trata_Erro Dim frm As New FrmAssociation 'formulário para a associação de documentos a pontos no mapa 'este select é para o cadastro de ramais que vem da leitura em campo Select Case Tr.TerraEvent 'verifica o comando que está sendo executado - Case tg_DrawRamalAutoSelecionaConsumidor + Case tg_DrawRamalAutoSelecionaConsumidor 'aqui o usuário vai selecionando um consumidor após o outro para ligá-los no mesmo trecho de rede selecionado em tg_DrawRamalAuto object_id_consumidorSelecionado = TCanvas.getSelectObjectId(0, TypeGeometry.points) FrmMain.sbStatusBar.Panels(2).Text = "Ligação: " & str(object_id_consumidorSelecionado) InsereRamalLigacaoGPS object_id_consumidorSelecionado, object_id_redeSelecionada - Case tg_DrawRamalAuto + Case tg_DrawRamalAuto 'aqui o usuário seleciona a rede de água em que serão ligados os ramais object_id_redeSelecionada = TCanvas.getSelectObjectId(0, TypeGeometry.lines) TCanvas.Normal ' TCanvas da area normal desmarca item 1, item2, item3, item4 e 128 TCanvas.Select @@ -1409,8 +1438,22 @@ On Error GoTo Trata_Erro FrmMain.sbStatusBar.Panels(2).Text = "Rede selecionada: " & str(object_id_redeSelecionada) FrmMain.sbStatusBar.Panels(1).Text = "Selecione a ligação de água" - Case tg_DrawRamalAddConsumer - + Case tg_DrawRamalAddConsumer 'aqui o usuário terminou de selecionar o ramal para poder em seguida adicionar mais consumidores a este ramal + object_id_ramalAddConsumerSelecionado = TCanvas.getSelectObjectId(0, TypeGeometry.lines) + TCanvas.Normal ' TCanvas da area normal desmarca item 1, item2, item3, item4 e 128 + TCanvas.Select + Tr.TerraEvent = tg_DrawRamalAddConsumerSelecionaConsumidor + TCanvas.clearEditItens TypeGeometry.Polyguns: TCanvas.clearEditItens TypeGeometry.lines: TCanvas.clearEditItens TypeGeometry.points: TCanvas.clearEditItens TypeGeometry.texts + TCanvas.setCurrentLayer ("NXGS_V_LIG_COMERCIAL_GPS") + FrmMain.sbStatusBar.Panels(2).Text = "Ramal selecionado: " & str(object_id_ramalAddConsumerSelecionado) + FrmMain.sbStatusBar.Panels(1).Text = "Selecione a ligação de água para ligar no ramal" + + Case tg_DrawRamalAddConsumerSelecionaConsumidor + object_id_ramalAddConsumerConsumidorSelecionado = TCanvas.getSelectObjectId(0, TypeGeometry.points) + FrmMain.sbStatusBar.Panels(2).Text = "Ligação: " & str(object_id_ramalAddConsumerConsumidorSelecionado) + + InsereLigacaoNoRamalSelecionado object_id_ramalAddConsumerSelecionado, object_id_ramalAddConsumerConsumidorSelecionado + Case Else End Select diff --git a/trunk/Forms/frmMain.frm b/trunk/Forms/frmMain.frm index 4b4ff57..73fb012 100644 --- a/trunk/Forms/frmMain.frm +++ b/trunk/Forms/frmMain.frm @@ -155,12 +155,12 @@ Begin VB.MDIForm FrmMain Begin VB.PictureBox pctSfondo Align = 4 'Align Right BorderStyle = 0 'None - Height = 6615 + Height = 7515 Left = 6090 - ScaleHeight = 6615 + ScaleHeight = 7515 ScaleWidth = 3945 TabIndex = 1 - Top = 1410 + Top = 510 Width = 3945 Begin NxViewManager.ViewManager ViewManager1 Height = 1095 @@ -320,7 +320,7 @@ Begin VB.MDIForm FrmMain AutoSize = 2 Object.Width = 3519 MinWidth = 3528 - TextSave = "01:25" + TextSave = "10:54" EndProperty BeginProperty Panel4 {8E3867AB-8586-11D1-B16A-00C0F0283628} AutoSize = 2 @@ -336,13 +336,13 @@ Begin VB.MDIForm FrmMain End Begin MSComctlLib.Toolbar tbToolBar Align = 1 'Align Top - Height = 1410 + Height = 510 Left = 0 TabIndex = 7 Top = 0 Width = 10035 _ExtentX = 17701 - _ExtentY = 2487 + _ExtentY = 900 ButtonWidth = 820 ButtonHeight = 794 ImageList = "ImageList4" diff --git a/trunk/GeoSan.exe b/trunk/GeoSan.exe index 1ec941d..a63f1cd 100644 Binary files a/trunk/GeoSan.exe and b/trunk/GeoSan.exe differ diff --git a/trunk/GeoSan.vbp b/trunk/GeoSan.vbp index 0dc7658..e9420a2 100644 --- a/trunk/GeoSan.vbp +++ b/trunk/GeoSan.vbp @@ -150,8 +150,8 @@ Name="GeoSan" HelpContextID="0" CompatibleMode="0" MajorVer=7 -MinorVer=3 -RevisionVer=3 +MinorVer=4 +RevisionVer=0 AutoIncrementVer=0 ServerSupportFiles=0 VersionCompanyName="NEXUS GeoEngenharia e Com. Ltda." diff --git a/trunk/GeoSan.vbw b/trunk/GeoSan.vbw index e206933..05ee989 100644 --- a/trunk/GeoSan.vbw +++ b/trunk/GeoSan.vbw @@ -1,11 +1,11 @@ -Global = 178, 111, 1297, 843, Z +Global = 78, 7, 979, 602, Z calcDetecta = 0, 0, 0, 0, C FrmCreatTextForLayer = 0, 0, 0, 0, C, 132, 132, 1251, 864, C frmAbout = 0, 0, 0, 0, C, 154, 154, 1273, 886, C FrmTypes = 0, 0, 0, 0, C, 176, 176, 1295, 908, C -FrmMain = 37, 14, 1267, 632, C, 44, 44, 1163, 776, C +FrmMain = -209, 52, 1021, 665, C, -107, 100, 1012, 832, C FrmAssociation = 39, 209, 1277, 778, C, 220, 220, 1339, 952, C -FrmCadastroRamal = 18, 19, 1408, 748, , 45, 39, 1164, 771, C +FrmCadastroRamal = -448, 44, 942, 773, C, 45, 39, 1164, 771, C frmCadastroRamalFiltro = 100, 100, 1246, 731, C, 264, 264, 1383, 996, C frmCanvas = -74, 93, 1045, 858, , 110, 110, 1229, 842, C frmConsumidoresDesabastecidos = 110, 110, 1229, 842, C, 308, 308, 1427, 1040, C @@ -33,7 +33,7 @@ FrmSelectTypes = 0, 0, 0, 0, C, 22, 22, 1141, 754, C FrmSubTypes = 0, 0, 0, 0, C, 44, 44, 1163, 776, C FrmSuppliers = 0, 0, 0, 0, C, 66, 66, 1185, 798, C FrmSuppliersSub = 0, 0, 0, 0, C, 88, 88, 1207, 820, C -clsTerraLib = 56, 35, 1052, 839, C +clsTerraLib = 56, 35, 1052, 839, clsEPACurves = 0, 0, 0, 0, C clsEPAPatterns = 0, 0, 0, 0, C clsGeoReference = 132, 132, 1251, 864, C diff --git a/trunk/Modules/Global.bas b/trunk/Modules/Global.bas index 4636f5a..1152ef5 100644 --- a/trunk/Modules/Global.bas +++ b/trunk/Modules/Global.bas @@ -200,7 +200,7 @@ Public Sub Main() End If 'Configura a versão atual do GeoSan Versao_Geo = App.Major & "." & App.Minor & "." & App.Revision - Versao_Geo = "07.03.03" + Versao_Geo = "07.04.00" glo.diretorioGeoSan = App.path 'salva globalmente o caminho onde encontra-se o GeoSan.exe SaveLoadGlobalData glo.diretorioGeoSan + "/controles/variaveisGlobais.txt", True 'salva em um arquivo todas as variáveis globais para poderem ser acessadas por outras aplicações connn = "" diff --git a/trunk/classes/clsTerraLib.cls b/trunk/classes/clsTerraLib.cls index 511e6a1..9f0a30c 100644 --- a/trunk/classes/clsTerraLib.cls +++ b/trunk/classes/clsTerraLib.cls @@ -42,9 +42,10 @@ Public Enum TypeGeometryEvent tg_InsertDoc = 10 tg_MoveNetWorkVertice = 11 tg_MoveGpsPoint = 12 - tg_DrawRamalAuto = 13 - tg_DrawRamalAutoSelecionaConsumidor = 14 - tg_DrawRamalAddConsumer = 15 + tg_DrawRamalAuto = 13 'para selecionar o trecho de rede ao qual os ramais serão desenhados + tg_DrawRamalAutoSelecionaConsumidor = 14 'para selecionar o consumidor que será associado ao ramal que será desenhado + tg_DrawRamalAddConsumer = 15 'para selecionar o ramal ao qual serão ligados os consumidores + tg_DrawRamalAddConsumerSelecionaConsumidor = 16 'para selecionar os consumidores quer irão ligar-se aos ramais End Enum Private LayerReference As String, rs As ADODB.Recordset -- libgit2 0.21.2