DaoImpl.java 14.7 KB
package com.air.agent.imf.dao.impl;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.log4j.Logger;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;

import com.air.agent.imf.bean.ManifestEntity;
import com.air.agent.imf.bean.PreparesecondaryEntity;
import com.air.agent.imf.dao.Dao;
import com.jfinal.kit.StrKit;

public class DaoImpl implements Dao {
	public static final Logger logger = Logger.getLogger(DaoImpl.class);
	private JdbcTemplate jdbcTemplate;

	public DaoImpl() {
	}

	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}

	@Override
	public long saveMain(ManifestEntity bean) {
		long generatedId = 0;
		try {
			KeyHolder keyHolder = new GeneratedKeyHolder();
			this.jdbcTemplate.update(new PreparedStatementCreator() {
				public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
					StringBuilder sb = new StringBuilder();
					sb.append("insert into MANIFEST(");
					sb.append("FLIGHTNO,FLIGHTDATE,ORIGINATINGSTATION,DESTINATIONSTATION,WAYBILLNOMASTER,");
					sb.append("TOTALWEIGHT,TOTALPIECE,PREPARETOTALPIECE,PREPARETOTALWEIGHT,AGENTCOMPANYCODE,");
					sb.append("STOWAGEDATE,CARRIER,CUSTOMSSTATUS,PAYMODE,CUSTOMSCODE,AGENTMAN,AGENTCOMPANY,");
					sb.append("CREATEDATE,PRODUCTNAME,USER_ID,UNNUMBER,CATEGORY,SH_COMPANY,SH_ADDRESS,SH_ZIPCODE,");
					sb.append("SH_CITY,SH_DELTANAME,SH_COUNTRY,SH_TELEPHONE,SH_FAX,SH_NAME,CO_COMPANY,CO_ADDRESS,");
					sb.append("CO_ZIPCODE,CO_CITY,CO_DELTANAME,CO_COUNTRY,CO_TELEPHONE,CO_FAX,CO_NAME,REACH_STATION,");
					sb.append("NAME_OFGOODS,DELIVERY_STATION,SH_PROVINCECODE,SH_PROVINCENAME,DE_NUMBER,DE_WEIGHT,");
					sb.append("DE_CHWEIGHT,SHPAEO,CNEAEO,SHPCUSID,CNECUSID,UNLODINGCODE,ID)");
					sb.append(
							" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");

					PreparedStatement ps = connection.prepareStatement(sb.toString(), new String[] { "ID" });
					ps.setString(1, bean.getFlightno());
					ps.setDate(2, new Date(bean.getFlightdate().getTime()));
					ps.setString(3, StrKit.isBlank(bean.getOriginatingstation()) ? "" : bean.getOriginatingstation());
					ps.setString(4, StrKit.isBlank(bean.getDestinationstation()) ? "" : bean.getDestinationstation());
					ps.setString(5, StrKit.isBlank(bean.getWaybillnomaster()) ? "" : bean.getWaybillnomaster());

					ps.setString(6, StrKit.isBlank(bean.getTotalweight()) ? "" : bean.getTotalweight());
					ps.setString(7, StrKit.isBlank(bean.getTotalpiece()) ? "" : bean.getTotalpiece());
					ps.setString(8, StrKit.isBlank(bean.getPreparetotalpiece()) ? "" : bean.getPreparetotalpiece());
					ps.setString(9, StrKit.isBlank(bean.getPreparetotalweight()) ? "" : bean.getPreparetotalweight());
					ps.setString(10, StrKit.isBlank(bean.getAgentcompanycode()) ? "" : bean.getAgentcompanycode());

					ps.setDate(11, new Date(bean.getStowagedate().getTime()));
					ps.setString(12, StrKit.isBlank(bean.getCarrier()) ? "" : bean.getCarrier());
					ps.setString(13, StrKit.isBlank(bean.getCustomsstatus()) ? "" : bean.getCustomsstatus());
					ps.setString(14, StrKit.isBlank(bean.getPaymode()) ? "" : bean.getPaymode());
					ps.setString(15, StrKit.isBlank(bean.getCustomscode()) ? "" : bean.getCustomscode());
					ps.setString(16, StrKit.isBlank(bean.getAgentman()) ? "" : bean.getAgentman());
					ps.setString(17, StrKit.isBlank(bean.getAgentcompany()) ? "" : bean.getAgentcompany());

					ps.setDate(18, new Date(bean.getCreatedate().getTime()));
					ps.setString(19, StrKit.isBlank(bean.getProductname()) ? "" : bean.getProductname());
					ps.setLong(20, bean.getCreator());
					ps.setString(21, StrKit.isBlank(bean.getUnnumber()) ? "" : bean.getUnnumber());
					ps.setString(22, StrKit.isBlank(bean.getCategory()) ? "" : bean.getCategory());
					ps.setString(23, StrKit.isBlank(bean.getSh_company()) ? "" : bean.getSh_company());
					ps.setString(24, StrKit.isBlank(bean.getSh_address()) ? "" : bean.getSh_address());
					ps.setString(25, StrKit.isBlank(bean.getSh_zipcode()) ? "" : bean.getSh_zipcode());

					ps.setString(26, StrKit.isBlank(bean.getSh_city()) ? "" : bean.getSh_city());
					ps.setString(27, StrKit.isBlank(bean.getSh_deltaname()) ? "" : bean.getSh_deltaname());
					ps.setString(28, StrKit.isBlank(bean.getSh_country()) ? "" : bean.getSh_country());
					ps.setString(29, StrKit.isBlank(bean.getSh_telephone()) ? "" : bean.getSh_telephone());
					ps.setString(30, StrKit.isBlank(bean.getSh_fax()) ? "" : bean.getSh_fax());
					ps.setString(31, StrKit.isBlank(bean.getSh_name()) ? "" : bean.getSh_name());
					ps.setString(32, StrKit.isBlank(bean.getCo_company()) ? "" : bean.getCo_company());
					ps.setString(33, StrKit.isBlank(bean.getCo_address()) ? "" : bean.getCo_address());

					ps.setString(34, StrKit.isBlank(bean.getCo_zipcode()) ? "" : bean.getCo_zipcode());
					ps.setString(35, StrKit.isBlank(bean.getCo_city()) ? "" : bean.getCo_city());
					ps.setString(36, StrKit.isBlank(bean.getCo_deltaname()) ? "" : bean.getCo_deltaname());
					ps.setString(37, StrKit.isBlank(bean.getCo_country()) ? "" : bean.getCo_country());
					ps.setString(38, StrKit.isBlank(bean.getCo_telephone()) ? "" : bean.getCo_telephone());
					ps.setString(39, StrKit.isBlank(bean.getCo_fax()) ? "" : bean.getCo_fax());
					ps.setString(40, StrKit.isBlank(bean.getCo_name()) ? "" : bean.getCo_name());
					ps.setString(41, StrKit.isBlank(bean.getReach_station()) ? "" : bean.getReach_station());

					ps.setString(42, StrKit.isBlank(bean.getName_ofgoods()) ? "" : bean.getName_ofgoods());
					ps.setString(43, StrKit.isBlank(bean.getDelivery_station()) ? "" : bean.getDelivery_station());
					ps.setString(44, StrKit.isBlank(bean.getSh_provincecode()) ? "" : bean.getSh_provincecode());
					ps.setString(45, StrKit.isBlank(bean.getSh_provincename()) ? "" : bean.getSh_provincename());
					ps.setString(46, StrKit.isBlank(bean.getDe_number()) ? "" : bean.getDe_number());
					ps.setString(47, StrKit.isBlank(bean.getDe_weight()) ? "" : bean.getDe_weight());

					ps.setString(48, StrKit.isBlank(bean.getDe_chweight()) ? "" : bean.getDe_chweight());
					ps.setString(49, StrKit.isBlank(bean.getShpaeo()) ? "" : bean.getShpaeo());
					ps.setString(50, StrKit.isBlank(bean.getCneaeo()) ? "" : bean.getCneaeo());
					ps.setString(51, StrKit.isBlank(bean.getShpcusid()) ? "" : bean.getShpcusid());
					ps.setString(52, StrKit.isBlank(bean.getCnecusid()) ? "" : bean.getCnecusid());
					ps.setString(53, StrKit.isBlank(bean.getUnlodingcode()) ? "" : bean.getUnlodingcode());
					ps.setLong(54, bean.getId());

					return ps;
				}
			}, keyHolder);
			generatedId = keyHolder.getKey().longValue();
		} catch (Exception e) {
			System.err.println("保存主单失败:" + e.toString());
		}
		
		if(generatedId<1) {
			bean.setId(bean.getId()+1);
			saveMain(bean);
		}
		
		return generatedId;
	}

	@Override
	public long saveSub(PreparesecondaryEntity bean) {
		long generatedId = 0l;
		try {
			
			KeyHolder keyHolder = new GeneratedKeyHolder();
			this.jdbcTemplate.update(new PreparedStatementCreator() {
				public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
					StringBuilder sb = new StringBuilder();
					sb.append("insert into PREPARESECONDARY(");
					sb.append("FLIGHTNO,FLIGHTDATE,ORIGINATINGSTATION,DESTINATIONSTATION,WAYBILLNOMASTER,");
					sb.append("TOTALWEIGHT,TOTALPIECE,PREPAREPIECE,PREPAREWEIGHT,AGENTCOMPANYCODE,");
					sb.append("STOWAGEDATE,CARRIER,CUSTOMSSTATUS,PAYMODE,CUSTOMSCODE,AGENTMAN,AGENTCOMPANY,");
					sb.append("CREATEDATE,PRODUCTNAME,USER_ID,UNNUMBER,CATEGORY,SH_COMPANY,SH_ADDRESS,SH_ZIPCODE,");
					sb.append("SH_CITY,SH_DELTANAME,SH_COUNTRY,SH_TELEPHONE,SH_FAX,SH_NAME,CO_COMPANY,CO_ADDRESS,");
					sb.append("CO_ZIPCODE,CO_CITY,CO_DELTANAME,CO_COUNTRY,CO_TELEPHONE,CO_FAX,CO_NAME,REACH_STATION,");
					sb.append("NAME_OFGOODS,DELIVERY_STATION,SH_PROVINCECODE,SH_PROVINCENAME,DE_NUMBER,DE_WEIGHT,");
					sb.append(
							"DE_CHWEIGHT,SHPAEO,CNEAEO,SHPCUSID,CNECUSID,UNLODINGCODE,WAYBILLNOSECONDARY,PREPAREMASTERID,ID)");
					sb.append(
							" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");

					PreparedStatement ps = connection.prepareStatement(sb.toString(), new String[] { "ID" });
					ps.setString(1, bean.getFlightno());
					ps.setDate(2, new Date(bean.getFlightdate().getTime()));
					ps.setString(3, StrKit.isBlank(bean.getOriginatingstation()) ? "" : bean.getOriginatingstation());
					ps.setString(4, StrKit.isBlank(bean.getDestinationstation()) ? "" : bean.getDestinationstation());
					ps.setString(5, StrKit.isBlank(bean.getWaybillnomaster()) ? "" : bean.getWaybillnomaster());

					ps.setString(6, StrKit.isBlank(bean.getTotalweight()) ? "" : bean.getTotalweight());
					ps.setString(7, StrKit.isBlank(bean.getTotalpiece()) ? "" : bean.getTotalpiece());
					ps.setString(8, StrKit.isBlank(bean.getPreparepiece()) ? "" : bean.getPreparepiece());
					ps.setString(9, StrKit.isBlank(bean.getPrepareweight()) ? "" : bean.getPrepareweight());
					ps.setString(10, StrKit.isBlank(bean.getAgentcompanycode()) ? "" : bean.getAgentcompanycode());

					ps.setDate(11, new Date(bean.getStowagedate().getTime()));
					ps.setString(12, StrKit.isBlank(bean.getCarrier()) ? "" : bean.getCarrier());
					ps.setString(13, StrKit.isBlank(bean.getCustomsstatus()) ? "" : bean.getCustomsstatus());
					ps.setString(14, StrKit.isBlank(bean.getPaymode()) ? "" : bean.getPaymode());
					ps.setString(15, StrKit.isBlank(bean.getCustomscode()) ? "" : bean.getCustomscode());
					ps.setString(16, StrKit.isBlank(bean.getAgentman()) ? "" : bean.getAgentman());
					ps.setString(17, StrKit.isBlank(bean.getAgentcompany()) ? "" : bean.getAgentcompany());

					ps.setDate(18, new Date(bean.getCreatedate().getTime()));
					ps.setString(19, StrKit.isBlank(bean.getProductname()) ? "" : bean.getProductname());
					ps.setLong(20, bean.getCreator());
					ps.setString(21, StrKit.isBlank(bean.getUnnumber()) ? "" : bean.getUnnumber());
					ps.setString(22, StrKit.isBlank(bean.getCategory()) ? "" : bean.getCategory());
					ps.setString(23, StrKit.isBlank(bean.getSh_company()) ? "" : bean.getSh_company());
					ps.setString(24, StrKit.isBlank(bean.getSh_address()) ? "" : bean.getSh_address());
					ps.setString(25, StrKit.isBlank(bean.getSh_zipcode()) ? "" : bean.getSh_zipcode());

					ps.setString(26, StrKit.isBlank(bean.getSh_city()) ? "" : bean.getSh_city());
					ps.setString(27, StrKit.isBlank(bean.getSh_deltaname()) ? "" : bean.getSh_deltaname());
					ps.setString(28, StrKit.isBlank(bean.getSh_country()) ? "" : bean.getSh_country());
					ps.setString(29, StrKit.isBlank(bean.getSh_telephone()) ? "" : bean.getSh_telephone());
					ps.setString(30, StrKit.isBlank(bean.getSh_fax()) ? "" : bean.getSh_fax());
					ps.setString(31, StrKit.isBlank(bean.getSh_name()) ? "" : bean.getSh_name());
					ps.setString(32, StrKit.isBlank(bean.getCo_company()) ? "" : bean.getCo_company());
					ps.setString(33, StrKit.isBlank(bean.getCo_address()) ? "" : bean.getCo_address());

					ps.setString(34, StrKit.isBlank(bean.getCo_zipcode()) ? "" : bean.getCo_zipcode());
					ps.setString(35, StrKit.isBlank(bean.getCo_city()) ? "" : bean.getCo_city());
					ps.setString(36, StrKit.isBlank(bean.getCo_deltaname()) ? "" : bean.getCo_deltaname());
					ps.setString(37, StrKit.isBlank(bean.getCo_country()) ? "" : bean.getCo_country());
					ps.setString(38, StrKit.isBlank(bean.getCo_telephone()) ? "" : bean.getCo_telephone());
					ps.setString(39, StrKit.isBlank(bean.getCo_fax()) ? "" : bean.getCo_fax());
					ps.setString(40, StrKit.isBlank(bean.getCo_name()) ? "" : bean.getCo_name());
					ps.setString(41, StrKit.isBlank(bean.getReach_station()) ? "" : bean.getReach_station());

					ps.setString(42, StrKit.isBlank(bean.getName_ofgoods()) ? "" : bean.getName_ofgoods());
					ps.setString(43, StrKit.isBlank(bean.getDelivery_station()) ? "" : bean.getDelivery_station());
					ps.setString(44, StrKit.isBlank(bean.getSh_provincecode()) ? "" : bean.getSh_provincecode());
					ps.setString(45, StrKit.isBlank(bean.getSh_provincename()) ? "" : bean.getSh_provincename());
					ps.setString(46, StrKit.isBlank(bean.getDe_number()) ? "" : bean.getDe_number());
					ps.setString(47, StrKit.isBlank(bean.getDe_weight()) ? "" : bean.getDe_weight());

					ps.setString(48, StrKit.isBlank(bean.getDe_chweight()) ? "" : bean.getDe_chweight());
					ps.setString(49, StrKit.isBlank(bean.getShpaeo()) ? "" : bean.getShpaeo());
					ps.setString(50, StrKit.isBlank(bean.getCneaeo()) ? "" : bean.getCneaeo());
					ps.setString(51, StrKit.isBlank(bean.getShpcusid()) ? "" : bean.getShpcusid());
					ps.setString(52, StrKit.isBlank(bean.getCnecusid()) ? "" : bean.getCnecusid());
					ps.setString(53, StrKit.isBlank(bean.getUnlodingcode()) ? "" : bean.getUnlodingcode());
					ps.setString(54, StrKit.isBlank(bean.getWaybillnosecondary()) ? "" : bean.getWaybillnosecondary());
					ps.setLong(55, bean.getPreparemasterid());
					ps.setLong(56, bean.getId());

					return ps;
				}
			}, keyHolder);
			generatedId = keyHolder.getKey().longValue();
		} catch (Exception e) {
			logger.info("保存分单失败:" + e.toString());
		}
		
		if(generatedId<1) {
			bean.setId(bean.getId()+1);
			saveSub(bean);
		}
		
		return generatedId;
	}

	@Override
	public long getMasterId(String masterNo) {
		String sql = "select ID from MANIFEST WHERE ROWNUM<=1 and WAYBILLNOMASTER='" + masterNo + "'";
		return getId(sql);
	}

	@Override
	public long getMaxMasterId() {
		String sql = "select ID from MANIFEST WHERE ROWNUM<=1 order by ID desc";
		return getId(sql);
	}

	@Override
	public long getMaxSubId() {
		String sql = "select ID from PREPARESECONDARY WHERE ROWNUM<=1 order by ID desc";
		return getId(sql);
	}

	private long getId(String sql) {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		long id = 0;

		try {
			conn = this.jdbcTemplate.getDataSource().getConnection();
			conn.setAutoCommit(false);
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sql);
			if (rs != null) {
				while (rs.next()) {
					id = rs.getLong("ID");
				}
			}

			conn.commit();
		} catch (SQLException e) {
			try {
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
		} finally {
			try {
				if (conn != null) {
					conn.setAutoCommit(true);
				}

				if (rs != null) {
					rs.close();
				}

				if (stmt != null) {
					stmt.close();
				}

				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		return id;
	}

}