czt
2 天以前 46ee5aac0c31c352f19344eb3cfd762817f2559e
src/main/java/com/fzzy/push/whhpjl/WhjlApiRemoteService.java
@@ -1,6 +1,7 @@
package com.fzzy.push.whhpjl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.api.data.ApiParam;
import com.fzzy.api.data.PushProtocol;
import com.fzzy.api.dto.ResponseDto;
@@ -8,19 +9,20 @@
import com.fzzy.api.service.ApiCommonService;
import com.fzzy.api.service.ApiRemoteService;
import com.fzzy.api.service.ApiTriggerService;
import com.fzzy.api.utils.ContextUtil;
import com.fzzy.api.utils.RedisUtil;
import com.fzzy.api.utils.*;
import com.fzzy.api.view.repository.*;
import com.fzzy.push.whhpjl.dto.WhjlPullReqDto;
import com.fzzy.push.whhpjl.dto.WhjlPullRespDto;
import com.fzzy.push.whhpjl.dto.WhjlReqDto;
import com.fzzy.push.whhpjl.dto.WhjlRespDto;
import com.fzzy.whjl.WhjlConstant;
import com.fzzy.otherview.whhpjl.WhjlConstant;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
/**
 * 武汉军粮省平台-上传数据服务类
@@ -41,6 +43,8 @@
    private ApiTriggerService apiTriggerService;
    @Autowired
    private ApiLogRep apiLogRep;
    @Autowired
    private Whjl2023HttpClientUtil whjl2023HttpClientUtil;
    @Override
    public String getProtocol() {
@@ -56,22 +60,21 @@
    public ResponseDto pushData(ApiParam param, ApiConfs conf, Object data) {
        String inteId = param.getInteId();
        String kqdm = param.getKqdm();
        String bizId = param.getBizId();
        try {
            if (null == conf) {
                conf = apiCommonService.getConf(kqdm);
            }
            //添加LOGO
            //添加日志
            ApiLog apiLog = new ApiLog();
            apiLog.setId(ContextUtil.getUUID());
            apiLog.setInteId(inteId);
            String jsonData = getJsonData(inteId, data, conf.getApiUrl());
            log.info("报文信息=" + jsonData);
            String jsonData = getJsonData(data);
            log.info("接口数据信息=" + jsonData);
            inteId = getInteId(inteId);
            if (StringUtils.isEmpty(inteId)) {
                ResponseDto responseDto = new ResponseDto(99, "没有获取到接口", bizId);
                ResponseDto responseDto = new ResponseDto(99, "没有获取到接口");
                apiLog.setStatus(99);
                apiLog.setResult("没有获取到接口");
                apiLogRep.save(apiLog);
@@ -82,22 +85,60 @@
            apiLog.setUploadTime(new Date());
            if (conf == null) {
                ResponseDto responseDto = new ResponseDto(99, "没有获取到上传配置", bizId);
                ResponseDto responseDto = new ResponseDto(99, "没有获取到上传配置");
                apiLog.setStatus(99);
                apiLog.setResult("没有获取到上传配置");
                apiLogRep.save(apiLog);
                return responseDto;
            }
            Map<String, Object> map = new HashMap<>();
            WhjlRespDto responseDto = Whjl2023HttpClientUtil.postPushData(conf.getApiUrl() + inteId, jsonData, conf, null);
            //封装推送数据
            WhjlReqDto reqData = new WhjlReqDto();
            //报文标识ID
            reqData.setId(ContextUtil.getUUID());
            //身份ID
            reqData.setUid(conf.getUserName());
            //获取指令id
            String key = RedisConst.buildKey(RedisConst.KYE_ORDER, conf.getKqdm());
            String orderId = (String)redisUtil.get(key);
            if(StringUtils.isEmpty(orderId)){
                orderId = reqData.getId();
            }
            reqData.setOrderid(orderId);
            //应用码
            reqData.setAppcode(conf.getAppCode());
            //时间戳
            reqData.setTimestamp(Long.valueOf(ContextUtil.getCurTimeMillis()));
            //身份签名,对应用码_授权码_站点编码_报文ID_时间戳进行MD5算法签名
            String accessToken = reqData.getAppcode() +"_" + conf.getPassword() +"_" + reqData.getUid() + "_" + reqData.getId() + "_" + reqData.getTimestamp();
            log.info("身份签名:" + accessToken);
            reqData.setAccesstoken(MyMD5Util.encrypt(accessToken));
            //数据总条数
            reqData.setDatalength(1);
            //数据主体,进行SM4加密
            reqData.setData(SM4Util.encryptEcb(conf.getPublicKey(), jsonData));
            //摘要,数据主体的MD5值
            reqData.setDigest(MyMD5Util.encrypt(jsonData));
            //操作类型
            JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(data));
            String czbz = jsonObject.getString("czbz");
            if("u".equals(czbz)){
                czbz = "update";
            }else if("d".equals(czbz)){
                czbz = "delete";
            }else {
                czbz = "insert";
            }
            reqData.setOperator(czbz);
            WhjlRespDto responseDto = whjl2023HttpClientUtil.postPushData(conf.getApiUrl() + inteId, reqData);
            apiLog.setStatus(responseDto.getCode() == 200 ? 0 : responseDto.getCode());
            apiLog.setResult(responseDto.getResult());
            apiLogRep.save(apiLog);
            ResponseDto resd = new ResponseDto();
            resd.setSuccess(responseDto.getCode() == 200 ? 0 : responseDto.getCode());
            resd.setMsg(responseDto.getResult());
            //updateGD2022AuthToken(responseDto,conf, token);
            return resd;
        } catch (Exception e) {
            log.error(e.getMessage(), e);
@@ -106,15 +147,16 @@
    }
    /**
     * 调整数据封装,获取json数据
     * 调整数据封装成list,获取json数据
     *
     * @param inteId
     * @param data
     * @return
     * @throws Exception
     */
    private String getJsonData(String inteId, Object data, String url) {
        return JSON.toJSONString(data);
    private String getJsonData(Object data) {
        List<Object> list = new ArrayList<>();
        list.add(data);
        return JSON.toJSONString(list);
    }
    private String getInteId(String inteId) {
@@ -130,22 +172,26 @@
            case "1105":
                return WhjlConstant.API_CODE_CFXX;
            case "1106":
                return WhjlConstant.API_CODE_AJXX;
                return WhjlConstant.API_CODE_YGXX;
            case "1107":
                return WhjlConstant.API_CODE_HWXX;
                return WhjlConstant.API_CODE_AJXX;
            case "1108":
                return WhjlConstant.API_CODE_CCSSDZDA;
                return WhjlConstant.API_CODE_HWXX;
            case "1109":
                return WhjlConstant.API_CODE_CCSSWHJL;
                return WhjlConstant.API_CODE_CCSSDZDA;
            case "1110":
                return WhjlConstant.API_CODE_CCSSBFJL;
                return WhjlConstant.API_CODE_CCSSWHJL;
            case "1111":
                return WhjlConstant.API_CODE_CCSBXX;
                return WhjlConstant.API_CODE_CCSSBFJL;
            case "1112":
                return WhjlConstant.API_CODE_CCSBWHJL;
                return WhjlConstant.API_CODE_CCSBXX;
            case "1113":
                return WhjlConstant.API_CODE_CCSBWXJL;
                return WhjlConstant.API_CODE_CCSBWHJL;
            case "1114":
                return WhjlConstant.API_CODE_CCSBWXJL;
            case "1115":
                return WhjlConstant.API_CODE_CCSBBFJL;
            case "11145":
                return WhjlConstant.API_CODE_CCSBBFJL;
            case "1201":
                return WhjlConstant.API_CODE_FSGYSXX;
@@ -156,47 +202,175 @@
            case "1204":
                return WhjlConstant.API_CODE_KHXX;
            case "1205":
                return WhjlConstant.API_CODE_CCJL;
            case "1206":
                return WhjlConstant.API_CODE_DDXX;
            case "1207":
            case "1206":
                return WhjlConstant.API_CODE_HTXX;
            case "1208":
            case "1207":
                return WhjlConstant.API_CODE_KCTZ;
            case "1209":
            case "1208":
                return WhjlConstant.API_CODE_KCTZPCXX;
            case "1210":
            case "1209":
                return WhjlConstant.API_CODE_KCTZCRJL;
            case "1211":
            case "1210":
                return WhjlConstant.API_CODE_KCPDJL;
            case "1212":
            case "1211":
                return WhjlConstant.API_CODE_KNZCJL;
            case "1213":
            case "1212":
                return WhjlConstant.API_CODE_CRKJL;
            case "1301":
            case "1213":
                return WhjlConstant.API_CODE_CRKJSJL;
            case "1214":
                return WhjlConstant.API_CODE_ZJJG;
            case "1302":
            case "1215":
                return WhjlConstant.API_CODE_YPDJXX;
            case "1216":
                return WhjlConstant.API_CODE_ZJBG;
            case "1217":
                return WhjlConstant.API_CODE_BZQYJGZ;
            case "1218":
                return WhjlConstant.API_CODE_BZQYJJL;
            case "1219":
                return WhjlConstant.API_CODE_WZKCYJGZ;
            case "1220":
                return WhjlConstant.API_CODE_WZKCYJJL;
            case "1221":
                return WhjlConstant.API_CODE_CCJH;
            case "1301":
                return WhjlConstant.API_CODE_WSDJCJL;
            case "1302":
                return WhjlConstant.API_CODE_YSHJJCJL;
            case "1303":
                return WhjlConstant.API_CODE_LQJCJL;
                return WhjlConstant.API_CODE_WSDGJJL;
            case "1304":
                return WhjlConstant.API_CODE_NHJL;
            case "1305":
                return WhjlConstant.API_CODE_DDPSRW;
            case "1306":
                return WhjlConstant.API_CODE_BDWZXX;
            case "1307":
                return WhjlConstant.API_CODE_YSRWBDXX;
            case "1308":
                return WhjlConstant.API_CODE_SPYJGJ;
            case "1309":
                return WhjlConstant.API_CODE_STSJ;
            case "1401":
                return WhjlConstant.API_CODE_DYQY;
                return WhjlConstant.API_CODE_SCZLL;
            case "1402":
                return WhjlConstant.API_CODE_DYXY;
                return WhjlConstant.API_CODE_KGPJ;
            case "1403":
                return WhjlConstant.API_CODE_DYNL;
                return WhjlConstant.API_CODE_DYQY;
            case "1404":
                return WhjlConstant.API_CODE_DYYJ;
                return WhjlConstant.API_CODE_DYSP;
            case "1405":
                return WhjlConstant.API_CODE_SCJGDD;
                return WhjlConstant.API_CODE_DYXY;
            case "1406":
                return WhjlConstant.API_CODE_YSLX;
                return WhjlConstant.API_CODE_DYXYBG;
            case "1407":
                return WhjlConstant.API_CODE_YJDD;
                return WhjlConstant.API_CODE_DYXYZXMX;
            case "1408":
                return WhjlConstant.API_CODE_DYNL;
            case "1409":
                return WhjlConstant.API_CODE_DYYJ;
            case "1410":
                return WhjlConstant.API_CODE_SCJGDD;
            case "1411":
                return WhjlConstant.API_CODE_CLXX;
            case "1412":
                return WhjlConstant.API_CODE_CLYSHJ;
            case "1413":
                return WhjlConstant.API_CODE_YSLX;
            case "1414":
                return WhjlConstant.API_CODE_BDZDSB;
            case "2001":
                return WhjlConstant.API_CODE_SHARE_SBFL;
            case "2002":
                return WhjlConstant.API_CODE_SHARE_CPFL;
            case "2003":
                return WhjlConstant.API_CODE_SHARE_JLDW;
            case "2004":
                return WhjlConstant.API_CODE_SHARE_JLGLJG;
            case "2005":
                return WhjlConstant.API_CODE_SHARE_JLGYSXX;
            case "2006":
                return WhjlConstant.API_CODE_SHARE_JLPPXX;
            case "2007":
                return WhjlConstant.API_CODE_SHARE_JLCPXX;
            case "2008":
                return WhjlConstant.API_CODE_SHARE_JLCCJH;
            case "2009":
                return WhjlConstant.API_CODE_SHARE_HTMB;
            case "2010":
                return WhjlConstant.API_CODE_SHARE_ZLJCBZ;
            case "2011":
                return WhjlConstant.API_CODE_SHARE_ZLJCXM;
            case "2012":
                return WhjlConstant.API_CODE_SHARE_YJFAXX;
            default:
                return inteId;
        }
    }
    @Override
    public ResponseDto pullData(ApiParam param, ApiConfs conf) {
        String inteId = param.getInteId();
        String kqdm = param.getKqdm();
        try {
            if (null == conf) {
                conf = apiCommonService.getConf(kqdm);
            }
            //添加日志
            ApiLog apiLog = new ApiLog();
            apiLog.setId(ContextUtil.getUUID());
            apiLog.setInteId(inteId);
            inteId = getInteId(inteId);
            if (StringUtils.isEmpty(inteId)) {
                ResponseDto responseDto = new ResponseDto(99, "没有获取到接口");
                apiLog.setStatus(99);
                apiLog.setResult("没有获取到接口");
                apiLogRep.save(apiLog);
                return responseDto;
            }
            if (conf == null) {
                ResponseDto responseDto = new ResponseDto(99, "没有获取到上传配置");
                apiLog.setStatus(99);
                apiLog.setResult("没有获取到上传配置");
                apiLogRep.save(apiLog);
                return responseDto;
            }
            //封装数据
            WhjlPullReqDto reqData = new WhjlPullReqDto();
            //报文标识ID
            reqData.setId(ContextUtil.getUUID());
            //身份ID
            reqData.setUid(conf.getUserName());
            //应用码
            reqData.setAppcode(conf.getAppCode());
            //时间戳
            reqData.setTimestamp(Long.valueOf(ContextUtil.getCurTimeMillis()));
            //身份签名,对应用码_授权码_站点编码_报文ID_时间戳进行MD5算法签名
            String accessToken = reqData.getAppcode() +"_" + conf.getPassword() +"_" + reqData.getUid() + "_" + reqData.getId() + "_" + reqData.getTimestamp();
            log.info("身份签名:" + accessToken);
            reqData.setAccesstoken(MyMD5Util.encrypt(accessToken));
            String url = conf.getApiUrl().replace("secure", "share");
            WhjlPullRespDto responseDto = whjl2023HttpClientUtil.postPullData(url + inteId, reqData);
            apiLog.setStatus(responseDto.getCode() == 200 ? 0 : responseDto.getCode());
            apiLog.setKqdm(kqdm);
            apiLog.setUploadTime(new Date());
            apiLogRep.save(apiLog);
            ResponseDto resd = new ResponseDto();
            resd.setSuccess(responseDto.getCode() == 200 ? 0 : responseDto.getCode());
            resd.setData(responseDto.getData());
            return resd;
        } catch (Exception e) {
            log.error(e.getMessage(), e);
            return new ResponseDto(99, e.getMessage());
        }
    }
}