5921 lines
312 KiB
Java
5921 lines
312 KiB
Java
|
/*
|
|||
|
*
|
|||
|
* Copyright (c) 2001-2016 泛微软件.
|
|||
|
* 泛微协同商务系统,版权所有.
|
|||
|
*
|
|||
|
*/
|
|||
|
package weaver.fna.general;
|
|||
|
|
|||
|
import java.io.ByteArrayInputStream;
|
|||
|
import java.io.ByteArrayOutputStream;
|
|||
|
import java.io.ObjectInputStream;
|
|||
|
import java.io.ObjectOutputStream;
|
|||
|
import java.io.UnsupportedEncodingException;
|
|||
|
import java.io.Writer;
|
|||
|
import java.text.DecimalFormat;
|
|||
|
import java.util.ArrayList;
|
|||
|
import java.util.Arrays;
|
|||
|
import java.util.HashMap;
|
|||
|
import java.util.Hashtable;
|
|||
|
import java.util.Iterator;
|
|||
|
import java.util.List;
|
|||
|
import java.util.Map;
|
|||
|
import java.util.Random;
|
|||
|
import java.util.UUID;
|
|||
|
import java.util.regex.Matcher;
|
|||
|
import java.util.regex.Pattern;
|
|||
|
|
|||
|
import javax.servlet.http.HttpServletRequest;
|
|||
|
import javax.servlet.http.HttpSession;
|
|||
|
|
|||
|
import oracle.sql.CLOB;
|
|||
|
|
|||
|
import org.apache.commons.io.IOUtils;
|
|||
|
import org.apache.commons.lang.StringEscapeUtils;
|
|||
|
|
|||
|
import weaver.conn.BatchRecordSet;
|
|||
|
import weaver.conn.ConnStatement;
|
|||
|
import weaver.conn.RecordSet;
|
|||
|
import weaver.fna.budget.BudgetApproveWFHandler;
|
|||
|
import weaver.fna.budget.BudgetHandler;
|
|||
|
import weaver.fna.budget.FnaFeeWfInfoComInfo;
|
|||
|
import weaver.fna.budget.FnaWfMultiSet;
|
|||
|
import weaver.fna.budget.FnaWfMultiSetFieldInfo;
|
|||
|
import weaver.fna.budget.FnaTableNameEnum;
|
|||
|
import weaver.fna.budget.FnaWfSet;
|
|||
|
import weaver.fna.budget.FnaWfSetCache;
|
|||
|
import weaver.fna.encrypt.Des;
|
|||
|
import weaver.fna.encrypt.RSAUtils;
|
|||
|
import weaver.fna.invoice.common.FnaInvoiceCommon;
|
|||
|
import weaver.fna.maintenance.BudgetfeeTypeComInfo;
|
|||
|
import weaver.fna.maintenance.FnaAdvanceAmountControl;
|
|||
|
import weaver.fna.maintenance.FnaAmountControl;
|
|||
|
import weaver.fna.maintenance.FnaBorrowAmountControl;
|
|||
|
import weaver.fna.maintenance.FnaChangeAmountControl;
|
|||
|
import weaver.fna.maintenance.FnaCostCenter;
|
|||
|
import weaver.fna.maintenance.FnaShareAmountControl;
|
|||
|
import weaver.fna.maintenance.FnaSplitTableByYearComInfo;
|
|||
|
import weaver.fna.maintenance.FnaSystemSetComInfo;
|
|||
|
import weaver.general.BaseBean;
|
|||
|
import weaver.general.TimeUtil;
|
|||
|
import weaver.general.Util;
|
|||
|
import weaver.hrm.User;
|
|||
|
import weaver.hrm.UserManager;
|
|||
|
import weaver.hrm.company.DepartmentComInfo;
|
|||
|
import weaver.hrm.company.SubCompanyComInfo;
|
|||
|
import weaver.hrm.resource.ResourceComInfo;
|
|||
|
import weaver.interfaces.workflow.action.FnaAdvanceEffectNew;
|
|||
|
import weaver.interfaces.workflow.action.FnaAdvanceReverseNew;
|
|||
|
import weaver.interfaces.workflow.action.FnaBorrowEffectNew;
|
|||
|
import weaver.interfaces.workflow.action.FnaBorrowReverseNew;
|
|||
|
import weaver.interfaces.workflow.action.FnaChangeEffectNew;
|
|||
|
import weaver.interfaces.workflow.action.FnaShareEffectNew;
|
|||
|
import weaver.interfaces.workflow.action.WorkflowFnaEffectNew;
|
|||
|
import weaver.interfaces.workflow.action.WorkflowFnaInWorkflowNew;
|
|||
|
import weaver.security.util.SecurityMethodUtil;
|
|||
|
import weaver.soa.workflow.request.RequestInfo;
|
|||
|
import weaver.soa.workflow.request.RequestService;
|
|||
|
import weaver.systeminfo.SysMaintenanceLog;
|
|||
|
import weaver.systeminfo.SystemEnv;
|
|||
|
import weaver.workflow.html.WFLayoutToHtml;
|
|||
|
import weaver.workflow.workflow.WorkflowVersion;
|
|||
|
|
|||
|
import com.engine.fnaMulDimensions.biz.FnaExpenseInfoBiz;
|
|||
|
import com.engine.fnaMulDimensions.biz.TemplateFillReportBiz;
|
|||
|
import com.engine.fnaMulDimensions.biz.TemplateFillReportBizNew;
|
|||
|
import com.engine.fnaMulDimensions.biz.action.FnaFreezeBudget;
|
|||
|
import com.engine.fnaMulDimensions.biz.action.FnaReleaseBudget;
|
|||
|
import com.engine.fnaMulDimensions.util.FnaReimbursementUtils;
|
|||
|
import com.engine.fnaMulDimensions.util.FnaWorkflowSetUtils;
|
|||
|
import com.engine.fnaMulDimensions.util.FnaWorkflowUtil;
|
|||
|
|
|||
|
/**
|
|||
|
* 预算通用工具类
|
|||
|
*
|
|||
|
* @author 无聊的ck
|
|||
|
*/
|
|||
|
public class FnaCommon extends BaseBean {
|
|||
|
/**
|
|||
|
* 获取ip地址
|
|||
|
*
|
|||
|
* @param request
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String getRemoteAddr(HttpServletRequest request) {
|
|||
|
String ip = "";
|
|||
|
try {
|
|||
|
ip = request.getHeader("x-forwarded-for");
|
|||
|
} catch (Exception e) {
|
|||
|
}
|
|||
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|||
|
try {
|
|||
|
ip = request.getHeader("Proxy-Client-IP");
|
|||
|
} catch (Exception e) {
|
|||
|
}
|
|||
|
}
|
|||
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|||
|
try {
|
|||
|
ip = request.getHeader("WL-Proxy-Client-IP");
|
|||
|
} catch (Exception e) {
|
|||
|
}
|
|||
|
}
|
|||
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|||
|
try {
|
|||
|
ip = request.getRemoteAddr();
|
|||
|
} catch (Exception e) {
|
|||
|
}
|
|||
|
}
|
|||
|
return ip;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 加载流程html模板页面的流程的费用相关信息
|
|||
|
*
|
|||
|
* @param formid
|
|||
|
* @param workflowid
|
|||
|
* @param requestid
|
|||
|
* @param otherPara_hs 传入WFLayoutToHtml的同名变量
|
|||
|
*/
|
|||
|
public void loadWFLayoutToHtmlFnaInfo(int formid, int workflowid, int requestid, Hashtable otherPara_hs) {
|
|||
|
|
|||
|
|
|||
|
String sql = "";
|
|||
|
RecordSet rs = new RecordSet();
|
|||
|
|
|||
|
//启用多明细表报销
|
|||
|
int fnaWfTypeMultiReim = 0;
|
|||
|
sql = "select * from fnaFeeWfInfo where workflowid = " + workflowid;
|
|||
|
rs.executeQuery(sql);
|
|||
|
if (rs.next()) {
|
|||
|
fnaWfTypeMultiReim = rs.getInt("fnaWfTypeMultiReim");
|
|||
|
}
|
|||
|
//启用多明细表报销,开关开启:当前流程的任意明细表都 【 可以用于也仅可以用于 】 费用报销;不再支持"还款,预付款冲销"功能;
|
|||
|
if (fnaWfTypeMultiReim == 1) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
String _key01 = "_isEnableFnaWfHm_FnaCommon.getIsEnableFnaWfHm_workflowid=" + workflowid + "__requestId=" + requestid;
|
|||
|
HashMap<String, String> _isEnableFnaWfHm = new HashMap<String, String>();
|
|||
|
if (otherPara_hs.containsKey(_key01)) {
|
|||
|
_isEnableFnaWfHm = (HashMap<String, String>) otherPara_hs.get(_key01);
|
|||
|
} else {
|
|||
|
_isEnableFnaWfHm = FnaCommon.getIsEnableFnaWfHm(workflowid);
|
|||
|
otherPara_hs.put(_key01, _isEnableFnaWfHm);
|
|||
|
}
|
|||
|
|
|||
|
boolean isEnableFnaWfE8 = "true".equals(_isEnableFnaWfHm.get("isEnableFnaWfE8"));
|
|||
|
boolean isEnableFnaChangeWf = "true".equals(_isEnableFnaWfHm.get("isEnableFnaChangeWf"));
|
|||
|
boolean isEnableFnaShareWf = "true".equals(_isEnableFnaWfHm.get("isEnableFnaShareWf"));
|
|||
|
boolean isEnableFnaBorrowWf = "true".equals(_isEnableFnaWfHm.get("isEnableFnaBorrowWf"));
|
|||
|
boolean isEnableFnaRepaymentWf = "true".equals(_isEnableFnaWfHm.get("isEnableFnaRepaymentWf"));
|
|||
|
boolean enableRepayment = "true".equals(_isEnableFnaWfHm.get("enableRepayment"));
|
|||
|
boolean isEnableFnaAdvanceWf = "true".equals(_isEnableFnaWfHm.get("isEnableFnaAdvanceWf"));
|
|||
|
boolean enableReverseAdvance = "true".equals(_isEnableFnaWfHm.get("enableReverseAdvance"));
|
|||
|
|
|||
|
if (isEnableFnaWfE8 || isEnableFnaChangeWf || isEnableFnaShareWf || isEnableFnaBorrowWf || isEnableFnaRepaymentWf || isEnableFnaAdvanceWf) {
|
|||
|
|
|||
|
//读取财务相关流程字段对应关系
|
|||
|
String _key001 = "_isEnableFnaWfHm_fnaBudgetControl.getFnaWfFieldInfo4Expense_workflowid=" + workflowid + "__requestId=" + requestid;
|
|||
|
Map<String, String> fnaWfSetMap = null;
|
|||
|
if (otherPara_hs.containsKey(_key001)) {
|
|||
|
fnaWfSetMap = (HashMap<String, String>) otherPara_hs.get(_key001);
|
|||
|
} else {
|
|||
|
fnaWfSetMap = new HashMap<String, String>();
|
|||
|
FnaCommon.getFnaWfFieldInfo4Expense(workflowid, fnaWfSetMap);
|
|||
|
otherPara_hs.put(_key001, fnaWfSetMap);
|
|||
|
}
|
|||
|
|
|||
|
//读取费用报销流程、预算变更流程、费用分摊流程,第1个明细表中的数据库中的记录
|
|||
|
if (isEnableFnaWfE8 || isEnableFnaChangeWf || isEnableFnaShareWf) {
|
|||
|
String _key002 = "_isEnableFnaWfHm_FnaCommon.qryFnaExpenseRequestRecord_workflowid=" + workflowid + "__requestId=" + requestid;
|
|||
|
if (!otherPara_hs.containsKey(_key002)) {
|
|||
|
HashMap<String, HashMap<String, String>> reqDataMap = FnaCommon.qryFnaExpenseRequestRecord(requestid, formid, fnaWfSetMap,
|
|||
|
isEnableFnaWfE8, isEnableFnaChangeWf, isEnableFnaShareWf);
|
|||
|
otherPara_hs.put(_key002, reqDataMap);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//读取费用报销流程,写入费用表的数据库中的记录
|
|||
|
if (isEnableFnaWfE8) {
|
|||
|
String _key002 = "_isEnableFnaWfHm_FnaCommon.qryFnaExpenseInfoAllRowRecordHm_workflowid=" + workflowid + "__requestId=" + requestid;
|
|||
|
if (!otherPara_hs.containsKey(_key002)) {
|
|||
|
HashMap<String, HashMap<String, String>> reqFnaExpenseDataMap = FnaCommon.qryFnaExpenseInfoAllRowRecordHm(requestid);
|
|||
|
otherPara_hs.put(_key002, reqFnaExpenseDataMap);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//读取费用报销流程、还款流程,第2个明细表中的数据库中的记录
|
|||
|
if ((isEnableFnaWfE8 && enableRepayment) || isEnableFnaRepaymentWf) {
|
|||
|
String _key002 = "_isEnableFnaWfHm_FnaCommon.qryFnaRepaymentRequestRecord_workflowid=" + workflowid + "__requestId=" + requestid;
|
|||
|
if (!otherPara_hs.containsKey(_key002)) {
|
|||
|
HashMap<String, HashMap<String, String>> reqRepaymentDataMap = FnaCommon.qryFnaRepaymentRequestRecord(requestid, formid, fnaWfSetMap);
|
|||
|
otherPara_hs.put(_key002, reqRepaymentDataMap);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//读取费用报销流程,第4个明细表中的数据库中的记录
|
|||
|
if ((isEnableFnaWfE8 && enableReverseAdvance)) {
|
|||
|
String _key002 = "_isEnableFnaWfHm_FnaCommon.qryFnaReverseAdvanceRequestRecord_workflowid=" + workflowid + "__requestId=" + requestid;
|
|||
|
if (!otherPara_hs.containsKey(_key002)) {
|
|||
|
HashMap<String, HashMap<String, String>> reqRepaymentDataMap = FnaCommon.qryFnaReverseAdvanceRequestRecord(requestid, formid, fnaWfSetMap);
|
|||
|
otherPara_hs.put(_key002, reqRepaymentDataMap);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取新建流程流程,流程表单对应费用承担主体类型字段的默认值(节点前附加操作/选择框默认值)
|
|||
|
*
|
|||
|
* @param workflowid
|
|||
|
* @param ortType_fieldid 流程表单对应费用承担主体类型字段的字段id
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static int getOrtTypeFieldidDefaultSelectValue(int workflowid, int ortType_fieldid) {
|
|||
|
int organizationtype = -1;
|
|||
|
RecordSet rs_fna = new RecordSet();
|
|||
|
|
|||
|
if (organizationtype < 0) {
|
|||
|
String sql2 = "select a.customervalue from workflow_addinoperate a " +
|
|||
|
" where a.fieldop1id = 0 and a.fieldop2id = 0 and a.operation = 0 " +
|
|||
|
" and a.workflowid = " + workflowid + " and a.fieldid = " + ortType_fieldid + " ";
|
|||
|
//_bb.writeLog("sql2 01="+sql2);
|
|||
|
rs_fna.executeSql(sql2);
|
|||
|
if (rs_fna.next()) {
|
|||
|
organizationtype = rs_fna.getInt("customervalue");
|
|||
|
}
|
|||
|
}
|
|||
|
if (organizationtype < 0) {
|
|||
|
String sql2 = "select a.* from workflow_SelectItem a " +
|
|||
|
" where a.cancel = 0 and a.isdefault = 'y' and a.fieldid = " + ortType_fieldid + " " +
|
|||
|
" order by a.selectvalue asc";
|
|||
|
rs_fna.executeSql(sql2);
|
|||
|
if (rs_fna.next()) {
|
|||
|
organizationtype = rs_fna.getInt("selectvalue");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return organizationtype;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获得GUID,数据库方式生成
|
|||
|
*
|
|||
|
* @param dBType 数据库类型,目前只支持oracle和sqlServer
|
|||
|
* @return 32位长度,无符号-,其中英文字符随机大小写
|
|||
|
*/
|
|||
|
public static String getPrimaryKeyGuid1SqlStr(String dBType) {
|
|||
|
String guid1SQlStr = "replace(newid(),'-','')";
|
|||
|
if ("oracle".equalsIgnoreCase(dBType)) {
|
|||
|
guid1SQlStr = "SYS_GUID()";
|
|||
|
} else if ("mysql".equalsIgnoreCase(dBType)) {
|
|||
|
guid1SQlStr = "replace(uuid(),'-','')";
|
|||
|
} else if ("dm".equalsIgnoreCase(dBType)) {
|
|||
|
guid1SQlStr = "replace(SYS_GUID(),'0x','')";
|
|||
|
}
|
|||
|
return guid1SQlStr;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* 获取自定义费控流程流程的字段对应关系Map对象
|
|||
|
*
|
|||
|
* @param workflowid
|
|||
|
* @param dataMap 自定义费控流程流程的字段对应关系Map对象
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String getFnaWfFieldInfo4Expense(int workflowid, Map<String, String> dataMap) {
|
|||
|
String fnaWfType = "";
|
|||
|
String sql = "";
|
|||
|
RecordSet rs = new RecordSet();
|
|||
|
|
|||
|
//启用多明细表报销
|
|||
|
int fnaWfTypeMultiReim = 0;
|
|||
|
sql = "select * from fnaFeeWfInfo where workflowid = " + workflowid;
|
|||
|
rs.executeSql(sql);
|
|||
|
if (rs.next()) {
|
|||
|
fnaWfTypeMultiReim = rs.getInt("fnaWfTypeMultiReim");
|
|||
|
fnaWfType = Util.null2String(rs.getString("fnaWfType"));
|
|||
|
}
|
|||
|
//启用多明细表报销,开关开启:当前流程的任意明细表都 【 可以用于也仅可以用于 】 费用报销;不再支持"还款,预付款冲销"功能;
|
|||
|
if (fnaWfTypeMultiReim == 1) {
|
|||
|
return fnaWfType;
|
|||
|
}
|
|||
|
|
|||
|
//从缓存中加载-自定义费控流程流程的字段对应关系Map对象
|
|||
|
|
|||
|
//考虑到集群环境,屏蔽从缓存加载字段对应信息
|
|||
|
if (false) {//FnaWfSetCache.loadFnaWfFieldSetMap(workflowid, dataMap)
|
|||
|
fnaWfType = dataMap.get("fnaWfType");
|
|||
|
} else {
|
|||
|
sql = "select a.fieldType,a.fieldId,a.dtlNumber,b.fieldname,c.fnaWfType,d.formid, b.fieldhtmltype, b.type, b.detailtable, " +
|
|||
|
" a.isWfFieldLinkage, a.automaticTake, a.controlBorrowingWf, a.controlflowSubmission " +
|
|||
|
" from fnaFeeWfInfoField a " +
|
|||
|
" join workflow_billfield b on a.fieldId=b.id " +
|
|||
|
" join fnaFeeWfInfo c on a.mainId = c.id " +
|
|||
|
" join workflow_base d on a.workflowid = d.id " +
|
|||
|
" where a.workflowid = ?";
|
|||
|
rs.executeQuery(sql, workflowid);
|
|||
|
while (rs.next()) {
|
|||
|
String fieldType = Util.null2String(rs.getString("fieldType"));
|
|||
|
String fieldId = Util.null2String(rs.getString("fieldId"));
|
|||
|
String dtlNumber = Util.null2String(rs.getString("dtlNumber"));
|
|||
|
String fieldName = Util.null2String(rs.getString("fieldname"));
|
|||
|
fnaWfType = Util.null2String(rs.getString("fnaWfType"));
|
|||
|
String formid = Util.getIntValue(rs.getString("formid"), 0) + "";
|
|||
|
String fieldhtmltype = Util.null2String(rs.getString("fieldhtmltype"));
|
|||
|
String type = Util.null2String(rs.getString("type"));
|
|||
|
String _detailtable = Util.null2String(rs.getString("detailtable"));
|
|||
|
int is_detailtable = "".equals(_detailtable) ? 0 : 1;
|
|||
|
int isWfFieldLinkage = Util.getIntValue(rs.getString("isWfFieldLinkage"), 0);
|
|||
|
int automaticTake = Util.getIntValue(rs.getString("automaticTake"), 0);
|
|||
|
String controlBorrowingWf = Util.null2String(rs.getString("controlBorrowingWf")).trim();
|
|||
|
int controlflowSubmission = Util.getIntValue(rs.getString("controlflowSubmission"), 1);
|
|||
|
|
|||
|
dataMap.put("formid", formid);
|
|||
|
dataMap.put("fnaWfType", fnaWfType);
|
|||
|
|
|||
|
if ("fnaFeeWf".equals(fnaWfType)) {//报销流程
|
|||
|
String fieldIdSubject_isDtl = "1";
|
|||
|
String fieldIdOrgType_isDtl = "1";
|
|||
|
String fieldIdOrgId_isDtl = "1";
|
|||
|
String fieldIdOccurdate_isDtl = "1";
|
|||
|
|
|||
|
if (Util.getIntValue(dtlNumber) == 0) {
|
|||
|
if (Util.getIntValue(fieldType) == 1) {
|
|||
|
dataMap.put("main_fieldIdSqr_fieldId", fieldId);
|
|||
|
dataMap.put("main_fieldIdSqr_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "main_fieldIdSqr_fieldId");
|
|||
|
dataMap.put("main_fieldIdSqr_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("main_fieldIdSqr_type", type);
|
|||
|
dataMap.put("main_fieldIdSqr_controlBorrowingWf", controlBorrowingWf);//还款流程中通过申请人字段控制可选择的借款流程
|
|||
|
} else if (Util.getIntValue(fieldType) == 2) {
|
|||
|
dataMap.put("main_fieldIdFysqlc_fieldId", fieldId);
|
|||
|
dataMap.put("main_fieldIdFysqlc_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "main_fieldIdFysqlc_fieldId");
|
|||
|
dataMap.put("main_fieldIdFysqlc_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("main_fieldIdFysqlc_type", type);
|
|||
|
if (Util.getIntValue(fieldId) > 0) {
|
|||
|
dataMap.put("haveApplicationBudget", "true");
|
|||
|
} else {
|
|||
|
dataMap.put("haveApplicationBudget", "false");
|
|||
|
}
|
|||
|
dataMap.put("main_fieldIdFysqlc_isWfFieldLinkage", String.valueOf(isWfFieldLinkage));
|
|||
|
dataMap.put("main_fieldIdFysqlc_controlflowSubmission", String.valueOf(controlflowSubmission));
|
|||
|
} else if (Util.getIntValue(fieldType) == 3) {
|
|||
|
dataMap.put("main_fieldIdSfbxwc_fieldId", fieldId);
|
|||
|
dataMap.put("main_fieldIdSfbxwc_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "main_fieldIdSfbxwc_fieldId");
|
|||
|
dataMap.put("main_fieldIdSfbxwc_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("main_fieldIdSfbxwc_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 4) {
|
|||
|
dataMap.put("main_fieldIdYfkZfHj_fieldId", fieldId);
|
|||
|
dataMap.put("main_fieldIdYfkZfHj_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "main_fieldIdYfkZfHj_fieldId");
|
|||
|
dataMap.put("main_fieldIdYfkZfHj_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("main_fieldIdYfkZfHj_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 5) {
|
|||
|
dataMap.put("main_fieldIdSfysn_fieldId", fieldId);
|
|||
|
dataMap.put("main_fieldIdSfysn_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "main_fieldIdSfysn_fieldId");
|
|||
|
dataMap.put("main_fieldIdSfysn_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("main_fieldIdSfysn_type", type);
|
|||
|
}
|
|||
|
} else if (Util.getIntValue(dtlNumber) == 1) {
|
|||
|
if (Util.getIntValue(fieldType) == 1) {
|
|||
|
dataMap.put("fieldIdSubject_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdSubject_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdSubject_fieldId");
|
|||
|
dataMap.put("fieldIdSubject_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdSubject_type", type);
|
|||
|
fieldIdSubject_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdSubject_fieldId_isDtl", fieldIdSubject_isDtl);
|
|||
|
} else if (Util.getIntValue(fieldType) == 2) {
|
|||
|
dataMap.put("fieldIdOrgType_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdOrgType_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdOrgType_fieldId");
|
|||
|
dataMap.put("fieldIdOrgType_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdOrgType_type", type);
|
|||
|
fieldIdOrgType_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdOrgType_fieldId_isDtl", fieldIdOrgType_isDtl);
|
|||
|
dataMap.put("fieldIdOrgType_defaultSelectValue", FnaCommon.getOrtTypeFieldidDefaultSelectValue(workflowid, Util.getIntValue(fieldId)) + "");
|
|||
|
} else if (Util.getIntValue(fieldType) == 3) {
|
|||
|
dataMap.put("fieldIdOrgId_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdOrgId_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdOrgId_fieldId");
|
|||
|
dataMap.put("fieldIdOrgId_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdOrgId_type", type);
|
|||
|
fieldIdOrgId_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdOrgId_fieldId_isDtl", fieldIdOrgId_isDtl);
|
|||
|
dataMap.put("fieldIdOrgId_automaticTake", String.valueOf(automaticTake));
|
|||
|
} else if (Util.getIntValue(fieldType) == 4) {
|
|||
|
dataMap.put("fieldIdOccurdate_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdOccurdate_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdOccurdate_fieldId");
|
|||
|
dataMap.put("fieldIdOccurdate_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdOccurdate_type", type);
|
|||
|
fieldIdOccurdate_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdOccurdate_fieldId_isDtl", fieldIdOccurdate_isDtl);
|
|||
|
} else if (Util.getIntValue(fieldType) == 5) {
|
|||
|
dataMap.put("fieldIdAmount_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdAmount_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdAmount_fieldId");
|
|||
|
dataMap.put("fieldIdAmount_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdAmount_type", type);
|
|||
|
dataMap.put("fieldIdAmount_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 6) {
|
|||
|
dataMap.put("fieldIdHrmInfo_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdHrmInfo_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdHrmInfo_fieldId");
|
|||
|
dataMap.put("fieldIdHrmInfo_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdHrmInfo_type", type);
|
|||
|
dataMap.put("fieldIdHrmInfo_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 7) {
|
|||
|
dataMap.put("fieldIdDepInfo_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdDepInfo_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdDepInfo_fieldId");
|
|||
|
dataMap.put("fieldIdDepInfo_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdDepInfo_type", type);
|
|||
|
dataMap.put("fieldIdDepInfo_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 8) {
|
|||
|
dataMap.put("fieldIdSubInfo_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdSubInfo_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdSubInfo_fieldId");
|
|||
|
dataMap.put("fieldIdSubInfo_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdSubInfo_type", type);
|
|||
|
dataMap.put("fieldIdSubInfo_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 9) {
|
|||
|
dataMap.put("fieldIdFccInfo_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdFccInfo_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdFccInfo_fieldId");
|
|||
|
dataMap.put("fieldIdFccInfo_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdFccInfo_type", type);
|
|||
|
dataMap.put("fieldIdFccInfo_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 1000) {
|
|||
|
dataMap.put("fieldIdReqId_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdReqId_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdReqId_fieldId");
|
|||
|
dataMap.put("fieldIdReqId_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdReqId_type", type);
|
|||
|
dataMap.put("fieldIdReqId_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 1010) {
|
|||
|
dataMap.put("fieldIdReqDtId_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdReqDtId_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdReqDtId_fieldId");
|
|||
|
dataMap.put("fieldIdReqDtId_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdReqDtId_type", type);
|
|||
|
dataMap.put("fieldIdReqDtId_fieldId_isDtl", "" + is_detailtable);
|
|||
|
}
|
|||
|
} else if (Util.getIntValue(dtlNumber) == 2) {
|
|||
|
if (Util.getIntValue(fieldType) == 1) {
|
|||
|
dataMap.put("dt2_fieldIdJklc_fieldId", fieldId);
|
|||
|
dataMap.put("dt2_fieldIdJklc_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdJklc_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdJklc_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdJklc_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 2) {
|
|||
|
dataMap.put("dt2_fieldIdJkdh_fieldId", fieldId);
|
|||
|
dataMap.put("dt2_fieldIdJkdh_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdJkdh_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdJkdh_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdJkdh_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 3) {
|
|||
|
dataMap.put("dt2_fieldIdDnxh_fieldId", fieldId);
|
|||
|
dataMap.put("dt2_fieldIdDnxh_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdDnxh_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdDnxh_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdDnxh_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 4) {
|
|||
|
dataMap.put("dt2_fieldIdJkje_fieldId", fieldId);
|
|||
|
dataMap.put("dt2_fieldIdJkje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdJkje_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdJkje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdJkje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 5) {
|
|||
|
dataMap.put("dt2_fieldIdYhje_fieldId", fieldId);
|
|||
|
dataMap.put("dt2_fieldIdYhje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdYhje_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdYhje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdYhje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 6) {
|
|||
|
dataMap.put("dt2_fieldIdSpzje_fieldId", fieldId);
|
|||
|
dataMap.put("dt2_fieldIdSpzje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdSpzje_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdSpzje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdSpzje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 7) {
|
|||
|
dataMap.put("dt2_fieldIdWhje_fieldId", fieldId);
|
|||
|
dataMap.put("dt2_fieldIdWhje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdWhje_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdWhje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdWhje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 8) {
|
|||
|
dataMap.put("dt2_fieldIdCxje_fieldId", fieldId);
|
|||
|
dataMap.put("dt2_fieldIdCxje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdCxje_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdCxje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdCxje_type", type);
|
|||
|
}
|
|||
|
} else if (Util.getIntValue(dtlNumber) == 3) {
|
|||
|
if (Util.getIntValue(fieldType) == 1) {
|
|||
|
dataMap.put("dt3_fieldIdSkfs_fieldId", fieldId);
|
|||
|
dataMap.put("dt3_fieldIdSkfs_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt3_fieldIdSkfs_fieldId");
|
|||
|
dataMap.put("dt3_fieldIdSkfs_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt3_fieldIdSkfs_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 2) {
|
|||
|
dataMap.put("dt3_fieldIdSkje_fieldId", fieldId);
|
|||
|
dataMap.put("dt3_fieldIdSkje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt3_fieldIdSkje_fieldId");
|
|||
|
dataMap.put("dt3_fieldIdSkje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt3_fieldIdSkje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 3) {
|
|||
|
dataMap.put("dt3_fieldIdKhyh_fieldId", fieldId);
|
|||
|
dataMap.put("dt3_fieldIdKhyh_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt3_fieldIdKhyh_fieldId");
|
|||
|
dataMap.put("dt3_fieldIdKhyh_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt3_fieldIdKhyh_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 4) {
|
|||
|
dataMap.put("dt3_fieldIdHuming_fieldId", fieldId);
|
|||
|
dataMap.put("dt3_fieldIdHuming_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt3_fieldIdHuming_fieldId");
|
|||
|
dataMap.put("dt3_fieldIdHuming_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt3_fieldIdHuming_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 5) {
|
|||
|
dataMap.put("dt3_fieldIdSkzh_fieldId", fieldId);
|
|||
|
dataMap.put("dt3_fieldIdSkzh_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt3_fieldIdSkzh_fieldId");
|
|||
|
dataMap.put("dt3_fieldIdSkzh_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt3_fieldIdSkzh_type", type);
|
|||
|
}
|
|||
|
} else if (Util.getIntValue(dtlNumber) == 4) {
|
|||
|
if (Util.getIntValue(fieldType) == 1) {
|
|||
|
dataMap.put("dt4_fieldIdYfklc_fieldId", fieldId);
|
|||
|
dataMap.put("dt4_fieldIdYfklc_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt4_fieldIdYfklc_fieldId");
|
|||
|
dataMap.put("dt4_fieldIdYfklc_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt4_fieldIdYfklc_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 2) {
|
|||
|
dataMap.put("dt4_fieldIdYfkdh_fieldId", fieldId);
|
|||
|
dataMap.put("dt4_fieldIdYfkdh_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt4_fieldIdYfkdh_fieldId");
|
|||
|
dataMap.put("dt4_fieldIdYfkdh_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt4_fieldIdYfkdh_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 3) {
|
|||
|
dataMap.put("dt4_fieldIdDnxh_fieldId", fieldId);
|
|||
|
dataMap.put("dt4_fieldIdDnxh_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt4_fieldIdDnxh_fieldId");
|
|||
|
dataMap.put("dt4_fieldIdDnxh_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt4_fieldIdDnxh_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 4) {
|
|||
|
dataMap.put("dt4_fieldIdYfkje_fieldId", fieldId);
|
|||
|
dataMap.put("dt4_fieldIdYfkje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt4_fieldIdYfkje_fieldId");
|
|||
|
dataMap.put("dt4_fieldIdYfkje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt4_fieldIdYfkje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 5) {
|
|||
|
dataMap.put("dt4_fieldIdYhje_fieldId", fieldId);
|
|||
|
dataMap.put("dt4_fieldIdYhje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt4_fieldIdYhje_fieldId");
|
|||
|
dataMap.put("dt4_fieldIdYhje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt4_fieldIdYhje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 6) {
|
|||
|
dataMap.put("dt4_fieldIdSpzje_fieldId", fieldId);
|
|||
|
dataMap.put("dt4_fieldIdSpzje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt4_fieldIdSpzje_fieldId");
|
|||
|
dataMap.put("dt4_fieldIdSpzje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt4_fieldIdSpzje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 7) {
|
|||
|
dataMap.put("dt4_fieldIdWhje_fieldId", fieldId);
|
|||
|
dataMap.put("dt4_fieldIdWhje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt4_fieldIdWhje_fieldId");
|
|||
|
dataMap.put("dt4_fieldIdWhje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt4_fieldIdWhje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 8) {
|
|||
|
dataMap.put("dt4_fieldIdCxje_fieldId", fieldId);
|
|||
|
dataMap.put("dt4_fieldIdCxje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt4_fieldIdCxje_fieldId");
|
|||
|
dataMap.put("dt4_fieldIdCxje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt4_fieldIdCxje_type", type);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
boolean dt1_haveIsDtlField = ("1".equals(fieldIdSubject_isDtl) || "1".equals(fieldIdOrgType_isDtl) || "1".equals(fieldIdOrgId_isDtl) || "1".equals(fieldIdOccurdate_isDtl));
|
|||
|
dataMap.put("dt1_haveIsDtlField", dt1_haveIsDtlField ? "true" : "false");
|
|||
|
|
|||
|
} else if ("borrow".equals(fnaWfType)) {//借款流程
|
|||
|
if (Util.getIntValue(dtlNumber) == 0) {
|
|||
|
if (Util.getIntValue(fieldType) == 1) {
|
|||
|
dataMap.put("main_fieldIdSqr_fieldId", fieldId);//1:申请人;
|
|||
|
dataMap.put("main_fieldIdSqr_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "main_fieldIdSqr_fieldId");
|
|||
|
dataMap.put("main_fieldIdSqr_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("main_fieldIdSqr_type", type);
|
|||
|
}
|
|||
|
} else if (Util.getIntValue(dtlNumber) == 1) {
|
|||
|
if (Util.getIntValue(fieldType) == 1) {
|
|||
|
dataMap.put("dt1_fieldIdJklx_fieldId", fieldId);//1:借款类型;
|
|||
|
dataMap.put("dt1_fieldIdJklx_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt1_fieldIdJklx_fieldId");
|
|||
|
dataMap.put("dt1_fieldIdJklx_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt1_fieldIdJklx_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 2) {
|
|||
|
dataMap.put("dt1_fieldIdJkje_fieldId", fieldId);//2:借款金额;
|
|||
|
dataMap.put("dt1_fieldIdJkje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt1_fieldIdJkje_fieldId");
|
|||
|
dataMap.put("dt1_fieldIdJkje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt1_fieldIdJkje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 3) {
|
|||
|
dataMap.put("dt1_fieldIdJkmx_fieldId", fieldId);//3:调整明细;
|
|||
|
dataMap.put("dt1_fieldIdJkmx_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt1_fieldIdJkmx_fieldId");
|
|||
|
dataMap.put("dt1_fieldIdJkmx_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt1_fieldIdJkmx_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 4) {
|
|||
|
dataMap.put("dt1_fieldIdJksm_fieldId", fieldId);//4:借款说明;
|
|||
|
dataMap.put("dt1_fieldIdJksm_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt1_fieldIdJksm_fieldId");
|
|||
|
dataMap.put("dt1_fieldIdJksm_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt1_fieldIdJksm_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 5) {
|
|||
|
dataMap.put("dt1_fieldIdXghklc_fieldId", fieldId);//5:相关还款流程;
|
|||
|
dataMap.put("dt1_fieldIdXghklc_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt1_fieldIdXghklc_fieldId");
|
|||
|
dataMap.put("dt1_fieldIdXghklc_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt1_fieldIdXghklc_type", type);
|
|||
|
}
|
|||
|
} else if (Util.getIntValue(dtlNumber) == 2) {
|
|||
|
if (Util.getIntValue(fieldType) == 1) {
|
|||
|
dataMap.put("dt2_fieldIdSkfs_fieldId", fieldId);//1:收款方式;
|
|||
|
dataMap.put("dt2_fieldIdSkfs_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdSkfs_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdSkfs_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdSkfs_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 2) {
|
|||
|
dataMap.put("dt2_fieldIdSkje_fieldId", fieldId);//2:收款金额;
|
|||
|
dataMap.put("dt2_fieldIdSkje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdSkje_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdSkje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdSkje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 3) {
|
|||
|
dataMap.put("dt2_fieldIdKhyh_fieldId", fieldId);//3:开户银行;
|
|||
|
dataMap.put("dt2_fieldIdKhyh_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdKhyh_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdKhyh_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdKhyh_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 4) {
|
|||
|
dataMap.put("dt2_fieldIdHuming_fieldId", fieldId);//4:户名;
|
|||
|
dataMap.put("dt2_fieldIdHuming_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdHuming_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdHuming_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdHuming_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 5) {
|
|||
|
dataMap.put("dt2_fieldIdSkzh_fieldId", fieldId);//5:收款账号;
|
|||
|
dataMap.put("dt2_fieldIdSkzh_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdSkzh_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdSkzh_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdSkzh_type", type);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
} else if ("repayment".equals(fnaWfType)) {//还款流程
|
|||
|
if (Util.getIntValue(dtlNumber) == 0) {
|
|||
|
if (Util.getIntValue(fieldType) == 1) {
|
|||
|
dataMap.put("main_fieldIdSqr_fieldId", fieldId);//1:申请人;
|
|||
|
dataMap.put("main_fieldIdSqr_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "main_fieldIdSqr_fieldId");
|
|||
|
dataMap.put("main_fieldIdSqr_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("main_fieldIdSqr_type", type);
|
|||
|
dataMap.put("main_fieldIdSqr_controlBorrowingWf", controlBorrowingWf);//还款流程中通过申请人字段控制可选择的借款流程
|
|||
|
}
|
|||
|
} else if (Util.getIntValue(dtlNumber) == 1) {
|
|||
|
if (Util.getIntValue(fieldType) == 1) {
|
|||
|
dataMap.put("dt1_fieldIdHklx_fieldId", fieldId);//1:还款类型;
|
|||
|
dataMap.put("dt1_fieldIdHklx_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt1_fieldIdHklx_fieldId");
|
|||
|
dataMap.put("dt1_fieldIdHklx_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt1_fieldIdHklx_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 2) {
|
|||
|
dataMap.put("dt1_fieldIdHkje_fieldId", fieldId);//2:还款金额;
|
|||
|
dataMap.put("dt1_fieldIdHkje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt1_fieldIdHkje_fieldId");
|
|||
|
dataMap.put("dt1_fieldIdHkje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt1_fieldIdHkje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 3) {
|
|||
|
dataMap.put("dt1_fieldIdTzmx_fieldId", fieldId);//3:调整明细;
|
|||
|
dataMap.put("dt1_fieldIdTzmx_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt1_fieldIdTzmx_fieldId");
|
|||
|
dataMap.put("dt1_fieldIdTzmx_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt1_fieldIdTzmx_type", type);
|
|||
|
}
|
|||
|
} else if (Util.getIntValue(dtlNumber) == 2) {
|
|||
|
if (Util.getIntValue(fieldType) == 1) {
|
|||
|
dataMap.put("dt2_fieldIdJklc_fieldId", fieldId);//1:借款类型;
|
|||
|
dataMap.put("dt2_fieldIdJklc_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdJklc_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdJklc_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdJklc_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 2) {
|
|||
|
dataMap.put("dt2_fieldIdJkdh_fieldId", fieldId);//2:借款单号;
|
|||
|
dataMap.put("dt2_fieldIdJkdh_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdJkdh_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdJkdh_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdJkdh_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 3) {
|
|||
|
dataMap.put("dt2_fieldIdDnxh_fieldId", fieldId);//3:单内序号;
|
|||
|
dataMap.put("dt2_fieldIdDnxh_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdDnxh_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdDnxh_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdDnxh_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 4) {
|
|||
|
dataMap.put("dt2_fieldIdJkje_fieldId", fieldId);//4:借款金额;
|
|||
|
dataMap.put("dt2_fieldIdJkje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdJkje_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdJkje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdJkje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 5) {
|
|||
|
dataMap.put("dt2_fieldIdYhje_fieldId", fieldId);//5:已还借款金额;
|
|||
|
dataMap.put("dt2_fieldIdYhje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdYhje_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdYhje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdYhje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 6) {
|
|||
|
dataMap.put("dt2_fieldIdSpzje_fieldId", fieldId);//6:审批中还款金额;
|
|||
|
dataMap.put("dt2_fieldIdSpzje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdSpzje_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdSpzje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdSpzje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 7) {
|
|||
|
dataMap.put("dt2_fieldIdWhje_fieldId", fieldId);//7:未还借款金额;
|
|||
|
dataMap.put("dt2_fieldIdWhje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdWhje_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdWhje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdWhje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 8) {
|
|||
|
dataMap.put("dt2_fieldIdCxje_fieldId", fieldId);//8:冲销借款金额;
|
|||
|
dataMap.put("dt2_fieldIdCxje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt2_fieldIdCxje_fieldId");
|
|||
|
dataMap.put("dt2_fieldIdCxje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt2_fieldIdCxje_type", type);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
} else if ("change".equals(fnaWfType)) {//预算变更
|
|||
|
String fieldIdSubject_isDtl = "1";
|
|||
|
String fieldIdOrgType_isDtl = "1";
|
|||
|
String fieldIdOrgId_isDtl = "1";
|
|||
|
String fieldIdOccurdate_isDtl = "1";
|
|||
|
|
|||
|
String fieldIdSubject2_isDtl = "1";
|
|||
|
String fieldIdOrgType2_isDtl = "1";
|
|||
|
String fieldIdOrgId2_isDtl = "1";
|
|||
|
String fieldIdOccurdate2_isDtl = "1";
|
|||
|
|
|||
|
if (Util.getIntValue(dtlNumber) == 1) {
|
|||
|
if (Util.getIntValue(fieldType) == 1) {
|
|||
|
dataMap.put("fieldIdSubject_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdSubject_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdSubject_fieldId");
|
|||
|
dataMap.put("fieldIdSubject_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdSubject_type", type);
|
|||
|
fieldIdSubject_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdSubject_fieldId_isDtl", fieldIdSubject_isDtl);
|
|||
|
} else if (Util.getIntValue(fieldType) == 2) {
|
|||
|
dataMap.put("fieldIdOrgType_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdOrgType_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdOrgType_fieldId");
|
|||
|
dataMap.put("fieldIdOrgType_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdOrgType_type", type);
|
|||
|
fieldIdOrgType_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdOrgType_fieldId_isDtl", fieldIdOrgType_isDtl);
|
|||
|
dataMap.put("fieldIdOrgType_defaultSelectValue", FnaCommon.getOrtTypeFieldidDefaultSelectValue(workflowid, Util.getIntValue(fieldId)) + "");
|
|||
|
} else if (Util.getIntValue(fieldType) == 3) {
|
|||
|
dataMap.put("fieldIdOrgId_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdOrgId_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdOrgId_fieldId");
|
|||
|
dataMap.put("fieldIdOrgId_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdOrgId_type", type);
|
|||
|
dataMap.put("fieldIdOrgId_automaticTake", String.valueOf(automaticTake));
|
|||
|
fieldIdOrgId_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdOrgId_fieldId_isDtl", fieldIdOrgId_isDtl);
|
|||
|
} else if (Util.getIntValue(fieldType) == 4) {
|
|||
|
dataMap.put("fieldIdOccurdate_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdOccurdate_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdOccurdate_fieldId");
|
|||
|
dataMap.put("fieldIdOccurdate_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdOccurdate_type", type);
|
|||
|
fieldIdOccurdate_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdOccurdate_fieldId_isDtl", fieldIdOccurdate_isDtl);
|
|||
|
} else if (Util.getIntValue(fieldType) == 5) {
|
|||
|
dataMap.put("fieldIdAmount_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdAmount_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdAmount_fieldId");
|
|||
|
dataMap.put("fieldIdAmount_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdAmount_type", type);
|
|||
|
dataMap.put("fieldIdAmount_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 6) {
|
|||
|
dataMap.put("fieldIdHrmInfo_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdHrmInfo_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdHrmInfo_fieldId");
|
|||
|
dataMap.put("fieldIdHrmInfo_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdHrmInfo_type", type);
|
|||
|
dataMap.put("fieldIdHrmInfo_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 7) {
|
|||
|
dataMap.put("fieldIdDepInfo_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdDepInfo_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdDepInfo_fieldId");
|
|||
|
dataMap.put("fieldIdDepInfo_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdDepInfo_type", type);
|
|||
|
dataMap.put("fieldIdDepInfo_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 8) {
|
|||
|
dataMap.put("fieldIdSubInfo_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdSubInfo_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdSubInfo_fieldId");
|
|||
|
dataMap.put("fieldIdSubInfo_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdSubInfo_type", type);
|
|||
|
dataMap.put("fieldIdSubInfo_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 9) {
|
|||
|
dataMap.put("fieldIdFccInfo_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdFccInfo_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdFccInfo_fieldId");
|
|||
|
dataMap.put("fieldIdFccInfo_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdFccInfo_type", type);
|
|||
|
dataMap.put("fieldIdFccInfo_fieldId_isDtl", "" + is_detailtable);
|
|||
|
}
|
|||
|
|
|||
|
if (Util.getIntValue(fieldType) == 10) {
|
|||
|
dataMap.put("fieldIdSubject2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdSubject2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdSubject2_fieldId");
|
|||
|
dataMap.put("fieldIdSubject2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdSubject2_type", type);
|
|||
|
fieldIdSubject2_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdSubject2_fieldId_isDtl", fieldIdSubject2_isDtl);
|
|||
|
} else if (Util.getIntValue(fieldType) == 11) {
|
|||
|
dataMap.put("fieldIdOrgType2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdOrgType2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdOrgType2_fieldId");
|
|||
|
dataMap.put("fieldIdOrgType2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdOrgType2_type", type);
|
|||
|
fieldIdOrgType2_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdOrgType2_fieldId_isDtl", fieldIdOrgType2_isDtl);
|
|||
|
dataMap.put("fieldIdOrgType2_defaultSelectValue", FnaCommon.getOrtTypeFieldidDefaultSelectValue(workflowid, Util.getIntValue(fieldId)) + "");
|
|||
|
} else if (Util.getIntValue(fieldType) == 12) {
|
|||
|
dataMap.put("fieldIdOrgId2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdOrgId2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdOrgId2_fieldId");
|
|||
|
dataMap.put("fieldIdOrgId2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdOrgId2_type", type);
|
|||
|
dataMap.put("fieldIdOrgId2_automaticTake", String.valueOf(automaticTake));
|
|||
|
fieldIdOrgId2_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdOrgId2_fieldId_isDtl", fieldIdOrgId2_isDtl);
|
|||
|
} else if (Util.getIntValue(fieldType) == 13) {
|
|||
|
dataMap.put("fieldIdOccurdate2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdOccurdate2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdOccurdate2_fieldId");
|
|||
|
dataMap.put("fieldIdOccurdate2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdOccurdate2_type", type);
|
|||
|
fieldIdOccurdate2_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdOccurdate2_fieldId_isDtl", fieldIdOccurdate2_isDtl);
|
|||
|
} else if (Util.getIntValue(fieldType) == 14) {
|
|||
|
dataMap.put("fieldIdHrmInfo2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdHrmInfo2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdHrmInfo2_fieldId");
|
|||
|
dataMap.put("fieldIdHrmInfo2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdHrmInfo2_type", type);
|
|||
|
dataMap.put("fieldIdHrmInfo2_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 15) {
|
|||
|
dataMap.put("fieldIdDepInfo2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdDepInfo2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdDepInfo2_fieldId");
|
|||
|
dataMap.put("fieldIdDepInfo2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdDepInfo2_type", type);
|
|||
|
dataMap.put("fieldIdDepInfo2_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 16) {
|
|||
|
dataMap.put("fieldIdSubInfo2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdSubInfo2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdSubInfo2_fieldId");
|
|||
|
dataMap.put("fieldIdSubInfo2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdSubInfo2_type", type);
|
|||
|
dataMap.put("fieldIdSubInfo2_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 17) {
|
|||
|
dataMap.put("fieldIdFccInfo2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdFccInfo2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdFccInfo2_fieldId");
|
|||
|
dataMap.put("fieldIdFccInfo2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdFccInfo2_type", type);
|
|||
|
dataMap.put("fieldIdFccInfo2_fieldId_isDtl", "" + is_detailtable);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
boolean dt1_haveIsDtlField = ("1".equals(fieldIdSubject_isDtl) || "1".equals(fieldIdOrgType_isDtl) || "1".equals(fieldIdOrgId_isDtl) || "1".equals(fieldIdOccurdate_isDtl));
|
|||
|
dataMap.put("dt1_haveIsDtlField", dt1_haveIsDtlField ? "true" : "false");
|
|||
|
|
|||
|
boolean dt1_haveIsDtlField2 = ("1".equals(fieldIdSubject2_isDtl) || "1".equals(fieldIdOrgType2_isDtl) || "1".equals(fieldIdOrgId2_isDtl) || "1".equals(fieldIdOccurdate2_isDtl));
|
|||
|
dataMap.put("dt1_haveIsDtlField2", dt1_haveIsDtlField2 ? "true" : "false");
|
|||
|
|
|||
|
} else if ("share".equals(fnaWfType)) {//费用分摊
|
|||
|
String fieldIdSubject_isDtl = "1";
|
|||
|
String fieldIdOrgType_isDtl = "1";
|
|||
|
String fieldIdOrgId_isDtl = "1";
|
|||
|
String fieldIdOccurdate_isDtl = "1";
|
|||
|
|
|||
|
String fieldIdSubject2_isDtl = "1";
|
|||
|
String fieldIdOrgType2_isDtl = "1";
|
|||
|
String fieldIdOrgId2_isDtl = "1";
|
|||
|
String fieldIdOccurdate2_isDtl = "1";
|
|||
|
|
|||
|
if (Util.getIntValue(dtlNumber) == 1) {
|
|||
|
if (Util.getIntValue(fieldType) == 1) {
|
|||
|
dataMap.put("fieldIdSubject_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdSubject_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdSubject_fieldId");
|
|||
|
dataMap.put("fieldIdSubject_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdSubject_type", type);
|
|||
|
fieldIdSubject_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdSubject_fieldId_isDtl", fieldIdSubject_isDtl);
|
|||
|
} else if (Util.getIntValue(fieldType) == 2) {
|
|||
|
dataMap.put("fieldIdOrgType_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdOrgType_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdOrgType_fieldId");
|
|||
|
dataMap.put("fieldIdOrgType_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdOrgType_type", type);
|
|||
|
fieldIdOrgType_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdOrgType_fieldId_isDtl", fieldIdOrgType_isDtl);
|
|||
|
dataMap.put("fieldIdOrgType_defaultSelectValue", FnaCommon.getOrtTypeFieldidDefaultSelectValue(workflowid, Util.getIntValue(fieldId)) + "");
|
|||
|
} else if (Util.getIntValue(fieldType) == 3) {
|
|||
|
dataMap.put("fieldIdOrgId_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdOrgId_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdOrgId_fieldId");
|
|||
|
dataMap.put("fieldIdOrgId_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdOrgId_type", type);
|
|||
|
dataMap.put("fieldIdOrgId_automaticTake", String.valueOf(automaticTake));
|
|||
|
fieldIdOrgId_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdOrgId_fieldId_isDtl", fieldIdOrgId_isDtl);
|
|||
|
} else if (Util.getIntValue(fieldType) == 4) {
|
|||
|
dataMap.put("fieldIdOccurdate_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdOccurdate_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdOccurdate_fieldId");
|
|||
|
dataMap.put("fieldIdOccurdate_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdOccurdate_type", type);
|
|||
|
fieldIdOccurdate_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdOccurdate_fieldId_isDtl", fieldIdOccurdate_isDtl);
|
|||
|
} else if (Util.getIntValue(fieldType) == 5) {
|
|||
|
dataMap.put("fieldIdAmount_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdAmount_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdAmount_fieldId");
|
|||
|
dataMap.put("fieldIdAmount_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdAmount_type", type);
|
|||
|
dataMap.put("fieldIdAmount_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 6) {
|
|||
|
dataMap.put("fieldIdHrmInfo_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdHrmInfo_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdHrmInfo_fieldId");
|
|||
|
dataMap.put("fieldIdHrmInfo_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdHrmInfo_type", type);
|
|||
|
dataMap.put("fieldIdHrmInfo_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 7) {
|
|||
|
dataMap.put("fieldIdDepInfo_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdDepInfo_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdDepInfo_fieldId");
|
|||
|
dataMap.put("fieldIdDepInfo_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdDepInfo_type", type);
|
|||
|
dataMap.put("fieldIdDepInfo_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 8) {
|
|||
|
dataMap.put("fieldIdSubInfo_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdSubInfo_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdSubInfo_fieldId");
|
|||
|
dataMap.put("fieldIdSubInfo_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdSubInfo_type", type);
|
|||
|
dataMap.put("fieldIdSubInfo_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 9) {
|
|||
|
dataMap.put("fieldIdFccInfo_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdFccInfo_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdFccInfo_fieldId");
|
|||
|
dataMap.put("fieldIdFccInfo_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdFccInfo_type", type);
|
|||
|
dataMap.put("fieldIdFccInfo_fieldId_isDtl", "" + is_detailtable);
|
|||
|
}
|
|||
|
|
|||
|
if (Util.getIntValue(fieldType) == 10) {
|
|||
|
dataMap.put("fieldIdSubject2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdSubject2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdSubject2_fieldId");
|
|||
|
dataMap.put("fieldIdSubject2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdSubject2_type", type);
|
|||
|
fieldIdSubject2_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdSubject2_fieldId_isDtl", fieldIdSubject2_isDtl);
|
|||
|
} else if (Util.getIntValue(fieldType) == 11) {
|
|||
|
dataMap.put("fieldIdOrgType2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdOrgType2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdOrgType2_fieldId");
|
|||
|
dataMap.put("fieldIdOrgType2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdOrgType2_type", type);
|
|||
|
fieldIdOrgType2_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdOrgType2_fieldId_isDtl", fieldIdOrgType2_isDtl);
|
|||
|
dataMap.put("fieldIdOrgType2_defaultSelectValue", FnaCommon.getOrtTypeFieldidDefaultSelectValue(workflowid, Util.getIntValue(fieldId)) + "");
|
|||
|
} else if (Util.getIntValue(fieldType) == 12) {
|
|||
|
dataMap.put("fieldIdOrgId2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdOrgId2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdOrgId2_fieldId");
|
|||
|
dataMap.put("fieldIdOrgId2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdOrgId2_type", type);
|
|||
|
dataMap.put("fieldIdOrgId2_automaticTake", String.valueOf(automaticTake));
|
|||
|
fieldIdOrgId2_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdOrgId2_fieldId_isDtl", fieldIdOrgId2_isDtl);
|
|||
|
} else if (Util.getIntValue(fieldType) == 13) {
|
|||
|
dataMap.put("fieldIdOccurdate2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdOccurdate2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdOccurdate2_fieldId");
|
|||
|
dataMap.put("fieldIdOccurdate2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdOccurdate2_type", type);
|
|||
|
fieldIdOccurdate2_isDtl = "" + is_detailtable;
|
|||
|
dataMap.put("fieldIdOccurdate2_fieldId_isDtl", fieldIdOccurdate2_isDtl);
|
|||
|
} else if (Util.getIntValue(fieldType) == 14) {
|
|||
|
dataMap.put("fieldIdHrmInfo2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdHrmInfo2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdHrmInfo2_fieldId");
|
|||
|
dataMap.put("fieldIdHrmInfo2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdHrmInfo2_type", type);
|
|||
|
dataMap.put("fieldIdHrmInfo2_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 15) {
|
|||
|
dataMap.put("fieldIdDepInfo2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdDepInfo2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdDepInfo2_fieldId");
|
|||
|
dataMap.put("fieldIdDepInfo2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdDepInfo2_type", type);
|
|||
|
dataMap.put("fieldIdDepInfo2_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 16) {
|
|||
|
dataMap.put("fieldIdSubInfo2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdSubInfo2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdSubInfo2_fieldId");
|
|||
|
dataMap.put("fieldIdSubInfo2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdSubInfo2_type", type);
|
|||
|
dataMap.put("fieldIdSubInfo2_fieldId_isDtl", "" + is_detailtable);
|
|||
|
} else if (Util.getIntValue(fieldType) == 17) {
|
|||
|
dataMap.put("fieldIdFccInfo2_fieldId", fieldId);
|
|||
|
dataMap.put("fieldIdFccInfo2_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "fieldIdFccInfo2_fieldId");
|
|||
|
dataMap.put("fieldIdFccInfo2_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("fieldIdFccInfo2_type", type);
|
|||
|
dataMap.put("fieldIdFccInfo2_fieldId_isDtl", "" + is_detailtable);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
boolean dt1_haveIsDtlField = ("1".equals(fieldIdSubject_isDtl) || "1".equals(fieldIdOrgType_isDtl) || "1".equals(fieldIdOrgId_isDtl) || "1".equals(fieldIdOccurdate_isDtl));
|
|||
|
dataMap.put("dt1_haveIsDtlField", dt1_haveIsDtlField ? "true" : "false");
|
|||
|
|
|||
|
boolean dt1_haveIsDtlField2 = ("1".equals(fieldIdSubject2_isDtl) || "1".equals(fieldIdOrgType2_isDtl) || "1".equals(fieldIdOrgId2_isDtl) || "1".equals(fieldIdOccurdate2_isDtl));
|
|||
|
dataMap.put("dt1_haveIsDtlField2", dt1_haveIsDtlField2 ? "true" : "false");
|
|||
|
|
|||
|
} else if ("advance".equals(fnaWfType)) {//预付款流程
|
|||
|
if (Util.getIntValue(dtlNumber) == 1) {
|
|||
|
if (Util.getIntValue(fieldType) == 1) {
|
|||
|
dataMap.put("dt1_fieldIdYfkje_fieldId", fieldId);//1:借款金额;
|
|||
|
dataMap.put("dt1_fieldIdYfkje_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt1_fieldIdYfkje_fieldId");
|
|||
|
dataMap.put("dt1_fieldIdYfkje_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt1_fieldIdYfkje_type", type);
|
|||
|
} else if (Util.getIntValue(fieldType) == 2) {
|
|||
|
dataMap.put("dt1_fieldIdYfkmx_fieldId", fieldId);//2:调整明细;
|
|||
|
dataMap.put("dt1_fieldIdYfkmx_fieldName", fieldName);
|
|||
|
dataMap.put(fieldId, "dt1_fieldIdYfkmx_fieldId");
|
|||
|
dataMap.put("dt1_fieldIdYfkmx_fieldhtmltype", fieldhtmltype);
|
|||
|
dataMap.put("dt1_fieldIdYfkmx_type", type);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
try {
|
|||
|
//更新缓存
|
|||
|
FnaWfSetCache.putFnaWfFieldSetMap(workflowid, fnaWfType, dataMap);
|
|||
|
} catch (Exception e) {
|
|||
|
new BaseBean().writeLog(e);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return fnaWfType;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 返回指定人员 、日期范围内,未还借款金额
|
|||
|
*
|
|||
|
* @param userId
|
|||
|
* @param startDate
|
|||
|
* @param endDate
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static double getPersonalLoanAmount(int userId, String startDate, String endDate) {
|
|||
|
double personalLoanAmount = 0.00;
|
|||
|
RecordSet rs = new RecordSet();
|
|||
|
String sql = "select SUM(fbi.amountBorrow * fbi.borrowDirection) sum_amountBorrow \n" +
|
|||
|
" from FnaBorrowInfo fbi \n" +
|
|||
|
" where 1=1 \n";
|
|||
|
if (!"".equals(startDate)) {
|
|||
|
sql += " and fbi.createDate >= '" + StringEscapeUtils.escapeSql(startDate) + "' \n";
|
|||
|
}
|
|||
|
if (!"".equals(endDate)) {
|
|||
|
sql += " and fbi.createDate <= '" + StringEscapeUtils.escapeSql(endDate) + "' \n";
|
|||
|
}
|
|||
|
sql += " and fbi.applicantid = " + userId;
|
|||
|
rs.executeSql(sql);
|
|||
|
if (rs.next()) {
|
|||
|
personalLoanAmount = Util.getDoubleValue(rs.getString("sum_amountBorrow"), 0.00);
|
|||
|
}
|
|||
|
return personalLoanAmount;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 流程表单上填写的费用日期
|
|||
|
*/
|
|||
|
public final static String BudgetAutoMoveAfterOccurDate1 = "" + weaver.systeminfo.SystemEnv.getHtmlLabelName(10003241, weaver.general.ThreadVarLanguage.getLang()) + "";
|
|||
|
/**
|
|||
|
* 流程费用表中保存的费用日期
|
|||
|
*/
|
|||
|
public final static String BudgetAutoMoveAfterOccurDate3 = "" + weaver.systeminfo.SystemEnv.getHtmlLabelName(10003242, weaver.general.ThreadVarLanguage.getLang()) + "";
|
|||
|
/**
|
|||
|
* 流程费用表中保存的结转前的费用日期
|
|||
|
*/
|
|||
|
public final static String BudgetAutoMoveAfterOccurDate4 = "" + weaver.systeminfo.SystemEnv.getHtmlLabelName(10003243, weaver.general.ThreadVarLanguage.getLang()) + "";
|
|||
|
/**
|
|||
|
* 流程费用表记录是否发生过结转;1:结转过;其他:没有结转过;
|
|||
|
*/
|
|||
|
public final static String IsBudgetAutoMove = "" + weaver.systeminfo.SystemEnv.getHtmlLabelName(10003244, weaver.general.ThreadVarLanguage.getLang()) + "1:" + weaver.systeminfo.SystemEnv.getHtmlLabelName(10003245, weaver.general.ThreadVarLanguage.getLang()) + "";
|
|||
|
|
|||
|
/**
|
|||
|
* 获取报销流程相应费用明细费用日期相关信息<br>
|
|||
|
* BudgetAutoMoveAfterOccurDate1 = "流程表单上填写的费用日期";<br>
|
|||
|
* BudgetAutoMoveAfterOccurDate3 = "流程费用表中保存的费用日期";<br>
|
|||
|
* BudgetAutoMoveAfterOccurDate4 = "流程费用表中保存的结转前的费用日期";<br>
|
|||
|
* IsBudgetAutoMove = "流程费用表记录是否发生过结转;1:结转过;其他:没有结转过;";
|
|||
|
*
|
|||
|
* @param occurdate 流程表单填写的费用日期
|
|||
|
* @param dtl_id 流程费用明细数据库PkId
|
|||
|
* @param requestid 流程requestid
|
|||
|
* @param fnaExpenseInfoRecordHm
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static HashMap<String, String> getBudgetAutoMoveAfterOccurDate(String occurdate, int dtl_id, int requestid,
|
|||
|
HashMap<String, String> fnaExpenseInfoRecordHm) {
|
|||
|
return getBudgetAutoMoveAfterOccurDate(occurdate, "", dtl_id, requestid, fnaExpenseInfoRecordHm);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取报销流程相应费用明细费用日期相关信息<br>
|
|||
|
* BudgetAutoMoveAfterOccurDate1 = "流程表单上填写的费用日期";<br>
|
|||
|
* BudgetAutoMoveAfterOccurDate3 = "流程费用表中保存的费用日期";<br>
|
|||
|
* BudgetAutoMoveAfterOccurDate4 = "流程费用表中保存的结转前的费用日期";<br>
|
|||
|
* IsBudgetAutoMove = "流程费用表记录是否发生过结转;1:结转过;其他:没有结转过;";
|
|||
|
*
|
|||
|
* @param occurdate 流程表单填写的费用日期
|
|||
|
* @param detailtable 流程费用明细表名。与参数dtl_id一并传入。
|
|||
|
* @param dtl_id 流程费用明细数据库PkId
|
|||
|
* @param requestid 流程requestid
|
|||
|
* @param fnaExpenseInfoRecordHm
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static HashMap<String, String> getBudgetAutoMoveAfterOccurDate(String occurdate, String detailtable, int dtl_id, int requestid,
|
|||
|
HashMap<String, String> fnaExpenseInfoRecordHm) {
|
|||
|
HashMap<String, String> retHm = new HashMap<String, String>();
|
|||
|
retHm.put(FnaCommon.BudgetAutoMoveAfterOccurDate1, occurdate);
|
|||
|
retHm.put(FnaCommon.BudgetAutoMoveAfterOccurDate3, "");
|
|||
|
retHm.put(FnaCommon.BudgetAutoMoveAfterOccurDate4, "");
|
|||
|
retHm.put(FnaCommon.IsBudgetAutoMove, "0");
|
|||
|
|
|||
|
if (dtl_id != 0 && requestid > 0) {
|
|||
|
if (fnaExpenseInfoRecordHm != null && fnaExpenseInfoRecordHm.containsKey("occurdate")) {
|
|||
|
String _occurdate = Util.null2String(fnaExpenseInfoRecordHm.get("occurdate")).trim();
|
|||
|
String _occurdateOld = Util.null2String(fnaExpenseInfoRecordHm.get("occurdateOld")).trim();
|
|||
|
String _isBudgetAutoMove = Util.getIntValue(fnaExpenseInfoRecordHm.get("isBudgetAutoMove"), 0) + "";
|
|||
|
retHm.put(FnaCommon.BudgetAutoMoveAfterOccurDate3, _occurdate);
|
|||
|
retHm.put(FnaCommon.BudgetAutoMoveAfterOccurDate4, _occurdateOld);
|
|||
|
retHm.put(FnaCommon.IsBudgetAutoMove, _isBudgetAutoMove);
|
|||
|
|
|||
|
} else {
|
|||
|
RecordSet rs = new RecordSet();
|
|||
|
|
|||
|
boolean isFound = false;
|
|||
|
//定位 数据库表名, 日期范围可能跨年
|
|||
|
List<String> list_out_FnaExpenseInfo = new ArrayList<String>();
|
|||
|
FnaSplitTableByYearComInfo.getFnaTableNameList(FnaTableNameEnum.FnaExpenseInfo, "1000-01-01", "9999-12-31", list_out_FnaExpenseInfo);
|
|||
|
//定位 数据库表名, 日期范围可能跨年
|
|||
|
for (int aaaaaaaa = 0; aaaaaaaa < list_out_FnaExpenseInfo.size(); aaaaaaaa++) {
|
|||
|
String tableName_FnaExpenseInfo = list_out_FnaExpenseInfo.get(aaaaaaaa);
|
|||
|
|
|||
|
String sql = "";
|
|||
|
if (dtl_id > 0) {//不含有明细 == -987654321
|
|||
|
if (detailtable == null || "".equals(detailtable)) {
|
|||
|
sql = "select a.occurdate, a.occurdateOld, a.isBudgetAutoMove \n" +
|
|||
|
" from " + tableName_FnaExpenseInfo + " a \n" +
|
|||
|
" where a.sourceRequestidDtlId = " + dtl_id +
|
|||
|
" and a.sourceRequestid = a.requestid and a.requestid = " + requestid;
|
|||
|
} else {
|
|||
|
//E9 先回归的拆表,再回归的多明细报销
|
|||
|
try {
|
|||
|
boolean query_changeAmt_flag = rs.executeQuery(" select detailtable from " + tableName_FnaExpenseInfo + " where 1=2 ");
|
|||
|
if (!query_changeAmt_flag) {
|
|||
|
if ("oracle".equalsIgnoreCase(rs.getDBType())) {
|
|||
|
rs.execute(" alter table " + tableName_FnaExpenseInfo + " add detailtable VARCHAR2(200) ");
|
|||
|
} else if ("mysql".equalsIgnoreCase(rs.getDBType())) {
|
|||
|
rs.execute(" alter table " + tableName_FnaExpenseInfo + " add detailtable VARCHAR(200) ");
|
|||
|
} else {
|
|||
|
rs.execute(" alter table " + tableName_FnaExpenseInfo + " add detailtable VARCHAR(200) ");
|
|||
|
}
|
|||
|
}
|
|||
|
} catch (Exception ex1) {
|
|||
|
}
|
|||
|
|
|||
|
sql = "select a.occurdate, a.occurdateOld, a.isBudgetAutoMove \n" +
|
|||
|
" from " + tableName_FnaExpenseInfo + " a \n" +
|
|||
|
" where a.detailtable = '" + StringEscapeUtils.escapeSql(detailtable) + "' and a.sourceRequestidDtlId = " + dtl_id +
|
|||
|
" and a.sourceRequestid = a.requestid and a.requestid = " + requestid;
|
|||
|
}
|
|||
|
} else {
|
|||
|
sql = "select a.occurdate, a.occurdateOld, a.isBudgetAutoMove \n" +
|
|||
|
" from " + tableName_FnaExpenseInfo + " a \n" +
|
|||
|
" where a.sourceRequestid = a.requestid and a.requestid = " + requestid;
|
|||
|
}
|
|||
|
rs.executeSql(sql);
|
|||
|
if (rs.next()) {
|
|||
|
isFound = true; //找到日期了,就跳出循环,不需要再查询后面的表了
|
|||
|
String _occurdate = Util.null2String(rs.getString("occurdate")).trim();
|
|||
|
String _occurdateOld = Util.null2String(rs.getString("occurdateOld")).trim();
|
|||
|
String _isBudgetAutoMove = Util.getIntValue(rs.getString("isBudgetAutoMove"), 0) + "";
|
|||
|
retHm.put(FnaCommon.BudgetAutoMoveAfterOccurDate3, _occurdate);
|
|||
|
retHm.put(FnaCommon.BudgetAutoMoveAfterOccurDate4, _occurdateOld);
|
|||
|
retHm.put(FnaCommon.IsBudgetAutoMove, _isBudgetAutoMove);
|
|||
|
}
|
|||
|
|
|||
|
if (isFound) {
|
|||
|
break;
|
|||
|
}
|
|||
|
}//for end
|
|||
|
}
|
|||
|
}
|
|||
|
return retHm;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 检查指定用户对指定预算单位是否有编辑权限
|
|||
|
*
|
|||
|
* @param organizationtype
|
|||
|
* @param organizationid
|
|||
|
* @param userId
|
|||
|
* @return
|
|||
|
* @throws Exception
|
|||
|
*/
|
|||
|
public static boolean checkPermissionsFnaBudgetForEdit(String organizationtype, String organizationid, int userId) throws Exception {
|
|||
|
boolean fnaBudgetViewFlag = false;
|
|||
|
if ("0".equals(organizationtype)) {
|
|||
|
if (FnaBudgetLeftRuleSet.isAllowCmpEdit(userId)) {
|
|||
|
fnaBudgetViewFlag = true;
|
|||
|
}
|
|||
|
} else if ("1".equals(organizationtype)) {
|
|||
|
List<String> allowOrgIdEdit_list = new ArrayList<String>();
|
|||
|
boolean allowOrgIdEdit = FnaBudgetLeftRuleSet.getAllowSubCmpIdEdit(userId, allowOrgIdEdit_list);
|
|||
|
if (allowOrgIdEdit || allowOrgIdEdit_list.contains(organizationid)) {
|
|||
|
fnaBudgetViewFlag = true;
|
|||
|
}
|
|||
|
} else if ("2".equals(organizationtype)) {
|
|||
|
List<String> allowOrgIdEdit_list = new ArrayList<String>();
|
|||
|
boolean allowOrgIdEdit = FnaBudgetLeftRuleSet.getAllowDepIdEdit(userId, allowOrgIdEdit_list);
|
|||
|
if (allowOrgIdEdit || allowOrgIdEdit_list.contains(organizationid)) {
|
|||
|
fnaBudgetViewFlag = true;
|
|||
|
}
|
|||
|
} else if ("3".equals(organizationtype)) {
|
|||
|
List<String> grList = new ArrayList<String>();
|
|||
|
grList.add(organizationid);
|
|||
|
List<String> allowOrgIdEdit_list = new ArrayList<String>();
|
|||
|
boolean allowOrgIdEdit = FnaBudgetLeftRuleSet.getAllowHrmIdEdit(userId, null, null, grList, allowOrgIdEdit_list);
|
|||
|
if (allowOrgIdEdit || allowOrgIdEdit_list.contains(organizationid)) {
|
|||
|
fnaBudgetViewFlag = true;
|
|||
|
}
|
|||
|
} else if ((FnaCostCenter.ORGANIZATION_TYPE + "").equals(organizationtype)) {
|
|||
|
List<String> allowOrgIdEdit_list = new ArrayList<String>();
|
|||
|
boolean allowOrgIdEdit = FnaBudgetLeftRuleSet.getAllowFccIdEdit(userId, allowOrgIdEdit_list);
|
|||
|
if (allowOrgIdEdit || allowOrgIdEdit_list.contains(organizationid)) {
|
|||
|
fnaBudgetViewFlag = true;
|
|||
|
}
|
|||
|
}
|
|||
|
return fnaBudgetViewFlag;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 检查指定用户对指定预算单位是否有编辑权限
|
|||
|
*
|
|||
|
* @param organizationtype
|
|||
|
* @param organizationid
|
|||
|
* @param userId
|
|||
|
* @return
|
|||
|
* @throws Exception
|
|||
|
*/
|
|||
|
public static boolean checkPermissionsFnaBudgetForView(String organizationtype, String organizationid, int userId) throws Exception {
|
|||
|
boolean fnaBudgetViewFlag = false;
|
|||
|
if ("0".equals(organizationtype)) {
|
|||
|
if (FnaBudgetLeftRuleSet.isAllowCmp(userId)) {
|
|||
|
fnaBudgetViewFlag = true;
|
|||
|
}
|
|||
|
} else if ("1".equals(organizationtype)) {
|
|||
|
List<String> allowOrgIdEdit_list = new ArrayList<String>();
|
|||
|
boolean allowOrgIdEdit = FnaBudgetLeftRuleSet.getAllowSubCmpId(userId, allowOrgIdEdit_list);
|
|||
|
if (allowOrgIdEdit || allowOrgIdEdit_list.contains(organizationid)) {
|
|||
|
fnaBudgetViewFlag = true;
|
|||
|
}
|
|||
|
} else if ("2".equals(organizationtype)) {
|
|||
|
List<String> allowOrgIdEdit_list = new ArrayList<String>();
|
|||
|
boolean allowOrgIdEdit = FnaBudgetLeftRuleSet.getAllowDepId(userId, allowOrgIdEdit_list);
|
|||
|
if (allowOrgIdEdit || allowOrgIdEdit_list.contains(organizationid)) {
|
|||
|
fnaBudgetViewFlag = true;
|
|||
|
}
|
|||
|
} else if ("3".equals(organizationtype)) {
|
|||
|
List<String> grList = new ArrayList<String>();
|
|||
|
grList.add(organizationid);
|
|||
|
List<String> allowOrgIdEdit_list = new ArrayList<String>();
|
|||
|
boolean allowOrgIdEdit = FnaBudgetLeftRuleSet.getAllowHrmId(userId, null, null, grList, allowOrgIdEdit_list);
|
|||
|
if (allowOrgIdEdit || allowOrgIdEdit_list.contains(organizationid)) {
|
|||
|
fnaBudgetViewFlag = true;
|
|||
|
}
|
|||
|
} else if ((FnaCostCenter.ORGANIZATION_TYPE + "").equals(organizationtype)) {
|
|||
|
List<String> allowOrgIdEdit_list = new ArrayList<String>();
|
|||
|
boolean allowOrgIdEdit = FnaBudgetLeftRuleSet.getAllowFccId(userId, allowOrgIdEdit_list);
|
|||
|
if (allowOrgIdEdit || allowOrgIdEdit_list.contains(organizationid)) {
|
|||
|
fnaBudgetViewFlag = true;
|
|||
|
}
|
|||
|
}
|
|||
|
return fnaBudgetViewFlag;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 检查字符串长度是否没有超过指定长度(字符串转换编码默认按UTF-8进行转换,一个双字节字符对应长度3)
|
|||
|
*
|
|||
|
* @param str 被检查的字符串
|
|||
|
* @param maxLength 指定最大长度
|
|||
|
* @return
|
|||
|
* @throws UnsupportedEncodingException
|
|||
|
*/
|
|||
|
public static boolean checkStringLength(String str, int maxLength) throws UnsupportedEncodingException {
|
|||
|
return checkStringLength(str, maxLength, "UTF-8");
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 检查字符串长度是否没有超过指定长度
|
|||
|
*
|
|||
|
* @param str 被检查的字符串
|
|||
|
* @param maxLength 指定最大长度
|
|||
|
* @param charsetName 字符串转换编码
|
|||
|
* @return
|
|||
|
* @throws UnsupportedEncodingException
|
|||
|
*/
|
|||
|
public static boolean checkStringLength(String str, int maxLength, String charsetName) throws UnsupportedEncodingException {
|
|||
|
if (str == null || "".equals(str)) {
|
|||
|
return true;
|
|||
|
} else {
|
|||
|
return str.getBytes(charsetName).length < maxLength;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 更新oracle数据库clob类型字段值、更新sqlserver数据库text类型字段值的方法
|
|||
|
*
|
|||
|
* @param tableName 表名
|
|||
|
* @param clobFieldName clob、text类型字段数据库字段名
|
|||
|
* @param colbFieldValue clob、text字段值
|
|||
|
* @param keyFieldName 记录主键字段数据库字段名
|
|||
|
* @param keyFieldValue 记录主键字段值
|
|||
|
* @param keyFieldDbType 记录主键字段数据库字段类型:int、string
|
|||
|
* @return
|
|||
|
* @throws Exception
|
|||
|
*/
|
|||
|
public static boolean updateDbClobOrTextFieldValue(String tableName,
|
|||
|
String clobFieldName, String colbFieldValue,
|
|||
|
String keyFieldName, String keyFieldValue, String keyFieldDbType) throws Exception {
|
|||
|
//new BaseBean().writeLog("updateDbClobOrTextFieldValue colbFieldValue>>>"+colbFieldValue+";;;keyFieldValue>>>"+keyFieldValue);
|
|||
|
|
|||
|
if ("int".equals(keyFieldDbType) || "string".equals(keyFieldDbType)) {
|
|||
|
} else {
|
|||
|
new Exception("FnaCommon.updateDbClobTextFieldValue:keyFieldDbType 记录主键字段数据库字段类型:int、string,该参数值不正确!");
|
|||
|
}
|
|||
|
|
|||
|
RecordSet rs = new RecordSet();
|
|||
|
if ("oracle".equals(rs.getDBType()) && Util.null2String(rs.getOrgindbtype()).equals("oracle")) {
|
|||
|
boolean flag = false;
|
|||
|
boolean flag_exec_updateSql = false;
|
|||
|
ConnStatement statement = null;
|
|||
|
try {
|
|||
|
statement = new ConnStatement();
|
|||
|
|
|||
|
String sql = "update " + tableName + " " +
|
|||
|
" set " + clobFieldName + " = empty_clob() " +
|
|||
|
" where " + keyFieldName + " = ?";
|
|||
|
//new BaseBean().writeLog(sql);
|
|||
|
statement.setStatementSql(sql);
|
|||
|
if ("int".equals(keyFieldDbType)) {
|
|||
|
statement.setInt(1, Util.getIntValue(keyFieldValue, -1));
|
|||
|
} else {
|
|||
|
statement.setString(1, keyFieldValue);
|
|||
|
}
|
|||
|
statement.executeUpdate();
|
|||
|
|
|||
|
sql = "select " + clobFieldName + " from " + tableName + " where " + keyFieldName + " = ";
|
|||
|
if ("int".equals(keyFieldDbType)) {
|
|||
|
sql += Util.getIntValue(keyFieldValue, -1);
|
|||
|
} else {
|
|||
|
sql += "'" + StringEscapeUtils.escapeSql(keyFieldValue) + "'";
|
|||
|
}
|
|||
|
//new BaseBean().writeLog(sql);
|
|||
|
statement.setStatementSql(sql, false);
|
|||
|
statement.executeQuery();
|
|||
|
if (statement.next()) {
|
|||
|
// String(this.doccontent.getBytes("ISO8859_1"),
|
|||
|
// "UTF-8")) ;
|
|||
|
char[] _writeCharArray = Util.null2String(colbFieldValue).toCharArray();
|
|||
|
CLOB theclob = statement.getClob(1);
|
|||
|
if (theclob != null) {
|
|||
|
Writer _write = theclob.getCharacterOutputStream();
|
|||
|
if (_write != null) {
|
|||
|
try {
|
|||
|
_write.write(_writeCharArray);
|
|||
|
} finally {
|
|||
|
try {
|
|||
|
if (_write != null) {
|
|||
|
_write.flush();
|
|||
|
}
|
|||
|
} catch (Exception ex01) {
|
|||
|
}
|
|||
|
try {
|
|||
|
if (_write != null) {
|
|||
|
_write.close();
|
|||
|
}
|
|||
|
} catch (Exception ex01) {
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
flag = true;
|
|||
|
} else {
|
|||
|
flag_exec_updateSql = true;
|
|||
|
}
|
|||
|
} else {
|
|||
|
flag_exec_updateSql = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
} finally {
|
|||
|
try {
|
|||
|
if (statement != null) {
|
|||
|
statement.close();
|
|||
|
}
|
|||
|
} catch (Exception ex) {
|
|||
|
new BaseBean().writeLog("fna_FnaCommon_Exception:" + ex);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (flag_exec_updateSql) {
|
|||
|
String sql = "update " + tableName + " " +
|
|||
|
" set " + clobFieldName + " = ? " +
|
|||
|
" where " + keyFieldName + " = ?";
|
|||
|
return rs.executeUpdate(sql, Util.null2String(colbFieldValue), keyFieldValue + "");
|
|||
|
}
|
|||
|
|
|||
|
return flag;
|
|||
|
|
|||
|
} else {
|
|||
|
/*String sql = "update "+tableName+" " +
|
|||
|
" set "+clobFieldName+" = ? " +
|
|||
|
" where "+keyFieldName+" = ?";
|
|||
|
return rs.executeUpdate(sql, Util.null2String(colbFieldValue), keyFieldValue+"");*/
|
|||
|
|
|||
|
ConnStatement connStatement = new ConnStatement();
|
|||
|
try {
|
|||
|
String sql = "update " + tableName + " " +
|
|||
|
" set " + clobFieldName + " = ? " +
|
|||
|
" where " + keyFieldName + " = ?";
|
|||
|
connStatement.setStatementSql(sql);
|
|||
|
connStatement.setString(1, Util.null2String(colbFieldValue));
|
|||
|
connStatement.setString(2, keyFieldValue);
|
|||
|
connStatement.executeUpdate();
|
|||
|
return true;
|
|||
|
} catch (Exception e) {
|
|||
|
new BaseBean().writeLog("fna_FnaCommon_Exception:" + e.getMessage());
|
|||
|
return false;
|
|||
|
} finally {
|
|||
|
connStatement.close();
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 深复制List
|
|||
|
*
|
|||
|
* @param list1
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static List<String[]> copyList_stringArray(List<String[]> list1) {
|
|||
|
List<String[]> list2 = new ArrayList<String[]>();
|
|||
|
if (list1 != null) {
|
|||
|
int list1Len = list1.size();
|
|||
|
for (int i = 0; i < list1Len; i++) {
|
|||
|
String[] arr1 = list1.get(i);
|
|||
|
if (arr1 != null) {
|
|||
|
int arr1Len = arr1.length;
|
|||
|
String[] arr2 = new String[arr1Len];
|
|||
|
for (int j = 0; j < arr1Len; j++) {
|
|||
|
arr2[j] = arr1[j];
|
|||
|
}
|
|||
|
list2.add(arr2);
|
|||
|
} else {
|
|||
|
list2.add(null);
|
|||
|
}
|
|||
|
}
|
|||
|
} else {
|
|||
|
return null;
|
|||
|
}
|
|||
|
return list2;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 深复制List
|
|||
|
*
|
|||
|
* @param list1
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static List<String> copyList_string(List<String> list1) {
|
|||
|
List<String> list2 = new ArrayList<String>();
|
|||
|
if (list1 != null) {
|
|||
|
int list1Len = list1.size();
|
|||
|
for (int i = 0; i < list1Len; i++) {
|
|||
|
list2.add(list1.get(i));
|
|||
|
}
|
|||
|
} else {
|
|||
|
return null;
|
|||
|
}
|
|||
|
return list2;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 复制List
|
|||
|
*
|
|||
|
* @param list1 源list,待复制的
|
|||
|
* @param list2 被复制的,复制前会调用clear函数,清除原有数据。
|
|||
|
*/
|
|||
|
public void copyList_string(List<String> list1, List<String> list2) {
|
|||
|
//List<String> list2 = new ArrayList<String>();
|
|||
|
if (list1 != null && list2 != null) {
|
|||
|
list2.clear();
|
|||
|
int list1Len = list1.size();
|
|||
|
for (int i = 0; i < list1Len; i++) {
|
|||
|
list2.add(list1.get(i));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获得GUID
|
|||
|
*
|
|||
|
* @return 32位长度,无符号-,其中英文字符随机大小写
|
|||
|
*/
|
|||
|
public static String getPrimaryKeyGuid1() {
|
|||
|
int max = 10;
|
|||
|
int min = 1;
|
|||
|
Random random = new Random();
|
|||
|
|
|||
|
String uuid1 = UUID.randomUUID().toString().replaceAll("-", "");
|
|||
|
|
|||
|
StringBuffer guid1 = new StringBuffer();
|
|||
|
String[] uuid1Array = uuid1.split("");
|
|||
|
for (int i = 0; i < uuid1Array.length; i++) {
|
|||
|
int s = random.nextInt(max) % (max - min + 1) + min;
|
|||
|
if (s < 6) {
|
|||
|
guid1.append(uuid1Array[i]);
|
|||
|
} else {
|
|||
|
guid1.append(uuid1Array[i].toUpperCase());
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return Util.null2String(guid1.toString()).trim();
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 报销费用类型(科目)、成本中心浏览框支持流程浏览数据定义
|
|||
|
*
|
|||
|
* @param params 参数键值对
|
|||
|
* @param operation add/del
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public boolean saveOrUpdateWfBrowdef(Map params, String operation) {
|
|||
|
try {
|
|||
|
String workflowid = Util.null2String(params.get("workflowId"));
|
|||
|
String fieldId = Util.null2String(params.get("fieldId"));
|
|||
|
String viewType = Util.null2String(params.get("viewType"));
|
|||
|
String fieldType = Util.null2String(params.get("fieldType"));
|
|||
|
String title = Util.null2String(params.get("title"));
|
|||
|
String feetypeRange = Util.null2String(params.get("feetypeRange"));
|
|||
|
String fccId = Util.null2String(params.get("fccId"));
|
|||
|
|
|||
|
String param = !feetypeRange.equals("") ? feetypeRange : fccId;
|
|||
|
|
|||
|
/*new BaseBean().writeLog("workflowid:"+workflowid);
|
|||
|
new BaseBean().writeLog("fieldId:"+fieldId);
|
|||
|
new BaseBean().writeLog("viewType:"+viewType);
|
|||
|
new BaseBean().writeLog("fieldType:"+fieldType);
|
|||
|
new BaseBean().writeLog("title:"+ new String(title.getBytes("ISO-8859-1"),"utf-8"));
|
|||
|
new BaseBean().writeLog("feetypeRange:"+feetypeRange);
|
|||
|
new BaseBean().writeLog("fccId:"+fccId);*/
|
|||
|
|
|||
|
if (operation.equals("del")) {
|
|||
|
removeWfBrowdef(workflowid, fieldId, fieldType);
|
|||
|
} else if (operation.equals("add")) {
|
|||
|
removeWfBrowdef(workflowid, fieldId, fieldType);
|
|||
|
initNewWfBrowdef(workflowid, fieldId, viewType, fieldType, title, param);
|
|||
|
}
|
|||
|
BudgetfeeTypeComInfo budgetfeeTypeComInfo = new BudgetfeeTypeComInfo();
|
|||
|
budgetfeeTypeComInfo.removeBudgetfeeTypeCache();
|
|||
|
return true;
|
|||
|
} catch (Exception e) {
|
|||
|
new BaseBean().writeLog(e);
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 删除 流程浏览数据定义
|
|||
|
*
|
|||
|
* @param workflowid 流程id
|
|||
|
* @param fieldId 字段id
|
|||
|
* @param fieldType 浏览按钮类型
|
|||
|
*/
|
|||
|
private void removeWfBrowdef(String workflowid, String fieldId, String fieldType) throws Exception {
|
|||
|
String sql = "";
|
|||
|
RecordSet rs = new RecordSet();
|
|||
|
RecordSet rs2 = new RecordSet();
|
|||
|
|
|||
|
//删除历史数据
|
|||
|
sql = "select id from FnaFeetypeWfbrowdef " +
|
|||
|
" where workflowid=" + workflowid +
|
|||
|
" and fieldId=" + fieldId +
|
|||
|
" and fieldType=" + fieldType;
|
|||
|
rs.executeSql(sql);
|
|||
|
if (rs.next()) {
|
|||
|
String tempid = Util.null2String(rs.getString("id"));
|
|||
|
|
|||
|
sql = "delete from FnaFeetypeWfbrowdef where id=" + tempid;
|
|||
|
rs2.executeSql(sql);
|
|||
|
sql = "delete from FnaFeetypeWfbrowdef_dt1 where mainid=" + tempid;
|
|||
|
rs2.executeSql(sql);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 流程浏览数据定义
|
|||
|
*
|
|||
|
* @param workflowid 流程id
|
|||
|
* @param fieldId 字段id
|
|||
|
* @param viewType
|
|||
|
* @param fieldType 浏览按钮类型
|
|||
|
* @param title 标题
|
|||
|
* @param param 参数键值对
|
|||
|
*/
|
|||
|
private void initNewWfBrowdef(String workflowid, String fieldId, String viewType, String fieldType, String title, String param) throws Exception {
|
|||
|
String sql = "";
|
|||
|
RecordSet rs = new RecordSet();
|
|||
|
|
|||
|
sql = "insert into FnaFeetypeWfbrowdef (workflowid,fieldId,viewType,fieldType,title) " +
|
|||
|
" values " +
|
|||
|
" (" + workflowid + "," + fieldId + "," + viewType + "," + fieldType + ",'" + title + "')";
|
|||
|
rs.executeSql(sql);
|
|||
|
|
|||
|
|
|||
|
//插入新数据
|
|||
|
String id = "";
|
|||
|
sql = "select max(id) maxid from FnaFeetypeWfbrowdef";
|
|||
|
rs.executeSql(sql);
|
|||
|
if (rs.next()) {
|
|||
|
id = Util.null2String(rs.getString("maxid"));
|
|||
|
}
|
|||
|
|
|||
|
if (!param.equals("") && !id.equals("")) {
|
|||
|
for (String refid : param.split(",")) {
|
|||
|
sql = "insert into FnaFeetypeWfbrowdef_dt1 (mainid,refid)" +
|
|||
|
" values " +
|
|||
|
" (" + id + "," + refid + ")";
|
|||
|
rs.executeSql(sql);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 返回:路径设置》浏览按钮定义:中定义的可见科目
|
|||
|
*
|
|||
|
* @param workflowid
|
|||
|
* @param fieldId
|
|||
|
* @param fieldType 浏览按钮类型
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public List getWfBrowdefList(String workflowid, String fieldId, String fieldType) {
|
|||
|
try {
|
|||
|
String sql = "";
|
|||
|
RecordSet rs = new RecordSet();
|
|||
|
List returnList = new ArrayList();
|
|||
|
|
|||
|
sql = "select * from FnaFeetypeWfbrowdef_dt1 where mainid = " +
|
|||
|
"(" +
|
|||
|
" select id from FnaFeetypeWfbrowdef " +
|
|||
|
" where workflowid=" + Util.getIntValue(workflowid) +
|
|||
|
" and fieldId=" + Util.getIntValue(fieldId) +
|
|||
|
" and fieldType=" + Util.getIntValue(fieldType) +
|
|||
|
") " +
|
|||
|
"order by id ";
|
|||
|
rs.executeSql(sql);
|
|||
|
while (rs.next()) {
|
|||
|
returnList.add(Util.null2String(rs.getString("refId")));
|
|||
|
}
|
|||
|
return returnList;
|
|||
|
} catch (Exception e) {
|
|||
|
new BaseBean().writeLog(e);
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Rsa加密支持中文和长字符(不推荐长字符加密/解密会很慢);与doFnaDecrypt配套使用
|
|||
|
*
|
|||
|
* @param str 需要进行加密的明文
|
|||
|
* @return 加密后的字符串密文
|
|||
|
*/
|
|||
|
public String doFnaEncrypt(String str) {
|
|||
|
return this.doFnaEncrypt(str, Des.KEY1, Des.KEY2, Des.KEY3);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Rsa加密支持中文和长字符(不推荐长字符加密/解密会很慢);与doFnaDecrypt配套使用
|
|||
|
*
|
|||
|
* @param str 需要进行加密的明文
|
|||
|
* @param key1 Des.KEY1
|
|||
|
* @param key2 Des.KEY2
|
|||
|
* @param key3 Des.KEY3
|
|||
|
* @return 加密后的字符串密文
|
|||
|
*/
|
|||
|
public String doFnaEncrypt(String str, String key1, String key2, String key3) {
|
|||
|
Des desObj = new Des();
|
|||
|
String pwd_des = desObj.strEnc(str, key1, key2, key3);
|
|||
|
|
|||
|
int len = pwd_des.length();
|
|||
|
StringBuffer tmp_pwd_des = new StringBuffer();
|
|||
|
while (len > 100) {
|
|||
|
String _s = pwd_des.substring(0, 100);
|
|||
|
tmp_pwd_des.append(RSAUtils.encryptString(_s)).append(" ");
|
|||
|
pwd_des = pwd_des.substring(100);
|
|||
|
len = pwd_des.length();
|
|||
|
}
|
|||
|
if (len > 0) {
|
|||
|
tmp_pwd_des.append(RSAUtils.encryptString(pwd_des)).append(" ");
|
|||
|
}
|
|||
|
|
|||
|
return tmp_pwd_des.toString();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Rsa解密支持中文和长字符(不推荐长字符加密/解密会很慢);与doFnaEncrypt配套使用
|
|||
|
*
|
|||
|
* @param str
|
|||
|
* @return 解密后的字符串明文
|
|||
|
*/
|
|||
|
public String doFnaDecrypt(String str) {
|
|||
|
return this.doFnaDecrypt(str, Des.KEY1, Des.KEY2, Des.KEY3);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Rsa解密支持中文和长字符(不推荐长字符加密/解密会很慢);与doFnaEncrypt配套使用
|
|||
|
*
|
|||
|
* @param str 加密后的字符串密文
|
|||
|
* @param key1 Des.KEY1
|
|||
|
* @param key2 Des.KEY2
|
|||
|
* @param key3 Des.KEY3
|
|||
|
* @return 解密后的字符串明文
|
|||
|
*/
|
|||
|
public String doFnaDecrypt(String str, String key1, String key2, String key3) {
|
|||
|
StringBuffer descrypedStr = new StringBuffer("");
|
|||
|
String[] encrypedStrArray = str.trim().split(" ");
|
|||
|
int encrypedStrArrayLen = encrypedStrArray.length;
|
|||
|
|
|||
|
for (int i = 0; i < encrypedStrArrayLen; i++) {
|
|||
|
String _str = Util.null2String(encrypedStrArray[i]).trim();
|
|||
|
String _descrypedStr = "";
|
|||
|
if (!"".equals(_str)) {
|
|||
|
_descrypedStr = RSAUtils.decryptString(_str);
|
|||
|
}
|
|||
|
descrypedStr.append(_descrypedStr);
|
|||
|
}
|
|||
|
|
|||
|
Des desObj = new Des();
|
|||
|
return desObj.strDec(descrypedStr.toString(), key1, key2, key3);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Rsa解密支持中文和长字符(不推荐长字符加密/解密会很慢);
|
|||
|
*
|
|||
|
* @param str
|
|||
|
* @return 解密后的字符串明文
|
|||
|
*/
|
|||
|
public String doFnaDecrypt1(String str) {
|
|||
|
return this.doFnaDecrypt1(str, Des.KEY1, Des.KEY2, Des.KEY3);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Rsa解密支持中文和长字符(不推荐长字符加密/解密会很慢);配合js加密使用:/fna/js/e8Common_wev8.js中的函数doFnaEncryptRsa1()
|
|||
|
*
|
|||
|
* @param str /fna/js/e8Common_wev8.js中的函数doFnaEncryptRsa1() 加密后的字符串密文
|
|||
|
* @param key1 Des.KEY1
|
|||
|
* @param key2 Des.KEY2
|
|||
|
* @param key3 Des.KEY3
|
|||
|
* @return 解密后的字符串明文
|
|||
|
*/
|
|||
|
public String doFnaDecrypt1(String str, String key1, String key2, String key3) {
|
|||
|
StringBuffer descrypedStr = new StringBuffer("");
|
|||
|
String[] encrypedStrArray = str.trim().split(" ");
|
|||
|
int encrypedStrArrayLen = encrypedStrArray.length;
|
|||
|
|
|||
|
for (int i = 0; i < encrypedStrArrayLen; i++) {
|
|||
|
String _str = Util.null2String(encrypedStrArray[i]).trim();
|
|||
|
String _descrypedStr = "";
|
|||
|
if (!"".equals(_str)) {
|
|||
|
_descrypedStr = RSAUtils.decryptStringByJs(_str);
|
|||
|
}
|
|||
|
descrypedStr.append(_descrypedStr);
|
|||
|
}
|
|||
|
|
|||
|
Des desObj = new Des();
|
|||
|
return desObj.strDec(descrypedStr.toString(), key1, key2, key3);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* 将Object对象序列化成字符串
|
|||
|
*
|
|||
|
* @param obj
|
|||
|
* @return
|
|||
|
* @throws Exception
|
|||
|
*/
|
|||
|
public String serialDoc2Str(Object obj) throws Exception {
|
|||
|
ByteArrayOutputStream byteArrayOutputStream = null;
|
|||
|
ObjectOutputStream objectOutputStream = null;
|
|||
|
try {
|
|||
|
byteArrayOutputStream = new ByteArrayOutputStream();
|
|||
|
objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
|
|||
|
objectOutputStream.writeObject(obj);
|
|||
|
String serStr = byteArrayOutputStream.toString("ISO-8859-1");
|
|||
|
serStr = java.net.URLEncoder.encode(serStr, "UTF-8");
|
|||
|
return serStr;
|
|||
|
} finally {
|
|||
|
try {
|
|||
|
if (objectOutputStream != null) {
|
|||
|
IOUtils.closeQuietly(objectOutputStream);
|
|||
|
}
|
|||
|
} catch (Exception ex) {
|
|||
|
}
|
|||
|
try {
|
|||
|
if (byteArrayOutputStream != null) {
|
|||
|
IOUtils.closeQuietly(byteArrayOutputStream);
|
|||
|
}
|
|||
|
} catch (Exception ex) {
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 将字符串序列化成Object对象
|
|||
|
*
|
|||
|
* @param serStr
|
|||
|
* @return
|
|||
|
* @throws Exception
|
|||
|
*/
|
|||
|
public Object serialStr2Doc(String serStr) throws Exception {
|
|||
|
ByteArrayInputStream byteArrayInputStream = null;
|
|||
|
ObjectInputStream objectInputStream = null;
|
|||
|
try {
|
|||
|
String redStr = java.net.URLDecoder.decode(serStr, "UTF-8");
|
|||
|
byteArrayInputStream = new ByteArrayInputStream(redStr.getBytes("ISO-8859-1"));
|
|||
|
//objectInputStream = new ObjectInputStream(byteArrayInputStream);
|
|||
|
objectInputStream = SecurityMethodUtil.getSafeObjectInputStream(byteArrayInputStream);
|
|||
|
return (Object) objectInputStream.readObject();
|
|||
|
} finally {
|
|||
|
try {
|
|||
|
if (objectInputStream != null) {
|
|||
|
IOUtils.closeQuietly(objectInputStream);
|
|||
|
}
|
|||
|
} catch (Exception ex) {
|
|||
|
}
|
|||
|
try {
|
|||
|
if (byteArrayInputStream != null) {
|
|||
|
IOUtils.closeQuietly(byteArrayInputStream);
|
|||
|
}
|
|||
|
} catch (Exception ex) {
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 释放 系统表单:预算审批流转单 对应的预算审批中版本(从审批中修改为草稿版本,修改成草稿版本前会删除当前的草稿版本)
|
|||
|
*
|
|||
|
* @param requestid
|
|||
|
*/
|
|||
|
public void releaseBillFnaBudget(int requestid) {
|
|||
|
RecordSet rs_1 = new RecordSet();
|
|||
|
RecordSet rs_2 = new RecordSet();
|
|||
|
RecordSet rs_3 = new RecordSet();
|
|||
|
List<String> budgetid_list = new ArrayList<String>();
|
|||
|
|
|||
|
String sql = "select fnayear,budgetdetail " +
|
|||
|
" from bill_FnaBudget " +
|
|||
|
" where budgetdetail is not null " +
|
|||
|
" and requestid = " + requestid + " " +
|
|||
|
" order by id desc";
|
|||
|
rs_1.executeSql(sql);
|
|||
|
while (rs_1.next()) {
|
|||
|
int fnayear = Util.getIntValue(rs_1.getString("fnayear"));//年份
|
|||
|
int budgetid = Util.getIntValue(rs_1.getString("budgetdetail"));
|
|||
|
|
|||
|
//TODO 定位 数据库表名
|
|||
|
String tableName_FnaBudgetInfo = FnaSplitTableByYearComInfo.getFnaTableNameByYear(FnaTableNameEnum.FnaBudgetInfo, fnayear);
|
|||
|
|
|||
|
if (budgetid > 0 && !budgetid_list.contains(String.valueOf(tableName_FnaBudgetInfo + "_" + budgetid))) {
|
|||
|
budgetid_list.add(String.valueOf(tableName_FnaBudgetInfo + "_" + budgetid));//每张表的ID都是自增长的,所以需要拼接表名区分ID来源
|
|||
|
|
|||
|
String sql0 = "select organizationtype, budgetorganizationid, budgetperiods, status " +
|
|||
|
" from " + tableName_FnaBudgetInfo + " " +
|
|||
|
" where id=" + budgetid;
|
|||
|
rs_2.executeSql(sql0);
|
|||
|
if (rs_2.next()) {
|
|||
|
int _organizationtype = rs_2.getInt("organizationtype");
|
|||
|
int _budgetorganizationid = rs_2.getInt("budgetorganizationid");
|
|||
|
int _budgetperiods = rs_2.getInt("budgetperiods");
|
|||
|
int _status = rs_2.getInt("status");
|
|||
|
|
|||
|
if (_status == 3) {//只有当当前预算信息版本还是审批中的时候才需要进行后续操作
|
|||
|
if (_organizationtype > 0 && _budgetorganizationid > 0 && _budgetperiods > 0) {
|
|||
|
BudgetHandler.deleteFnaBudgetInfoAndFnaBudgetInfoDetail(_organizationtype, _budgetorganizationid, _budgetperiods, 0);
|
|||
|
|
|||
|
String sql1 = "update " + tableName_FnaBudgetInfo + " set status = 0, revision = 0 where id=" + budgetid;
|
|||
|
rs_3.executeSql(sql1);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 生效 系统表单:预算审批流转单 对应的预算审批中版本(从审批中修改为生效版本)
|
|||
|
*
|
|||
|
* @param requestid
|
|||
|
* @throws Exception
|
|||
|
*/
|
|||
|
public void effectBillFnaBudget(int requestid) throws Exception {
|
|||
|
RecordSet rs_1 = new RecordSet();
|
|||
|
//update to new revision
|
|||
|
String sql = "select a.id, a.fnayear, a.budgetdetail, b.creater\n" +
|
|||
|
" from bill_FnaBudget a\n" +
|
|||
|
" join workflow_requestbase b on a.requestid = b.requestid\n" +
|
|||
|
" where a.budgetdetail is not null\n" +
|
|||
|
" and a.requestid = ? \n" +
|
|||
|
" order by a.id desc";
|
|||
|
rs_1.executeQuery(sql, requestid);
|
|||
|
if (rs_1.next()) {
|
|||
|
int fnayear = Util.getIntValue(rs_1.getString("fnayear"));//年份
|
|||
|
int budgetid = Util.getIntValue(rs_1.getString("budgetdetail"));
|
|||
|
int creater = Util.getIntValue(rs_1.getString("creater"));
|
|||
|
|
|||
|
if (budgetid > 0) {
|
|||
|
RecordSet rs = new RecordSet();
|
|||
|
|
|||
|
//TODO 定位 数据库表名
|
|||
|
String tableName_FnaBudgetInfo = FnaSplitTableByYearComInfo.getFnaTableNameByYear(FnaTableNameEnum.FnaBudgetInfo, fnayear);
|
|||
|
|
|||
|
User user = new UserManager().getUserByUserIdAndLoginType(creater, "1");
|
|||
|
|
|||
|
String currentdate = TimeUtil.getCurrentDateString();
|
|||
|
String inusefnabudgetinfoid = "";
|
|||
|
String orgId = "0";
|
|||
|
String orgType = "0";
|
|||
|
int budgetperiods = 0;
|
|||
|
|
|||
|
sql = "select budgetorganizationid, organizationtype, budgetperiods, revision, status \n" +
|
|||
|
" from " + tableName_FnaBudgetInfo + " a\n" +
|
|||
|
" where id = ? \n";
|
|||
|
rs.executeQuery(sql, budgetid);
|
|||
|
if (rs.next()) {
|
|||
|
orgId = Util.null2String(rs.getString("budgetorganizationid")).trim();
|
|||
|
orgType = Util.null2String(rs.getString("organizationtype")).trim();
|
|||
|
budgetperiods = Util.getIntValue(rs.getString("budgetperiods"), 0);
|
|||
|
int revision = Util.getIntValue(rs.getString("revision"), 0);
|
|||
|
int _status = rs.getInt("status");
|
|||
|
|
|||
|
if (_status == 3) {//只有当当前预算信息版本还是审批中的时候才需要进行后续操作
|
|||
|
if (revision > 0) {
|
|||
|
sql = "select max(revision) max_revision \n" +
|
|||
|
" from " + tableName_FnaBudgetInfo + " a\n" +
|
|||
|
" where a.status in (1,2) \n" +
|
|||
|
" and a.revision < ?\n" +
|
|||
|
" and a.organizationtype = ?\n" +
|
|||
|
" and a.budgetperiods = ?" +
|
|||
|
" and a.budgetorganizationid = ?\n";
|
|||
|
rs.executeQuery(sql, revision, orgType, budgetperiods, orgId);
|
|||
|
if (rs.next()) {
|
|||
|
revision = Util.getIntValue(rs.getString("max_revision"), 0);
|
|||
|
|
|||
|
if (revision > 0) {
|
|||
|
sql = "select a.id \n" +
|
|||
|
" from " + tableName_FnaBudgetInfo + " a\n" +
|
|||
|
" where a.status in (1,2) \n" +
|
|||
|
" and a.revision = ?\n" +
|
|||
|
" and a.organizationtype = ?\n" +
|
|||
|
" and a.budgetperiods = ?\n" +
|
|||
|
" and a.budgetorganizationid = ?";
|
|||
|
rs.executeQuery(sql, revision, orgType, budgetperiods, orgId);
|
|||
|
if (rs.next()) {
|
|||
|
inusefnabudgetinfoid = Util.null2String(rs.getString("id")).trim();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
BudgetApproveWFHandler handler = new BudgetApproveWFHandler();
|
|||
|
handler.changeBudgetRevison(budgetid, 1, budgetperiods);
|
|||
|
|
|||
|
BudgetHandler.fnaBudgetInfoReverseInput(1, budgetid + "", inusefnabudgetinfoid, orgId, orgType, budgetperiods, currentdate, user);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 特殊处理(费用流程,在强制归档时,同时,已经配置生效、释放冻结预算)<br>
|
|||
|
* 145257 解决借款流程强制归档触发action逻辑错误的问题<br>
|
|||
|
* 1、强制删除、强制收回(收回至)创建节点、强制归档(选择成归档时释放预算)<br>
|
|||
|
* 系统表单、e7方式配置的费用流程、e8方式配置的费用流程(借款、还款、报销):释放借款、释放预算<br>
|
|||
|
* 2、强制归档(选择成归档时生效预算)<br>
|
|||
|
* 1)系统表单、e7方式配置的费用流程:生效审批中的费用,如果流程没有审批中费用,则不产生已发送费用<br>
|
|||
|
* 2)e8方式配置的费用流程(借款、还款、报销):<br>
|
|||
|
* 借款:流程节点中有配置过action.FnaBorrowEffectNew,则会产生借款(重新生成数据)<br>
|
|||
|
* 还款:流程节点中有配置过action.fnaBorrowReverseNew,则会产生还款(重新生成数据)<br>
|
|||
|
* 报销:<br>
|
|||
|
* 流程节点中有配置过action.fnaBorrowReverseNew,则会产生还款(重新生成数据)<br>
|
|||
|
* 流程节点中有配置过action.WorkflowFnaInWorkflowNew,则会产生审批中预算(重新生成数据)<br>
|
|||
|
* 流程节点中有配置过action.WorkflowFnaEffectNew,则会产生已发送预算(生效审批中数据)<br>
|
|||
|
* 流程节点中有配置过action.FnaChangeEffectNew,则会生效变更<br>
|
|||
|
* 流程节点中有配置过action.FnaShareEffectNew,则会生效分摊<br>
|
|||
|
* 系统表单:预算审批流转单 生效释放操作
|
|||
|
*
|
|||
|
* @param requestid 流程requestid
|
|||
|
* @param wfForceOverLogic 该参数的业务逻辑只有当流程处于归档节点才生效; 0:走删除逻辑;1:走生效逻辑;
|
|||
|
* @param forceDelete true:无视流程所处节点,无视流程是否已经被删除,强制走删除逻辑(无视参数:wfForceOverLogic);
|
|||
|
*/
|
|||
|
public void doWfForceOver(int requestid, int wfForceOverLogic, boolean forceDelete) {
|
|||
|
// new BaseBean().writeLog("doWfForceOver requestid="+requestid+";wfForceOverLogic="+wfForceOverLogic+";forceDelete="+forceDelete+";");
|
|||
|
RecordSet rs_1 = new RecordSet();
|
|||
|
|
|||
|
int currentnodetype = -1;
|
|||
|
if (forceDelete) {
|
|||
|
} else {
|
|||
|
String fnasql = "select currentnodetype from workflow_requestbase where requestid = " + requestid;
|
|||
|
rs_1.executeSql(fnasql);
|
|||
|
if (rs_1.next()) {
|
|||
|
currentnodetype = rs_1.getInt("currentnodetype");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//流程退回创建节点或者删除流程
|
|||
|
if (currentnodetype == 0 || (forceDelete && wfForceOverLogic == 0)) {
|
|||
|
try {
|
|||
|
//初始化发票状态
|
|||
|
FnaInvoiceCommon fnaInvoiceCommon = new FnaInvoiceCommon();
|
|||
|
fnaInvoiceCommon.doWfForceOver(requestid);
|
|||
|
} catch (Exception ex1) {
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (currentnodetype == 3 || (forceDelete && wfForceOverLogic == 0)) {
|
|||
|
if (wfForceOverLogic == 0) {
|
|||
|
try {
|
|||
|
//多维度上报,将当前审批流程中关联的C节点的状态修改成【草稿】,更新填报主表中的审批流程requestid为0
|
|||
|
TemplateFillReportBizNew ReportBiz = new TemplateFillReportBizNew();
|
|||
|
ReportBiz.updateStatusAndRequestid(requestid);
|
|||
|
} catch (Exception ex1) {
|
|||
|
}
|
|||
|
try {
|
|||
|
FnaAdvanceAmountControl fnaAdvanceAmountControl = new FnaAdvanceAmountControl();
|
|||
|
fnaAdvanceAmountControl.delFnaAdvanceInfoHaveLog(requestid);
|
|||
|
} catch (Exception ex1) {
|
|||
|
}
|
|||
|
try {
|
|||
|
FnaBorrowAmountControl fnaBorrowAmountControl = new FnaBorrowAmountControl();
|
|||
|
fnaBorrowAmountControl.delFnaBorrowInfoHaveLog(requestid);
|
|||
|
} catch (Exception ex1) {
|
|||
|
}
|
|||
|
try {
|
|||
|
FnaAmountControl fnaAmountControl = new FnaAmountControl();
|
|||
|
fnaAmountControl.delFnaExpenseInfo(requestid);
|
|||
|
} catch (Exception ex1) {
|
|||
|
}
|
|||
|
try {
|
|||
|
FnaChangeAmountControl control = new FnaChangeAmountControl();
|
|||
|
control.delFnaExpenseInfo(requestid);
|
|||
|
} catch (Exception ex1) {
|
|||
|
}
|
|||
|
try {
|
|||
|
FnaShareAmountControl control = new FnaShareAmountControl();
|
|||
|
control.delFnaExpenseInfo(requestid);
|
|||
|
} catch (Exception ex1) {
|
|||
|
}
|
|||
|
try {
|
|||
|
this.releaseBillFnaBudget(requestid);
|
|||
|
} catch (Exception ex1) {
|
|||
|
}
|
|||
|
|
|||
|
try {
|
|||
|
//释放(全面预算)
|
|||
|
FnaReleaseBudget fnaReleaseBudget = new FnaReleaseBudget();
|
|||
|
fnaReleaseBudget.releaseBudget(requestid);
|
|||
|
} catch (Exception ex1) {
|
|||
|
}
|
|||
|
try {
|
|||
|
//还原预算填报的变更流程数据
|
|||
|
new BaseBean().writeLog("doWfForceOver1111111111111111111111111111111111111111111111");
|
|||
|
FnaReimbursementUtils fnaReimbursementUtils = new FnaReimbursementUtils();
|
|||
|
fnaReimbursementUtils.delOldRequestEffectChangData(requestid);
|
|||
|
} catch (Exception ex1) {
|
|||
|
}
|
|||
|
} else if (wfForceOverLogic == 1) {
|
|||
|
String fnaWfType = "";
|
|||
|
boolean fnaWfTypeEnable = false;
|
|||
|
rs_1.executeSql("select b.fnaWfType, b.enable " +
|
|||
|
" from workflow_requestbase a " +
|
|||
|
" join fnaFeeWfInfo b on a.workflowid = b.workflowid " +
|
|||
|
" where a.requestid = " + requestid);
|
|||
|
if (rs_1.next()) {
|
|||
|
fnaWfType = Util.null2String(rs_1.getString("fnaWfType")).trim();
|
|||
|
fnaWfTypeEnable = (rs_1.getInt("enable") == 1);
|
|||
|
}
|
|||
|
|
|||
|
int formid = 0;
|
|||
|
int _workflowid = 0;
|
|||
|
rs_1.executeSql("select a.workflowid, b.formid " +
|
|||
|
" from workflow_requestbase a " +
|
|||
|
" join workflow_base b on a.workflowid = b.id " +
|
|||
|
" where a.requestid = " + requestid);
|
|||
|
if (rs_1.next()) {
|
|||
|
_workflowid = rs_1.getInt("workflowid");
|
|||
|
formid = rs_1.getInt("formid");
|
|||
|
}
|
|||
|
|
|||
|
if (!"".equals(fnaWfType)) {//是e8后台配置的某一类费用流程
|
|||
|
if (fnaWfTypeEnable) {//启用了的费用流程
|
|||
|
if ("advance".equals(fnaWfType)) {//是e8后台配置的预付款流程
|
|||
|
RequestService requestService = new RequestService();
|
|||
|
|
|||
|
//扣除-节点前附加操作
|
|||
|
String deductAdvanceNode1Ids = FnaWfSet.getActionSet4Wf(_workflowid, "deductAdvanceNode1Ids");
|
|||
|
//扣除-节点后附加操作
|
|||
|
String deductAdvanceNode2Ids = FnaWfSet.getActionSet4Wf(_workflowid, "deductAdvanceNode2Ids");
|
|||
|
//扣除-出口附加操作
|
|||
|
String deductAdvanceNode3Ids = FnaWfSet.getActionSet4Wf(_workflowid, "deductAdvanceNode3Ids");
|
|||
|
//配置了生成借款的action(FnaAdvanceEffectNew)
|
|||
|
if (!"".equals(deductAdvanceNode1Ids) || !"".equals(deductAdvanceNode2Ids) || !"".equals(deductAdvanceNode3Ids)) {
|
|||
|
RequestInfo requestInfo = requestService.getRequest(requestid);
|
|||
|
requestInfo.getRequestManager().setSrc("submit");
|
|||
|
requestInfo.getRequestManager().setFormid(formid);
|
|||
|
FnaAdvanceEffectNew fnaAdvanceEffectNew = new FnaAdvanceEffectNew();
|
|||
|
fnaAdvanceEffectNew.execute(requestInfo);
|
|||
|
}
|
|||
|
|
|||
|
} else if ("borrow".equals(fnaWfType)) {//是e8后台配置的借款流程
|
|||
|
RequestService requestService = new RequestService();
|
|||
|
|
|||
|
//扣除-节点前附加操作
|
|||
|
String deductBorrowNode1Ids = FnaWfSet.getActionSet4Wf(_workflowid, "deductBorrowNode1Ids");
|
|||
|
//扣除-节点后附加操作
|
|||
|
String deductBorrowNode2Ids = FnaWfSet.getActionSet4Wf(_workflowid, "deductBorrowNode2Ids");
|
|||
|
//扣除-出口附加操作
|
|||
|
String deductBorrowNode3Ids = FnaWfSet.getActionSet4Wf(_workflowid, "deductBorrowNode3Ids");
|
|||
|
//配置了生成借款的action(FnaBorrowEffectNew)
|
|||
|
if (!"".equals(deductBorrowNode1Ids) || !"".equals(deductBorrowNode2Ids) || !"".equals(deductBorrowNode3Ids)) {
|
|||
|
RequestInfo requestInfo = requestService.getRequest(requestid);
|
|||
|
requestInfo.getRequestManager().setSrc("submit");
|
|||
|
requestInfo.getRequestManager().setFormid(formid);
|
|||
|
FnaBorrowEffectNew fnaBorrowEffectNew = new FnaBorrowEffectNew();
|
|||
|
fnaBorrowEffectNew.execute(requestInfo);
|
|||
|
}
|
|||
|
|
|||
|
} else if ("repayment".equals(fnaWfType)) {//是e8后台配置的还款流程
|
|||
|
RequestService requestService = new RequestService();
|
|||
|
|
|||
|
//冲销借款-节点前附加操作
|
|||
|
String repaymentBorrowNode1Ids = FnaWfSet.getActionSet4Wf(_workflowid, "repaymentBorrowNode1Ids");
|
|||
|
//冲销借款-节点后附加操作
|
|||
|
String repaymentBorrowNode2Ids = FnaWfSet.getActionSet4Wf(_workflowid, "repaymentBorrowNode2Ids");
|
|||
|
//冲销借款-出口附加操作
|
|||
|
String repaymentBorrowNode3Ids = FnaWfSet.getActionSet4Wf(_workflowid, "repaymentBorrowNode3Ids");
|
|||
|
//配置了冲销借款的action(FnaBorrowReverseNew)
|
|||
|
if (!"".equals(repaymentBorrowNode1Ids) || !"".equals(repaymentBorrowNode2Ids) || !"".equals(repaymentBorrowNode3Ids)) {
|
|||
|
RequestInfo requestInfo = requestService.getRequest(requestid);
|
|||
|
requestInfo.getRequestManager().setSrc("submit");
|
|||
|
requestInfo.getRequestManager().setFormid(formid);
|
|||
|
FnaBorrowReverseNew fnaBorrowReverseNew = new FnaBorrowReverseNew();
|
|||
|
fnaBorrowReverseNew.execute(requestInfo);
|
|||
|
}
|
|||
|
|
|||
|
} else if ("fnaFeeWf".equals(fnaWfType)) {//是e8后台配置的报销流程
|
|||
|
RequestService requestService = new RequestService();
|
|||
|
|
|||
|
//冲销借款-节点前附加操作
|
|||
|
String repaymentBorrowNode1Ids = FnaWfSet.getActionSet4Wf(_workflowid, "repaymentBorrowNode1Ids");
|
|||
|
//冲销借款-节点后附加操作
|
|||
|
String repaymentBorrowNode2Ids = FnaWfSet.getActionSet4Wf(_workflowid, "repaymentBorrowNode2Ids");
|
|||
|
//冲销借款-出口附加操作
|
|||
|
String repaymentBorrowNode3Ids = FnaWfSet.getActionSet4Wf(_workflowid, "repaymentBorrowNode3Ids");
|
|||
|
//配置了冲销借款的action(fnaBorrowReverseNew)
|
|||
|
if (!"".equals(repaymentBorrowNode1Ids) || !"".equals(repaymentBorrowNode2Ids) || !"".equals(repaymentBorrowNode3Ids)) {
|
|||
|
RequestInfo requestInfo = requestService.getRequest(requestid);
|
|||
|
requestInfo.getRequestManager().setSrc("submit");
|
|||
|
requestInfo.getRequestManager().setFormid(formid);
|
|||
|
FnaBorrowReverseNew fnaBorrowReverseNew = new FnaBorrowReverseNew();
|
|||
|
fnaBorrowReverseNew.execute(requestInfo);
|
|||
|
}
|
|||
|
|
|||
|
//冻结-节点前附加操作
|
|||
|
String frozeNode1Ids = FnaWfSet.getActionSet4Wf(_workflowid, "frozeNode1Ids");
|
|||
|
//冻结-节点后附加操作
|
|||
|
String frozeNode2Ids = FnaWfSet.getActionSet4Wf(_workflowid, "frozeNode2Ids");
|
|||
|
//冻结-出口附加操作
|
|||
|
String frozeNode3Ids = FnaWfSet.getActionSet4Wf(_workflowid, "frozeNode3Ids");
|
|||
|
|
|||
|
//配置了冻结预算的action(workflowFnaInWorkflowNew)
|
|||
|
if ((!"".equals(frozeNode1Ids) || !"".equals(frozeNode2Ids) || !"".equals(frozeNode3Ids))) {
|
|||
|
RequestInfo requestInfo = requestService.getRequest(requestid);
|
|||
|
requestInfo.getRequestManager().setSrc("submit");
|
|||
|
requestInfo.getRequestManager().setFormid(formid);
|
|||
|
WorkflowFnaInWorkflowNew workflowFnaInWorkflowNew = new WorkflowFnaInWorkflowNew();
|
|||
|
workflowFnaInWorkflowNew.execute(requestInfo);
|
|||
|
}
|
|||
|
|
|||
|
//扣除-节点前附加操作
|
|||
|
String deductNode1Ids = FnaWfSet.getActionSet4Wf(_workflowid, "deductNode1Ids");
|
|||
|
//扣除-节点后附加操作
|
|||
|
String deductNode2Ids = FnaWfSet.getActionSet4Wf(_workflowid, "deductNode2Ids");
|
|||
|
//扣除-出口附加操作
|
|||
|
String deductNode3Ids = FnaWfSet.getActionSet4Wf(_workflowid, "deductNode3Ids");
|
|||
|
|
|||
|
//配置了扣除预算的action(WorkflowFnaEffectNew)
|
|||
|
if (!"".equals(deductNode1Ids) || !"".equals(deductNode2Ids) || !"".equals(deductNode3Ids)) {
|
|||
|
RequestInfo requestInfo = requestService.getRequest(requestid);
|
|||
|
requestInfo.getRequestManager().setSrc("submit");
|
|||
|
requestInfo.getRequestManager().setFormid(formid);
|
|||
|
WorkflowFnaEffectNew workflowFnaEffectNew = new WorkflowFnaEffectNew();
|
|||
|
workflowFnaEffectNew.execute(requestInfo);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//扣除-节点前附加操作
|
|||
|
String repaymentAdvanceNode1Ids = FnaWfSet.getActionSet4Wf(_workflowid, "repaymentAdvanceNode1Ids");
|
|||
|
//扣除-节点后附加操作
|
|||
|
String repaymentAdvanceNode2Ids = FnaWfSet.getActionSet4Wf(_workflowid, "repaymentAdvanceNode2Ids");
|
|||
|
//扣除-出口附加操作
|
|||
|
String repaymentAdvanceNode3Ids = FnaWfSet.getActionSet4Wf(_workflowid, "repaymentAdvanceNode3Ids");
|
|||
|
|
|||
|
//配置了冲销预付款的action(FnaAdvanceReverseNew)
|
|||
|
if (!"".equals(repaymentAdvanceNode1Ids) || !"".equals(repaymentAdvanceNode2Ids) || !"".equals(repaymentAdvanceNode3Ids)) {
|
|||
|
RequestInfo requestInfo = requestService.getRequest(requestid);
|
|||
|
requestInfo.getRequestManager().setSrc("submit");
|
|||
|
requestInfo.getRequestManager().setFormid(formid);
|
|||
|
FnaAdvanceReverseNew fnaAdvanceReverseNew = new FnaAdvanceReverseNew();
|
|||
|
fnaAdvanceReverseNew.execute(requestInfo);
|
|||
|
}
|
|||
|
|
|||
|
} else if ("change".equals(fnaWfType)) {//是e8后台配置的预算变更流程
|
|||
|
RequestService requestService = new RequestService();
|
|||
|
|
|||
|
String effectChangeNode1Ids = FnaWfSet.getActionSet4Wf(_workflowid, "effectChangeNode1Ids");
|
|||
|
String effectChangeNode2Ids = FnaWfSet.getActionSet4Wf(_workflowid, "effectChangeNode2Ids");
|
|||
|
String effectChangeNode3Ids = FnaWfSet.getActionSet4Wf(_workflowid, "effectChangeNode3Ids");
|
|||
|
if (!"".equals(effectChangeNode1Ids) || !"".equals(effectChangeNode2Ids) || !"".equals(effectChangeNode3Ids)) {
|
|||
|
RequestInfo requestInfo = requestService.getRequest(requestid);
|
|||
|
requestInfo.getRequestManager().setSrc("submit");
|
|||
|
requestInfo.getRequestManager().setFormid(formid);
|
|||
|
FnaChangeEffectNew fnaChangeEffectNew = new FnaChangeEffectNew();
|
|||
|
fnaChangeEffectNew.execute(requestInfo);
|
|||
|
}
|
|||
|
|
|||
|
} else if ("share".equals(fnaWfType)) {//是e8后台配置的费用分摊流程
|
|||
|
RequestService requestService = new RequestService();
|
|||
|
|
|||
|
String effectShareNode1Ids = FnaWfSet.getActionSet4Wf(_workflowid, "effectShareNode1Ids");
|
|||
|
String effectShareNode2Ids = FnaWfSet.getActionSet4Wf(_workflowid, "effectShareNode2Ids");
|
|||
|
String effectShareNode3Ids = FnaWfSet.getActionSet4Wf(_workflowid, "effectShareNode3Ids");
|
|||
|
if (!"".equals(effectShareNode1Ids) || !"".equals(effectShareNode2Ids) || !"".equals(effectShareNode3Ids)) {
|
|||
|
RequestInfo requestInfo = requestService.getRequest(requestid);
|
|||
|
requestInfo.getRequestManager().setSrc("submit");
|
|||
|
requestInfo.getRequestManager().setFormid(formid);
|
|||
|
FnaShareEffectNew fnaShareEffectNew = new FnaShareEffectNew();
|
|||
|
fnaShareEffectNew.execute(requestInfo);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
} else {//其他不是e8后台配置的费用流程统一处理,只将当前流程插入费用表的费用数据置为已发送状态,如果当前流程没有往费用表写如果费用数据,则什么都不做
|
|||
|
|
|||
|
//定位 数据库表名, 日期范围可能跨年
|
|||
|
List<String> list_out_FnaExpenseInfo = new ArrayList<String>();
|
|||
|
FnaSplitTableByYearComInfo.getFnaTableNameList(FnaTableNameEnum.FnaExpenseInfo, "1000-01-01", "9999-12-31", list_out_FnaExpenseInfo);
|
|||
|
//定位 数据库表名, 日期范围可能跨年
|
|||
|
for (int aaaaaaaa = 0; aaaaaaaa < list_out_FnaExpenseInfo.size(); aaaaaaaa++) {
|
|||
|
String tableName_FnaExpenseInfo = list_out_FnaExpenseInfo.get(aaaaaaaa);
|
|||
|
|
|||
|
rs_1.executeSql("update " + tableName_FnaExpenseInfo + " set status=1 where requestid=" + requestid);
|
|||
|
}//for end
|
|||
|
}
|
|||
|
|
|||
|
try {
|
|||
|
this.effectBillFnaBudget(requestid);
|
|||
|
} catch (Exception ex1) {
|
|||
|
}
|
|||
|
|
|||
|
//生效(全面预算)
|
|||
|
try {
|
|||
|
String frozeNode1Ids = FnaWorkflowUtil.getActionSet4MulWf(_workflowid, "mulFrozeNode1Ids");
|
|||
|
String frozeNode2Ids = FnaWorkflowUtil.getActionSet4MulWf(_workflowid, "mulFrozeNode2Ids");
|
|||
|
String frozeNode3Ids = FnaWorkflowUtil.getActionSet4MulWf(_workflowid, "mulFrozeNode3Ids");
|
|||
|
|
|||
|
String deductNode1Ids = FnaWorkflowUtil.getActionSet4MulWf(_workflowid, "mulDeductNode1Ids");
|
|||
|
String deductNode2Ids = FnaWorkflowUtil.getActionSet4MulWf(_workflowid, "mulDeductNode2Ids");
|
|||
|
String deductNode3Ids = FnaWorkflowUtil.getActionSet4MulWf(_workflowid, "mulDeductNode3Ids");
|
|||
|
|
|||
|
|
|||
|
boolean hasFroze = (!"".equals(frozeNode1Ids) || !"".equals(frozeNode2Ids) || !"".equals(frozeNode3Ids));
|
|||
|
boolean hasDeduct = (!"".equals(deductNode1Ids) || !"".equals(deductNode2Ids) || !"".equals(deductNode3Ids));
|
|||
|
|
|||
|
if (hasFroze || hasDeduct) {
|
|||
|
FnaFreezeBudget fnaFreezeBudget = new FnaFreezeBudget();
|
|||
|
if (hasDeduct) {
|
|||
|
fnaFreezeBudget.setDeductAction(Boolean.TRUE);
|
|||
|
}
|
|||
|
|
|||
|
RequestService requestService = new RequestService();
|
|||
|
RequestInfo requestInfo = requestService.getRequest(requestid);
|
|||
|
requestInfo.getRequestManager().setWorkflowid(_workflowid);
|
|||
|
requestInfo.getRequestManager().setFormid(formid);
|
|||
|
requestInfo.getRequestManager().setSrc("submit");
|
|||
|
User user = new User(1);
|
|||
|
user.setLanguage(7);
|
|||
|
requestInfo.getRequestManager().setUser(user);
|
|||
|
fnaFreezeBudget.execute(requestInfo);
|
|||
|
}
|
|||
|
} catch (Exception ex1) {
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获得有权限查看的流程的过滤条件的sql
|
|||
|
*
|
|||
|
* @param user
|
|||
|
* @param tableAliasNameForRequestId
|
|||
|
* @param tableAliasNameForWorkflowId
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String getCanQueryRequestSqlCondition(User user,
|
|||
|
String tableAliasNameForRequestId, String tableAliasNameForWorkflowId) {
|
|||
|
int userID = user.getUID();
|
|||
|
String usertype = "0";
|
|||
|
|
|||
|
if (user.getLogintype().equals("2")) {
|
|||
|
usertype = "1";
|
|||
|
}
|
|||
|
|
|||
|
return getCanQueryRequestSqlCondition(userID, usertype, tableAliasNameForRequestId, tableAliasNameForWorkflowId);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获得有权限查看的流程的过滤条件的sql
|
|||
|
*
|
|||
|
* @param userID
|
|||
|
* @param usertype
|
|||
|
* @param tableAliasNameForRequestId
|
|||
|
* @param tableAliasNameForWorkflowId
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String getCanQueryRequestSqlCondition(int userID, String usertype,
|
|||
|
String tableAliasNameForRequestId, String tableAliasNameForWorkflowId) {
|
|||
|
StringBuffer sqlwhere = new StringBuffer();
|
|||
|
sqlwhere.append(" and exists (select 1 from workflow_currentoperator b,workflow_base c where b.requestid = " + tableAliasNameForRequestId + ".requestid ");
|
|||
|
sqlwhere.append(" and b.userid in (" + userID);
|
|||
|
sqlwhere.append(" )and b.usertype=" + usertype
|
|||
|
+ " and " + tableAliasNameForWorkflowId + ".workflowid = c.id"
|
|||
|
+ " and c.isvalid in (1,3) and (c.istemplate is null or c.istemplate<>'1'))");
|
|||
|
sqlwhere.append(" ");
|
|||
|
return sqlwhere.toString();
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取生成选择借款流程借款明细的按钮
|
|||
|
*
|
|||
|
* @param jklc 无用
|
|||
|
* @param spanValue 默认显示内容
|
|||
|
* @param fieldid 字段id
|
|||
|
* @param derecorderindex 明细行行号
|
|||
|
* @param finCss 显示内容css样式
|
|||
|
* @param ismand 是否可编辑:1是;其他否;
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String getBtnRequestDtlBrowser(int jklc, String spanValue, int fieldid,
|
|||
|
String derecorderindex, String finCss, int ismand) {
|
|||
|
if (ismand == 1 && Util.getIntValue(spanValue) <= 0) {
|
|||
|
spanValue = "<img src='/images/BacoError_wev8.gif' align='absMiddle' />";
|
|||
|
}
|
|||
|
String spanStr = "<span id='field" + fieldid + "_" + derecorderindex + "span' style='" + finCss + "'>" + spanValue + "</span>";
|
|||
|
String inputStr = spanStr + "<div class='e8_innerShow e8_innerShow_button' " +
|
|||
|
" style='max-height:2200px;'>" +
|
|||
|
"<span class='e8_spanFloat'>" +
|
|||
|
"<span class='e8_browserSpan'>" +
|
|||
|
"<button class='e8_browflow' type='button' " +
|
|||
|
" id='field" + fieldid + "_" + derecorderindex + "_browserbtnfna' " +
|
|||
|
" onclick='onShowBrowser_fnaBorrowRequestDtl(this);'></button>" +
|
|||
|
"</span>" +
|
|||
|
"</span>" +
|
|||
|
"</div>";
|
|||
|
return inputStr;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取生成选择预付款流程预付款明细的按钮
|
|||
|
*
|
|||
|
* @param jklc 无用
|
|||
|
* @param spanValue 默认显示内容
|
|||
|
* @param fieldid 字段id
|
|||
|
* @param derecorderindex 明细行行号
|
|||
|
* @param finCss 显示内容css样式
|
|||
|
* @param ismand 是否可编辑:1是;其他否;
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String getBtnAdvanceRequestDtlBrowser(int jklc, String spanValue, int fieldid,
|
|||
|
String derecorderindex, String finCss, int ismand) {
|
|||
|
if (ismand == 1 && Util.getIntValue(spanValue) <= 0) {
|
|||
|
spanValue = "<img src='/images/BacoError_wev8.gif' align='absMiddle' />";
|
|||
|
}
|
|||
|
String spanStr = "<span id='field" + fieldid + "_" + derecorderindex + "span' style='" + finCss + "'>" + spanValue + "</span>";
|
|||
|
String inputStr = spanStr + "<div class='e8_innerShow e8_innerShow_button' " +
|
|||
|
" style='max-height:2200px;'>" +
|
|||
|
"<span class='e8_spanFloat'>" +
|
|||
|
"<span class='e8_browserSpan'>" +
|
|||
|
"<button class='e8_browflow' type='button' " +
|
|||
|
" id='field" + fieldid + "_" + derecorderindex + "_browserbtnfna' " +
|
|||
|
" onclick='onShowBrowser_fnaAdvanceRequestDtl(this);'></button>" +
|
|||
|
"</span>" +
|
|||
|
"</span>" +
|
|||
|
"</div>";
|
|||
|
return inputStr;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取生成查看借还款金额修改历史的按钮
|
|||
|
*
|
|||
|
* @param fieldid 字段id
|
|||
|
* @param derecorderindex 明细行行号
|
|||
|
* @param languageId 当前登录用户所用语言标识
|
|||
|
* @param detailRecordId 字段所在明细表序号
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String getBtnTzmx(int fieldid, String derecorderindex, int languageId, int detailRecordId) {
|
|||
|
String inputStr = "<input id='btnTzmx_field" + fieldid + "_" + derecorderindex + "' type='button' " +
|
|||
|
" value='" + SystemEnv.getHtmlLabelName(83211, languageId) + "' " +//查看金额修改历史
|
|||
|
" onclick='showAmountOfHistory_onclick(this);' " +
|
|||
|
" _detailRecordId='" + detailRecordId + "' " +
|
|||
|
" class='e8_btn_top' style='margin-left:5px;' />";
|
|||
|
return inputStr;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取生成查看预付款金额修改历史的按钮
|
|||
|
*
|
|||
|
* @param fieldid 字段id
|
|||
|
* @param derecorderindex 明细行行号
|
|||
|
* @param languageId 当前登录用户所用语言标识
|
|||
|
* @param detailRecordId 字段所在明细表序号
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String getBtnTzmxAdvance(int fieldid, String derecorderindex, int languageId, int detailRecordId) {
|
|||
|
String inputStr = "<input id='btnTzmx_field" + fieldid + "_" + derecorderindex + "' type='button' " +
|
|||
|
" value='" + SystemEnv.getHtmlLabelName(83211, languageId) + "' " +//查看金额修改历史
|
|||
|
" onclick='showAmountOfHistory_onclick(this);' " +
|
|||
|
" _detailRecordId='" + detailRecordId + "' " +
|
|||
|
" class='e8_btn_top' style='margin-left:5px;' />";
|
|||
|
return inputStr;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取生成查询相关还款流程的按钮
|
|||
|
*
|
|||
|
* @param fieldid 字段id
|
|||
|
* @param derecorderindex 明细行行号
|
|||
|
* @param languageId 当前登录用户所用语言标识
|
|||
|
* @param detailRecordId 字段所在明细表序号
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String getBtnXghklc(int fieldid, String derecorderindex, int languageId, int detailRecordId) {
|
|||
|
String inputStr = "<input id='btnXghklc_field" + fieldid + "_" + derecorderindex + "' type='button' " +
|
|||
|
" value='" + SystemEnv.getHtmlLabelName(367, languageId) + "' " +//查看
|
|||
|
" onclick='showRelatedProcess_onclick(this);' " +
|
|||
|
" _detailRecordId='" + detailRecordId + "' " +
|
|||
|
" class='e8_btn_top' style='margin-left:5px;' />";
|
|||
|
return inputStr;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 检查指定流程指定字段是否是指定类型的预算类流程字段
|
|||
|
*
|
|||
|
* @param workflowid 流程wfid
|
|||
|
* @param fieldId 字段id
|
|||
|
* @param fieldType 字段类型
|
|||
|
* @param dtlNumber 明细表序号
|
|||
|
* @param fnaWfType 预算类流程类型
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static boolean checkFnaWfFieldFnaType(int workflowid, int fieldId, int fieldType, int dtlNumber, String fnaWfType) {
|
|||
|
RecordSet rs_fna = new RecordSet();
|
|||
|
|
|||
|
String sql = "select count(*) cnt from fnaFeeWfInfoField a join fnaFeeWfInfo b on b.id = a.MAINID \n" +
|
|||
|
" where a.DTLNUMBER = " + dtlNumber + " and a.fieldType = " + fieldType + " and a.fieldId = " + fieldId + " " +
|
|||
|
" and b.FNAWFTYPE = '" + StringEscapeUtils.escapeSql(fnaWfType) + "' and a.workflowid = " + workflowid;
|
|||
|
rs_fna.executeSql(sql);
|
|||
|
if (rs_fna.next() && rs_fna.getInt("cnt") > 0) {
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取相关还款流程配置信息
|
|||
|
*
|
|||
|
* @param _workflowid
|
|||
|
* @return 是否是借款费控流程:key:isEnableFnaRepaymentWf;value:true、false;<br>
|
|||
|
* 流程表单id:key:formId;value:表单id;<br>
|
|||
|
* 流程是否新表单:key:isbill;value:0、1;
|
|||
|
*/
|
|||
|
public static HashMap<String, String> getIsEnableFnaRepaymentWfHm(int _workflowid) {
|
|||
|
BaseBean _bb = new BaseBean();
|
|||
|
RecordSet rs_fna = new RecordSet();
|
|||
|
|
|||
|
HashMap<String, String> retHm = new HashMap<String, String>();
|
|||
|
|
|||
|
//是否是系统表单的费控流程
|
|||
|
int _formId = 0;
|
|||
|
int _isbill = -1;
|
|||
|
String sqlFna1 = "select a.formid, a.isbill from workflow_base a where a.id = " + _workflowid;
|
|||
|
rs_fna.executeSql(sqlFna1);
|
|||
|
if (rs_fna.next()) {
|
|||
|
_formId = Util.getIntValue(rs_fna.getString("formid"), 0);
|
|||
|
_isbill = Util.getIntValue(rs_fna.getString("isbill"), 0);
|
|||
|
}
|
|||
|
retHm.put("formId", _formId + "");
|
|||
|
retHm.put("isbill", _isbill + "");
|
|||
|
|
|||
|
//是否是启用的Ecology8还款费控流程
|
|||
|
retHm.put("isEnableFnaRepaymentWf", "false");
|
|||
|
String sqlFnaWfSet = "select a.enable from fnaFeeWfInfo a where a.fnaWfType = 'repayment' and a.workflowid = " + _workflowid;
|
|||
|
rs_fna.executeSql(sqlFnaWfSet);
|
|||
|
if (rs_fna.next()) {
|
|||
|
if (rs_fna.getInt("enable") == 1) {
|
|||
|
retHm.put("isEnableFnaRepaymentWf", "true");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return retHm;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取相关借款流程配置信息
|
|||
|
*
|
|||
|
* @param _workflowid
|
|||
|
* @return 是否是借款费控流程:key:isEnableFnaBorrowWf;value:true、false;<br>
|
|||
|
* 流程表单id:key:formId;value:表单id;<br>
|
|||
|
* 流程是否新表单:key:isbill;value:0、1;
|
|||
|
*/
|
|||
|
public static HashMap<String, String> getIsEnableFnaBorrowWfHm(int _workflowid) {
|
|||
|
BaseBean _bb = new BaseBean();
|
|||
|
RecordSet rs_fna = new RecordSet();
|
|||
|
|
|||
|
HashMap<String, String> retHm = new HashMap<String, String>();
|
|||
|
|
|||
|
//是否是系统表单的费控流程
|
|||
|
int _formId = 0;
|
|||
|
int _isbill = -1;
|
|||
|
String sqlFna1 = "select a.formid, a.isbill from workflow_base a where a.id = " + _workflowid;
|
|||
|
rs_fna.executeSql(sqlFna1);
|
|||
|
if (rs_fna.next()) {
|
|||
|
_formId = Util.getIntValue(rs_fna.getString("formid"), 0);
|
|||
|
_isbill = Util.getIntValue(rs_fna.getString("isbill"), 0);
|
|||
|
}
|
|||
|
retHm.put("formId", _formId + "");
|
|||
|
retHm.put("isbill", _isbill + "");
|
|||
|
|
|||
|
//是否是启用的Ecology8借款费控流程
|
|||
|
retHm.put("isEnableFnaBorrowWf", "false");
|
|||
|
String sqlFnaWfSet = "select a.enable from fnaFeeWfInfo a where a.fnaWfType = 'borrow' and a.workflowid = " + _workflowid;
|
|||
|
rs_fna.executeSql(sqlFnaWfSet);
|
|||
|
if (rs_fna.next()) {
|
|||
|
if (rs_fna.getInt("enable") == 1) {
|
|||
|
retHm.put("isEnableFnaBorrowWf", "true");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return retHm;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 拆封in中的值的长度,防止超过999调后sql执行报错
|
|||
|
*
|
|||
|
* @param condStr 完整的值
|
|||
|
* @param splitNumber 拆分长度
|
|||
|
* @param chr1 ,号
|
|||
|
* @param df 如果值是字符串则传入null
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static List splitToListForSqlCond(String condStr, int splitNumber, String chr1, DecimalFormat df) {
|
|||
|
List condList = new ArrayList();
|
|||
|
|
|||
|
String[] _reqIdArray = condStr.split(",");
|
|||
|
int _reqIdArrayLen = _reqIdArray.length;
|
|||
|
int _reqIdArrayIndex = 0;
|
|||
|
while (_reqIdArrayIndex < _reqIdArrayLen) {
|
|||
|
StringBuffer _reqIdArrayCond = new StringBuffer("");
|
|||
|
for (int i = 0; i < splitNumber; i++) {
|
|||
|
if (_reqIdArrayIndex == _reqIdArrayLen) {
|
|||
|
break;
|
|||
|
}
|
|||
|
if (_reqIdArrayCond.length() > 0) {
|
|||
|
_reqIdArrayCond.append(chr1);
|
|||
|
}
|
|||
|
String _key = _reqIdArray[_reqIdArrayIndex];
|
|||
|
if (df == null) {
|
|||
|
_reqIdArrayCond.append("'" + StringEscapeUtils.escapeSql(_key) + "'");
|
|||
|
} else {
|
|||
|
_reqIdArrayCond.append(df.format(Util.getDoubleValue(_key, 0)));
|
|||
|
}
|
|||
|
_reqIdArrayIndex++;
|
|||
|
}
|
|||
|
|
|||
|
condList.add(_reqIdArrayCond.toString());
|
|||
|
}
|
|||
|
|
|||
|
return condList;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取报销单位浏览按钮类型,依据报销类型
|
|||
|
*
|
|||
|
* @param fieldid 字段id
|
|||
|
* @param oldBtnType 转义前对应的承担主体流程表单字段的字段的浏览按钮类型
|
|||
|
* @param detailRecordId 明细表数据库记录id值
|
|||
|
* @param requestId 流程reqid
|
|||
|
* @param fnaWfSetMap 预算流程字段对应关系hm对象
|
|||
|
* @param reqDataMap 流程数据hm对象
|
|||
|
* @param languageId 当前登录人员语言标识
|
|||
|
* @param otherPara_hs 调用该函数的流程方法内有一个同名变量
|
|||
|
* @param otherReturnVal 返回值hm对象
|
|||
|
* @return 转义后对应的承担主体流程表单字段的字段的浏览按钮类型
|
|||
|
*/
|
|||
|
public static int getOrgBtnTypeByFnaFieldType(int fieldid, int oldBtnType, int detailRecordId, int requestId,
|
|||
|
Map<String, String> fnaWfSetMap, HashMap<String, HashMap<String, String>> reqDataMap,
|
|||
|
int languageId,
|
|||
|
Hashtable otherPara_hs, HashMap<String, String> otherReturnVal) {
|
|||
|
return FnaCommon.getOrgBtnTypeByFnaFieldType(fieldid, oldBtnType, detailRecordId + "", requestId,
|
|||
|
fnaWfSetMap, reqDataMap,
|
|||
|
languageId,
|
|||
|
otherPara_hs, otherReturnVal);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 依据承担主体类型获取承担主体名称
|
|||
|
*
|
|||
|
* @param oldOrgName 转义前的承担主体名称
|
|||
|
* @param _detailFieldId 字段id
|
|||
|
* @param requestid 流程reqid
|
|||
|
* @param rowIdx 明细行行号
|
|||
|
* @param fnaWfType 财务类流程类型标识
|
|||
|
* @param fnaWfSetMap 预算流程字段对应关系hm对象
|
|||
|
* @param reqDataMap 流程数据hm对象
|
|||
|
* @param otherPara_hs 调用该函数的流程方法内有一个同名变量
|
|||
|
* @param language 当前登录人员语言标识
|
|||
|
* @param rci 人员缓存类对象
|
|||
|
* @param dci 部门缓存类对象
|
|||
|
* @param scci 分部缓存类对象
|
|||
|
* @param fccListHm 成本中心缓存对象
|
|||
|
* @return 转义后的承担主体名称
|
|||
|
*/
|
|||
|
public static String getOrgNameByOrgType(String oldOrgName, int _detailFieldId, int requestid, int rowIdx,
|
|||
|
String fnaWfType, HashMap<String, String> fnaWfSetMap, HashMap<String, HashMap<String, String>> reqDataMap, Hashtable otherPara_hs,
|
|||
|
int language, ResourceComInfo rci, DepartmentComInfo dci, SubCompanyComInfo scci, HashMap<String, HashMap<String, String>> fccListHm) {
|
|||
|
if ("fnaFeeWf".equals(fnaWfType) || "change".equals(fnaWfType) || "share".equals(fnaWfType)) {//报销流程;预算变更;费用分摊;
|
|||
|
if ("fieldIdOrgId_fieldId".equals(fnaWfSetMap.get(_detailFieldId + "")) || "fieldIdOrgId2_fieldId".equals(fnaWfSetMap.get(_detailFieldId + ""))) {
|
|||
|
FnaSystemSetComInfo fnaSystemSetComInfo = new FnaSystemSetComInfo();
|
|||
|
int wfDtlImpRole4Fcc = Util.getIntValue(fnaSystemSetComInfo.get_wfDtlImpRole4Fcc(), 0);//成本中心字段流程明细导入规则
|
|||
|
|
|||
|
int oldBtnType = Util.getIntValue(fnaWfSetMap.get("fieldIdOrgId_type"));
|
|||
|
String detailRecordKey = "key_idx>>" + rowIdx;
|
|||
|
HashMap<String, String> otherReturnVal = new HashMap<String, String>();
|
|||
|
int newBtnType = FnaCommon.getOrgBtnTypeByFnaFieldType(_detailFieldId, oldBtnType, detailRecordKey, requestid,
|
|||
|
fnaWfSetMap, reqDataMap,
|
|||
|
language,
|
|||
|
otherPara_hs, otherReturnVal);
|
|||
|
HashMap<String, String> reqOneRowDataMap = reqDataMap.get(detailRecordKey);
|
|||
|
int _organizationid_value = 0;
|
|||
|
if (reqOneRowDataMap != null) {
|
|||
|
if ("fieldIdOrgId_fieldId".equals(fnaWfSetMap.get(_detailFieldId + ""))) {
|
|||
|
_organizationid_value = Util.getIntValue(reqOneRowDataMap.get("organizationid"), -1);
|
|||
|
} else if ("fieldIdOrgId2_fieldId".equals(fnaWfSetMap.get(_detailFieldId + ""))) {
|
|||
|
_organizationid_value = Util.getIntValue(reqOneRowDataMap.get("organizationid2"), -1);
|
|||
|
}
|
|||
|
}
|
|||
|
if (newBtnType != oldBtnType && _organizationid_value > 0) {
|
|||
|
String newOrgName = oldOrgName;
|
|||
|
if (newBtnType == 1) {//个人
|
|||
|
newOrgName = Util.null2String(rci.getLastname(_organizationid_value + ""));
|
|||
|
} else if (newBtnType == 4) {//部门
|
|||
|
newOrgName = Util.null2String(dci.getDepartmentname(_organizationid_value + ""));
|
|||
|
} else if (newBtnType == 164) {//分部
|
|||
|
newOrgName = Util.null2String(scci.getSubCompanyname(_organizationid_value + ""));
|
|||
|
} else if (newBtnType == 251) {//成本中心
|
|||
|
HashMap<String, String> fccHm = fccListHm.get(_organizationid_value + "");
|
|||
|
if (fccHm != null) {
|
|||
|
if (wfDtlImpRole4Fcc == 1) {
|
|||
|
newOrgName = Util.null2String(fccHm.get("code")).trim();
|
|||
|
} else if (wfDtlImpRole4Fcc == 2) { //成本中心全路径名称
|
|||
|
newOrgName = RequestDetailImportUtil.getCostCenterFullName(_organizationid_value + "");
|
|||
|
} else {
|
|||
|
newOrgName = Util.null2String(fccHm.get("name")).trim();
|
|||
|
}
|
|||
|
} else {
|
|||
|
newOrgName = "";
|
|||
|
}
|
|||
|
}
|
|||
|
oldOrgName = newOrgName;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return oldOrgName;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 依据流程选择框的名称,获取选择框的值,并依据选择框的值,返回对应的承担主体浏览按钮的类型
|
|||
|
*
|
|||
|
* @param oldBtnType 转义前对应的承担主体流程表单字段的字段的浏览按钮类型
|
|||
|
* @param orgIdFieldId 承担主体浏览按钮的fieldid
|
|||
|
* @param orgTypeFieldId 承担主体类型按钮的fieldid
|
|||
|
* @param orgTypeSelectName 承担主体类型选择框选择的名称
|
|||
|
* @param requestid 流程reqid
|
|||
|
* @param language 当前登录人员语言标识
|
|||
|
* @param fnaWfSetMap 预算流程字段对应关系hm对象
|
|||
|
* @param reqDataMap 流程数据hm对象
|
|||
|
* @param otherPara_hs 调用该函数的流程方法内有一个同名变量
|
|||
|
* @return 转义后对应的承担主体流程表单字段的字段的浏览按钮类型
|
|||
|
*/
|
|||
|
public static int getOrgSelectValueByOrgTypeSelectName(int oldBtnType, int orgIdFieldId, int orgTypeFieldId, String orgTypeSelectName,
|
|||
|
int requestid, int language,
|
|||
|
HashMap<String, String> fnaWfSetMap, HashMap<String, HashMap<String, String>> reqDataMap, Hashtable otherPara_hs) {
|
|||
|
RecordSet rs_fna = new RecordSet();
|
|||
|
|
|||
|
String languageIdStr = "";
|
|||
|
if (language > 9) {
|
|||
|
languageIdStr = language + "";
|
|||
|
} else {
|
|||
|
languageIdStr = language + " ";
|
|||
|
}
|
|||
|
|
|||
|
int newBtnType = oldBtnType;
|
|||
|
int selectvalue = -1;
|
|||
|
String _sql = "select a.selectvalue \n" +
|
|||
|
" from workflow_SelectItem a \n" +
|
|||
|
" where 1=1 and (a.cancel is null or a.cancel = 0) " +
|
|||
|
" and (a.selectname like '%`~`" + languageIdStr + StringEscapeUtils.escapeSql(orgTypeSelectName) + "`~`%' or a.selectname = '" + StringEscapeUtils.escapeSql(orgTypeSelectName) + "') \n" +
|
|||
|
" and a.fieldid = " + orgTypeFieldId +
|
|||
|
" order by a.listorder asc";
|
|||
|
rs_fna.executeSql(_sql);
|
|||
|
if (rs_fna.next()) {
|
|||
|
selectvalue = rs_fna.getInt("selectvalue");
|
|||
|
}
|
|||
|
if (selectvalue == 0) {
|
|||
|
newBtnType = 1;
|
|||
|
} else if (selectvalue == 1) {
|
|||
|
newBtnType = 4;
|
|||
|
} else if (selectvalue == 2) {
|
|||
|
newBtnType = 164;
|
|||
|
} else if (selectvalue == 3) {
|
|||
|
newBtnType = 251;
|
|||
|
} else {
|
|||
|
int detailRecordId = 0;
|
|||
|
HashMap<String, String> otherReturnVal = new HashMap<String, String>();
|
|||
|
newBtnType = FnaCommon.getOrgBtnTypeByFnaFieldType(orgIdFieldId, oldBtnType, detailRecordId, requestid,
|
|||
|
fnaWfSetMap, reqDataMap,
|
|||
|
language,
|
|||
|
otherPara_hs, otherReturnVal);
|
|||
|
}
|
|||
|
return newBtnType;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取报销单位浏览按钮类型,依据报销类型
|
|||
|
*
|
|||
|
* @param fieldid
|
|||
|
* @param oldBtnType
|
|||
|
* @param detailRecordKey
|
|||
|
* @param requestId
|
|||
|
* @param fnaWfSetMap
|
|||
|
* @param reqDataMap
|
|||
|
* @param languageId
|
|||
|
* @param otherPara_hs
|
|||
|
* @param otherReturnVal
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static int getOrgBtnTypeByFnaFieldType(int fieldid, int oldBtnType, String detailRecordKey, int requestId,
|
|||
|
Map<String, String> fnaWfSetMap, HashMap<String, HashMap<String, String>> reqDataMap,
|
|||
|
int languageId,
|
|||
|
Hashtable otherPara_hs, HashMap<String, String> otherReturnVal) {
|
|||
|
BaseBean _bb = new BaseBean();
|
|||
|
RecordSet rs_fna = new RecordSet();
|
|||
|
detailRecordKey = Util.null2String(detailRecordKey).trim();
|
|||
|
|
|||
|
// _bb.writeLog("getOrgBtnTypeByFnaFieldType");
|
|||
|
|
|||
|
WFLayoutToHtml wfLayoutToHtml = new WFLayoutToHtml();
|
|||
|
|
|||
|
int fieldid_tmp = Util.getIntValue((String) otherPara_hs.get("fieldid_tmp"));
|
|||
|
int fieldhtmltype_tmp = Util.getIntValue((String) otherPara_hs.get("fieldhtmltype_tmp"));
|
|||
|
int type_tmp = Util.getIntValue((String) otherPara_hs.get("type_tmp"));
|
|||
|
|
|||
|
Hashtable inoperatefield_hs = (Hashtable) otherPara_hs.get("inoperatefield_hs");
|
|||
|
if (inoperatefield_hs == null) {
|
|||
|
inoperatefield_hs = new Hashtable();
|
|||
|
}
|
|||
|
Hashtable fieldvalue_hs = (Hashtable) otherPara_hs.get("fieldvalue_hs");
|
|||
|
if (fieldvalue_hs == null) {
|
|||
|
fieldvalue_hs = new Hashtable();
|
|||
|
}
|
|||
|
Map fieldMap = (Map) otherPara_hs.get("fieldMap");
|
|||
|
if (fieldMap == null) {
|
|||
|
fieldMap = new HashMap();
|
|||
|
}
|
|||
|
|
|||
|
ResourceComInfo resourceComInfo = (ResourceComInfo) otherPara_hs.get("resourceComInfo");
|
|||
|
if (resourceComInfo == null) {
|
|||
|
try {
|
|||
|
resourceComInfo = new ResourceComInfo();
|
|||
|
} catch (Exception e) {
|
|||
|
_bb.writeLog(e);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
String prjid = Util.null2String((String) otherPara_hs.get("prjid")).trim();
|
|||
|
String docid = Util.null2String((String) otherPara_hs.get("docid")).trim();
|
|||
|
String dt_beagenter = Util.null2String((String) otherPara_hs.get("dt_beagenter")).trim();
|
|||
|
String hrmid = Util.null2String((String) otherPara_hs.get("hrmid")).trim();
|
|||
|
int body_isagent = Util.getIntValue((String) otherPara_hs.get("body_isagent"));
|
|||
|
int agenttype = Util.getIntValue((String) otherPara_hs.get("agenttype"));
|
|||
|
|
|||
|
String crmid = Util.null2String((String) otherPara_hs.get("crmid")).trim();
|
|||
|
String reqid = Util.null2String((String) otherPara_hs.get("reqid")).trim();
|
|||
|
|
|||
|
int organizationtype = -1;
|
|||
|
|
|||
|
boolean _isDbDataFlag = false;
|
|||
|
|
|||
|
HashMap<String, String> reqOneRowDataMap = null;
|
|||
|
// new BaseBean().writeLog("reqDataMap="+reqDataMap+";requestId="+requestId+";");
|
|||
|
if (reqDataMap != null && requestId > 0) {
|
|||
|
String fieldIdSubject_isDtl = Util.null2String(fnaWfSetMap.get("fieldIdSubject_fieldId_isDtl"));
|
|||
|
String fieldIdOrgType_isDtl = Util.null2String(fnaWfSetMap.get("fieldIdOrgType_fieldId_isDtl"));
|
|||
|
String fieldIdOrgId_isDtl = Util.null2String(fnaWfSetMap.get("fieldIdOrgId_fieldId_isDtl"));
|
|||
|
String fieldIdOccurdate_isDtl = Util.null2String(fnaWfSetMap.get("fieldIdOccurdate_fieldId_isDtl"));
|
|||
|
|
|||
|
//报销明细中是否包含了明细表字段
|
|||
|
boolean dt1_haveIsDtlField = ("1".equals(fieldIdSubject_isDtl) || "1".equals(fieldIdOrgType_isDtl) || "1".equals(fieldIdOrgId_isDtl) || "1".equals(fieldIdOccurdate_isDtl));
|
|||
|
// new BaseBean().writeLog("fieldIdSubject_isDtl="+fieldIdSubject_isDtl+";");
|
|||
|
// new BaseBean().writeLog("fieldIdOrgType_isDtl="+fieldIdOrgType_isDtl+";");
|
|||
|
// new BaseBean().writeLog("***************fieldIdOrgId_isDtl="+fieldIdOrgId_isDtl+";");
|
|||
|
// new BaseBean().writeLog("fieldIdOccurdate_isDtl="+fieldIdOccurdate_isDtl+";");
|
|||
|
// new BaseBean().writeLog("***************dt1_haveIsDtlField="+dt1_haveIsDtlField+";");
|
|||
|
|
|||
|
if (!"1".equals(fieldIdOrgId_isDtl) && dt1_haveIsDtlField) {//承担主体是主表,但是,有其他字段是明细表时,随便取reqDataMap中的一个值中即可
|
|||
|
// new BaseBean().writeLog("reqDataMap="+reqDataMap+";");
|
|||
|
Iterator iter = reqDataMap.entrySet().iterator();
|
|||
|
// new BaseBean().writeLog("iter="+iter+";");
|
|||
|
if (iter.hasNext()) {
|
|||
|
Map.Entry entry = (Map.Entry) iter.next();
|
|||
|
// new BaseBean().writeLog("entry="+entry+";");
|
|||
|
reqOneRowDataMap = (HashMap<String, String>) entry.getValue();
|
|||
|
// new BaseBean().writeLog("1 reqOneRowDataMap="+reqOneRowDataMap+";");
|
|||
|
}
|
|||
|
} else if ((!"".equals(detailRecordKey) && detailRecordKey.startsWith("key_idx>>")) || Util.getIntValue(detailRecordKey) > 0) {//先检查是否是来自明细,如果是来自明细则使用明细id获取数据
|
|||
|
reqOneRowDataMap = reqDataMap.get(detailRecordKey + "");
|
|||
|
} else if (requestId > 0) {//如果不是来自明细则使用主表requestid来获取数据
|
|||
|
reqOneRowDataMap = reqDataMap.get(requestId + "");
|
|||
|
}
|
|||
|
}
|
|||
|
// new BaseBean().writeLog("f reqOneRowDataMap="+reqOneRowDataMap+";");
|
|||
|
|
|||
|
if (reqOneRowDataMap == null) {//数据库里面没有记录
|
|||
|
// fnaWfSetMap
|
|||
|
// requestId
|
|||
|
// detailRecordKey
|
|||
|
|
|||
|
String formid = Util.null2String(fnaWfSetMap.get("formid"));
|
|||
|
int formidABS = Math.abs(Util.getIntValue(formid, 0));
|
|||
|
if (formidABS > 0) {
|
|||
|
String fieldIdOrgType_fieldName = "";
|
|||
|
String fieldIdOrgType_fieldId_isDtl = "";
|
|||
|
|
|||
|
if ("fieldIdOrgId_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) {
|
|||
|
fieldIdOrgType_fieldName = Util.null2String(fnaWfSetMap.get("fieldIdOrgType_fieldName")).trim();
|
|||
|
fieldIdOrgType_fieldId_isDtl = Util.null2String(fnaWfSetMap.get("fieldIdOrgType_fieldId_isDtl")).trim();
|
|||
|
} else if ("fieldIdOrgId2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) {
|
|||
|
fieldIdOrgType_fieldName = Util.null2String(fnaWfSetMap.get("fieldIdOrgType2_fieldName")).trim();
|
|||
|
fieldIdOrgType_fieldId_isDtl = Util.null2String(fnaWfSetMap.get("fieldIdOrgType2_fieldId_isDtl")).trim();
|
|||
|
}
|
|||
|
|
|||
|
if (!"".equals(fieldIdOrgType_fieldName)) {
|
|||
|
StringBuffer sqlQry = new StringBuffer();
|
|||
|
sqlQry.append("select t.").append(fieldIdOrgType_fieldName).append(" orgType ");
|
|||
|
|
|||
|
sqlQry.append(" from ");
|
|||
|
if (!"1".equals(fieldIdOrgType_fieldId_isDtl)) {
|
|||
|
sqlQry.append(" formtable_main_").append(formidABS).append(" t ");
|
|||
|
} else {
|
|||
|
sqlQry.append(" formtable_main_").append(formidABS).append(" main ");
|
|||
|
sqlQry.append(" join ").append("formtable_main_").append(formidABS).append("_dt1 t on main.id = t.mainid ");
|
|||
|
}
|
|||
|
|
|||
|
sqlQry.append(" where 1=1 ");
|
|||
|
|
|||
|
if (!"1".equals(fieldIdOrgType_fieldId_isDtl)) {
|
|||
|
} else {
|
|||
|
sqlQry.append(" and t.id=? ");
|
|||
|
}
|
|||
|
|
|||
|
sqlQry.append(" and ");
|
|||
|
if (!"1".equals(fieldIdOrgType_fieldId_isDtl)) {
|
|||
|
sqlQry.append("t.");
|
|||
|
} else {
|
|||
|
sqlQry.append("main.");
|
|||
|
}
|
|||
|
sqlQry.append("requestid=? ");
|
|||
|
|
|||
|
RecordSet rs_sqlQry = new RecordSet();
|
|||
|
if (!"1".equals(fieldIdOrgType_fieldId_isDtl)) {
|
|||
|
rs_sqlQry.executeQuery(sqlQry.toString(), requestId);
|
|||
|
} else {
|
|||
|
rs_sqlQry.executeQuery(sqlQry.toString(), detailRecordKey, requestId);
|
|||
|
}
|
|||
|
if (rs_sqlQry.next()) {
|
|||
|
String _orgTypeValue = Util.null2String(rs_sqlQry.getString("orgType")).trim();
|
|||
|
|
|||
|
reqOneRowDataMap = new HashMap<String, String>();
|
|||
|
if ("fieldIdOrgId_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) {
|
|||
|
reqOneRowDataMap.put("organizationtype", _orgTypeValue);
|
|||
|
} else if ("fieldIdOrgId2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) {
|
|||
|
reqOneRowDataMap.put("organizationtype2", _orgTypeValue);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
// new BaseBean().writeLog("f1 reqOneRowDataMap="+reqOneRowDataMap+";");
|
|||
|
|
|||
|
if (reqOneRowDataMap != null) {//数据库里面有记录,表示是历史行
|
|||
|
organizationtype = -1;
|
|||
|
if ("fieldIdOrgId_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) {
|
|||
|
organizationtype = Util.getIntValue(reqOneRowDataMap.get("organizationtype"), -1);
|
|||
|
} else if ("fieldIdOrgId2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) {
|
|||
|
organizationtype = Util.getIntValue(reqOneRowDataMap.get("organizationtype2"), -1);
|
|||
|
}
|
|||
|
_isDbDataFlag = true;
|
|||
|
// _bb.writeLog("1 organizationtype="+organizationtype);
|
|||
|
|
|||
|
} else {//数据库中无纪律,表示是新增行
|
|||
|
int ortType_fieldid_tmp = 0;
|
|||
|
int ortType_fieldhtmltype_tmp = 0;
|
|||
|
int ortType_type_tmp = 0;
|
|||
|
if ("fieldIdOrgId_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) {
|
|||
|
ortType_fieldid_tmp = Util.getIntValue(fnaWfSetMap.get("fieldIdOrgType_fieldId"));
|
|||
|
ortType_fieldhtmltype_tmp = Util.getIntValue(fnaWfSetMap.get("fieldIdOrgType_fieldhtmltype"));
|
|||
|
ortType_type_tmp = Util.getIntValue(fnaWfSetMap.get("fieldIdOrgType_type"));
|
|||
|
} else if ("fieldIdOrgId2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) {
|
|||
|
ortType_fieldid_tmp = Util.getIntValue(fnaWfSetMap.get("fieldIdOrgType2_fieldId"));
|
|||
|
ortType_fieldhtmltype_tmp = Util.getIntValue(fnaWfSetMap.get("fieldIdOrgType2_fieldhtmltype"));
|
|||
|
ortType_type_tmp = Util.getIntValue(fnaWfSetMap.get("fieldIdOrgType2_type"));
|
|||
|
}
|
|||
|
|
|||
|
// _bb.writeLog("ortType_fieldid_tmp="+ortType_fieldid_tmp+";ortType_fieldhtmltype_tmp="+ortType_fieldhtmltype_tmp+";ortType_type_tmp="+ortType_type_tmp);
|
|||
|
|
|||
|
String fieldvalue_tmp = wfLayoutToHtml.getFieldValueTmp(ortType_fieldid_tmp, ortType_fieldhtmltype_tmp, ortType_type_tmp,
|
|||
|
inoperatefield_hs, fieldvalue_hs, fieldMap,
|
|||
|
resourceComInfo,
|
|||
|
prjid, docid, dt_beagenter, hrmid, body_isagent, agenttype,
|
|||
|
crmid, reqid);
|
|||
|
organizationtype = Util.getIntValue(fieldvalue_tmp);
|
|||
|
if (organizationtype < 0) {
|
|||
|
if ("fieldIdOrgId_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) {
|
|||
|
organizationtype = Util.getIntValue(fnaWfSetMap.get("fieldIdOrgType_defaultSelectValue"));
|
|||
|
;
|
|||
|
} else if ("fieldIdOrgId2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) {
|
|||
|
organizationtype = Util.getIntValue(fnaWfSetMap.get("fieldIdOrgType2_defaultSelectValue"));
|
|||
|
}
|
|||
|
}
|
|||
|
// _bb.writeLog("2 organizationtype="+organizationtype+";fieldvalue_tmp="+fieldvalue_tmp);
|
|||
|
}
|
|||
|
|
|||
|
if ("fieldIdOrgId_fieldId".equals(fnaWfSetMap.get(fieldid + "")) || "fieldIdOrgId2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) {
|
|||
|
int btnType = oldBtnType;
|
|||
|
if (organizationtype == 0) {//个人
|
|||
|
btnType = 1;
|
|||
|
} else if (organizationtype == 1) {//部门
|
|||
|
btnType = 4;
|
|||
|
} else if (organizationtype == 2) {//分部
|
|||
|
btnType = 164;
|
|||
|
} else if (organizationtype == 3) {//成本中心
|
|||
|
btnType = 251;
|
|||
|
}
|
|||
|
// _bb.writeLog("btnType="+btnType+";_oldBtnType="+oldBtnType);
|
|||
|
|
|||
|
String fieldvalue_tmp = "";
|
|||
|
if (!_isDbDataFlag && btnType != oldBtnType) {
|
|||
|
fieldvalue_tmp = wfLayoutToHtml.getFieldValueTmp(fieldid, 3, btnType,
|
|||
|
inoperatefield_hs, fieldvalue_hs, fieldMap,
|
|||
|
resourceComInfo,
|
|||
|
prjid, docid, dt_beagenter, hrmid, body_isagent, agenttype,
|
|||
|
crmid, reqid);
|
|||
|
if (Util.getIntValue(fieldvalue_tmp) == 0) {
|
|||
|
fieldvalue_tmp = "";
|
|||
|
}
|
|||
|
otherReturnVal.put("newOrgIdDefValue", fieldvalue_tmp);
|
|||
|
// _bb.writeLog("newOrgIdDefValue="+fieldvalue_tmp);
|
|||
|
}
|
|||
|
|
|||
|
if (!_isDbDataFlag && btnType == 251 && "".equals(fieldvalue_tmp)) {//成本中心
|
|||
|
String fieldIdOrgId_automaticTake = Util.null2String(fnaWfSetMap.get("fieldIdOrgId_automaticTake"));
|
|||
|
if ("1".equals(fieldIdOrgId_automaticTake)) {
|
|||
|
String _fnaFccId_fieldvalue_tmp_key = "fieldIdOrgId_automaticTake_hrmid=" + hrmid + "_isDbDataFlagEqualsFalse_btnType251_fnaFccId_fieldvalue_tmp_key";
|
|||
|
if (otherPara_hs.containsKey(_fnaFccId_fieldvalue_tmp_key)) {
|
|||
|
fieldvalue_tmp = Util.null2String((String) otherPara_hs.get(_fnaFccId_fieldvalue_tmp_key)).trim();
|
|||
|
} else {
|
|||
|
HashMap<String, String> dataMapHrm = new HashMap<String, String>();
|
|||
|
FnaCommon.getHrmResourceInfo(dataMapHrm, Util.getIntValue(hrmid));
|
|||
|
String _fnaFccId = Util.null2String(dataMapHrm.get("fccId"));
|
|||
|
fieldvalue_tmp = _fnaFccId;
|
|||
|
if (Util.getIntValue(fieldvalue_tmp) == 0) {
|
|||
|
fieldvalue_tmp = "";
|
|||
|
}
|
|||
|
otherPara_hs.put(_fnaFccId_fieldvalue_tmp_key, fieldvalue_tmp);
|
|||
|
}
|
|||
|
otherReturnVal.put("newOrgIdDefValue", fieldvalue_tmp);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// _bb.writeLog("btnType="+btnType);
|
|||
|
return btnType;
|
|||
|
}
|
|||
|
|
|||
|
// _bb.writeLog("_oldBtnType="+oldBtnType);
|
|||
|
return oldBtnType;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取预算信息字段显示内容
|
|||
|
*
|
|||
|
* @param fieldid
|
|||
|
* @param detailRecordId
|
|||
|
* @param fieldvalue_old
|
|||
|
* @param _requestId
|
|||
|
* @param _detailNumber
|
|||
|
* @param fnaWfSetMap
|
|||
|
* @param reqDataMap
|
|||
|
* @param fnaExpenseInfoAllRowRecordHm
|
|||
|
* @param languageId
|
|||
|
* @param otherPara_hs
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public String getRemainByFnaFieldType(int fieldid, int detailRecordId, String fieldvalue_old,
|
|||
|
int _requestId, int _detailNumber,
|
|||
|
Map<String, String> fnaWfSetMap, HashMap<String, HashMap<String, String>> reqDataMap, HashMap<String, HashMap<String, String>> fnaExpenseInfoAllRowRecordHm, int languageId,
|
|||
|
Hashtable otherPara_hs) {
|
|||
|
if (_requestId > 0) {
|
|||
|
RecordSet rs2 = new RecordSet();
|
|||
|
//启用多明细表报销
|
|||
|
int fnaWfTypeMultiReim = 0;
|
|||
|
rs2.executeQuery("select a.* from fnaFeeWfInfo a join workflow_requestbase b on a.workflowid = b.workflowid where b.requestid = " + _requestId);
|
|||
|
if (rs2.next()) {
|
|||
|
fnaWfTypeMultiReim = rs2.getInt("fnaWfTypeMultiReim");
|
|||
|
}
|
|||
|
//启用多明细表报销,开关开启:当前流程的任意明细表都 【 可以用于也仅可以用于 】 费用报销;不再支持"还款,预付款冲销"功能;
|
|||
|
if (fnaWfTypeMultiReim == 1) {
|
|||
|
return "";
|
|||
|
}
|
|||
|
}
|
|||
|
BaseBean _bb = new BaseBean();
|
|||
|
//_bb.writeLog("getRemainByFnaFieldType");
|
|||
|
|
|||
|
String _hrmremain_fieldName = Util.null2String(fnaWfSetMap.get("fieldIdHrmInfo_fieldName")).trim();
|
|||
|
String _deptremain_fieldName = Util.null2String(fnaWfSetMap.get("fieldIdDepInfo_fieldName")).trim();
|
|||
|
String _subcomremain_fieldName = Util.null2String(fnaWfSetMap.get("fieldIdSubInfo_fieldName")).trim();
|
|||
|
String _Fcc_fieldName = Util.null2String(fnaWfSetMap.get("fieldIdFccInfo_fieldName")).trim();
|
|||
|
|
|||
|
String _hrmremain_fieldName2 = Util.null2String(fnaWfSetMap.get("fieldIdHrmInfo2_fieldName")).trim();
|
|||
|
String _deptremain_fieldName2 = Util.null2String(fnaWfSetMap.get("fieldIdDepInfo2_fieldName")).trim();
|
|||
|
String _subcomremain_fieldName2 = Util.null2String(fnaWfSetMap.get("fieldIdSubInfo2_fieldName")).trim();
|
|||
|
String _Fcc_fieldName2 = Util.null2String(fnaWfSetMap.get("fieldIdFccInfo2_fieldName")).trim();
|
|||
|
|
|||
|
int subject = -1;
|
|||
|
int organizationtype = -1;
|
|||
|
int organizationid = -1;
|
|||
|
String budgetperiod = "";
|
|||
|
String _fnaWfFieldFnaType_typeFlag = "";
|
|||
|
String[] _dt1_remain_array = new String[]{"", "", "", ""};
|
|||
|
|
|||
|
HashMap<String, String> reqOneRowDataMap = null;
|
|||
|
if (reqDataMap != null) {
|
|||
|
if (detailRecordId > 0) {//先检查是否是来自明细,如果是来自明细则使用明细id获取数据
|
|||
|
reqOneRowDataMap = reqDataMap.get(detailRecordId + "");
|
|||
|
} else if (_requestId > 0) {//如果不是来自明细则使用主表requestid来获取数据
|
|||
|
reqOneRowDataMap = reqDataMap.get(_requestId + "");
|
|||
|
}
|
|||
|
}
|
|||
|
if ("fieldIdHrmInfo_fieldId".equals(fnaWfSetMap.get(fieldid + ""))
|
|||
|
|| "fieldIdDepInfo_fieldId".equals(fnaWfSetMap.get(fieldid + ""))
|
|||
|
|| "fieldIdSubInfo_fieldId".equals(fnaWfSetMap.get(fieldid + ""))
|
|||
|
|| "fieldIdFccInfo_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) {
|
|||
|
if (reqOneRowDataMap != null) {
|
|||
|
subject = Util.getIntValue(reqOneRowDataMap.get("subject"), -1);
|
|||
|
organizationtype = Util.getIntValue(reqOneRowDataMap.get("organizationtype"), -1);
|
|||
|
organizationid = Util.getIntValue(reqOneRowDataMap.get("organizationid"), -1);
|
|||
|
budgetperiod = Util.null2String(reqOneRowDataMap.get("budgetperiod")).trim();
|
|||
|
}
|
|||
|
_fnaWfFieldFnaType_typeFlag = "6_7_8_9";
|
|||
|
_dt1_remain_array = new String[]{_hrmremain_fieldName, _deptremain_fieldName, _subcomremain_fieldName, _Fcc_fieldName};
|
|||
|
|
|||
|
} else if ("fieldIdHrmInfo2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))
|
|||
|
|| "fieldIdDepInfo2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))
|
|||
|
|| "fieldIdSubInfo2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))
|
|||
|
|| "fieldIdFccInfo2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) {
|
|||
|
if (reqOneRowDataMap != null) {
|
|||
|
subject = Util.getIntValue(reqOneRowDataMap.get("subject2"), -1);
|
|||
|
organizationtype = Util.getIntValue(reqOneRowDataMap.get("organizationtype2"), -1);
|
|||
|
organizationid = Util.getIntValue(reqOneRowDataMap.get("organizationid2"), -1);
|
|||
|
budgetperiod = Util.null2String(reqOneRowDataMap.get("budgetperiod2")).trim();
|
|||
|
}
|
|||
|
_fnaWfFieldFnaType_typeFlag = "14_15_16_17";
|
|||
|
_dt1_remain_array = new String[]{_hrmremain_fieldName2, _deptremain_fieldName2, _subcomremain_fieldName2, _Fcc_fieldName2};
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
BudgetHandler budgetHandler = new BudgetHandler();
|
|||
|
|
|||
|
int orgtype = -1;
|
|||
|
if (organizationtype == 0) {//个人
|
|||
|
orgtype = 3;
|
|||
|
} else if (organizationtype == 1) {//部门
|
|||
|
orgtype = 2;
|
|||
|
} else if (organizationtype == 2) {//分部
|
|||
|
orgtype = 1;
|
|||
|
} else if (organizationtype == 3) {//成本中心
|
|||
|
orgtype = FnaCostCenter.ORGANIZATION_TYPE;
|
|||
|
}
|
|||
|
|
|||
|
if (organizationtype >= 0 && organizationtype <= 3) {
|
|||
|
if ("fieldIdHrmInfo_fieldId".equals(fnaWfSetMap.get(fieldid + ""))
|
|||
|
|| "fieldIdDepInfo_fieldId".equals(fnaWfSetMap.get(fieldid + ""))
|
|||
|
|| "fieldIdSubInfo_fieldId".equals(fnaWfSetMap.get(fieldid + ""))
|
|||
|
|| "fieldIdFccInfo_fieldId".equals(fnaWfSetMap.get(fieldid + ""))
|
|||
|
|| "fieldIdHrmInfo2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))
|
|||
|
|| "fieldIdDepInfo2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))
|
|||
|
|| "fieldIdSubInfo2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))
|
|||
|
|| "fieldIdFccInfo2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) {
|
|||
|
String infos = " , , | , , , | , , , | , , , | , , , | , , , | , , , | , , , | , , , ";
|
|||
|
if (!"".equals(budgetperiod) && orgtype != -1 && organizationid > 0 && subject > 0) {
|
|||
|
String key01 = "FnaCommon_getRemainByFnaFieldType_" + _fnaWfFieldFnaType_typeFlag + "_requestId=" + _requestId + "detailRecordId=" + detailRecordId + "_detailNumber=" + _detailNumber;
|
|||
|
if (otherPara_hs.containsKey(key01)) {
|
|||
|
infos = (String) otherPara_hs.get(key01);
|
|||
|
} else {
|
|||
|
HashMap<String, String> fnaExpenseInfoRecordHm = fnaExpenseInfoAllRowRecordHm.get(detailRecordId + "");
|
|||
|
infos = Util.null2String(budgetHandler.getBudgetKPI4DWR(budgetperiod, orgtype, organizationid, subject, true, true, detailRecordId, _requestId, fnaExpenseInfoRecordHm)).trim();
|
|||
|
otherPara_hs.put(key01, infos);
|
|||
|
}
|
|||
|
}
|
|||
|
String[] fnainfos = infos.split("\\|");
|
|||
|
|
|||
|
String budgetAutoMoveInfo = "";
|
|||
|
if (fnainfos.length >= 5) {
|
|||
|
budgetAutoMoveInfo = fnainfos[4];
|
|||
|
if (!"".equals(budgetAutoMoveInfo)) {
|
|||
|
String regex = "^[, ]+$";
|
|||
|
Pattern pattern = Pattern.compile(regex);
|
|||
|
Matcher match = pattern.matcher(budgetAutoMoveInfo);
|
|||
|
if (match.matches()) {//判断是否只包含了逗号和空格,如果是则不处理
|
|||
|
budgetAutoMoveInfo = "";
|
|||
|
} else {
|
|||
|
budgetAutoMoveInfo = SystemEnv.getHtmlLabelName(126630, languageId) + ":" + budgetAutoMoveInfo;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
String _dt1_remain_only = "";
|
|||
|
if (getFnaNotEmptyCount(_dt1_remain_array) == 1) {
|
|||
|
_dt1_remain_only = getFnaOnlyNotEmptyValue(_dt1_remain_array);
|
|||
|
}
|
|||
|
|
|||
|
String[] values = new String[]{"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""};
|
|||
|
|
|||
|
int fnainfosLen = fnainfos.length;
|
|||
|
if (("fieldIdHrmInfo_fieldId".equals(fnaWfSetMap.get(fieldid + "")) || "fieldIdHrmInfo2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) && fnainfosLen >= 1) {
|
|||
|
String _dt1_remain = _dt1_remain_array[0];
|
|||
|
if ((!_dt1_remain_only.equals("") && _dt1_remain_only.equals(_dt1_remain)) || (getFnaSameValueCount(_dt1_remain_array, _dt1_remain) > 1)) {
|
|||
|
values = fnainfos[organizationtype].split(",");
|
|||
|
} else {
|
|||
|
values = fnainfos[0].split(",");
|
|||
|
}
|
|||
|
|
|||
|
} else if (("fieldIdDepInfo_fieldId".equals(fnaWfSetMap.get(fieldid + "")) || "fieldIdDepInfo2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) && fnainfosLen >= 2) {
|
|||
|
String _dt1_remain = _dt1_remain_array[1];
|
|||
|
if ((!_dt1_remain_only.equals("") && _dt1_remain_only.equals(_dt1_remain)) || (getFnaSameValueCount(_dt1_remain_array, _dt1_remain) > 1)) {
|
|||
|
values = fnainfos[organizationtype].split(",");
|
|||
|
} else {
|
|||
|
values = fnainfos[1].split(",");
|
|||
|
}
|
|||
|
|
|||
|
} else if (("fieldIdSubInfo_fieldId".equals(fnaWfSetMap.get(fieldid + "")) || "fieldIdSubInfo2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) && fnainfosLen >= 3) {
|
|||
|
String _dt1_remain = _dt1_remain_array[2];
|
|||
|
if ((!_dt1_remain_only.equals("") && _dt1_remain_only.equals(_dt1_remain)) || (getFnaSameValueCount(_dt1_remain_array, _dt1_remain) > 1)) {
|
|||
|
values = fnainfos[organizationtype].split(",");
|
|||
|
} else {
|
|||
|
values = fnainfos[2].split(",");
|
|||
|
}
|
|||
|
|
|||
|
} else if (("fieldIdFccInfo_fieldId".equals(fnaWfSetMap.get(fieldid + "")) || "fieldIdFccInfo2_fieldId".equals(fnaWfSetMap.get(fieldid + ""))) && fnainfosLen >= 4) {
|
|||
|
String _dt1_remain = _dt1_remain_array[3];
|
|||
|
if ((!_dt1_remain_only.equals("") && _dt1_remain_only.equals(_dt1_remain)) || (getFnaSameValueCount(_dt1_remain_array, _dt1_remain) > 1)) {
|
|||
|
values = fnainfos[organizationtype].split(",");
|
|||
|
} else {
|
|||
|
values = fnainfos[3].split(",");
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
String values0 = "";
|
|||
|
String values1 = "";
|
|||
|
String values2 = "";
|
|||
|
int valuesLen = values.length;
|
|||
|
if (valuesLen >= 1) {
|
|||
|
values0 = values[0];
|
|||
|
}
|
|||
|
if (valuesLen >= 2) {
|
|||
|
values1 = values[1];
|
|||
|
}
|
|||
|
if (valuesLen >= 3) {
|
|||
|
values2 = values[2];
|
|||
|
}
|
|||
|
|
|||
|
String tempmsg = SystemEnv.getHtmlLabelName(18768, languageId) + ":" + values0 + "<br>" +
|
|||
|
"<font color=red>" + SystemEnv.getHtmlLabelName(18503, languageId) + ":" + values1 + "</font><br>" +
|
|||
|
"<font color=green>" + SystemEnv.getHtmlLabelName(18769, languageId) + ":" + values2 + "</font>";
|
|||
|
if (!"".equals(budgetAutoMoveInfo)) {
|
|||
|
tempmsg += "<br>" + budgetAutoMoveInfo;
|
|||
|
}
|
|||
|
|
|||
|
//_bb.writeLog("tempmsg="+tempmsg);
|
|||
|
return tempmsg;
|
|||
|
}
|
|||
|
}
|
|||
|
return fieldvalue_old;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取素组中有相同值的个数
|
|||
|
*
|
|||
|
* @param checkValArray
|
|||
|
* @param compareValue
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public int getFnaSameValueCount(String[] checkValArray, String compareValue) {
|
|||
|
int _count = 0;
|
|||
|
if (checkValArray != null) {
|
|||
|
for (int i = 0; i < checkValArray.length; i++) {
|
|||
|
String _val = checkValArray[i];
|
|||
|
if (_val.equals(compareValue)) {
|
|||
|
_count++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return _count;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取素组中非相同空项的值(取第一个)
|
|||
|
*
|
|||
|
* @param checkValArray
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public String getFnaOnlyNotEmptyValue(String[] checkValArray) {
|
|||
|
String _value = "";
|
|||
|
if (this.getFnaNotEmptyCount(checkValArray) == 1) {
|
|||
|
if (checkValArray != null) {
|
|||
|
for (int i = 0; i < checkValArray.length; i++) {
|
|||
|
String _val = checkValArray[i];
|
|||
|
if (_val != null && _val.equals("")) {
|
|||
|
_value = _val;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return _value;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取素组中非相同空值数量
|
|||
|
*
|
|||
|
* @param checkValArray
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public int getFnaNotEmptyCount(String[] checkValArray) {
|
|||
|
int _count = 0;
|
|||
|
if (checkValArray != null) {
|
|||
|
for (int i = 0; i < checkValArray.length; i++) {
|
|||
|
String _val = checkValArray[i];
|
|||
|
if (_val != null && _val.equals("")) {
|
|||
|
_count++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return _count;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 依据流程类型获取查询费控相关字段的sql
|
|||
|
*
|
|||
|
* @param _requestId 流程requestid
|
|||
|
* @param _formId 流程表单id
|
|||
|
* @param dataMap 预算类流程字段对应关系hm
|
|||
|
* @param _isEnableFnaWfE8 是否是启用的Ecology8费控流程
|
|||
|
* @param _isEnableFnaChangeWf 是否是启用的Ecology8预算变更流程
|
|||
|
* @param _isEnableFnaShareWf 是否是启用的Ecology8预算分摊流程
|
|||
|
* @return SQL
|
|||
|
*/
|
|||
|
public static String getSqlByFnaFieldType(int _requestId, int _formId, Map<String, String> dataMap,
|
|||
|
boolean _isEnableFnaWfE8, boolean _isEnableFnaChangeWf, boolean _isEnableFnaShareWf) {
|
|||
|
// _bb.writeLog("_formId="+_formId+";_isbill="+_isbill+";_isEnableFnaWfE7="+_isEnableFnaWfE7+";_isEnableFnaWfE8="+_isEnableFnaWfE8);
|
|||
|
|
|||
|
StringBuffer sql = new StringBuffer("");
|
|||
|
if (_isEnableFnaWfE8 || _isEnableFnaChangeWf || _isEnableFnaShareWf) {//自定义新表单
|
|||
|
int _formIdABS = Math.abs(_formId);
|
|||
|
|
|||
|
String fieldIdSubject_isDtl = "1";
|
|||
|
String fieldIdOrgType_isDtl = "1";
|
|||
|
String fieldIdOrgId_isDtl = "1";
|
|||
|
String fieldIdOccurdate_isDtl = "1";
|
|||
|
|
|||
|
String fieldIdSubject2_isDtl = "1";
|
|||
|
String fieldIdOrgType2_isDtl = "1";
|
|||
|
String fieldIdOrgId2_isDtl = "1";
|
|||
|
String fieldIdOccurdate2_isDtl = "1";
|
|||
|
|
|||
|
String _subject_fieldName = "";
|
|||
|
String _organizationtype_fieldName = "";
|
|||
|
String _organizationid_fieldName = "";
|
|||
|
String _budgetperiod_fieldName = "";
|
|||
|
|
|||
|
String _subject_fieldName2 = "";
|
|||
|
String _organizationtype_fieldName2 = "";
|
|||
|
String _organizationid_fieldName2 = "";
|
|||
|
String _budgetperiod_fieldName2 = "";
|
|||
|
|
|||
|
String fieldIdAmount_isDtl = "1";
|
|||
|
String _amount_fieldName = "";
|
|||
|
|
|||
|
if (_isEnableFnaWfE8) {
|
|||
|
_subject_fieldName = Util.null2String(dataMap.get("fieldIdSubject_fieldName"));
|
|||
|
_organizationtype_fieldName = Util.null2String(dataMap.get("fieldIdOrgType_fieldName"));
|
|||
|
_organizationid_fieldName = Util.null2String(dataMap.get("fieldIdOrgId_fieldName"));
|
|||
|
_budgetperiod_fieldName = Util.null2String(dataMap.get("fieldIdOccurdate_fieldName"));
|
|||
|
|
|||
|
fieldIdSubject_isDtl = Util.null2String(dataMap.get("fieldIdSubject_fieldId_isDtl"));
|
|||
|
fieldIdOrgType_isDtl = Util.null2String(dataMap.get("fieldIdOrgType_fieldId_isDtl"));
|
|||
|
fieldIdOrgId_isDtl = Util.null2String(dataMap.get("fieldIdOrgId_fieldId_isDtl"));
|
|||
|
fieldIdOccurdate_isDtl = Util.null2String(dataMap.get("fieldIdOccurdate_fieldId_isDtl"));
|
|||
|
|
|||
|
_amount_fieldName = Util.null2String(dataMap.get("fieldIdAmount_fieldName"));
|
|||
|
fieldIdAmount_isDtl = Util.null2String(dataMap.get("fieldIdAmount_fieldId_isDtl"));
|
|||
|
|
|||
|
} else if (_isEnableFnaChangeWf) {
|
|||
|
_subject_fieldName = Util.null2String(dataMap.get("fieldIdSubject_fieldName"));
|
|||
|
_organizationtype_fieldName = Util.null2String(dataMap.get("fieldIdOrgType_fieldName"));
|
|||
|
_organizationid_fieldName = Util.null2String(dataMap.get("fieldIdOrgId_fieldName"));
|
|||
|
_budgetperiod_fieldName = Util.null2String(dataMap.get("fieldIdOccurdate_fieldName"));
|
|||
|
|
|||
|
_subject_fieldName2 = Util.null2String(dataMap.get("fieldIdSubject2_fieldName"));
|
|||
|
_organizationtype_fieldName2 = Util.null2String(dataMap.get("fieldIdOrgType2_fieldName"));
|
|||
|
_organizationid_fieldName2 = Util.null2String(dataMap.get("fieldIdOrgId2_fieldName"));
|
|||
|
_budgetperiod_fieldName2 = Util.null2String(dataMap.get("fieldIdOccurdate2_fieldName"));
|
|||
|
|
|||
|
fieldIdSubject_isDtl = Util.null2String(dataMap.get("fieldIdSubject_fieldId_isDtl"));
|
|||
|
fieldIdOrgType_isDtl = Util.null2String(dataMap.get("fieldIdOrgType_fieldId_isDtl"));
|
|||
|
fieldIdOrgId_isDtl = Util.null2String(dataMap.get("fieldIdOrgId_fieldId_isDtl"));
|
|||
|
fieldIdOccurdate_isDtl = Util.null2String(dataMap.get("fieldIdOccurdate_fieldId_isDtl"));
|
|||
|
|
|||
|
fieldIdSubject2_isDtl = Util.null2String(dataMap.get("fieldIdSubject2_fieldId_isDtl"));
|
|||
|
fieldIdOrgType2_isDtl = Util.null2String(dataMap.get("fieldIdOrgType2_fieldId_isDtl"));
|
|||
|
fieldIdOrgId2_isDtl = Util.null2String(dataMap.get("fieldIdOrgId2_fieldId_isDtl"));
|
|||
|
fieldIdOccurdate2_isDtl = Util.null2String(dataMap.get("fieldIdOccurdate2_fieldId_isDtl"));
|
|||
|
|
|||
|
_amount_fieldName = Util.null2String(dataMap.get("fieldIdAmount_fieldName"));
|
|||
|
fieldIdAmount_isDtl = Util.null2String(dataMap.get("fieldIdAmount_fieldId_isDtl"));
|
|||
|
|
|||
|
} else if (_isEnableFnaShareWf) {
|
|||
|
_subject_fieldName = Util.null2String(dataMap.get("fieldIdSubject_fieldName"));
|
|||
|
_organizationtype_fieldName = Util.null2String(dataMap.get("fieldIdOrgType_fieldName"));
|
|||
|
_organizationid_fieldName = Util.null2String(dataMap.get("fieldIdOrgId_fieldName"));
|
|||
|
_budgetperiod_fieldName = Util.null2String(dataMap.get("fieldIdOccurdate_fieldName"));
|
|||
|
|
|||
|
_subject_fieldName2 = Util.null2String(dataMap.get("fieldIdSubject2_fieldName"));
|
|||
|
_organizationtype_fieldName2 = Util.null2String(dataMap.get("fieldIdOrgType2_fieldName"));
|
|||
|
_organizationid_fieldName2 = Util.null2String(dataMap.get("fieldIdOrgId2_fieldName"));
|
|||
|
_budgetperiod_fieldName2 = Util.null2String(dataMap.get("fieldIdOccurdate2_fieldName"));
|
|||
|
|
|||
|
fieldIdSubject_isDtl = Util.null2String(dataMap.get("fieldIdSubject_fieldId_isDtl"));
|
|||
|
fieldIdOrgType_isDtl = Util.null2String(dataMap.get("fieldIdOrgType_fieldId_isDtl"));
|
|||
|
fieldIdOrgId_isDtl = Util.null2String(dataMap.get("fieldIdOrgId_fieldId_isDtl"));
|
|||
|
fieldIdOccurdate_isDtl = Util.null2String(dataMap.get("fieldIdOccurdate_fieldId_isDtl"));
|
|||
|
|
|||
|
fieldIdSubject2_isDtl = Util.null2String(dataMap.get("fieldIdSubject2_fieldId_isDtl"));
|
|||
|
fieldIdOrgType2_isDtl = Util.null2String(dataMap.get("fieldIdOrgType2_fieldId_isDtl"));
|
|||
|
fieldIdOrgId2_isDtl = Util.null2String(dataMap.get("fieldIdOrgId2_fieldId_isDtl"));
|
|||
|
fieldIdOccurdate2_isDtl = Util.null2String(dataMap.get("fieldIdOccurdate2_fieldId_isDtl"));
|
|||
|
|
|||
|
_amount_fieldName = Util.null2String(dataMap.get("fieldIdAmount_fieldName"));
|
|||
|
fieldIdAmount_isDtl = Util.null2String(dataMap.get("fieldIdAmount_fieldId_isDtl"));
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
if ("".equals(_subject_fieldName2)) {
|
|||
|
_subject_fieldName2 = _subject_fieldName;
|
|||
|
fieldIdSubject2_isDtl = fieldIdSubject_isDtl;
|
|||
|
}
|
|||
|
if ("".equals(_organizationtype_fieldName2)) {
|
|||
|
_organizationtype_fieldName2 = _organizationtype_fieldName;
|
|||
|
fieldIdOrgType2_isDtl = fieldIdOrgType_isDtl;
|
|||
|
}
|
|||
|
if ("".equals(_organizationid_fieldName2)) {
|
|||
|
_organizationid_fieldName2 = _organizationid_fieldName;
|
|||
|
fieldIdOrgId2_isDtl = fieldIdOrgId_isDtl;
|
|||
|
}
|
|||
|
if ("".equals(_budgetperiod_fieldName2)) {
|
|||
|
_budgetperiod_fieldName2 = _budgetperiod_fieldName;
|
|||
|
fieldIdOccurdate2_isDtl = fieldIdOccurdate_isDtl;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//报销明细中是否包含了明细表字段
|
|||
|
boolean dt1_haveIsDtlField = ("1".equals(fieldIdSubject_isDtl) || "1".equals(fieldIdOrgType_isDtl) || "1".equals(fieldIdOrgId_isDtl) || "1".equals(fieldIdOccurdate_isDtl));
|
|||
|
boolean dt1_haveIsDtlField2 = ("1".equals(fieldIdSubject2_isDtl) || "1".equals(fieldIdOrgType2_isDtl) || "1".equals(fieldIdOrgId2_isDtl) || "1".equals(fieldIdOccurdate2_isDtl));
|
|||
|
|
|||
|
|
|||
|
sql.append("select ");
|
|||
|
|
|||
|
if ("1".equals(fieldIdAmount_isDtl)) {
|
|||
|
sql.append(" b.");
|
|||
|
} else {
|
|||
|
sql.append(" a.");
|
|||
|
}
|
|||
|
sql.append(_amount_fieldName + " applyamount, \n");
|
|||
|
|
|||
|
if ("1".equals(fieldIdOrgType_isDtl)) {
|
|||
|
sql.append(" b.");
|
|||
|
} else {
|
|||
|
sql.append(" a.");
|
|||
|
}
|
|||
|
sql.append(_organizationtype_fieldName + " organizationtype, \n");
|
|||
|
|
|||
|
if ("1".equals(fieldIdOrgId_isDtl)) {
|
|||
|
sql.append(" b.");
|
|||
|
} else {
|
|||
|
sql.append(" a.");
|
|||
|
}
|
|||
|
sql.append(_organizationid_fieldName + " organizationid, \n");
|
|||
|
|
|||
|
if ("1".equals(fieldIdSubject_isDtl)) {
|
|||
|
sql.append(" b.");
|
|||
|
} else {
|
|||
|
sql.append(" a.");
|
|||
|
}
|
|||
|
sql.append(_subject_fieldName + " subject, \n");
|
|||
|
|
|||
|
if ("1".equals(fieldIdOccurdate_isDtl)) {
|
|||
|
sql.append(" b.");
|
|||
|
} else {
|
|||
|
sql.append(" a.");
|
|||
|
}
|
|||
|
sql.append(_budgetperiod_fieldName + " budgetperiod, \n");
|
|||
|
|
|||
|
|
|||
|
if ("1".equals(fieldIdOrgType2_isDtl)) {
|
|||
|
sql.append(" b.");
|
|||
|
} else {
|
|||
|
sql.append(" a.");
|
|||
|
}
|
|||
|
sql.append(_organizationtype_fieldName2 + " organizationtype2, \n");
|
|||
|
|
|||
|
if ("1".equals(fieldIdOrgId2_isDtl)) {
|
|||
|
sql.append(" b.");
|
|||
|
} else {
|
|||
|
sql.append(" a.");
|
|||
|
}
|
|||
|
sql.append(_organizationid_fieldName2 + " organizationid2, \n");
|
|||
|
|
|||
|
if ("1".equals(fieldIdSubject2_isDtl)) {
|
|||
|
sql.append(" b.");
|
|||
|
} else {
|
|||
|
sql.append(" a.");
|
|||
|
}
|
|||
|
sql.append(_subject_fieldName2 + " subject2, \n");
|
|||
|
|
|||
|
if ("1".equals(fieldIdOccurdate2_isDtl)) {
|
|||
|
sql.append(" b.");
|
|||
|
} else {
|
|||
|
sql.append(" a.");
|
|||
|
}
|
|||
|
sql.append(_budgetperiod_fieldName2 + " budgetperiod2, \n");
|
|||
|
|
|||
|
if (dt1_haveIsDtlField || dt1_haveIsDtlField2) {
|
|||
|
sql.append(" b.id, b.id dtlId, a.requestid ");
|
|||
|
} else {
|
|||
|
sql.append(" a.requestid ");
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
sql.append(" from formtable_main_" + _formIdABS + " a \n");
|
|||
|
if (dt1_haveIsDtlField || dt1_haveIsDtlField2) {
|
|||
|
sql.append(" join formtable_main_" + _formIdABS + "_dt1 b on a.id = b.mainid \n");
|
|||
|
}
|
|||
|
sql.append(" where a.requestid = " + _requestId);
|
|||
|
|
|||
|
sql.append(" order by ");
|
|||
|
if (_isEnableFnaChangeWf) {
|
|||
|
if ("1".equals(fieldIdAmount_isDtl)) {
|
|||
|
sql.append(" b.");
|
|||
|
} else {
|
|||
|
sql.append(" a.");
|
|||
|
}
|
|||
|
sql.append(_amount_fieldName + " asc,");
|
|||
|
}
|
|||
|
sql.append(" a.id asc");
|
|||
|
if (dt1_haveIsDtlField || dt1_haveIsDtlField2) {
|
|||
|
sql.append(", b.id asc");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return sql.toString();
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 依据getSqlByFnaFieldType方法返回sql,获取当前requestid对应的所有预算相关业务逻辑数据
|
|||
|
*
|
|||
|
* @param _requestId 流程requestid
|
|||
|
* @param _formId 流程表单id
|
|||
|
* @param dataMap 预算类流程字段对应关系hm
|
|||
|
* @param _isEnableFnaWfE8 是否是启用的Ecology8费控流程
|
|||
|
* @param _isEnableFnaChangeWf 是否是启用的Ecology8预算变更流程
|
|||
|
* @param _isEnableFnaShareWf 是否是启用的Ecology8预算分摊流程
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static HashMap<String, HashMap<String, String>> qryFnaExpenseRequestRecord(int _requestId, int _formId, Map<String, String> dataMap,
|
|||
|
boolean _isEnableFnaWfE8, boolean _isEnableFnaChangeWf, boolean _isEnableFnaShareWf) {
|
|||
|
RecordSet rs_fna = new RecordSet();
|
|||
|
|
|||
|
HashMap<String, HashMap<String, String>> retHm = new HashMap<String, HashMap<String, String>>();
|
|||
|
|
|||
|
int _idx = 0;
|
|||
|
String sql = FnaCommon.getSqlByFnaFieldType(_requestId, _formId, dataMap,
|
|||
|
_isEnableFnaWfE8, _isEnableFnaChangeWf, _isEnableFnaShareWf);
|
|||
|
if (!"".equals(sql)) {
|
|||
|
rs_fna.executeSql(sql);
|
|||
|
while (rs_fna.next()) {
|
|||
|
HashMap<String, String> hm = new HashMap<String, String>();
|
|||
|
String keyId = Util.null2String(rs_fna.getString("id")).trim();
|
|||
|
if ("".equals(keyId)) {
|
|||
|
keyId = Util.null2String(rs_fna.getString("requestid")).trim();
|
|||
|
}
|
|||
|
|
|||
|
hm.put("organizationtype", Util.null2String(rs_fna.getString("organizationtype")).trim());
|
|||
|
hm.put("organizationid", Util.null2String(rs_fna.getString("organizationid")).trim());
|
|||
|
hm.put("subject", Util.null2String(rs_fna.getString("subject")).trim());
|
|||
|
hm.put("budgetperiod", Util.null2String(rs_fna.getString("budgetperiod")).trim());
|
|||
|
|
|||
|
hm.put("organizationtype2", Util.null2String(rs_fna.getString("organizationtype2")).trim());
|
|||
|
hm.put("organizationid2", Util.null2String(rs_fna.getString("organizationid2")).trim());
|
|||
|
hm.put("subject2", Util.null2String(rs_fna.getString("subject2")).trim());
|
|||
|
hm.put("budgetperiod2", Util.null2String(rs_fna.getString("budgetperiod2")).trim());
|
|||
|
|
|||
|
retHm.put(keyId, hm);
|
|||
|
retHm.put("key_idx>>" + _idx, hm);
|
|||
|
|
|||
|
_idx++;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return retHm;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取指定流程写入费用表的所有数据
|
|||
|
*
|
|||
|
* @param _requestId 流程requestid
|
|||
|
* @return HashMap<sourceRequestidDtlId, HashMap < 费用表列明, 值>>
|
|||
|
*/
|
|||
|
public static HashMap<String, HashMap<String, String>> qryFnaExpenseInfoAllRowRecordHm(int _requestId) {
|
|||
|
RecordSet rs_fna = new RecordSet();
|
|||
|
|
|||
|
HashMap<String, HashMap<String, String>> retHm = new HashMap<String, HashMap<String, String>>();
|
|||
|
|
|||
|
//定位 数据库表名, 日期范围可能跨年
|
|||
|
List<String> list_out_FnaExpenseInfo = new ArrayList<String>();
|
|||
|
FnaSplitTableByYearComInfo.getFnaTableNameList(FnaTableNameEnum.FnaExpenseInfo, "1000-01-01", "9999-12-31", list_out_FnaExpenseInfo);
|
|||
|
for (int aaaaaaaa = 0; aaaaaaaa < list_out_FnaExpenseInfo.size(); aaaaaaaa++) {
|
|||
|
String tableName_FnaExpenseInfo = list_out_FnaExpenseInfo.get(aaaaaaaa);
|
|||
|
|
|||
|
String sql = "select a.id, a.organizationid, a.organizationtype, a.occurdate, a.subject, a.amount, a.occurdateOld, \n" +
|
|||
|
" a.status, a.guid, \n" +
|
|||
|
" a.requestid, a.requestidDtlId, a.sourceRequestid, a.sourceRequestidDtlId, a.sourceDtlNumber, \n" +
|
|||
|
" a.budgetperiods, a.budgetperiodslist, a.isBudgetAutoMoveByMinusAmt, a.isBudgetAutoMove \n" +
|
|||
|
" from " + tableName_FnaExpenseInfo + " a where a.requestid = " + _requestId;
|
|||
|
rs_fna.executeSql(sql);
|
|||
|
while (rs_fna.next()) {
|
|||
|
HashMap<String, String> hm = new HashMap<String, String>();
|
|||
|
String keyId = Util.null2String(rs_fna.getString("sourceRequestidDtlId")).trim();//这个作为key是唯一的,不需要考虑多张数据表的情况
|
|||
|
if (!"".equals(keyId)) {
|
|||
|
hm.put("id", Util.null2String(rs_fna.getString("id")).trim());
|
|||
|
hm.put("organizationid", Util.null2String(rs_fna.getString("organizationid")).trim());
|
|||
|
hm.put("organizationtype", Util.null2String(rs_fna.getString("organizationtype")).trim());
|
|||
|
hm.put("occurdate", Util.null2String(rs_fna.getString("occurdate")).trim());
|
|||
|
hm.put("subject", Util.null2String(rs_fna.getString("subject")).trim());
|
|||
|
hm.put("amount", Util.null2String(rs_fna.getString("amount")).trim());
|
|||
|
hm.put("occurdateOld", Util.null2String(rs_fna.getString("occurdateOld")).trim());
|
|||
|
|
|||
|
hm.put("status", Util.null2String(rs_fna.getString("status")).trim());
|
|||
|
hm.put("guid", Util.null2String(rs_fna.getString("guid")).trim());
|
|||
|
|
|||
|
hm.put("requestid", Util.null2String(rs_fna.getString("requestid")).trim());
|
|||
|
hm.put("requestidDtlId", Util.null2String(rs_fna.getString("requestidDtlId")).trim());
|
|||
|
hm.put("sourceRequestid", Util.null2String(rs_fna.getString("sourceRequestid")).trim());
|
|||
|
hm.put("sourceRequestidDtlId", Util.null2String(rs_fna.getString("sourceRequestidDtlId")).trim());
|
|||
|
hm.put("sourceDtlNumber", Util.null2String(rs_fna.getString("sourceDtlNumber")).trim());
|
|||
|
|
|||
|
hm.put("budgetperiods", Util.null2String(rs_fna.getString("budgetperiods")).trim());
|
|||
|
hm.put("budgetperiodslist", Util.null2String(rs_fna.getString("budgetperiodslist")).trim());
|
|||
|
hm.put("isBudgetAutoMoveByMinusAmt", Util.null2String(rs_fna.getString("isBudgetAutoMoveByMinusAmt")).trim());
|
|||
|
hm.put("isBudgetAutoMove", Util.null2String(rs_fna.getString("isBudgetAutoMove")).trim());
|
|||
|
|
|||
|
retHm.put(keyId, hm);
|
|||
|
}
|
|||
|
}
|
|||
|
}//for end
|
|||
|
|
|||
|
return retHm;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取指定流程的冲销/还款数据
|
|||
|
*
|
|||
|
* @param requestid 流程requestid
|
|||
|
* @param _formId 流程表单id
|
|||
|
* @param dataMap 预算类流程字段对应关系hm
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static HashMap<String, HashMap<String, String>> qryFnaRepaymentRequestRecord(int requestid, int _formId, Map<String, String> dataMap) {
|
|||
|
RecordSet rs_fna = new RecordSet();
|
|||
|
|
|||
|
HashMap<String, HashMap<String, String>> retHm = new HashMap<String, HashMap<String, String>>();
|
|||
|
|
|||
|
String dt2_fieldIdJklc_fieldName = Util.null2String(dataMap.get("dt2_fieldIdJklc_fieldName"));
|
|||
|
String dt2_fieldIdDnxh_fieldName = Util.null2String(dataMap.get("dt2_fieldIdDnxh_fieldName"));
|
|||
|
String dt2_fieldIdJkje_fieldName = Util.null2String(dataMap.get("dt2_fieldIdJkje_fieldName"));
|
|||
|
String dt2_fieldIdYhje_fieldName = Util.null2String(dataMap.get("dt2_fieldIdYhje_fieldName"));
|
|||
|
String dt2_fieldIdSpzje_fieldName = Util.null2String(dataMap.get("dt2_fieldIdSpzje_fieldName"));
|
|||
|
String dt2_fieldIdWhje_fieldName = Util.null2String(dataMap.get("dt2_fieldIdWhje_fieldName"));
|
|||
|
|
|||
|
StringBuffer borrowRequestIds = new StringBuffer();
|
|||
|
|
|||
|
int formidAbs = Math.abs(_formId);
|
|||
|
HashMap<String, HashMap<String, String>> jklcsHm = new HashMap<String, HashMap<String, String>>();
|
|||
|
|
|||
|
StringBuffer sql = new StringBuffer();
|
|||
|
sql.append("select dt.id dtlId ");
|
|||
|
if (!"".equals(dt2_fieldIdJklc_fieldName)) {
|
|||
|
sql.append(", dt." + dt2_fieldIdJklc_fieldName + " jklc ");
|
|||
|
}
|
|||
|
if (!"".equals(dt2_fieldIdDnxh_fieldName)) {
|
|||
|
sql.append(", dt." + dt2_fieldIdDnxh_fieldName + " dnxh ");
|
|||
|
}
|
|||
|
if (!"".equals(dt2_fieldIdJkje_fieldName)) {
|
|||
|
sql.append(", dt." + dt2_fieldIdJkje_fieldName + " jkje ");
|
|||
|
}
|
|||
|
if (!"".equals(dt2_fieldIdYhje_fieldName)) {
|
|||
|
sql.append(", dt." + dt2_fieldIdYhje_fieldName + " yhje ");
|
|||
|
}
|
|||
|
if (!"".equals(dt2_fieldIdSpzje_fieldName)) {
|
|||
|
sql.append(", dt." + dt2_fieldIdSpzje_fieldName + " spzje ");
|
|||
|
}
|
|||
|
if (!"".equals(dt2_fieldIdWhje_fieldName)) {
|
|||
|
sql.append(", dt." + dt2_fieldIdWhje_fieldName + " whje ");
|
|||
|
}
|
|||
|
sql.append(" from formtable_main_" + formidAbs + "_dt2 dt ");
|
|||
|
sql.append(" join formtable_main_" + formidAbs + " main on main.id=dt.mainid ");
|
|||
|
sql.append(" where main.requestId=" + requestid);
|
|||
|
rs_fna.executeSql(sql.toString());
|
|||
|
while (rs_fna.next()) {
|
|||
|
HashMap<String, String> hm = new HashMap<String, String>();
|
|||
|
String keyId = Util.null2String(rs_fna.getString("dtlId")).trim();
|
|||
|
|
|||
|
String jklc = Util.null2String(rs_fna.getString("jklc")).trim();
|
|||
|
String dnxh = Util.null2String(rs_fna.getString("dnxh")).trim();
|
|||
|
String jkje = Util.null2String(rs_fna.getString("jkje")).trim();
|
|||
|
String yhje = Util.null2String(rs_fna.getString("yhje")).trim();
|
|||
|
String spzje = Util.null2String(rs_fna.getString("spzje")).trim();
|
|||
|
String whje = Util.null2String(rs_fna.getString("whje")).trim();
|
|||
|
|
|||
|
String dnxhShowName = "";
|
|||
|
|
|||
|
int i_jklc = Util.getIntValue(jklc);
|
|||
|
int i_dnxh = Util.getIntValue(dnxh);
|
|||
|
|
|||
|
if (i_jklc > 0 && i_dnxh > 0) {
|
|||
|
if (!jklcsHm.containsKey(jklc)) {
|
|||
|
FnaCommon.getRequestBorrowDnxhShowName(i_jklc, i_dnxh, jklcsHm);
|
|||
|
}
|
|||
|
HashMap<String, String> _jklcDtlIdxHm = jklcsHm.get(jklc);
|
|||
|
if (_jklcDtlIdxHm != null) {
|
|||
|
dnxhShowName = Util.null2String(_jklcDtlIdxHm.get(dnxh)).trim();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if ("".equals(dnxhShowName)) {
|
|||
|
dnxhShowName = dnxh;
|
|||
|
}
|
|||
|
|
|||
|
hm.put("jklc", jklc);
|
|||
|
hm.put("dnxh", dnxh);
|
|||
|
hm.put("dnxhShowName", dnxhShowName);
|
|||
|
hm.put("jkje", jkje);
|
|||
|
hm.put("yhje", yhje);
|
|||
|
hm.put("spzje", spzje);
|
|||
|
hm.put("whje", whje);
|
|||
|
|
|||
|
retHm.put(keyId, hm);
|
|||
|
|
|||
|
if (i_jklc > 0) {
|
|||
|
if (borrowRequestIds.length() > 0) {
|
|||
|
borrowRequestIds.append(",");
|
|||
|
}
|
|||
|
borrowRequestIds.append(i_jklc);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (borrowRequestIds.length() > 0) {
|
|||
|
String sql1 = "select SUM(CASE WHEN (a.recordType='borrow') THEN a.amountBorrow ELSE 0.0 END) jkje, \n" +
|
|||
|
" SUM(CASE WHEN (a.recordType='reverse') THEN a.amountBorrow ELSE 0.0 END) yhje, \n" +
|
|||
|
" SUM(CASE WHEN (a.recordType='freezeBorrow') THEN a.amountBorrow ELSE 0.0 END) spzje, \n" +
|
|||
|
" SUM(CASE WHEN (a.recordType='borrow') THEN a.amountBorrow ELSE (a.amountBorrow * -1) END) whje, \n" +
|
|||
|
" a.borrowRequestId, a.borrowRequestIdDtlId \n" +
|
|||
|
" from FnaBorrowInfo a \n" +
|
|||
|
" where a.borrowRequestId in (" + borrowRequestIds.toString() + ") \n" +
|
|||
|
" group by a.borrowRequestId, a.borrowRequestIdDtlId";
|
|||
|
rs_fna.executeSql(sql1);
|
|||
|
while (rs_fna.next()) {
|
|||
|
HashMap<String, String> hm = new HashMap<String, String>();
|
|||
|
String keyId = Util.null2String("borrowRequestIdInfo_" + rs_fna.getString("borrowRequestId")).trim() + "_" + Util.null2String(rs_fna.getString("borrowRequestIdDtlId")).trim();
|
|||
|
|
|||
|
String jkje = Util.null2String(rs_fna.getString("jkje")).trim();
|
|||
|
String yhje = Util.null2String(rs_fna.getString("yhje")).trim();
|
|||
|
String spzje = Util.null2String(rs_fna.getString("spzje")).trim();
|
|||
|
String whje = Util.null2String(rs_fna.getString("whje")).trim();
|
|||
|
|
|||
|
hm.put("jkje", jkje);
|
|||
|
hm.put("yhje", yhje);
|
|||
|
hm.put("spzje", spzje);
|
|||
|
hm.put("whje", whje);
|
|||
|
|
|||
|
retHm.put(keyId, hm);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return retHm;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取指定流程的预付款相关数据
|
|||
|
*
|
|||
|
* @param requestid 流程requestid
|
|||
|
* @param _formId 流程表单id
|
|||
|
* @param dataMap 预算类流程字段对应关系hm
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static HashMap<String, HashMap<String, String>> qryFnaReverseAdvanceRequestRecord(int requestid, int _formId, Map<String, String> dataMap) {
|
|||
|
RecordSet rs_fna = new RecordSet();
|
|||
|
|
|||
|
HashMap<String, HashMap<String, String>> retHm = new HashMap<String, HashMap<String, String>>();
|
|||
|
|
|||
|
String dt4_fieldIdYfklc_fieldName = Util.null2String(dataMap.get("dt4_fieldIdYfklc_fieldName"));
|
|||
|
String dt4_fieldIdDnxh_fieldName = Util.null2String(dataMap.get("dt4_fieldIdDnxh_fieldName"));
|
|||
|
String dt4_fieldIdYfkje_fieldName = Util.null2String(dataMap.get("dt4_fieldIdYfkje_fieldName"));
|
|||
|
String dt4_fieldIdYhje_fieldName = Util.null2String(dataMap.get("dt4_fieldIdYhje_fieldName"));
|
|||
|
String dt4_fieldIdSpzje_fieldName = Util.null2String(dataMap.get("dt4_fieldIdSpzje_fieldName"));
|
|||
|
String dt4_fieldIdWhje_fieldName = Util.null2String(dataMap.get("dt4_fieldIdWhje_fieldName"));
|
|||
|
|
|||
|
StringBuffer advanceRequestIds = new StringBuffer();
|
|||
|
|
|||
|
int formidAbs = Math.abs(_formId);
|
|||
|
HashMap<String, HashMap<String, String>> YfklcsHm = new HashMap<String, HashMap<String, String>>();
|
|||
|
|
|||
|
StringBuffer sql = new StringBuffer();
|
|||
|
sql.append("select dt.id dtlId ");
|
|||
|
if (!"".equals(dt4_fieldIdYfklc_fieldName)) {
|
|||
|
sql.append(", dt." + dt4_fieldIdYfklc_fieldName + " Yfklc ");
|
|||
|
}
|
|||
|
if (!"".equals(dt4_fieldIdDnxh_fieldName)) {
|
|||
|
sql.append(", dt." + dt4_fieldIdDnxh_fieldName + " dnxh ");
|
|||
|
}
|
|||
|
if (!"".equals(dt4_fieldIdYfkje_fieldName)) {
|
|||
|
sql.append(", dt." + dt4_fieldIdYfkje_fieldName + " Yfkje ");
|
|||
|
}
|
|||
|
if (!"".equals(dt4_fieldIdYhje_fieldName)) {
|
|||
|
sql.append(", dt." + dt4_fieldIdYhje_fieldName + " yhje ");
|
|||
|
}
|
|||
|
if (!"".equals(dt4_fieldIdSpzje_fieldName)) {
|
|||
|
sql.append(", dt." + dt4_fieldIdSpzje_fieldName + " spzje ");
|
|||
|
}
|
|||
|
if (!"".equals(dt4_fieldIdWhje_fieldName)) {
|
|||
|
sql.append(", dt." + dt4_fieldIdWhje_fieldName + " whje ");
|
|||
|
}
|
|||
|
sql.append(" from formtable_main_" + formidAbs + "_dt4 dt ");
|
|||
|
sql.append(" join formtable_main_" + formidAbs + " main on main.id=dt.mainid ");
|
|||
|
sql.append(" where main.requestId=" + requestid);
|
|||
|
rs_fna.executeSql(sql.toString());
|
|||
|
while (rs_fna.next()) {
|
|||
|
HashMap<String, String> hm = new HashMap<String, String>();
|
|||
|
String keyId = Util.null2String(rs_fna.getString("dtlId")).trim();
|
|||
|
|
|||
|
String Yfklc = Util.null2String(rs_fna.getString("Yfklc")).trim();
|
|||
|
String dnxh = Util.null2String(rs_fna.getString("dnxh")).trim();
|
|||
|
String Yfkje = Util.null2String(rs_fna.getString("Yfkje")).trim();
|
|||
|
String yhje = Util.null2String(rs_fna.getString("yhje")).trim();
|
|||
|
String spzje = Util.null2String(rs_fna.getString("spzje")).trim();
|
|||
|
String whje = Util.null2String(rs_fna.getString("whje")).trim();
|
|||
|
|
|||
|
String dnxhShowName = "";
|
|||
|
|
|||
|
int i_Yfklc = Util.getIntValue(Yfklc);
|
|||
|
int i_dnxh = Util.getIntValue(dnxh);
|
|||
|
|
|||
|
if (i_Yfklc > 0 && i_dnxh > 0) {
|
|||
|
if (!YfklcsHm.containsKey(Yfklc)) {
|
|||
|
FnaCommon.getRequestAdvanceDnxhShowName(i_Yfklc, i_dnxh, YfklcsHm);
|
|||
|
}
|
|||
|
HashMap<String, String> _YfklcDtlIdxHm = YfklcsHm.get(Yfklc);
|
|||
|
if (_YfklcDtlIdxHm != null) {
|
|||
|
dnxhShowName = Util.null2String(_YfklcDtlIdxHm.get(dnxh)).trim();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if ("".equals(dnxhShowName)) {
|
|||
|
dnxhShowName = dnxh;
|
|||
|
}
|
|||
|
|
|||
|
hm.put("Yfklc", Yfklc);
|
|||
|
hm.put("dnxh", dnxh);
|
|||
|
hm.put("dnxhShowName", dnxhShowName);
|
|||
|
hm.put("Yfkje", Yfkje);
|
|||
|
hm.put("yhje", yhje);
|
|||
|
hm.put("spzje", spzje);
|
|||
|
hm.put("whje", whje);
|
|||
|
|
|||
|
retHm.put(keyId, hm);
|
|||
|
|
|||
|
if (i_Yfklc > 0) {
|
|||
|
if (advanceRequestIds.length() > 0) {
|
|||
|
advanceRequestIds.append(",");
|
|||
|
}
|
|||
|
advanceRequestIds.append(i_Yfklc);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (advanceRequestIds.length() > 0) {
|
|||
|
String sql1 = "select SUM(CASE WHEN (a.recordType='advance') THEN a.amountAdvance ELSE 0.0 END) Yfkje, \n" +
|
|||
|
" SUM(CASE WHEN (a.recordType='reverse') THEN a.amountAdvance ELSE 0.0 END) yhje, \n" +
|
|||
|
" SUM(CASE WHEN (a.recordType='freezeAdvance') THEN a.amountAdvance ELSE 0.0 END) spzje, \n" +
|
|||
|
" SUM(CASE WHEN (a.recordType='advance') THEN a.amountAdvance ELSE (a.amountAdvance * -1." +
|
|||
|
") END) whje, \n" +
|
|||
|
" a.advanceRequestId, a.advanceRequestIdDtlId \n" +
|
|||
|
" from FnaAdvanceInfo a \n" +
|
|||
|
" where a.advanceRequestId in (" + advanceRequestIds.toString() + ") \n" +
|
|||
|
" group by a.advanceRequestId, a.advanceRequestIdDtlId";
|
|||
|
rs_fna.executeSql(sql1);
|
|||
|
while (rs_fna.next()) {
|
|||
|
HashMap<String, String> hm = new HashMap<String, String>();
|
|||
|
String keyId = Util.null2String("advanceRequestIdInfo_" + rs_fna.getString("advanceRequestId")).trim() + "_" + Util.null2String(rs_fna.getString("advanceRequestIdDtlId")).trim();
|
|||
|
|
|||
|
String Yfkje = Util.null2String(rs_fna.getString("Yfkje")).trim();
|
|||
|
String yhje = Util.null2String(rs_fna.getString("yhje")).trim();
|
|||
|
String spzje = Util.null2String(rs_fna.getString("spzje")).trim();
|
|||
|
String whje = Util.null2String(rs_fna.getString("whje")).trim();
|
|||
|
|
|||
|
hm.put("Yfkje", Yfkje);
|
|||
|
hm.put("yhje", yhje);
|
|||
|
hm.put("spzje", spzje);
|
|||
|
hm.put("whje", whje);
|
|||
|
|
|||
|
retHm.put(keyId, hm);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return retHm;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取单内序号对应显示名称
|
|||
|
*
|
|||
|
* @param jklc 流程reqid
|
|||
|
* @param dhxh 单内序号
|
|||
|
* @return 单内序号对应显示名称
|
|||
|
*/
|
|||
|
public static String getRequestAdvanceDnxhShowName(int jklc, int dhxh) {
|
|||
|
return FnaCommon.getRequestAdvanceDnxhShowName(jklc, dhxh, null);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取单内序号对应显示名称
|
|||
|
*
|
|||
|
* @param jklc 流程reqid
|
|||
|
* @param dhxh 单内序号
|
|||
|
* @param jklcsHm 输出参数
|
|||
|
* @return 单内序号对应显示名称
|
|||
|
*/
|
|||
|
public static String getRequestAdvanceDnxhShowName(int jklc, int dhxh,
|
|||
|
HashMap<String, HashMap<String, String>> jklcsHm) {
|
|||
|
return FnaCommon.getRequestBorrowDnxhShowName(jklc, dhxh, jklcsHm);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取单内序号对应显示名称
|
|||
|
*
|
|||
|
* @param jklc 流程reqid
|
|||
|
* @param dhxh 单内序号
|
|||
|
* @return 单内序号对应显示名称
|
|||
|
*/
|
|||
|
public static String getRequestBorrowDnxhShowName(int jklc, int dhxh) {
|
|||
|
return FnaCommon.getRequestBorrowDnxhShowName(jklc, dhxh, null);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取单内序号对应显示名称
|
|||
|
*
|
|||
|
* @param jklc 流程reqid
|
|||
|
* @param dhxh 单内序号
|
|||
|
* @param jklcsHm 输出参数
|
|||
|
* @return 单内序号对应显示名称
|
|||
|
*/
|
|||
|
public static String getRequestBorrowDnxhShowName(int jklc, int dhxh,
|
|||
|
HashMap<String, HashMap<String, String>> jklcsHm) {
|
|||
|
RecordSet rs_fna = new RecordSet();
|
|||
|
String spanValue = "";
|
|||
|
if (jklc > 0 && dhxh > 0) {
|
|||
|
boolean _flag1 = false;
|
|||
|
HashMap<String, String> _jklcDtlIdxHm = null;
|
|||
|
if (jklcsHm != null) {
|
|||
|
if (jklcsHm.containsKey(jklc + "")) {
|
|||
|
_jklcDtlIdxHm = jklcsHm.get(jklc + "");
|
|||
|
_flag1 = true;
|
|||
|
} else {
|
|||
|
_jklcDtlIdxHm = new HashMap<String, String>();
|
|||
|
jklcsHm.put(jklc + "", _jklcDtlIdxHm);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (_flag1) {
|
|||
|
_flag1 = _jklcDtlIdxHm != null;
|
|||
|
}
|
|||
|
|
|||
|
if (_flag1) {
|
|||
|
spanValue = Util.null2String(_jklcDtlIdxHm.get(dhxh + "")).trim();
|
|||
|
} else {
|
|||
|
String sql = "select b.formid \n" +
|
|||
|
" from workflow_requestbase a \n" +
|
|||
|
" join workflow_base b on a.workflowid = b.id \n" +
|
|||
|
" where a.requestid = " + jklc;
|
|||
|
rs_fna.executeSql(sql);
|
|||
|
if (rs_fna.next()) {
|
|||
|
int jklcFormid = Util.getIntValue(rs_fna.getString("formid"));
|
|||
|
int jklcFormidAbs = Math.abs(jklcFormid);
|
|||
|
|
|||
|
int dtlIdx = 0;
|
|||
|
sql = "select dt.id dtlId " +
|
|||
|
" from formtable_main_" + jklcFormidAbs + "_dt1 dt " +
|
|||
|
" join formtable_main_" + jklcFormidAbs + " main on main.id=dt.mainid " +
|
|||
|
" where main.requestId=" + jklc + " " +
|
|||
|
" order by dt.id asc";
|
|||
|
rs_fna.executeSql(sql);
|
|||
|
while (rs_fna.next()) {
|
|||
|
dtlIdx++;
|
|||
|
int dtlId = rs_fna.getInt("dtlId");
|
|||
|
if (_jklcDtlIdxHm != null) {
|
|||
|
_jklcDtlIdxHm.put(dtlId + "", dtlIdx + "");
|
|||
|
jklcsHm.put(jklc + "", _jklcDtlIdxHm);
|
|||
|
}
|
|||
|
if (dtlId == dhxh) {
|
|||
|
spanValue = dtlIdx + "";
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return spanValue;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 生成定义成了报销流程的流程表单的数据的查询sql, 适用于明细表1报销的情况
|
|||
|
*
|
|||
|
* @param requestid 流程reqid
|
|||
|
* @param formidAbs 流程表单id绝对值
|
|||
|
* @param dt1_haveIsDtlField 字段中是否包含了至少一个明细表字段
|
|||
|
* @param fieldIdOrgType_isDtl 承担主体类型是否是明细表字段
|
|||
|
* @param fieldNameOrgType 承担主体类型字段名
|
|||
|
* @param fieldIdOrgId_isDtl 承担主体是否是明细表字段
|
|||
|
* @param fieldNameOrgId 承担主体字段名
|
|||
|
* @param fieldIdSubject_isDtl 科目是否是明细表字段
|
|||
|
* @param fieldNameSubject 科目字段名
|
|||
|
* @param fieldIdOccurdate_isDtl 费用日期是否是明细表字段
|
|||
|
* @param fieldNameOccurdate 费用日期字段名
|
|||
|
* @param fieldIdAmount_isDtl 报销金额是否是明细表字段
|
|||
|
* @param fieldNameAmount 报销金额字段名
|
|||
|
* @param fieldNameRequestidApplication 相关费用预申请流程是否是明细表字段
|
|||
|
* @param fieldNameCloseRequestidApplication 相关费用预申请流程字段名
|
|||
|
* @param isDebug 是否打印调试日期
|
|||
|
* @param isNewWf
|
|||
|
* @param fieldIdReqId_isDtl
|
|||
|
* @param fieldNameReqId
|
|||
|
* @param fieldIdReqDtId_isDtl
|
|||
|
* @param fieldNameReqDtId
|
|||
|
* @return SQL
|
|||
|
*/
|
|||
|
public static String getFnaWf8Sql(int requestid, int formidAbs, boolean dt1_haveIsDtlField,
|
|||
|
String fieldIdOrgType_isDtl, String fieldNameOrgType,
|
|||
|
String fieldIdOrgId_isDtl, String fieldNameOrgId,
|
|||
|
String fieldIdSubject_isDtl, String fieldNameSubject,
|
|||
|
String fieldIdOccurdate_isDtl, String fieldNameOccurdate,
|
|||
|
String fieldIdAmount_isDtl, String fieldNameAmount,
|
|||
|
String fieldNameRequestidApplication, String fieldNameCloseRequestidApplication,
|
|||
|
boolean isDebug, boolean isNewWf,
|
|||
|
String fieldIdReqId_isDtl, String fieldNameReqId,
|
|||
|
String fieldIdReqDtId_isDtl, String fieldNameReqDtId) {
|
|||
|
|
|||
|
StringBuffer querySql = new StringBuffer("select ");
|
|||
|
|
|||
|
if ("1".equals(fieldIdOrgType_isDtl)) {
|
|||
|
querySql.append(" dt.");
|
|||
|
} else {
|
|||
|
querySql.append(" main.");
|
|||
|
}
|
|||
|
querySql.append(fieldNameOrgType + " organizationtype, ");
|
|||
|
|
|||
|
if ("1".equals(fieldIdOrgId_isDtl)) {
|
|||
|
querySql.append(" dt.");
|
|||
|
} else {
|
|||
|
querySql.append(" main.");
|
|||
|
}
|
|||
|
querySql.append(fieldNameOrgId + " organizationid, ");
|
|||
|
|
|||
|
if ("1".equals(fieldIdSubject_isDtl)) {
|
|||
|
querySql.append(" dt.");
|
|||
|
} else {
|
|||
|
querySql.append(" main.");
|
|||
|
}
|
|||
|
querySql.append(fieldNameSubject + " subject, ");
|
|||
|
|
|||
|
if ("1".equals(fieldIdOccurdate_isDtl)) {
|
|||
|
querySql.append(" dt.");
|
|||
|
} else {
|
|||
|
querySql.append(" main.");
|
|||
|
}
|
|||
|
querySql.append(fieldNameOccurdate + " budgetperiod, ");
|
|||
|
|
|||
|
if ("1".equals(fieldIdAmount_isDtl)) {
|
|||
|
querySql.append(" dt.");
|
|||
|
} else {
|
|||
|
querySql.append(" main.");
|
|||
|
}
|
|||
|
querySql.append(fieldNameAmount + " applyamount, ");
|
|||
|
|
|||
|
if (isNewWf) {
|
|||
|
if ("1".equals(fieldIdReqId_isDtl)) {
|
|||
|
querySql.append(" dt.");
|
|||
|
} else {
|
|||
|
querySql.append(" main.");
|
|||
|
}
|
|||
|
querySql.append(fieldNameReqId + " ReqId, ");
|
|||
|
|
|||
|
if ("1".equals(fieldIdReqDtId_isDtl)) {
|
|||
|
querySql.append(" dt.");
|
|||
|
} else {
|
|||
|
querySql.append(" main.");
|
|||
|
}
|
|||
|
querySql.append(fieldNameReqDtId + " ReqDtId, ");
|
|||
|
}
|
|||
|
|
|||
|
if (!"".equals(fieldNameRequestidApplication)) {
|
|||
|
querySql.append(" main." + fieldNameRequestidApplication + " fysqlc, ");
|
|||
|
}
|
|||
|
|
|||
|
if (!"".equals(fieldNameCloseRequestidApplication)) {
|
|||
|
querySql.append(" main." + fieldNameCloseRequestidApplication + " sfbxwc, ");
|
|||
|
}
|
|||
|
|
|||
|
if (dt1_haveIsDtlField) {
|
|||
|
querySql.append(" dt.id dtlId ");
|
|||
|
} else {
|
|||
|
querySql.append(" -987654321 dtlId ");
|
|||
|
}
|
|||
|
|
|||
|
querySql.append(" from formtable_main_" + formidAbs + " main ");
|
|||
|
if (dt1_haveIsDtlField) {
|
|||
|
querySql.append(" join formtable_main_" + formidAbs + "_dt1 dt on main.id=dt.mainid ");
|
|||
|
}
|
|||
|
querySql.append(" where main.requestId=" + requestid);
|
|||
|
if (dt1_haveIsDtlField) {
|
|||
|
querySql.append(" order by dt.id asc ");
|
|||
|
}
|
|||
|
if (isDebug) {
|
|||
|
new BaseBean().writeLog("FnaCommon -> getFnaWf8Sql -> querySql=" + querySql.toString());
|
|||
|
}
|
|||
|
|
|||
|
return querySql.toString();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* 生成定义成了报销流程的流程表单的数据的查询sql, 适用于明细表1报销的情况
|
|||
|
*
|
|||
|
* @param requestid 流程reqid
|
|||
|
* @param formidAbs 流程表单id绝对值
|
|||
|
* @param dt1_haveIsDtlField 字段中是否包含了至少一个明细表字段
|
|||
|
* @param fieldIdOrgType_isDtl 承担主体类型是否是明细表字段
|
|||
|
* @param fieldNameOrgType 承担主体类型字段名
|
|||
|
* @param fieldIdOrgId_isDtl 承担主体是否是明细表字段
|
|||
|
* @param fieldNameOrgId 承担主体字段名
|
|||
|
* @param fieldIdSubject_isDtl 科目是否是明细表字段
|
|||
|
* @param fieldNameSubject 科目字段名
|
|||
|
* @param fieldIdOccurdate_isDtl 费用日期是否是明细表字段
|
|||
|
* @param fieldNameOccurdate 费用日期字段名
|
|||
|
* @param fieldIdAmount_isDtl 报销金额是否是明细表字段
|
|||
|
* @param fieldNameAmount 报销金额字段名
|
|||
|
* @param fieldNameRequestidApplication 相关费用预申请流程是否是明细表字段
|
|||
|
* @param fieldNameCloseRequestidApplication 相关费用预申请流程字段名
|
|||
|
* @param isDebug 是否打印调试日期
|
|||
|
* @return SQL
|
|||
|
*/
|
|||
|
public static String getFnaWf8Sql(int requestid, int formidAbs, boolean dt1_haveIsDtlField,
|
|||
|
String fieldIdOrgType_isDtl, String fieldNameOrgType,
|
|||
|
String fieldIdOrgId_isDtl, String fieldNameOrgId,
|
|||
|
String fieldIdSubject_isDtl, String fieldNameSubject,
|
|||
|
String fieldIdOccurdate_isDtl, String fieldNameOccurdate,
|
|||
|
String fieldIdAmount_isDtl, String fieldNameAmount,
|
|||
|
String fieldNameRequestidApplication, String fieldNameCloseRequestidApplication,
|
|||
|
boolean isDebug) {
|
|||
|
|
|||
|
|
|||
|
return FnaCommon.getFnaWf8Sql(requestid, formidAbs, dt1_haveIsDtlField,
|
|||
|
fieldIdOrgType_isDtl, fieldNameOrgType,
|
|||
|
fieldIdOrgId_isDtl, fieldNameOrgId,
|
|||
|
fieldIdSubject_isDtl, fieldNameSubject,
|
|||
|
fieldIdOccurdate_isDtl, fieldNameOccurdate,
|
|||
|
fieldIdAmount_isDtl, fieldNameAmount,
|
|||
|
fieldNameRequestidApplication, fieldNameCloseRequestidApplication,
|
|||
|
isDebug, false,
|
|||
|
null, null,
|
|||
|
null, null);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* 生成定义成了报销流程的流程表单的数据的查询sql, 适用于多明细表报销的情况
|
|||
|
*
|
|||
|
* @param requestid 流程reqid
|
|||
|
* @param formidAbs 流程表单id绝对值
|
|||
|
* @param isDebug 是否打印调试日期
|
|||
|
* @return SQL
|
|||
|
*/
|
|||
|
public static String getFnaWf8MultiSql(int requestid, int formidAbs, boolean isDebug) {
|
|||
|
StringBuffer querySql = new StringBuffer();
|
|||
|
boolean dt1_haveIsDtlField = true;
|
|||
|
|
|||
|
RecordSet rs = new RecordSet();
|
|||
|
rs.executeQuery("select a.workflowid from workflow_requestbase a where a.requestid = ?", requestid);
|
|||
|
if (rs.next()) {
|
|||
|
int workflowid = rs.getInt("workflowid");
|
|||
|
|
|||
|
FnaWfMultiSet fnaWfMultiSet = new FnaWfMultiSet(workflowid, 0, 0);
|
|||
|
HashMap<String, FnaWfMultiSetFieldInfo> fieldInfoHm = fnaWfMultiSet.getFieldInfoHm();
|
|||
|
List<String> detailTableList = fnaWfMultiSet.getDetailTableList();
|
|||
|
int detailTableList_len = detailTableList.size();
|
|||
|
|
|||
|
new BaseBean().writeLog("detailTableList_len:" + detailTableList_len);
|
|||
|
|
|||
|
for (int i = 0; i < detailTableList_len; i++) {
|
|||
|
String detailTable = detailTableList.get(i);
|
|||
|
FnaWfMultiSetFieldInfo fnaWfMultiSetFieldInfo = fieldInfoHm.get(detailTable);
|
|||
|
|
|||
|
if (i > 0) {
|
|||
|
querySql.append("\r\n UNION ALL \r\n");
|
|||
|
}
|
|||
|
|
|||
|
querySql.append(" select ");
|
|||
|
|
|||
|
String zd_orgtype = "";
|
|||
|
if (fnaWfMultiSetFieldInfo.getFkCdztlx_dtlNum() > 0) {
|
|||
|
//querySql.append(" dt.");
|
|||
|
zd_orgtype = "dt." + fnaWfMultiSetFieldInfo.getFkCdztlx_fieldName();
|
|||
|
} else {
|
|||
|
//querySql.append(" main.");
|
|||
|
zd_orgtype = "main." + fnaWfMultiSetFieldInfo.getFkCdztlx_fieldName();
|
|||
|
}
|
|||
|
//querySql.append(fnaWfMultiSetFieldInfo.getFkCdztlx_fieldName()+" organizationtype, ");
|
|||
|
querySql.append(zd_orgtype + " organizationtype, ");
|
|||
|
|
|||
|
//拼接 承担主体ID 的 case when 语句 start
|
|||
|
String orgid_Case_When = " (CASE ";
|
|||
|
//承担主体 - 人员 - 字段英文名称
|
|||
|
String zd_orgid = fnaWfMultiSetFieldInfo.getFkBxgr_fieldName();
|
|||
|
if (fnaWfMultiSetFieldInfo.getFkBxgr_dtlNum() > 0 && zd_orgid != null && !"".equals(zd_orgid)) {
|
|||
|
orgid_Case_When += (" WHEN " + zd_orgtype + " = 0 THEN dt." + zd_orgid);
|
|||
|
} else if (zd_orgid != null && !"".equals(zd_orgid)) {
|
|||
|
orgid_Case_When += (" WHEN " + zd_orgtype + " = 0 THEN main." + zd_orgid);
|
|||
|
}
|
|||
|
//承担主体 - 部门 - 字段英文名称
|
|||
|
zd_orgid = fnaWfMultiSetFieldInfo.getFkBxbm_fieldName();
|
|||
|
if (fnaWfMultiSetFieldInfo.getFkBxbm_dtlNum() > 0 && zd_orgid != null && !"".equals(zd_orgid)) {
|
|||
|
orgid_Case_When += (" WHEN " + zd_orgtype + " = 1 THEN dt." + zd_orgid);
|
|||
|
} else if (zd_orgid != null && !"".equals(zd_orgid)) {
|
|||
|
orgid_Case_When += (" WHEN " + zd_orgtype + " = 1 THEN main." + zd_orgid);
|
|||
|
}
|
|||
|
//承担主体 - 分部 - 字段英文名称
|
|||
|
zd_orgid = fnaWfMultiSetFieldInfo.getFkBxfb_fieldName();
|
|||
|
if (fnaWfMultiSetFieldInfo.getFkBxfb_dtlNum() > 0 && zd_orgid != null && !"".equals(zd_orgid)) {
|
|||
|
orgid_Case_When += (" WHEN " + zd_orgtype + " = 2 THEN dt." + zd_orgid);
|
|||
|
} else if (zd_orgid != null && !"".equals(zd_orgid)) {
|
|||
|
orgid_Case_When += (" WHEN " + zd_orgtype + " = 2 THEN main." + zd_orgid);
|
|||
|
}
|
|||
|
//承担主体 - 成本中心 - 字段英文名称
|
|||
|
zd_orgid = fnaWfMultiSetFieldInfo.getFkBxcbzx_fieldName();
|
|||
|
if (fnaWfMultiSetFieldInfo.getFkBxcbzx_dtlNum() > 0 && zd_orgid != null && !"".equals(zd_orgid)) {
|
|||
|
orgid_Case_When += (" WHEN " + zd_orgtype + " = 3 THEN dt." + zd_orgid);
|
|||
|
} else if (zd_orgid != null && !"".equals(zd_orgid)) {
|
|||
|
orgid_Case_When += (" WHEN " + zd_orgtype + " = 3 THEN main." + zd_orgid);
|
|||
|
}
|
|||
|
orgid_Case_When += " ELSE -1 END) ";
|
|||
|
querySql.append(orgid_Case_When + " organizationid, ");
|
|||
|
//拼接 承担主体ID 的 case when 语句 end
|
|||
|
|
|||
|
if (fnaWfMultiSetFieldInfo.getFkBxkm_dtlNum() > 0) {
|
|||
|
querySql.append(" dt.");
|
|||
|
} else {
|
|||
|
querySql.append(" main.");
|
|||
|
}
|
|||
|
querySql.append(fnaWfMultiSetFieldInfo.getFkBxkm_fieldName() + " subject, ");
|
|||
|
|
|||
|
if (fnaWfMultiSetFieldInfo.getFkFyrq_dtlNum() > 0) {
|
|||
|
querySql.append(" dt.");
|
|||
|
} else {
|
|||
|
querySql.append(" main.");
|
|||
|
}
|
|||
|
querySql.append(fnaWfMultiSetFieldInfo.getFkFyrq_fieldName() + " budgetperiod, ");
|
|||
|
|
|||
|
if (fnaWfMultiSetFieldInfo.getFkBxje_dtlNum() > 0) {
|
|||
|
querySql.append(" dt.");
|
|||
|
} else {
|
|||
|
querySql.append(" main.");
|
|||
|
}
|
|||
|
querySql.append(fnaWfMultiSetFieldInfo.getFkBxje_fieldName() + " applyamount, ");
|
|||
|
|
|||
|
// if(!"".equals(fieldNameRequestidApplication)){
|
|||
|
// querySql.append(" main."+fieldNameRequestidApplication+" fysqlc, ");
|
|||
|
// }
|
|||
|
//
|
|||
|
// if(!"".equals(fieldNameCloseRequestidApplication)){
|
|||
|
// querySql.append(" main."+fieldNameCloseRequestidApplication+" sfbxwc, ");
|
|||
|
// }
|
|||
|
|
|||
|
if (dt1_haveIsDtlField) {
|
|||
|
querySql.append(" dt.id dtlId, '" + StringEscapeUtils.escapeSql(detailTable) + "' detailtable ");
|
|||
|
} else {
|
|||
|
querySql.append(" -987654321 dtlId, '' detailtable ");
|
|||
|
}
|
|||
|
|
|||
|
querySql.append(" from formtable_main_" + formidAbs + " main ");
|
|||
|
if (dt1_haveIsDtlField) {
|
|||
|
querySql.append(" join " + detailTable + " dt on main.id=dt.mainid ");
|
|||
|
}
|
|||
|
querySql.append(" where main.requestId=" + requestid + " ");
|
|||
|
}
|
|||
|
}
|
|||
|
if (true) {
|
|||
|
new BaseBean().writeLog(querySql.toString());
|
|||
|
}
|
|||
|
|
|||
|
return querySql.toString();
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取流程相关费控信息
|
|||
|
*
|
|||
|
* @param _workflowid
|
|||
|
* @return 是否是系统表单的费控流程:key:isEnableFnaWfSysWf;value:true、false;<br>
|
|||
|
* 是否是启用的Ecology7费控流程:key:isEnableFnaWfE7;value:true、false;<br>
|
|||
|
* 是否是启用的Ecology8费控流程:key:isEnableFnaWfE8;value:true、false;<br>
|
|||
|
* 流程表单id:key:formId;value:表单id;<br>
|
|||
|
* 流程是否新表单:key:isbill;value:0、1;
|
|||
|
*/
|
|||
|
public static HashMap<String, String> getIsEnableFnaWfHm(int _workflowid) {
|
|||
|
BaseBean _bb = new BaseBean();
|
|||
|
RecordSet rs_fna = new RecordSet();
|
|||
|
|
|||
|
HashMap<String, String> retHm = new HashMap<String, String>();
|
|||
|
|
|||
|
//是否是系统表单的费控流程
|
|||
|
retHm.put("isEnableFnaWfSysWf", "false");
|
|||
|
int _formId = 0;
|
|||
|
int _isbill = -1;
|
|||
|
String sqlFna1 = "select a.formid, a.isbill from workflow_base a where a.id = " + _workflowid;
|
|||
|
rs_fna.executeSql(sqlFna1);
|
|||
|
if (rs_fna.next()) {
|
|||
|
_formId = Util.getIntValue(rs_fna.getString("formid"), 0);
|
|||
|
_isbill = Util.getIntValue(rs_fna.getString("isbill"), 0);
|
|||
|
}
|
|||
|
retHm.put("formId", _formId + "");
|
|||
|
retHm.put("isbill", _isbill + "");
|
|||
|
//系统表单:报销申请单、付款申请单,也是显示显示预算信息的,需要特殊处理
|
|||
|
if ((_formId == 158 || _formId == 156) && _isbill == 1) {
|
|||
|
retHm.put("isEnableFnaWfSysWf", "true");
|
|||
|
}
|
|||
|
|
|||
|
//是否是启用的Ecology7费控流程
|
|||
|
retHm.put("isEnableFnaWfE7", "false");
|
|||
|
//ecology7中配置的自定义表单费控流程的workflowId,多个id之间使用英文半角,号分隔
|
|||
|
String ecology7_FnaWfIds = "";
|
|||
|
try {
|
|||
|
ecology7_FnaWfIds = Util.null2String(new String(Util.null2String(_bb.getPropValue("Ecology7_FnaWf", "ecology7_FnaWfIds")).getBytes("ISO-8859-1"), "gbk")).trim();
|
|||
|
} catch (Exception e) {
|
|||
|
}
|
|||
|
if (!"".equals(ecology7_FnaWfIds) && _workflowid > 0 && ("," + ecology7_FnaWfIds + ",").indexOf("," + _workflowid + ",") >= 0) {
|
|||
|
retHm.put("isEnableFnaWfE7", "true");
|
|||
|
}
|
|||
|
|
|||
|
//是否是启用的Ecology8费控流程
|
|||
|
retHm.put("isEnableFnaWfE8", "false");
|
|||
|
//是否是启用的Ecology8借款费控流程
|
|||
|
retHm.put("isEnableFnaBorrowWf", "false");
|
|||
|
//是否是启用的Ecology8还款费控流程
|
|||
|
retHm.put("isEnableFnaRepaymentWf", "false");
|
|||
|
//是否是启用的Ecology8预算变更流程
|
|||
|
retHm.put("isEnableFnaChangeWf", "false");
|
|||
|
//是否是启用的Ecology8预算分摊流程
|
|||
|
retHm.put("isEnableFnaShareWf", "false");
|
|||
|
//费用报销流程是否启用了还款明细
|
|||
|
retHm.put("enableRepayment", "false");
|
|||
|
//费用报销流程是否启用了预付款冲销明细
|
|||
|
retHm.put("enableReverseAdvance", "false");
|
|||
|
//是否是启用的Ecology8预付款费控流程
|
|||
|
retHm.put("isEnableFnaAdvanceWf", "false");
|
|||
|
|
|||
|
String sqlFnaWfSet = "select a.* from fnaFeeWfInfo a where a.workflowid = " + _workflowid;
|
|||
|
rs_fna.executeSql(sqlFnaWfSet);
|
|||
|
if (rs_fna.next()) {
|
|||
|
if (rs_fna.getInt("enable") == 1) {
|
|||
|
String fnaWfType = Util.null2String(rs_fna.getString("fnaWfType"));
|
|||
|
if ("fnaFeeWf".equals(fnaWfType)) {
|
|||
|
retHm.put("isEnableFnaWfE8", "true");
|
|||
|
int fnaWfTypeColl = rs_fna.getInt("fnaWfTypeColl");
|
|||
|
int fnaWfTypeReverse = rs_fna.getInt("fnaWfTypeReverse");
|
|||
|
boolean enableRepayment = (fnaWfTypeReverse > 0 && fnaWfTypeColl > 0);
|
|||
|
if (enableRepayment) {
|
|||
|
retHm.put("enableRepayment", "true");
|
|||
|
}
|
|||
|
boolean enableReverseAdvance = rs_fna.getInt("fnaWfTypeReverseAdvance") == 1;
|
|||
|
if (enableReverseAdvance) {
|
|||
|
retHm.put("enableReverseAdvance", "true");
|
|||
|
}
|
|||
|
} else if ("borrow".equals(fnaWfType)) {
|
|||
|
retHm.put("isEnableFnaBorrowWf", "true");
|
|||
|
} else if ("repayment".equals(fnaWfType)) {
|
|||
|
retHm.put("isEnableFnaRepaymentWf", "true");
|
|||
|
} else if ("change".equals(fnaWfType)) {
|
|||
|
retHm.put("isEnableFnaChangeWf", "true");
|
|||
|
} else if ("share".equals(fnaWfType)) {
|
|||
|
retHm.put("isEnableFnaShareWf", "true");
|
|||
|
} else if ("advance".equals(fnaWfType)) {
|
|||
|
retHm.put("isEnableFnaAdvanceWf", "true");
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return retHm;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 从session中获取预算编制编辑页面,编辑单尚未保存到数据库中的新预算额度
|
|||
|
*
|
|||
|
* @param session
|
|||
|
* @param guid1 编辑页面guid1
|
|||
|
* @param tabFeeperiod 预算周期:月度:M;季度:Q;半年度:H;年度:Y;
|
|||
|
* @param subject 三级科目id
|
|||
|
* @param budgetperiodslist 预算周期期间数:月度:(1~12);季度:(1~4);半年度:(1~2);年度:(1);
|
|||
|
* @param currentAmt 从数据库中获取的当前预算金额,如果session中不存在则返回该金额
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static double getBudgetEditNewAmtByGuid(HttpSession session, String guid1, String tabFeeperiod, int subject, int budgetperiodslist, double currentAmt) {
|
|||
|
List mbudgetvalues = (List) session.getAttribute("FnaBudgetEditSaveFnaAjax.jsp_mbudgetvalues_" + guid1);
|
|||
|
List msubject3names = (List) session.getAttribute("FnaBudgetEditSaveFnaAjax.jsp_msubject3names_" + guid1);
|
|||
|
List qbudgetvalues = (List) session.getAttribute("FnaBudgetEditSaveFnaAjax.jsp_qbudgetvalues_" + guid1);
|
|||
|
List qsubject3names = (List) session.getAttribute("FnaBudgetEditSaveFnaAjax.jsp_qsubject3names_" + guid1);
|
|||
|
List hbudgetvalues = (List) session.getAttribute("FnaBudgetEditSaveFnaAjax.jsp_hbudgetvalues_" + guid1);
|
|||
|
List hsubject3names = (List) session.getAttribute("FnaBudgetEditSaveFnaAjax.jsp_hsubject3names_" + guid1);
|
|||
|
List ybudgetvalues = (List) session.getAttribute("FnaBudgetEditSaveFnaAjax.jsp_ybudgetvalues_" + guid1);
|
|||
|
List ysubject3names = (List) session.getAttribute("FnaBudgetEditSaveFnaAjax.jsp_ysubject3names_" + guid1);
|
|||
|
List budgetValues = (List) session.getAttribute("FnaBudgetEditSaveFnaAjax.jsp_budgetValues_" + guid1);
|
|||
|
List subjectNames = (List) session.getAttribute("FnaBudgetEditSaveFnaAjax.jsp_subjectNames_" + guid1);
|
|||
|
|
|||
|
if (mbudgetvalues == null) {
|
|||
|
mbudgetvalues = new ArrayList();
|
|||
|
msubject3names = new ArrayList();
|
|||
|
}
|
|||
|
if (qbudgetvalues == null) {
|
|||
|
qbudgetvalues = new ArrayList();
|
|||
|
qsubject3names = new ArrayList();
|
|||
|
}
|
|||
|
if (hbudgetvalues == null) {
|
|||
|
hbudgetvalues = new ArrayList();
|
|||
|
hsubject3names = new ArrayList();
|
|||
|
}
|
|||
|
if (ybudgetvalues == null) {
|
|||
|
ybudgetvalues = new ArrayList();
|
|||
|
ysubject3names = new ArrayList();
|
|||
|
}
|
|||
|
if (budgetValues == null) {
|
|||
|
budgetValues = new ArrayList();
|
|||
|
subjectNames = new ArrayList();
|
|||
|
}
|
|||
|
|
|||
|
return FnaCommon.getBudgetEditNewAmt(tabFeeperiod, subject, budgetperiodslist, currentAmt,
|
|||
|
mbudgetvalues, msubject3names, qbudgetvalues, qsubject3names, hbudgetvalues, hsubject3names, ybudgetvalues, ysubject3names,
|
|||
|
budgetValues, subjectNames);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 从session中获取和List中获取,预算编制编辑页面,编辑单尚未保存到数据库中的新预算额度
|
|||
|
*
|
|||
|
* @param tabFeeperiod 预算周期:月度:M;季度:Q;半年度:H;年度:Y;
|
|||
|
* @param subject 科目id
|
|||
|
* @param budgetperiodslist 预算周期期间数:月度:(1~12);季度:(1~4);半年度:(1~2);年度:(1);
|
|||
|
* @param currentAmt 从数据库中获取的当前预算金额,如果session中不存在则返回该金额
|
|||
|
* @param mbudgetvalues
|
|||
|
* @param msubject3names
|
|||
|
* @param qbudgetvalues
|
|||
|
* @param qsubject3names
|
|||
|
* @param hbudgetvalues
|
|||
|
* @param hsubject3names
|
|||
|
* @param ybudgetvalues
|
|||
|
* @param ysubject3names
|
|||
|
* @param budgetValues
|
|||
|
* @param subjectNames
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static double getBudgetEditNewAmt(String tabFeeperiod, int subject, int budgetperiodslist, double currentAmt,
|
|||
|
List mbudgetvalues, List msubject3names,
|
|||
|
List qbudgetvalues, List qsubject3names,
|
|||
|
List hbudgetvalues, List hsubject3names,
|
|||
|
List ybudgetvalues, List ysubject3names,
|
|||
|
List budgetValues, List subjectNames) {
|
|||
|
DecimalFormat df = new DecimalFormat("####################################################0.00");
|
|||
|
|
|||
|
double _ysze = currentAmt;
|
|||
|
String _yszeStr = df.format(_ysze);
|
|||
|
|
|||
|
if ("M".equals(tabFeeperiod)) {
|
|||
|
int _idx = msubject3names.indexOf(subject + "");
|
|||
|
if (_idx >= 0) {
|
|||
|
try {
|
|||
|
String[] _valArray = (String[]) mbudgetvalues.get(_idx);
|
|||
|
_yszeStr = Util.null2String(_valArray[budgetperiodslist - 1]).trim();
|
|||
|
_ysze = Util.getDoubleValue(_yszeStr, 0.00);
|
|||
|
} catch (Exception ex1) {
|
|||
|
new BaseBean().writeLog(ex1);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
} else if ("Q".equals(tabFeeperiod)) {
|
|||
|
int _idx = qsubject3names.indexOf(subject + "");
|
|||
|
if (_idx >= 0) {
|
|||
|
try {
|
|||
|
String[] _valArray = (String[]) qbudgetvalues.get(_idx);
|
|||
|
_yszeStr = Util.null2String(_valArray[budgetperiodslist - 1]).trim();
|
|||
|
_ysze = Util.getDoubleValue(_yszeStr, 0.00);
|
|||
|
} catch (Exception ex1) {
|
|||
|
new BaseBean().writeLog(ex1);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
} else if ("H".equals(tabFeeperiod)) {
|
|||
|
int _idx = hsubject3names.indexOf(subject + "");
|
|||
|
if (_idx >= 0) {
|
|||
|
try {
|
|||
|
String[] _valArray = (String[]) hbudgetvalues.get(_idx);
|
|||
|
_yszeStr = Util.null2String(_valArray[budgetperiodslist - 1]).trim();
|
|||
|
_ysze = Util.getDoubleValue(_yszeStr, 0.00);
|
|||
|
} catch (Exception ex1) {
|
|||
|
new BaseBean().writeLog(ex1);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
} else if ("Y".equals(tabFeeperiod)) {
|
|||
|
int _idx = ysubject3names.indexOf(subject + "");
|
|||
|
if (_idx >= 0) {
|
|||
|
try {
|
|||
|
String[] _valArray = (String[]) ybudgetvalues.get(_idx);
|
|||
|
_yszeStr = Util.null2String(_valArray[budgetperiodslist - 1]).trim();
|
|||
|
_ysze = Util.getDoubleValue(_yszeStr, 0.00);
|
|||
|
} catch (Exception ex1) {
|
|||
|
new BaseBean().writeLog(ex1);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
int _idx = subjectNames.indexOf(subject + "");
|
|||
|
if (_idx >= 0) {
|
|||
|
try {
|
|||
|
String[] _valArray = (String[]) budgetValues.get(_idx);
|
|||
|
_yszeStr = Util.null2String(_valArray[budgetperiodslist - 1]).trim();
|
|||
|
_ysze = Util.getDoubleValue(_yszeStr, 0.00);
|
|||
|
} catch (Exception ex1) {
|
|||
|
new BaseBean().writeLog(ex1);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return Util.getDoubleValue(df.format(_ysze));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获得并保存预算编制界面分页每页行数
|
|||
|
*
|
|||
|
* @param pageSize
|
|||
|
* @param defPageSize
|
|||
|
* @param userId
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static int getAndSaveFnaBudgetInfoPageSize(int pageSize, int defPageSize, int userId) {
|
|||
|
RecordSet rs = new RecordSet();
|
|||
|
if (pageSize <= 0) {
|
|||
|
pageSize = defPageSize;
|
|||
|
rs.executeQuery("select pageSize from FnaBudgetInfoPageSize where userId=?", userId);
|
|||
|
if (rs.next()) {
|
|||
|
pageSize = Util.getIntValue(rs.getString("pageSize"), 50);
|
|||
|
}
|
|||
|
}
|
|||
|
if (pageSize <= 0) {
|
|||
|
pageSize = defPageSize;
|
|||
|
}
|
|||
|
rs.executeQuery("select * from FnaBudgetInfoPageSize where userId=?", userId);
|
|||
|
if (rs.next()) {
|
|||
|
String _id = rs.getString("id");
|
|||
|
int _pageSize = rs.getInt("pageSize");
|
|||
|
if (pageSize != _pageSize) {
|
|||
|
rs.executeUpdate("update FnaBudgetInfoPageSize set pageSize = ? where id = ?", pageSize, _id);
|
|||
|
}
|
|||
|
} else {
|
|||
|
rs.executeUpdate("delete from FnaBudgetInfoPageSize where userId=?", userId);
|
|||
|
rs.executeUpdate("insert into FnaBudgetInfoPageSize (userId, pageSize) values (?, ?)", userId, pageSize);
|
|||
|
}
|
|||
|
|
|||
|
return pageSize;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 转义 & " ' < > 空格 这些html特殊字符<br>
|
|||
|
* str始终先进行trim后再进行转义处理
|
|||
|
*
|
|||
|
* @param str
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String escapeHtmlTrim(String str) {
|
|||
|
return FnaCommon.escapeHtml(Util.null2String(str).trim());
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 转义 & " ' < > 空格 这些html特殊字符<br>
|
|||
|
* str=null,直接返回空字符串
|
|||
|
*
|
|||
|
* @param str
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String escapeHtmlNull(String str) {
|
|||
|
if (str == null) {
|
|||
|
return "";
|
|||
|
} else {
|
|||
|
return FnaCommon.escapeHtml(str);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 转义 & " ' < > 空格 这些html特殊字符
|
|||
|
*
|
|||
|
* @param str
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String escapeHtml(String str) {
|
|||
|
if (str == null || "".equals(str)) {
|
|||
|
return str;
|
|||
|
}
|
|||
|
return str
|
|||
|
.replaceAll("\\&", "&")
|
|||
|
.replaceAll("\"", """)
|
|||
|
.replaceAll("\'", "'")
|
|||
|
.replaceAll("\\<", "<")
|
|||
|
.replaceAll("\\>", ">")
|
|||
|
;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 转义 & " ' < > 这些xml特殊字符
|
|||
|
*
|
|||
|
* @param str
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String escapeXml(String str) {
|
|||
|
if (str == null || "".equals(str)) {
|
|||
|
return str;
|
|||
|
}
|
|||
|
return str
|
|||
|
.replaceAll("\\&", "&")
|
|||
|
.replaceAll("\"", """)
|
|||
|
.replaceAll("\'", "'")
|
|||
|
.replaceAll("\\<", "<")
|
|||
|
.replaceAll("\\>", ">")
|
|||
|
;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* 将url参数值中的被转义的编码解码成实际的值
|
|||
|
*
|
|||
|
* @param str
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String decodeURL(String str) {
|
|||
|
if (str == null || "".equals(str)) {
|
|||
|
return str;
|
|||
|
}
|
|||
|
return str
|
|||
|
.replaceAll("%20", " ")
|
|||
|
.replaceAll("%22", "\"")
|
|||
|
.replaceAll("%23", "#")
|
|||
|
.replaceAll("%28", "(")
|
|||
|
.replaceAll("%29", ")")
|
|||
|
.replaceAll("%2B", "+")
|
|||
|
.replaceAll("%2C", ",")
|
|||
|
.replaceAll("%2F", "/")
|
|||
|
.replaceAll("%3A", ":")
|
|||
|
.replaceAll("%3B", ";")
|
|||
|
.replaceAll("%3C", "<")
|
|||
|
.replaceAll("%3D", "=")
|
|||
|
.replaceAll("%3E", ">")
|
|||
|
.replaceAll("%3F", "?")
|
|||
|
.replaceAll("%4o", "@")
|
|||
|
.replaceAll("%5C", "\\\\")
|
|||
|
.replaceAll("%7C", "|")
|
|||
|
.replaceAll("%26", "&")
|
|||
|
.replaceAll("%25", "%")
|
|||
|
;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 给url参数值转义成url中可以传送的编码
|
|||
|
*
|
|||
|
* @param str
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String encodeURL(String str) {
|
|||
|
if (str == null || "".equals(str)) {
|
|||
|
return str;
|
|||
|
}
|
|||
|
return str
|
|||
|
.replaceAll("\\%", "%25")
|
|||
|
.replaceAll("\\&", "%26")
|
|||
|
.replaceAll(" ", "%20")
|
|||
|
.replaceAll("\"", "%22")
|
|||
|
.replaceAll("\\#", "%23")
|
|||
|
.replaceAll("\\(", "%28")
|
|||
|
.replaceAll("\\)", "%29")
|
|||
|
.replaceAll("\\+", "%2B")
|
|||
|
.replaceAll("\\,", "%2C")
|
|||
|
.replaceAll("\\/", "%2F")
|
|||
|
.replaceAll("\\:", "%3A")
|
|||
|
.replaceAll("\\;", "%3B")
|
|||
|
.replaceAll("\\<", "%3C")
|
|||
|
.replaceAll("\\=", "%3D")
|
|||
|
.replaceAll("\\>", "%3E")
|
|||
|
.replaceAll("\\?", "%3F")
|
|||
|
.replaceAll("\\@", "%4o")
|
|||
|
.replaceAll("\\\\", "%5C")
|
|||
|
.replaceAll("\\|", "%7C")
|
|||
|
;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 系统表单
|
|||
|
* 获得相应具体某个流程流转中某个字段是否可编辑状态(只要有任意一个节点是可编辑状态即返回true)
|
|||
|
*
|
|||
|
* @param fieldName
|
|||
|
* @param requestId
|
|||
|
* @param currentNodeId
|
|||
|
* @param detailtable
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static boolean isEditFieldByReqId(String fieldName, int requestId, int currentNodeId, String detailtable) {
|
|||
|
|
|||
|
boolean isEdit = FnaCommon.isEditField(fieldName, currentNodeId, detailtable);
|
|||
|
if (isEdit) {
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
if (requestId > 0) {
|
|||
|
RecordSet rs = new RecordSet();
|
|||
|
//签字类型:0:批准;1:保存;2:提交;3:退回;4:重新打开;5:删除;6:激活;7:转发;9:批注;e:强制归档;t:抄送;s:督办;i:??;
|
|||
|
rs.executeSql("select DISTINCT nodeid from workflow_requestLog where logtype in ('0','2') and requestid = " + requestId);
|
|||
|
while (rs.next()) {
|
|||
|
int nodeid = rs.getInt("nodeid");
|
|||
|
isEdit = FnaCommon.isEditField(fieldName, nodeid, detailtable);
|
|||
|
if (isEdit) {
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 系统表单
|
|||
|
* 获得相应节点中某个字段是否是可编辑状态
|
|||
|
*
|
|||
|
* @param fieldName 字段名称
|
|||
|
* @param nodeid 节点id
|
|||
|
* @param detailtable
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static boolean isEditField(String fieldName, int nodeid, String detailtable) {
|
|||
|
List<HashMap<String, String>> fieldList = FnaCommon.getWfFieldFormInfoByNodeId(nodeid);
|
|||
|
return FnaCommon.isEditField(fieldName, fieldList, detailtable);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 系统表单
|
|||
|
* 获得相应节点字段list中某个字段是否是可编辑状态
|
|||
|
*
|
|||
|
* @param fieldName 字段名称
|
|||
|
* @param fieldList 节点字段list
|
|||
|
* @param detailtable 明细表表名
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static boolean isEditField(String fieldName, List<HashMap<String, String>> fieldList, String detailtable) {
|
|||
|
int fieldListLen = fieldList.size();
|
|||
|
for (int i = 0; i < fieldListLen; i++) {
|
|||
|
HashMap<String, String> fieldHm = (HashMap<String, String>) fieldList.get(i);
|
|||
|
|
|||
|
String _isedit = Util.null2String(fieldHm.get("isedit"));
|
|||
|
String _fieldname = Util.null2String(fieldHm.get("fieldname"));
|
|||
|
String _detailtable = Util.null2String(fieldHm.get("detailtable"));
|
|||
|
|
|||
|
if (_fieldname.equalsIgnoreCase(fieldName) && _detailtable.equalsIgnoreCase(detailtable)) {
|
|||
|
if ("1".equalsIgnoreCase(_isedit)) {
|
|||
|
return true;
|
|||
|
}
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 系统表单
|
|||
|
* 获得对应流程节点,所有表单字段查看编辑状态:
|
|||
|
* fieldid;isview;isedit;ismandatory;orderid;dsporder;fieldname;detailtable;
|
|||
|
*
|
|||
|
* @param nodeid 节点id
|
|||
|
* @return List<HashMap < String, String>> 节点字段list
|
|||
|
*/
|
|||
|
public static List<HashMap<String, String>> getWfFieldFormInfoByNodeId(int nodeid) {
|
|||
|
RecordSet rs = new RecordSet();
|
|||
|
RecordSet rs1 = new RecordSet();
|
|||
|
|
|||
|
List<HashMap<String, String>> fieldList = new ArrayList<HashMap<String, String>>();
|
|||
|
|
|||
|
rs.executeProc("workflow_FieldForm_Select", nodeid + "");
|
|||
|
while (rs.next()) {
|
|||
|
String fieldid = Util.null2String(rs.getString("fieldid")).trim();
|
|||
|
String isview = Util.null2String(rs.getString("isview")).trim();
|
|||
|
String isedit = Util.null2String(rs.getString("isedit")).trim();
|
|||
|
String ismandatory = Util.null2String(rs.getString("ismandatory")).trim();
|
|||
|
String orderid = Util.null2String(rs.getString("orderid")).trim();
|
|||
|
String dsporder = Util.null2String(rs.getString("dsporder")).trim();
|
|||
|
|
|||
|
String fieldname = "";
|
|||
|
String detailtable = "";
|
|||
|
String sql1 = "SELECT fieldname, detailtable FROM workflow_billfield where id = " + fieldid;
|
|||
|
rs1.executeSql(sql1);
|
|||
|
if (rs1.next()) {
|
|||
|
fieldname = Util.null2String(rs1.getString("fieldname")).trim();
|
|||
|
detailtable = Util.null2String(rs1.getString("detailtable")).trim();
|
|||
|
}
|
|||
|
|
|||
|
HashMap<String, String> fieldHm = new HashMap<String, String>();
|
|||
|
|
|||
|
fieldHm.put("fieldid", fieldid);
|
|||
|
fieldHm.put("isview", isview);
|
|||
|
fieldHm.put("isedit", isedit);
|
|||
|
fieldHm.put("ismandatory", ismandatory);
|
|||
|
fieldHm.put("orderid", orderid);
|
|||
|
fieldHm.put("dsporder", dsporder);
|
|||
|
fieldHm.put("fieldname", fieldname);
|
|||
|
fieldHm.put("detailtable", detailtable);
|
|||
|
|
|||
|
fieldList.add(fieldHm);
|
|||
|
}
|
|||
|
|
|||
|
return fieldList;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 保存系统日志
|
|||
|
* 关于系统日志属性改造的说明
|
|||
|
*
|
|||
|
* @param relatedId 处理记录id
|
|||
|
* @param relatedName 处理记录名称
|
|||
|
* @param operateType SptmForCowork.getTypeName
|
|||
|
* @param operateDesc 操作的类型
|
|||
|
* @param operateItem
|
|||
|
* @param operateUserid 操作用户id
|
|||
|
* @param clientAddress 客户端ip地址
|
|||
|
* @param operatesmalltype 系统维护类型(默认值):SysMaintenanceLog.OPERATE_0;系统操作类型: SysMaintenanceLog.OPERATE_1;
|
|||
|
*/
|
|||
|
public void saveSysLogInfo(int relatedId, String relatedName,
|
|||
|
String operateType, String operateDesc, String operateItem,
|
|||
|
int operateUserid, String clientAddress, int operatesmalltype) {
|
|||
|
try {
|
|||
|
SysMaintenanceLog log = new SysMaintenanceLog();
|
|||
|
log.resetParameter();
|
|||
|
log.setRelatedId(relatedId);
|
|||
|
log.setRelatedName(relatedName);
|
|||
|
log.setOperateType(operateType);
|
|||
|
log.setOperateDesc(operateDesc);
|
|||
|
log.setOperateItem(operateItem);
|
|||
|
log.setOperateUserid(operateUserid);
|
|||
|
log.setClientAddress(clientAddress);
|
|||
|
log.setOperatesmalltype(operatesmalltype);
|
|||
|
log.setSysLogInfo();
|
|||
|
} catch (Exception e) {
|
|||
|
new BaseBean().writeLog(e);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 流程存为新版时:处理财务模块相关多版本支持代码
|
|||
|
*
|
|||
|
* @param oldWfId 原流程(版本)
|
|||
|
* @param newWfId 新流程(版本)
|
|||
|
*/
|
|||
|
public static void fnaSaveAsVersion(int oldWfId, int newWfId) throws Exception {
|
|||
|
fnaSaveAsVersion(oldWfId, newWfId, "", null);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 流程存为新版时:处理财务模块相关多版本支持代码
|
|||
|
*
|
|||
|
* @param oldWfId 原流程(版本)
|
|||
|
* @param newWfId 新流程(版本)
|
|||
|
*/
|
|||
|
public static void fnaSaveAsVersion(int oldWfId, int newWfId, String ip, User user) throws Exception {
|
|||
|
if (oldWfId <= 0 || newWfId <= 0) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
RecordSet rs1 = new RecordSet();
|
|||
|
RecordSet rs2 = new RecordSet();
|
|||
|
|
|||
|
WorkflowVersion wfVer = new WorkflowVersion();
|
|||
|
|
|||
|
String sql1 = "";
|
|||
|
|
|||
|
if (true) {
|
|||
|
sql1 = "select * from wf_fna_initWfInfo where workflowId = " + oldWfId;
|
|||
|
rs1.executeSql(sql1);
|
|||
|
if (rs1.next()) {
|
|||
|
int _formid = rs1.getInt("formId");
|
|||
|
int _fnaWfType1 = rs1.getInt("fnaWfType1");
|
|||
|
int _fnaWfType2 = rs1.getInt("fnaWfType2");
|
|||
|
FnaWfInitE8.save_wf_fna_initWfInfo(newWfId, _formid, _fnaWfType1, _fnaWfType2);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (true) {//处理:路径设置》高级设置》浏览数据定义:
|
|||
|
sql1 = "select count(*) cnt from FnaFeetypeWfbrowdef where workflowid = " + newWfId;
|
|||
|
rs1.executeSql(sql1);
|
|||
|
if (!rs1.next() || rs1.getInt("cnt") <= 0) {
|
|||
|
sql1 = "select * from FnaFeetypeWfbrowdef where workflowid = " + oldWfId;
|
|||
|
rs1.executeSql(sql1);
|
|||
|
while (rs1.next()) {
|
|||
|
int oldMainid = (rs1.getInt("id"));
|
|||
|
int fieldid = (rs1.getInt("fieldid"));
|
|||
|
int viewtype = (rs1.getInt("viewtype"));
|
|||
|
int fieldtype = (rs1.getInt("fieldtype"));
|
|||
|
String title = (rs1.getString("title"));
|
|||
|
|
|||
|
String sql2 = "";
|
|||
|
sql2 = "insert into FnaFeetypeWfbrowdef(workflowid,fieldId,viewType,fieldType,title)\n" +
|
|||
|
" values " +
|
|||
|
" (" + newWfId + "," + fieldid + "," + viewtype + "," + fieldtype + ",'" + StringEscapeUtils.escapeSql(title) + "')";
|
|||
|
rs2.executeSql(sql2);
|
|||
|
|
|||
|
sql2 = "select max(id) maxid from FnaFeetypeWfbrowdef where fieldId = " + fieldid + " and workflowid = " + newWfId;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
if (rs2.next()) {
|
|||
|
int newMainid = rs2.getInt("maxid");
|
|||
|
|
|||
|
sql2 = "insert into Fnafeetypewfbrowdef_Dt1 (mainid,refid)" +
|
|||
|
" select " + newMainid + ",refid from Fnafeetypewfbrowdef_Dt1 b where b.mainid =" + oldMainid;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
sql1 = "select count(*) cnt from fnafeewfinfo where workflowid = " + oldWfId;
|
|||
|
rs1.executeSql(sql1);
|
|||
|
if (rs1.next() && rs1.getInt("cnt") > 0) {
|
|||
|
} else {
|
|||
|
sql1 = "select a.activeVersionID from workflow_base a where id = " + oldWfId;
|
|||
|
rs1.executeSql(sql1);
|
|||
|
if (rs1.next()) {
|
|||
|
int activeVersionID = rs1.getInt("activeVersionID");
|
|||
|
if (activeVersionID > 0) {
|
|||
|
sql1 = "select a.id, a.workflowname, a.version, a.activeVersionID from workflow_base a \n" +
|
|||
|
" where a.activeVersionID = " + activeVersionID + " \n" +
|
|||
|
" order by case when (a.version is null or a.version = '') then 1 else a.version end DESC";
|
|||
|
rs1.executeSql(sql1);
|
|||
|
while (rs1.next()) {
|
|||
|
int wf_id = rs1.getInt("id");
|
|||
|
String sql2 = "select count(*) cnt from fnafeewfinfo where workflowid = " + wf_id;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
if (rs2.next() && rs2.getInt("cnt") > 0) {
|
|||
|
oldWfId = wf_id;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (true) {//费用流程凭证集成配置
|
|||
|
RecordSet rs3 = new RecordSet();
|
|||
|
String dbtype = rs2.getDBType();
|
|||
|
if (dbtype.equals("oracle") && rs2.getOrgindbtype().equals("dm")) dbtype = "dm";
|
|||
|
String guid1SQlStr = FnaCommon.getPrimaryKeyGuid1SqlStr(dbtype);
|
|||
|
|
|||
|
sql1 = "select count(*) cnt from fnaVoucherXml where workflowid = " + newWfId;
|
|||
|
rs1.executeSql(sql1);
|
|||
|
if (!rs1.next() || rs1.getInt("cnt") <= 0) {
|
|||
|
sql1 = "select id, xmlname, xmlmemo, xmlversion, xmlencoding, " +//1
|
|||
|
" workflowid, typename, datasourceid, interfacesaddress, profession " +//2
|
|||
|
" from fnavoucherxml " +
|
|||
|
" where workflowid = " + oldWfId;
|
|||
|
rs1.executeSql(sql1);
|
|||
|
while (rs1.next()) {
|
|||
|
//1
|
|||
|
int oldFnaVoucherXmlId = rs1.getInt("id");
|
|||
|
String xmlname = Util.null2String(rs1.getString("xmlname")).trim();
|
|||
|
String xmlmemo = Util.null2String(rs1.getString("xmlmemo")).trim();
|
|||
|
String xmlversion = Util.null2String(rs1.getString("xmlversion")).trim();
|
|||
|
String xmlencoding = Util.null2String(rs1.getString("xmlencoding")).trim();
|
|||
|
//2
|
|||
|
// int workflowid = rs1.getInt("workflowid");
|
|||
|
String typename = Util.null2String(rs1.getString("typename")).trim();
|
|||
|
String datasourceid = Util.null2String(rs1.getString("datasourceid")).trim();
|
|||
|
String interfacesaddress = Util.null2String(rs1.getString("interfacesaddress")).trim();
|
|||
|
int profession = rs1.getInt("profession");
|
|||
|
|
|||
|
String sql2 = "";
|
|||
|
sql2 = "insert into fnavoucherxml\n" +
|
|||
|
" (xmlname, xmlmemo, xmlversion, xmlencoding, " +//1
|
|||
|
" workflowid, typename, datasourceid, interfacesaddress, profession)\n" +//2
|
|||
|
" values\n" +
|
|||
|
" ('" + StringEscapeUtils.escapeSql(xmlname) + "', '" + StringEscapeUtils.escapeSql(xmlmemo) + "', '" + StringEscapeUtils.escapeSql(xmlversion) + "', '" + StringEscapeUtils.escapeSql(xmlencoding) + "', " +//1
|
|||
|
" " + newWfId + ", '" + StringEscapeUtils.escapeSql(typename) + "', '" + StringEscapeUtils.escapeSql(datasourceid) + "', '" + StringEscapeUtils.escapeSql(interfacesaddress) + "', " + profession + ")";//2
|
|||
|
rs2.executeSql(sql2);
|
|||
|
|
|||
|
sql2 = "select max(id) maxid from fnavoucherxml where workflowid = " + newWfId;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
if (rs2.next()) {
|
|||
|
int newFnaVoucherXmlId = rs2.getInt("maxid");
|
|||
|
|
|||
|
if ("mysql".equalsIgnoreCase(dbtype)) {
|
|||
|
//TODO 经过排查客户问题,发现针对mysql数据库,函数 replace(uuid(),'-','') 会出现UUID重复的情况,导致SQL执行失败,报主键重复
|
|||
|
//修改为 批量插入
|
|||
|
List<String> paraList = new ArrayList<String>();
|
|||
|
sql2 = " select fieldname, fieldvaluetype1, fieldvaluetype2, " +//1
|
|||
|
" fielddbtbname, detailtable, fielddbname, fielddbtype, datasourceid, " +//2
|
|||
|
" fieldvalue "+//3
|
|||
|
" from fnafinancesetting " +
|
|||
|
" where fnaVoucherXmlId = "+oldFnaVoucherXmlId;
|
|||
|
while(rs3.next()){
|
|||
|
String fieldname = Util.null2String(rs3.getString("fieldname"));
|
|||
|
String fieldvaluetype1 = Util.null2String(rs3.getString("fieldvaluetype1"));
|
|||
|
String fieldvaluetype2 = Util.null2String(rs3.getString("fieldvaluetype2"));
|
|||
|
String fielddbtbname = Util.null2String(rs3.getString("fielddbtbname"));
|
|||
|
String detailtable = Util.null2String(rs3.getString("detailtable"));
|
|||
|
String fielddbname = Util.null2String(rs3.getString("fielddbname"));
|
|||
|
String fielddbtype = Util.null2String(rs3.getString("fielddbtype"));
|
|||
|
String datasourceids = Util.null2String(rs3.getString("datasourceid"));
|
|||
|
String fieldvalue = Util.null2String(rs3.getString("fieldvalue"));
|
|||
|
|
|||
|
String guid1 = FnaCommon.getPrimaryKeyGuid1();
|
|||
|
paraList.add("" +
|
|||
|
guid1 + Util.getSeparator() + newFnaVoucherXmlId + Util.getSeparator() + fieldname + Util.getSeparator() + fieldvaluetype1 + Util.getSeparator() + fieldvaluetype2 //1
|
|||
|
+ Util.getSeparator() + fielddbtbname + Util.getSeparator() + detailtable + Util.getSeparator() + fielddbname + Util.getSeparator() + fielddbtype + Util.getSeparator() + datasourceids //2
|
|||
|
+ Util.getSeparator() + fieldvalue //3
|
|||
|
);
|
|||
|
} //while end
|
|||
|
BatchRecordSet brs = new BatchRecordSet();
|
|||
|
brs.executeSqlBatch( "insert into fnafinancesetting \n" +
|
|||
|
" (guid1, fnavoucherxmlid, fieldname, fieldvaluetype1, fieldvaluetype2, " +//1
|
|||
|
" fielddbtbname, detailtable, fielddbname, fielddbtype, datasourceid, " +//2
|
|||
|
" fieldvalue)\n" + //3
|
|||
|
" values(?,?,?,?,?,?,?,?,?,?,?)", paraList);
|
|||
|
|
|||
|
}else{
|
|||
|
sql2 = "insert into fnafinancesetting\n" +
|
|||
|
" (guid1, fnavoucherxmlid, fieldname, fieldvaluetype1, fieldvaluetype2, " +//1
|
|||
|
" fielddbtbname, detailtable, fielddbname, fielddbtype, datasourceid, " +//2
|
|||
|
" fieldvalue)\n" + //3
|
|||
|
" select " + guid1SQlStr + ", " + newFnaVoucherXmlId + ", fieldname, fieldvaluetype1, fieldvaluetype2, " +//1
|
|||
|
" fielddbtbname, detailtable, fielddbname, fielddbtype, datasourceid, " +//2
|
|||
|
" fieldvalue " +//3
|
|||
|
" from fnafinancesetting " +
|
|||
|
" where fnaVoucherXmlId = " + oldFnaVoucherXmlId;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
sql2 = "insert into fnavoucherxmlcontent\n" +
|
|||
|
" (fnavoucherxmlid, contenttype, contentparentid, contentname, contentvaluetype, " +//1
|
|||
|
" contentmemo, orderid, isnullnotprint, contentvalue, parameter, " +//2
|
|||
|
" isnullnotprintnode, oldId)\n" + //3
|
|||
|
" select " + newFnaVoucherXmlId + ", contenttype, contentparentid, contentname, contentvaluetype, " +//1
|
|||
|
" contentmemo, orderid, isnullnotprint, contentvalue, parameter, " +//2
|
|||
|
" isnullnotprintnode, id " +//3
|
|||
|
" from fnavoucherxmlcontent " +
|
|||
|
" where fnavoucherxmlid = " + oldFnaVoucherXmlId;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
|
|||
|
List<String> newFnavoucherxmlcontentid_list = new ArrayList<String>();
|
|||
|
List<String> oldContentparentid_list = new ArrayList<String>();
|
|||
|
HashMap<String, String> fnavoucherxmlcontentid_hm = new HashMap<String, String>();
|
|||
|
sql2 = "select * from fnavoucherxmlcontent where fnavoucherxmlid = " + newFnaVoucherXmlId;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
while (rs2.next()) {
|
|||
|
int newFnavoucherxmlcontentid = Util.getIntValue(rs2.getString("id"), 0);
|
|||
|
int oldFnavoucherxmlcontentid = Util.getIntValue(rs2.getString("oldId"), 0);
|
|||
|
int oldContentparentid = Util.getIntValue(rs2.getString("contentparentid"), 0);
|
|||
|
|
|||
|
newFnavoucherxmlcontentid_list.add(newFnavoucherxmlcontentid + "");
|
|||
|
oldContentparentid_list.add(oldContentparentid + "");
|
|||
|
fnavoucherxmlcontentid_hm.put(oldFnavoucherxmlcontentid + "", newFnavoucherxmlcontentid + "");
|
|||
|
}
|
|||
|
int newFnavoucherxmlcontentid_listLen = newFnavoucherxmlcontentid_list.size();
|
|||
|
for (int i = 0; i < newFnavoucherxmlcontentid_listLen; i++) {
|
|||
|
int newFnavoucherxmlcontentid = Util.getIntValue(newFnavoucherxmlcontentid_list.get(i), 0);
|
|||
|
int oldContentparentid = Util.getIntValue(oldContentparentid_list.get(i), 0);
|
|||
|
|
|||
|
int newContentparentid = Util.getIntValue(fnavoucherxmlcontentid_hm.get(oldContentparentid + ""), 0);
|
|||
|
|
|||
|
String sql3 = "update fnavoucherxmlcontent " +
|
|||
|
" set contentparentid = " + newContentparentid + " " +
|
|||
|
" where id = " + newFnavoucherxmlcontentid;
|
|||
|
rs3.executeSql(sql3);
|
|||
|
}
|
|||
|
|
|||
|
sql2 = "insert into fnavoucherxmlcontentdset\n" +
|
|||
|
" (fnavoucherxmlid, fnavoucherxmlcontentid, dsetalias, inittiming, fnadatasetid, " +//1
|
|||
|
" dsetmemo, orderid, parameter)\n" + //2
|
|||
|
" select " + newFnaVoucherXmlId + ", fnavoucherxmlcontentid, dsetalias, inittiming, fnadatasetid, " +//1
|
|||
|
" dsetmemo, orderid, parameter " +//2
|
|||
|
" from fnavoucherxmlcontentdset " +
|
|||
|
" where fnavoucherxmlid = " + oldFnaVoucherXmlId;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
|
|||
|
sql2 = "select * from fnavoucherxmlcontentdset where fnavoucherxmlid = " + newFnaVoucherXmlId;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
while (rs2.next()) {
|
|||
|
int newFnavoucherxmlcontentdsetid = Util.getIntValue(rs2.getString("id"), 0);
|
|||
|
int oldFnavoucherxmlcontentid = Util.getIntValue(rs2.getString("fnavoucherxmlcontentid"), 0);
|
|||
|
|
|||
|
int newFnavoucherxmlcontentid = Util.getIntValue(fnavoucherxmlcontentid_hm.get(oldFnavoucherxmlcontentid + ""), 0);
|
|||
|
|
|||
|
String sql3 = "update fnavoucherxmlcontentdset " +
|
|||
|
" set contentparentid = " + newFnavoucherxmlcontentid + " " +
|
|||
|
" where id = " + newFnavoucherxmlcontentdsetid;
|
|||
|
rs3.executeSql(sql3);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (true) {//处理:费控流程定义
|
|||
|
// 10 fnaFeeWfInfo 费控流程定义表
|
|||
|
// 11 fnaFeeWfInfoField 费控流程字段对应关系定义表
|
|||
|
// 12 fnaFeeWfInfoLogic 费控流程提交校验定义表
|
|||
|
// Fnafeewfinfologicreverse
|
|||
|
// fnaFeeWfInfoLogicAdvanceR
|
|||
|
// fnafeewfinfonodectrl
|
|||
|
// fnaControlScheme_FeeWfInfo
|
|||
|
|
|||
|
RecordSet rs3 = new RecordSet();
|
|||
|
RecordSet rs4 = new RecordSet();
|
|||
|
|
|||
|
sql1 = "select count(*) cnt from fnafeewfinfo where workflowid = " + newWfId;
|
|||
|
rs1.executeSql(sql1);
|
|||
|
if (!rs1.next() || rs1.getInt("cnt") <= 0) {
|
|||
|
boolean need_removeCache_fnaFeeWfInfoComInfo = false;
|
|||
|
sql1 = "select * " +//3
|
|||
|
" from fnafeewfinfo " +
|
|||
|
" where workflowid = " + oldWfId;
|
|||
|
rs1.executeSql(sql1);
|
|||
|
while (rs1.next()) {
|
|||
|
need_removeCache_fnaFeeWfInfoComInfo = true;
|
|||
|
//1
|
|||
|
int oldMainid = rs1.getInt("id");
|
|||
|
// int workflowid = rs1.getInt("workflowid");
|
|||
|
int enable = rs1.getInt("enable");
|
|||
|
String lastmodifieddate = Util.null2String(rs1.getString("lastmodifieddate")).trim();
|
|||
|
String templatefile = Util.null2String(rs1.getString("templatefile")).trim();
|
|||
|
//2
|
|||
|
String templatefilemobile = Util.null2String(rs1.getString("templatefilemobile")).trim();
|
|||
|
String fnawftype = Util.null2String(rs1.getString("fnawftype")).trim();
|
|||
|
int fnawftypeborrow = rs1.getInt("fnawftypeborrow");
|
|||
|
int fnawftypecoll = rs1.getInt("fnawftypecoll");
|
|||
|
int fnawftypereverse = rs1.getInt("fnawftypereverse");
|
|||
|
//3
|
|||
|
int fnawftypereim = rs1.getInt("fnawftypereim");
|
|||
|
String overstandardtips = Util.null2String(rs1.getString("overstandardtips")).trim();
|
|||
|
int isallnodescontrol = rs1.getInt("isallnodescontrol");
|
|||
|
int fnaWfTypeReverseAdvance = Util.getIntValue(rs1.getString("fnaWfTypeReverseAdvance"), 0);
|
|||
|
int budgetCanBeNegative = Util.getIntValue(rs1.getString("budgetCanBeNegative"), 0);
|
|||
|
|
|||
|
//多明细 start
|
|||
|
int fnaWfTypeMultiReim = Util.getIntValue(rs1.getString("fnaWfTypeMultiReim"), 0);//启用多明细表报销
|
|||
|
//启用多明细表报销,开关开启:当前流程的任意明细表都 【 可以用于也仅可以用于 】 费用报销;不再支持"还款,预付款冲销"功能;
|
|||
|
if (fnaWfTypeMultiReim == 1) {
|
|||
|
fnawftypecoll = 0;//启用还款业务逻辑
|
|||
|
fnawftypereverse = 0;//启用冲销业务逻辑
|
|||
|
fnaWfTypeReverseAdvance = 0;//启用预申请业务逻辑
|
|||
|
sql1 = " insert into fnaFeeWfInfoMultiField(workflowId,dtlIdx,fieldName,fieldFnaType, fieldMemo) "
|
|||
|
+ " select " + newWfId + ",dtlIdx,fieldName,fieldFnaType, fieldMemo from fnaFeeWfInfoMultiField where workflowId = " + oldWfId;
|
|||
|
rs2.executeSql(sql1);
|
|||
|
}
|
|||
|
//多明细 end
|
|||
|
|
|||
|
//承担主体无预算自动向上查询 总开关; 0=默认=关闭; 1=开启
|
|||
|
int noBudgetQueryUp = Util.getIntValue(rs1.getString("noBudgetQueryUp"), 0);
|
|||
|
//承担主体无预算时自动向上查询 分部; 0=默认=关闭; 1=开启=逐级查询上级分部
|
|||
|
int noBudgetQueryUp1 = Util.getIntValue(rs1.getString("noBudgetQueryUp1"), 0);
|
|||
|
//承担主体无预算时自动向上查询 部门; 0=默认=关闭; 1=开启=逐级查询上级部门; 2=开启=逐级查询上级部门及分部
|
|||
|
int noBudgetQueryUp2 = Util.getIntValue(rs1.getString("noBudgetQueryUp2"), 0);
|
|||
|
//承担主体无预算时自动向上查询 人员; 0=默认=关闭; 1=开启=逐级查询上级部门; 2=开启=逐级查询上级部门及分部
|
|||
|
int noBudgetQueryUp3 = Util.getIntValue(rs1.getString("noBudgetQueryUp3"), 0);
|
|||
|
|
|||
|
String sql2 = "";
|
|||
|
sql2 = "insert into fnafeewfinfo\n" +
|
|||
|
" (workflowid, enable, lastmodifieddate, templatefile, " +//1
|
|||
|
" templatefilemobile, fnawftype, fnawftypeborrow, fnawftypecoll, fnawftypereverse, " +//2
|
|||
|
" fnawftypereim, overstandardtips, isallnodescontrol, fnaWfTypeReverseAdvance, "
|
|||
|
+ " budgetCanBeNegative, "
|
|||
|
+ " noBudgetQueryUp, "
|
|||
|
+ " noBudgetQueryUp1, "
|
|||
|
+ " noBudgetQueryUp2, "
|
|||
|
+ " noBudgetQueryUp3, "
|
|||
|
+ " fnaWfTypeMultiReim)\n" + //3
|
|||
|
" values\n" +
|
|||
|
" (" + newWfId + ", " + enable + ", '" + StringEscapeUtils.escapeSql(lastmodifieddate) + "', '" + StringEscapeUtils.escapeSql(templatefile) + "', " +//1
|
|||
|
" '" + StringEscapeUtils.escapeSql(templatefilemobile) + "', '" + StringEscapeUtils.escapeSql(fnawftype) + "', " + fnawftypeborrow + ", " + fnawftypecoll + ", " + fnawftypereverse + ", " +//2
|
|||
|
" " + fnawftypereim + ", '" + StringEscapeUtils.escapeSql(overstandardtips) + "', " + isallnodescontrol + ", " + fnaWfTypeReverseAdvance + ", "
|
|||
|
+ budgetCanBeNegative + ", "
|
|||
|
+ noBudgetQueryUp + ", "
|
|||
|
+ noBudgetQueryUp1 + ", "
|
|||
|
+ noBudgetQueryUp2 + ", "
|
|||
|
+ noBudgetQueryUp3 + ", "
|
|||
|
+ fnaWfTypeMultiReim + ")";//3
|
|||
|
rs2.executeSql(sql2);
|
|||
|
|
|||
|
sql2 = "select max(id) maxid from fnafeewfinfo where workflowid = " + newWfId;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
if (rs2.next()) {
|
|||
|
int newMainid = rs2.getInt("maxid");
|
|||
|
|
|||
|
String sql3 = "select fnaControlSchemeId from fnaControlScheme_FeeWfInfo where fnaFeeWfInfoId = " + oldMainid;
|
|||
|
rs3.executeSql(sql3);
|
|||
|
while (rs3.next()) {
|
|||
|
int fnaControlSchemeId = rs3.getInt("fnaControlSchemeId");
|
|||
|
|
|||
|
String sql4 = "insert into fnaControlScheme_FeeWfInfo (fnaControlSchemeId, fnaFeeWfInfoId) values (" + fnaControlSchemeId + ", " + newMainid + ")";
|
|||
|
rs4.executeSql(sql4);
|
|||
|
}
|
|||
|
|
|||
|
sql2 = "insert into fnafeewfinfofield\n" +
|
|||
|
" (mainid, workflowid, formid, fieldtype, fieldid, " +//1
|
|||
|
" isdtl, showalltype, dtlnumber, fieldvalue, fieldvaltype, " +//2
|
|||
|
" fcsguid1, fieldvaluewfsys, tabindex, " +//3
|
|||
|
" isWfFieldLinkage, controlflowSubmission, automaticTake, controlBorrowingWf) \n" + //4
|
|||
|
" select " + newMainid + ", " + newWfId + ", formid, fieldtype, fieldid, " +//1
|
|||
|
" isdtl, showalltype, dtlnumber, fieldvalue, fieldvaltype, " +//2
|
|||
|
" fcsguid1, fieldvaluewfsys, tabindex, " +//3
|
|||
|
" isWfFieldLinkage, controlflowSubmission, automaticTake, controlBorrowingWf " +//4
|
|||
|
" from fnafeewfinfofield " +
|
|||
|
" where workflowid = " + oldWfId + " " +
|
|||
|
" and mainid = " + oldMainid;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
|
|||
|
sql2 = "insert into fnafeewfinfologic\n" +
|
|||
|
" (mainid, kmidscondition, kmids, orgtype, orgidscondition, " +//1
|
|||
|
" orgids, intensity, promptsc, prompttc, prompten, " +//2
|
|||
|
" totalamtverification, isapplicationbudgetwf)\n" + //3
|
|||
|
" select " + newMainid + ", kmidscondition, kmids, orgtype, orgidscondition, " +//1
|
|||
|
" orgids, intensity, promptsc, prompttc, prompten, " +//2
|
|||
|
" totalamtverification, isapplicationbudgetwf " +//3
|
|||
|
" from fnafeewfinfologic " +
|
|||
|
" where mainid = " + oldMainid;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
|
|||
|
sql2 = "insert into fnafeewfinfologicreverse\n" +
|
|||
|
" (mainid, rule1, rule1intensity, rule2, rule2intensity, " +//1
|
|||
|
" rule3, rule3intensity, rule4, rule4intensity, rule5, " +//2
|
|||
|
" rule5intensity, promptsc, prompttc, prompten, promptsc2, " +//3
|
|||
|
" prompttc2, prompten2, promptsc3, prompttc3, prompten3, " +//4
|
|||
|
" promptsc4, prompttc4, prompten4, promptsc5, prompttc5, " +//5
|
|||
|
" prompten5)\n" + //6
|
|||
|
" select " + newMainid + ", rule1, rule1intensity, rule2, rule2intensity, " +//1
|
|||
|
" rule3, rule3intensity, rule4, rule4intensity, rule5, " +//2
|
|||
|
" rule5intensity, promptsc, prompttc, prompten, promptsc2, " +//3
|
|||
|
" prompttc2, prompten2, promptsc3, prompttc3, prompten3, " +//4
|
|||
|
" promptsc4, prompttc4, prompten4, promptsc5, prompttc5, " +//5
|
|||
|
" prompten5 " +//6
|
|||
|
" from fnafeewfinfologicreverse " +
|
|||
|
" where mainid = " + oldMainid;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
|
|||
|
sql2 = "insert into fnaFeeWfInfoLogicAdvanceR\n" +
|
|||
|
" (mainid, rule1, rule1intensity, rule2, rule2intensity, " +//1
|
|||
|
" rule3, rule3intensity, rule4, rule4intensity, rule5, " +//2
|
|||
|
" rule5intensity, promptsc, prompttc, prompten, promptsc2, " +//3
|
|||
|
" prompttc2, prompten2, promptsc3, prompttc3, prompten3, " +//4
|
|||
|
" promptsc4, prompttc4, prompten4, promptsc5, prompttc5, " +//5
|
|||
|
" prompten5)\n" + //6
|
|||
|
" select " + newMainid + ", rule1, rule1intensity, rule2, rule2intensity, " +//1
|
|||
|
" rule3, rule3intensity, rule4, rule4intensity, rule5, " +//2
|
|||
|
" rule5intensity, promptsc, prompttc, prompten, promptsc2, " +//3
|
|||
|
" prompttc2, prompten2, promptsc3, prompttc3, prompten3, " +//4
|
|||
|
" promptsc4, prompttc4, prompten4, promptsc5, prompttc5, " +//5
|
|||
|
" prompten5 " +//6
|
|||
|
" from fnaFeeWfInfoLogicAdvanceR " +
|
|||
|
" where mainid = " + oldMainid;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
|
|||
|
|
|||
|
rs2.executeUpdate("delete from fnaFeeWfInfoMultiField where workflowId=?", newWfId);
|
|||
|
sql2 = "insert into fnaFeeWfInfoMultiField\n" +
|
|||
|
" (workflowId, dtlIdx, fieldName, fieldFnaType, fieldMemo)\n" + //1
|
|||
|
" select " + newWfId + ", dtlIdx, fieldName, fieldFnaType, fieldMemo " +//1
|
|||
|
" from fnaFeeWfInfoMultiField " +
|
|||
|
" where workflowId = " + oldWfId;
|
|||
|
rs2.executeUpdate(sql2);
|
|||
|
|
|||
|
sql2 = "select nodeid, checkway " +
|
|||
|
" from fnafeewfinfonodectrl " +
|
|||
|
" where mainid = " + oldMainid;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
while (rs2.next()) {
|
|||
|
int nodeid_old = Util.getIntValue(rs2.getString("nodeid"), 0);
|
|||
|
String checkway = Util.null2String(rs2.getString("checkway")).trim();
|
|||
|
|
|||
|
int nodeid_new = wfVer.getNodeidByWfidAndOldnodeid(newWfId, nodeid_old);
|
|||
|
if (nodeid_new > 0) {
|
|||
|
sql3 = "insert into fnafeewfinfonodectrl\n" +
|
|||
|
" (mainid, nodeid, checkway)\n" +
|
|||
|
" values " +
|
|||
|
" (" + newMainid + ", " + nodeid_new + ", '" + StringEscapeUtils.escapeSql(checkway) + "') ";
|
|||
|
rs3.executeSql(sql3);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//移除指定workflowId缓存中的-自定义费控流程流程的字段对应关系Map对象
|
|||
|
FnaWfSetCache.removeFnaWfFieldSetMap(newWfId);
|
|||
|
//通过读取配置信息更新缓存
|
|||
|
FnaCommon.getFnaWfFieldInfo4Expense(newWfId, new HashMap<String, String>());
|
|||
|
}
|
|||
|
}
|
|||
|
if (need_removeCache_fnaFeeWfInfoComInfo) {
|
|||
|
new FnaFeeWfInfoComInfo().removeCache();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//发票去重设置生成新版本
|
|||
|
if (true) {
|
|||
|
//1.fnaInvoiceWfInfo
|
|||
|
//2.fnaInvoiceFeeWfInfoLogic
|
|||
|
//3.fnaInvoiceWfInfoField
|
|||
|
|
|||
|
sql1 = "select count(*) cnt from fnaInvoiceWfInfo where workflowid = " + newWfId;
|
|||
|
rs1.executeSql(sql1);
|
|||
|
if (!rs1.next() || rs1.getInt("cnt") <= 0) {
|
|||
|
sql1 = "select * " +//3
|
|||
|
" from fnaInvoiceWfInfo " +
|
|||
|
" where workflowid = " + oldWfId;
|
|||
|
rs1.executeSql(sql1);
|
|||
|
while (rs1.next()) {
|
|||
|
int oldMainid = rs1.getInt("id");
|
|||
|
int enable = rs1.getInt("enable");
|
|||
|
String lastmodifieddate = Util.null2String(rs1.getString("lastmodifieddate")).trim();
|
|||
|
//fnaInvoiceWfInfo
|
|||
|
String sql2 = "insert into fnaInvoiceWfInfo (workflowid,enable,lastmodifieddate) values (" + newWfId + "," + enable + ",'" + StringEscapeUtils.escapeSql(lastmodifieddate) + "')";
|
|||
|
rs2.executeSql(sql2);
|
|||
|
|
|||
|
sql2 = "select max(id) maxid from fnaInvoiceWfInfo where workflowid = " + newWfId;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
if (rs2.next()) {
|
|||
|
int newMainid = rs2.getInt("maxid");
|
|||
|
//fnaInvoiceWfInfoField
|
|||
|
sql2 = "insert into fnaInvoiceWfInfoField\n" +
|
|||
|
" (mainid, workflowid, formid, fieldid, " +//1
|
|||
|
" fieldname, tabindex, " +//2
|
|||
|
" dtlnumber, isdtl) \n" + //3
|
|||
|
" select " + newMainid + ", " + newWfId + ", formid, fieldid, " +//1
|
|||
|
" fieldname, tabindex, " +//2
|
|||
|
" dtlnumber, isdtl " +//3
|
|||
|
" from fnaInvoiceWfInfoField " +
|
|||
|
" where workflowid = " + oldWfId + " " +
|
|||
|
" and mainid = " + oldMainid;
|
|||
|
rs2.executeSql(sql2);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//微报账记一笔 可发起的报销流程
|
|||
|
if (true) {
|
|||
|
|
|||
|
if (true) {//1可发起的报销流程赋值
|
|||
|
String workflowIds = "";
|
|||
|
rs1.executeQuery("select workflowIds from fnaInvoiceEnterWay");
|
|||
|
if (rs1.next()) {
|
|||
|
workflowIds = Util.null2String(rs1.getString("workflowIds"));
|
|||
|
}
|
|||
|
String[] workflowIdsSplit = workflowIds.split(",");
|
|||
|
StringBuffer workflowIdBuffer = new StringBuffer();
|
|||
|
for (int i = 0; i < workflowIdsSplit.length; i++) {
|
|||
|
String workFlowId = workflowIdsSplit[i];
|
|||
|
if (oldWfId == Util.getIntValue(workFlowId, 0)) {
|
|||
|
workFlowId = workFlowId + "," + newWfId;
|
|||
|
}
|
|||
|
if (workflowIdBuffer.length() != 0) {
|
|||
|
workflowIdBuffer.append(",");
|
|||
|
}
|
|||
|
workflowIdBuffer.append(workFlowId);
|
|||
|
}
|
|||
|
if (!workflowIds.equals(workflowIdBuffer.toString())) {
|
|||
|
rs1.executeUpdate("update fnaInvoiceEnterWay set workflowIds=?", workflowIdBuffer.toString());
|
|||
|
}
|
|||
|
}
|
|||
|
if (true) {//2每个记一笔费用类型中
|
|||
|
rs1.executeQuery("select id,workflowIds from fnaTakeOneNote");
|
|||
|
while (rs1.next()) {
|
|||
|
String id = Util.null2String(rs1.getString("id"));
|
|||
|
String workflowIds = Util.null2String(rs1.getString("workflowIds"));
|
|||
|
String[] workflowIdsSplit = workflowIds.split(",");
|
|||
|
StringBuilder workflowIdBuffer = new StringBuilder();
|
|||
|
for (String s : workflowIdsSplit) {
|
|||
|
String workFlowId = s;
|
|||
|
if (oldWfId == Util.getIntValue(workFlowId, 0)) {
|
|||
|
workFlowId = workFlowId + "," + newWfId;
|
|||
|
}
|
|||
|
if (workflowIdBuffer.length() != 0) {
|
|||
|
workflowIdBuffer.append(",");
|
|||
|
}
|
|||
|
workflowIdBuffer.append(workFlowId);
|
|||
|
}
|
|||
|
if (!workflowIds.equals(workflowIdBuffer.toString())) {
|
|||
|
rs2.executeUpdate("update fnaTakeOneNote set workflowIds=? where id=?", workflowIdBuffer.toString(), id);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if (true) {//3每个记一笔费用类型中的字段对应
|
|||
|
String sql = "insert into fnaTakeNoteWfField(mainId,workflowId,formId,fieldId,fieldDbName,dtlNumber,isDtl)" +
|
|||
|
" select mainId," + newWfId + ",formId,fieldId,fieldDbName,dtlNumber,isDtl from fnaTakeNoteWfField where workflowId=?";
|
|||
|
rs1.executeUpdate(sql, oldWfId);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
{
|
|||
|
RecordSet mainIdRs = new RecordSet();
|
|||
|
RecordSet mainTableRs = new RecordSet();
|
|||
|
RecordSet dtlTableRs = new RecordSet();
|
|||
|
RecordSet accountIdRs = new RecordSet();
|
|||
|
String newSubjectMainId = "";
|
|||
|
String newPeriodMainId = "";
|
|||
|
String newBearerMainId = "";
|
|||
|
|
|||
|
String oldSubjectMainId = "";
|
|||
|
String oldBearerMainId = "";
|
|||
|
String oldPeriodMainId = "";
|
|||
|
List<String> subjectAccountList = new ArrayList<>();
|
|||
|
List<String> periodAccountList = new ArrayList<>();
|
|||
|
List<String> bearerAccountList = new ArrayList<>();
|
|||
|
// 开始复制主表
|
|||
|
String subjectConfigInsertSql =
|
|||
|
" insert into FnaMultiAccountSubject (workflowId,fieldId,accountId,onlyEnd,isFilter,choice) " +
|
|||
|
" select " + newWfId + " ,fieldId,accountId,onlyEnd,isFilter,choice from FnaMultiAccountSubject where workflowId = ? ";
|
|||
|
|
|||
|
String periodConfigInsertSql =
|
|||
|
" insert into FnaMultiPeriodFilter (workflowId,fieldId,accountId,onlyEnd,isFilter,choice) " +
|
|||
|
" select " + newWfId + " ,fieldId,accountId,onlyEnd,isFilter,choice from FnaMultiPeriodFilter where workflowId = ? ";
|
|||
|
String bearerConfigInsertSql =
|
|||
|
" insert into FnaMultiBearerFilter (workflowId,fieldId,accountId,onlyEnd,isFilter,choice) " +
|
|||
|
" select " + newWfId + " ,fieldId,accountId,onlyEnd,isFilter,choice from FnaMultiBearerFilter where workflowId = ? ";
|
|||
|
mainTableRs.executeUpdate(subjectConfigInsertSql, oldWfId);
|
|||
|
mainTableRs.executeUpdate(periodConfigInsertSql, oldWfId);
|
|||
|
mainTableRs.executeUpdate(bearerConfigInsertSql, oldWfId);
|
|||
|
|
|||
|
// 根据旧的 wfID 找到对应的 accountId [账套可能是多个]
|
|||
|
String subjectAccountSql = " select accountId , fieldId from FnaMultiAccountSubject where workflowId = ? ";
|
|||
|
String periodAccountSql = " select accountId , fieldId from FnaMultiPeriodFilter where workflowId = ? ";
|
|||
|
String bearerAccountSql = " select accountId , fieldId from FnaMultiBearerFilter where workflowId = ? ";
|
|||
|
accountIdRs.executeQuery(subjectAccountSql, oldWfId);
|
|||
|
while (accountIdRs.next()) {
|
|||
|
subjectAccountList.add(Util.null2String(accountIdRs.getString("accountId")) + "_" +Util.null2String(accountIdRs.getString("fieldId")));
|
|||
|
}
|
|||
|
accountIdRs.executeQuery(periodAccountSql, oldWfId);
|
|||
|
while (accountIdRs.next()) {
|
|||
|
periodAccountList.add(Util.null2String(accountIdRs.getString("accountId")) + "_" +Util.null2String(accountIdRs.getString("fieldId")));
|
|||
|
|
|||
|
}
|
|||
|
accountIdRs.executeQuery(bearerAccountSql, oldWfId);
|
|||
|
while (accountIdRs.next()) {
|
|||
|
bearerAccountList.add(Util.null2String(accountIdRs.getString("accountId")) + "_" +Util.null2String(accountIdRs.getString("fieldId")));
|
|||
|
}
|
|||
|
|
|||
|
// 根据旧的的 wfID 和 accountId / fieldId 找到旧的 MainId
|
|||
|
// 根据旧的 mainId 找到所对应的数据
|
|||
|
// 把数据复制到新的 mainId
|
|||
|
// 更新 FnaMultiAccountSubjectDetail 明细表
|
|||
|
String subjectConfigSelectSql = " select id from FnaMultiAccountSubject where workflowId = ? and accountId = ? and fieldId = ?";
|
|||
|
for (String subjectAccountArray : subjectAccountList) {
|
|||
|
String[] split = subjectAccountArray.split("_");
|
|||
|
mainIdRs.executeQuery(subjectConfigSelectSql, newWfId, split[0],split[1]);
|
|||
|
if (mainIdRs.next()) {
|
|||
|
newSubjectMainId = Util.null2String(mainIdRs.getString("id"));
|
|||
|
}
|
|||
|
mainIdRs.executeQuery(subjectConfigSelectSql, oldWfId, split[0],split[1]);
|
|||
|
if (mainIdRs.next()) {
|
|||
|
oldSubjectMainId = Util.null2String(mainIdRs.getString("id"));
|
|||
|
}
|
|||
|
String subjectConfigDtlInsertSql =
|
|||
|
" insert into FnaMultiAccountSubjectDetail ( mainId , subjectId , subjectCode ) " +
|
|||
|
" select " + newSubjectMainId + " , subjectId , subjectCode from FnaMultiAccountSubjectDetail where mainId = ? ";
|
|||
|
dtlTableRs.executeUpdate(subjectConfigDtlInsertSql, oldSubjectMainId );
|
|||
|
}
|
|||
|
|
|||
|
// 更新 FnaMultiPeriodFilterDtl 明细表
|
|||
|
String periodConfigSelectSql = " select id from FnaMultiPeriodFilter where workflowId = ? and accountId = ? and fieldId = ?";
|
|||
|
for (String periodAccountArray : periodAccountList) {
|
|||
|
String[] split = periodAccountArray.split("_");
|
|||
|
mainIdRs.executeQuery(periodConfigSelectSql, newWfId, split[0],split[1]);
|
|||
|
if (mainIdRs.next()) {
|
|||
|
newPeriodMainId = Util.null2String(mainIdRs.getString("id"));
|
|||
|
}
|
|||
|
|
|||
|
mainIdRs.executeQuery(periodConfigSelectSql, oldWfId, split[0],split[1]);
|
|||
|
if (mainIdRs.next()) {
|
|||
|
oldPeriodMainId = Util.null2String(mainIdRs.getString("id"));
|
|||
|
}
|
|||
|
String periodConfigDtlInsertSql =
|
|||
|
" insert into FnaMultiPeriodFilterDtl ( mainId , periodId , periodCode ) " +
|
|||
|
" select " + newPeriodMainId + " , periodId , periodCode from FnaMultiPeriodFilterDtl where mainId = ? ";
|
|||
|
dtlTableRs.executeUpdate(periodConfigDtlInsertSql, oldPeriodMainId);
|
|||
|
}
|
|||
|
|
|||
|
// 更新 FnaMultiBearerFilterDetail 明细表
|
|||
|
String bearerConfigSelectSql = " select id from FnaMultiBearerFilter where workflowId = ? and accountId = ? and fieldId = ? ";
|
|||
|
for (String bearerAccountArray : bearerAccountList) {
|
|||
|
String[] split = bearerAccountArray.split("_");
|
|||
|
mainIdRs.executeQuery(bearerConfigSelectSql, newWfId, split[0],split[1]);
|
|||
|
if (mainIdRs.next()) {
|
|||
|
newBearerMainId = Util.null2String(mainIdRs.getString("id"));
|
|||
|
}
|
|||
|
|
|||
|
mainIdRs.executeQuery(bearerConfigSelectSql, oldWfId, split[0],split[1]);
|
|||
|
if (mainIdRs.next()) {
|
|||
|
oldBearerMainId = Util.null2String(mainIdRs.getString("id"));
|
|||
|
}
|
|||
|
|
|||
|
String bearerConfigDtlInsertSql =
|
|||
|
" insert into FnaMultiBearerFilterDetail ( mainId , bearerIds , bearerCode ) " +
|
|||
|
" select " + newBearerMainId + " , bearerIds , bearerCode from FnaMultiBearerFilterDetail where mainId = ? ";
|
|||
|
dtlTableRs.executeUpdate(bearerConfigDtlInsertSql, oldBearerMainId);
|
|||
|
}
|
|||
|
}
|
|||
|
FnaWorkflowSetUtils.createNewWorkflowVersion(oldWfId, newWfId, ip, user);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* 左侧填充字符串
|
|||
|
*/
|
|||
|
public final static int LEFT = 0;
|
|||
|
|
|||
|
/**
|
|||
|
* 右侧填充字符串
|
|||
|
*/
|
|||
|
public final static int RIGHT = 1;
|
|||
|
|
|||
|
/**
|
|||
|
* 填充字符串
|
|||
|
*
|
|||
|
* @param srcStr
|
|||
|
* @param fillChar
|
|||
|
* @param length
|
|||
|
* @param leftOrRight 填充左侧:DooGlobalBase.LEFT;填充右侧:DooGlobalBase.RIGHT
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static String fillStr(final String srcStr, final char fillChar, final int length, final int leftOrRight) {
|
|||
|
final StringBuilder formatStr = new StringBuilder("");
|
|||
|
for (int i = srcStr.getBytes().length; i < length; i++) {
|
|||
|
formatStr.append(fillChar);
|
|||
|
}
|
|||
|
if (leftOrRight == FnaCommon.LEFT) {
|
|||
|
return formatStr.toString() + srcStr;
|
|||
|
} else if (leftOrRight == FnaCommon.RIGHT) {
|
|||
|
return srcStr + formatStr.toString();
|
|||
|
}
|
|||
|
return "";
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 将dataArray中的数据,按900个一组(每一项之间使用英文半角逗号分隔)set到return的List中去
|
|||
|
*
|
|||
|
* @param dataArray
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static List<String> initData1(String[] dataArray) {
|
|||
|
List<String> dataList = Arrays.asList(dataArray);
|
|||
|
return FnaCommon.initData1(dataList);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 将dataList中的数据,按900个一组(每一项之间使用英文半角逗号分隔)set到return的List中去
|
|||
|
*
|
|||
|
* @param dataList
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static List<String> initData1(List<String> dataList) {
|
|||
|
List<String> distinct_list = new ArrayList<String>();
|
|||
|
ArrayList<String> list = new ArrayList<String>();
|
|||
|
int dataListLen = dataList.size();
|
|||
|
int sqlCond_Index = 0;
|
|||
|
while (sqlCond_Index < dataListLen) {
|
|||
|
StringBuffer sqlCond_ids = new StringBuffer("");
|
|||
|
for (int i = 0; i < 900; i++) {
|
|||
|
if (sqlCond_Index == dataListLen) {
|
|||
|
break;
|
|||
|
}
|
|||
|
String key1 = dataList.get(sqlCond_Index);
|
|||
|
if (!"".equals(key1) && !distinct_list.contains(key1)) {
|
|||
|
distinct_list.add(key1);
|
|||
|
if (sqlCond_ids.length() > 0) {
|
|||
|
sqlCond_ids.append(",");
|
|||
|
}
|
|||
|
sqlCond_ids.append(key1);
|
|||
|
}
|
|||
|
sqlCond_Index++;
|
|||
|
}
|
|||
|
if (sqlCond_ids.length() > 0) {
|
|||
|
list.add(sqlCond_ids.toString());
|
|||
|
}
|
|||
|
}
|
|||
|
return list;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取传入人员id(userid)的相关信息(传入人员、所属部门、所属分部,关联的第一个成本中心的id和名称)
|
|||
|
*
|
|||
|
* @param dataMapHrm lastname;deptId;deptName;subcomId;subcomName;fccId;fccName;
|
|||
|
* @param userid 人员id
|
|||
|
*/
|
|||
|
public static void getHrmResourceInfo(HashMap<String, String> dataMapHrm, int userid) {
|
|||
|
|
|||
|
FnaSystemSetComInfo fnaSystemSetComInfo = new FnaSystemSetComInfo();
|
|||
|
String fccFilterRule = Util.null2String(fnaSystemSetComInfo.get_fccFilterRule(), "");//成本中心按关联对象过滤
|
|||
|
boolean isFilter = false;//是否需要考虑规则
|
|||
|
//判断 成本中心按关联对象过滤 的已配置的规则
|
|||
|
int count = FnaCostCenter.fccFilterRuleChoice.length;
|
|||
|
boolean[] aaaa = new boolean[count];
|
|||
|
for (int i = 1; i <= count; i++) {
|
|||
|
if (("," + fccFilterRule + ",").indexOf(("," + i + ",")) > -1) {
|
|||
|
aaaa[i - 1] = true;
|
|||
|
isFilter = true;
|
|||
|
} else {
|
|||
|
aaaa[i - 1] = false;
|
|||
|
}
|
|||
|
}
|
|||
|
boolean openSub = (count >= 1 ? aaaa[0] : false);
|
|||
|
boolean openDept = (count >= 2 ? aaaa[1] : false);
|
|||
|
boolean openHrm = (count >= 3 ? aaaa[2] : false);
|
|||
|
|
|||
|
ResourceComInfo rci = null;
|
|||
|
try {
|
|||
|
rci = new ResourceComInfo();
|
|||
|
} catch (Exception ex) {
|
|||
|
}
|
|||
|
DepartmentComInfo dci = new DepartmentComInfo();
|
|||
|
SubCompanyComInfo scci = new SubCompanyComInfo();
|
|||
|
|
|||
|
String _userid = String.valueOf(userid);
|
|||
|
|
|||
|
String lastname = "";
|
|||
|
String deptId = "";
|
|||
|
String deptName = "";
|
|||
|
String subcomId = "";
|
|||
|
String subcomName = "";
|
|||
|
String fccId = "";
|
|||
|
String fccName = "";
|
|||
|
|
|||
|
if ("1".equals(fnaSystemSetComInfo.get_fnaBudgetOAOrg())) {
|
|||
|
lastname = rci.getLastname(_userid);
|
|||
|
deptId = rci.getDepartmentID(_userid);
|
|||
|
deptName = dci.getDepartmentname(deptId);
|
|||
|
subcomId = rci.getSubCompanyID(_userid);
|
|||
|
subcomName = scci.getSubCompanyname(subcomId);
|
|||
|
}
|
|||
|
|
|||
|
if ("1".equals(fnaSystemSetComInfo.get_fnaBudgetCostCenter())) {
|
|||
|
RecordSet rs = new RecordSet();
|
|||
|
String sql02 = "select a.id fccId, a.name fccName, b.type " +
|
|||
|
" from FnaCostCenter a " +
|
|||
|
" join FnaCostCenterDtl b on a.id = b.fccId " +
|
|||
|
" where (a.Archive is null or a.Archive = 0) and ((b.objId=? and b.type=1) or (b.objId=? and b.type=2) or (b.objId=? and b.type=3)) " +
|
|||
|
" order by b.type desc, a.code, a.name, a.id";
|
|||
|
rs.executeQuery(sql02, Util.getIntValue(subcomId), Util.getIntValue(deptId), userid);
|
|||
|
while (rs.next()) {
|
|||
|
int type = Util.getIntValue(rs.getString("type"));
|
|||
|
if (type == 3 && (!isFilter || (isFilter && openHrm))) {//通过人员关联关系带出成本中心
|
|||
|
fccId = Util.null2String(rs.getString("fccId"));
|
|||
|
fccName = Util.null2String(rs.getString("fccName"));
|
|||
|
break;
|
|||
|
} else if (type == 2 && (!isFilter || (isFilter && openDept))) {//通过人员所属部门关联关系带出成本中心
|
|||
|
fccId = Util.null2String(rs.getString("fccId"));
|
|||
|
fccName = Util.null2String(rs.getString("fccName"));
|
|||
|
break;
|
|||
|
} else if (type == 1 && (!isFilter || (isFilter && openSub))) {//通过人员所属分部关联关系带出成本中心
|
|||
|
fccId = Util.null2String(rs.getString("fccId"));
|
|||
|
fccName = Util.null2String(rs.getString("fccName"));
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
dataMapHrm.put("lastname", lastname);
|
|||
|
dataMapHrm.put("deptId", deptId);
|
|||
|
dataMapHrm.put("deptName", deptName);
|
|||
|
dataMapHrm.put("subcomId", subcomId);
|
|||
|
dataMapHrm.put("subcomName", subcomName);
|
|||
|
dataMapHrm.put("fccId", fccId);
|
|||
|
dataMapHrm.put("fccName", fccName);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 判断当前 流程 是否需要进行费控校验
|
|||
|
*
|
|||
|
* @param workflowid 流程ID
|
|||
|
* @param requestid 请求ID
|
|||
|
* @param dataMap 流程字段对应信息,可以传 null
|
|||
|
* @param isprint 是否打印日志
|
|||
|
* @param isDB <li>true=校验数据库的值, 此时 _value_main_fieldIdSfysn 可以是任意值;
|
|||
|
* <li>false=校验页面上的值,此时 _value_main_fieldIdSfysn 应该取值于页面;
|
|||
|
* @param _value_main_fieldIdSfysn 真值
|
|||
|
* @return boolean true=需要费控校验; false=不需要费控校验
|
|||
|
*/
|
|||
|
@Deprecated
|
|||
|
public static boolean isNeedControl(
|
|||
|
int workflowid,
|
|||
|
int requestid,
|
|||
|
Map<String, String> dataMap,
|
|||
|
boolean isprint,
|
|||
|
boolean isDB,
|
|||
|
int _value_main_fieldIdSfysn) {
|
|||
|
|
|||
|
boolean isControl = true;//默认需要费控
|
|||
|
|
|||
|
int condition = FnaCommon.isNeedControl_New(workflowid, requestid, dataMap, isprint, isDB, _value_main_fieldIdSfysn);
|
|||
|
|
|||
|
if (condition == 0 || condition == 2) {//0=预算外;2=预算内,且不做任何校验;
|
|||
|
isControl = false;
|
|||
|
} else if (condition == 1) {//1=预算内,且按照标准的费控逻辑进行判断;
|
|||
|
isControl = true;
|
|||
|
}
|
|||
|
return isControl;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 判断当前 流程 所属的费控情况是什么
|
|||
|
*
|
|||
|
* @param workflowid 流程ID
|
|||
|
* @param requestid 请求ID
|
|||
|
* @param dataMap 流程字段对应信息,可以传 null
|
|||
|
* @param isprint 是否打印日志
|
|||
|
* @param isDB <li>true=校验数据库的值, 此时 _value_main_fieldIdSfysn 可以是任意值;
|
|||
|
* <li>false=校验页面上的值,此时 _value_main_fieldIdSfysn 应该取值于页面;
|
|||
|
* @param _value_main_fieldIdSfysn 真值
|
|||
|
* @return int 情况含义:
|
|||
|
* <li>0=预算外;
|
|||
|
* <li>1=预算内,且按照标准的费控逻辑进行判断;
|
|||
|
* <li>2=预算内,且不做任何校验;
|
|||
|
*/
|
|||
|
public static int isNeedControl_New(
|
|||
|
int workflowid,
|
|||
|
int requestid,
|
|||
|
Map<String, String> dataMap,
|
|||
|
boolean isprint,
|
|||
|
boolean isDB,
|
|||
|
int _value_main_fieldIdSfysn) {
|
|||
|
|
|||
|
int isControl = 1;//默认需要费控
|
|||
|
RecordSet rs = new RecordSet();
|
|||
|
boolean result = false;//sql 语句执行是否成功
|
|||
|
String sql = "";
|
|||
|
int formid = -100;
|
|||
|
BaseBean bb = new BaseBean();
|
|||
|
|
|||
|
if (!isDB && _value_main_fieldIdSfysn < 0) {//校验页面上的值 且 页面没有选择值
|
|||
|
isControl = 1;
|
|||
|
return isControl;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if (dataMap == null) {
|
|||
|
dataMap = new HashMap<String, String>();
|
|||
|
FnaCommon.getFnaWfFieldInfo4Expense(workflowid, dataMap);
|
|||
|
}
|
|||
|
|
|||
|
if (requestid <= 0) {//是新建的流程
|
|||
|
isDB = false;
|
|||
|
}
|
|||
|
|
|||
|
try {
|
|||
|
//(1)下拉框字段filedName
|
|||
|
String filedname = Util.null2s(dataMap.get("main_fieldIdSfysn_fieldName"), "");
|
|||
|
if ("".equals(filedname)) {
|
|||
|
isControl = 1;//流程没有费控配置信息,则默认需要费控
|
|||
|
return isControl;
|
|||
|
} else {
|
|||
|
//(2)需要费控 的真值
|
|||
|
List<String> selectvalueList = new ArrayList<String>();
|
|||
|
selectvalueList.add("");//不填默认也是需要费控
|
|||
|
selectvalueList.add("-100");//不填默认也是需要费控
|
|||
|
selectvalueList.add("1");// 1=是=预算内
|
|||
|
|
|||
|
//(3)判断当前流程是否需要费控
|
|||
|
if (isDB) {//是数据库的值,则校验数据库的
|
|||
|
String formValue = "";//字段在表单中的值
|
|||
|
//(3-1)获取流程表单中的下拉框字段的值
|
|||
|
sql = "select * from workflow_base where id = " + workflowid;
|
|||
|
result = rs.executeQuery(sql);
|
|||
|
if (!result) {
|
|||
|
isControl = 1;
|
|||
|
return isControl;
|
|||
|
} else {
|
|||
|
if (rs.next()) {
|
|||
|
formid = Math.abs(Util.getIntValue(rs.getString("formid")));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
String maintable = "formtable_main_" + formid;//当前流程主表英文名称
|
|||
|
|
|||
|
sql = " select a." + filedname + " as filedValue from " + maintable + " a where a.requestid=" + requestid;
|
|||
|
if (isprint) {
|
|||
|
bb.writeLog("FnaCommon.java 4700 sql=" + sql);
|
|||
|
}
|
|||
|
result = rs.executeQuery(sql);
|
|||
|
if (!result) {
|
|||
|
isControl = 1;
|
|||
|
return isControl;
|
|||
|
} else {
|
|||
|
if (rs.next()) {
|
|||
|
formValue = Util.null2String(rs.getString("filedValue"), "").trim();
|
|||
|
}
|
|||
|
}
|
|||
|
//(3-1)判断表单中的值 是否 是需要费控的值, 是则需要费控;否则不需要费控
|
|||
|
if (selectvalueList.contains(formValue)) {
|
|||
|
isControl = 1;
|
|||
|
} else {
|
|||
|
int ssss = Util.getIntValue(formValue, 1);
|
|||
|
if (0 <= ssss && ssss <= 2) {
|
|||
|
isControl = ssss;
|
|||
|
} else {
|
|||
|
isControl = 1;
|
|||
|
}
|
|||
|
}
|
|||
|
} else {//是页面上的值,则校验页面的
|
|||
|
//(3-2)判断表单中的值 是否 是需要费控的值, 是则需要费控;否则不需要费控
|
|||
|
if (selectvalueList.contains(String.valueOf(_value_main_fieldIdSfysn))) {
|
|||
|
isControl = 1;
|
|||
|
} else {
|
|||
|
int ssss = _value_main_fieldIdSfysn;
|
|||
|
if (0 <= ssss && ssss <= 2) {
|
|||
|
isControl = ssss;
|
|||
|
} else {
|
|||
|
isControl = 1;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
} catch (Exception e) {
|
|||
|
return isControl;
|
|||
|
}
|
|||
|
return isControl;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 校验承担主体ID是否存在
|
|||
|
*
|
|||
|
* @param rs2
|
|||
|
* @param organizationtype
|
|||
|
* @param organizationid
|
|||
|
*/
|
|||
|
public static String checkCdzt(RecordSet rs2, int organizationtype, int organizationid) {
|
|||
|
String result = "";
|
|||
|
//802939 承担主体会消失,需要校验是否存在
|
|||
|
String sql = "";
|
|||
|
String orgTypeName = "";
|
|||
|
if (organizationtype == 1) {
|
|||
|
sql = " select a.id, a.subcompanyname name from HrmSubCompany a where a.id = ? ";
|
|||
|
orgTypeName = SystemEnv.getHtmlLabelName(141, 7);
|
|||
|
} else if (organizationtype == 2) {
|
|||
|
sql = " select a.id, a.departmentname name from HrmDepartment a where a.id = ? ";
|
|||
|
orgTypeName = SystemEnv.getHtmlLabelName(124, 7);
|
|||
|
} else if (organizationtype == 3) {
|
|||
|
sql = " select a.id, a.lastname name from HrmResource a where a.id = ? ";
|
|||
|
orgTypeName = SystemEnv.getHtmlLabelName(6087, 7);
|
|||
|
} else if (organizationtype == FnaCostCenter.ORGANIZATION_TYPE) {
|
|||
|
sql = " select a.id, a.name name from FnaCostCenter a where a.id = ? ";
|
|||
|
orgTypeName = SystemEnv.getHtmlLabelName(515, 7);
|
|||
|
}
|
|||
|
rs2.executeQuery(sql, organizationid);
|
|||
|
if (rs2.next()) {
|
|||
|
} else {
|
|||
|
result = "" + weaver.systeminfo.SystemEnv.getHtmlLabelName(10003246, weaver.general.ThreadVarLanguage.getLang()) + "" + orgTypeName + "ID : " + organizationid + " " + weaver.systeminfo.SystemEnv.getHtmlLabelName(24233, weaver.general.ThreadVarLanguage.getLang()) + "OA" + weaver.systeminfo.SystemEnv.getHtmlLabelName(10003247, weaver.general.ThreadVarLanguage.getLang()) + "";
|
|||
|
}
|
|||
|
|
|||
|
return result;
|
|||
|
}
|
|||
|
}
|