Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
hydraulicModel
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
刘乐
hydraulicModel
Commits
7e05214c
Commit
7e05214c
authored
Jul 29, 2020
by
刘乐
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1,方案管理规划和表创建接口
parent
bb7193b7
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
671 additions
and
864 deletions
+671
-864
epanet2.h
EPNAET2/epanet2.h
+1
-1
CivHydrTest.cpp
funcDemo/CivHydrTest.cpp
+1
-1
main.cpp
funcDemo/main.cpp
+4
-4
hydraulicModel.sln
hydraulicModel.sln
+0
-1
CivHydrFuncInter.cpp
pandaAnalysis/CivHydrFuncInter.cpp
+8
-8
CivHydrFuncInter.h
pandaAnalysis/CivHydrFuncInter.h
+10
-9
CivMiddlewareQuery.h
pandaAnalysis/CivMiddlewareQuery.h
+0
-13
CivSimulResultCache.cpp
pandaAnalysis/CivSimulResultCache.cpp
+6
-63
CivSimulResultCache.h
pandaAnalysis/CivSimulResultCache.h
+2
-4
CivTrackingAnalysis.cpp
pandaAnalysis/CivTrackingAnalysis.cpp
+29
-31
pandaAnalysis.vcxproj
pandaAnalysis/pandaAnalysis.vcxproj
+0
-1
pandaAnalysis.vcxproj.filters
pandaAnalysis/pandaAnalysis.vcxproj.filters
+0
-3
CivConnection.cpp
pandaDbManager/CivConnection.cpp
+23
-0
CivConnection.h
pandaDbManager/CivConnection.h
+47
-0
CivDbConnection.cpp
pandaDbManager/CivDbConnection.cpp
+0
-593
CivDbConnection.h
pandaDbManager/CivDbConnection.h
+0
-121
CivDbUtils.cpp
pandaDbManager/CivDbUtils.cpp
+7
-0
CivDbUtils.h
pandaDbManager/CivDbUtils.h
+12
-0
CivMaintainModel.cpp
pandaDbManager/CivMaintainModel.cpp
+37
-0
CivMaintainModel.h
pandaDbManager/CivMaintainModel.h
+56
-0
CivTableTemp.cpp
pandaDbManager/CivTableTemp.cpp
+185
-0
CivTableTemp.h
pandaDbManager/CivTableTemp.h
+201
-1
CivTypes.h
pandaDbManager/CivTypes.h
+15
-0
pandaDbManager.vcxproj
pandaDbManager/pandaDbManager.vcxproj
+8
-4
pandaDbManager.vcxproj.filters
pandaDbManager/pandaDbManager.vcxproj.filters
+19
-6
水力模型产品规划V1.0-UPDATE.xmind
建模文档/水力模型产品规划V1.0-UPDATE.xmind
+0
-0
水力模型数据库.docx
建模文档/水力模型数据库.docx
+0
-0
No files found.
EPNAET2/epanet2.h
View file @
7e05214c
...
@@ -43,7 +43,7 @@
...
@@ -43,7 +43,7 @@
#ifndef DLLEXPORT
#ifndef DLLEXPORT
#ifdef WINDOWS
#ifdef WINDOWS
#ifdef __cplusplus
#ifdef __cplusplus
#define DLLEXPORT
extern "C"
__declspec(dllexport)
#define DLLEXPORT __declspec(dllexport)
#else
#else
#define DLLEXPORT __declspec(dllexport) __stdcall
#define DLLEXPORT __declspec(dllexport) __stdcall
#endif // __cplusplus
#endif // __cplusplus
...
...
funcDemo/CivHydrTest.cpp
View file @
7e05214c
...
@@ -86,7 +86,7 @@ void CivDownStreamTrackingTest::test(char* uri)
...
@@ -86,7 +86,7 @@ void CivDownStreamTrackingTest::test(char* uri)
{
{
// 追踪节点编号
// 追踪节点编号
char
sn
[
32
];
char
sn
[
32
];
strcpy
(
sn
,
"JD000000
47
"
);
strcpy
(
sn
,
"JD000000
16
"
);
char
result
[
1024
*
128
];
char
result
[
1024
*
128
];
...
...
funcDemo/main.cpp
View file @
7e05214c
...
@@ -36,12 +36,12 @@ int main(int argc, char* argv[])
...
@@ -36,12 +36,12 @@ int main(int argc, char* argv[])
context.contextTest(findUri);*/
context.contextTest(findUri);*/
// 上游追踪
// 上游追踪
/*
CivTestContext context(new CivUpstreamTrackingTest());
CivTestContext
context
(
new
CivUpstreamTrackingTest
());
context.contextTest(findUri);
*/
context
.
contextTest
(
findUri
);
// 下游追踪
// 下游追踪
CivTestContext
context
(
new
CivDownStreamTrackingTest
());
/*
CivTestContext context(new CivDownStreamTrackingTest());
context
.
contextTest
(
findUri
);
context.contextTest(findUri);
*/
// 水源供水范围分析
// 水源供水范围分析
...
...
hydraulicModel.sln
View file @
7e05214c
...
@@ -7,7 +7,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pandaDbManager", "pandaDbMa
...
@@ -7,7 +7,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pandaDbManager", "pandaDbMa
EndProject
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pandaAnalysis", "pandaAnalysis\pandaAnalysis.vcxproj", "{47F29C6C-9170-4188-A7AF-6BBCF38BFF6F}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pandaAnalysis", "pandaAnalysis\pandaAnalysis.vcxproj", "{47F29C6C-9170-4188-A7AF-6BBCF38BFF6F}"
ProjectSection(ProjectDependencies) = postProject
ProjectSection(ProjectDependencies) = postProject
{BE73E098-3D8C-4F80-88DD-B36A2BB68B64} = {BE73E098-3D8C-4F80-88DD-B36A2BB68B64}
{2B673FBC-3F91-4952-BDD3-4B802A761162} = {2B673FBC-3F91-4952-BDD3-4B802A761162}
{2B673FBC-3F91-4952-BDD3-4B802A761162} = {2B673FBC-3F91-4952-BDD3-4B802A761162}
EndProjectSection
EndProjectSection
EndProject
EndProject
...
...
pandaAnalysis/CivHydrFuncInter.cpp
View file @
7e05214c
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
#include "CivHydrSimulation.h"
#include "CivHydrSimulation.h"
#include "CivTrackingAnalysis.h"
#include "CivTrackingAnalysis.h"
bool
DLLEXPORT
getDataByInterval
(
char
*
uri
,
char
*
date
,
char
*
interval
)
bool
__declspec
(
dllexport
)
getDataByInterval
(
char
*
uri
,
char
*
date
,
char
*
interval
)
{
{
CivDbConn
*
dbConn
=
new
CivPgConn
(
uri
);
CivDbConn
*
dbConn
=
new
CivPgConn
(
uri
);
if
(
!
dbConn
->
open
())
if
(
!
dbConn
->
open
())
...
@@ -31,7 +31,7 @@ bool DLLEXPORT getDataByInterval(char* uri, char* date, char* interval)
...
@@ -31,7 +31,7 @@ bool DLLEXPORT getDataByInterval(char* uri, char* date, char* interval)
return
true
;
return
true
;
}
}
bool
DLLEXPORT
hdyrSimulation
(
char
*
uri
)
bool
__declspec
(
dllexport
)
hdyrSimulation
(
char
*
uri
)
{
{
// 创建数据库连接
// 创建数据库连接
CivDbConn
*
pgConn
=
new
CivPgConn
(
uri
);
CivDbConn
*
pgConn
=
new
CivPgConn
(
uri
);
...
@@ -48,7 +48,7 @@ bool DLLEXPORT hdyrSimulation(char* uri)
...
@@ -48,7 +48,7 @@ bool DLLEXPORT hdyrSimulation(char* uri)
return
flag
;
return
flag
;
}
}
bool
DLLEXPORT
qualitySimulation
(
char
*
uri
)
bool
__declspec
(
dllexport
)
qualitySimulation
(
char
*
uri
)
{
{
// 创建数据库连接
// 创建数据库连接
CivDbConn
*
pgConn
=
new
CivPgConn
(
uri
);
CivDbConn
*
pgConn
=
new
CivPgConn
(
uri
);
...
@@ -66,7 +66,7 @@ bool DLLEXPORT qualitySimulation(char* uri)
...
@@ -66,7 +66,7 @@ bool DLLEXPORT qualitySimulation(char* uri)
return
flag
;
return
flag
;
}
}
bool
DLLEXPORT
trackingSimulation
(
char
*
uri
,
char
*
sN
,
int
hours
,
char
*
result
)
bool
__declspec
(
dllexport
)
trackingSimulation
(
char
*
uri
,
char
*
sN
,
int
hours
,
char
*
result
)
{
{
// 创建数据库连接
// 创建数据库连接
...
@@ -92,7 +92,7 @@ bool DLLEXPORT trackingSimulation(char* uri, char* sN, int hours, char* result)
...
@@ -92,7 +92,7 @@ bool DLLEXPORT trackingSimulation(char* uri, char* sN, int hours, char* result)
return
flag
;
return
flag
;
}
}
bool
DLLEXPORT
getRptByCondition
(
char
*
uri
,
char
*
type
,
char
*
condition
,
char
*
result
)
bool
__declspec
(
dllexport
)
getRptByCondition
(
char
*
uri
,
char
*
type
,
char
*
condition
,
char
*
result
)
{
{
CivDbConn
*
dbConn
=
new
CivPgConn
(
uri
);
CivDbConn
*
dbConn
=
new
CivPgConn
(
uri
);
if
(
!
dbConn
->
open
())
if
(
!
dbConn
->
open
())
...
@@ -176,7 +176,7 @@ bool DLLEXPORT getRptByCondition(char* uri, char* type, char* condition, char* r
...
@@ -176,7 +176,7 @@ bool DLLEXPORT getRptByCondition(char* uri, char* type, char* condition, char* r
return
true
;
return
true
;
}
}
bool
DLLEXPORT
upstreamTracking
(
char
*
uri
,
char
*
sn
,
char
*
result
)
bool
__declspec
(
dllexport
)
upstreamTracking
(
char
*
uri
,
char
*
sn
,
char
*
result
)
{
{
// 创建数据库连接
// 创建数据库连接
CivDbConn
*
pgConn
=
new
CivPgConn
(
uri
);
CivDbConn
*
pgConn
=
new
CivPgConn
(
uri
);
...
@@ -199,7 +199,7 @@ bool DLLEXPORT upstreamTracking(char* uri, char* sn, char* result)
...
@@ -199,7 +199,7 @@ bool DLLEXPORT upstreamTracking(char* uri, char* sn, char* result)
return
true
;
return
true
;
}
}
bool
DLLEXPORT
downstreamTracking
(
char
*
uri
,
char
*
sn
,
char
*
result
)
bool
__declspec
(
dllexport
)
downstreamTracking
(
char
*
uri
,
char
*
sn
,
char
*
result
)
{
{
// 创建数据库连接
// 创建数据库连接
CivDbConn
*
pgConn
=
new
CivPgConn
(
uri
);
CivDbConn
*
pgConn
=
new
CivPgConn
(
uri
);
...
@@ -222,7 +222,7 @@ bool DLLEXPORT downstreamTracking(char* uri, char* sn, char* result)
...
@@ -222,7 +222,7 @@ bool DLLEXPORT downstreamTracking(char* uri, char* sn, char* result)
return
true
;
return
true
;
}
}
bool
DLLEXPORT
waterSupplyScopeAnalysis
(
char
*
uri
,
char
*
sn
,
char
*
result
)
bool
__declspec
(
dllexport
)
waterSupplyScopeAnalysis
(
char
*
uri
,
char
*
sn
,
char
*
result
)
{
{
// 创建数据库连接
// 创建数据库连接
CivDbConn
*
pgConn
=
new
CivPgConn
(
uri
);
CivDbConn
*
pgConn
=
new
CivPgConn
(
uri
);
...
...
pandaAnalysis/CivHydrFuncInter.h
View file @
7e05214c
#ifndef CIVHYDRFUNCINTER_H
#ifndef CIVHYDRFUNCINTER_H
#define CIVHYDRFUNCINTER_H
#define CIVHYDRFUNCINTER_H
#define DLLEXPORT __declspec(dllexport)
#define FUNEXPORT extern "C" __declspec(dllexport)
#if defined(__cplusplus)
#if defined(__cplusplus)
extern
"C"
{
extern
"C"
{
...
@@ -12,7 +13,7 @@ extern "C" {
...
@@ -12,7 +13,7 @@ extern "C" {
*@param sn 追踪节点本点号
*@param sn 追踪节点本点号
*@param result 追踪结果
*@param result 追踪结果
*/
*/
bool
DLLEXPORT
upstreamTracking
(
char
*
uri
,
char
*
sn
,
char
*
result
);
bool
__declspec
(
dllexport
)
upstreamTracking
(
char
*
uri
,
char
*
sn
,
char
*
result
);
/**
/**
*@brief 下游追踪
*@brief 下游追踪
...
@@ -20,7 +21,7 @@ extern "C" {
...
@@ -20,7 +21,7 @@ extern "C" {
*@param sn 追踪节点本点号
*@param sn 追踪节点本点号
*@param result 追踪结果
*@param result 追踪结果
*/
*/
bool
DLLEXPORT
downstreamTracking
(
char
*
uri
,
char
*
sn
,
char
*
result
);
bool
__declspec
(
dllexport
)
downstreamTracking
(
char
*
uri
,
char
*
sn
,
char
*
result
);
/**
/**
*@brief 供水范围追踪
*@brief 供水范围追踪
...
@@ -28,7 +29,7 @@ extern "C" {
...
@@ -28,7 +29,7 @@ extern "C" {
*@param sn 追踪节点本点号
*@param sn 追踪节点本点号
*@param result 追踪结果
*@param result 追踪结果
*/
*/
bool
DLLEXPORT
waterSupplyScopeAnalysis
(
char
*
uri
,
char
*
sn
,
char
*
result
);
bool
__declspec
(
dllexport
)
waterSupplyScopeAnalysis
(
char
*
uri
,
char
*
sn
,
char
*
result
);
/**
/**
*@brief 获取当前日期和时段的结果值
*@brief 获取当前日期和时段的结果值
...
@@ -38,21 +39,21 @@ extern "C" {
...
@@ -38,21 +39,21 @@ extern "C" {
*@param result 获取的结果值
*@param result 获取的结果值
*@return 1: 成功,其他值失败
*@return 1: 成功,其他值失败
*/
*/
bool
DLLEXPORT
getRptByCondition
(
char
*
uri
,
char
*
type
,
char
*
condition
,
char
*
result
);
bool
__declspec
(
dllexport
)
getRptByCondition
(
char
*
uri
,
char
*
type
,
char
*
condition
,
char
*
result
);
/**
/**
*@brief 水力计算服务
*@brief 水力计算服务
*@param uri:数据库连接地址
*@param uri:数据库连接地址
*@return 1:成功,其他值失败
*@return 1:成功,其他值失败
*/
*/
bool
DLLEXPORT
hdyrSimulation
(
char
*
uri
);
bool
__declspec
(
dllexport
)
hdyrSimulation
(
char
*
uri
);
/**
/**
*@brief 水质计算
*@brief 水质计算
*@param uri:数据库连接地址
*@param uri:数据库连接地址
*@return 1:成功,其他值失败
*@return 1:成功,其他值失败
*/
*/
bool
DLLEXPORT
qualitySimulation
(
char
*
uri
);
bool
__declspec
(
dllexport
)
qualitySimulation
(
char
*
uri
);
/**
/**
*@brief 水质追踪分析,扩散分析
*@brief 水质追踪分析,扩散分析
...
@@ -62,7 +63,7 @@ extern "C" {
...
@@ -62,7 +63,7 @@ extern "C" {
*@param result:输出结果:json字符串
*@param result:输出结果:json字符串
*@return 1:成功,其他值失败
*@return 1:成功,其他值失败
*/
*/
bool
DLLEXPORT
trackingSimulation
(
char
*
uri
,
char
*
sN
,
int
hours
,
char
*
result
);
bool
__declspec
(
dllexport
)
trackingSimulation
(
char
*
uri
,
char
*
sN
,
int
hours
,
char
*
result
);
/**
/**
*@brief 获取管网计算特定时段的结果
*@brief 获取管网计算特定时段的结果
...
@@ -71,7 +72,7 @@ extern "C" {
...
@@ -71,7 +72,7 @@ extern "C" {
*@param interval: 时段,整数
*@param interval: 时段,整数
*@return 成功,失败
*@return 成功,失败
*/
*/
bool
DLLEXPORT
getDataByInterval
(
char
*
uri
,
char
*
date
,
char
*
interval
);
bool
__declspec
(
dllexport
)
getDataByInterval
(
char
*
uri
,
char
*
date
,
char
*
interval
);
#if defined(__cplusplus)
#if defined(__cplusplus)
}
}
...
...
pandaAnalysis/CivMiddlewareQuery.h
deleted
100644 → 0
View file @
bb7193b7
#ifndef CIVMIDDLEWAREQUERY_H
#define CIVMIDDLEWAREQUERY_H
/**
ݿѯ
*/
class
CivMiddlewareQuery
{
public
:
};
#endif // !CIVMIDDLEWAREQUERY_H
pandaAnalysis/CivSimulResultCache.cpp
View file @
7e05214c
#include "CivSimulResultCache.h"
#include "CivSimulResultCache.h"
#include"CivSysLog.h"
#include"CivSysLog.h"
#include "CivDbConn.h"
void
CivSimulResultCache
::
addNodeQuality
(
float
quality
,
int
interval
,
Str
sNo
)
void
CivSimulResultCache
::
addNodeQuality
(
float
quality
,
int
interval
,
Str
sNo
)
{
{
...
@@ -13,6 +14,11 @@ void CivSimulResultCache::addNodeQuality(float quality, int interval, Str sNo)
...
@@ -13,6 +14,11 @@ void CivSimulResultCache::addNodeQuality(float quality, int interval, Str sNo)
mNodeItemsMap
[
interval
][
sNo
].
dQuality
=
quality
;
mNodeItemsMap
[
interval
][
sNo
].
dQuality
=
quality
;
}
}
bool
CivSimulResultCache
::
updateToDb
(
CivDbConn
*
dbConn
)
{
return
true
;
}
void
CivSimulResultCache
::
addLinkQuality
(
float
quality
,
int
interval
,
Str
sNo
)
void
CivSimulResultCache
::
addLinkQuality
(
float
quality
,
int
interval
,
Str
sNo
)
{
{
if
(
mLinkItemsMap
.
find
(
interval
)
==
mLinkItemsMap
.
end
())
if
(
mLinkItemsMap
.
find
(
interval
)
==
mLinkItemsMap
.
end
())
...
@@ -35,69 +41,6 @@ void CivSimulResultCache::addLinkItems(const LinkResultItem& linkItem)
...
@@ -35,69 +41,6 @@ void CivSimulResultCache::addLinkItems(const LinkResultItem& linkItem)
mLinkItemsMap
[
linkItem
.
dInterval
][
linkItem
.
szNo
]
=
linkItem
;
mLinkItemsMap
[
linkItem
.
dInterval
][
linkItem
.
szNo
]
=
linkItem
;
}
}
bool
CivSimulResultCache
::
updateToDb
(
CivDbConn
*
dbConn
)
{
CivSysLog
::
getInstance
()
->
error
(
"开始写入数据库"
,
"CivSimulResultCache"
,
__FUNCTION__
);
if
(
dbConn
==
nullptr
)
{
CivSysLog
::
getInstance
()
->
error
(
"dbConn == nullptr"
,
"CivSimulResultCache"
,
__FUNCTION__
);
return
false
;
}
for
(
auto
iter
=
mNodeItemsMap
.
begin
();
iter
!=
mNodeItemsMap
.
end
();
iter
++
)
{
NodeResultItems
nodeItems
=
iter
->
second
;
if
(
!
dbConn
->
updateNode
(
nodeItems
))
{
CivSysLog
::
getInstance
()
->
error
(
"存储节点数据失败"
,
"CivSimulResultCache"
,
__FUNCTION__
);
}
}
for
(
auto
iter
=
mLinkItemsMap
.
begin
();
iter
!=
mLinkItemsMap
.
end
();
iter
++
)
{
LinkResultItems
nodeItems
=
iter
->
second
;
if
(
!
dbConn
->
updateLink
(
nodeItems
))
{
CivSysLog
::
getInstance
()
->
error
(
"存储管段数据失败"
,
"CivSimulResultCache"
,
__FUNCTION__
);
}
}
CivSysLog
::
getInstance
()
->
error
(
"写入数据库完成"
,
"CivSimulResultCache"
,
__FUNCTION__
);
return
true
;
}
bool
CivSimulResultCache
::
updateToDb
(
CivDbConnection
*
dbConn
)
{
CivSysLog
::
getInstance
()
->
error
(
"开始写入数据库"
,
"CivSimulResultCache"
,
__FUNCTION__
);
if
(
dbConn
==
nullptr
)
{
CivSysLog
::
getInstance
()
->
error
(
"dbConn == nullptr"
,
"CivSimulResultCache"
,
__FUNCTION__
);
return
false
;
}
for
(
auto
iter
=
mNodeItemsMap
.
begin
();
iter
!=
mNodeItemsMap
.
end
();
iter
++
)
{
NodeResultItems
nodeItems
=
iter
->
second
;
if
(
!
dbConn
->
updateNode
(
nodeItems
))
{
CivSysLog
::
getInstance
()
->
error
(
"存储节点数据失败"
,
"CivSimulResultCache"
,
__FUNCTION__
);
}
}
for
(
auto
iter
=
mLinkItemsMap
.
begin
();
iter
!=
mLinkItemsMap
.
end
();
iter
++
)
{
LinkResultItems
nodeItems
=
iter
->
second
;
if
(
!
dbConn
->
updateLink
(
nodeItems
))
{
CivSysLog
::
getInstance
()
->
error
(
"存储管段数据失败"
,
"CivSimulResultCache"
,
__FUNCTION__
);
}
}
CivSysLog
::
getInstance
()
->
error
(
"写入数据库完成"
,
"CivSimulResultCache"
,
__FUNCTION__
);
clear
();
return
true
;
}
void
CivSimulResultCache
::
getResultByTime
(
int
time
,
NodeResultItems
&
nodeItems
,
LinkResultItems
&
linkItems
)
void
CivSimulResultCache
::
getResultByTime
(
int
time
,
NodeResultItems
&
nodeItems
,
LinkResultItems
&
linkItems
)
{
{
nodeItems
.
clear
();
nodeItems
.
clear
();
...
...
pandaAnalysis/CivSimulResultCache.h
View file @
7e05214c
...
@@ -2,10 +2,10 @@
...
@@ -2,10 +2,10 @@
#define CIVSIMULRESULTCACHE_H
#define CIVSIMULRESULTCACHE_H
#include <map>
#include <map>
#include "CivDbConn.h"
#include "CivDbConnection.h"
#include "CivTypes.h"
#include "CivTypes.h"
class
CivDbConn
;
/**
/**
模拟结果缓存类
模拟结果缓存类
*/
*/
...
@@ -49,8 +49,6 @@ public:
...
@@ -49,8 +49,6 @@ public:
*@brief 缓存数据更新到数据库
*@brief 缓存数据更新到数据库
*@param dbConn:数据库连接对象
*@param dbConn:数据库连接对象
*/
*/
bool
updateToDb
(
CivDbConnection
*
dbConn
);
bool
updateToDb
(
CivDbConn
*
dbConn
);
bool
updateToDb
(
CivDbConn
*
dbConn
);
/**
/**
...
...
pandaAnalysis/CivTrackingAnalysis.cpp
View file @
7e05214c
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
#include "CivSimulResultCache.h"
#include "CivSimulResultCache.h"
#include "CivHydrSimulation.h"
#include "CivHydrSimulation.h"
#include "CivGraphFactory.h"
#include "CivGraphFactory.h"
#include "CivDbConn.h"
CivTrackingAnalysis
::
CivTrackingAnalysis
()
CivTrackingAnalysis
::
CivTrackingAnalysis
()
:
mGraph
(
new
ALGraph
<
CivGraphJunction
,
CivGraphEdage
>
())
:
mGraph
(
new
ALGraph
<
CivGraphJunction
,
CivGraphEdage
>
())
...
@@ -92,28 +93,28 @@ bool CivTrackingAnalysis::transformJson(const std::vector<CivGraphJunction>& jun
...
@@ -92,28 +93,28 @@ bool CivTrackingAnalysis::transformJson(const std::vector<CivGraphJunction>& jun
const
std
::
vector
<
CivGraphEdage
>&
pipes
,
std
::
string
&
jsonResult
)
const
std
::
vector
<
CivGraphEdage
>&
pipes
,
std
::
string
&
jsonResult
)
{
{
jsonResult
.
append
(
"
{
\"
node
\"
:
["
);
jsonResult
.
append
(
"["
);
// 节点
//
//
节点
size_t
juncTotal
=
junctions
.
size
();
//
size_t juncTotal = junctions.size();
for
(
int
i
=
0
;
i
<
juncTotal
;
i
++
)
//
for (int i = 0; i < juncTotal; i++)
{
//
{
CivGraphJunction
junction
=
junctions
.
at
(
i
);
//
CivGraphJunction junction = junctions.at(i);
std
::
string
sn
=
junction
.
getSn
();
//
std::string sn = junction.getSn();
std
::
string
xCoord
=
junction
.
getXCoord
();
//
std::string xCoord = junction.getXCoord();
std
::
string
yCoord
=
junction
.
getYCoord
();
//
std::string yCoord = junction.getYCoord();
jsonResult
.
append
(
"["
);
//
jsonResult.append("[");
jsonResult
.
append
(
sn
);
//
jsonResult.append(sn);
jsonResult
.
append
(
","
);
//
jsonResult.append(",");
jsonResult
.
append
(
xCoord
);
//
jsonResult.append(xCoord);
jsonResult
.
append
(
","
);
//
jsonResult.append(",");
jsonResult
.
append
(
yCoord
);
//
jsonResult.append(yCoord);
jsonResult
.
append
(
"],"
);
//
jsonResult.append("],");
}
//
}
jsonResult
=
jsonResult
.
substr
(
0
,
jsonResult
.
length
()
-
1
);
//
jsonResult = jsonResult.substr(0, jsonResult.length() - 1);
jsonResult
.
append
(
"],
\"
pipes
\"
:["
);
//
jsonResult.append("],\"pipes\":[");
// 管段
// 管段
size_t
pipesTotal
=
pipes
.
size
();
size_t
pipesTotal
=
pipes
.
size
();
...
@@ -124,22 +125,18 @@ bool CivTrackingAnalysis::transformJson(const std::vector<CivGraphJunction>& jun
...
@@ -124,22 +125,18 @@ bool CivTrackingAnalysis::transformJson(const std::vector<CivGraphJunction>& jun
if
(
edge
.
getSN
().
empty
())
if
(
edge
.
getSN
().
empty
())
continue
;
continue
;
jsonResult
.
append
(
"["
);
jsonResult
.
append
(
"[["
);
jsonResult
.
append
(
edge
.
getSN
());
jsonResult
.
append
(
","
);
jsonResult
.
append
(
edge
.
getLength
());
jsonResult
.
append
(
","
);
jsonResult
.
append
(
edge
.
getStartX
());
jsonResult
.
append
(
edge
.
getStartX
());
jsonResult
.
append
(
","
);
jsonResult
.
append
(
","
);
jsonResult
.
append
(
edge
.
getStartY
());
jsonResult
.
append
(
edge
.
getStartY
());
jsonResult
.
append
(
"
,
"
);
jsonResult
.
append
(
"
],[
"
);
jsonResult
.
append
(
edge
.
getEndX
());
jsonResult
.
append
(
edge
.
getEndX
());
jsonResult
.
append
(
","
);
jsonResult
.
append
(
","
);
jsonResult
.
append
(
edge
.
getEndY
());
jsonResult
.
append
(
edge
.
getEndY
());
jsonResult
.
append
(
"],"
);
jsonResult
.
append
(
"]
]
,"
);
}
}
jsonResult
=
jsonResult
.
substr
(
0
,
jsonResult
.
length
()
-
1
);
jsonResult
=
jsonResult
.
substr
(
0
,
jsonResult
.
length
()
-
1
);
jsonResult
.
append
(
"]
}
"
);
jsonResult
.
append
(
"]"
);
return
true
;
return
true
;
}
}
...
@@ -184,6 +181,7 @@ bool CivTrackingAnalysis::downstreamTracking(const std::string& sN, std::string&
...
@@ -184,6 +181,7 @@ bool CivTrackingAnalysis::downstreamTracking(const std::string& sN, std::string&
bool
CivTrackingAnalysis
::
waterSupplyScopeAnalysis
(
const
std
::
string
&
sN
,
std
::
string
&
jsonResult
)
bool
CivTrackingAnalysis
::
waterSupplyScopeAnalysis
(
const
std
::
string
&
sN
,
std
::
string
&
jsonResult
)
{
{
return
true
;
return
true
;
}
}
...
@@ -194,9 +192,9 @@ bool CivTrackingAnalysis::upstreamTracking(const std::string& sN,
...
@@ -194,9 +192,9 @@ bool CivTrackingAnalysis::upstreamTracking(const std::string& sN,
// 上溯,图反向
// 上溯,图反向
ALGraph
<
CivGraphJunction
,
CivGraphEdage
>*
graph
=
mGraph
->
reverseGraph
();
ALGraph
<
CivGraphJunction
,
CivGraphEdage
>*
graph
=
mGraph
->
reverseGraph
();
CivGraphJunction
junction
(
sN
);
CivGraphJunction
junction
(
sN
);
graph
->
getVisitedResult
(
junction
,
junctions
,
pipes
);
graph
->
getVisitedResult
(
junction
,
junctions
,
pipes
);
delete
graph
;
delete
graph
;
return
true
;
return
true
;
}
}
...
...
pandaAnalysis/pandaAnalysis.vcxproj
View file @
7e05214c
...
@@ -171,7 +171,6 @@
...
@@ -171,7 +171,6 @@
<ClInclude
Include=
"CivHydrSimulation.h"
/>
<ClInclude
Include=
"CivHydrSimulation.h"
/>
<ClInclude
Include=
"CivBuilder.h"
/>
<ClInclude
Include=
"CivBuilder.h"
/>
<ClInclude
Include=
"CivInpDirector.h"
/>
<ClInclude
Include=
"CivInpDirector.h"
/>
<ClInclude
Include=
"CivMiddlewareQuery.h"
/>
<ClInclude
Include=
"CivNewInp.h"
/>
<ClInclude
Include=
"CivNewInp.h"
/>
<ClInclude
Include=
"CivSimulResultCache.h"
/>
<ClInclude
Include=
"CivSimulResultCache.h"
/>
<ClInclude
Include=
"CivTrackingAnalysis.h"
/>
<ClInclude
Include=
"CivTrackingAnalysis.h"
/>
...
...
pandaAnalysis/pandaAnalysis.vcxproj.filters
View file @
7e05214c
...
@@ -62,9 +62,6 @@
...
@@ -62,9 +62,6 @@
<ClInclude
Include=
"CivSimulResultCache.h"
>
<ClInclude
Include=
"CivSimulResultCache.h"
>
<Filter>
头文件
</Filter>
<Filter>
头文件
</Filter>
</ClInclude>
</ClInclude>
<ClInclude
Include=
"CivMiddlewareQuery.h"
>
<Filter>
头文件
</Filter>
</ClInclude>
<ClInclude
Include=
"CivHydrSimulation.h"
>
<ClInclude
Include=
"CivHydrSimulation.h"
>
<Filter>
头文件
</Filter>
<Filter>
头文件
</Filter>
</ClInclude>
</ClInclude>
...
...
pandaDbManager/CivConnection.cpp
0 → 100644
View file @
7e05214c
#include "CivConnection.h"
CivConnection
::
CivConnection
()
:
mValid
(
false
)
{
}
CivConnection
::~
CivConnection
()
{
}
bool
CivConnection
::
isValid
()
const
{
return
mValid
;
}
std
::
string
CivConnection
::
getLastError
()
const
{
return
mLastError
;
}
pandaDbManager/CivConnection.h
0 → 100644
View file @
7e05214c
#pragma once
#include <string>
/**
数据库连接类
*/
class
CivConnection
{
public
:
CivConnection
();
virtual
~
CivConnection
();
virtual
bool
connect
(
const
std
::
string
url
)
=
0
;
/**
*@brief 建立数据,与具体的数据有关子类实现
*/
virtual
bool
open
()
=
0
;
/**
*@brief 关闭数据,与具体的数据有关子类实现
*/
virtual
bool
close
()
=
0
;
/**
*@brief 执行sql, 非查询操作,与具体的数据有关子类实现
*@param 非查询类,sql语句
*/
virtual
bool
execNoQquery
(
const
std
::
string
&
sql
)
=
0
;
/**
*@brief 执行查询操作,与具体的数据有关子类实现
*@param sql 查询sql语句
*/
virtual
bool
execQuery
(
const
std
::
string
&
sql
)
=
0
;
// 检查连接
bool
isValid
()
const
;
// 获取信息
std
::
string
getLastError
()
const
;
private
:
bool
mValid
;
std
::
string
mLastError
;
};
pandaDbManager/CivDbConnection.cpp
deleted
100644 → 0
View file @
bb7193b7
#include "CivDbConnection.h"
#include "CivCommonUtils.h"
#include<iostream>
#include <sstream>
CivDbConnection
::
CivDbConnection
(
char
*
uri
)
:
mConn
(
NULL
),
mUri
(
uri
)
{
}
CivDbConnection
::~
CivDbConnection
()
{
close
();
}
bool
CivDbConnection
::
tableExist
(
StrQuote
tableName
)
{
char
sql
[
256
]
=
"select count(*) from pg_class where relname = '"
;
strcat_s
(
sql
,
tableName
.
c_str
());
strcat_s
(
sql
,
"'"
);
if
(
!
execSql
(
sql
))
return
false
;
char
*
res
=
PQgetvalue
(
mResult
,
0
,
0
);
PQclear
(
mResult
);
int
number
=
atoi
(
res
);
return
number
>
0
?
true
:
false
;
}
bool
CivDbConnection
::
open
()
{
mConn
=
PQconnectdb
(
mUri
);
if
(
PQstatus
(
mConn
)
==
CONNECTION_BAD
)
{
mConn
=
NULL
;
PQfinish
(
mConn
);
return
false
;
}
mIsOpen
=
true
;
return
true
;
}
bool
CivDbConnection
::
isValid
()
const
{
return
mIsOpen
;
}
void
CivDbConnection
::
close
()
{
if
(
mConn
!=
NULL
)
PQfinish
(
mConn
);
mIsOpen
=
false
;
}
Tables
CivDbConnection
::
getTables
(
StrQuote
netName
,
StrQuote
schema
)
{
if
(
!
isValid
())
return
Tables
();
std
::
string
utf8NetName
=
TransUTFCoding
(
netName
);
// 中文乱码
std
::
string
sql
=
"select
\"
name
\"
from public.__layer_info__ where net_code in(select code from public.__layer_net_info__ where
\"
name
\"
='"
+
utf8NetName
+
"' and
\"
schema
\"
= '"
+
schema
+
"')"
;
if
(
!
execSql
(
sql
))
return
Tables
();
Tables
tables
;
int
rows
=
PQntuples
(
mResult
);
int
columns
=
PQnfields
(
mResult
);
for
(
int
i
=
0
;
i
<
rows
;
i
++
)
{
for
(
int
j
=
0
;
j
<
columns
;
j
++
)
{
char
*
item
=
PQgetvalue
(
mResult
,
i
,
j
);
std
::
string
ss
=
UTFTransCoding
(
item
);
tables
.
push_back
(
ss
);
}
}
PQclear
(
mResult
);
return
tables
;
}
bool
CivDbConnection
::
deleteByDate
(
StrQuote
table
,
StrQuote
filedName
,
StrQuote
fieldValue
)
{
if
(
!
isValid
())
return
false
;
char
delSql
[
256
]
=
"delete from
\"
"
;
strcat_s
(
delSql
,
table
.
c_str
());
strcat_s
(
delSql
,
"
\"
where "
);
strcat_s
(
delSql
,
filedName
.
c_str
());
strcat_s
(
delSql
,
"='"
);
strcat_s
(
delSql
,
fieldValue
.
c_str
());
strcat_s
(
delSql
,
"'"
);
std
::
string
utf8Sql
=
TransUTFCoding
(
delSql
);
if
(
!
execSql
(
utf8Sql
))
return
false
;
return
true
;
}
bool
CivDbConnection
::
updateNode
(
const
NodeResultItems
&
nodeItems
)
{
if
(
!
isValid
())
return
false
;
std
::
stringstream
os
;
NodeFieldName
filedNames
;
os
<<
"INSERT INTO public."
<<
NODERESULTTABLE
<<
" ( "
;
os
<<
filedNames
.
Number
<<
","
;
os
<<
filedNames
.
dDemand
<<
","
;
os
<<
filedNames
.
dHead
<<
","
;
os
<<
filedNames
.
dElevation
<<
","
;
os
<<
filedNames
.
dPressure
<<
","
;
os
<<
filedNames
.
dTankLevel
<<
","
;
os
<<
filedNames
.
dTankMaxVolume
<<
","
;
os
<<
filedNames
.
dTankVolume
<<
","
;
os
<<
filedNames
.
dDate
<<
","
;
os
<<
filedNames
.
dInterval
<<
","
;
os
<<
filedNames
.
dQuality
<<
","
;
os
<<
filedNames
.
dModifyTime
;
os
<<
") VALUES"
;
std
::
string
preSql
=
os
.
str
();
os
.
flush
();
os
.
clear
();
os
.
str
(
""
);
// 2, 参数值
for
(
auto
iter
=
nodeItems
.
begin
();
iter
!=
nodeItems
.
end
();
iter
++
)
{
NodeResultItem
item
=
iter
->
second
;
os
<<
"('"
<<
item
.
szNo
<<
"',"
;
os
<<
item
.
dDemand
<<
","
;
os
<<
item
.
dHead
<<
","
;
os
<<
item
.
dElevation
<<
","
;
os
<<
item
.
dPressure
<<
","
;
os
<<
item
.
dTankLevel
<<
","
;
os
<<
item
.
dTankMaxVolume
<<
","
;
os
<<
item
.
dTankVolume
<<
","
;
os
<<
"'"
<<
CurrentDate
<<
"',"
;
os
<<
item
.
dInterval
<<
","
;
os
<<
item
.
dQuality
<<
","
;
os
<<
"'"
<<
CurrentTime
<<
"'"
;
auto
subiter
=
iter
;
++
subiter
;
if
(
subiter
==
nodeItems
.
end
())
{
os
<<
")"
;
}
else
{
os
<<
"),"
;
}
}
std
::
string
sql
=
TransUTFCoding
(
preSql
)
+
os
.
str
();
os
.
clear
();
os
.
str
(
""
);
if
(
!
execSql
(
sql
))
return
false
;
return
true
;
}
bool
CivDbConnection
::
updateLink
(
const
LinkResultItems
&
lineItems
)
{
if
(
!
isValid
())
return
false
;
std
::
stringstream
os
;
LinkFiledName
filedNames
;
std
::
string
currData
=
CurrentDate
;
os
<<
"INSERT INTO public."
<<
PIPERESULTTABLE
<<
"( "
;
os
<<
filedNames
.
szNo
<<
","
;
os
<<
filedNames
.
dFlow
<<
","
;
os
<<
filedNames
.
nFlowDirect
<<
","
;
os
<<
filedNames
.
dVelocity
<<
","
;
os
<<
filedNames
.
dHeadloss
<<
","
;
os
<<
filedNames
.
dUnitHeadloss
<<
","
;
os
<<
filedNames
.
dFromNodHeadloss
<<
","
;
os
<<
filedNames
.
dToNodHeadloss
<<
","
;
os
<<
filedNames
.
dLocalHeadloss
<<
","
;
os
<<
filedNames
.
dFrictionHeadloss
<<
","
;
os
<<
filedNames
.
szStatus
<<
","
;
os
<<
filedNames
.
dDate
<<
","
;
os
<<
filedNames
.
dInterval
<<
","
;
os
<<
filedNames
.
dQuality
<<
","
;
os
<<
filedNames
.
dModifyTime
;
os
<<
") VALUES"
;
std
::
string
preSql
=
os
.
str
();
os
.
clear
();
os
.
str
(
""
);
// 2, 参数值
for
(
auto
iter
=
lineItems
.
begin
();
iter
!=
lineItems
.
end
();
iter
++
)
{
LinkResultItem
item
=
iter
->
second
;
os
<<
"('"
<<
item
.
szNo
<<
"'"
<<
","
;
os
<<
item
.
dFlow
<<
","
;
os
<<
item
.
nFlowDirect
<<
","
;
os
<<
item
.
dVelocity
<<
","
;
os
<<
item
.
dHeadloss
<<
","
;
os
<<
item
.
dUnitHeadloss
<<
","
;
os
<<
item
.
dFromNodHeadloss
<<
","
;
os
<<
item
.
dToNodHeadloss
<<
","
;
os
<<
item
.
dLocalHeadloss
<<
","
;
os
<<
item
.
dFrictionHeadloss
<<
","
;
os
<<
"'"
<<
TransUTFCoding
(
item
.
szStatus
)
<<
"'"
<<
","
;
os
<<
"'"
<<
CurrentDate
<<
"',"
;
os
<<
item
.
dInterval
<<
","
;
os
<<
item
.
dQuality
<<
","
;
os
<<
"'"
<<
CurrentTime
<<
"'"
;
auto
subIte
=
iter
;
++
subIte
;
if
(
subIte
==
lineItems
.
end
())
os
<<
")"
;
else
os
<<
"),"
;
}
std
::
string
utf8Sql
=
TransUTFCoding
(
preSql
);
std
::
string
sql
=
utf8Sql
+
os
.
str
();
os
.
clear
();
os
.
str
(
""
);
if
(
!
execSql
(
sql
))
return
false
;
return
true
;
}
bool
CivDbConnection
::
updateNodeByInterval
(
StrQuote
currDate
,
StrQuote
interval
)
{
if
(
!
isValid
())
return
false
;
std
::
stringstream
os
;
NodeFieldName
filedNames
;
os
<<
"UPDATE "
<<
TransUTFCoding
(
PIPENODE
)
<<
" AS tb1 set ("
<<
TransUTFCoding
(
"总水头"
)
<<
","
<<
TransUTFCoding
(
"压力"
)
<<
","
<<
TransUTFCoding
(
"实际需水量"
)
<<
","
<<
TransUTFCoding
(
"水质"
)
<<
")=( "
<<
"tb2."
<<
TransUTFCoding
(
filedNames
.
dHead
)
<<
","
<<
"tb2."
<<
TransUTFCoding
(
filedNames
.
dPressure
)
<<
","
<<
"tb2."
<<
TransUTFCoding
(
filedNames
.
dDemand
)
<<
","
<<
"tb2."
<<
TransUTFCoding
(
filedNames
.
dQuality
)
<<
")"
<<
" from "
<<
TransUTFCoding
(
NODERESULTTABLE
)
<<
" AS tb2 where tb1."
<<
TransUTFCoding
(
filedNames
.
Number
)
<<
"= tb2."
<<
TransUTFCoding
(
filedNames
.
Number
)
<<
" AND tb2."
<<
TransUTFCoding
(
filedNames
.
dDate
)
<<
"='"
<<
currDate
<<
"' AND tb2."
<<
TransUTFCoding
(
filedNames
.
dInterval
)
<<
"="
<<
interval
;
std
::
string
updateSql
=
os
.
str
();
std
::
cout
<<
updateSql
<<
std
::
endl
;
os
.
clear
();
os
.
str
(
""
);
if
(
!
execSql
(
updateSql
))
return
false
;
return
true
;
}
bool
CivDbConnection
::
updateLinkByInterval
(
StrQuote
currDate
,
StrQuote
interval
)
{
if
(
!
isValid
())
return
false
;
std
::
stringstream
os
;
LinkFiledName
filedNames
;
os
<<
"UPDATE "
<<
TransUTFCoding
(
PIPELINE
)
<<
" AS tb1 set ("
<<
TransUTFCoding
(
"流量"
)
<<
","
<<
TransUTFCoding
(
"流速"
)
<<
","
<<
TransUTFCoding
(
"单位水头损"
)
<<
","
<<
TransUTFCoding
(
"水头总损失"
)
<<
","
<<
TransUTFCoding
(
"摩擦水头损"
)
<<
","
<<
TransUTFCoding
(
"上点水头"
)
<<
","
<<
TransUTFCoding
(
"本点水头"
)
<<
","
<<
TransUTFCoding
(
"水质"
)
<<
","
<<
TransUTFCoding
(
"局部水头损"
)
<<
")=( "
<<
"tb2."
<<
TransUTFCoding
(
filedNames
.
dFlow
)
<<
","
<<
"tb2."
<<
TransUTFCoding
(
filedNames
.
dVelocity
)
<<
","
<<
"tb2."
<<
TransUTFCoding
(
filedNames
.
dUnitHeadloss
)
<<
","
<<
"tb2."
<<
TransUTFCoding
(
filedNames
.
dHeadloss
)
<<
","
<<
"tb2."
<<
TransUTFCoding
(
filedNames
.
dFrictionHeadloss
)
<<
","
<<
"tb2."
<<
TransUTFCoding
(
filedNames
.
dFromNodHeadloss
)
<<
","
<<
"tb2."
<<
TransUTFCoding
(
filedNames
.
dToNodHeadloss
)
<<
","
<<
"tb2."
<<
TransUTFCoding
(
filedNames
.
dQuality
)
<<
","
<<
"tb2."
<<
TransUTFCoding
(
filedNames
.
dLocalHeadloss
)
<<
")"
<<
" from "
<<
TransUTFCoding
(
PIPERESULTTABLE
)
<<
" AS tb2 where tb1."
<<
TransUTFCoding
(
filedNames
.
szNo
)
<<
"= tb2."
<<
TransUTFCoding
(
filedNames
.
szNo
)
<<
" AND tb2."
<<
TransUTFCoding
(
filedNames
.
dDate
)
<<
"='"
<<
currDate
<<
"' AND tb2."
<<
TransUTFCoding
(
filedNames
.
dInterval
)
<<
"="
<<
interval
;
std
::
string
updateSql
=
os
.
str
();
os
.
clear
();
os
.
str
(
""
);
if
(
!
execSql
(
updateSql
))
return
false
;
return
true
;
}
Componets
CivDbConnection
::
getComponets
(
StrQuote
tableName
)
{
if
(
!
isValid
())
return
Nodes
();
std
::
string
utf8Name
=
TransUTFCoding
(
tableName
);
std
::
string
sql
=
"select * from public.
\"
"
+
utf8Name
+
"
\"
"
;
if
(
!
execSql
(
sql
))
{
return
Nodes
();
}
Componets
nodes
;
// 取数据到容器中
getData
(
nodes
);
return
nodes
;
}
Componets
CivDbConnection
::
getComponetsByWhere
(
StrQuote
tableName
,
StrQuote
where
)
{
if
(
!
isValid
())
return
Componets
();
std
::
string
utf8Name
=
TransUTFCoding
(
tableName
);
std
::
string
utf8Where
=
TransUTFCoding
(
where
);
char
sql
[
128
]
=
"select * from public."
;
strcat_s
(
sql
,
utf8Name
.
c_str
());
strcat_s
(
sql
,
utf8Where
.
c_str
());
if
(
!
execSql
(
sql
))
{
return
Componets
();
}
Componets
comps
;
// 取数据到容器中
getData
(
comps
);
return
comps
;
}
void
CivDbConnection
::
getData
(
Componets
&
comp
)
{
if
(
mResult
==
NULL
)
return
;
int
rows
=
PQntuples
(
mResult
);
int
columns
=
PQnfields
(
mResult
);
for
(
int
i
=
0
;
i
<
rows
;
i
++
)
{
Componet
node
;
for
(
int
j
=
0
;
j
<
columns
;
j
++
)
{
char
*
item
=
PQgetvalue
(
mResult
,
i
,
j
);
char
*
fieldName
=
PQfname
(
mResult
,
j
);
// 获取列表字段名
std
::
string
itemStr
=
UTFTransCoding
(
item
);
std
::
string
fieldStr
=
UTFTransCoding
(
fieldName
);
node
.
insert
(
std
::
pair
<
std
::
string
,
std
::
string
>
(
fieldStr
,
itemStr
));
}
comp
.
push_back
(
node
);
}
PQclear
(
mResult
);
}
Componets
CivDbConnection
::
getNodeByCode
(
StrQuote
table
,
StrQuote
code
)
{
if
(
!
isValid
())
return
Nodes
();
char
sql
[
256
]
=
"select * from public.
\"
"
;
strcat_s
(
sql
,
TransUTFCoding
(
table
).
c_str
());
strcat_s
(
sql
,
"
\"
"
);
strcat_s
(
sql
,
" where code = '"
);
strcat_s
(
sql
,
code
.
c_str
());
strcat_s
(
sql
,
"'"
);
if
(
!
execSql
(
sql
))
{
return
Nodes
();
}
Componets
componets
;
getData
(
componets
);
return
componets
;
}
Componets
CivDbConnection
::
getLineByCode
(
StrQuote
table
,
StrQuote
code
)
{
if
(
!
isValid
())
return
Nodes
();
char
sql
[
256
]
=
"select * from public.
\"
"
;
strcat_s
(
sql
,
TransUTFCoding
(
table
).
c_str
());
strcat_s
(
sql
,
"
\"
"
);
strcat_s
(
sql
,
" where from_code = '"
);
strcat_s
(
sql
,
code
.
c_str
());
strcat_s
(
sql
,
"' or to_code= '"
);
strcat_s
(
sql
,
code
.
c_str
());
strcat_s
(
sql
,
"'"
);
if
(
!
execSql
(
sql
))
{
return
Nodes
();
}
Componets
componets
;
getData
(
componets
);
return
componets
;
}
Componets
CivDbConnection
::
getLikelyPipes
(
StrQuote
tableName
)
{
if
(
!
isValid
())
return
Componets
();
// 查询点数据
char
sql
[
256
]
=
"select * from public.
\"
"
;
strcat_s
(
sql
,
TransUTFCoding
(
tableName
).
c_str
());
strcat_s
(
sql
,
"
\"
"
);
if
(
!
execSql
(
sql
))
{
return
Componets
();
}
Componets
nodes
;
getData
(
nodes
);
// 查询线表
if
(
nodes
.
size
()
<=
0
)
return
Componets
();
// 查询:连接节点也有可能连接水源,或者水库
std
::
vector
<
Str
>
tables
;
tables
.
push_back
(
PIPENODE
);
tables
.
push_back
(
RESIVOIR
);
tables
.
push_back
(
TANK
);
// 阀门类型映射
std
::
map
<
Str
,
Str
>
mValvesMap
;
mValvesMap
.
insert
(
std
::
pair
<
Str
,
Str
>
(
PRV_TYPE
,
"PRV"
));
mValvesMap
.
insert
(
std
::
pair
<
Str
,
Str
>
(
PSV_TYPE
,
"PSV"
));
mValvesMap
.
insert
(
std
::
pair
<
Str
,
Str
>
(
PBV_TYPE
,
"PBV"
));
mValvesMap
.
insert
(
std
::
pair
<
Str
,
Str
>
(
FCV_TYPE
,
"FCV"
));
mValvesMap
.
insert
(
std
::
pair
<
Str
,
Str
>
(
TCV_TYPE
,
"TCV"
));
mValvesMap
.
insert
(
std
::
pair
<
Str
,
Str
>
(
GPV_TYPE
,
"PRV"
));
std
::
vector
<
Str
>
mVavesTables
;
mVavesTables
.
push_back
(
PRV_TYPE
);
mVavesTables
.
push_back
(
PSV_TYPE
);
mVavesTables
.
push_back
(
PBV_TYPE
);
mVavesTables
.
push_back
(
FCV_TYPE
);
mVavesTables
.
push_back
(
TCV_TYPE
);
mVavesTables
.
push_back
(
GPV_TYPE
);
// 不同阀门对应的特殊参数
std
::
map
<
Str
,
Str
>
mParameterMap
;
mParameterMap
.
insert
(
std
::
pair
<
Str
,
Str
>
(
PRV_TYPE
,
"恒定压力值"
));
mParameterMap
.
insert
(
std
::
pair
<
Str
,
Str
>
(
PSV_TYPE
,
"恒定压力值"
));
mParameterMap
.
insert
(
std
::
pair
<
Str
,
Str
>
(
PBV_TYPE
,
"恒定压力值"
));
mParameterMap
.
insert
(
std
::
pair
<
Str
,
Str
>
(
FCV_TYPE
,
"流量设置"
));
mParameterMap
.
insert
(
std
::
pair
<
Str
,
Str
>
(
TCV_TYPE
,
"流量设置"
));
mParameterMap
.
insert
(
std
::
pair
<
Str
,
Str
>
(
GPV_TYPE
,
"水头损失曲"
));
// 根据点数据查询起点和终点,管径
size_t
total
=
nodes
.
size
();
for
(
int
i
=
0
;
i
<
total
;
i
++
)
{
Componet
componet
=
nodes
[
i
];
Str
bendianhao
=
componet
.
find
(
"本点号"
)
->
second
;
if
(
bendianhao
.
empty
()
)
{
Str
ID
=
componet
.
find
(
"id"
)
->
second
;
Str
type
=
mValvesMap
.
find
(
tableName
)
->
second
;
Str
newbendian
=
type
+
ID
;
nodes
[
i
][
"编号"
]
=
newbendian
;
}
else
{
nodes
[
i
][
"编号"
]
=
bendianhao
;
}
Str
code
=
componet
.
find
(
"code"
)
->
second
;
// 跟点
Componets
lines
=
getLineByCode
(
PIPELINE
,
code
);
size_t
lTotal
=
lines
.
size
();
if
(
lTotal
==
2
)
{
Componet
lin
=
lines
[
0
];
nodes
[
i
][
"上点号"
]
=
lin
.
find
(
"本点号"
)
->
second
;
nodes
[
i
][
"本点号"
]
=
lin
.
find
(
"上点号"
)
->
second
;
Str
diameter
=
lin
.
find
(
"管径"
)
->
second
;
nodes
[
i
][
"管径"
]
=
diameter
;
Str
number
=
lin
.
find
(
"id"
)
->
second
;
addFilter
(
PIPELINE
,
number
);
// 阀门类型设置特殊字段
std
::
vector
<
Str
>::
iterator
iter
=
std
::
find
(
mVavesTables
.
begin
(),
mVavesTables
.
end
(),
tableName
);
if
(
iter
!=
mVavesTables
.
end
())
{
nodes
[
i
][
"类型"
]
=
mValvesMap
.
find
(
tableName
)
->
second
;
Str
fieldType
=
mParameterMap
.
find
(
tableName
)
->
second
;
nodes
[
i
][
"参数设置"
]
=
componet
.
find
(
fieldType
)
->
second
;
}
}
}
return
nodes
;
}
void
CivDbConnection
::
addFilter
(
Str
type
,
Str
number
)
{
mFilter
[
type
].
insert
(
number
);
}
FiledFilter
CivDbConnection
::
getFilter
()
const
{
return
mFilter
;
}
bool
CivDbConnection
::
createTable
(
CivTableTemp
&
temp
)
{
if
(
&
temp
==
NULL
)
return
false
;
Str
sql
=
temp
.
createSql
();
Str
finalSql
=
TransUTFCoding
(
sql
);
return
execSql
(
finalSql
);
}
bool
CivDbConnection
::
execSql
(
std
::
string
sql
)
{
if
(
sql
.
empty
())
return
false
;
mResult
=
PQexec
(
mConn
,
sql
.
c_str
());
char
*
error
=
PQresultErrorMessage
(
mResult
);
std
::
string
errorStr
=
error
;
if
(
!
errorStr
.
empty
())
{
mLastError
=
error
;
CivSysLog
::
getInstance
()
->
error
(
mLastError
,
"CivDbConnection"
,
__FUNCTION__
);
PQclear
(
mResult
);
return
false
;
}
return
true
;
}
void
CivDbConnection
::
clearResult
()
{
PQclear
(
mResult
);
}
\ No newline at end of file
pandaDbManager/CivDbConnection.h
deleted
100644 → 0
View file @
bb7193b7
#pragma once
#include "CivTypes.h"
#include <vector>
#include <set>
#include <libpq-fe.h>
#include "CivTableTemp.h"
#include "CivSysLog.h"
#define DLLEXPORT __declspec(dllexport)
class
CivDbConnection
;
/**
数据库连接类,获取数据,写入数据接口
*/
class
DLLEXPORT
CivDbConnection
{
public
:
CivDbConnection
(
char
*
uri
);
~
CivDbConnection
();
/**
*@brief 获取管网的所有表
*@netName: 管网名
*/
Tables
getTables
(
StrQuote
netName
,
StrQuote
schema
=
"public"
);
/**
*@brief 获取管网组件数据:管线,节点,水源等(必须组件)
*@tableName: 组件表
*/
Componets
getComponets
(
StrQuote
tableName
);
Componets
getComponetsByWhere
(
StrQuote
tableName
,
StrQuote
where
);
/**
*@brief 水泵,阀门 (节点转换为管线)
*@tableName: 组件表
*/
Componets
getLikelyPipes
(
StrQuote
tableName
);
bool
tableExist
(
StrQuote
tableName
);
/**
*@brief 创建表格
*@tableName: 表名
*@schema:
*@tableType:表类型,点结果,线结果
*/
bool
createTable
(
CivTableTemp
&
temp
);
bool
deleteByDate
(
StrQuote
table
,
StrQuote
filedName
,
StrQuote
fieldValue
);
bool
updateNodeByInterval
(
StrQuote
currDate
,
StrQuote
interval
);
bool
updateLinkByInterval
(
StrQuote
currDate
,
StrQuote
interval
);
/**
*@brief 刷新模拟的水质字段值
*@quality: 水质
*@currDate: 模拟的日期
*@StrQuote: 模拟的次数
*/
bool
updateNodeQuality
(
const
NodeResultItems
&
nodeItems
);
bool
updatePipeQuality
(
const
LinkResultItems
&
lineItems
);
/**
*@brief 更新点表数据
*@nodeItems:需要更新的值
*/
bool
updateNode
(
const
NodeResultItems
&
nodeItems
);
/**
*@brief 更新线表的数据
*@lineItems: 线数据
*/
bool
updateLink
(
const
LinkResultItems
&
lineItems
);
bool
open
();
void
close
();
void
addFilter
(
Str
type
,
Str
number
);
FiledFilter
getFilter
()
const
;
private
:
bool
isValid
()
const
;
/**
*@brief 查询与点连接的线
*@table: 线表
*@code:
*/
Componets
getLineByCode
(
StrQuote
table
,
StrQuote
code
);
Componets
getNodeByCode
(
StrQuote
table
,
StrQuote
code
);
/**
*@brief 执行sql语句
*@sql: 需要执行的sql语句
*/
bool
execSql
(
std
::
string
sql
);
void
clearResult
();
/**
*@brief 从查询集取出数据
*@result: 查询结果集
*@comp: 数据容器
*/
void
getData
(
Componets
&
comp
);
private
:
PGconn
*
mConn
;
PGresult
*
mResult
;
bool
mIsOpen
=
false
;
char
*
mUri
;
char
*
mLastError
;
FiledFilter
mFilter
;
// 表名:对应的编号
};
\ No newline at end of file
pandaDbManager/CivDbUtils.cpp
0 → 100644
View file @
7e05214c
#include "CivDbUtils.h"
CivDbUtils
::
CivDbUtils
()
{
}
\ No newline at end of file
pandaDbManager/CivDbUtils.h
0 → 100644
View file @
7e05214c
#pragma once
class
CivDbUtils
{
public
:
CivDbUtils
();
private
:
};
pandaDbManager/CivMaintainModel.cpp
0 → 100644
View file @
7e05214c
#include "CivMaintainModel.h"
CivMaintainModel
::
CivMaintainModel
()
{
}
void
CivMaintainModel
::
maintain
()
{
}
void
CivMaintainModel
::
addNecessaryTable
(
const
std
::
string
&
table
)
{
}
bool
CivMaintainModel
::
checkTable
(
const
std
::
string
&
table
)
{
return
true
;
}
bool
CivMaintainModel
::
checkTableFiled
(
const
std
::
string
&
talbe
,
const
std
::
string
&
filed
,
const
std
::
string
&
filedType
)
{
return
true
;
}
void
CivMaintainModel
::
addTableFiled
(
const
std
::
string
&
table
,
const
std
::
string
&
filed
,
const
std
::
string
&
filedType
)
{
}
void
CivMaintainModel
::
deleteTableFiled
(
const
std
::
string
&
table
,
const
std
::
string
&
filed
)
{
}
\ No newline at end of file
pandaDbManager/CivMaintainModel.h
0 → 100644
View file @
7e05214c
#pragma once
#include "CivDbConn.h"
#include <vector>
/**
维护水力模型必要的表
*/
class
DBEXPORT
CivMaintainModel
{
public
:
CivMaintainModel
();
/**
*@brief 维护模型必要的表
*/
void
maintain
();
/**
*@brief 添加模型所必须的表
*@param table 表名
*/
void
addNecessaryTable
(
const
std
::
string
&
table
);
private
:
/**
*@brief 检查表是否存在
*/
bool
checkTable
(
const
std
::
string
&
table
);
/**
*@brief 检查表字段
*@param table 表名
*@param filed 表字段
*@param filedType 表字段类型
*/
bool
checkTableFiled
(
const
std
::
string
&
table
,
const
std
::
string
&
filed
,
const
std
::
string
&
filedType
);
/**
*@brief 添加表字段
*@param table 表名
*@param filed 表字段
*@param filedType 表字段类型
*/
void
addTableFiled
(
const
std
::
string
&
table
,
const
std
::
string
&
filed
,
const
std
::
string
&
filedType
);
/**
*@brief 删除表字段
*@param table 表名
*@param filed 表字段
*/
void
deleteTableFiled
(
const
std
::
string
&
table
,
const
std
::
string
&
filed
);
private
:
std
::
vector
<
std
::
string
>
mNecessTables
;
};
pandaDbManager/CivTableTemp.cpp
View file @
7e05214c
...
@@ -10,9 +10,13 @@ CivTableTemp::CivTableTemp()
...
@@ -10,9 +10,13 @@ CivTableTemp::CivTableTemp()
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_VARCHAR64
,
"varchar(64)"
));
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_VARCHAR64
,
"varchar(64)"
));
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_VARCHAR128
,
"varchar(128)"
));
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_VARCHAR128
,
"varchar(128)"
));
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_VARCHAR256
,
"varchar(256)"
));
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_VARCHAR256
,
"varchar(256)"
));
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_BOOLEAN
,
"boolean"
));
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_CHARACTER_VARYING
,
"character varying"
));
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_DATETIME
,
"timestamp"
));
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_DATETIME
,
"timestamp"
));
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_JSON
,
"json"
));
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_JSON
,
"json"
));
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_DATE
,
"date"
));
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_DATE
,
"date"
));
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_GEOM_POINT
,
"geometry(Point,4326)"
));
mFieldTyepMap
.
insert
(
std
::
pair
<
FieldType
,
std
::
string
>
(
CivTableTemp
::
FILED_GEOM_LINE
,
"geometry(MultiLineString,4326)"
));
}
}
CivTableTemp
::~
CivTableTemp
()
CivTableTemp
::~
CivTableTemp
()
...
@@ -340,3 +344,184 @@ CivCurveTableTemp::CivCurveTableTemp() :CivTableTemp()
...
@@ -340,3 +344,184 @@ CivCurveTableTemp::CivCurveTableTemp() :CivTableTemp()
addProperty
(
fileds
.
CurveType
,
CivTableTemp
::
FILED_INTEGER
);
addProperty
(
fileds
.
CurveType
,
CivTableTemp
::
FILED_INTEGER
);
addProperty
(
fileds
.
CurveData
,
CivTableTemp
::
FILED_VARCHAR256
);
addProperty
(
fileds
.
CurveData
,
CivTableTemp
::
FILED_VARCHAR256
);
}
}
/**
方案点表
*/
CivProjNodeTableTemp
::
CivProjNodeTableTemp
()
:
CivTableTemp
()
{
setName
(
PROJNODETABLE
);
TableField
fileds
;
addProperty
(
fileds
.
ProjCode
,
CivTableTemp
::
FILED_VARCHAR64
);
addProperty
(
fileds
.
ProjType
,
CivTableTemp
::
FILED_INT
);
addProperty
(
fileds
.
ProjGeom
,
CivTableTemp
::
FILED_GEOM_POINT
);
addProperty
(
fileds
.
ProjSn
,
CivTableTemp
::
FILED_VARCHAR64
);
addProperty
(
fileds
.
ProjXcoord
,
CivTableTemp
::
FILED_DOUBLE
);
addProperty
(
fileds
.
ProjYcoord
,
CivTableTemp
::
FILED_DOUBLE
);
addProperty
(
fileds
.
ProjDesc
,
CivTableTemp
::
FILED_CHARACTER_VARYING
);
addProperty
(
fileds
.
ProjLabel
,
CivTableTemp
::
FILED_VARCHAR64
);
addProperty
(
fileds
.
ProElev
,
CivTableTemp
::
FILED_DOUBLE
);
addProperty
(
fileds
.
ProjBaseDemand
,
CivTableTemp
::
FILED_DOUBLE
);
addProperty
(
fileds
.
ProjPattern
,
CivTableTemp
::
FILED_VARCHAR64
);
addProperty
(
fileds
.
ProjDemandType
,
CivTableTemp
::
FILED_VARCHAR64
);
addProperty
(
fileds
.
ProjDiffuserCoeff
,
CivTableTemp
::
FILED_DOUBLE
);
addProperty
(
fileds
.
ProjInitQuality
,
CivTableTemp
::
FILED_DOUBLE
);
addProperty
(
fileds
.
ProjSourceQuality
,
CivTableTemp
::
FILED_DOUBLE
);
addProperty
(
fileds
.
ProjDmaID
,
CivTableTemp
::
FILED_VARCHAR64
);
addProperty
(
fileds
.
ProjDemand
,
CivTableTemp
::
FILED_DOUBLE
);
addProperty
(
fileds
.
ProjConsumption
,
CivTableTemp
::
FILED_DOUBLE
);
addProperty
(
fileds
.
ProjLackWater
,
CivTableTemp
::
FILED_DOUBLE
);
addProperty
(
fileds
.
ProjLackWaterPer
,
CivTableTemp
::
FILED_DOUBLE
);
addProperty
(
fileds
.
ProjTotalWater
,
CivTableTemp
::
FILED_DOUBLE
);
addProperty
(
fileds
.
ProjTotalHead
,
CivTableTemp
::
FILED_DOUBLE
);
addProperty
(
fileds
.
ProjPressure
,
CivTableTemp
::
FILED_DOUBLE
);
addProperty
(
fileds
.
ProjQuality
,
CivTableTemp
::
FILED_DOUBLE
);
}
/**
方案线表
*/
CivProjPipeTableTemp
::
CivProjPipeTableTemp
()
:
CivTableTemp
()
{
setName
(
PROJPIPETABLE
);
TableField
fileds
;
addProperty
(
fileds
.
ProjCode
,
CivTableTemp
::
FILED_VARCHAR64
);
// "方案名";
addProperty
(
fileds
.
ProjType
,
CivTableTemp
::
FILED_BOOLEAN
);
// "修改类型";
addProperty
(
fileds
.
ProjGeom
,
CivTableTemp
::
FILED_GEOM_LINE
);
// "Geom";
addProperty
(
fileds
.
ProjSn
,
CivTableTemp
::
FILED_VARCHAR64
);
// "编号";
addProperty
(
fileds
.
ProjStartID
,
CivTableTemp
::
FILED_VARCHAR64
);
// "起始节点";
addProperty
(
fileds
.
ProjEndID
,
CivTableTemp
::
FILED_VARCHAR64
);
// "终止节点";
addProperty
(
fileds
.
ProjDesc
,
CivTableTemp
::
FILED_CHARACTER_VARYING
);
// "描述";
addProperty
(
fileds
.
ProjLabel
,
CivTableTemp
::
FILED_VARCHAR64
);
// "标签";
addProperty
(
fileds
.
ProjLength
,
CivTableTemp
::
FILED_DOUBLE
);
// "管长";
addProperty
(
fileds
.
ProjDiameter
,
CivTableTemp
::
FILED_DOUBLE
);
// "管径";
addProperty
(
fileds
.
ProjMaterial
,
CivTableTemp
::
FILED_VARCHAR64
);
// "管材";
addProperty
(
fileds
.
ProjFractionCoeff
,
CivTableTemp
::
FILED_DOUBLE
);
// "摩阻系数";
addProperty
(
fileds
.
ProjLoclLossCoeff
,
CivTableTemp
::
FILED_DOUBLE
);
// "局损系数";
addProperty
(
fileds
.
ProjInitStatus
,
CivTableTemp
::
FILED_VARCHAR64
);
// "初始状态";
addProperty
(
fileds
.
ProjMainstreamCoeff
,
CivTableTemp
::
FILED_DOUBLE
);
// "主流系数";
addProperty
(
fileds
.
ProjWallCoeff
,
CivTableTemp
::
FILED_DOUBLE
);
// "管壁系数";
addProperty
(
fileds
.
ProjLeakageCoeff1
,
CivTableTemp
::
FILED_DOUBLE
);
// "漏水系数1";
addProperty
(
fileds
.
ProLeakageCoeff2
,
CivTableTemp
::
FILED_DOUBLE
);
// "漏水系数2";
addProperty
(
fileds
.
ProjDmaID
,
CivTableTemp
::
FILED_VARCHAR64
);
// "DMAID";
addProperty
(
fileds
.
ProjFlow
,
CivTableTemp
::
FILED_DOUBLE
);
// "流量";
addProperty
(
fileds
.
ProjVelocity
,
CivTableTemp
::
FILED_DOUBLE
);
// "流速";
addProperty
(
fileds
.
ProjUnitLoss
,
CivTableTemp
::
FILED_DOUBLE
);
// "单位水损";
addProperty
(
fileds
.
ProjStatus
,
CivTableTemp
::
FILED_DOUBLE
);
// "状态";
addProperty
(
fileds
.
ProjQuality
,
CivTableTemp
::
FILED_DOUBLE
);
// "水质";
addProperty
(
fileds
.
ProjWaterLeakage
,
CivTableTemp
::
FILED_DOUBLE
);
// "漏水量";
}
/**
方案表
*/
CivProjTableTemp
::
CivProjTableTemp
()
:
CivTableTemp
()
{
setName
(
PROJTABLE
);
TableField
fileds
;
addProperty
(
fileds
.
ProjName
,
CivTableTemp
::
FILED_VARCHAR64
);
// "方案名";
addProperty
(
fileds
.
ProjCode
,
CivTableTemp
::
FILED_VARCHAR64
);
// "方案编号";
addProperty
(
fileds
.
ProjType
,
CivTableTemp
::
FILED_VARCHAR64
);
// "方案类型";
addProperty
(
fileds
.
ProjCreator
,
CivTableTemp
::
FILED_VARCHAR64
);
// "创建人";
addProperty
(
fileds
.
ProjAddTime
,
CivTableTemp
::
FILED_DATETIME
);
// "创建时间";
addProperty
(
fileds
.
ProjUpdateTime
,
CivTableTemp
::
FILED_DATETIME
);
// "更新时间";
addProperty
(
fileds
.
ProjTime
,
CivTableTemp
::
FILED_DATETIME
);
// "方案时间";
addProperty
(
fileds
.
ProjScore
,
CivTableTemp
::
FILED_VARCHAR64
);
// "评分";
addProperty
(
fileds
.
ProDescribe
,
CivTableTemp
::
FILED_VARCHAR64
);
// "评价";
addProperty
(
fileds
.
ProjEvaluate
,
CivTableTemp
::
FILED_VARCHAR64
);
// "评估";
addProperty
(
fileds
.
ProjDemand
,
CivTableTemp
::
FILED_DOUBLE
);
// "水量调整";
addProperty
(
fileds
.
ProjWorkCode
,
CivTableTemp
::
FILED_VARCHAR64
);
// "作业编号";
addProperty
(
fileds
.
ProjDetection
,
CivTableTemp
::
FILED_VARCHAR64
);
// "关注检测点";
}
/**
压力监测表
*/
CivMonitorPressureTableTemp
::
CivMonitorPressureTableTemp
()
:
CivTableTemp
()
{
setName
(
PRESSURETABLE
);
TableField
fileds
;
addProperty
(
fileds
.
MonitorScard
,
CivTableTemp
::
FILED_VARCHAR64
);
// "SCADAID";
addProperty
(
fileds
.
MonitorXCoord
,
CivTableTemp
::
FILED_DOUBLE
);
// "横坐标";
addProperty
(
fileds
.
MonitorYCoord
,
CivTableTemp
::
FILED_DOUBLE
);
// "纵坐标 ";
addProperty
(
fileds
.
MonitorDesc
,
CivTableTemp
::
FILED_CHARACTER_VARYING
);
// "描述";
addProperty
(
fileds
.
MonitorLabel
,
CivTableTemp
::
FILED_VARCHAR64
);
// "标签";
addProperty
(
fileds
.
MonitorNode
,
CivTableTemp
::
FILED_VARCHAR64
);
// "节点ID ";
addProperty
(
fileds
.
MonitorMonitor
,
CivTableTemp
::
FILED_DOUBLE
);
// "检测值 ";
addProperty
(
fileds
.
MonitorCalc
,
CivTableTemp
::
FILED_DOUBLE
);
// "计算值 ";
addProperty
(
fileds
.
MonitorError
,
CivTableTemp
::
FILED_DOUBLE
);
// "误差";
addProperty
(
fileds
.
MonitorMonitorAverage
,
CivTableTemp
::
FILED_DOUBLE
);
// "检测平均值";
addProperty
(
fileds
.
MonitorCalcAverage
,
CivTableTemp
::
FILED_DOUBLE
);
// "计算平均值";
addProperty
(
fileds
.
MonitorErrorAverage
,
CivTableTemp
::
FILED_DOUBLE
);
// "平均误差 ";
addProperty
(
fileds
.
MonitorAbsErrirAverage
,
CivTableTemp
::
FILED_DOUBLE
);
// "平均绝对误差";
addProperty
(
fileds
.
MonitorSquareError
,
CivTableTemp
::
FILED_DOUBLE
);
// "均方根误差";
addProperty
(
fileds
.
MonitorErrorFlu
,
CivTableTemp
::
FILED_DOUBLE
);
// "误差波动";
addProperty
(
fileds
.
MonitorNashCoeff
,
CivTableTemp
::
FILED_DOUBLE
);
// "纳什系数";
addProperty
(
fileds
.
MonitorScore
,
CivTableTemp
::
FILED_DOUBLE
);
// "分数";
addProperty
(
fileds
.
MonitorReliability
,
CivTableTemp
::
FILED_VARCHAR64
);
// "可靠度";
}
/*
流量监测表
*/
CivMonitorFlowTableTemp
::
CivMonitorFlowTableTemp
()
:
CivTableTemp
()
{
setName
(
FLOWTABLE
);
TableField
fileds
;
addProperty
(
fileds
.
MonitorScard
,
CivTableTemp
::
FILED_VARCHAR64
);
// "SCADAID";
addProperty
(
fileds
.
MonitorXCoord
,
CivTableTemp
::
FILED_DOUBLE
);
// "横坐标";
addProperty
(
fileds
.
MonitorYCoord
,
CivTableTemp
::
FILED_DOUBLE
);
// "纵坐标 ";
addProperty
(
fileds
.
MonitorDesc
,
CivTableTemp
::
FILED_VARCHAR64
);
// "描述";
addProperty
(
fileds
.
MonitorLabel
,
CivTableTemp
::
FILED_VARCHAR64
);
// "标签";
addProperty
(
fileds
.
MonitorPipe
,
CivTableTemp
::
FILED_VARCHAR64
);
// "节点ID";
addProperty
(
fileds
.
MonitorMonitor
,
CivTableTemp
::
FILED_DOUBLE
);
// "检测值 ";
addProperty
(
fileds
.
MonitorCalc
,
CivTableTemp
::
FILED_DOUBLE
);
// "计算值 ";
addProperty
(
fileds
.
MonitorError
,
CivTableTemp
::
FILED_DOUBLE
);
// "误差";
addProperty
(
fileds
.
MonitorMonitorAverage
,
CivTableTemp
::
FILED_DOUBLE
);
// "检测平均值";
addProperty
(
fileds
.
MonitorCalcAverage
,
CivTableTemp
::
FILED_DOUBLE
);
// "计算平均值";
addProperty
(
fileds
.
MonitorErrorAverage
,
CivTableTemp
::
FILED_DOUBLE
);
// "平均误差 ";
addProperty
(
fileds
.
MonitorAbsErrirAverage
,
CivTableTemp
::
FILED_DOUBLE
);
// "平均绝对误差";
addProperty
(
fileds
.
MonitorSquareError
,
CivTableTemp
::
FILED_DOUBLE
);
// "均方根误差";
addProperty
(
fileds
.
MonitorErrorFlu
,
CivTableTemp
::
FILED_DOUBLE
);
// "误差波动";
addProperty
(
fileds
.
MonitorNashCoeff
,
CivTableTemp
::
FILED_DOUBLE
);
// "纳什系数";
addProperty
(
fileds
.
MonitorScore
,
CivTableTemp
::
FILED_DOUBLE
);
// "分数";
addProperty
(
fileds
.
MonitorReliability
,
CivTableTemp
::
FILED_VARCHAR64
);
// "可靠度";
}
/*
水质检测表
*/
CivMonitorQualityTableTemp
::
CivMonitorQualityTableTemp
()
:
CivTableTemp
()
{
setName
(
QUALITYTABLE
);
TableField
fileds
;
addProperty
(
fileds
.
MonitorScard
,
CivTableTemp
::
FILED_VARCHAR64
);
// "SCADAID";
addProperty
(
fileds
.
MonitorXCoord
,
CivTableTemp
::
FILED_DOUBLE
);
// "横坐标";
addProperty
(
fileds
.
MonitorYCoord
,
CivTableTemp
::
FILED_DOUBLE
);
// "纵坐标 ";
addProperty
(
fileds
.
MonitorDesc
,
CivTableTemp
::
FILED_CHARACTER_VARYING
);
// "描述";
addProperty
(
fileds
.
MonitorLabel
,
CivTableTemp
::
FILED_VARCHAR64
);
// "标签";
addProperty
(
fileds
.
MonitorNode
,
CivTableTemp
::
FILED_VARCHAR64
);
// "节点ID ";
addProperty
(
fileds
.
MonitorMonitor
,
CivTableTemp
::
FILED_DOUBLE
);
// "检测值 ";
addProperty
(
fileds
.
MonitorCalc
,
CivTableTemp
::
FILED_DOUBLE
);
// "计算值 ";
addProperty
(
fileds
.
MonitorError
,
CivTableTemp
::
FILED_DOUBLE
);
// "误差";
addProperty
(
fileds
.
MonitorMonitorAverage
,
CivTableTemp
::
FILED_DOUBLE
);
// "检测平均值";
addProperty
(
fileds
.
MonitorCalcAverage
,
CivTableTemp
::
FILED_DOUBLE
);
// "计算平均值";
addProperty
(
fileds
.
MonitorErrorAverage
,
CivTableTemp
::
FILED_DOUBLE
);
// "平均误差 ";
addProperty
(
fileds
.
MonitorAbsErrirAverage
,
CivTableTemp
::
FILED_DOUBLE
);
// "平均绝对误差";
addProperty
(
fileds
.
MonitorSquareError
,
CivTableTemp
::
FILED_DOUBLE
);
// "均方根误差";
addProperty
(
fileds
.
MonitorErrorFlu
,
CivTableTemp
::
FILED_DOUBLE
);
// "误差波动";
addProperty
(
fileds
.
MonitorNashCoeff
,
CivTableTemp
::
FILED_DOUBLE
);
// "纳什系数";
addProperty
(
fileds
.
MonitorScore
,
CivTableTemp
::
FILED_DOUBLE
);
// "分数";
addProperty
(
fileds
.
MonitorReliability
,
CivTableTemp
::
FILED_VARCHAR64
);
// "可靠度";
}
pandaDbManager/CivTableTemp.h
View file @
7e05214c
...
@@ -30,9 +30,13 @@ public:
...
@@ -30,9 +30,13 @@ public:
FILED_VARCHAR64
,
FILED_VARCHAR64
,
FILED_VARCHAR128
,
FILED_VARCHAR128
,
FILED_VARCHAR256
,
FILED_VARCHAR256
,
FILED_BOOLEAN
,
FILED_CHARACTER_VARYING
,
FILED_DATETIME
,
FILED_DATETIME
,
FILED_JSON
,
FILED_JSON
,
FILED_DATE
FILED_DATE
,
FILED_GEOM_POINT
,
FILED_GEOM_LINE
};
};
explicit
CivTableTemp
();
explicit
CivTableTemp
();
...
@@ -395,6 +399,202 @@ public:
...
@@ -395,6 +399,202 @@ public:
explicit
CivCurveTableTemp
();
explicit
CivCurveTableTemp
();
};
};
/**
方案点表
*/
class
CivProjNodeTableTemp
:
public
CivTableTemp
{
public
:
typedef
struct
TableField
{
Str
ProjCode
=
"方案编号"
;
Str
ProjType
=
"修改类型"
;
Str
ProjGeom
=
"geom"
;
Str
ProjSn
=
"本点号"
;
Str
ProjXcoord
=
"横坐标"
;
Str
ProjYcoord
=
"纵坐标 "
;
Str
ProjDesc
=
"描述"
;
Str
ProjLabel
=
"标签"
;
Str
ProElev
=
"高程"
;
Str
ProjBaseDemand
=
"基本需水量"
;
Str
ProjPattern
=
"需水量模式"
;
Str
ProjDemandType
=
"需水量类型"
;
Str
ProjDiffuserCoeff
=
"扩散器系数"
;
Str
ProjInitQuality
=
"初始水质 "
;
Str
ProjSourceQuality
=
"源头水质 "
;
Str
ProjDmaID
=
"DMAID"
;
Str
ProjDemand
=
"实际需水量"
;
Str
ProjConsumption
=
"用水量"
;
Str
ProjLackWater
=
"用水缺额"
;
Str
ProjLackWaterPer
=
"用水缺额(%)"
;
Str
ProjTotalWater
=
"总水量"
;
Str
ProjTotalHead
=
"总水头"
;
Str
ProjPressure
=
"压力"
;
Str
ProjQuality
=
"水质"
;
}
ProjNodeTable
;
explicit
CivProjNodeTableTemp
();
};
/**
方案线表
*/
class
CivProjPipeTableTemp
:
public
CivTableTemp
{
public
:
typedef
struct
TableField
{
Str
ProjCode
=
"方案名"
;
Str
ProjType
=
"修改类型"
;
Str
ProjGeom
=
"Geom"
;
Str
ProjSn
=
"编号"
;
Str
ProjStartID
=
"起始节点"
;
Str
ProjEndID
=
"终止节点"
;
Str
ProjDesc
=
"描述"
;
Str
ProjLabel
=
"标签"
;
Str
ProjLength
=
"管长"
;
Str
ProjDiameter
=
"管径"
;
Str
ProjMaterial
=
"管材"
;
Str
ProjFractionCoeff
=
"摩阻系数"
;
Str
ProjLoclLossCoeff
=
"局损系数"
;
Str
ProjInitStatus
=
"初始状态"
;
Str
ProjMainstreamCoeff
=
"主流系数"
;
Str
ProjWallCoeff
=
"管壁系数"
;
Str
ProjLeakageCoeff1
=
"漏水系数1"
;
Str
ProLeakageCoeff2
=
"漏水系数2"
;
Str
ProjDmaID
=
"DMAID"
;
Str
ProjFlow
=
"流量"
;
Str
ProjVelocity
=
"流速"
;
Str
ProjUnitLoss
=
"单位水损"
;
Str
ProjStatus
=
"状态"
;
Str
ProjQuality
=
"水质"
;
Str
ProjWaterLeakage
=
"漏水量"
;
}
ProjPipeTable
;
explicit
CivProjPipeTableTemp
();
};
/**
方案表
*/
class
CivProjTableTemp
:
public
CivTableTemp
{
public
:
typedef
struct
TableField
{
Str
ProjName
=
"方案名"
;
Str
ProjCode
=
"方案编号"
;
Str
ProjType
=
"方案类型"
;
Str
ProjCreator
=
"创建人"
;
Str
ProjAddTime
=
"创建时间"
;
Str
ProjUpdateTime
=
"更新时间"
;
Str
ProjTime
=
"方案时间"
;
Str
ProjScore
=
"评分"
;
Str
ProDescribe
=
"评价"
;
Str
ProjEvaluate
=
"评估"
;
Str
ProjDemand
=
"水量调整"
;
Str
ProjWorkCode
=
"作业编号"
;
Str
ProjDetection
=
"关注检测点"
;
}
ProjTable
;
explicit
CivProjTableTemp
();
};
/**
检测压力表
*/
class
CivMonitorPressureTableTemp
:
public
CivTableTemp
{
public
:
typedef
struct
TableField
{
Str
MonitorScard
=
"SCADAID"
;
Str
MonitorXCoord
=
"横坐标"
;
Str
MonitorYCoord
=
"纵坐标 "
;
Str
MonitorDesc
=
"描述"
;
Str
MonitorLabel
=
"标签"
;
Str
MonitorNode
=
"节点ID "
;
Str
MonitorMonitor
=
"检测值 "
;
Str
MonitorCalc
=
"计算值 "
;
Str
MonitorError
=
"误差"
;
Str
MonitorMonitorAverage
=
"检测平均值"
;
Str
MonitorCalcAverage
=
"计算平均值"
;
Str
MonitorErrorAverage
=
"平均误差 "
;
Str
MonitorAbsErrirAverage
=
"平均绝对误差"
;
Str
MonitorSquareError
=
"均方根误差"
;
Str
MonitorErrorFlu
=
"误差波动"
;
Str
MonitorNashCoeff
=
"纳什系数"
;
Str
MonitorScore
=
"分数"
;
Str
MonitorReliability
=
"可靠度"
;
}
MonitorPressureTable
;
explicit
CivMonitorPressureTableTemp
();
};
/**
检测流量表
*/
class
CivMonitorFlowTableTemp
:
public
CivTableTemp
{
public
:
typedef
struct
TableField
{
Str
MonitorScard
=
"SCADAID"
;
Str
MonitorXCoord
=
"横坐标"
;
Str
MonitorYCoord
=
"纵坐标 "
;
Str
MonitorDesc
=
"描述"
;
Str
MonitorLabel
=
"标签"
;
Str
MonitorPipe
=
"管段ID "
;
Str
MonitorMonitor
=
"检测值 "
;
Str
MonitorCalc
=
"计算值 "
;
Str
MonitorError
=
"误差"
;
Str
MonitorMonitorAverage
=
"检测平均值"
;
Str
MonitorCalcAverage
=
"计算平均值"
;
Str
MonitorErrorAverage
=
"平均误差 "
;
Str
MonitorAbsErrirAverage
=
"平均绝对误差"
;
Str
MonitorSquareError
=
"均方根误差"
;
Str
MonitorErrorFlu
=
"误差波动"
;
Str
MonitorNashCoeff
=
"纳什系数"
;
Str
MonitorScore
=
"分数"
;
Str
MonitorReliability
=
"可靠度"
;
}
MonitorFlowTable
;
explicit
CivMonitorFlowTableTemp
();
};
/**
检测水质表
*/
class
CivMonitorQualityTableTemp
:
public
CivTableTemp
{
public
:
typedef
struct
TableField
{
Str
MonitorScard
=
"SCADAID"
;
Str
MonitorXCoord
=
"横坐标"
;
Str
MonitorYCoord
=
"纵坐标 "
;
Str
MonitorDesc
=
"描述"
;
Str
MonitorLabel
=
"标签"
;
Str
MonitorNode
=
"节点ID "
;
Str
MonitorMonitor
=
"检测值 "
;
Str
MonitorCalc
=
"计算值 "
;
Str
MonitorError
=
"误差"
;
Str
MonitorMonitorAverage
=
"检测平均值"
;
Str
MonitorCalcAverage
=
"计算平均值"
;
Str
MonitorErrorAverage
=
"平均误差 "
;
Str
MonitorAbsErrirAverage
=
"平均绝对误差"
;
Str
MonitorSquareError
=
"均方根误差"
;
Str
MonitorErrorFlu
=
"误差波动"
;
Str
MonitorNashCoeff
=
"纳什系数"
;
Str
MonitorScore
=
"分数"
;
Str
MonitorReliability
=
"可靠度"
;
}
MonitorQualityTable
;
explicit
CivMonitorQualityTableTemp
();
};
#endif // !CIVTABLETEMP_H
#endif // !CIVTABLETEMP_H
...
...
pandaDbManager/CivTypes.h
View file @
7e05214c
...
@@ -24,6 +24,21 @@ typedef const std::string& StrQuote;
...
@@ -24,6 +24,21 @@ typedef const std::string& StrQuote;
#define CURVETABLE Str("__curve__")
#define CURVETABLE Str("__curve__")
#define OPTIONTTABLE Str("__parameter__")
#define OPTIONTTABLE Str("__parameter__")
/**
方案规划相关表定义
*/
#define PROJTABLE Str("__proj__")
#define PROJNODETABLE Str("__proj_node__")
#define PROJPIPETABLE Str("__proj_pipe__")
/*
监测点表系列
*/
#define PRESSURETABLE Str("__monitor_pressure__")
#define FLOWTABLE Str("__monitor_flow __")
#define QUALITYTABLE Str("__monitor_quality __")
#define PRV_TYPE Str("稳压阀")
#define PRV_TYPE Str("稳压阀")
#define PSV_TYPE Str("减压阀")
#define PSV_TYPE Str("减压阀")
#define PBV_TYPE Str("压力制动阀")
#define PBV_TYPE Str("压力制动阀")
...
...
pandaDbManager/pandaDbManager.vcxproj
View file @
7e05214c
...
@@ -149,18 +149,20 @@
...
@@ -149,18 +149,20 @@
<ImportLibrary>
$(OutDir)..\lib\$(TargetName).lib
</ImportLibrary>
<ImportLibrary>
$(OutDir)..\lib\$(TargetName).lib
</ImportLibrary>
</Link>
</Link>
<PostBuildEvent>
<PostBuildEvent>
<Command>
copy CivDbConnection.h $(OutDir)..\include /y
<Command>
copy CivTypes.h $(OutDir)..\include /y
copy CivTypes.h $(OutDir)..\include /y
copy CivPgConn.h $(OutDir)..\include /y
copy CivPgConn.h $(OutDir)..\include /y
copy CivAssembly.h $(OutDir)..\include /y
copy CivAssembly.h $(OutDir)..\include /y
copy CivDbConn.h $(OutDir)..\include /y
</Command>
</Command>
</PostBuildEvent>
</PostBuildEvent>
</ItemDefinitionGroup>
</ItemDefinitionGroup>
<ItemGroup>
<ItemGroup>
<ClInclude
Include=
"CivAssembly.h"
/>
<ClInclude
Include=
"CivAssembly.h"
/>
<ClInclude
Include=
"CivCommonUtils.h"
/>
<ClInclude
Include=
"CivCommonUtils.h"
/>
<ClInclude
Include=
"CivConnection.h"
/>
<ClInclude
Include=
"CivDbConn.h"
/>
<ClInclude
Include=
"CivDbConn.h"
/>
<ClInclude
Include=
"CivDbConnection.h"
/>
<ClInclude
Include=
"CivDbUtils.h"
/>
<ClInclude
Include=
"CivMaintainModel.h"
/>
<ClInclude
Include=
"CivPgConn.h"
/>
<ClInclude
Include=
"CivPgConn.h"
/>
<ClInclude
Include=
"CivTableTemp.h"
/>
<ClInclude
Include=
"CivTableTemp.h"
/>
<ClInclude
Include=
"CivTrackingResultCache.h"
/>
<ClInclude
Include=
"CivTrackingResultCache.h"
/>
...
@@ -169,8 +171,10 @@ copy CivAssembly.h $(OutDir)..\include /y
...
@@ -169,8 +171,10 @@ copy CivAssembly.h $(OutDir)..\include /y
<ItemGroup>
<ItemGroup>
<ClCompile
Include=
"CivAssembly.cpp"
/>
<ClCompile
Include=
"CivAssembly.cpp"
/>
<ClCompile
Include=
"CivCommonUtils.cpp"
/>
<ClCompile
Include=
"CivCommonUtils.cpp"
/>
<ClCompile
Include=
"CivConnection.cpp"
/>
<ClCompile
Include=
"CivDbConn.cpp"
/>
<ClCompile
Include=
"CivDbConn.cpp"
/>
<ClCompile
Include=
"CivDbConnection.cpp"
/>
<ClCompile
Include=
"CivDbUtils.cpp"
/>
<ClCompile
Include=
"CivMaintainModel.cpp"
/>
<ClCompile
Include=
"CivPgConn.cpp"
/>
<ClCompile
Include=
"CivPgConn.cpp"
/>
<ClCompile
Include=
"CivTableTemp.cpp"
/>
<ClCompile
Include=
"CivTableTemp.cpp"
/>
<ClCompile
Include=
"CivTrackingResultCache.cpp"
/>
<ClCompile
Include=
"CivTrackingResultCache.cpp"
/>
...
...
pandaDbManager/pandaDbManager.vcxproj.filters
View file @
7e05214c
...
@@ -15,9 +15,6 @@
...
@@ -15,9 +15,6 @@
</Filter>
</Filter>
</ItemGroup>
</ItemGroup>
<ItemGroup>
<ItemGroup>
<ClInclude
Include=
"CivDbConnection.h"
>
<Filter>
头文件
</Filter>
</ClInclude>
<ClInclude
Include=
"CivTypes.h"
>
<ClInclude
Include=
"CivTypes.h"
>
<Filter>
头文件
</Filter>
<Filter>
头文件
</Filter>
</ClInclude>
</ClInclude>
...
@@ -39,11 +36,17 @@
...
@@ -39,11 +36,17 @@
<ClInclude
Include=
"CivTrackingResultCache.h"
>
<ClInclude
Include=
"CivTrackingResultCache.h"
>
<Filter>
头文件
</Filter>
<Filter>
头文件
</Filter>
</ClInclude>
</ClInclude>
<ClInclude
Include=
"CivDbUtils.h"
>
<Filter>
头文件
</Filter>
</ClInclude>
<ClInclude
Include=
"CivConnection.h"
>
<Filter>
头文件
</Filter>
</ClInclude>
<ClInclude
Include=
"CivMaintainModel.h"
>
<Filter>
头文件
</Filter>
</ClInclude>
</ItemGroup>
</ItemGroup>
<ItemGroup>
<ItemGroup>
<ClCompile
Include=
"CivDbConnection.cpp"
>
<Filter>
源文件
</Filter>
</ClCompile>
<ClCompile
Include=
"CivTableTemp.cpp"
>
<ClCompile
Include=
"CivTableTemp.cpp"
>
<Filter>
源文件
</Filter>
<Filter>
源文件
</Filter>
</ClCompile>
</ClCompile>
...
@@ -62,5 +65,14 @@
...
@@ -62,5 +65,14 @@
<ClCompile
Include=
"CivTrackingResultCache.cpp"
>
<ClCompile
Include=
"CivTrackingResultCache.cpp"
>
<Filter>
源文件
</Filter>
<Filter>
源文件
</Filter>
</ClCompile>
</ClCompile>
<ClCompile
Include=
"CivConnection.cpp"
>
<Filter>
源文件
</Filter>
</ClCompile>
<ClCompile
Include=
"CivMaintainModel.cpp"
>
<Filter>
源文件
</Filter>
</ClCompile>
<ClCompile
Include=
"CivDbUtils.cpp"
>
<Filter>
源文件
</Filter>
</ClCompile>
</ItemGroup>
</ItemGroup>
</Project>
</Project>
\ No newline at end of file
建模文档/水力模型产品规划V1.0-UPDATE.xmind
View file @
7e05214c
No preview for this file type
建模文档/水力模型数据库.docx
View file @
7e05214c
No preview for this file type
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment