From 15f0050c8458850f0f0851296933156f1ecd2d47 Mon Sep 17 00:00:00 2001 From: yinq Date: Tue, 22 Apr 2025 17:08:54 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=B8=8B=E8=BD=BD=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tagApi-admin/src/main/resources/logback.xml | 12 +- .../controller/KDocsApiController.java | 13 ++ .../hw/tagApi/service/domain/HwTagRecord.java | 21 ++ .../service/impl/KDocsServiceImpl.java | 40 ++-- .../hw/tagApi/service/utils/TagExcelUtil.java | 12 +- .../mapper/service/HwTagRecordMapper.xml | 180 ++++++++++++------ 6 files changed, 197 insertions(+), 81 deletions(-) diff --git a/tagApi-admin/src/main/resources/logback.xml b/tagApi-admin/src/main/resources/logback.xml index 59c1ffb..6d49de1 100644 --- a/tagApi-admin/src/main/resources/logback.xml +++ b/tagApi-admin/src/main/resources/logback.xml @@ -19,8 +19,8 @@ ${log.path}/sys-info.%d{yyyy-MM-dd}.log - - 60 + + 30 ${log.pattern} @@ -41,8 +41,8 @@ ${log.path}/sys-error.%d{yyyy-MM-dd}.log - - 60 + + 30 ${log.pattern} @@ -63,8 +63,8 @@ ${log.path}/sys-user.%d{yyyy-MM-dd}.log - - 60 + + 30 ${log.pattern} diff --git a/tagApi-service/src/main/java/hw/tagApi/service/controller/KDocsApiController.java b/tagApi-service/src/main/java/hw/tagApi/service/controller/KDocsApiController.java index a7c4ad3..27637aa 100644 --- a/tagApi-service/src/main/java/hw/tagApi/service/controller/KDocsApiController.java +++ b/tagApi-service/src/main/java/hw/tagApi/service/controller/KDocsApiController.java @@ -15,12 +15,16 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.ServletException; import javax.servlet.http.HttpServletResponse; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.OutputStream; import java.net.URLEncoder; +import java.time.Instant; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.List; /** @@ -124,6 +128,15 @@ public class KDocsApiController extends BaseController { } SysAttachInfo attachInfo = attachInfoList.get(0); + Instant now = Instant.now(); + Instant expirationTime = attachInfo.getExpirationTime().toInstant(); + if (now.isAfter(expirationTime)) { + DateTimeFormatter formatter = DateTimeFormatter + .ofPattern("yyyy-MM-dd HH:mm:ss") + .withZone(ZoneId.systemDefault()); + String formattedTime = formatter.format(expirationTime); + throw new ServletException("此文件已过期(有效期至: " + formattedTime + ")"); + } // 检查文件是否存在 File file = new File(attachInfo.getAttachAddress()); if (!file.exists()) { diff --git a/tagApi-service/src/main/java/hw/tagApi/service/domain/HwTagRecord.java b/tagApi-service/src/main/java/hw/tagApi/service/domain/HwTagRecord.java index 90c170e..6b85955 100644 --- a/tagApi-service/src/main/java/hw/tagApi/service/domain/HwTagRecord.java +++ b/tagApi-service/src/main/java/hw/tagApi/service/domain/HwTagRecord.java @@ -69,6 +69,27 @@ public class HwTagRecord extends BaseEntity @Excel(name = "生产人员编号", type = Type.EXPORT) private String operatorId; + /** 测试结果 */ +// @Excel(name = "测试结果") + private String testResult; + + /** 测试值 */ +// @Excel(name = "测试值") + private String testValue; + + /** 参考值 */ +// @Excel(name = "参考值") + private String referenceValue; + + /** 测试时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// @Excel(name = "测试时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date testingTime; + + /** 导入文件名 */ +// @Excel(name = "导入文件名") + private String fileName; + /** 数据状态标记 */ private Integer delFlag; diff --git a/tagApi-service/src/main/java/hw/tagApi/service/service/impl/KDocsServiceImpl.java b/tagApi-service/src/main/java/hw/tagApi/service/service/impl/KDocsServiceImpl.java index 2e645f2..0e19888 100644 --- a/tagApi-service/src/main/java/hw/tagApi/service/service/impl/KDocsServiceImpl.java +++ b/tagApi-service/src/main/java/hw/tagApi/service/service/impl/KDocsServiceImpl.java @@ -5,16 +5,13 @@ import hw.tagApi.service.service.IHwTagRecordService; import hw.tagApi.service.service.IKDocsService; import hw.tagApi.service.utils.TagExcelUtil; import hw.tagApi.service.utils.httpClientUtils; -import hw.tagApi.system.service.ISysAttachInfoService; +import java.time.Duration; import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; import java.io.*; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.*; import hw.tagApi.service.constant.ApiConstants; @@ -25,7 +22,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import hw.tagApi.service.domain.ApiResponse; import hw.tagApi.service.domain.ApiContent; import org.springframework.util.StringUtils; -import java.util.Collections; /** * 云文档服务实现类 @@ -68,6 +64,7 @@ public class KDocsServiceImpl implements IKDocsService { executorService.execute(() -> { List resList = new ArrayList<>(); for (ApiContent apiContent : contentList) { + long startTime = System.currentTimeMillis(); ApiContent resContent = new ApiContent(); resContent.setId(apiContent.getId()); try { @@ -82,7 +79,10 @@ public class KDocsServiceImpl implements IKDocsService { resContent.setFields(errorFields); } resList.add(resContent); + long endTime = System.currentTimeMillis(); + log.info("数据库导入完成 - ID: {}, 耗时: {}ms", apiContent.getId(), (endTime - startTime)); } + // 发送处理结果到回调接口 httpClientUtils.sendResultToCallback(resList, ApiConstants.IN_CALLBACK_URL); }); @@ -150,6 +150,8 @@ public class KDocsServiceImpl implements IKDocsService { Map orderInfo = (Map) excelResult.get("orderInfo"); // 获取标签数据列表 List> tagList = (List>) excelResult.get("tagList"); + // 获取文件名 + String fileName = (String) excelResult.get("fileName"); // 批量处理标签数据 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (Map tagData : tagList) { @@ -165,10 +167,11 @@ public class KDocsServiceImpl implements IKDocsService { record.setTId(tagData.get("TID")); record.setEpc(tagData.get("EPC")); record.setPassword(tagData.get("密码")); - record.setFields1(tagData.get("测试结果")); - record.setFields2(tagData.get("测试值")); - record.setFields3(tagData.get("参考值")); - record.setRemark(tagData.get("测试时间")); + record.setTestResult(tagData.get("测试结果")); + record.setTestValue(tagData.get("测试值")); + record.setReferenceValue(tagData.get("参考值")); + record.setTestingTime(sdf.parse(tagData.get("测试时间"))); + record.setFileName(fileName); // 达到批量大小时执行插入 if ("更新".equals(importMode)) { @@ -395,8 +398,7 @@ public class KDocsServiceImpl implements IKDocsService { log.info("执行数据导出查询 - ID: {}", condition.getId()); long startTime = System.currentTimeMillis(); List records = tagRecordService.selectHwTagRecordList(queryCondition); - long endTime = System.currentTimeMillis(); - log.info("查询完成 - ID: {}, 记录数: {}, 耗时: {}ms", condition.getId(), records.size(), (endTime - startTime)); + Map responseFields = new HashMap<>(); @@ -404,14 +406,22 @@ public class KDocsServiceImpl implements IKDocsService { try { String fileName = String.format("标签数据_%s.xlsx", condition.getId()); String filePath = TagExcelUtil.generateTagExcel(records, fileName); + long endTime = System.currentTimeMillis(); + Duration duration = Duration.ofMillis(endTime - startTime); + long minutes = duration.toMinutes(); + long seconds = duration.minusMinutes(minutes).getSeconds(); + Date futureDate = new Date(endTime + ApiConstants.PASS_TIME); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + log.info("数据库导出完成 - ID: {}, 记录数: {}, 耗时: {}分{}秒", condition.getId(), records.size(), minutes, seconds); responseFields.put("导出状态", "导出成功"); + responseFields.put("情况说明", "耗时: " + minutes + "分" + seconds + "秒"); responseFields.put("文件路径", filePath); - responseFields.put("记录数量", records.size()); + responseFields.put("链接有效期", sdf.format(futureDate)); log.info("导出文件生成成功 - ID: {}, 路径: {}", condition.getId(), filePath); } catch (Exception e) { log.error("生成导出文件失败 - ID: {}", condition.getId(), e); responseFields.put("导出状态", "导出失败"); - responseFields.put("错误信息", "生成导出文件失败: " + e.getMessage()); + responseFields.put("情况说明", "生成导出文件失败: " + e.getMessage()); } } else { responseFields.put("导出状态", "未找到记录"); @@ -425,7 +435,7 @@ public class KDocsServiceImpl implements IKDocsService { response.setId(condition.getId()); Map responseFields = new HashMap<>(); responseFields.put("导出状态", "导出失败"); - responseFields.put("错误信息", "处理导出任务失败: " + e.getMessage()); + responseFields.put("情况说明", "处理导出任务失败: " + e.getMessage()); response.setFields(responseFields); } diff --git a/tagApi-service/src/main/java/hw/tagApi/service/utils/TagExcelUtil.java b/tagApi-service/src/main/java/hw/tagApi/service/utils/TagExcelUtil.java index 12ddcc3..81a1261 100644 --- a/tagApi-service/src/main/java/hw/tagApi/service/utils/TagExcelUtil.java +++ b/tagApi-service/src/main/java/hw/tagApi/service/utils/TagExcelUtil.java @@ -32,7 +32,7 @@ public class TagExcelUtil { * 解析标签数据Excel * * @param is Excel文件输入流 - * @return 解析结果,包含订单信息和标签数据列表 + * @return 解析结果,包含订单信息、标签数据列表和文件名 */ public static Map parseTagExcel(InputStream is) { Map result = new HashMap<>(); @@ -47,6 +47,16 @@ public class TagExcelUtil { List> tagList = parseTagList(sheet); result.put("tagList", tagList); + // 获取文件名 + String fileName = sheet.getSheetName(); + if (fileName == null || fileName.isEmpty()) { + // 如果没有sheet名称,使用默认格式 + fileName = String.format("Lot_%s_%s.xlsx", + orderInfo.get("orderNo"), + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())); + } + result.put("fileName", fileName); + return result; } catch (Exception e) { log.error("解析Excel文件失败", e); diff --git a/tagApi-service/src/main/resources/mapper/service/HwTagRecordMapper.xml b/tagApi-service/src/main/resources/mapper/service/HwTagRecordMapper.xml index d20bbf7..ea6b994 100644 --- a/tagApi-service/src/main/resources/mapper/service/HwTagRecordMapper.xml +++ b/tagApi-service/src/main/resources/mapper/service/HwTagRecordMapper.xml @@ -1,68 +1,105 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - select r_id, t_id, epc, password, order_code, batch_number, tag_sequence, total_quantity, tag_batch, model_code, processing_time, operator_id, del_flag, fields_1, fields_2, fields_3, create_by, create_time, update_by, update_time, remark from hw_tag_record + select r_id, + t_id, + epc, + password, + order_code, + batch_number, + tag_sequence, + total_quantity, + tag_batch, + model_code, + processing_time, + operator_id, + test_result, + test_value, + reference_value, + testing_time, + file_name, + del_flag, + fields_1, + fields_2, + fields_3, + create_by, + create_time, + update_by, + update_time, + remark + from hw_tag_record - + @@ -81,6 +118,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" model_code, processing_time, operator_id, + test_result, + test_value, + reference_value, + testing_time, + file_name, del_flag, fields_1, fields_2, @@ -90,7 +132,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_by, update_time, remark, - + #{rId}, #{tId}, @@ -104,6 +146,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{modelCode}, #{processingTime}, #{operatorId}, + #{testResult}, + #{testValue}, + #{referenceValue}, + #{testingTime}, + #{fileName}, #{delFlag}, #{fields1}, #{fields2}, @@ -113,7 +160,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{updateBy}, #{updateTime}, #{remark}, - + @@ -130,6 +177,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" model_code = #{modelCode}, processing_time = #{processingTime}, operator_id = #{operatorId}, + test_result = #{testResult}, + test_value = #{testValue}, + reference_value = #{referenceValue}, + testing_time = #{testingTime}, + file_name = #{fileName}, del_flag = #{delFlag}, fields_1 = #{fields1}, fields_2 = #{fields2}, @@ -146,6 +198,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update hw_tag_record + t_id = #{tId}, epc = #{epc}, password = #{password}, order_code = #{orderCode}, @@ -156,6 +209,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" model_code = #{modelCode}, processing_time = #{processingTime}, operator_id = #{operatorId}, + test_result = #{testResult}, + test_value = #{testValue}, + reference_value = #{referenceValue}, + testing_time = #{testingTime}, + file_name = #{fileName}, del_flag = #{delFlag}, fields_1 = #{fields1}, fields_2 = #{fields2}, @@ -170,11 +228,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from hw_tag_record where r_id = #{rId} + delete + from hw_tag_record + where r_id = #{rId} - delete from hw_tag_record where r_id in + delete from hw_tag_record where r_id in #{rId} @@ -183,17 +243,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into hw_tag_record ( - r_id, t_id, epc, password, order_code, batch_number, - tag_sequence, total_quantity, tag_batch, model_code, - processing_time, operator_id, fields_1, fields_2, fields_3, - create_by, create_time, update_by, update_time, remark - ) values + r_id, t_id, epc, password, order_code, batch_number, + tag_sequence, total_quantity, tag_batch, model_code, + processing_time, operator_id, fields_1, fields_2, fields_3, + create_by, create_time, update_by, update_time, remark, + test_result,test_value,reference_value,testing_time,file_name + ) values ( - #{item.rId}, #{item.tId}, #{item.epc}, #{item.password}, #{item.orderCode}, #{item.batchNumber}, - #{item.tagSequence}, #{item.totalQuantity}, #{item.tagBatch}, #{item.modelCode}, - #{item.processingTime}, #{item.operatorId}, #{item.fields1}, #{item.fields2}, #{item.fields3}, - #{item.createBy}, sysdate(), #{item.updateBy}, sysdate(), #{item.remark} + #{item.rId}, #{item.tId}, #{item.epc}, #{item.password}, #{item.orderCode}, #{item.batchNumber}, + #{item.tagSequence}, #{item.totalQuantity}, #{item.tagBatch}, #{item.modelCode}, + #{item.processingTime}, #{item.operatorId}, #{item.fields1}, #{item.fields2}, #{item.fields3}, + #{item.createBy}, sysdate(), #{item.updateBy}, sysdate(), #{item.remark}, + #{item.testResult}, #{item.testValue},#{item.referenceValue}, #{item.testingTime},#{item.fileName} )