第一篇就是测试一下吧发下代码看看格式

package com.ccb.p2.ca.action;

import java.util.HashMap;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Value;

import com.ccb.msgcenter.McConnection;
import com.ccb.openframework.security.SecurityManagerUtils;
import com.ccb.openframework.swaparea.SwapAreaUtils;
import com.ccb.p2.ca.constant.AuthConstant;
import com.ccb.p2.ca.service.AuthCancelService;
import com.ccb.p2.ca.utils.AuthUtils;
import com.ccb.p2.script.service.CommonService;
import com.ccb.p2.util.exception.P2CommonException;

/**
 * 授权Action,统一的授权入口,目前仅仅是为影像采集界面传递交易数据用 未来交易是否授权会在此类中进行判断
 * 
 * @author danyb
 * 
 */
public class AuthAction 
{
    private Log logger = LogFactory.getLog(AuthAction.class);
    // 交易内容json字符串
    private String transContent;
    // 影像采集提示,由于影像采集配置到分行,机构号+操作码+功能号确定缓存一条记录,后台取分行机构号不合适,所以影响采集提示放到前台页面取
    // nouse
    private String imageTipsInfo;
    private String instLevel1BranchId;    // 一级分行号
    private String appReqInfo = "helloworld";    // PBCS页面字段xmlcontent

    @Value("${p2FileUploadServiceAdapter.srvFileBaseDir}")
    private String serverPath = "";
    @Value("${auth.uploadPath}")
    private String authPath = "";
    
    @Resource(name = "commonService")
    private CommonService commonService;
    
    @Resource(name = "authCancelService")
    private AuthCancelService authCancelService;
    
    // 返回给页面的其他要素json格式
    private String resultContent = "resultContent";
    
    public String execute() throws Exception
    {
        logger.info("授权请求action开始");
        if (StringUtils.isEmpty(transContent))
        {
            // for test
            transContent = "{'APP_REQ_TXCODE6':'111111', 'APP_REQ_FUNC':'222222', 'AUTH_SEQ_NO':'123456789', 'APP_REQ_SYS':'02'}";
        }

        Map<String, Object> transMap = AuthUtils.getMapFromJsonString(transContent);
        logger.info("transContent=======> 转换为 transMap: " + transMap);
        //授权流水号
        String authSeqNo = (String)transMap.get("AUTH_SEQ_NO");    
        //请求系统
        String appReqSys = (String)transMap.get("APP_REQ_SYS");    
        // 交易码
        String frTranId = (String)transMap.get("APP_REQ_TXCODE");
        // 功能号
        String frFuncId = (String)transMap.get("APP_REQ_FUNC");
        // 请求机构号
        String appReqOrg = (String)transMap.get("APP_REQ_ORG");
        // 请求8位员工号默认 曹操 
        String defaulttellerId8 = "57000355";
        
        // return TOP field
        // CSID
        String csId = (String)transMap.get("MCC_RCV_CSID");
        // 安全节点号
        String appMsgSecId = (String)transMap.get("APP_MSG_SECID");
        // TTY
        String tty = (String)transMap.get("MCC_SND_TTY");
        
        // CRA997104交易状态查询
        // 全局跟踪号
        String serialNo = SecurityManagerUtils.generalGlobalSerialNo((String) SwapAreaUtils.getValue("['_host_name']"));
        // 组请求报文数据
        Map<String, Object> outboundData = new HashMap<String, Object>();
        outboundData.put("FR_SYS_ID", appReqSys);
        outboundData.put("FR_TRAN_ID", frTranId);
        outboundData.put("FR_FUNC_ID", frFuncId);
        outboundData.put("OPER_CODE", defaulttellerId8);
        outboundData.put("BRANCH_ID", appReqOrg);
        
        Map<String, Object> transResult = new HashMap<String, Object>();
        try
        {
            // 外呼COSRA997104
            transResult = commonService.service("CRA997104", serialNo, outboundData);
            // 记录数据库
            SwapAreaUtils.setValue("['resp_for_log']", transResult);
        } catch (Exception e)
        {
            logger.error("授权流水号:" + authSeqNo + ", 发送CRA997104交易状态查询失败");
            transResult = null;
        }
        
        
//        AUTH_TRAN_STAT  授权交易状态  C   1   Y
//        授权交易状态  1   0   正常
//        2   1   非业务处理时间
//        3   2   故障隔离

//        AUTH_RE_DATE    授权交易恢复日期    C   8   N
//        AUTH_RE_TIME    授权交易恢复时间    C   6   N
        // 取得CRA997104返回的结果
        Map<String, Object> returnMap = getCRA997104Response(transResult);
        logger.info("=====getCRA997104Response==》returnMap : " + returnMap);
        String appResInfo1 = (String)returnMap.get("BK_DESC") + "(" +(String)returnMap.get("BK_CODE") + ")";
        returnMap.put("APP_RES_INFO1", appResInfo1);
        returnMap.put("APP_RES_RSLT", "c");
        logger.info("==========appResInfo1========>" + appResInfo1);
        String bkStatus = (String)returnMap.get("BK_STATUS");
        logger.info("==========bkStatus========>" + bkStatus);
        
        resultContent = AuthUtils.getJsonStringFormMap(returnMap);
        logger.info("=========resultContent==========>" + resultContent);
        // 远程授权标志
        boolean authFlag = false;
        if(StringUtils.isNotEmpty(bkStatus) && "00".equals(bkStatus))
        {
            authFlag = true;
            // 处理PBCS页面要素字段文件
            if(StringUtils.isNotEmpty(appReqSys) && appReqSys.equals(AuthConstant.AUTH_APPLY_SYSTEM_PBCS)){
                String filePath = serverPath + authPath + authSeqNo + ".xml";
                AuthUtils.createTransFile(appReqInfo, filePath);
                logger.info("pbcs页面要素文件生成成功");
            }
        }
        // authFlag=true 返回影像采集界面,否则返回错误页面并通知原系统
        if (authFlag)
        {
            return "success";
        } else
        {
            // 如果原系统是TOP,发消息中心通知原系统转本地授权
            if(AuthConstant.AUTH_APPLY_SYSTEM_CCBS.equals(appReqSys))
            {
                logger.info("远程授权状态authFlag=false,不可以做远程授权");
                Map<String, Object> returnTOPMap = new HashMap<String, Object>();
                returnTOPMap.put("safetyCode", appMsgSecId);
                returnTOPMap.put("MCC_SND_TTY", tty);
                returnTOPMap.put("APP_REQ_SYS", appReqSys);
                returnTOPMap.put("AUTH_SEQ_NO", authSeqNo);
                // 系统异常转本终端授权 c
                returnTOPMap.put("APP_RES_RSLT", "c");
                
                logger.info("================通知TOP转本地授权开始=================");
                authCancelService.cancelToSourceSystem(csId, returnTOPMap);
                logger.info("================通知TOP转本地授权结束=================");
            }
            return "success";
        }
    }

    public String getTransContent()
    {
        return transContent;
    }

    public void setTransContent(String transContent)
    {
        this.transContent = transContent;
    }

    public String getImageTipsInfo()
    {
        return imageTipsInfo;
    }

    public void setImageTipsInfo(String imageTipsInfo)
    {
        this.imageTipsInfo = imageTipsInfo;
    }

    public String getInstLevel1BranchId()
    {
        return instLevel1BranchId;
    }

    public void setInstLevel1BranchId(String instLevel1BranchId)
    {
        this.instLevel1BranchId = instLevel1BranchId;
    }

    public String getAppReqInfo()
    {
        return appReqInfo;
    }

    public void setAppReqInfo(String appReqInfo)
    {
        this.appReqInfo = appReqInfo;
    }

    public String getServerPath()
    {
        return serverPath;
    }

    public void setServerPath(String serverPath)
    {
        this.serverPath = serverPath;
    }

    public String getAuthPath()
    {
        return authPath;
    }

    public void setAuthPath(String authPath)
    {
        this.authPath = authPath;
    }
    
    @SuppressWarnings({"rawtypes", "unchecked" })
    public Map<String, Object> getCRA997104Response(Map rawData)
    {
        if(rawData == null)
        {
            rawData = new HashMap<String, Object>();
            rawData.put("BK_DESC", "发送COSRA外呼交易失败,系统异常");
            rawData.put("BK_CODE", "SYSTEM_ERROR");
            rawData.put("BK_STATUS", "01");
            
            return rawData;
        }
        Map resultMap = (Map)((Map)rawData.get("TX_BODY")).get("ENTITY");
        if(resultMap == null)
        {
            resultMap = new HashMap();
        }
        if (((Map) rawData.get("TX_HEADER")).get("SYS_TX_STATUS") != null)
            ((Map) resultMap).put("BK_STATUS", ((Map) rawData.get("TX_HEADER")).get("SYS_TX_STATUS"));
        else
            logger.info("TX_HEADER===>SYS_TX_STATUS为空");
            //((Map) resultMap).put("BK_STATUS", inData);

        if (((Map) rawData.get("TX_HEADER")).get("SYS_RESP_CODE") != null)
            ((Map) resultMap).put("BK_CODE", ((Map) rawData.get("TX_HEADER")).get("SYS_RESP_CODE"));
        else
            logger.info("TX_HEADER===>SYS_RESP_CODE为空");

        
        if (((Map) rawData.get("TX_HEADER")).get("SYS_RESP_DESC") != null)
        {
            String bkDesc = (String)((Map) rawData.get("TX_HEADER")).get("SYS_RESP_DESC");
            int i = bkDesc.indexOf("<br>");
            if( i > 0)
            {
                bkDesc = bkDesc.substring(0, i);
            }
            ((Map) resultMap).put("BK_DESC", bkDesc);
        }
        else
            //((Map) resultMap).put("BK_DESC", okDesc);
            logger.info("TX_HEADER===>SYS_RESP_DESC为空");
        
        return (Map<String, Object>) resultMap;
    }

    public void setResultContent(String resultContent)
    {
        this.resultContent = resultContent;
    }

    public String getResultContent()
    {
        return resultContent;
    }
    
}
原文地址:https://www.cnblogs.com/danyubin/p/3435369.html