From 8a3ffd71470ced83f59f952f4f0edc2c37946c8d Mon Sep 17 00:00:00 2001 From: wang Date: Sat, 27 Jun 2026 17:26:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/FtpProcessedFile.java | 84 +++++++++++++++++++ .../mapper/FtpProcessedFileMapper.java | 48 +++++++++++ .../mapper/FtpProcessedFileMapper.xml | 75 +++++++++++++++++ 3 files changed, 207 insertions(+) create mode 100644 src/main/java/com/threecloud/dataserviceyy/entity/FtpProcessedFile.java create mode 100644 src/main/java/com/threecloud/dataserviceyy/mapper/FtpProcessedFileMapper.java create mode 100644 src/main/resources/mapper/FtpProcessedFileMapper.xml diff --git a/src/main/java/com/threecloud/dataserviceyy/entity/FtpProcessedFile.java b/src/main/java/com/threecloud/dataserviceyy/entity/FtpProcessedFile.java new file mode 100644 index 0000000..e78c2b8 --- /dev/null +++ b/src/main/java/com/threecloud/dataserviceyy/entity/FtpProcessedFile.java @@ -0,0 +1,84 @@ +package com.threecloud.dataserviceyy.entity; + +import java.util.Date; + +/** + * FTP已处理文件记录表 + * 对应 mid_voice.mid_ftp_processed_file + * 用于记录已处理过的FTP txt文件,避免重复处理 + */ +public class FtpProcessedFile { + + /** 自增ID主键 */ + private Long id; + + /** 地市编码 */ + private String cityCode; + + /** 地市名称 */ + private String cityName; + + /** FTP文件名 */ + private String fileName; + + /** 文件大小(字节) */ + private Long fileSize; + + /** 处理状态:0失败,1成功 */ + private String processStatus; + + /** 记录总数 */ + private Integer recordCount; + + /** 成功入库数 */ + private Integer successCount; + + /** 失败数 */ + private Integer failCount; + + /** 处理耗时(毫秒) */ + private Long processTime; + + /** 错误信息 */ + private String errorMsg; + + /** 创建时间 */ + private Date createTime; + + // Getters and Setters + public Long getId() { return id; } + public void setId(Long id) { this.id = id; } + + public String getCityCode() { return cityCode; } + public void setCityCode(String cityCode) { this.cityCode = cityCode; } + + public String getCityName() { return cityName; } + public void setCityName(String cityName) { this.cityName = cityName; } + + public String getFileName() { return fileName; } + public void setFileName(String fileName) { this.fileName = fileName; } + + public Long getFileSize() { return fileSize; } + public void setFileSize(Long fileSize) { this.fileSize = fileSize; } + + public String getProcessStatus() { return processStatus; } + public void setProcessStatus(String processStatus) { this.processStatus = processStatus; } + + public Integer getRecordCount() { return recordCount; } + public void setRecordCount(Integer recordCount) { this.recordCount = recordCount; } + + public Integer getSuccessCount() { return successCount; } + public void setSuccessCount(Integer successCount) { this.successCount = successCount; } + + public Integer getFailCount() { return failCount; } + public void setFailCount(Integer failCount) { this.failCount = failCount; } + + public Long getProcessTime() { return processTime; } + public void setProcessTime(Long processTime) { this.processTime = processTime; } + + public String getErrorMsg() { return errorMsg; } + public void setErrorMsg(String errorMsg) { this.errorMsg = errorMsg; } + + public Date getCreateTime() { return createTime; } + public void setCreateTime(Date createTime) { this.createTime = createTime; } +} diff --git a/src/main/java/com/threecloud/dataserviceyy/mapper/FtpProcessedFileMapper.java b/src/main/java/com/threecloud/dataserviceyy/mapper/FtpProcessedFileMapper.java new file mode 100644 index 0000000..952afbd --- /dev/null +++ b/src/main/java/com/threecloud/dataserviceyy/mapper/FtpProcessedFileMapper.java @@ -0,0 +1,48 @@ +package com.threecloud.dataserviceyy.mapper; + +import com.threecloud.dataserviceyy.entity.FtpProcessedFile; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * FTP已处理文件记录Mapper + * 用于记录已处理过的FTP txt文件,避免重复处理 + */ +@Mapper +public interface FtpProcessedFileMapper { + + /** + * 插入处理记录 + */ + int insert(FtpProcessedFile record); + + /** + * 根据地市编码和文件名查询(判断是否已处理) + */ + FtpProcessedFile selectByCityAndFileName(@Param("cityCode") String cityCode, + @Param("fileName") String fileName); + + /** + * 查询指定地市下所有已处理的文件名列表 + */ + List selectProcessedFileNamesByCity(@Param("cityCode") String cityCode); + + /** + * 批量查询指定地市下多个文件的处理状态 + */ + List selectByCityAndFileNames(@Param("cityCode") String cityCode, + @Param("fileNames") List fileNames); + + /** + * 根据ID更新处理结果 + */ + int updateById(FtpProcessedFile record); + + /** + * 删除指定时间之前的记录(清理历史) + */ + int deleteBeforeTime(@Param("cityCode") String cityCode, + @Param("beforeTime") String beforeTime); +} diff --git a/src/main/resources/mapper/FtpProcessedFileMapper.xml b/src/main/resources/mapper/FtpProcessedFileMapper.xml new file mode 100644 index 0000000..0823425 --- /dev/null +++ b/src/main/resources/mapper/FtpProcessedFileMapper.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + INSERT INTO mid_ftp_processed_file ( + city_code, city_name, file_name, file_size, process_status, + record_count, success_count, fail_count, process_time, error_msg, create_time + ) VALUES ( + #{cityCode}, #{cityName}, #{fileName}, #{fileSize}, #{processStatus}, + #{recordCount}, #{successCount}, #{failCount}, #{processTime}, #{errorMsg}, NOW() + ) + + + + + + + + + + + + + + UPDATE mid_ftp_processed_file + SET process_status = #{processStatus}, + record_count = #{recordCount}, + success_count = #{successCount}, + fail_count = #{failCount}, + process_time = #{processTime}, + error_msg = #{errorMsg} + WHERE id = #{id} + + + + + DELETE FROM mid_ftp_processed_file + WHERE city_code = #{cityCode} + AND create_time < TO_TIMESTAMP(#{beforeTime}, 'YYYY-MM-DD HH24:MI:SS') + + +