2018-06-03 22:26:41 +08:00

155 lines
4.6 KiB
Java

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<String,List<String>> hs = TransactionHelper.createCheckTransaction(transactionCode, relativeObject, document, bomanager);
if(!hs.isEmpty()){
List<String> warningMessage = hs.get("Warning");
List<String> 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(",", "");
}
}