`

java实现分组

阅读更多
//返回参数必须包含 错误的List,需要提交的List
public HashMap pass_hours(List<InstanceContentVO> applyList,
InstanceContentVO instancecontentvo) throws ApplicationException {

String message= "";
HashMap map = new HashMap();

List<InstanceContentVO> errorList = new ArrayList<InstanceContentVO>();
List<InstanceContentVO> newList =new ArrayList<InstanceContentVO>();
Comparator c = new ContentComparator();
// 为集合排序
Collections.sort(applyList, c);
Date cFlag = null;

List<ApplyVO> groupList = new ArrayList<ApplyVO>();   //存放不同的组
ApplyVO applyVO = null;
List<InstanceContentVO> contentList = new ArrayList<InstanceContentVO>(); //存放同组记录

for(int i=0;i<applyList.size();i++){

InstanceContentVO vo = applyList.get(i);
Date sdate = conversionDate(vo.getStartDate());


if(i==0 ||  sdate.before(cFlag) || sdate.after(cFlag) ){ //不同日期

applyVO = new ApplyVO();
contentList = new ArrayList<InstanceContentVO>();
contentList.add(vo);
applyVO.setInstanceContentList(contentList);

groupList.add(applyVO);
cFlag = sdate;

} else { 

contentList.add(vo);
applyVO.setInstanceContentList(contentList);


}

}

//对每组的合计时间进行获取和判断
for(int i=0;i<groupList.size();i++){

ApplyVO avo = groupList.get(i);
long groupHour =getGroupHour(avo.getInstanceContentList());//获取各组的合计时间,判断是否满足4小时

if(groupHour<AllowanceConstants.HOLIDAY_ON_SITE_HOUR){//如果小于4小时,那么继续判断是否在系统中有同一天的申报,如果不存在,不可以申报

InstanceContentVO vo=(InstanceContentVO)avo.getInstanceContentList().get(0);
vo.setPayrollId(instancecontentvo.getPayrollId());
vo.setEmployee_id(instancecontentvo.getEmployee_id());
vo.setElement_id(instancecontentvo.getElement_id());

int countRecord=getRecordCount(vo);//判断该员工是否已经有了同一天的申报数据

if(countRecord==0){ // countRecord==0是第一次申报,所以不满足提交的条件,校验不通过,必须添加到错误List,同时从提交list中删除


Iterator it=avo.getInstanceContentList().iterator();

while(it.hasNext()){ //如果该组不符合提交条件,把他们的记录都迭代出放到错误列表中

errorList.add((InstanceContentVO)it.next());


}

message ="errors.oneday.no4Hour";
groupList.remove(i); //整个组从引用中删除
i--;
}

}
}

  for(int k=0;k<groupList.size();k++){

ApplyVO applyvo = groupList.get(k);
for(int u=0;u<applyvo.getInstanceContentList().size();u++){


InstanceContentVO icvo = (InstanceContentVO)applyvo.getInstanceContentList().get(u); //获取组的数据
newList.add(icvo);//重新包装申报数据
}
}

map.put("errorList", errorList);
map.put("applyList", newList);
map.put("message", message);
return map;}
分享到:
评论

相关推荐

    java实现分组聚合

    以下是对"java实现分组聚合"这一主题的详细解释。 首先,让我们了解Java中的分组概念。在Java中,我们经常使用`List`、`Set`或`Map`等集合类来存储数据。如果需要按照某个属性(如日期、数量等)将数据分成不同的...

    java 集合分组与排序

    下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这在Java 8引入的流(Stream)API中得到了很好的支持。`Collectors.groupingBy`方法允许我们将...

    Java在Excel中创建多级分组、折叠或展开分组的实现

    Java在Excel中创建多级分组、折叠或展开分组的实现 Java在Excel中创建多级分组、折叠或展开分组的实现是指通过Java程序在Excel中创建多级分组、折叠或展开分组的方法。在Excel中,分组可以对行或列进行分组,并设置...

    vue+Java 实现附件分组下载压缩包(csdn)————程序.pdf

    总结来说,实现Vue.js与Java结合的附件分组下载压缩包功能,需要前端负责发起请求、处理响应并触发下载,而后端负责处理请求、打包文件并返回。这种功能的实现需要对前端和后端的技术栈有深入的理解,包括Vue.js的...

    java 按照每周分组

    在Java编程中,"按照每周分组"是一个常见的数据处理需求,特别是在数据分析、报表生成或者时间序列分析等场景。这个需求通常涉及到日期处理和集合分组。以下将详细讲解如何在Java中实现这一功能。 首先,我们需要...

    (Java)人群随机分组 by 夜猫

    在Java编程中,实现"人群随机分组"的需求通常涉及到数组、集合以及随机数生成等基础知识。本项目 `(Java)人群随机分组 by 夜猫` 提供了一个解决方案,旨在将一组人(可以理解为一个数据列表)尽可能均匀地划分为四个...

    java 奇偶分组的资源

    首先,`OneArray_03.java`很可能是一个Java源代码文件,它实现了对数组元素进行奇偶分组的功能。在这个文件中,我们可以预期会看到一个或多个方法,这些方法接收一个整数数组作为参数,然后返回一个新的二维数组,...

    多层分组表头导出Excel与后台JAVA交互

    根据前台表样已定义好的高级表格,而当前表格的HeaderColumn部份为高级分组,即多层分组列,将我们前所见即所得,点击导出按钮后,直接根据数据的逻辑,自动生成了多层组表的表头部份数据样式。 文件夹中附有源代码...

    DES对称分组密码系统的Java实现

    DES对称分组密码系统 import java.security.spec.*; import javax.crypto.*; import javax.crypto.spec.*; class DES01 { private String strkey; private SecretKey skey=null; private String[] algo= {"DES/...

    java聊天室分组实现可直接运行

    【Java聊天室分组实现可直接运行】是一个客户端/服务器程序,主要功能是提供一个平台让用户可以登录并进行分组聊天。在这个系统中,用户可以选择进入不同的“房间”进行交流,每个房间代表一个独立的聊天分组。这个...

    treeMap实现分组数据树形结构

    标题中的“treeMap实现分组数据树形结构”指的是利用`TreeMap`的特性,将数据根据某个或某些键值进行分组,并以树形结构展示,每个节点代表一个分组,其子节点是该分组内的数据。这种结构有助于快速查找和访问具有...

    详解Java实现的k-means聚类算法

    Java实现的k-means聚类算法详解 k-means聚类算法是一种常用的无监督学习算法,用于对数据进行聚类分析。该算法的主要思想是将相似的数据点聚类到一起,形成不同的簇。Java语言是实现k-means聚类算法的不二之选。 ...

    基于Java实现的zzyl分组功能8K高清设计源码

    本项目为zzyl分组功能的Java实现,提供8K高清设计源码。项目包含131个文件,其中Java源文件113个,XML配置文件15个,其他文件类型包括Git忽略、JSON、YAML等。该源码旨在实现高效分组功能,适用于各类Java开发场景。

    java实现聊天室功能(全部代码,有界面)

    Java 实现聊天室功能 Java 实现聊天室功能是通过使用 Java 语言和 Swing 库来创建一个多人聊天室系统。该系统支持群聊、公聊、私聊等功能,並支持刷新好友列表。 title: Java 实现聊天室功能(全部代码,有界面) ...

    基于Java实现的加解密方法(DES、3DES、AES)以及五种分组密码工作模式

    本教程主要探讨了如何使用Java编程语言实现DES(Data Encryption Standard)、3DES(Triple DES)和AES(Advanced Encryption Standard)这三种常见的对称加密算法,并且详细讲解了五种分组密码的工作模式。...

    Java实现的点对点短消息发送源码

    本文将深入探讨如何使用Java实现点对点(P2P)短消息发送系统,主要基于提供的标题和描述。 点对点通信是指两个或多个设备之间直接交换数据,无需通过中央服务器。在短消息发送场景下,这种模式可以降低对中心节点...

    Java分组、分页源码

    详细完整的实现 java分组和分页功能 public static final int PAGE_SIZE = 5; // 每页记录数 public static final int GROUP_SIZE = 5; // 每组显示的页数 private List&lt;ClaimVoucher&gt; list;// 要返回的某一页的...

    定时任务quartz实现分组串行并行动态配置

    本篇文章将深入探讨如何利用Quartz实现定时任务的分组、串行和并行动态配置。 首先,理解Quartz的核心概念是必要的。`Job`是执行任务的基本单元,`Trigger`则决定了何时触发Job。Quartz提供了`Scheduler`来管理和...

    java实现英文文档分词

    "java实现英文文档分词" 本资源摘要信息主要关注java实现英文文档分词的知识点, 涵盖文档读取、分词、词频统计、结果输出等方面的内容。 一、 文档读取 在该实验中,使用java的BufferedReader类来读取文档,读取...

    java按照每周分组 改进版

    标题“Java按照每周分组 改进版”指的是在Java编程中实现数据按照周进行分组的一种优化方法。这通常涉及到日期处理、集合操作以及可能的数据库查询优化。在这个场景中,开发者可能需要将一系列记录根据它们的时间戳...

Global site tag (gtag.js) - Google Analytics