package com.amarsoft.acct.accounting.web; import java.util.List; import java.util.Map; import com.amarsoft.app.als.workflow.action.InitializeFlow; import com.amarsoft.app.base.businessobject.BusinessObject; import com.amarsoft.app.base.businessobject.BusinessObjectManager; import com.amarsoft.app.base.config.impl.TransactionConfig; import com.amarsoft.app.base.trans.TransactionHelper; import com.amarsoft.app.base.util.BUSINESSOBJECT_CONSTANTS; import com.amarsoft.app.base.util.DateHelper; import com.amarsoft.are.jbo.JBOTransaction; import com.amarsoft.are.lang.StringX; /** * 创建一笔交易,并返回交易的流水号 * */ public class CreateTransaction { private String transactionCode;//交易代码 private String relativeObjectType;//对象类型 private String relativeObjectNo;//对象编号 private String reverseSerialNo;//反冲交易流水 private String transactionDate;//交易日期 private String userID;//操作用户 private String orgID;//操作机构 private String flowFlag;//是否创建流程 1 创建、0 不创建 private String channel;//渠道 暂时不用 public String getTransactionCode() { return transactionCode; } public void setTransactionCode(String transactionCode) { this.transactionCode = transactionCode; } public String getRelativeObjectType() { return relativeObjectType; } public void setRelativeObjectType(String relativeObjectType) { this.relativeObjectType = relativeObjectType; } public String getRelativeObjectNo() { return relativeObjectNo; } public void setRelativeObjectNo(String relativeObjectNo) { this.relativeObjectNo = relativeObjectNo; } public String getTransactionDate() { return transactionDate; } public void setTransactionDate(String transactionDate) { this.transactionDate = transactionDate; } public String getUserID() { return userID; } public void setUserID(String userID) { this.userID = userID; } public String getOrgID() { return orgID; } public void setOrgID(String orgID) { this.orgID = orgID; } public String getFlowFlag() { return flowFlag; } public void setFlowFlag(String flowFlag) { this.flowFlag = flowFlag; } public String getChannel() { return channel; } public void setChannel(String channel) { this.channel = channel; } public String getReverseSerialNo() { return reverseSerialNo; } public void setReverseSerialNo(String reverseSerialNo) { this.reverseSerialNo = reverseSerialNo; } public String createTransaction(JBOTransaction tx) throws Exception { if(StringX.isEmpty(flowFlag)) flowFlag = "1"; if(StringX.isEmpty(channel)) channel = "01";//如果没有传入值默认信贷系统 if(StringX.isEmpty(transactionDate)) transactionDate = DateHelper.getBusinessDate();//无指定交易日期,则默认为系统日期 BusinessObjectManager bomanager =BusinessObjectManager.createBusinessObjectManager(tx);//创建对象管理器 BusinessObject document = null; if(!StringX.isEmpty(reverseSerialNo)) { document = bomanager.keyLoadBusinessObject(BUSINESSOBJECT_CONSTANTS.transaction, reverseSerialNo); relativeObjectType = document.getString("RelativeObjectType"); relativeObjectNo = document.getString("RelativeObjectNo"); } BusinessObject relativeObject = bomanager.loadBusinessObject(relativeObjectType,"SerialNo",relativeObjectNo);//获取acct_loan对象 //创建交易检查 String warning = ","; String error = ","; Map> hs = TransactionHelper.createCheckTransaction(transactionCode, relativeObject, document, bomanager); if(!hs.isEmpty()){ List warningMessage = hs.get("Warning"); List errorMessage= hs.get("Error"); if(!errorMessage.isEmpty()){ for(String message:errorMessage) error = error+message; return "error@"+error.replaceFirst(",", ""); } if(!warningMessage.isEmpty()){ for(String message:warningMessage) warning = warning+message; } } BusinessObject transaction = TransactionHelper.createTransaction(transactionCode, document, relativeObject, userID, orgID, transactionDate, bomanager); bomanager.updateDB(); //初始化流程信息 BusinessObject transactionDef = TransactionConfig.getTransactionConfig(transactionCode); String flowNo = transactionDef.getString("FlowNo"); String applyType = transactionDef.getString("ApplyType"); if(applyType == null || "".equals(applyType)) applyType = "TransactionApply"; if(flowNo==null||flowNo.length()==0||flowFlag.equals("2")){ return "true@"+ transaction.getKeyString()+"@warning@"+warning.replaceFirst(",", ""); } else{ InitializeFlow.initFlowData(tx, transaction.getKeyString(), "TransactionApply", applyType, flowNo,null, userID); } return "true@"+ transaction.getKeyString()+"@warning@"+warning.replaceFirst(",", ""); } }