package com.opentravelsoft.providers.hibernate;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.opentravelsoft.entity.Tourist;
import com.opentravelsoft.providers.TouristDao;
import com.opentravelsoft.util.RowDataUtil;
import com.opentravelsoft.util.StringUtil;
@Repository("TouristDao")
public class TouristDaoHibernate extends GenericDaoHibernate<Tourist, String>
implements TouristDao {
public TouristDaoHibernate() {
super(Tourist.class);
}
/**
* 查找客人名单
*/
@SuppressWarnings("unchecked")
public List<Tourist> findCustomer(String[] nmno) {
StringBuilder sb = new StringBuilder();
sb.append("from Tourist where nmno in (");
for (int i = 0; i < nmno.length; i++) {
sb.append("'" + nmno[i].trim() + "',");
}
return getHibernateTemplate().find(sb.substring(0, sb.length() - 1) + ")");
}
@SuppressWarnings("unchecked")
public List<Tourist> findByNmno(String[] nmno) {
StringBuilder sb = new StringBuilder();
sb.append("from Tourist where nmno in (");
for (int i = 0; i < nmno.length; i++) {
sb.append("'" + nmno[i].trim() + "',");
}
return getHibernateTemplate().find(sb.substring(0, sb.length() - 1) + ")");
}
@SuppressWarnings("unchecked")
public Tourist findCustomerByNmno(String nmno) {
StringBuilder sb = new StringBuilder();
sb.append("from Tourist where nmno=? ");
Object[] param = { nmno };
Tourist tcustomer = null;
List<Tourist> list = getHibernateTemplate().find(sb.toString(), param);
if (list.size() > 0) {
tcustomer = list.get(0);
}
return tcustomer;
}
@SuppressWarnings("unchecked")
public Tourist findOneTourist(String bookingNo) {
StringBuilder sb = new StringBuilder();
sb.append("from Tourist where booking.nameNo=? ");
Object[] param = { bookingNo };
Tourist tcustomer = null;
List<Tourist> list = getHibernateTemplate().find(sb.toString(), param);
if (list.size() > 0) {
tcustomer = list.get(0);
}
return tcustomer;
}
/**
* 成团使用
*
* @param teamId
* @param userId
* @param lineName
* @param startDate
* @param endDate
* @return
*/
@SuppressWarnings("unchecked")
public List<Tourist> findCustomer(int teamId, int userId, String lineName,
Date startDate, Date endDate) {
// 成团使用
StringBuilder sb = new StringBuilder();
List<Object> params = new ArrayList<Object>();
sb.append("from Tourist ");
sb.append("where booking.cfmKey='1' and del='N' ");
sb.append("and leaderKey='N' and recType='A' ");
// 预订员所属部门
if (teamId != 0) {
sb.append("and booking.plan.team.teamId=? ");
params.add(teamId);
}
if (userId != 0) {
sb.append("and booking.plan.assigned.userId=" + userId + " ");
}
if (startDate != null && endDate != null) {
sb.append("and booking.plan.outDate>=? and booking.plan.outDate<=? ");
params.add(startDate);
params.add(endDate);
}
if (StringUtil.hasLength(lineName)) {
sb.append("and booking.plan.line.lineName like ? ");
params.add("%" + lineName + "%");
}
Object[] param = null;
if (params.size() > 0) {
param = new Object[params.size()];
for (int i = 0; i < params.size(); i++) {
param[i] = params.get(i);
}
}
return getHibernateTemplate().find(sb.toString(), param);
}
/**
* 取得团人名单(分团)
*
* @param tourNo
* @return
*/
@SuppressWarnings("unchecked")
public List<Tourist> findCustomer(String tourNo) {
// 取得团人名单(分团)
StringBuilder sql = new StringBuilder();
sql.append("from Tourist where booking.plan.tourNo=? and del='N' ");
Object[] param = { tourNo };
List<Tourist> list = getHibernateTemplate().find(sql.toString(), param);
// 取得房间类型
StringBuilder sb = new StringBuilder();
sb.append("select value,text from Lists where listName='RoomType' ");
List<Object[]> list1 = getHibernateTemplate().find(sb.toString());
String roomType;
for (Tourist guest : list) {
if (guest.getTourKey().equals("1"))
guest.setTourKeyName("独立成团");
else if (guest.getTourKey().equals("2"))
guest.setTourKeyName("不可分拆");
else
guest.setTourKeyName("无");
roomType = RowDataUtil.getString(guest.getRoomType());
for (int i = 0; i < list1.size(); i++) {
if (RowDataUtil.getString(list1.get(i)[0]).equals(roomType)) {
guest.setRoomTypeName(RowDataUtil.getString(list1.get(i)[1]));
break;
}
}
}
return list;
}
/**
*
* 取得需要并团人名单(并团使用)
*
* @param groupId 线路所属部门
* @param userId 线路专管员
* @param lineName 线路名称
* @param startDate 出团时间
* @param endDate 出团时间
* @param nameKey
* @return
*/
@SuppressWarnings("unchecked")
public List<Tourist> findCustomer(int teamId, int userId, String lineName,
Date startDate, Date endDate, char nameKey) {
StringBuilder sb = new StringBuilder();
List<Object> params = new ArrayList<Object>();
sb.append("from Tourist ");
sb.append("where booking.cfmKey='1' and del='N' ");
sb.append("and leaderKey<>'Y' and recType='A' ");
if (teamId != 0)
sb.append("and booking.plan.team.teamId=" + teamId + " ");
if (userId != 0)
sb.append("and booking.plan.assigned.userId=" + userId + " ");
if (startDate != null && endDate != null) {
sb.append("and booking.plan.outDate>=? and booking.plan.outDate<=? ");
params.add(startDate);
params.add(endDate);
}
if (StringUtil.hasLength(lineName)) {
sb.append("and booking.plan.line.lineName like ? ");
params.add("%" + lineName + "%");
}
sb.append("order by nmno ");
Object[] param = null;
if (params.size() > 0) {
param = new Object[params.size()];
for (int i = 0; i < params.size(); i++) {
param[i] = params.get(i);
}
}
List<Tourist> list = getHibernateTemplate().find(sb.toString(), param);
StringBuilder sb1 = new StringBuilder();
sb1.append("select value,text from Lists where listName='RoomType' ");
List<Object[]> list1 = getHibernateTemplate().find(sb1.toString());
for (Tourist tourCustomer : list) {
if (tourCustomer.getTourKey().equals("1"))
tourCustomer.setTourKeyName("独立成团");
else if (tourCustomer.getTourKey().equals("2"))
tourCustomer.setTourKeyName("不可分拆");
else
tourCustomer.setTourKeyName("无");
String roomType = RowDataUtil.getString(tourCustomer.getRoomType());
for (int i = 0; i < list1.size(); i++) {
if (RowDataUtil.getString(list1.get(i)[0]).equals(roomType)) {
tourCustomer.setRoomTypeName(RowDataUtil.getString(list1.get(i)[1]));
break;
}
}
}
return list;
}
}