通过尝试ftp连接将二维码文件下装到装置中

This commit is contained in:
caozehui
2025-07-01 08:46:01 +08:00
parent dff4b556eb
commit a5791ef76b

View File

@@ -73,6 +73,8 @@ import com.njcn.web.factory.PageFactory;
import io.netty.channel.Channel; import io.netty.channel.Channel;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.poi.xwpf.usermodel.*; import org.apache.poi.xwpf.usermodel.*;
import org.docx4j.jaxb.Context; import org.docx4j.jaxb.Context;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage; import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
@@ -139,6 +141,21 @@ public class PqReportServiceImpl extends ServiceImpl<PqReportMapper, PqReport> i
@Value("${qr.dev.port}") @Value("${qr.dev.port}")
private Integer devPort; private Integer devPort;
@Value("${qr.dev.path}")
private String devPath;
@Value("${qr.gcDev.name}")
private String gcDevName;
@Value("${qr.gcDev.password}")
private String gcDevPsd;
@Value("${qr.gcDev.port}")
private Integer gcDevPort;
@Value("${qr.gcDev.path}")
private String gcDevPath;
private final IPqDevService iPqDevService; private final IPqDevService iPqDevService;
private final PqDevMapper pqDevMapper; private final PqDevMapper pqDevMapper;
@@ -616,6 +633,54 @@ public class PqReportServiceImpl extends ServiceImpl<PqReportMapper, PqReport> i
}); });
} }
/**
* 测试FTP连接
*
* @param host FTP服务器地址
* @param port FTP端口
* @param username 用户名
* @param password 密码
* @return 连接是否成功
*/
public static boolean testFTPConnection(String host, int port, String username, String password) {
FTPClient ftpClient = new FTPClient();
try {
// 连接FTP服务器
ftpClient.connect(host, port);
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.err.println("FTP服务器拒绝连接回复代码: " + replyCode);
return false;
}
// 登录FTP服务器
boolean loginSuccess = ftpClient.login(username, password);
if (!loginSuccess) {
System.err.println("FTP登录失败请检查用户名和密码");
return false;
}
// 设置传输模式为被动模式
//ftpClient.enterLocalPassiveMode();
// 设置文件传输类型为二进制
//ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
System.out.println("FTP连接测试成功!");
return true;
} catch (IOException e) {
System.err.println("FTP连接测试失败: " + e.getMessage());
return false;
} finally {
try {
if (ftpClient.isConnected()) {
ftpClient.logout();
ftpClient.disconnect();
}
} catch (IOException e) {
System.err.println("关闭FTP连接时出错: " + e.getMessage());
}
}
}
/** /**
* 处理检测报告上传云服务器并生成二维码下装到装置 * 处理检测报告上传云服务器并生成二维码下装到装置
@@ -646,16 +711,27 @@ public class PqReportServiceImpl extends ServiceImpl<PqReportMapper, PqReport> i
byte[] finalBinData = ImageConverter.convertToBinFormat(bufferedImage); byte[] finalBinData = ImageConverter.convertToBinFormat(bufferedImage);
String base64String = Base64.getEncoder().encodeToString(finalBinData); String base64String = Base64.getEncoder().encodeToString(finalBinData);
// 测试ftp是否连接成功
// 组装设备通讯模块的参数 // 组装设备通讯模块的参数
SocketMsg<String> sendFileMsg = new SocketMsg<>(); SocketMsg<String> sendFileMsg = new SocketMsg<>();
sendFileMsg.setOperateCode(SourceOperateCodeEnum.FTP_SEND_01.getValue()); sendFileMsg.setOperateCode(SourceOperateCodeEnum.FTP_SEND_01.getValue());
sendFileMsg.setRequestId(SourceOperateCodeEnum.FTP_SEND_01.getValue()); sendFileMsg.setRequestId(SourceOperateCodeEnum.FTP_SEND_01.getValue());
// 组装业务数据 // 组装业务数据
JSONObject data = new JSONObject(); JSONObject data = new JSONObject();
data.set("name", devName); if (testFTPConnection(cloudUrl, devPort, devName, devPsd)) {
data.set("password", devPsd); data.set("name", devName);
data.set("port", devPort); data.set("password", devPsd);
data.set("path", "ftp://" + devIp + "/etc/qrc.bin"); data.set("port", devPort);
data.set("path", "ftp://" + devIp + devPath);
} else {
data.set("name", gcDevName);
data.set("password", gcDevPsd);
data.set("port", gcDevPort);
data.set("path", "ftp://" + devIp + gcDevPath);
}
data.set("file", base64String); data.set("file", base64String);
sendFileMsg.setData(data.toString()); sendFileMsg.setData(data.toString());
String msg = JSON.toJSONString(sendFileMsg); String msg = JSON.toJSONString(sendFileMsg);