-
1 学习目的
-
2 引导训练
学习目的
1. 学会自动化安全监测系统的主体架构结构设计
2. 复习服务器端数据读取的流程和方案
3. 复习Android端数据实时获取与实现方法
自动化安全监测系统的主体架构结构设计
案例1 WEBService层方法接口设计
列出WEBService层的安全监测模块提供给其他模块的接口,以及本模块需要其他模块提供的接口。包括函数接口和全局变量接口等模块间操作所用到的任何内容。其中函数接口需要将输入、输出参数及返回值确定。
1.获取筛分皮带列表接口
URL形式:screenBeltlist
输入:无
输出:JSON
JSON格式:
{
screenBeltList: //类型:List<ScreenBelt>
[{
Long uid; //主键
Int id; //皮带id
String name; //皮带名称
}]
}
Action流程:
①调用getScreenBeltList()函数获取皮带信息列表;
②把获取的list存储BeltData. map里面;
③map里面数据处理成JSON格式;
④返回Success,同时让struts将JSON数据返回给客户端。
2.获取所有筛分皮带运行状态信息列表接口
URL形式:beltStateList
输入:无
输出:JSON
JSON格式:
{
belt:StateList: //类型-List<BeltData>
[{
Long id; //主键
int bid; //皮带ID
String dataname; //数据量名称
String type; //数据量类型
String currentvalue; //数据值
String unit; //单位
Timestamp vrritetime. //数据写入时间,为保存数据库时的系统当前时间
}]
}
Action流程:
①调用getBeltStateList()函数获取特定皮带运行数据列表;
②把获取的list存储BeltData. map里面;
③map里面数据处理成JSON格式;
④返回Success.同时让struts将JSON数据返回给客户端。
注:“单位”值可能为NULL。
3.获取特定筛分皮带保护设备状态信息列表接口
URL形式:protectList? id=皮带id
输入:id(皮带lD)
输出:List<BeltData>
JSON格式:
{
protectList://类型:List< BeltData>
[{
Long id; //主键
int bid; //皮带iD
String dataname; //数据量名称
Strirg type; //数据量类型
String currenhralue; //数据值
String unit; //单位
Timestamp writetime; //数据写入时间,为保存数据库时的系统当前时间
}]
int Alarm; //保护状态异常标识(0:正常1:异常)
}
Action流程:
①凋用getProtectMesList (Integer id),函数获取特定皮带流量历史数据列表;
②把获取的list存储BeltData.map里面;
③map里面数据处理成JSON格式;
④返回Success,同时让struts将JSON数据返回给客户端。
注:“单位”值可能为NULL。
4.获取所有筛分皮带下给煤机状态信息列表接口
URL形式:coalFeederList
输入:无
输出:List<BeltData>
JSON格式:
{
coalFeederList: //类型:List< BeltData>
[{
Long id; //主键
int bid; //皮带ID
String dataname; //数据量名称
String type; //数据量类型
String currentvalue; //数据值
String unit; //单位
Timestamp writetime; //数据写入时间,为保存数据库时的系统当前时间
}]
}
Action流程:
①调用getCoaIFeederMesList()函数;
②把获取的list存储BeltData. map里面;
③map里面数据处理成JSON格式;
④返回Success,同时让struts将JSON数据返回给客户端。
5.获取主井皮带数值型数据列表接口
URL形式:numericalList? id=皮带id
输入:id //皮带ID
输出:List<BeltData>
JSON格式:
{
numericalList: //类型:List< BeltData>
[{
Long id; //主键
int bid; //皮带ID
String dataname; //数据量名称/
String type, //数据量类型
String currentvalue; //数据值
String unit; //单位
Timestamp writetime; // 数据写入时间,为保存数据库时的系统当前时间
}]
}
Action流程:
①调用getNumericalMesList (Integer id)函数;
②把获取的list存储BeltData. map里面;
③map里面数据处理成JSON格式;
④返回Success,同时让struts将JSON数据返回给客户端。
6.接收并处理前端请求接口(HttpServlet请求)
由cn. ict. sbf. webservice. SaveXMLClient类实现,SaveXMLClient继承自HttpServlet.
<servlet-name> SaveXMLCILent</servlet-name>
<servlet-class>cn. ict. sbf. webservice. SaveXMLClient</servlet-class>
Action流程:
①初始化init();
②处理请求doGet()或doPost();
③释放空间,销毁变量destroy()。
7.读取XML文件接口
由cn. ict. sbf. webservice. XMLClient粪实现,XMLClient继承自Thread。
Action流程:
①获取服务端连接参数ip及port;
②根据ip及port创建socket;
③根据socket创建BufferedReader inputstream;
④以流形式inputstream读取XML文件,读取完毕关闭inputstream及socket;
⑤调用XMLParser. parser (String xml)解析xml文件。
案例2业务逻辑层接口设计(cn.ict.sb.service)
以子模块为单位,列出为实现模块功能,所需要的模块内部接口。包括函数接口、全局变量接口等任何函数间操作所用到的内容。其中函数接口需要将输入、输出参数及返回值确定。
1.筛分皮带设备列表查询接口
函数名: public static List<ScreenBelt> getScreenBeltList()
硝数流程:
①建List<ScreenBelt<对象list;
②获取ApplicationContext对象,即获取Spring XML配置文件上下文;
③创建ScreenBeltDao对象,获取Spring XML文件中bean实例;
④调用findScreenBelt方法,获取所有筛分皮带信息列表;
⑤返回list。
函数输入:无
函数输出:List <_ScreenBelt>
2.筛分皮带运行状态信息查询接口
函数名:public static List<BeltData> getBeltStateList (Integer id)
函数流程:
①创建List<BeltData>对象list;
②获取ApplicationContext对象,即获取Spring XML配置文件上下文;
③创建DataDao对象,获取Spring XML文件中bean实例;
④创建List<Temp>对象list_id。
⑤调用getIDList方法,获取数据库中最新的id List;
⑥根据list_id的长度新建一个long型数组nodelist,将list_id中的id属性赋值给
nodelist;
⑦调用findLatestStateMes方法,获取所有皮带(主井皮带,南翼、北翼皮带及筛分
皮带)最新的运行状态信息;
⑧返回list。
函数输入:无
函数输出:List<BeltData>
3.筛分皮带运行数据存储接口
函数名:public static void saveBeltData (BeltData d)
函数流程:
①获取ApplicationContext对象,即获取Spring XML 配置文件上下文。
②创建DataDao对象,获取Spring XML文件中bean实例;
③调用saveBeltData方法,存储筛分皮带数据。
函数输入:BeltData //数据对象
函数输出:无
4.特定筛分皮带保护状态信息查询接口
函数名:public static List<BeltData> getProtectMesList (Integer id)
函数流程:
①创建List<BeltData>对象list;
②获取ApplicationContext对象,即获取Spring XML配置文件上下文;
③创建DataDao对象,获取Spring XML文件中bean实例;
④创建List<Temp>对象list_id;
⑤调用getIDList方法,获取数据库中最新的id List;
⑥根据list—id的长度新建一个long型数组nodelist,将list_id中的id属性赋值给
nodelist;
⑦调用findLatestProMes方法,获取特定筛分皮带所有保护状态数据列表的最新n条
数据;
⑧返回list。
函数输入:id //皮带ID
函数输出:List<BeltData>
5.特定筛分皮带保护状态异常状态判断接口
函数名:public static intisAlarm (List<BeltData> list)
豳数流程:
①定义int类型变量alarm=O,用于标识皮带的所有保护设备是否处在正常状态(0
表示正常,1表示异常)。如果皮带上的一个保护设备处于异常状态,则alarm =1;
②循环遍历list中每个BeltData对象中的属性值是否异常;
③出现异常状态置alarm=l并跳出循环;
④返回alarm。
函数输入:List<BeltData> list特定皮带保护状态信息列表
函数输出:alarm
6.筛分皮带秤下给煤机状态信息查询接口
函数名:public static List<BeltData> getCoalFeederMesList (Integer id)
函数流程:
①创建List<BeltData>对象list;
②获取ApplicationContext对象,即获取Spring XML配置文件上下文;
③创建DataDao对象,获取Spring XML文件中bean实例;
④创建List<Temp>对象list_id;
⑤调用getIDList方法,获取数据库中最新的id List;
⑥根据list_id的长度新建一个long型数组nodelist,将list_id中的id属性赋值给
nodelist:
⑦调用findLatestCStateMes方法,获取所有筛分皮带下给煤机运行状态信息列表;
⑧返回list。
函数输入:无
函数输出:List<BeltData>
7.特定筛分皮带秤数据类型信息查询接口
函数名:public static List<BeltData> getNumericaIMesList (Integer id)
函数流程:
①创建List<BeltData>对象list;
②获取ApplicationContext时象,即获取Spring XML配置文件上下文;
③创建List<Temp>对象list_id;
④调用getIDList方法,获取数据库中最新的id List;
⑤根据list_id的长度新建一个long型数组nodelist,将list_id中的id属性赋值给
nodelist;
⑥创建DataDao对象,获取Spring XML文件中bean实例;
⑦调用findLatestProMes方法,获取特定筛分皮带的最新数值型信息列表;
⑧返回list。
函数输入:String id //皮带ID
函数输出:List<BeltData>
8.获取最新id列表接口
函数名 : private static List<Temp> getIDList()
函数流程:
①创建List<Temp>对象list;
②获取ApplicationContext对象,即获取Spring XML配置文件上下文;
③创建DataDao对象,获取Spring XML文件中bean实例;
④调用findMaxList方法;
⑤返回list。
函数输入:无
函数输出:List<Temp>
9.解析XML文件接口
函数名:public static void parser (String xml)
函数流程:
①用DocumentHelper.parseText (xml)创建Document对象document;
②获取document的根元素root;
③用Element.elements(”data”)遍历获取所有<data></data>标签内各元素属
性及属性值;
④创建Data对象data并为其各属性赋值;
⑤调用saveData方法,将Data对象data的内容存至数据库。
函数输入:String XML(xml文件的字符串形式)
函数输出:无
案例3Dao层接口设计(cn.ict.sb.dao)
1.皮带秤设备查询接口
函数名:public List<ScreenBelt>findScreenBelt (String query)
函数流程:
①创建List<ScreenBelt>对象list;
②hibernateTemplate调用find方法查询筛分皮带列表;
③将查询结果赋值到list;
④返回list。
函数输入:String query //SQL语句
函数输出:List<ScreenBelt>
2.筛分皮带运行数据管理接口(cn.ict.sb.dao.DataDao)
(1)筛分皮带数值型数据查询
函数名: public I_ist<BeltData> findLatestNumMes (Long[ ]idList)
函数流程:
①创建List<BeltData>对象list;
②使用对象打开session;
④使用Criteria对象添加SQL语句查询条件:unit属性不为空,id属性属于idList;
④调用Criteria的list方法将查询结果赋值给list对象;
⑤返回list。
函数输入:Long[ ]idList //id数组
函数输出:List<BeltData>
(2)筛分皮带保护数据查询
函数名:public List<BeltData> findLatestProMes (Long[]idList)
函数流程:
①创建List<BeltData>对象list;
②使用对象打开session;
③使用Criteria对象添加SQL语句查询条件:dataname属性包含“保护”字样,id
属性属于idList;
④调用Criteria的list方法将查询结果赋值给list对象;
⑤返回list。
函数输入:Long[ ]idList //id数组
函数输出:List<BeltData>
(3)筛分皮带给煤机状态数据查询
函数名:public List<BeltData> findLatestCStateMes (Long[ ]idList)
函数流程:
①创建List<BeltData>对象list;
②使用对象打开session;
③使用Criteria对象添加SQL语句查询条件:dataname属性包含“给煤机”字样,id
属性属于idList;
④调用Criteria的list方法将查询结果赋值给list对象;
⑤返回list。
①创建List<BeltData>对象list;
②使用对象打开session;
③使用Criteria对象添加SQL语句查询条件:dataname属性包含“给煤机”字样,id
属性属于idList;
④调用Criteria的list方法将查询结果赋值给list对象;
⑤返回list。
函数输入:Long[ ]idList //id数组
函数输出:List<BeltData>
案例4 筛分皮带函数实现核心代码及分析
/* *
*获取井下皮带ID列表
*/
@SuppressWarnings("unchecked")
public List<Tamp> findMaxList( Integer id){
List<Temp> list = new ArrayList<Temp>();
Session s=hibernateTemplate. getSessionFactory() openSession();
Criteria c=s. createCriteria(Temp. class) add(
Restrictions.eq( "bid". id));
ProjectionList prolist= Projections. projectionList();
prolist. add(Projections. max(“id"));
prolist. add( Projections. groupProperty("name"));
c.setProjection( prolist);
List<Object> results=c.list();
for(int i=O;i<results. size(); i++){
Object[]arr = (Object[]) results. get(i);
Temp t=new Temp();
t.setld ((Long) arr[0]);
t. setName(arr[l]. toString());
list. add(t);
}
s.close();
return list;
}
return list;
}
/* *
*主井皮带运行状态信息
*
* @param idList
* @return
*/
@SuppressWarnings ( " unchecked" )
public List<BeltData> findMBeltStateMes(Lang[ ] idlist) {
List<BeltData> list = new ArrayList<BeltData>( ) ;
Session s = hibernateTemplate. getSessionFactory( ) . openSession( );
Criteria c = s. createCriteria( BeltData. class)
. add( Restrictions. in( "id", idList))
. add( Restrictions. eq( "dataname", "主井皮带电机运行 " )) ;
list = c. list();
s. close( ) ;
return list;
}
/* *
*获取井下皮带就地状态
*/
@SuppressWarnings ( " unchecked" )
public List<BeltData> findOTSStateMes(Long[ ] idList){
List<BeltData> list = new ArrayList<BeltData> ( ) ;
Session s = hibernateTemplate getSessionFactory( ). openSession( )
Criteria c = s. createCriteria(BeltData class)
. add( Restrictions. in( "id". idList))
. add(Restrictions. like( "datanamen", ,, %皮带就地 % " )) ;
list = c. list();
s. close( ) ;
return list;
}
/* *
*南翼北翼皮带运行状态
* /
@ SuppressWarnings ( " unchecked" )
public List<BeltData> findNSBeltStateMes(Long[ ] idList) {
List<BeltData> list = new ArrayList<BeltData> ( ),
Session s = hibernateTemplate. getSessionFactory( ). openSession( );
Criteria c = s. createCriteria(BeltData. class)
. add( Restrictions. in( " id", idList))
. add( Restrictions. like ( "dataname", " %皮带速度 % " )) ;
list = c. list();
s. close( ) ;
return list;
}
/* *
*筛分皮带
*/
@ SuppressWarnings ( " unchecked" )
public List<BeltData> findSCBeltStateMes(Long[ ] idList) {
List<BeltData> list = new ArrayList<BeltData> ( );
Session s = hibernateTemplate. getSessionFactory( ). openSession( );
Criteria c = s. createCriteria(BeltData. class)
. add( Restrictions. in( " id", idList))
. add ( Restrictions. like( " dataname"," %启停控制" )) ;
list = c. list();
s. close( ) ;
return list;
}
同步训练与考核评价