package com.opentravelsoft.providers.hibernate;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.hibernate.LockMode;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;
import com.opentravelsoft.entity.Booking;
import com.opentravelsoft.entity.Guide;
import com.opentravelsoft.entity.Pinyin;
import com.opentravelsoft.entity.Plan;
import com.opentravelsoft.entity.TourCost;
import com.opentravelsoft.entity.TourOutBound;
import com.opentravelsoft.entity.Tourist;
import com.opentravelsoft.entity.product.Leader;
import com.opentravelsoft.providers.PlanDao;
import com.opentravelsoft.util.RowDataUtil;
import com.opentravelsoft.util.StringUtil;
@Repository("TourDao")
public class PlanDaoHibernate extends GenericDaoHibernate<Plan, String>
implements PlanDao {
public PlanDaoHibernate() {
super(Plan.class);
}
@SuppressWarnings("unchecked")
public Plan getTourInfo(String tourNo, boolean actor, boolean cost) {
HibernateTemplate template = getHibernateTemplate();
SimpleDateFormat SDF = new SimpleDateFormat("yyyy");
StringBuilder sql = new StringBuilder();
sql.append("from Plan where tourNo=? ");
Object[] params = { tourNo };
List<Plan> list = template.find(sql.toString(), params);
Plan tour = null;
if (list.size() > 0) {
tour = list.get(0);
tour.setDay(RowDataUtil.getInt(tour.get_day()));
tour.setDoubleRoom(RowDataUtil.getInt(tour.getDbrm()));
tour.setSingleRoom(RowDataUtil.getInt(tour.getSgrm()));
tour.setExtraBedRoom(RowDataUtil.getInt(tour.getAdrm()));
// 应收
tour.setMuAmount(tour.getAmount());
// 已收
tour.setAlAmount(tour.getAramt());
// 未收
tour.setWiAmount(tour.getAmount().subtract(tour.getAramt()));
tour.setYear(SDF.format(tour.getOutDate()));
Object[] param = { tour.getPlanNo() };
// 是否包含客人名单主
if (actor) {
// 查找客人名单
sql = new StringBuilder();
sql.append("from Tourist where del='N' and booking.plan.tourNo=? ");
sql.append("order by booking.nameNo ");
List<Tourist> list1 = template.find(sql.toString(), params);
int idx = 1;
for (Tourist trip : list1) {
trip.setNumber(idx++);
if (null != trip.getBirthday()) {
Calendar cal = Calendar.getInstance();
cal.setTime(tour.getOutDate());
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
cal.setTime(RowDataUtil.getDate(trip.getBirthday()));
trip.setAge(year - cal.get(Calendar.YEAR) - 1);
if (month > cal.get(Calendar.MONTH)
|| month == cal.get(Calendar.MONTH)
&& day > cal.get(Calendar.DAY_OF_MONTH)) {
trip.setAge(trip.getAge() + 1);
}
if (trip.getAge() < 12)
trip.setChild("CHD");
}
if (trip.getLeaderKey().equals("Y")) {
trip.setLeaderKey("T/L");
} else {
trip.setLeaderKey("");
}
}
tour.setCustomerList(list1);
}
if (cost) {
tour.setExtrIncome(tour.getExtCost());
tour.setExtrIncomeDec(RowDataUtil.getString(tour.getExtCostNote()));
sql = new StringBuilder();
sql.append("from TourCost where tour.planNo=? ");
sql.append("order by frChecked desc ");
List<TourCost> costList = template.find(sql.toString(), param);
tour.setCostList(costList);
}
}
return tour;
}
@SuppressWarnings("unchecked")
public List<Plan> getToursAndCustomer(String[] tourNos) {
String tourString = new String();
for (int i = 0; i < tourNos.length; i++)
tourString = tourString + "," + tourNos[i];
String[] tours = tourString.split(",");
StringBuilder sql;
HibernateTemplate template = getHibernateTemplate();
sql = new StringBuilder();
sql.append("from Plan where tourNo in (");
for (int i = 0; i < tours.length; i++) {
if (!("".equals(tours[i].trim()) || tours[i].trim() == null))
sql.append("'" + tours[i].trim() + "',");
}
List<Plan> planList = template.find(sql.substring(0, sql.length() - 1)
+ ")");
Object param;
List<Plan> tourList = new ArrayList<Plan>();
for (Plan tour : planList) {
sql = new StringBuilder();
sql.append("from Tourist where booking.plan.tourNo=? and del='N' ");
param = tour.getTourNo();
List<Tourist> tfj007List = template.find(sql.toString(), param);
for (Tourist trip : tfj007List) {
trip.setRealName(trip.getUserName());
trip.setStauts(0);
}
tour.setCustomerList(tfj007List);
tour.setDoubleRoom(RowDataUtil.getInt(tour.getDbrm()));
tour.setSingleRoom(RowDataUtil.getInt(tour.getSgrm()));
tour.setExtraBedRoom(RowDataUtil.getInt(tour.getAdrm()));
tourList.add(tour);
}
return tourList;
}
public int cancelTour(String tourNo, String note, int userId) {
// 取消团
StringBuilder sb = new StringBuilder();
sb.append("update Plan set delKey='Y' where tourNo=?");
Object[] param = { tourNo };
getHibernateTemplate().bulkUpdate(sb.toString(), param);
return 0;
}
@SuppressWarnings("unchecked")
public int saveTour(Plan tour, String note) {
// 如团信息中所登记的人数与实际客人不符,更新团信息
// tourNo 旧团号
HibernateTemplate template = getHibernateTemplate();
Date sysdate = getSysdate();
// 通过团号查询团并修改基本信息
Object[] params = { tour.getPlanNo() };
Plan plan = (Plan) template.get(Plan.class, tour.getPlanNo(),
LockMode.PESSIMISTIC_WRITE);
if (null == plan)
return -1;
// --------------------------------------------------------------------
// 设置新团号
plan.setTourNo(tour.getTourNo());
plan.setOutDate(tour.getOutDate());
plan.setInDate(tour.getInDate());
plan.setInCity(tour.getInCity());
plan.setVenue(tour.getVenue());
plan.setDbrm(tour.getDoubleRoom());
plan.setSgrm(tour.getSingleRoom());
plan.setAdrm(tour.getExtraBedRoom());
plan.setRemarks(tour.getRemarks());
// 是否需要安排领队
plan.setIsNeedLeader(tour.getIsNeedLeader());
// ---------------------------------------------------------------------
// 查询所有客户并更新客户总数和男女数
StringBuilder sb3 = new StringBuilder();
sb3.append("from Tourist where booking.plan.planNo=? and del<>'Y'");
List<Tourist> list = template.find(sb3.toString(), params);
// 总人数
int pax = list.size();
// 男性人数
int malePax = 0;
// 女性人数
int femalePax = 0;
// 领队人数
int leadPax = 0;
for (Tourist tfj007 : list) {
if (tfj007.getSex().equals("M"))
malePax++;
if (tfj007.getSex().equals("F"))
femalePax++;
if (tfj007.getLeaderKey().equals("Y"))
leadPax++;
}
plan.setPax(pax);
plan.setMalePax(malePax);
plan.setFemalePax(femalePax);
plan.setLeaderPax(leadPax);
// 新加入名单后,根据名单的应收修改团款
StringBuilder sb4 = new StringBuilder();
sb4.append("from Booking where plan.planNo=? ");
// 应收款
BigDecimal dbamt = new BigDecimal(0);
// 已收款
BigDecimal cramt = new BigDecimal(0);
List<Booking> tfj006List = template.find(sb4.toString(), params);
for (Booking tfj006 : tfj006List) {
dbamt = dbamt.add(tfj006.getDbamt());
cramt = cramt.add(tfj006.getCramt());
}
plan.setOptime2(sysdate);
plan.setOpuser2(tour.getOpUser());
plan.setAmount(dbamt);
plan.setAramt(cramt);
template.update(plan);
return 0;
}
// -------------------------------------------------------------------------
@SuppressWarnings("unchecked")
public List<TourOutBound> getOutBandObjectList(String tourNo, String type) {
// 取境外报团打印对象
HibernateTemplate template = getHibernateTemplate();
SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd");
StringBuilder sql = new StringBuilder();
sql.append("from TourOutBound where planNo=? ");
if (null != type && !type.equals(""))
sql.append("and type = '" + type + "' ");
List<TourOutBound> trJ039List = template.find(sql.toString(), tourNo);
List<TourOutBound> OutBandList = new ArrayList<TourOutBound>();
TourOutBound outBandObject;
for (TourOutBound obj : trJ039List) {
outBandObject = new TourOutBound();
outBandObject.setTourNo(RowDataUtil.getString(obj.getTourNo()));
outBandObject.setText1(RowDataUtil.getString(obj.getText1()));
outBandObject.setText2(RowDataUtil.getString(obj.getText2()));
outBandObject.setText3(RowDataUtil.getString(obj.getText3()));
outBandObject.setType(RowDataUtil.getString(obj.getType()));
outBandObject.setOpuser(RowDataUtil.getInt(obj.getOpuser()));
outBandObject.setOpdate(RowDataUtil.getDate(obj.getOpdate()));
outBandObject.setShowStr(outBandObject.getType() + " "
+ outBandObject.getOpuser() + " "
+ SDF.format(outBandObject.getOpdate()));
outBandObject.setShowId(outBandObject.getTourNo() + ":"
+ outBandObject.getType());
OutBandList.add(outBandObject);
}
return OutBandList;
}
public void saveOutBandObject(TourOutBound outBandObject) {
// 保存境外报团打印对象
HibernateTemplate template = getHibernateTemplate();
TourOutBound trj039 = (TourOutBound) template.get(TourOutBound.class,
outBandObject.getId());
if (null == trj039) {
trj039 = new TourOutBound();
trj039.setId(outBandObject.getId());
trj039.setPlanNo(outBandObject.getPlanNo());
trj039.setText1(outBandObject.getText1());
trj039.setText2(outBandObject.getText2());
trj039.setText3(outBandObject.getText3());
trj039.setOpuser(outBandObject.getOpuser());
template.save(trj039);
}
}
@SuppressWarnings("unchecked")
public List<Tourist> getLeaders(String tourNo) {
// 取团所对的领队
HibernateTemplate template = getHibernateTemplate();
StringBuilder sql = new StringBuilder();
sql.append("from Tourist ");
sql.append("where booking.plan.tourNo=? and leaderKey='Y' and del='N' ");
List<Tourist> leaderList = template.find(sql.toString(), tourNo);
return leaderList;
}
@SuppressWarnings("unchecked")
public int modifyCustomerInfo(List<Tourist> customerList, String tourNo,
String note, int userId) {
// 修改团中客人信息
HibernateTemplate template = getHibernateTemplate();
Date sysdate = getSysdate();
StringBuilder sql = new StringBuilder();
Object[] params = { tourNo };
sql.append("from Tourist ");
sql.append("where booking.plan.tourNo=? ");
List<Tourist> list = template.find(sql.toString(), params);
sql = new StringBuilder();
sql.append("from Plan where tourNo=? ");
List<Plan> list2 = template.find(sql.toString(), tourNo);
int femalPax = 0;
int malePax = 0;
if (list2.isEmpty())
return -1;
Plan tfj012 = list2.get(0);
for (Tourist tfj007 : list) {
Tourist trip = null;
for (int i = 0; i < customerList.size(); i++) {
if (customerList.get(i).getNmno().equals(tfj007.getNmno()))
trip = customerList.get(i);
}
if (null == trip)
continue;
template.lock(tfj007, LockMode.PESSIMISTIC_WRITE);
// 姓名
tfj007.setUserName(trip.getUserName());
// 汉语拼音
tfj007.setPinYin(trip.getPinYin());
// 证件号码
tfj007.setIdCard(trip.getIdCard());
// 性别
tfj007.setSex(trip.getSex());
if (tfj007.getSex().equals("M"))
malePax++;
else
femalPax++;
// 出生日期
tfj007.setBirthday(trip.getBirthday());
// 出生地
tfj007.setBirthplace(trip.getBirthplace());
// 护照号
tfj007.setPassportNo(trip.getPassportNo());
// 发照日期
tfj007.setPassportDate(trip.getPassportDate());
// 发照地
tfj007.setPassportPlace(trip.getPassportPlace());
// 护照有效期
tfj007.setPassportExpiry(trip.getPassportExpiry());
// 备注
tfj007.setRemarks(trip.getRemarks());
template.update(tfj007);
}
tfj012.setMalePax(malePax);
tfj012.setFemalePax(femalPax);
tfj012.setOpuser2(userId);
tfj012.setOptime2(sysdate);
template.update(tfj012);
return 0;
}
@SuppressWarnings("unchecked")
public List<Booking> getBookList(String tourNo) {
StringBuilder sql = new StringBuilder();
sql.append("from Booking where plan.tourNo=? and delkey='N'");
List<Booking> bookList = getHibernateTemplate()
.find(sql.toString(), tourNo);
// 取领队
sql = new StringBuilder();
sql.append("select nmno,userName from Tourist ");
sql.append("where leaderKey='Y' and del='N' and booking.plan.tourNo=? ");
Object[] params2 = { tourNo };
List<Object[]> list2 = getHibernateTemplate().find(sql.toString(), params2);
int i = 0;
String str = new String();
if (!list2.isEmpty())
for (Object[] obj : list2)
str = str + obj[1] + " ";
for (Booking book : bookList) {
book.setId(i++);
book.setFinalExpense(book.getFinalAmount());
book.setPayCosts(book.getCramt());
book.setUnPay(book.getDbamt().add(book.getFinalExpense())
.subtract(book.getPayCosts()));
//
if (book.getCustomer().getPayment().equals('N'))
book.setClearingCycle("现结客户");
else if (book.getCustomer().getPayment().equals('M'))
book.setClearingCycle("月结客户");
// 确认人数
book.setPax(RowDataUtil.getInt(book.getConfirmPax()));
book.setAdjustExpense(book.getFinalAmount().add(book.getDbamt()));
book.setLastAdjustBy(book.getFinalUser());
book.setLastAdjustDate(RowDataUtil.getDate(book.getFinalDate()));
book.setAdjustReason(RowDataUtil.getString(book.getFinalNote()));
}
bookList.get(0).setLeaders(str);
return bookList;
}
// -------------------------------------------------------------------------
public int makeTourAccounts(Plan plan) {
Plan tour = getHibernateTemplate().get(Plan.class, plan.getPlanNo(),
LockMode.PESSIMISTIC_WRITE);
tour.setOpAccount("N");
tour.setFrChecked("N");
tour.setOpRefactor("N");
// 其它收入
tour.setExtCost(plan.getExtrIncome());
tour.setExtCostNote(plan.getExtrIncomeDec());
getHibernateTemplate().update(tour);
for (int i = 0; i < plan.getCostList().size(); i++) {
TourCost tourcost = new TourCost();
tourcost.setTour(plan);
tourcost.getCustomer().setCustomerId(
plan.getCostList().get(i).getCustomer().getCustomerId());
tourcost.setDescription(plan.getCostList().get(i).getDescription());
tourcost.setUnitPrice(plan.getCostList().get(i).getUnitPrice());
tourcost.setUnit(plan.getCostList().get(i).getUnit());
tourcost.setCount(plan.getCostList().get(i).getCount());
tourcost.setAmount(plan.getCostList().get(i).getAmount());
tourcost.setCostType(plan.getCostList().get(i).getCostType());
tourcost.setCreatedBy(plan.getOpUser());
tourcost.setFrChecked("N");
// Currency
tourcost.setCurrency(plan.getCostList().get(i).getCurrency());
// ROE
tourcost.setRoe(plan.getCostList().get(i).getRoe());
getHibernateTemplate().save(tourcost);
}
return 0;
}
@SuppressWarnings("unchecked")
public Plan auditTourAccounts(String tourNo, int uid) {
HibernateTemplate template = getHibernateTemplate();
Plan tour = getTourInfo(tourNo, false, true);
List<TourCost> costList = tour.getCostList();
for (TourCost tblCostAcct : costList) {
tblCostAcct.setFrChecked("Y");
}
template.saveOrUpdateAll(costList);
// ---------------------------------------------------------------------
tour.setFrChecked("Y");
tour.setOpRefactor("N");
tour.setFrUser(uid);
tour.setFrDate(getSysdate());
// 毛利率----------
BigDecimal blnrate = tour.getTourAmount().subtract(tour.getCost())
.divide(tour.getTourAmount()).divide(new BigDecimal(100));
tour.setBlnrate(blnrate);
// ---------------- 取各订单已交款-----------------------------------------
StringBuilder sql = new StringBuilder();
sql.append("from Booking where tourNo=? ");
Object[] params = { tour.getTourNo() };
List<Booking> tfj006s = template.find(sql.toString(), params);
BigDecimal cramt = new BigDecimal(0);
for (Booking tfj006 : tfj006s) {
cramt = cramt.add(tfj006.getCramt());
}
tour.setAramt(cramt);
template.update(tour);
return tour;
}
@SuppressWarnings("unchecked")
public List<Booking> mustPayModify(List<Booking> bookList, int uid) {
StringBuilder sql = new StringBuilder();
sql.append("from Booking where nameNo in ( ");
for (Booking book : bookList) {
sql.append(" '" + book.getBookingNo() + "' ,");
}
List<Booking> bookings = getHibernateTemplate().find(
sql.substring(0, sql.length() - 1) + ")");
List<Booking> books = new ArrayList<Booking>();
Date sysdate = getSysdate();
BigDecimal allAmount = new BigDecimal(0);
for (int i = 0; i < bookList.size(); i++)
for (Booking tfj006 : bookings) {
Booking book1 = bookList.get(i);
if (tfj006.getNameNo().equals(book1.getBookingNo())) {
tfj006.setFinalAmount(book1.getAdjustExpense().subtract(
book1.getDbamt()));
tfj006.setFinalUser(uid);
tfj006.setFinalDate(sysdate);
tfj006.setFinalNote(book1.getAdjustReason());
allAmount = allAmount.add(book1.getAdjustExpense());
book1.setLastAdjustBy(uid);
book1.setLastAdjustDate(sysdate);
book1.setIsSuccess(1);
book1.setId(i);
getHibernateTemplate().update(tfj006);
books.add(book1);
break;
}
}
// 修改团的总收入
Plan plan = (Plan) getHibernateTemplate().get(Plan.class,
bookings.get(0).getPlan().getTourNo(), LockMode.PESSIMISTIC_WRITE);
if (null != plan) {
// 修改总收入
plan.setAmount(allAmount);
// 修改未款
plan.setCamt03(allAmount.subtract(plan.getAramt()));
getHibernateTemplate().update(plan);
// 修改核算单的金额
sql = new StringBuilder();
sql.append("from Plan where tourNo=? ");
Object[] params1 = { plan.getTourNo() };
List<Plan> tourList = getHibernateTemplate()
.find(sql.toString(), params1);
if (null != tourList && !(tourList.isEmpty())) {
Plan tour = tourList.get(0);
tour.setAmount(allAmount);
getHibernateTemplate().update(tour);
}
}
return books;
}
@SuppressWarnings("unchecked")
public Plan opGetBalanceAndCost(String tourNo) {
StringBuilder sql = new StringBuilder();
Plan plan = getTourInfo(tourNo, false, true);
List<TourCost> costList = plan.getCostList();
sql = new StringBuilder();
sql.append("select a.outcomeId,a.supplierId,a.frApprovedFlag ");
sql.append("from Outcome a, TourCost c ");
sql.append("where c.acctId=? ");
sql.append("and a.outcomeId=c.tblOutcome.outcomeId ");
if (null != costList && !(costList.isEmpty())) {
int i = 0;
for (TourCost costAcct : costList) {
costAcct.setId(++i);
costAcct.setCostType(RowDataUtil.getString(costAcct.getCostType()));
List<Object[]> tempList = getHibernateTemplate().find(sql.toString(),
costAcct.getAcctId());
if (!tempList.isEmpty()) {
Object[] objTemp = tempList.get(0);
costAcct.setFrChecked(RowDataUtil.getString(objTemp[2]));
costAcct.setIsMakeOutcome("Y");
}
}
}
return plan;
}
@SuppressWarnings("unchecked")
public List<Plan> getTours(Integer teamId, Integer userId, String lineName,
Date kenStartDate, Date kenEndDate) {
StringBuilder sql = new StringBuilder();
List<Object> params = new ArrayList<Object>();
HibernateTemplate template = getHibernateTemplate();
sql.append("from Plan where opAccount='Y' and delKey='N' ");
if (null != kenStartDate) {
sql.append("and outDate >=? ");
params.add(kenStartDate);
}
if (null != kenEndDate) {
sql.append("and outDate<=? ");
params.add(kenEndDate);
}
if (StringUtil.hasLength(lineName)) {
sql.append("and line.lineName like ? ");
params.add("%" + lineName.trim() + "%");
}
// 线路专管员
if (userId != 0) {
sql.append("and assigned.userId=? ");
params.add(userId);
}
// 团所属部门
if (teamId != 0) {
sql.append("and team.teamId=? ");
params.add(teamId);
}
sql.append("order by outDate");
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<Plan> list = template.find(sql.toString(), param);
for (Plan singlePlan : list) {
BigDecimal ml = new BigDecimal(0);
if (singlePlan.getTourAmount().doubleValue() != 0.0) {
ml = singlePlan.getTourAmount().subtract(singlePlan.getCost());
// 保留两位小数点
singlePlan.setGrossAmount(ml);
BigDecimal num = new BigDecimal(0);
num = singlePlan.getGrossAmount().divide(singlePlan.getTourAmount())
.multiply(new BigDecimal(100));
// 保留两位小数点
singlePlan.setGrossAmountRate(num);
}
singlePlan.setLeaderPax(RowDataUtil.getInt(singlePlan.getPax3()));
// 查找已收款
sql = new StringBuilder();
sql.append("select sum(cramt) ");
sql.append("from Booking ");
sql.append("where plan.planNo=? and delkey='N' ");
List<Double> list2 = template
.find(sql.toString(), singlePlan.getPlanNo());
BigDecimal cramt = RowDataUtil.getBigDecimal(list2.get(0));
// 已收款(保留两位小数)
singlePlan.setAlAmount(cramt);
}
return list;
}
public int authorizationModify(String planNo, int uid) {
Plan plan = (Plan) getHibernateTemplate().get(Plan.class, planNo);
if (null != plan) {
plan.setOpRefactor("Y");
plan.setUpdatedBy(uid);
// tblBalance.setNumber(tblBalance.getNumber() + 1);
getHibernateTemplate().update(plan);
} else
return -1;
return 0;
}
// --------------------------------------------------------------------------
@SuppressWarnings("unchecked")
public int arrangeLeader(String tourNo, String[] nameKey, int operator) {
Plan tour = (Plan) getHibernateTemplate().get(Plan.class, tourNo,
LockMode.PESSIMISTIC_WRITE);
if (null == tour)
return -1;
StringBuilder sb = new StringBuilder();
sb.append("from Tourist ");
sb.append("where nmno in (");
for (int i = 0; i < nameKey.length; i++) {
sb.append("'" + nameKey[i] + "',");
}
List<Tourist> list = getHibernateTemplate().find(
sb.substring(0, sb.length() - 1) + ")");
for (Tourist obj : list) {
if (obj.getLeaderKey().equals("N")) {
obj.setLeaderKey("Y");
getHibernateTemplate().update(obj);
tour.setPax3(tour.getPax3() + 1);
}
}
getHibernateTemplate().update(tour);
return 0;
}
@SuppressWarnings("unchecked")
public List<Leader> getLeaderList() {
StringBuilder sql = new StringBuilder();
sql.append("select accCd,accNm,accSex,birthplace,business,hzzl,hzno,");
sql.append("hzadd,hzdate1,mobile,tel,leadCard,card,hzrang ");
sql.append("from Guide ");
sql.append("order by accNm ");
List<Object[]> list = getHibernateTemplate().find(sql.toString());
List<Leader> ret = new ArrayList<Leader>();
for (Object[] obj : list) {
Leader lead = new Leader();
lead.setUid(RowDataUtil.getString(obj[0]));
lead.setUserName(RowDataUtil.getString(obj[1]));
lead.setSex(RowDataUtil.getString(obj[2]));
lead.setBirthplace(RowDataUtil.getString(obj[3]));
lead.setVocation(RowDataUtil.getString(4));
lead.setPassportType(RowDataUtil.getString(obj[5]));
lead.setPassportNo(RowDataUtil.getString(obj[6]));
lead.setPassportPlace(RowDataUtil.getString(obj[7]));
lead.setPassportDate(RowDataUtil.getDate(obj[8]));
// 护照有效期
lead.setPassportExpiry(RowDataUtil.getDate(obj[13]));
lead.setMobile(RowDataUtil.getString(obj[9]));
lead.setPhone(RowDataUtil.getString(obj[10]));
lead.setLeadCard(RowDataUtil.getString(obj[11]));
lead.setIdCard(RowDataUtil.getString(obj[12]));
ret.add(lead);
}
return ret;
}
@SuppressWarnings("unchecked")
public int arrangeFromLeader(String tourNo, String[] nameKey, String[] keys,
Integer operator) {
Plan ooj = (Plan) getHibernateTemplate().get(Plan.class, tourNo,
LockMode.PESSIMISTIC_WRITE);
if (null == ooj)
return -1;
Plan tour = new Plan();
tour.setTourNo(ooj.getTourNo());
tour.setLine(ooj.getLine());
tour.setOutDate(ooj.getOutDate());
tour.setInDate(ooj.getInDate());
tour.setInCity(ooj.getInCity());
tour.setVenue(ooj.getVenue());
tour.setPax(ooj.getPax());
tour.setMalePax(ooj.getMalePax());
tour.setFemalePax(ooj.getFemalePax());
tour.setLeaderPax(ooj.getLeaderPax());
tour.setDoubleRoom(ooj.getDbrm());
tour.setSingleRoom(ooj.getSgrm());
tour.setExtraBedRoom(ooj.getAdrm());
StringBuilder sb = new StringBuilder();
sb.append("FROM Guide ");
sb.append("WHERE accCd in (");
for (int i = 0; i < nameKey.length; i++) {
sb.append("'" + nameKey[i] + "',");
}
List<Guide> list = getHibernateTemplate().find(
sb.substring(0, sb.length() - 1) + ")");
Tourist tourist;
String[] piny = supplyYin(list);
for (int i = 0; i < list.size(); i++) {
Guide obj = list.get(i);
tourist = new Tourist();
// 名单号
tourist.setNmno(keys[i]);
// 记录类型
tourist.setRecType("A");
// 姓名
tourist.setUserName(obj.getAccNm());
// 汉语拼音
tourist.setPinYin(piny[i]);
// 证件种类
// tourist.setCardty("");
// 证件号码
tourist.setIdCard(obj.getIdCard());
// 性别
String sex = "M";
if ("F".equals(obj.getAccSex().trim())) {
sex = "F";
ooj.setPax2(ooj.getPax2() + 1);
} else
ooj.setPlanPax(ooj.getPlanPax() + 1);
tourist.setSex(sex);
// 出生日期
tourist.setBirthday(obj.getBirthday());
// 出生地
tourist.setBirthplace(obj.getBirthplace());
// 手机
// tourist.setMobile("");
// 是否办护照
// tourist.setHzKey("");
// 护照种类
tourist.setPassportType(obj.getPassportType());
// 护照号
tourist.setPassportNo(obj.getPassportNo());
// 因私护照国籍
// tfj007.setCountry("");
// 发照日期
tourist.setPassportDate(obj.getPassportDate());
// 发照地
tourist.setPassportPlace(obj.getPassportPlace());
// 护照有效期
tourist.setPassportExpiry(obj.getPassportExpiry());
// -----------------------------------------------------------------
// 团号
tourist.setTourNo(tour.getTourNo());
// 线路报价
tourist.setPrice(new BigDecimal(0));
// 应收团款
tourist.setAmt01(new BigDecimal(0));
// 优惠申请
tourist.setAmt02(new BigDecimal(0));
// 已收团款
tourist.setAmt03(new BigDecimal(0));
// 已退团款
tourist.setAmt04(new BigDecimal(0));
// 重点客人否
tourist.setVipkey("N");
// 备注
tourist.setRemarks(" ");
// 同行人数
tourist.setPaxnum(0);
// 住房要求
tourist.setRoomKey(" ");
// 同房序号
tourist.setRmNum(0);
// 是否同意与他人同住
tourist.setRoomKey1("Y");
// 取消标志
tourist.setDel("N");
// 操作人
tourist.setOpuser(operator);
// 分团标志
tourist.setTourKey("N");
// 领队标志
tourist.setLeaderKey("Y");
// 办签状态
tourist.setVisaKey(" ");
// -------------------------------------------------------------
getHibernateTemplate().save(tourist);
ooj.setPax(ooj.getPax() + 1);
ooj.setPax3(ooj.getPax3() + 1);
}
return 0;
}
@SuppressWarnings("unchecked")
private String[] supplyYin(List<Guide> trips) {
StringBuilder sql = new StringBuilder();
sql.append("from Pinyin ");
sql.append("where chinese in (");
String[] pinyin = new String[trips.size()];
for (int i = 0; i < trips.size(); i++) {
Guide trip = trips.get(i);
String name = trip.getAccNm();
String oldpinyin = trip.getPinyin();
if (StringUtil.hasLength(oldpinyin)) {
pinyin[i] = oldpinyin;
} else {
StringBuilder py = new StringBuilder();
char[] ch = name.toCharArray();
StringBuilder sb = new StringBuilder();
int count = 0;
for (char c : ch) {
sb.append("'" + c + "',");
}
List<Pinyin> pys = getHibernateTemplate().find(
sql.toString() + sb.substring(0, sb.length() - 1) + ")");
Map<String, String> map = new TreeMap<String, String>();
for (Pinyin tfj112 : pys) {
map.put(tfj112.getChinese(), tfj112.getEnglish());
}
for (char c : ch) {
if (null == map.get(String.valueOf(c)))
py.append(c);
else {
py.append(map.get(String.valueOf(c)));
count++;
if (count == 1)
py.append(' ');
}
}
pinyin[i] = py.toString().trim();
}
}
return pinyin;
}
/**
* 取消领队
*/
@SuppressWarnings("unchecked")
public int cancelLeader(String tourNo, String[] nameKey, int uid) {
Plan tour = (Plan) getHibernateTemplate().get(Plan.class, tourNo,
LockMode.PESSIMISTIC_WRITE);
if (null == tour)
return -1;
Date sysdate = getSysdate();
StringBuilder sb = new StringBuilder();
sb.append("from Tourist ");
sb.append("where nmno in (");
for (int i = 0; i < nameKey.length; i++) {
sb.append("'" + nameKey[i] + "',");
}
List<Tourist> list = getHibernateTemplate().find(
sb.substring(0, sb.length() - 1) + ")");
for (Tourist obj : list) {
if (obj.getLeaderKey().equals("Y")) {
if ("".equals(obj.getBooking().getNameNo().trim())) {
// obj.setLeaderKey("N");
// obj.setDel('Y');
if (obj.getSex().equals("F"))
tour.setFemalePax(tour.getFemalePax() - 1);
else
tour.setMalePax(tour.getMalePax() - 1);
getHibernateTemplate().delete(obj);
} else {
obj.setLeaderKey("N");
getHibernateTemplate().update(obj);
}
tour.setLeaderPax(tour.getLeaderPax() - 1);
}
}
tour.setOpuser2(uid);
tour.setOptime2(sysdate);
getHibernateTemplate().update(tour);
return 0;
}
}