Posted on 2015-04-16 15:22
朱杰兵 閱讀(3077)
評論(0) 編輯 收藏
List<UserOutPlanItem> itemList = info.getItemList();//需要去重匯總的list
List<UserOutAuditDTO> summary = new ArrayList<UserOutAuditDTO>();;
//匯總到的map value為總數(shù)量和總重量
Map<String, String> map = new HashMap<String, String>();
if (ObjectUtils.notEmpty(itemList))
{
for (UserOutPlanItem item : itemList)
{
//這六個字段相同則匯成一條,并且把重量和數(shù)量累加
String key = item.getBreedName()+"_"+item.getSpecName()+"_"+
item.getMaterialName()+"_"+item.getFactoryName()+"_"+
item.getNumUtil()+"_"+item.getWeightUtil();
String num_weight = map.get(key);
//當(dāng)鍵不存在的時候匯一條
if (StringUtils.isNull(num_weight))
{
map.put(key, item.getNum()+"_"+item.getWeight());
}
//當(dāng)key已經(jīng)存在了,則累加
else
{
String[] arr = num_weight.split("_");
String thisNum = MoneyCalculateUtils.add(arr[0], item.getNum(), 0);
String thisWeight = MoneyCalculateUtils.add(arr[1], item.getWeight(), 4);
map.put(key, thisNum + "_" + thisWeight);
}
}
}
//重新解析map,把數(shù)據(jù)封裝到summary
if (ObjectUtils.notEmpty(map))
{
Set<String> ketSet = map.keySet();
for (String str : ketSet)
{
String arr[] = str.split("_");
UserOutAuditDTO dto = new UserOutAuditDTO();
dto.setBreedName(arr[0]);
dto.setSpec(arr[1]);
dto.setMaterial(arr[2]);
dto.setFactory(arr[3]);
dto.setNumUtil(arr[4]);
dto.setWeightUtil(arr[5]);
String num_weight = map.get(str);
String arr2[] = num_weight.split("_");
dto.setSumNum(arr2[0]);
dto.setSumWeight(arr2[1]);
summary.add(dto);
}
}