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;
|
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.*;
|
import com.fzzy.api.view.repository.*;
|
import com.fzzy.push.whhpjl.dto.WhjlReqDto;
|
import com.fzzy.push.whhpjl.dto.WhjlRespDto;
|
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.*;
|
|
/**
|
* 武汉军粮省平台-上传数据服务类
|
*
|
* @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;
|
@Autowired
|
private Whjl2023HttpClientUtil whjl2023HttpClientUtil;
|
|
@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(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();
|
//报文标识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());
|
|
return resd;
|
} catch (Exception e) {
|
log.error(e.getMessage(), e);
|
return new ResponseDto(99, e.getMessage());
|
}
|
}
|
|
/**
|
* 调整数据封装成list,获取json数据
|
*
|
* @param data
|
* @return
|
* @throws Exception
|
*/
|
private String getJsonData(Object data) {
|
List<Object> list = new ArrayList<>();
|
list.add(data);
|
return JSON.toJSONString(list);
|
}
|
|
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_YGXX;
|
case "1107":
|
return WhjlConstant.API_CODE_AJXX;
|
case "1108":
|
return WhjlConstant.API_CODE_HWXX;
|
case "1109":
|
return WhjlConstant.API_CODE_CCSSDZDA;
|
case "1110":
|
return WhjlConstant.API_CODE_CCSSWHJL;
|
case "1111":
|
return WhjlConstant.API_CODE_CCSSBFJL;
|
case "1112":
|
return WhjlConstant.API_CODE_CCSBXX;
|
case "1113":
|
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;
|
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_DDXX;
|
case "1206":
|
return WhjlConstant.API_CODE_HTXX;
|
case "1207":
|
return WhjlConstant.API_CODE_KCTZ;
|
case "1208":
|
return WhjlConstant.API_CODE_KCTZPCXX;
|
case "1209":
|
return WhjlConstant.API_CODE_KCTZCRJL;
|
case "1210":
|
return WhjlConstant.API_CODE_KCPDJL;
|
case "1211":
|
return WhjlConstant.API_CODE_KNZCJL;
|
case "1212":
|
return WhjlConstant.API_CODE_CRKJL;
|
case "1213":
|
return WhjlConstant.API_CODE_ZJJG;
|
case "1214":
|
return WhjlConstant.API_CODE_ZJJG;
|
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 "1301":
|
return WhjlConstant.API_CODE_WSDJCJL;
|
case "1302":
|
return WhjlConstant.API_CODE_YSHJJCJL;
|
case "1303":
|
return WhjlConstant.API_CODE_WSDGJJL;
|
case "1304":
|
return WhjlConstant.API_CODE_NHJL;
|
case "1305":
|
return WhjlConstant.API_CODE_DDPSRW;
|
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;
|
}
|
}
|
}
|