<%@ page import="weaver.general.*" %> <%@page import="weaver.conn.RecordSet"%> <%@ page import="com.alibaba.fastjson.JSONObject" %> <%@ page import="java.util.*" %> <%@ page import="java.util.stream.Collectors" %> <%@ page import="com.engine.matfron.entity.OptionVO" %> <%@ page import="java.time.LocalDate" %> <%@ page import="java.time.Period" %> <%@ page import="com.engine.matfron.util.CommonUtils" %> <%@ page language="java" contentType="text/html; charset=UTF-8" %> <% String subcompanyid1 = "62"; JSONObject jsonObject = new JSONObject(); OptionVO OptionVO = getAgeAndSex(subcompanyid1); jsonObject.put("data",OptionVO); %> <%=jsonObject.toString() %> <%! public OptionVO getAgeAndSex(String subcompanyid1) { RecordSet rs = new RecordSet(); LinkedList barSeriesData = new LinkedList<>(); LinkedList barSeriesDataTwo = new LinkedList<>(); List ageArr = Arrays.asList("20及以下","21~25","26~30","31~35","36~40","41~45","46~50","51~55","56及以上"); String where = " and (belongto is null or belongto = -1 ) and subcompanyid1 = "+subcompanyid1; List birthdayListMen = new ArrayList<>(); rs.executeQuery(" select birthday from hrmresource where status < 4 "+where+" and sex is not null and birthday is not null and birthday <> '' and sex = 0"); while (rs.next()) { birthdayListMen.add(Util.null2String(rs.getString("birthday"))); } List menAge = birthdayListMen.stream().map(birthday -> { LocalDate birthdate = LocalDate.parse(birthday); LocalDate now = LocalDate.now(); return Period.between(birthdate, now).getYears(); }).collect(Collectors.toList()); for (int i = 0; i < ageArr.size(); i++) { if(i==0){ String split0 = "0"; String split1 = "20"; List collect = menAge.stream().filter(item -> item >= Integer.parseInt(split0) && item <= Integer.parseInt(split1)).collect(Collectors.toList()); barSeriesData.add(collect.size()); }else if(i==(ageArr.size()-1)){ String split0 = "56"; String split1 = "100"; List collect = menAge.stream().filter(item -> item >= Integer.parseInt(split0) && item <= Integer.parseInt(split1)).collect(Collectors.toList()); barSeriesData.add(collect.size()); }else{ String[] split = ageArr.get(i).split("~"); List collect = menAge.stream().filter(item -> item >= Integer.parseInt(split[0]) && item <= Integer.parseInt(split[1])).collect(Collectors.toList()); barSeriesData.add(collect.size()); } } int yMax = barSeriesData.stream().max(Integer::compare).orElse(0); List birthdayListWomen = new ArrayList<>(); rs.executeQuery("select birthday from hrmresource where status < 4 "+where+" and sex is not null and birthday is not null and sex = 1"); while (rs.next()) { birthdayListWomen.add(Util.null2String(rs.getString("birthday"))); } List womenAge = birthdayListWomen.stream() .map(birthday -> { LocalDate birthdate = LocalDate.parse(birthday); LocalDate now = LocalDate.now(); return Period.between(birthdate, now).getYears(); }) .collect(Collectors.toList()); LinkedList list = new LinkedList<>(); for (int i = 0; i < ageArr.size(); i++) { String[] split = ageArr.get(i).split("~"); List collect = womenAge.stream().filter(item -> item >= Integer.parseInt(split[0]) && item <= Integer.parseInt(split[1])).collect(Collectors.toList()); barSeriesDataTwo.add(-collect.size()); list.add(collect.size()); } int yMin = -(list.stream().max(Integer::compare).orElse(0)); int sum = yMax > Math.abs(yMin) ? yMax : yMin ; int divisor = sum % 6; sum = sum + (6 - divisor) + 12; int ceil =(int) Math.ceil((double) sum / 3); int roundedMax = CommonUtils.roundedMax(ceil, 6); return OptionVO.builder() .titleText("年龄与性别分析") .yMin(-roundedMax) .yMax(roundedMax) .yInterval(ceil) .barSeriesData(barSeriesData) .barSeriesDataTwo(barSeriesDataTwo) .build(); } %>