apzl_leasing/src_sys/com/tenwa/flow/action/comm/FlowController.java
2019-08-13 14:02:08 +08:00

87 lines
3.2 KiB
Java

package com.tenwa.flow.action.comm;
import com.amarsoft.awe.util.JavaMethod;
import com.amarsoft.context.ASUser;
import fr.opensagres.xdocreport.core.utils.Base64Utility;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.stereotype.Controller;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;
@Controller
public class FlowController extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
this.doGet(request, response);
}
/**
* 共需要传递几个基础参数
* ClassName: 用于查找需要执行的startAction
* Args内必须提供参数
* ApplyType: 用于查找哪个流程
* @return
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("application/x-www-form-urlencoded;charset=UTF-8");
response.setHeader( "Cache-Control", "no-store" );
response.setHeader( "Pragma", "no-cache" );
response.setDateHeader( "Expires", 0L );
response.setCharacterEncoding( "UTF-8" );
PrintWriter out = response.getWriter();
Map<String, Object> result = new HashMap<>();
String sClassName = request.getParameter( "ClassName" );
//发起流程固定initFLow
String sMethodName = "interfaceInitFlow";
String curUserID = request.getParameter("CurUserID");
String sArgs = request.getParameter("Args");
try {
if ( sArgs == null ) {
sArgs = "";
} else {
sArgs += getFixedFlowParam( sArgs );
}
ASUser CurUser = ASUser.getUser(curUserID, null );
String sResult = JavaMethod.runTrans( sClassName, sMethodName, sArgs, CurUser ).getReturnText();
if ( sResult.indexOf( "success" ) == -1 ) {
throw new Exception( "发起流程失败" );
}
result.put( "data", sResult.split( "@" )[ 1 ] );
result.put( "status", "success" );
} catch ( Exception e ) {
e.printStackTrace();
result.put( "status", "error" );
}
ObjectMapper objectMapper = new ObjectMapper();
out.print( objectMapper.writeValueAsString( result ) );
out.flush();
out.close();
}
public static String getFixedFlowParam ( String args ) {
StringBuffer fixedFlowParam = new StringBuffer( "{'" );
if ( args != null && args.length() > 0 ) {
String[] argObjects = args.split( "," );
for ( String obj : argObjects ) {
if ( fixedFlowParam.length() > 2 ) {
fixedFlowParam.append( "'@'" );
}
fixedFlowParam.append( obj.split( "=" )[0] ).append( "':'" ).append( obj.split( "=" )[1] );
}
fixedFlowParam.append( "'}" );
}
return ",FixedFlowParam=" + fixedFlowParam.toString();
}
}