package com.sinosoft.lis.otof; import com.sinosoft.lis.i18n.I18nMessage; import com.sinosoft.lis.sql.repository.LDComSQL; import com.sinosoft.lis.sql.repository.LITranInfoSQL; import com.sinosoft.lis.vdb.LITranErrDBSet; import com.sinosoft.lis.vdb.LITranInfoDBSet; import com.sinosoft.lis.vdb.OFInterfaceDBSet; import com.sinosoft.lis.vschema.LITranErrSet; import com.sinosoft.lis.vschema.LITranInfoSet; import com.sinosoft.lis.vschema.OFInterfaceSet; import com.sinosoft.persistence.SQLProxy; import com.sinosoft.utility.CError; import com.sinosoft.utility.CErrors; import com.sinosoft.utility.DBConnPool; import com.sinosoft.utility.ExeSQL; import com.sinosoft.utility.SQLwithBindVariables; import com.sinosoft.utility.SSRS; import com.sinosoft.utility.VData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.sql.Connection; import java.sql.SQLException; /** *
Title: Web业务系统投保暂交费功能部分
*Description:
*Copyright: Copyright (c) 2002
*Company: Sinosoft< /p> * @author YT * @version 1.0 */ public class OtoFBLS { private static final Logger logger = LoggerFactory.getLogger(OtoFBLS.class); //传输数据类 private VData mInputData ; //错误处理类,每个需要错误处理的类中都放置该类 public CErrors mErrors = new CErrors(); public OtoFBLS() {} //传输数据的公共方法 public boolean submitData(VData cInputData,String cOperate) { boolean tReturn = false; //首先将数据在本类中做一个备份 mInputData=(VData)cInputData.clone() ; logger.debug("Start OtoF BLS Submit..."); if (!this.saveData()) return false; logger.debug("End OtoF BLS Submit..."); mInputData=null; return true; } private boolean saveData() { //增加并发控制 int tVoucherID = Integer.parseInt((String)mInputData.get(0)); String tManageCom = (String)mInputData.get(1); String tBussDate = (String)mInputData.get(2); LITranInfoSet mLITranInfoSet = new LITranInfoSet(); mLITranInfoSet = mInputData.get(LITranInfoSet.class,0); LITranErrSet mLITranErrSet = new LITranErrSet(); mLITranErrSet = mInputData.get(LITranErrSet.class,0); OFInterfaceSet mOFInterfaceSet = new OFInterfaceSet(); mOFInterfaceSet = mInputData.get(OFInterfaceSet.class,0); Connection conn = DBConnPool.getConnection(); if (conn==null) { // @@错误处理 CError tError = new CError(); tError.moduleName = "OtoFBLS"; tError.functionName = "saveData"; tError.errorMessage(new I18nMessage("数据库连接失败!", "LIS-06519")); this.mErrors .addOneError(tError); return false; } try { conn.setAutoCommit(false); //2008-8-18 排除业务员押金的控制 if(tVoucherID >= 10&& tVoucherID!=13 && tVoucherID!=82 && tVoucherID!=83) //控制销售系统凭证并发操作 { LDComSQL ldComSQL = SQLProxy.getInstance(LDComSQL.class); SQLwithBindVariables sqlbv=ldComSQL.findComCodeByComCodeLike(tManageCom); logger.debug("-----控制并发操作-----"); ExeSQL tExeSQL = new ExeSQL(conn); SSRS ssrs = (SSRS)tExeSQL.execSQL(sqlbv); if(tExeSQL.mErrors.needDealError() || ssrs.getMaxRow() <= 0) { CError.buildErr(this, new I18nMessage("资源忙,并发操作,请重新操作!", "LIS-12772")); conn.rollback() ; return false; } //校验此时当月的凭证是否已经有插入数据 LITranInfoSQL liTranInfoSQL = SQLProxy.getInstance(LITranInfoSQL.class); logger.debug("校验是否已生成数据:" + "select batchno from litraninfo " + "where voucherid = ?tVoucherID? and managecom like concat('?tManageCom?','%') " + "and bussdate = '?tBussDate?' "); SSRS tssrs = liTranInfoSQL.getBatchNoByVoucherIDAndManageComLikeAndBussDate(tVoucherID,tManageCom,tBussDate); if(tssrs.getMaxRow() > 0) { CError.buildErr(this, new I18nMessage("当月数据已经生成,请慎重操作!", "LIS-12773")); conn.rollback() ; return false; } } LITranInfoDBSet mLITranInfoDBSet = new LITranInfoDBSet(conn); mLITranInfoDBSet.set(mLITranInfoSet); if (mLITranInfoDBSet.insert() == false) { // @@错误处理 this.mErrors.copyAllErrors(mLITranInfoDBSet.mErrors); CError tError = new CError(); tError.moduleName = "OtoFBLS"; tError.functionName = "saveData"; tError.errorMessage(new I18nMessage("保存数据失败!", "LIS-07394")); this.mErrors .addOneError(tError); conn.rollback() ; return false; } LITranErrDBSet mLITranErrDBSet = new LITranErrDBSet(conn); mLITranErrDBSet.set(mLITranErrSet); if (mLITranErrDBSet.insert() == false) { // @@错误处理 this.mErrors.copyAllErrors(mLITranErrDBSet.mErrors); CError tError = new CError(); tError.moduleName = "OtoFBLS"; tError.functionName = "saveData"; tError.errorMessage(new I18nMessage("保存数据失败!", "LIS-07394")); this.mErrors .addOneError(tError); conn.rollback() ; return false; } if(mOFInterfaceSet != null) { OFInterfaceDBSet mOFInterfaceDBSet = new OFInterfaceDBSet(conn); mOFInterfaceDBSet.set(mOFInterfaceSet); if(mOFInterfaceDBSet.insert() == false) { // @@错误处理 this.mErrors.copyAllErrors(mOFInterfaceDBSet.mErrors); CError tError = new CError(); tError.moduleName = "OtoFBLS"; tError.functionName = "saveData"; tError.errorMessage(new I18nMessage("保存数据失败!", "LIS-07394")); this.mErrors .addOneError(tError); conn.rollback() ; return false; } } conn.commit() ; } // end of try catch (Exception ex) { // @@错误处理 CError tError = new CError(); tError.moduleName = "ReportBLS"; tError.functionName = "submitData"; tError.errorMessage(new I18nMessage( ex.toString(), null)); this.mErrors .addOneError(tError); try{ conn.rollback() ; } catch(Exception e){} return false; } finally { // 统一处理连接关闭 if (conn != null) { try { conn.close(); } catch (SQLException e) { logger.error("关闭数据库连接失败", e); } } } return true; } }