Преглед изворни кода

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	taskMan/src/main/java/com/huyi/task/taskMan/schedule/TimedTask.java
ch пре 3 година
родитељ
комит
6f4844c0a8

+ 9 - 3
taskMan/src/main/java/com/huyi/task/base/entity/PubFileInf.java

@@ -14,8 +14,8 @@ import lombok.experimental.Accessors;
  * 文件信息表
  * </p>
  *
- * @author xuefy
- * @since 2021-08-16
+ * @author cuixq
+ * @since 2021-09-10
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -98,12 +98,18 @@ public class PubFileInf implements Serializable {
     private Date pfiVisitTime;
 
     /**
-     * 状态(00:正常 99:删除)
+     * 状态(00:正常 01:未确认 99:删除)
      */
     @TableField("pfi_is_del")
     private String pfiIsDel;
 
     /**
+     * 是否已从服务器删除 (0:未删除 1:已删除)
+     */
+    @TableField("pfi_is_deal")
+    private String pfiIsDeal;
+
+    /**
      * 备用字段1
      */
     @TableField("pfi_spare1")

+ 114 - 0
taskMan/src/main/java/com/huyi/task/base/entity/SysDictData.java

@@ -0,0 +1,114 @@
+package com.huyi.task.base.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 字典数据表
+ * </p>
+ *
+ * @author cuixq
+ * @since 2021-09-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("sys_dict_data")
+public class SysDictData implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 字典编码
+     */
+    @TableId(value = "dict_code", type = IdType.AUTO)
+    private Long dictCode;
+
+    /**
+     * 字典排序
+     */
+    @TableField("dict_sort")
+    private Integer dictSort;
+
+    /**
+     * 字典标签
+     */
+    @TableField("dict_label")
+    private String dictLabel;
+
+    /**
+     * 字典键值
+     */
+    @TableField("dict_value")
+    private String dictValue;
+
+    /**
+     * 字典类型
+     */
+    @TableField("dict_type")
+    private String dictType;
+
+    /**
+     * 样式属性(其他样式扩展)
+     */
+    @TableField("css_class")
+    private String cssClass;
+
+    /**
+     * 表格回显样式
+     */
+    @TableField("list_class")
+    private String listClass;
+
+    /**
+     * 是否默认(Y是 N否)
+     */
+    @TableField("is_default")
+    private String isDefault;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @TableField("status")
+    private String status;
+
+    /**
+     * 创建者
+     */
+    @TableField("create_by")
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    @TableField("update_by")
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+
+}

+ 16 - 0
taskMan/src/main/java/com/huyi/task/base/mapper/SysDictDataMapper.java

@@ -0,0 +1,16 @@
+package com.huyi.task.base.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huyi.task.base.entity.SysDictData;
+
+/**
+ * <p>
+ * 字典数据表 Mapper 接口
+ * </p>
+ *
+ * @author cuixq
+ * @since 2021-09-10
+ */
+public interface SysDictDataMapper extends BaseMapper<SysDictData> {
+
+}

+ 60 - 0
taskMan/src/main/java/com/huyi/task/base/service/ISysDictDataService.java

@@ -0,0 +1,60 @@
+package com.huyi.task.base.service;
+
+
+import com.huyi.task.base.entity.SysDictData;
+import com.keao.tianhu.starter.mybatis.plus.entity.QueryRequest;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+
+
+import java.util.List;
+
+/**
+ * ClassName: ISysDictDataService<br>
+ * Description: SysDictDataService接口 <br>
+ * Company: keao
+ *
+ * @author cuixq
+ * @version v1.0.0    2021-09-10  cuixq    由Generator自动创建
+ */
+public interface ISysDictDataService extends IService<SysDictData> {
+    /**
+     * 查询(分页)
+     *
+     * @param request QueryRequest
+     * @param wrapper LambdaQueryWrapper<SysDictData>
+     * @return IPage<SysDictData>
+     */
+    IPage<SysDictData> findSysDictDatas(QueryRequest request, LambdaQueryWrapper<SysDictData> wrapper);
+
+    /**
+     * 查询(所有)
+     *
+     * @param wrapper LambdaQueryWrapper<SysDictData>
+     * @return List<SysDictData>
+     */
+    List<SysDictData> findSysDictDatas(LambdaQueryWrapper<SysDictData> wrapper);
+
+    /**
+     * 新增
+     *
+     * @param sysDictData sysDictData
+     */
+    void createSysDictData(SysDictData sysDictData);
+
+    /**
+     * 修改
+     *
+     * @param sysDictData sysDictData
+     */
+    void updateSysDictData(SysDictData sysDictData);
+
+    /**
+     * 删除
+     *
+     * @param wrapper LambdaQueryWrapper<SysDictData>
+     */
+    void deleteSysDictData(LambdaQueryWrapper<SysDictData> wrapper);
+}

+ 64 - 0
taskMan/src/main/java/com/huyi/task/base/service/impl/SysDictDataServiceImpl.java

@@ -0,0 +1,64 @@
+package com.huyi.task.base.service.impl;
+
+import com.huyi.task.base.entity.SysDictData;
+import com.huyi.task.base.mapper.SysDictDataMapper;
+import com.huyi.task.base.service.ISysDictDataService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.keao.tianhu.starter.mybatis.plus.entity.QueryRequest;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+
+
+import java.util.List;
+
+/**
+ * ClassName: SysDictDataServiceImpl<br>
+ * Description: ISysDictDataService实现 <br>
+ * Company: keao
+ *
+ * @author cuixq
+ * @version v1.0.0    2021-09-10  cuixq    由Generator自动创建
+ */
+@Service
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
+public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService {
+
+    @Autowired
+    private SysDictDataMapper sysDictDataMapper;
+
+    @Override
+    public IPage<SysDictData> findSysDictDatas(QueryRequest request, LambdaQueryWrapper<SysDictData> wrapper) {
+        Page<SysDictData> page = new Page<>(request.getPageNum(), request.getPageSize());
+        return this.page(page, wrapper);
+    }
+
+    @Override
+    public List<SysDictData> findSysDictDatas(LambdaQueryWrapper<SysDictData> wrapper) {
+		return this.list(wrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void createSysDictData(SysDictData sysDictData) {
+        this.save(sysDictData);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateSysDictData(SysDictData sysDictData) {
+        this.saveOrUpdate(sysDictData);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteSysDictData(LambdaQueryWrapper<SysDictData> wrapper) {
+	    this.remove(wrapper);
+	}
+}

+ 18 - 0
taskMan/src/main/java/com/huyi/task/taskMan/mapper/FtpFileTaskMapper.java

@@ -0,0 +1,18 @@
+package com.huyi.task.taskMan.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 文件清理查询
+ * @author tudc
+ */
+public interface FtpFileTaskMapper
+{
+    /**
+     * 查询需要删除的文件
+     * @param map
+     * @return
+     */
+    public List<Map<String, String>> queryDeletedFile(Map map);
+}

+ 3 - 7
taskMan/src/main/java/com/huyi/task/taskMan/controller/FinanceTimedTaskController.java

@@ -1,20 +1,16 @@
-package com.huyi.task.taskMan.controller;
+package com.huyi.task.taskMan.schedule;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.huyi.task.base.entity.*;
 import com.huyi.task.base.service.*;
 import com.huyi.task.taskMan.service.FinanceTimedTaskService;
 import com.keao.tianhu.core.util.AmtUtil;
-import com.tianhu.common.core.domain.R;
 import com.tianhu.common.core.utils.CommonUtil;
 import com.tianhu.common.core.utils.DateUtils;
-import com.tianhu.common.core.utils.IdUtils;
 import com.tianhu.common.redis.common.RedisUtils;
 import com.tianhu.system.api.RemoteConfigService;
 import com.tianhu.system.api.RemoteSystemService;
-import com.tianhu.system.api.domain.DictData;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,8 +22,8 @@ import java.util.*;
 
 @Configuration      //1.主要用于标记配置类,兼备Component的效果。
 @EnableScheduling   // 2.开启定时任务
-public class FinanceTimedTaskController {
-    private static final Logger log = LoggerFactory.getLogger(FinanceTimedTaskController.class);
+public class FinanceTimedTask {
+    private static final Logger log = LoggerFactory.getLogger(FinanceTimedTask.class);
 
     @Autowired
     private IZcFinanceInfService iZcFinanceInfService;

+ 80 - 0
taskMan/src/main/java/com/huyi/task/taskMan/schedule/FtpFileTask.java

@@ -0,0 +1,80 @@
+package com.huyi.task.taskMan.schedule;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.huyi.task.base.entity.PubFileInf;
+import com.huyi.task.base.entity.SysDictData;
+import com.huyi.task.base.service.IPubFileInfService;
+import com.huyi.task.base.service.ISysDictDataService;
+import com.huyi.task.taskMan.mapper.FtpFileTaskMapper;
+import com.huyi.task.utils.FtpClientUtil;
+import lombok.SneakyThrows;
+import org.apache.commons.net.ftp.FTPClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import java.util.*;
+
+@Configuration      //1.主要用于标记配置类,兼备Component的效果。
+@EnableScheduling   // 2.开启定时任务
+public class FtpFileTask {
+    @Autowired
+    private FtpFileTaskMapper fileTaskMapper;
+    @Autowired
+    private ISysDictDataService dictDataService;
+    @Autowired
+    private IPubFileInfService fileInfService;
+
+    @SneakyThrows
+    @Scheduled(cron = "0 0 1 * * ?")
+    private void clearFile(){
+        // 获取当前日期的前5天
+        Calendar calendar = new GregorianCalendar();
+        calendar.setTime(new Date());
+        calendar.add(Calendar.DATE, -5);
+        Date beforeDate = calendar.getTime();
+
+        // 查询需要删除的文件
+        Map<String, Object> param = new HashMap<>();
+        param.put("beforeDate", beforeDate);
+        List<Map<String, String>> fileList = fileTaskMapper.queryDeletedFile(param);
+
+        LambdaQueryWrapper<SysDictData> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(SysDictData::getDictType, "pub_doc_config");
+        List<SysDictData> dictDataList = dictDataService.findSysDictDatas(lambdaQueryWrapper);
+        String ftp_ip = null,ftp_username = null,ftp_password = null;
+        int ftpPort = 21;
+        for (SysDictData dictData : dictDataList) {
+            if ("01".equals(dictData.getDictValue())) {
+                ftp_username = dictData.getDictLabel();
+                continue;
+            } else if ("02".equals(dictData.getDictValue())) {
+                ftp_password = dictData.getDictLabel();
+                continue;
+            } else if ("03".equals(dictData.getDictValue())) {
+                ftp_ip = dictData.getDictLabel();
+                continue;
+            } else if ("04".equals(dictData.getDictValue())) {
+                ftpPort = Integer.parseInt(dictData.getDictLabel());
+                continue;
+            }
+        }
+        // 登陆
+        FTPClient ftp = FtpClientUtil.getConnectionFTP(ftp_ip, ftpPort, ftp_username, ftp_password);
+        for (Map<String, String> fileMap : fileList) {
+            String fileUrl = fileMap.get("fileUrl");
+            String fileName = fileUrl.split("\\/")[fileUrl.split("\\/").length-1];
+            boolean success = FtpClientUtil.deleteFile(ftp, fileMap.get("filePath"), fileName);
+            if (success) {
+                PubFileInf fileInf = new PubFileInf();
+                fileInf.setPfiFileId(fileMap.get("fileId"));
+                fileInf.setPfiIsDel("99");
+                fileInf.setPfiIsDeal("1");
+                fileInfService.updatePubFileInf(fileInf);
+            }
+        }
+        // 退出登录
+        ftp.logout();
+    }
+}

taskMan/src/main/java/com/huyi/task/taskMan/controller/TimedTaskController.java → taskMan/src/main/java/com/huyi/task/taskMan/schedule/TimedTask.java


+ 248 - 0
taskMan/src/main/java/com/huyi/task/utils/FtpClientUtil.java

@@ -0,0 +1,248 @@
+package com.huyi.task.utils;
+
+
+import com.tianhu.common.core.utils.DateUtils;
+import org.apache.commons.net.ftp.*;
+
+import java.io.*;
+
+/**
+ * 图片上传到图片服务器
+ *
+ * @author ZHANGZZ@MINPAY.CCcommons-net
+ */
+
+
+public class FtpClientUtil {
+
+
+    /**
+     * 获得连接FTP方式
+     *
+     * @param hostName FTP服务器地址
+     * @param port     FTP服务器端口
+     * @param userName FTP登录用户名
+     * @param passWord FTP登录密码
+     * @return
+     */
+    public static FTPClient getConnectionFTP(String hostName, int port, String userName, String passWord) {
+        //创建FTPClient对象
+        FTPClient ftp = new FTPClient();
+        try {
+            //连接FTP服务器
+            ftp.connect(hostName, port);
+            //下面三行代码必须要,而且不能改变编码格式,否则不能正确下载中文文件
+            ftp.setControlEncoding("GBK");
+            FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);
+            conf.setServerLanguageCode("zh");
+            ftp.enterLocalPassiveMode();
+            //登录ftp
+            System.out.println("<=========登录开始=====>"+ DateUtils.dateTimeNow());
+            ftp.login(userName, passWord);
+            System.out.println("<=========登录结束=====>"+ DateUtils.dateTimeNow());
+            if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
+                ftp.disconnect();
+                System.out.println("连接服务器失败");
+            } else {
+                System.out.println("登陆服务器成功");
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return ftp;
+    }
+
+    /**
+     * 关闭连接FTP方式
+     *
+     * @param ftp FTPClient对象
+     * @return
+     */
+    public static boolean closeFTP(FTPClient ftp) {
+        if (ftp.isConnected()) {
+            try {
+                ftp.disconnect();
+                System.out.println("ftp已经关闭");
+                return true;
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 上传文件FTP方式
+     *
+     * @param ftp         FTPClient对象
+     * @param rootPath    FTP服务器目录
+     * @param subDir      FTP服务器子目录
+     * @param fileName    本地文件路径
+     * @param inputStream 输入流
+     * @return
+     */
+    public static boolean uploadFile(FTPClient ftp, String rootPath, String subDir, String fileName, InputStream inputStream) {
+        boolean success = false;
+        try {
+            ftp.changeWorkingDirectory(rootPath);//转移到指定FTP服务器目录
+            FTPFile[] fs = ftp.listFiles();//得到目录的相应文件列表
+            fileName = FtpClientUtil.changeName(fileName, fs);
+            fileName = new String(fileName.getBytes("GBK"), "ISO-8859-1");
+            rootPath = new String(rootPath.getBytes("GBK"), "ISO-8859-1");
+            createDirectory(ftp, rootPath, subDir);
+//                 //转到指定上传目录
+            ftp.changeWorkingDirectory(rootPath + subDir);
+            //将上传文件存储到指定目录
+            ftp.setFileType(FTP.BINARY_FILE_TYPE);
+            // 被动模式 TODO 阿里云需要放开所有端口
+            ftp.enterLocalPassiveMode();
+            //如果缺省该句 传输txt正常 但图片和其他格式的文件传输出现乱码
+            boolean isFtp = ftp.storeFile(fileName, inputStream);
+            //关闭输入流
+            inputStream.close();
+            //退出ftp
+            ftp.logout();
+            //表示上传成功
+            success = isFtp;
+            if(isFtp){
+                System.out.println("上传成功。。。。。。");
+            }else {
+                System.out.println("上传失败。。。。。。");
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return success;
+    }
+
+    /**
+     * 创建远程目录
+     *
+     * @param ftp      FTPClient对象
+     * @param rootPath FTP服务器目录
+     * @param subDir   FTP服务器子目录
+     * @return
+     * @throws IOException
+     */
+    public static boolean createDirectory(FTPClient ftp, String rootPath, String subDir)
+            throws IOException {
+        changeWorkingDirectory(ftp, rootPath);
+        // 如果远程目录不存在,则递归创建远程服务器目录
+        int start = 0;
+        int index = subDir.indexOf("/", start);
+        // 日志记录,增加了什么目录
+        String addedPath = "";
+        while (true) {
+            String dir = subDir.substring(start, index);
+            if (!ftp.changeWorkingDirectory(new String(dir.getBytes("GBK"),
+                    "iso-8859-1"))) {
+                if (makeDirectory(ftp, dir)) {
+                    addedPath += "/" + dir;
+                    changeWorkingDirectory(ftp, dir);
+                } else {
+                    return false;
+                }
+            }
+            start = index + 1;
+            index = subDir.indexOf("/", start);
+            // 检查所有目录是否创建完毕
+            if (start >= index) {
+                break;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * 创建目录
+     * @param ftp
+     * @param pathname
+     * @return
+     * @throws IOException
+     */
+    public static boolean makeDirectory(FTPClient ftp, String pathname)
+            throws IOException {
+        return FTPReply.isPositiveCompletion(ftp.mkd(pathname));
+    }
+
+    /**
+     * 变更服务器当前目录
+     * @param ftp
+     * @param pathname
+     * @return
+     * @throws IOException
+     */
+    public static boolean changeWorkingDirectory(FTPClient ftp, String pathname)
+            throws IOException {
+        return FTPReply.isPositiveCompletion(ftp.cwd(pathname));
+    }
+
+    /**
+     * 删除文件FTP方式
+     *
+     * @param ftp      FTPClient对象
+     * @param path     FTP服务器上传地址
+     * @param fileName FTP服务器上要删除的文件名
+     * @return
+     */
+    public static boolean deleteFile(FTPClient ftp, String path, String fileName) {
+        boolean success = false;
+        try {
+            ftp.changeWorkingDirectory(path);//转移到指定FTP服务器目录
+            fileName = new String(fileName.getBytes("GBK"), "ISO-8859-1");
+            ftp.deleteFile(fileName);
+            success = true;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return success;
+    }
+
+    /**
+     * 判断是否有重名文件
+     *
+     * @param fileName
+     * @param fs
+     * @return
+     */
+    public static boolean isFileExist(String fileName, FTPFile[] fs) {
+        for (int i = 0; i < fs.length; i++) {
+            FTPFile ff = fs[i];
+            if (ff.getName().equals(fileName)) {
+                return true; //如果存在返回 正确信号
+            }
+        }
+        return false; //如果不存在返回错误信号
+    }
+
+    /**
+     * 根据重名判断的结果 生成新的文件的名称
+     *
+     * @param fileName
+     * @param fs
+     * @return
+     */
+    public static String changeName(String fileName, FTPFile[] fs) {
+        int n = 0;
+        //      fileName = fileName.append(fileName);
+        while (isFileExist(fileName.toString(), fs)) {
+            n++;
+            String a = "[" + n + "]";
+            int b = fileName.lastIndexOf(".");//最后一出现小数点的位置
+            int c = fileName.lastIndexOf("[");//最后一次"["出现的位置
+            if (c < 0) {
+                c = b;
+            }
+            StringBuffer name = new StringBuffer(fileName.substring(0, c));//文件的名字
+            StringBuffer suffix = new StringBuffer(fileName.substring(b + 1));//后缀的名称
+            fileName = name.append(a) + "." + suffix;
+        }
+        return fileName.toString();
+    }
+
+
+
+
+}

+ 1 - 0
taskMan/src/main/resources/mapper/base/PubFileInfMapper.xml

@@ -17,6 +17,7 @@
         <result column="pfi_upload_time" property="pfiUploadTime" />
         <result column="pfi_visit_time" property="pfiVisitTime" />
         <result column="pfi_is_del" property="pfiIsDel" />
+        <result column="pfi_is_deal" property="pfiIsDeal" />
         <result column="pfi_spare1" property="pfiSpare1" />
         <result column="pfi_spare2" property="pfiSpare2" />
         <result column="pfi_spare3" property="pfiSpare3" />

+ 23 - 0
taskMan/src/main/resources/mapper/base/SysDictDataMapper.xml

@@ -0,0 +1,23 @@
+<?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.huyi.task.base.mapper.SysDictDataMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.huyi.task.base.entity.SysDictData">
+        <id column="dict_code" property="dictCode" />
+        <result column="dict_sort" property="dictSort" />
+        <result column="dict_label" property="dictLabel" />
+        <result column="dict_value" property="dictValue" />
+        <result column="dict_type" property="dictType" />
+        <result column="css_class" property="cssClass" />
+        <result column="list_class" property="listClass" />
+        <result column="is_default" property="isDefault" />
+        <result column="status" property="status" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+</mapper>

+ 17 - 0
taskMan/src/main/resources/mapper/taskMan/FtpFileTaskMapper.xml

@@ -0,0 +1,17 @@
+<?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.huyi.task.taskMan.mapper.FtpFileTaskMapper">
+
+    <select id="queryDeletedFile" parameterType="map" resultType="map">
+        select
+            pfi_file_id fileId,
+            pfi_file_path filePath,
+            pfi_file_url fileUrl
+        from
+            pub_file_inf r
+        where pfi_is_deal = '0'
+        and (pfi_is_del = '99' OR (pfi_is_del = '01' AND pfi_upload_time &lt; #{beforeDate} ))
+        limit 0, 2
+    </select>
+
+</mapper>