Browse Source

优化上传

main
wang 3 weeks ago
parent
commit
8a3ffd7147
  1. 84
      src/main/java/com/threecloud/dataserviceyy/entity/FtpProcessedFile.java
  2. 48
      src/main/java/com/threecloud/dataserviceyy/mapper/FtpProcessedFileMapper.java
  3. 75
      src/main/resources/mapper/FtpProcessedFileMapper.xml

84
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; }
}

48
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<String> selectProcessedFileNamesByCity(@Param("cityCode") String cityCode);
/**
* 批量查询指定地市下多个文件的处理状态
*/
List<FtpProcessedFile> selectByCityAndFileNames(@Param("cityCode") String cityCode,
@Param("fileNames") List<String> fileNames);
/**
* 根据ID更新处理结果
*/
int updateById(FtpProcessedFile record);
/**
* 删除指定时间之前的记录清理历史
*/
int deleteBeforeTime(@Param("cityCode") String cityCode,
@Param("beforeTime") String beforeTime);
}

75
src/main/resources/mapper/FtpProcessedFileMapper.xml

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.threecloud.dataserviceyy.mapper.FtpProcessedFileMapper">
<resultMap id="BaseResultMap" type="com.threecloud.dataserviceyy.entity.FtpProcessedFile">
<id column="id" property="id"/>
<result column="city_code" property="cityCode"/>
<result column="city_name" property="cityName"/>
<result column="file_name" property="fileName"/>
<result column="file_size" property="fileSize"/>
<result column="process_status" property="processStatus"/>
<result column="record_count" property="recordCount"/>
<result column="success_count" property="successCount"/>
<result column="fail_count" property="failCount"/>
<result column="process_time" property="processTime"/>
<result column="error_msg" property="errorMsg"/>
<result column="create_time" property="createTime"/>
</resultMap>
<!-- 插入处理记录 -->
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
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()
)
</insert>
<!-- 根据地市编码和文件名查询 -->
<select id="selectByCityAndFileName" resultMap="BaseResultMap">
SELECT * FROM mid_ftp_processed_file
WHERE city_code = #{cityCode}
AND file_name = #{fileName}
LIMIT 1
</select>
<!-- 查询指定地市下所有已处理的文件名列表 -->
<select id="selectProcessedFileNamesByCity" resultType="java.lang.String">
SELECT file_name FROM mid_ftp_processed_file
WHERE city_code = #{cityCode}
AND process_status = '1'
</select>
<!-- 批量查询指定地市下多个文件的处理状态 -->
<select id="selectByCityAndFileNames" resultMap="BaseResultMap">
SELECT * FROM mid_ftp_processed_file
WHERE city_code = #{cityCode}
AND file_name IN
<foreach collection="fileNames" item="name" open="(" separator="," close=")">
#{name}
</foreach>
</select>
<!-- 根据ID更新处理结果 -->
<update id="updateById">
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}
</update>
<!-- 删除指定时间之前的记录 -->
<delete id="deleteBeforeTime">
DELETE FROM mid_ftp_processed_file
WHERE city_code = #{cityCode}
AND create_time &lt; TO_TIMESTAMP(#{beforeTime}, 'YYYY-MM-DD HH24:MI:SS')
</delete>
</mapper>
Loading…
Cancel
Save