背景介绍
针对现场出现一些问题,需要定位一下页面对应的数据库表的内容是否存在数据,方便排查错误,下面介绍两个方法。
方法一
主要是针对现场运行的系统,我们系统都已经集成好了log的输出,在查询的界面,进行相关的查询操作之后,即可通过log的输出,找到对应的数据库表的名字,这个是最为快捷的,但是可能会有不全面的位置。
如下方的日志,很快就可以定位了。
2020-04-04 01:21:14.103 INFO [http-nio-8080-exec-6] com.narisq.ewis.util.LOG | SELECT * FROM fd.FD_RUN_ALARM T
WHERE T.BEGINTIME <= TO_DATE('2020-04-04 01:21:14','yyyy-mm-dd hh24:mi:ss') AND
T.LASTTIME >= TO_DATE('2020-04-04 01:21:14','yyyy-mm-dd hh24:mi:ss') AND
T.WINDFARMID IN (78367000,78125000,78427000,78095000) AND
T.DATATYPE IN (102,103,104,111,111,115,118,120,123,202,205,124,125) AND
T.ALARMTYPE IN (0,1,3,4,5,7)
ORDER BY WINDFARMID, DATATYPE, BEGINTIME ,ALARMTYPE
至于日志存在的位置,一般都是存储在tomcat的logs目录下面。windows的话,还可以直接在tomcat的终端界面进行日志查看。
方法二
主要是针对研发而言,首先需要找到你所在界面的地址。
然后,根据地址找到对应的界面的源码
再然后找到所有接口调用的位置:
../action/PVDisplayPageCfg
../action/EwisDatalist
../action/PVupPanelAction
../action/PVReadXmlAction
../action/PVDisplayPageCfg
然后根据这些action,通过struts-config.xml定位到对应的类,上述的几个都可以定位到对应的类,然后就可以直接查询对应的数据库表字段了,但是第二个EwisDatalist这个有一些特殊。主要是它的参数特殊。
ChartParamNode = XmlNodeParametersObj.CreateECodeNode("DbQueryPanelType",
"FDScheduleElement", null);
XmlNodeParametersObj.InsertPNode(ChartParamNode, "101", "MA", "",
"Condition", "Value", windFarmID);
这里的话,是专门的一个查询数据的组件,我们需要到C:\ComponentRegistration\EWIS\ECode目录下,找到文件名字是FDScheduleElement的文件,并打开,找到DbQueryPanelType节点。
<ECode Name="DbQueryPanelType">
<Component UID="101" Category="datacomponent" TimeOut="12000,12000"
ProxyRequest="false,101">
<ParamXmlNode>
<DataOperationNode>
<DataType Value="panels" />
<ReturnDataSource NameList="panels" />
<Fields DataSetCount="1">
<Field Name="type" ConvertType="string" Header="光伏板型号"
ColumnIndex="0" DataSetIndex="0" />
<Field Name="area" ConvertType="double" Header="光伏板面积"
ColumnIndex="1" DataSetIndex="0" />
<Field Name="rate" ConvertType="double" Header="光伏板转换率"
ColumnIndex="2" DataSetIndex="0" />
</Fields>
<Condition Op="and">
<Condition UID="101" Field="windfarm_id" Op="=" Value="58001000"
ValueType="int" />
</Condition>
</DataOperationNode>
</ParamXmlNode>
</Component>
</ECode>
然后根据这个节点的DataType 类型panels,定位到根目录下的FDDBConfig文件,找到panels对应的数据库表的名字就行。
<Table Name="fd_def_panel" QueryType="panels" />
以上就是两个数据库表的定位方法了。