fix:利盟服务返回值中的数据增加使用泛型进行接收
This commit is contained in:
parent
fc1e02264d
commit
ed61a25ac4
|
@ -1,5 +1,6 @@
|
||||||
package com.dpkj.common.dto;
|
package com.dpkj.common.dto;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
@ -18,7 +19,7 @@ import java.io.Serializable;
|
||||||
@ToString
|
@ToString
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class LexMarkResultDTO implements Serializable {
|
public class LexMarkResultDTO <T> implements Serializable {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -46,21 +47,27 @@ public class LexMarkResultDTO implements Serializable {
|
||||||
*/
|
*/
|
||||||
private String cmdName;
|
private String cmdName;
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回参数
|
|
||||||
*/
|
|
||||||
private Param param;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 详情描述
|
* 详情描述
|
||||||
*/
|
*/
|
||||||
private String desc;
|
private String desc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 利盟服务返回的参数
|
||||||
|
*/
|
||||||
|
@JsonIgnore
|
||||||
|
private String param;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实际返回的接受的参数对象(通过param转换过后的)
|
||||||
|
*/
|
||||||
|
private T data;
|
||||||
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public static class Param { // 不同的actionName导致返回值不同,需要的参数可以加上
|
public static class Param {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 请求ID
|
* 请求ID
|
||||||
|
@ -102,5 +109,7 @@ public class LexMarkResultDTO implements Serializable {
|
||||||
*/
|
*/
|
||||||
private String desc;
|
private String desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
package com.dpkj.common.utils;
|
package com.dpkj.common.utils;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.dpkj.common.dto.LexMarkDTO;
|
import com.dpkj.common.dto.LexMarkDTO;
|
||||||
import com.dpkj.common.dto.LexMarkResultDTO;
|
import com.dpkj.common.dto.LexMarkResultDTO;
|
||||||
import com.dpkj.common.exception.RRException;
|
import com.dpkj.common.exception.RRException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.thymeleaf.util.StringUtils;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
|
@ -35,10 +36,11 @@ public class ThirdService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 利盟台式机-立体机 接口请求
|
* 利盟台式机-立体机 接口请求
|
||||||
|
*
|
||||||
* @param lexMarkDTO 请求DTO
|
* @param lexMarkDTO 请求DTO
|
||||||
* @return result
|
* @return result
|
||||||
*/
|
*/
|
||||||
public LexMarkResultDTO callDevice(LexMarkDTO lexMarkDTO) {
|
public <T> LexMarkResultDTO<T> callDevice(LexMarkDTO lexMarkDTO, Class<T> clazz) {
|
||||||
try {
|
try {
|
||||||
URL url = new URL(lexMarkServiceIp + ":" + lexMarkServicePort + "/CallDevice");
|
URL url = new URL(lexMarkServiceIp + ":" + lexMarkServicePort + "/CallDevice");
|
||||||
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||||
|
@ -55,7 +57,7 @@ public class ThirdService {
|
||||||
}
|
}
|
||||||
|
|
||||||
int responseCode = connection.getResponseCode();
|
int responseCode = connection.getResponseCode();
|
||||||
if (responseCode!= HttpURLConnection.HTTP_OK) {
|
if (responseCode != HttpURLConnection.HTTP_OK) {
|
||||||
log.error("利盟服务请求失败,响应码:{},请求参数:{}", responseCode, lexMarkDTO);
|
log.error("利盟服务请求失败,响应码:{},请求参数:{}", responseCode, lexMarkDTO);
|
||||||
throw new RRException("利盟服务请求失败,响应码:" + responseCode);
|
throw new RRException("利盟服务请求失败,响应码:" + responseCode);
|
||||||
}
|
}
|
||||||
|
@ -63,27 +65,50 @@ public class ThirdService {
|
||||||
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
|
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
|
||||||
String inputLine;
|
String inputLine;
|
||||||
StringBuilder response = new StringBuilder();
|
StringBuilder response = new StringBuilder();
|
||||||
while ((inputLine = in.readLine())!= null) {
|
while ((inputLine = in.readLine()) != null) {
|
||||||
response.append(inputLine);
|
response.append(inputLine);
|
||||||
}
|
}
|
||||||
in.close();
|
in.close();
|
||||||
|
|
||||||
// 将响应JSON字符串转换为LexMarkResultDTO对象
|
// 将响应JSON字符串转换为LexMarkResultDTO对象
|
||||||
LexMarkResultDTO lexMarkResultDTO = JSON.parseObject(response.toString(), LexMarkResultDTO.class);
|
LexMarkResultDTO<T> lexMarkResultDTO = JSON.parseObject(response.toString(), LexMarkResultDTO.class);
|
||||||
if( lexMarkResultDTO.getResult() != 0){
|
if (lexMarkResultDTO.getResult() != 0) {
|
||||||
log.error("利盟服务请求出错:{}", lexMarkResultDTO);
|
log.error("利盟服务请求出错:{}", lexMarkResultDTO);
|
||||||
throw new RRException(lexMarkResultDTO.toString());
|
throw new RRException(lexMarkResultDTO.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
return lexMarkResultDTO;
|
// 实例化param位data
|
||||||
|
String param = lexMarkResultDTO.getParam();
|
||||||
|
if (!StringUtils.isEmpty(param)) {
|
||||||
|
try {
|
||||||
|
T t = JSON.parseObject(param, clazz);
|
||||||
|
lexMarkResultDTO.setData(t);
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
|
log.error("类型转换失败");
|
||||||
|
throw new RRException("转换param位data时,类型与实际类型不匹配");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return lexMarkResultDTO;
|
||||||
|
} catch (Exception e) {
|
||||||
log.error("利盟服务请求失败:{}", lexMarkDTO, e);
|
log.error("利盟服务请求失败:{}", lexMarkDTO, e);
|
||||||
if ( e instanceof RRException ){
|
if (e instanceof RRException) {
|
||||||
throw new RRException(((RRException) e).getCode(), e.getMessage());
|
throw new RRException(((RRException) e).getCode(), e.getMessage());
|
||||||
}
|
}
|
||||||
throw new RRException("利盟服务请求失败");
|
throw new RRException("利盟服务请求失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据对象的data采用JSONObject进行接收
|
||||||
|
*
|
||||||
|
* @param lexMarkDTO 请求参数
|
||||||
|
* @return result
|
||||||
|
*/
|
||||||
|
public LexMarkResultDTO<JSONObject> callDevice(LexMarkDTO lexMarkDTO) {
|
||||||
|
return callDevice(lexMarkDTO, JSONObject.class);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ public class RegisterServiceImpl implements PrintService {
|
||||||
private ThirdService thirdService;
|
private ThirdService thirdService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LexMarkResultDTO printImage(JSONObject data, String template, int width, int height, String saveDir) {
|
public LexMarkResultDTO<LexMarkResultDTO.Param> printImage(JSONObject data, String template, int width, int height, String saveDir) {
|
||||||
StringBuilder filePath = new StringBuilder(saveDir);
|
StringBuilder filePath = new StringBuilder(saveDir);
|
||||||
// 校验是否选中了模板,如果没选中模板的话则不需要另外生成了
|
// 校验是否选中了模板,如果没选中模板的话则不需要另外生成了
|
||||||
if ( !StringUtils.isEmpty(template) && !StringUtils.isEmpty(saveDir)){
|
if ( !StringUtils.isEmpty(template) && !StringUtils.isEmpty(saveDir)){
|
||||||
|
@ -48,7 +48,7 @@ public class RegisterServiceImpl implements PrintService {
|
||||||
param.put("mediaCtrl", 1);
|
param.put("mediaCtrl", 1);
|
||||||
param.put("fields", "LOGO=" + filePath);
|
param.put("fields", "LOGO=" + filePath);
|
||||||
lexMarkDTO.setParam(param.toJSONString());
|
lexMarkDTO.setParam(param.toJSONString());
|
||||||
return thirdService.callDevice(lexMarkDTO);
|
return thirdService.callDevice(lexMarkDTO, LexMarkResultDTO.Param.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue