diff --git a/tagApi-common/src/main/java/hw/tagApi/common/config/HttpClientConfig.java b/tagApi-common/src/main/java/hw/tagApi/common/config/HttpClientConfig.java new file mode 100644 index 0000000..57bf13d --- /dev/null +++ b/tagApi-common/src/main/java/hw/tagApi/common/config/HttpClientConfig.java @@ -0,0 +1,80 @@ +package hw.tagApi.common.config; + +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; +import org.apache.http.impl.conn.SystemDefaultRoutePlanner; +import org.apache.http.impl.conn.DefaultProxyRoutePlanner; +import org.apache.http.HttpHost; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.conn.routing.HttpRoutePlanner; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.net.ProxySelector; + +/** + * HttpClient配置类 + * + * @author Yinq + * @date 2025-04-15 + */ +@Configuration +public class HttpClientConfig { + + @Value("${http.client.connect-timeout:30000}") + private int connectTimeout; + + @Value("${http.client.socket-timeout:30000}") + private int socketTimeout; + + @Value("${http.client.connection-request-timeout:30000}") + private int connectionRequestTimeout; + + @Value("${http.client.max-total:200}") + private int maxTotal; + + @Value("${http.client.default-max-per-route:20}") + private int defaultMaxPerRoute; + + @Value("${http.client.proxy-host:}") + private String proxyHost; + + @Value("${http.client.proxy-port:0}") + private int proxyPort; + + /** + * 配置HttpClient + */ + @Bean + public CloseableHttpClient httpClient() { + // 创建连接池管理器 + PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(); + connectionManager.setMaxTotal(maxTotal); + connectionManager.setDefaultMaxPerRoute(defaultMaxPerRoute); + + // 配置请求参数 + RequestConfig requestConfig = RequestConfig.custom() + .setConnectTimeout(connectTimeout) + .setSocketTimeout(socketTimeout) + .setConnectionRequestTimeout(connectionRequestTimeout) + .build(); + + // 配置代理(如果需要) + HttpRoutePlanner routePlanner = null; + if (proxyHost != null && !proxyHost.isEmpty() && proxyPort > 0) { + HttpHost proxy = new HttpHost(proxyHost, proxyPort); + routePlanner = new DefaultProxyRoutePlanner(proxy); + } else { + routePlanner = new SystemDefaultRoutePlanner(ProxySelector.getDefault()); + } + + // 创建HttpClient + return HttpClients.custom() + .setConnectionManager(connectionManager) + .setDefaultRequestConfig(requestConfig) + .setRoutePlanner(routePlanner) + .build(); + } +} \ No newline at end of file diff --git a/tagApi-service/src/main/java/hw/tagApi/service/constant/ApiConstants.java b/tagApi-service/src/main/java/hw/tagApi/service/constant/ApiConstants.java index 5d401a7..598b51e 100644 --- a/tagApi-service/src/main/java/hw/tagApi/service/constant/ApiConstants.java +++ b/tagApi-service/src/main/java/hw/tagApi/service/constant/ApiConstants.java @@ -26,45 +26,9 @@ public class ApiConstants { */ public static final String DATA_EXPORT = "30"; - /** - * 导入中 - */ - public static final String IMPORTING = "导入中"; - /** - * 系统错误 - */ - public static final String SYSTEM_ERROR = "系统错误"; - - /** - * 搜索中 - */ - public static final String SEARCHING = "搜索中"; - /** - * 搜索超时 - */ - public static final String SEARCH_TIMEOUT = "搜索超时"; - - /** - * 导出中 - */ - public static final String EXPORTING = "导出中"; - - - public static final String SUCCESS = "SUCCESS"; - public static final String FAILED = "FAILED"; - - public static class ImportStatus { - public static final String IMPORT_SUCCESS = "IMPORT_SUCCESS"; - public static final String IMPORT_FAILED = "IMPORT_FAILED"; - } - - public static class ExportStatus { - public static final String EXPORT_SUCCESS = "EXPORT_SUCCESS"; - public static final String EXPORT_FAILED = "EXPORT_FAILED"; - } - - public static class SearchStatus { - public static final String SEARCH_SUCCESS = "SEARCH_SUCCESS"; - public static final String NO_RECORD = "NO_RECORD"; - } + /** 导入状态 */ + public static final String IMPORT_STATUS = "导入状态"; + public static final String DESCRIPTION = "情况说明"; + public static final String STATUS_IMPORTING = "导入中"; + public static final String STATUS_SYSTEM_ERROR = "系统错误"; } \ No newline at end of file diff --git a/tagApi-service/src/main/java/hw/tagApi/service/domain/ApiResponse.java b/tagApi-service/src/main/java/hw/tagApi/service/domain/ApiResponse.java new file mode 100644 index 0000000..c641d89 --- /dev/null +++ b/tagApi-service/src/main/java/hw/tagApi/service/domain/ApiResponse.java @@ -0,0 +1,47 @@ +package hw.tagApi.service.domain; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.List; + +/** + * API结果对象 + * + * @author Yinq + * @date 2025-04-15 + */ +public class ApiResponse { + + /** 功能代码 */ + @JsonProperty("CASE") + private String caseCode; + + /** 结果内容 */ + @JsonProperty("RESULT") + private List result; + + public String getCaseCode() { + return caseCode; + } + + public void setCaseCode(String caseCode) { + this.caseCode = caseCode; + } + + public List getResult() { + return result; + } + + public void setResult(List result) { + this.result = result; + } + + @Override + public String toString() { + return "ApiResponse{" + + "CASE='" + caseCode + '\'' + + ", RESULT=" + result + + '}'; + } +} \ No newline at end of file diff --git a/tagApi-service/src/main/java/hw/tagApi/service/mapper/HwTagRecordMapper.java b/tagApi-service/src/main/java/hw/tagApi/service/mapper/HwTagRecordMapper.java index 285a59b..ba4c1b0 100644 --- a/tagApi-service/src/main/java/hw/tagApi/service/mapper/HwTagRecordMapper.java +++ b/tagApi-service/src/main/java/hw/tagApi/service/mapper/HwTagRecordMapper.java @@ -66,4 +66,12 @@ public interface HwTagRecordMapper * @return 结果 */ public int deleteHwTagRecordByRIds(Long[] rIds); + + /** + * 根据TID修改标签记录 + * + * @param record 标签记录 + * @return 结果 + */ + public int updateHwTagRecordByTID(HwTagRecord record); } diff --git a/tagApi-service/src/main/java/hw/tagApi/service/service/IKDocsService.java b/tagApi-service/src/main/java/hw/tagApi/service/service/IKDocsService.java index c32a575..d09cd62 100644 --- a/tagApi-service/src/main/java/hw/tagApi/service/service/IKDocsService.java +++ b/tagApi-service/src/main/java/hw/tagApi/service/service/IKDocsService.java @@ -1,5 +1,9 @@ package hw.tagApi.service.service; +import hw.tagApi.service.domain.ApiContent; + +import java.util.List; + /** * 云文档服务接口 * @@ -16,12 +20,12 @@ public interface IKDocsService { String getSystemStatus(); /** - * 导入数据 + * 导入数据List * - * @param data 待导入的数据 + * @param content 待导入的数据 * @return 导入结果 */ - String importData(String data); + List importDataList(List content); /** * 删除数据 diff --git a/tagApi-service/src/main/java/hw/tagApi/service/utils/httpClientUtils.java b/tagApi-service/src/main/java/hw/tagApi/service/utils/httpClientUtils.java new file mode 100644 index 0000000..c98330e --- /dev/null +++ b/tagApi-service/src/main/java/hw/tagApi/service/utils/httpClientUtils.java @@ -0,0 +1,73 @@ +package hw.tagApi.service.utils; + +import org.apache.http.HttpEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + +public class httpClientUtils { + private static final Logger log = LoggerFactory.getLogger(httpClientUtils.class); + + /** + * 创建并配置HttpGet请求 + * @param url 请求URL + * @return 配置好的HttpGet请求对象 + */ + public static HttpGet createHttpGetRequest(String url) { + HttpGet httpGet = new HttpGet(url); + // 设置请求头 + httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"); + httpGet.setHeader("Accept", "*/*"); + httpGet.setHeader("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8"); + httpGet.setHeader("Connection", "keep-alive"); + return httpGet; + } + + /** + * 从URL获取字节数组 + * @param httpClient HTTP客户端 + * @param url 请求URL + * @return 字节数组,如果发生错误则返回null + */ + public static byte[] getByteArrayFromUrl(CloseableHttpClient httpClient, String url) { + log.info("开始从URL下载文件: {}", url); + + HttpGet httpGet = createHttpGetRequest(url); + + try (CloseableHttpResponse response = httpClient.execute(httpGet)) { + // 获取响应状态码 + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode != 200) { + log.error("获取文件失败,响应码: {}", statusCode); + return null; + } + + // 获取响应实体 + HttpEntity entity = response.getEntity(); + if (entity == null) { + log.error("无法获取响应实体"); + return null; + } + + // 将响应实体转换为字节数组 + byte[] fileData = EntityUtils.toByteArray(entity); + + if (fileData.length == 0) { + log.error("获取到的文件为空"); + return null; + } + + log.info("成功获取文件,大小: {} 字节", fileData.length); + return fileData; + + } catch (IOException e) { + log.error("获取文件时发生错误: {}", e.getMessage(), e); + return null; + } + } +} diff --git a/tagApi-service/src/main/resources/mapper/service/HwTagRecordMapper.xml b/tagApi-service/src/main/resources/mapper/service/HwTagRecordMapper.xml index 5663fd4..c112805 100644 --- a/tagApi-service/src/main/resources/mapper/service/HwTagRecordMapper.xml +++ b/tagApi-service/src/main/resources/mapper/service/HwTagRecordMapper.xml @@ -134,6 +134,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where r_id = #{rId} + + update hw_tag_record + + epc = #{epc}, + password = #{password}, + order_code = #{orderCode}, + batch_number = #{batchNumber}, + tag_sequence = #{tagSequence}, + total_quantity = #{totalQuantity}, + tag_batch = #{tagBatch}, + model_code = #{modelCode}, + processing_time = #{processingTime}, + operator_id = #{operatorId}, + del_flag = #{delFlag}, + fields_1 = #{fields1}, + fields_2 = #{fields2}, + fields_3 = #{fields3}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where t_id = #{tId} + + delete from hw_tag_record where r_id = #{rId}