apzl_leasing/src_sys/com/tenwa/flow/action/comm/FlowController.java
2019-08-08 10:03:20 +08:00

87 lines
3.3 KiB
Java

package com.tenwa.flow.action.comm;
import com.amarsoft.awe.util.JavaMethod;
import com.amarsoft.context.ASUser;
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( "text/html; charset=GBK" );
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 sArgs = request.getParameter( "Args" );
try {
if ( sArgs == null ) {
sArgs = "";
} else {
if ( sArgs.indexOf( "CurUserID" ) == -1 ) {
sArgs += ",CurUserID=8006U00000001";
}
sArgs += getFixedFlowParam( sArgs );
sArgs = URLDecoder.decode(sArgs, "UTF-8").replace("Ж", "+").replace("ё", "%");
}
ASUser CurUser = ASUser.getUser( "8006U00000001", 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() > 1 ) {
fixedFlowParam.append( "," );
}
fixedFlowParam.append( obj.split( "=" )[0] )
.append( ":" ).append( obj.split( "=" )[1] );
}
fixedFlowParam.append( "}" );
}
return ",FixedFlowParam=" + fixedFlowParam.toString();
}
}