首页 > 其他分享 >ABC 等多个系统 每个系统下有多个附件 ,每个系统获取自己最新日期的文档

ABC 等多个系统 每个系统下有多个附件 ,每个系统获取自己最新日期的文档

时间:2024-01-16 09:01:24浏览次数:29  
标签:ABC 每个 多个 系统 列表 attachment 附件 attachmentsBySystem

1.假如有 ABC 等多个系统 每个系统下有多个附件 ,每个系统获取自己最新日期的文档(每个文件都标有最新日期
duptime ) Java代码从表中查询出的 list怎莫处理 得到每个系统下面最新的文件

Map<String, List<Attachment>> attachmentsBySystem = new HashMap<>();

// 对每个附件进行遍历,根据系统将附件分组放入对应的列表中
for (Attachment attachment : attachmentList) {
    String system = attachment.getSystem();
    List<Attachment> attachments = attachmentsBySystem.getOrDefault(system, new ArrayList<>());
    attachments.add(attachment);
    attachmentsBySystem.put(system, attachments);
}

注释解释:

attachmentsBySystem是一个Map<String, List>,用于按系统将附件分组存储。
遍历attachmentList中的每个附件。
获取附件的系统名称。
使用getOrDefault方法从attachmentsBySystem中获取当前系统的附件列表,如果不存在则创建一个新的空列表。
将当前附件添加到系统的附件列表中。
将更新后的附件列表放回attachmentsBySystem中。

Map<String, Attachment> latestAttachmentsBySystem = new HashMap<>();

// 遍历每个系统的附件列表,找到最新日期的附件
for (Map.Entry<String, List<Attachment>> entry : attachmentsBySystem.entrySet()) {
    String system = entry.getKey();
    List<Attachment> attachments = entry.getValue();
    
    if (attachments.isEmpty()) {
        continue;
    }
    
    Attachment latestAttachment = attachments.get(0);
    for (Attachment attachment : attachments) {
        if (attachment.getDuptime().after(latestAttachment.getDuptime())) {
            latestAttachment = attachment;
        }
    }
    
    latestAttachmentsBySystem.put(system, latestAttachment);
}

注释解释:

latestAttachmentsBySystem是一个Map<String, Attachment>,用于存储每个系统的最新附件。
遍历attachmentsBySystem中的每个系统和对应的附件列表。
获取当前系统的名称和附件列表。
如果附件列表为空,则跳过当前系统。
初始化latestAttachment为当前附件列表的第一个附件。
遍历附件列表中的每个附件。
比较附件的duptime属性与当前最新附件的duptime属性,如果后者较晚,则更新latestAttachment为当前附件。
将最新附件添加到latestAttachmentsBySystem中。

2.下载文件建立系统文件夹并把文档放在里面

// 遍历每个系统的最新附件
for (Map.Entry<String, Attachment> entry : latestAttachmentsBySystem.entrySet()) {
    String system = entry.getKey();
    Attachment attachment = entry.getValue();

    // 创建系统文件夹
    File systemFolder = new File("path/to/directory/" + system);
    if (!systemFolder.exists()) {
        systemFolder.mkdirs();
    }

    // 下载文档并保存到系统文件夹中
    String documentUrl = attachment.getDocumentUrl();
    String documentFileName = attachment.getDocumentFileName();
    try (InputStream inputStream = new URL(documentUrl).openStream()) {
        Files.copy(inputStream, Paths.get(systemFolder.getPath(), documentFileName), StandardCopyOption.REPLACE_EXISTING);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

这段代码通过遍历每个系统的最新附件,创建系统文件夹,并将附件的文档下载并保存到系统文件夹中。请注意替换代码中的"path/to/directory/"为实际的存储路径

标签:ABC,每个,多个,系统,列表,attachment,附件,attachmentsBySystem
From: https://www.cnblogs.com/codeLearn/p/17966775

相关文章

  • Linux操作系统不同文件类型区别?
    蓝色代表目录,绿色代表可执行文件,红色代表压缩文件、浅蓝色表示连接文件、白色表示其他文件相关目录及作用:      Bin:存放普通用户可执行的指令      Boot:开机引导目录      Dev:设备目录      Etc:各种配置文件目录      Lib:库文件存放......
  • 高并发场景下如何实现系统限流?
    限流要结合容量和压测来进行,当外部请求接近或者达到系统最大阈值时,触发限流,采取其他手段进行降级,保证系统不被压垮,常见降级策略包括延迟处理,拒绝服务,随机拒绝等。 计数器法:将时间划分固定窗口大小,如1s设定100请求,该窗口时间之后的请求进行丢弃处理滑动窗口计数:将时间拆分......
  • 宠物医院管理系统的设计与实现
      学 院信息工程学院教学系计算机系专业班级软件工程2002学生姓名张传聪学   号20201229毕业设计(论文)题目宠物医院管理系统的设计与实现题目来源A题目类型A毕业论文(论文)下达任务时间2023年12月3日......
  • RHEL8系统下的pxe实验
    一、安装网络引导服务器的rhel8系统说明:​ 1、此次实验是在VMWware16虚拟机下进行的;​ 2、使用的系统镜像是rhel8系统;1、pxe服务器硬件配置2、pxe服务器的系统A、安装系统:pxe服务器系统安装的是rhel8,采用默认安装方式安装B、系统安装完成后,简单初始化配置#1、检查系统......
  • Spring AOP 中@Pointcut的用法(多个Pointcut)
    SpringAOP中@Pointcut的用法(多个Pointcut)/**swagger切面,分开来写**/@Aspect@ComponentpublicclassApiOperationLogAspect{privateLoggerlogger=LoggerFactory.getLogger(this.getClass());@Pointcut("@annotation(io.swagger.annotations.ApiOperation......
  • abc336 E - Digit Sum Divisible 题解 数位DP
    题目链接:https://atcoder.jp/contests/abc336/tasks/abc336_e题目大意:我们定义一个整数\(n\)的数位和为\(n\)的十进制表示中的各位上的数字之和。比如:整数\(2024\)的数位和为\(2+0+2+4=8\)。一个正整数\(n\)被称作一个好数如果\(n\)能被它的数位和整除......
  • 系统的标准异常类
    #define_CRT_SECURE_NO_WARNINGS#include<iostream>#include<stdexcept>classmaker{public:maker(intage){if(age<0orage>150){throwstd::out_of_range("年龄不在范围内\n");}else{......
  • 分布式系统和微服务的关系
     分布式系统和微服务的关系   分布式系统    分布式系统是由多台计算机组成的系统,这些计算机通过网络进行通信和协作,共同完成一个或多个共享目标。在分布式系统中,各个计算机节点可以分布在不同的地理位置,它们通过消息传递或共享存储等方式进行通信。分布......
  • 如何做好一个信息系统项目经理,一个项目经理的个人体会和经验总结(一)
    作为一个信息系统项目经理,最要紧的就是要明白什么是因地制宜、因势利导,只有最合适的,没有什么叫对的,什么叫错的;最忌讳的就是完美主义倾向,凡事都要寻找标准答案和最优答案,既耽误了项目进度,也迷茫了自己。以下是本人一些做信息系统项目的个人体会和经验总结,写出来供大家指点,在讨论过......
  • 如何设计一个高并发系统?
    所谓高并发系统,是指能同时处理大量并发请求,并及时响应,从而保证系统的高性能和高可用那么我们在设计一个高并发系统时,应该考虑哪些方面呢?1.搭建集群如果你只部署一个应用,只部署一台服务器,那抗住的流量请求是非常有限的。并且,单体的应用,有单点的风险,如果它挂了,那服务就不可用了......