package com.ifp.inmanage.action;
import java.math.BigDecimal;
import com.ifp.core.context.BlogicContext;
import com.ifp.core.data.DataMap;
import com.ifp.core.exception.baseException;
import com.ifp.core.flow.action.AbstractAction;
public class JudgeLimitAmtAction extends AbstractAction {
@Override
public int execute(BlogicContext context, DataMap confMap) throws baseException {
// TODO Auto-generated method stub
DataMap dataMap = context.getDataMap();
String isWorkDayFlag = dataMap.getElementValue("isWorkDay");
// 非工作日待处理
if (isWorkDayFlag.equals("0")) {
dataMap.setElementValue("payStt", "3");
dataMap.setElementValue("resMsg", "非工作日设置交易状态为待处理");
dataMap.setElementValue("errorCode", "0");
return 0;
}
if (!isWorkDayFlag.equals("1")) {
dataMap.setElementValue("payStt", "0");
dataMap.setElementValue("resMsg", "非法输入isWorkDay字段");
return 0;
}
//操作员日累计限额,账户日累计限额,机构日累计限额判断
BigDecimal optDayLimit = new BigDecimal(dataMap.getElementValue("optDayLimit"));
BigDecimal accDayLimit = new BigDecimal(dataMap.getElementValue("accDayLimit"));
BigDecimal openBankDayLimit = new BigDecimal(dataMap.getElementValue("openBankDayLimit"));
BigDecimal amt = new BigDecimal(dataMap.getElementValue("amt"));
optDayLimit = optDayLimit.subtract(amt);
accDayLimit = accDayLimit.subtract(amt);
openBankDayLimit = openBankDayLimit.subtract(amt);
if (optDayLimit.compareTo(new BigDecimal("0")) == -1) {
dataMap.setElementValue("resMsg", "您本次提交的交易金额已超过用户的可操作的日累计限额,请核对交易金额后重新提交");
dataMap.setElementValue("errorCode", "3");
dataMap.setElementValue("payStt", "0");
return 0;
} else if (accDayLimit.compareTo(new BigDecimal("0")) == -1) {
dataMap.setElementValue("resMsg", "您本次提交的交易金额已超过账户的可操作日累计限额,请核对交易金额后重新提交");
dataMap.setElementValue("errorCode", "4");
dataMap.setElementValue("payStt", "0");
return 0;
} else if (openBankDayLimit.compareTo(new BigDecimal("0")) == -1) {
dataMap.setElementValue("resMsg", "您本次提交的交易金额已超过线上渠道开通机构的受理限额,请核对交易金额后重新提交,或详询客户经理");
dataMap.setElementValue("errorCode", "5");
dataMap.setElementValue("payStt", "0");
return 0;
}
//审核通关,处理日累计金额,后续流程更新表
dataMap.setElementValue("optDayLimit", optDayLimit.toString());
dataMap.setElementValue("accDayLimit", accDayLimit.toString());
dataMap.setElementValue("openBankDayLimit", openBankDayLimit.toString());
dataMap.setElementValue("errorCode", "0");
dataMap.setElementValue("resMsg", "审核已通过,更新交易状态");
dataMap.setElementValue("payStt", "1");
return 0;
}
}



