跳转到主要内容

未能生成预算费用执行数据的流程处理

问题:

在报销流程、借款流程以及还款流程,因流程的版本迭代更新,可能因操作或者配置失误导致报销等流程执行时不能扣除预算数,导致预算数据统计不准确。

官方解决办法:

本功能仅能处理: 1、仅是预申请、或者仅是事后报销的报销流程;
2、自定义表单借还款流程;
请将附件中的文件按目录更新到用户oa服务器上,不需要重启oa服务
更新后,请使用sysadmin用户登录,并访问以下地址:
/fna/do/QueryRequest.jsp 这是一个查询页面,使用requestid查询出该条流程,并右键执行action按钮
1、报销流程:会重新冻结(流程不在创建节点)并扣除(流程已经归档)流程中当前填写的预算数据。
注:如果该条报销流程是预申请流程,则会一并清除相关的事后报销的冲销记录(如果有的话)。请再次重新生成相关事后报销冲销记录!
2、借款流程:会重新生成借款(流程不在创建节点)
注:当重新生成借款时,如果该流程已经有被冲销/还款的记录,则会一并清除相关的冲销/还款记录(如果有的话)。请再次重新生成还款记录!
3、还款流程:会重新冻结借款数据(流程不在创建节点)并冲销/还款(流程已经归档)流程中当前填写的预算数据。
注:此功能只支持e8、e9后台配置的报销流程、只支持标准功能不支持二次开发的功能、不支持开启了结转并进行了结转的流程数据。

<%@ page language="java" contentType="text/html; charset=UTF-8" %> 
<%@ taglib uri="/WEB-INF/weaver.tld" prefix="wea"%><!--added by xwj for td2023 on 2005-05-20-->
<%@ include file="/systeminfo/init_wev8.jsp" %>
<%@ page import="weaver.general.GCONST" %>
<%@ page import="weaver.general.IsGovProj" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="java.util.*" %>
<jsp:useBean id="rs" class="weaver.conn.RecordSet" scope="page" />
<%@page import="weaver.soa.workflow.request.RequestService"%>
<%@page import="weaver.soa.workflow.request.RequestInfo"%>
<%@page import="weaver.interfaces.workflow.action.Action"%>
<%@page import="weaver.soa.workflow.request.Property"%>
<%@page import="weaver.interfaces.workflow.action.FnaBorrowEffectNew"%>
<%@page import="weaver.interfaces.workflow.action.FnaBorrowReverseNew"%>
<%@page import="weaver.interfaces.workflow.action.WorkflowFnaInWorkflowNew"%>
<%@page import="weaver.interfaces.workflow.action.WorkflowFnaEffectNew"%>
<%@page import="weaver.interfaces.workflow.action.FnaBorrowReleaseFreezeNew"%>
<%@page import="weaver.interfaces.workflow.action.FnaBorrowFreezeNew"%>
<%@page import="weaver.interfaces.workflow.action.FnaBorrowReleaseNew"%>
<%@page import="weaver.interfaces.workflow.action.WorkflowFnaRejectNew"%>
<%@page import="weaver.fna.budget.FnaWfSet"%><HTML><HEAD>
</head>
<%
String userid=""+user.getUID();

if(!HrmUserVarify.checkUserRight("DoFnaBudgetAddAction:page11223",user)){
	response.sendRedirect("/notice/noright.jsp") ;
	return ;
}

if(user.getUID()!=1){
	response.sendRedirect("/notice/noright.jsp") ;
	return ;
}

String errorMsg = "";

BaseBean bb = new BaseBean();

String reqIds = Util.null2String(request.getParameter("reqIds")).trim();
String[] reqIdsArray = reqIds.split(",");
for(int i=0;i<reqIdsArray.length;i++){
	int requestId = Util.getIntValue(Util.null2String(reqIdsArray[i]).trim(), 0);
	if(requestId > 0){
		try{
			RequestService requestService = new RequestService();
			
			String sql = "select '本功仅能处理:仅是预申请、或者仅是事后报销的报销流程' memo2, e.fnaWfType, e.fnaWfTypeColl, e.fnaWfTypeReverse, d.formid, a.workflowid, d.workflowname, a.requestid, a.requestname, a.currentnodetype, a.currentnodeid, b.nodename, a.creater, a.createdate \n" +
				" FROM workflow_requestbase a \n" +
				" JOIN workflow_nodebase b on a.currentnodeid = b.id \n" +
				" JOIN workflow_base d on a.workflowid = d.id \n" +
				" JOIN fnaFeeWfInfo e on a.workflowid = e.workflowid \n"+
				" where a.currentnodetype <> 0 \n" +
	        	" and a.requestid = "+requestId+" "+
				" order by a.createdate, a.requestid, a.requestname";
			bb.writeLog(sql);
			rs.executeSql(sql);
			if(rs.next()){
				int workflowid = rs.getInt("workflowid");
				int _workflowid = workflowid;
				int currentnodetype = rs.getInt("currentnodetype");
				int formid = rs.getInt("formid");
				int formidABS = Math.abs(formid);
				String fnaWfType = Util.null2String(rs.getString("fnaWfType")).trim();
				int fnaWfTypeColl = rs.getInt("fnaWfTypeColl");
				int fnaWfTypeReverse = rs.getInt("fnaWfTypeReverse");

				if("fnaFeeWf".equals(fnaWfType)){//报销流程
					if(true){//启用报销
						if(currentnodetype == 0){
							WorkflowFnaRejectNew action = new WorkflowFnaRejectNew();
							RequestInfo requestInfo = requestService.getRequest(requestId);
							requestInfo.getRequestManager().setWorkflowid(workflowid);
							requestInfo.getRequestManager().setFormid(formid);
							requestInfo.getRequestManager().setSrc("submit");
							action.execute(requestInfo);
							if(!"".equals(requestInfo.getRequestManager().getMessageid())){
								throw new Exception(requestInfo.getRequestManager().getMessagecontent());
							}
						}
					
						if(currentnodetype > 0){
		            		//冻结-节点前附加操作
		            		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))){
								WorkflowFnaInWorkflowNew action = new WorkflowFnaInWorkflowNew();
								RequestInfo requestInfo = requestService.getRequest(requestId);
								requestInfo.getRequestManager().setWorkflowid(workflowid);
								requestInfo.getRequestManager().setFormid(formid);
								requestInfo.getRequestManager().setSrc("submit");
								action.execute(requestInfo);
								if(!"".equals(requestInfo.getRequestManager().getMessageid())){
									throw new Exception(requestInfo.getRequestManager().getMessagecontent());
								}
		        			}
						}
						
						if(currentnodetype == 3){
		        			//扣除-节点前附加操作
		        			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)){
								WorkflowFnaEffectNew action = new WorkflowFnaEffectNew();
								RequestInfo requestInfo = requestService.getRequest(requestId);
								requestInfo.getRequestManager().setWorkflowid(workflowid);
								requestInfo.getRequestManager().setFormid(formid);
								requestInfo.getRequestManager().setSrc("submit");
								action.execute(requestInfo);
								if(!"".equals(requestInfo.getRequestManager().getMessageid())){
									throw new Exception(requestInfo.getRequestManager().getMessagecontent());
								}
		        			}
						}
					}
					
					if((fnaWfTypeReverse>0 && fnaWfTypeColl>0)){//启用还款
						if(currentnodetype == 0){
							FnaBorrowReleaseFreezeNew action = new FnaBorrowReleaseFreezeNew();
							RequestInfo requestInfo = requestService.getRequest(requestId);
							requestInfo.getRequestManager().setWorkflowid(workflowid);
							requestInfo.getRequestManager().setFormid(formid);
							requestInfo.getRequestManager().setSrc("submit");
							action.execute(requestInfo);
							if(!"".equals(requestInfo.getRequestManager().getMessageid())){
								throw new Exception(requestInfo.getRequestManager().getMessagecontent());
							}
						}
					
						if(currentnodetype > 0){
							FnaBorrowFreezeNew action = new FnaBorrowFreezeNew();
							RequestInfo requestInfo = requestService.getRequest(requestId);
							requestInfo.getRequestManager().setWorkflowid(workflowid);
							requestInfo.getRequestManager().setFormid(formid);
							requestInfo.getRequestManager().setSrc("submit");
							action.execute(requestInfo);
							if(!"".equals(requestInfo.getRequestManager().getMessageid())){
								throw new Exception(requestInfo.getRequestManager().getMessagecontent());
							}
						}
					
						if(currentnodetype == 3){
		        			//冲销借款-节点前附加操作
		        			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)){
								FnaBorrowReverseNew action = new FnaBorrowReverseNew();
								RequestInfo requestInfo = requestService.getRequest(requestId);
								requestInfo.getRequestManager().setWorkflowid(workflowid);
								requestInfo.getRequestManager().setFormid(formid);
								requestInfo.getRequestManager().setSrc("submit");
								action.execute(requestInfo);
								if(!"".equals(requestInfo.getRequestManager().getMessageid())){
									throw new Exception(requestInfo.getRequestManager().getMessagecontent());
								}
		        			}
						}
					}
				}
				
				if("borrow".equals(fnaWfType)){//借款流程
					if(currentnodetype == 0){
						FnaBorrowReleaseNew action = new FnaBorrowReleaseNew();
						RequestInfo requestInfo = requestService.getRequest(requestId);
						requestInfo.getRequestManager().setWorkflowid(workflowid);
						requestInfo.getRequestManager().setFormid(formid);
						requestInfo.getRequestManager().setSrc("submit");
						action.execute(requestInfo);
						if(!"".equals(requestInfo.getRequestManager().getMessageid())){
							throw new Exception(requestInfo.getRequestManager().getMessagecontent());
						}
					}

					if(currentnodetype > 0){
	            		//扣除-节点前附加操作
	            		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)){
							FnaBorrowEffectNew action = new FnaBorrowEffectNew();
							RequestInfo requestInfo = requestService.getRequest(requestId);
							requestInfo.getRequestManager().setWorkflowid(workflowid);
							requestInfo.getRequestManager().setFormid(formid);
							requestInfo.getRequestManager().setSrc("submit");
							action.execute(requestInfo);
							if(!"".equals(requestInfo.getRequestManager().getMessageid())){
								throw new Exception(requestInfo.getRequestManager().getMessagecontent());
							}
	        			}
					}
				}

				if("repayment".equals(fnaWfType)){//还款流程
					if(currentnodetype == 0){
						FnaBorrowReleaseFreezeNew action = new FnaBorrowReleaseFreezeNew();
						RequestInfo requestInfo = requestService.getRequest(requestId);
						requestInfo.getRequestManager().setWorkflowid(workflowid);
						requestInfo.getRequestManager().setFormid(formid);
						requestInfo.getRequestManager().setSrc("submit");
						action.execute(requestInfo);
						if(!"".equals(requestInfo.getRequestManager().getMessageid())){
							throw new Exception(requestInfo.getRequestManager().getMessagecontent());
						}
					}
				
					if(currentnodetype > 0){
						FnaBorrowFreezeNew action = new FnaBorrowFreezeNew();
						RequestInfo requestInfo = requestService.getRequest(requestId);
						requestInfo.getRequestManager().setWorkflowid(workflowid);
						requestInfo.getRequestManager().setFormid(formid);
						requestInfo.getRequestManager().setSrc("submit");
						action.execute(requestInfo);
						if(!"".equals(requestInfo.getRequestManager().getMessageid())){
							throw new Exception(requestInfo.getRequestManager().getMessagecontent());
						}
					}
				
					if(currentnodetype == 3){
	        			//冲销借款-节点前附加操作
	        			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)){
							FnaBorrowReverseNew action = new FnaBorrowReverseNew();
							RequestInfo requestInfo = requestService.getRequest(requestId);
							requestInfo.getRequestManager().setWorkflowid(workflowid);
							requestInfo.getRequestManager().setFormid(formid);
							requestInfo.getRequestManager().setSrc("submit");
							action.execute(requestInfo);
							if(!"".equals(requestInfo.getRequestManager().getMessageid())){
								throw new Exception(requestInfo.getRequestManager().getMessagecontent());
							}
	        			}
					}
				}
			}
		}catch(Exception e){
			errorMsg = e.getMessage();
		}
	}
}

%>
<%@ include file="/systeminfo/RightClickMenuConent_wev8.jsp" %>
<script type="text/javascript">
function _goBack(){
	window.location.href = "/fna/do/QueryRequest.jsp?reqIds=<%=reqIds %>";
}
</script>
<%
RCMenu += "{返回,javascript:_goBack(),_self}" ;
RCMenuHeight += RCMenuHeightStep ;
%>
<%if("".equals(errorMsg)){ %>
请检查流程预算(借还款)数据是否正确生成,右键返回查询界面
<%}else{ %>
流程预算(借还款)数据生成失败:<%=errorMsg %>,右键返回查询界面
<%} %>
<%@ include file="/systeminfo/RightClickMenu_wev8.jsp" %>
<BODY>

</html>