|
|
@@ -6,14 +6,9 @@ import java.io.UnsupportedEncodingException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.Calendar;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.UUID;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.IntStream;
|
|
|
|
|
|
|
|
|
import javax.mail.MessagingException;
|
|
|
@@ -28,6 +23,7 @@ import com.goafanti.order.enums.*;
|
|
|
import com.goafanti.order.service.OrderProjectService;
|
|
|
import com.goafanti.organization.bo.*;
|
|
|
import com.goafanti.common.utils.StringUtils;
|
|
|
+import com.sun.org.glassfish.external.statistics.CountStatistic;
|
|
|
import groovy.transform.Synchronized;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
@@ -1814,9 +1810,9 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @Cacheable(cacheNames = "statisticsList#500",key = "'statisticsList:depId:'+#in.depId+'province:'+#in.province+" +
|
|
|
- "'startCreate:'+#in.startCreate+'endCreate:'+#in.endCreate+'startSign:'+#in.startSign+'endSign:'+#in.endSign+'sort:'+#in.sort")
|
|
|
- public List<outStatisticsList> statisticsList(InputStatistics in) {
|
|
|
+// @Cacheable(cacheNames = "statisticsList#500",key = "'statisticsList:depId:'+#in.depId+'province:'+#in.province+" +
|
|
|
+// "'startCreate:'+#in.startCreate+'endCreate:'+#in.endCreate+'startSign:'+#in.startSign+'endSign:'+#in.endSign+'sort:'+#in.sort")
|
|
|
+ public List<OutStatisticsList> statisticsList(InputStatistics in) {
|
|
|
if(in.getSort()==null) {
|
|
|
in.setSort(0);
|
|
|
}
|
|
|
@@ -1826,7 +1822,61 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
|
|
|
if(in.getEndSign()!=null) {
|
|
|
in.setEndSign(in.getEndSign()+" 23:59:59");
|
|
|
}
|
|
|
- return tOrderNewMapper.statisticsList(in);
|
|
|
+ List<OutStatisticsList> outStatisticsLists =new ArrayList<>();
|
|
|
+ //原来sql计算
|
|
|
+// outStatisticsLists=tOrderNewMapper.statisticsList(in);
|
|
|
+ //新java内部计算
|
|
|
+ outStatisticsLists= CountStatisticOrderList(in);
|
|
|
+
|
|
|
+ return outStatisticsLists;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<OutStatisticsList> CountStatisticOrderList(InputStatistics in) {
|
|
|
+ List<OutStatisticsList> result=new ArrayList<>();
|
|
|
+ List<StatisOrderList> statisOrderLists = tOrderNewMapper.statisticsOrderList(in);
|
|
|
+ Map<Integer,List<StatisOrderList>> classmap= statisOrderLists.stream().collect(Collectors.groupingBy(StatisOrderList::getId));
|
|
|
+ for (Integer key : classmap.keySet()) {
|
|
|
+ Integer id= key;
|
|
|
+ String name=classmap.get(key).get(0).getProvince();
|
|
|
+ Double quantity = classmap.get(key).stream().mapToDouble(StatisOrderList::getQuantity).sum();
|
|
|
+ BigDecimal total =CountStatisticOrderTotal(classmap.get(key));
|
|
|
+ Integer counts=CountStatisticOrderCount(classmap.get(key));
|
|
|
+ OutStatisticsList out =new OutStatisticsList();
|
|
|
+ out.setId(id);
|
|
|
+ out.setProvince(name);
|
|
|
+ out.setQuantity(quantity);
|
|
|
+ out.setTotal(total);
|
|
|
+ out.setCounts(counts);
|
|
|
+ result.add(out);
|
|
|
+ }
|
|
|
+ if (in.getSort()==0){
|
|
|
+ result.sort(Comparator.comparing(OutStatisticsList::getTotal).reversed());
|
|
|
+ }else if (in.getSort()==1){
|
|
|
+ result.sort(Comparator.comparing(OutStatisticsList::getQuantity).reversed());
|
|
|
+ } else {
|
|
|
+ result.sort(Comparator.comparing(OutStatisticsList::getCounts).reversed());
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Integer CountStatisticOrderCount(List<StatisOrderList> statisOrderLists) {
|
|
|
+ Integer result =0;
|
|
|
+ List<String> list=new ArrayList<>();
|
|
|
+ for (StatisOrderList statisOrderList : statisOrderLists) {
|
|
|
+ if (!list.contains(statisOrderList.getAid())){
|
|
|
+ list.add(statisOrderList.getAid());
|
|
|
+ result++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ private BigDecimal CountStatisticOrderTotal(List<StatisOrderList> statisOrderLists) {
|
|
|
+ BigDecimal result=new BigDecimal(0);
|
|
|
+ for (StatisOrderList out : statisOrderLists) {
|
|
|
+ result=result.add(out.getTotal());
|
|
|
+ }
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
@Override
|