流程大致如下:
通过航班号和出发日期(可能有出发时间)查询flight表获取主键flight_ID,
flight_ID通过中间表user_flight查询到join_id,
通过join_id可以分别查询到User(用户表)和bag(行李表)中的相关信息
查询航班
action层:
public void queryFlight(){
//输入参数是fltNbr,dptDate [dptTime]
System.out.println("fltNbr="+fltNbr+"; dptDate="+dptDate);
try {
ResultInfo result = flightService.queryFlight(fltNbr, dptDate, dptTime);
doOutput((new JSONObject().fromObject(result)).toString());
} catch (Exception e) {
e.printStackTrace();
}
}
control层:
public ResultInfo queryFlight(String fltNbr, String dptDate, String dptTime) throws Exception {
/**
* 主要的处理逻辑:
* 1、根据输入的 航班号、出发日期 和 出发时间 查询航班信息,
* 2、将查询结果以JSON格式保存到对应的文件
* 3、将JSON文件FTP到对应的文件目录//
* 4、最后返回操作结果,
* 如果有新的文件成功生成 code=TRUE msg=FTP路径和文件名;
* 如果没有新文件生成、生成文件操作失败 或FTP操作失败 code=FLASE msg=具体解释
*/
ResultInfo rstInfo = new ResultInfo();
List<AirFlight> resultList = flightDao.queryFlight(fltNbr, dptDate, dptTime);
String jsonContent = "";
if(resultList != null && resultList.size()>0){
JSONArray jsonArray = new JSONArray().fromObject(resultList);
jsonContent = jsonArray.toString();
}else{
jsonContent = "N/A";
}
/**处理文件 */
if("N/A".equals(jsonContent)){
rstInfo.setCode("FALSE");
rstInfo.setMsg("没有查到对应的航班信息");
}else{
String md5Str = MD5Helper.StringToHash(fltNbr+"-"+dptDate);
String dataFileName = doJSONFileWriteAndFTP(md5Str, "flight_data", jsonContent);
rstInfo.setCode("TRUE");
rstInfo.setMsg(dataFileName);
}
return rstInfo;
}
DAO层
public List<AirFlight> queryFlight(String fltNbr, String dptDate, String dptTime) {
String queryHQL = " from AirFlight where fltNbr = ? and dptDt = ?";
Object[] value;
if(dptTime != null && dptTime.length()>0){
queryHQL = queryHQL +" and dptTm = ?";
value = new Object[]{fltNbr,dptDate,dptTime};
}else{
value = new Object[]{fltNbr,dptDate};
}
return (List<AirFlight>)this.getHibernateTemplate().find(queryHQL,value);
}
查询用户:
ACTION层:
private String joinId;
public void queryUser(){
System.out.println("joinId="+joinId);
try {
ResultInfo result = flightService.queryUser(fltId);
doOutput((new JSONObject().fromObject(result)).toString());
} catch (Exception e) {
e.printStackTrace();
}
}
control层:
public ResultInfo queryUser(String fltId) throws Exception {
ResultInfo rstInfo = new ResultInfo();
List<AirUser> resultList = flightDao.queryUser(fltId);
String jsonContent = "";
if(resultList != null && resultList.size()>0){
JSONArray jsonArray = new JSONArray().fromObject(resultList);
jsonContent = jsonArray.toString();
}else{
jsonContent = "N/A";
}
/**处理文件 */
if("N/A".equals(jsonContent)){
rstInfo.setCode("FALSE");
rstInfo.setMsg("没有查到对应的乘客信息");
}else{
String md5Str = MD5Helper.StringToHash("");
String dataFileName = doJSONFileWriteAndFTP(md5Str, "user_data", jsonContent);
rstInfo.setCode("TRUE");
rstInfo.setMsg(dataFileName);
}
return rstInfo;
}
DAO层:
public List<AirUser> queryUser(String fltId) {
String queryHQL = "select t3 from AirUser t3, AirUserFlight t2 where t2.joinId=t3.joinId and t2.fltId = ?";
Object[] value = new Object[]{fltId};
return (List<AirUser>)this.getHibernateTemplate().find(queryHQL,value);
}
查询行李
action层:
private String fltId;
public void queryBaggage(){
System.out.println("fltId="+fltId+"; joinId="+joinId);
try {
ResultInfo result = flightService.queryAirBaggage(joinId, fltId, fltNbr);
doOutput((new JSONObject().fromObject(result)).toString());
} catch (Exception e) {
e.printStackTrace();
}
}
control层:
public ResultInfo queryAirBaggage(String joinId, String fltId,String fltNbr) throws Exception {
ResultInfo rstInfo = new ResultInfo();
List<AirBaggage> resultList = flightDao.queryAirBaggage(joinId, fltId, fltNbr);
String jsonContent = "";
if(resultList != null && resultList.size()>0){
JSONArray jsonArray = new JSONArray().fromObject(resultList);
jsonContent = jsonArray.toString();
}else{
jsonContent = "N/A";
}
/**处理文件 */
if("N/A".equals(jsonContent)){
rstInfo.setCode("FALSE");
rstInfo.setMsg("没有查到对应的行李信息");
}else{
String md5Str = MD5Helper.StringToHash("");
String dataFileName = doJSONFileWriteAndFTP(md5Str, "baggage_data", jsonContent);
rstInfo.setCode("TRUE");
rstInfo.setMsg(dataFileName);
}
return rstInfo;
}
DAO层:
public List<AirBaggage> queryAirBaggage(String joinId, String fltId,String fltNbr) {
String queryHQL = "from AirBaggage t4 where t4.fltId = ? and t4.joinId= ?";
Object[] value = new Object[]{fltId,joinId};
return (List<AirBaggage>)this.getHibernateTemplate().find(queryHQL,value);
}