package com.fzzy.push.whhpjl;
|
|
import com.alibaba.fastjson.JSON;
|
import com.fzzy.api.data.ApiParam;
|
import com.fzzy.api.data.PushProtocol;
|
import com.fzzy.api.dto.ResponseDto;
|
import com.fzzy.api.entity.*;
|
import com.fzzy.api.service.ApiCommonService;
|
import com.fzzy.api.service.ApiRemoteService;
|
import com.fzzy.api.service.ApiTriggerService;
|
import com.fzzy.api.utils.AESUtils;
|
import com.fzzy.api.utils.ContextUtil;
|
import com.fzzy.api.utils.MyMD5Util;
|
import com.fzzy.api.utils.RedisUtil;
|
import com.fzzy.api.view.repository.*;
|
import com.fzzy.push.whhpjl.dto.WhjlReqDto;
|
import com.fzzy.push.whhpjl.dto.WhjlRespDto;
|
import com.fzzy.whjl.WhjlConstant;
|
import lombok.Data;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import java.util.*;
|
|
/**
|
* 武汉军粮省平台-上传数据服务类
|
*
|
* @author czt
|
* @date 2023/08/04
|
*/
|
@Slf4j
|
@Data
|
@Service
|
public class WhjlApiRemoteService implements ApiRemoteService {
|
|
@Autowired
|
private RedisUtil redisUtil;
|
@Autowired
|
private ApiCommonService apiCommonService;
|
@Autowired
|
private ApiTriggerService apiTriggerService;
|
@Autowired
|
private ApiLogRep apiLogRep;
|
|
@Override
|
public String getProtocol() {
|
return PushProtocol.SB_WHJL_2023.getCode();
|
}
|
|
@Override
|
public ResponseDto pushData(ApiParam param, Object data) {
|
return pushData(param, null, data);
|
}
|
|
@Override
|
public ResponseDto pushData(ApiParam param, ApiConfs conf, Object data) {
|
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);
|
String jsonData = getJsonData(inteId, data);
|
log.info("数据报文信息=" + jsonData);
|
inteId = getInteId(inteId);
|
if (StringUtils.isEmpty(inteId)) {
|
ResponseDto responseDto = new ResponseDto(99, "没有获取到接口");
|
apiLog.setStatus(99);
|
apiLog.setResult("没有获取到接口");
|
apiLogRep.save(apiLog);
|
return responseDto;
|
}
|
apiLog.setData(jsonData);
|
apiLog.setKqdm(kqdm);
|
apiLog.setUploadTime(new Date());
|
|
if (conf == null) {
|
ResponseDto responseDto = new ResponseDto(99, "没有获取到上传配置");
|
apiLog.setStatus(99);
|
apiLog.setResult("没有获取到上传配置");
|
apiLogRep.save(apiLog);
|
return responseDto;
|
}
|
//封装推送数据
|
WhjlReqDto reqData = new WhjlReqDto();
|
reqData.setId(ContextUtil.getUUID());
|
reqData.setUid(conf.getKqdm());
|
//TODO 指令id待确认
|
reqData.setOrderid("");
|
reqData.setAppcode(conf.getUserName());
|
reqData.setTimestamp(ContextUtil.getCurTimeMillis());
|
List<Object> list = (List<Object>)data;
|
reqData.setDatalength(list.size());
|
//数据进行SM4加密
|
reqData.setData(AESUtils.encrypt(jsonData, conf.getPublicKey()));
|
reqData.setOperator("insert");
|
//摘要,数据主体的MD5值
|
reqData.setDigst(MyMD5Util.encrypt(jsonData));
|
//身份签名,对应用码_授权码_站点编码_报文ID_时间戳进行MD5算法签名
|
StringBuffer buffer = new StringBuffer();
|
buffer.append(reqData.getAppcode()).append("_");
|
buffer.append(conf.getPublicKey()).append("_");
|
buffer.append(conf.getKqmc()).append("_");
|
buffer.append(reqData.getId()).append("_");
|
buffer.append(reqData.getTimestamp());
|
reqData.setDigst(MyMD5Util.encrypt(buffer.toString()));
|
|
WhjlRespDto responseDto = Whjl2023HttpClientUtil.postPushData(conf.getApiUrl() + inteId, reqData, conf);
|
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());
|
|
return resd;
|
} catch (Exception e) {
|
log.error(e.getMessage(), e);
|
return new ResponseDto(99, e.getMessage());
|
}
|
}
|
|
/**
|
* 调整数据封装,获取json数据
|
*
|
* @param inteId
|
* @param data
|
* @return
|
* @throws Exception
|
*/
|
private String getJsonData(String inteId, Object data) {
|
return JSON.toJSONString(data);
|
}
|
|
private String getInteId(String inteId) {
|
switch (inteId) {
|
case "1101":
|
return WhjlConstant.API_CODE_JLQYXX;
|
case "1102":
|
return WhjlConstant.API_CODE_JLZDXX;
|
case "1103":
|
return WhjlConstant.API_CODE_JLRYXX;
|
case "1104":
|
return WhjlConstant.API_CODE_FXLYD;
|
case "1105":
|
return WhjlConstant.API_CODE_CFXX;
|
case "1106":
|
return WhjlConstant.API_CODE_AJXX;
|
case "1107":
|
return WhjlConstant.API_CODE_HWXX;
|
case "1108":
|
return WhjlConstant.API_CODE_CCSSDZDA;
|
case "1109":
|
return WhjlConstant.API_CODE_CCSSWHJL;
|
case "1110":
|
return WhjlConstant.API_CODE_CCSSBFJL;
|
case "1111":
|
return WhjlConstant.API_CODE_CCSBXX;
|
case "1112":
|
return WhjlConstant.API_CODE_CCSBWHJL;
|
case "1113":
|
return WhjlConstant.API_CODE_CCSBWXJL;
|
case "1114":
|
return WhjlConstant.API_CODE_CCSBBFJL;
|
case "1201":
|
return WhjlConstant.API_CODE_FSGYSXX;
|
case "1202":
|
return WhjlConstant.API_CODE_FSPPXX;
|
case "1203":
|
return WhjlConstant.API_CODE_FSCPXX;
|
case "1204":
|
return WhjlConstant.API_CODE_KHXX;
|
case "1205":
|
return WhjlConstant.API_CODE_CCJL;
|
case "1206":
|
return WhjlConstant.API_CODE_DDXX;
|
case "1207":
|
return WhjlConstant.API_CODE_HTXX;
|
case "1208":
|
return WhjlConstant.API_CODE_KCTZ;
|
case "1209":
|
return WhjlConstant.API_CODE_KCTZPCXX;
|
case "1210":
|
return WhjlConstant.API_CODE_KCTZCRJL;
|
case "1211":
|
return WhjlConstant.API_CODE_KCPDJL;
|
case "1212":
|
return WhjlConstant.API_CODE_KNZCJL;
|
case "1213":
|
return WhjlConstant.API_CODE_CRKJL;
|
case "1301":
|
return WhjlConstant.API_CODE_ZJJG;
|
case "1302":
|
return WhjlConstant.API_CODE_ZJBG;
|
case "1303":
|
return WhjlConstant.API_CODE_LQJCJL;
|
case "1304":
|
return WhjlConstant.API_CODE_NHJL;
|
case "1401":
|
return WhjlConstant.API_CODE_DYQY;
|
case "1402":
|
return WhjlConstant.API_CODE_DYXY;
|
case "1403":
|
return WhjlConstant.API_CODE_DYNL;
|
case "1404":
|
return WhjlConstant.API_CODE_DYYJ;
|
case "1405":
|
return WhjlConstant.API_CODE_SCJGDD;
|
case "1406":
|
return WhjlConstant.API_CODE_YSLX;
|
case "1407":
|
return WhjlConstant.API_CODE_YJDD;
|
default:
|
return inteId;
|
}
|
}
|
}
|