package platform.modules.government.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import platform.common.Constant; import platform.common.util.DateUtil; import platform.common.util.StringUtils; import platform.modules.company.dao.StockLandDao; import platform.modules.company.dto.StockLandStatistic; import platform.modules.government.entity.Street; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * 用地统计service */ @Service @Transactional public class LandStatisticsService { @Autowired private StockLandDao stockLandDao; @Autowired private StreetService streetService; /** * @Author: huZhiHao * @Description: 获取待审核 审核中 已审核 统计 * @Date: 2020/1/13 * @Params: * @Return: **/ public Object getApproveStatusStatistic(String streetId) { List stockLandList = stockLandDao.findListByStreetId(streetId, null); //创建待处理,处理中,已处理 List pending = new ArrayList<>(), processing = new ArrayList<>(), processed = new ArrayList<>(); //创建待处理具体 Integer pendingCompany = 0, pendingStreet = 0; //创建处理中具体 Integer processingLocalAudit = 0, processingDistribute = 0, processingEasyProcess = 0, processingComplianceAudit = 0, processingUnitedAudit = 0, processingGovernmentAudit = 0, processingHGXSCTG = 0; //创建已处理具体 Integer processedPassed = 0, processedReject = 0, processedNotPass = 0; for (StockLandStatistic stockLand : stockLandList) { //待审核 if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.LOCAL_AUDIT) && Objects.equals(stockLand.getApproval_round(), "1") && Objects.equals(stockLand.getApply_user_type(), Constant.UserType.STREET + "")) { //处于属地初审 轮次为1 申请人类型为街道 pendingStreet++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.LOCAL_AUDIT) && Objects.equals(stockLand.getApproval_round(), "1") && Objects.equals(stockLand.getApply_user_type(), Constant.UserType.COMPANY + "")) { //处于属地初审 轮次为1 申请人类型为企业 pendingCompany++; } //审核中 if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.LOCAL_AUDIT) && !Objects.equals(stockLand.getApproval_round(), "1")) { //处于属地初审 轮次为2 processingLocalAudit++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PENDING_DISTRIBUTE)) { //处于待分发 processingDistribute++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.JYLCHQ)) { //处于简易流程 processingEasyProcess++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.COMPLIANCE_AUDIT)) { //处于合规性审查 processingComplianceAudit++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.UNITED_AUDIT)) { //处于联合评议 processingUnitedAudit++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.GOVERNMENT_AUDIT)) { //处于区政府审核 processingGovernmentAudit++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.HGXSCTG)) { //处于合规性审查汇总 processingGovernmentAudit++; } //已审核 if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.APPROVED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTAPPROVED)) { //通过 processedPassed++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTAPPROVED)) { //不通过 processedNotPass++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.REJECT)) { //退回 processedReject++; } } Map temp; //装配待处理具体 temp = new HashMap<>(); temp.put("name", "企业申请"); temp.put("value", pendingCompany); pending.add(temp); temp = new HashMap<>(); temp.put("name", "街道代理"); temp.put("value", pendingStreet); pending.add(temp); //装配处理中具体 temp = new HashMap<>(); temp.put("name", "属地初审"); temp.put("value", processingLocalAudit); processing.add(temp); temp = new HashMap<>(); temp.put("name", "待分发"); temp.put("value", processingDistribute); processing.add(temp); temp = new HashMap<>(); temp.put("name", "简易流程办理中"); temp.put("value", processingEasyProcess); processing.add(temp); temp = new HashMap<>(); temp.put("name", "合规性审查"); temp.put("value", processingComplianceAudit); processing.add(temp); temp = new HashMap<>(); temp.put("name", "联合评议"); temp.put("value", processingUnitedAudit); processing.add(temp); temp = new HashMap<>(); temp.put("name", "区政府审核"); temp.put("value", processingGovernmentAudit); processing.add(temp); temp = new HashMap<>(); temp.put("name", "合规性审查汇总"); temp.put("value", processingHGXSCTG); processing.add(temp); //装配已处理具体 temp = new HashMap<>(); temp.put("name", "通过"); temp.put("value", processedPassed); processed.add(temp); temp = new HashMap<>(); temp.put("name", "不通过"); temp.put("value", processedNotPass); processed.add(temp); temp = new HashMap<>(); temp.put("name", "退回"); temp.put("value", processedReject); processed.add(temp); //最后装配一起返回 Map map = new HashMap<>(); map.put("pending", pending); map.put("processing", processing); map.put("processed", processed); return map; } /** * @Author: huZhiHao * @Description: 获取月度分类统计 * @Date: 2020/1/13 * @Params: * @Return: **/ public Object getTypeStatistic(String streetId, String startTime, String endTime) { List stockLandList = stockLandDao.findListByStreetIdAndTime(streetId, startTime, endTime); //创建 申请数量 退回数量 通过数量 不通过数量 列表 List apply = new ArrayList<>(), reject = new ArrayList<>(), pass = new ArrayList<>(), notPass = new ArrayList<>(); //创建存量工业用地用途依法改变 申请数量 退回数量 通过数量 不通过数量 Integer useChangeApplyNum = 0, useChangeRejectNum = 0, useChangePassNum = 0, useChangeNotPassNum = 0; //创建存量工业用地项目公司股权(结构)变更登记 退回数量 通过数量 不通过数量 Integer equityStructureChangeApplyNum = 0, equityStructureChangeRejectNum = 0, equityStructureChangePassNum = 0, equityStructureChangeNotPassNum = 0; //创建存量工业用地不动产权权属转移登记 退回数量 通过数量 不通过数量 Integer immovablesChangeApplyNum = 0, immovablesChangeRejectNum = 0, immovablesChangePassNum = 0, immovablesChangeNotPassNum = 0; //创建存量工业用地房屋出租 退回数量 通过数量 不通过数量 Integer rentApplyNum = 0, rentRejectNum = 0, rentPassNum = 0, rentNotPassNum = 0; //创建X轴坐标名称 List xAxisName = new ArrayList<>(); //创建通过率 int rentPassRate, useChangePassRate, immovablesChangePassRate, equityStructureChangePassRate; for (StockLandStatistic stockLand : stockLandList) { if (Objects.equals(stockLand.getApply_type(), Constant.LandApplyType.RENT)) { //存量工业用地房屋出租 rentApplyNum++; if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTPASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.APPROVED)) { //通过 rentPassNum++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTAPPROVED)) { //不通过 rentNotPassNum++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.REJECT)) { //退回 rentRejectNum++; } } else if (Objects.equals(stockLand.getApply_type(), Constant.LandApplyType.EQUITY_STRUCTURE_CHANGE)) { //存量工业用地项目公司股权(结构)变更登记 equityStructureChangeApplyNum++; if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTPASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.APPROVED)) { //通过 equityStructureChangePassNum++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTAPPROVED)) { //不通过 equityStructureChangeNotPassNum++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.REJECT)) { //退回 equityStructureChangeRejectNum++; } } else if (Objects.equals(stockLand.getApply_type(), Constant.LandApplyType.IMMOVABLES_CHANGE)) { //存量工业用地不动产权权属转移登记 immovablesChangeApplyNum++; if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTPASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.APPROVED)) { //通过 immovablesChangePassNum++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTAPPROVED)) { //不通过 immovablesChangeNotPassNum++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.REJECT)) { //退回 immovablesChangeRejectNum++; } } else if (Objects.equals(stockLand.getApply_type(), Constant.LandApplyType.USE_CHANGE)) { //存量工业用地用途依法改变 useChangeApplyNum++; if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTPASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.APPROVED)) { //通过 useChangePassNum++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTAPPROVED)) { //不通过 useChangeNotPassNum++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.REJECT)) { //退回 useChangeRejectNum++; } } } List listMap = new ArrayList<>(); Map temp; //装配申请数量具体 //存量工业用地房屋出租 apply.add(rentApplyNum); //存量工业用地用途依法改变 apply.add(useChangeApplyNum); //存量工业用地不动产权权属转移登记 apply.add(immovablesChangeApplyNum); //存量工业用地项目公司股权(结构)变更登记 apply.add(equityStructureChangeApplyNum); temp = new HashMap<>(); temp.put("name", "申请数量"); temp.put("type", "bar"); temp.put("data", apply); listMap.add(temp); //存量工业用地房屋出租 reject.add(rentRejectNum); //存量工业用地用途依法改变 reject.add(useChangeRejectNum); //存量工业用地不动产权权属转移登记 reject.add(immovablesChangeRejectNum); //存量工业用地项目公司股权(结构)变更登记 reject.add(equityStructureChangeRejectNum); temp = new HashMap<>(); temp.put("name", "退回数量"); temp.put("type", "bar"); temp.put("data", reject); listMap.add(temp); //存量工业用地房屋出租 pass.add(rentPassNum); //存量工业用地用途依法改变 pass.add(useChangePassNum); //存量工业用地不动产权权属转移登记 pass.add(immovablesChangePassNum); //存量工业用地项目公司股权(结构)变更登记 pass.add(equityStructureChangePassNum); temp = new HashMap<>(); temp.put("name", "审核通过"); temp.put("type", "bar"); temp.put("data", pass); listMap.add(temp); //存量工业用地房屋出租 notPass.add(rentNotPassNum); //存量工业用地用途依法改变 notPass.add(useChangeNotPassNum); //存量工业用地不动产权权属转移登记 notPass.add(immovablesChangeNotPassNum); //存量工业用地项目公司股权(结构)变更登记 notPass.add(equityStructureChangeNotPassNum); temp = new HashMap<>(); temp.put("name", "审核不通过"); temp.put("type", "bar"); temp.put("data", notPass); listMap.add(temp); rentPassRate = rentApplyNum == 0 ? 0 : rentPassNum * 100 / rentApplyNum; useChangePassRate = useChangeApplyNum == 0 ? 0 : useChangePassNum * 100 / useChangeApplyNum; immovablesChangePassRate = immovablesChangeApplyNum == 0 ? 0 : immovablesChangePassNum * 100 / immovablesChangeApplyNum; equityStructureChangePassRate = equityStructureChangeApplyNum == 0 ? 0 : equityStructureChangePassNum * 100 / equityStructureChangeApplyNum; xAxisName.add("存量工业用地房屋出租 \n\n通过率:" + rentPassRate + "%"); xAxisName.add("存量工业用地用途依法改变 \n\n通过率:" + useChangePassRate + "%"); xAxisName.add("存量工业用地不动产权权属转移登记 \n\n通过率:" + immovablesChangePassRate + "%"); xAxisName.add("存量工业用地项目公司股权(结构)变更登记 \n\n通过率:" + equityStructureChangePassRate + "%"); Map ret = new HashMap(); ret.put("data", listMap); ret.put("xAxisName", xAxisName); return ret; } /** * @Author: huZhiHao * @Description: 获取月度审核结果对比 * @Date: 2020/1/13 * @Params: * @Return: **/ public Object getMonthlyApproveResult() { String[] timeMorning = new String[12]; String[] timeEvening = new String[12]; Date date1 = new Date();//获取当前时间 String endTime = DateUtil.getTimeString(date1); List listMap = new ArrayList<>(); //创建X轴坐标名称 List xAxisName = new ArrayList<>(); try { for (int i = 0; i <= 11; i++) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date1); calendar.add(Calendar.MONTH, i - 11);//当前时间前去一个月,即一个月前的时间 Date date2 = calendar.getTime();//获取一年前的时间,或者一个月前的时间 String dateString = DateUtil.getTimeString(date2); String date_str = dateString.split(" ")[0]; Calendar cale = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); cale.setTime(formatter.parse(date_str)); cale.add(Calendar.MONTH, 0); cale.set(Calendar.DAY_OF_MONTH, 1); timeMorning[i] = formatter.format(cale.getTime()) + " 00:00:00"; // 当月第一天 2019-02-01 cale.add(Calendar.MONTH, 1); cale.set(Calendar.DAY_OF_MONTH, 0); timeEvening[i] = formatter.format(cale.getTime()) + " 23:59:59"; // 当月最后一天 2019-02-28 } List stockLandList = stockLandDao.findListByStreetIdAndTime(null, timeMorning[0], endTime); //创建 通过 不通过 退回 数组 int[] passNum = new int[12], notPassNum = new int[12], rejectNum = new int[12]; for (int i = 0; i < 12; i++) { String[] timeArray = timeMorning[i].split("-"); xAxisName.add(timeArray[0] + "年" + timeArray[1] + "月"); for (StockLandStatistic stockLand : stockLandList) { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); if (dateFormat.parse(timeMorning[i]).getTime() <= dateFormat.parse(stockLand.getCreate_time()).getTime() && dateFormat.parse(timeEvening[i]).getTime() >= dateFormat.parse(stockLand.getCreate_time()).getTime()) { if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTPASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.APPROVED)) { //通过 passNum[i]++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTAPPROVED)) { //不通过 notPassNum[i]++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.REJECT)) { //退回 rejectNum[i]++; } } } } Map temp; temp = new HashMap<>(); temp.put("name", "审核通过"); temp.put("type", "bar"); temp.put("stack", "group1"); temp.put("data", passNum); listMap.add(temp); temp = new HashMap<>(); temp.put("name", "审核不通过"); temp.put("type", "bar"); temp.put("stack", "group1"); temp.put("data", notPassNum); listMap.add(temp); temp = new HashMap<>(); temp.put("name", "审核退回"); temp.put("type", "bar"); temp.put("stack", "group1"); temp.put("data", rejectNum); listMap.add(temp); } catch (ParseException e) { e.printStackTrace(); } Map ret = new HashMap(); ret.put("data", listMap); ret.put("xAxisName", xAxisName); return ret; } /** * @Author: huZhiHao * @Description: 月度审核统计表 * @Date: 2020/1/13 * @Params: * @Return: **/ public Object getMonthlyApproveStatistic(String streetId, String startTime, String endTime) { try { /*计算日期*/ String[] timeMorning = null; String[] timeEvening = null; Date date1 = new Date();//获取当前时间 int mounthCount = 12; //如果未传开始结束时间 默认当前月前十二个月 if (StringUtils.isEmpty(startTime) && StringUtils.isEmpty(endTime)) { mounthCount = 12; endTime = DateUtil.getTimeString(date1); } else if (StringUtils.isEmpty(startTime) && StringUtils.isNotEmpty(endTime)) { mounthCount = 12; date1 = DateUtil.parseTimeStringToDate(endTime, "yyyy-MM-dd"); } else if (StringUtils.isNotEmpty(startTime) && StringUtils.isEmpty(endTime)) { Date startDate = DateUtil.parseTimeStringToDate(startTime, "yyyy-MM-dd"); endTime = DateUtil.getTimeString(date1); Date endDate = DateUtil.parseTimeStringToDate(endTime, "yyyy-MM-dd"); mounthCount = DateUtil.getMonthDiff(startDate, endDate); } else { Date startDate = DateUtil.parseTimeStringToDate(startTime, "yyyy-MM-dd"); Date endDate = DateUtil.parseTimeStringToDate(endTime, "yyyy-MM-dd"); date1 = DateUtil.parseTimeStringToDate(endTime, "yyyy-MM-dd"); mounthCount = DateUtil.getMonthDiff(startDate, endDate); } timeMorning = new String[mounthCount]; timeEvening = new String[mounthCount]; for (int i = 0; i < mounthCount; i++) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date1); calendar.add(Calendar.MONTH, i - (mounthCount - 1));//当前时间前去一个月,即一个月前的时间 Date date2 = calendar.getTime();//获取一年前的时间,或者一个月前的时间 String dateString = DateUtil.getTimeString(date2); String date_str = dateString.split(" ")[0]; Calendar cale = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); cale.setTime(formatter.parse(date_str)); cale.add(Calendar.MONTH, 0); cale.set(Calendar.DAY_OF_MONTH, 1); timeMorning[i] = formatter.format(cale.getTime()) + " 00:00:00"; // 当月第一天 cale.add(Calendar.MONTH, 1); cale.set(Calendar.DAY_OF_MONTH, 0); timeEvening[i] = formatter.format(cale.getTime()) + " 23:59:59"; // 当月最后一天 } if (StringUtils.isEmpty(startTime) || StringUtils.isEmpty(endTime)) { startTime = timeMorning[0]; } /*计算日期*/ List stockLandList = stockLandDao.findListByStreetIdAndTime(streetId, startTime, endTime); Map map = null; List resultList = new ArrayList<>(); //初始化统计值 int rentApplyAmountNum = 0, rentPassAmountNum = 0, useChangeApplyAmountNum = 0, useChangePassAmountNum = 0, immovablesChangeApplyAmountNum = 0, immovablesChangePassAmountNum = 0, equityStructureChangeApplyAmountNum = 0, equityStructureChangePassAmountNum = 0, equityStructureChangeSummaryProcedureApplyAmountNum = 0, equityStructureChangeSummaryProcedurePassAmountNum = 0, immovablesChangeSummaryProcedureApplyAmountNum = 0, immovablesChangeSummaryProcedurePassAmountNum = 0, totalApplyAmountNum = 0, totalPassAmountNum = 0; for (int i = 0; i < mounthCount; i++) { map = new HashMap<>(); //行名称 String[] timeArray = timeMorning[i].split("-"); // stockLandMonthlyApproveStatistic.setRowName(timeArray[0] + "年" + timeArray[1] + "月"); map.put("rowName", timeArray[0] + "年" + timeArray[1] + "月"); //初始化统计值 int rentApplyNum = 0, rentPassNum = 0, useChangeApplyNum = 0, useChangePassNum = 0, immovablesChangeApplyNum = 0, immovablesChangePassNum = 0, equityStructureChangeApplyNum = 0, equityStructureChangePassNum = 0, equityStructureChangeSummaryProcedureApplyNum = 0, equityStructureChangeSummaryProcedurePassNum = 0, immovablesChangeSummaryProcedureApplyNum = 0, immovablesChangeSummaryProcedurePassNum = 0, totalApplyNum = 0, totalPassNum = 0; for (StockLandStatistic stockLand : stockLandList) { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); if (dateFormat.parse(timeMorning[i]).getTime() <= dateFormat.parse(stockLand.getCreate_time()).getTime() && dateFormat.parse(timeEvening[i]).getTime() >= dateFormat.parse(stockLand.getCreate_time()).getTime()) { if (Objects.equals(stockLand.getApply_type(), Constant.LandApplyType.RENT)) { //存量工业用地房屋出租 totalApplyNum++; rentApplyNum++; if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTPASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.APPROVED)) { //通过 totalPassNum++; rentPassNum++; } } else if (Objects.equals(stockLand.getApply_type(), Constant.LandApplyType.USE_CHANGE)) { //存量工业用地用途依法改变 totalApplyNum++; useChangeApplyNum++; if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTPASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.APPROVED)) { //通过 totalPassNum++; useChangePassNum++; } } else if (Objects.equals(stockLand.getApply_type(), Constant.LandApplyType.IMMOVABLES_CHANGE)) { //存量工业用地不动产权权属转移登记 totalApplyNum++; immovablesChangeApplyNum++; //是否简易流程 if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.JYLCHQ)) { immovablesChangeSummaryProcedureApplyNum++; } if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTPASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.APPROVED)) { //通过 totalPassNum++; immovablesChangePassNum++; //是否简易流程 if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.EASY_PROCESS_APPROVED)) { immovablesChangeSummaryProcedurePassNum++; } } } else if (Objects.equals(stockLand.getApply_type(), Constant.LandApplyType.EQUITY_STRUCTURE_CHANGE)) { //存量工业用地项目公司股权(结构)变更登记 totalApplyNum++; equityStructureChangeApplyNum++; //是否简易流程 if (StringUtils.isNotEmpty(stockLand.getSummary_procedure())) { equityStructureChangeSummaryProcedureApplyNum++; } if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTPASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.APPROVED)) { //通过 totalPassNum++; equityStructureChangePassNum++; //是否简易流程 if (StringUtils.isNotEmpty(stockLand.getSummary_procedure())) { equityStructureChangeSummaryProcedurePassNum++; } } } } } rentApplyAmountNum += rentApplyNum; rentPassAmountNum += rentPassNum; useChangeApplyAmountNum += useChangeApplyNum; useChangePassAmountNum += useChangePassNum; immovablesChangeApplyAmountNum += immovablesChangeApplyNum; immovablesChangePassAmountNum += immovablesChangePassNum; equityStructureChangeApplyAmountNum += equityStructureChangeApplyNum; equityStructureChangePassAmountNum += equityStructureChangePassNum; equityStructureChangeSummaryProcedureApplyAmountNum += equityStructureChangeSummaryProcedureApplyNum; equityStructureChangeSummaryProcedurePassAmountNum += equityStructureChangeSummaryProcedurePassNum; immovablesChangeSummaryProcedureApplyAmountNum += immovablesChangeSummaryProcedureApplyNum; immovablesChangeSummaryProcedurePassAmountNum += immovablesChangeSummaryProcedurePassNum; totalApplyAmountNum += totalApplyNum; totalPassAmountNum += totalPassNum; map.put("rentApplyNum", rentApplyNum); map.put("rentPassNum", rentPassNum); map.put("rentPassRate", rentApplyNum == 0 ? 0 : rentPassNum * 100 / rentApplyNum); map.put("useChangeApplyNum", useChangeApplyNum); map.put("useChangePassNum", useChangePassNum); map.put("useChangePassRate", useChangeApplyNum == 0 ? 0 : useChangePassNum * 100 / useChangeApplyNum); map.put("immovablesChangeApplyNum", immovablesChangeApplyNum + "(" + immovablesChangeSummaryProcedureApplyNum + ")"); map.put("immovablesChangePassNum", immovablesChangePassNum + "(" + immovablesChangeSummaryProcedurePassNum + ")"); map.put("immovablesChangePassRate", (immovablesChangeApplyNum == 0 ? 0 : immovablesChangePassNum * 100 / immovablesChangeApplyNum) + "%(" + (immovablesChangeSummaryProcedureApplyNum == 0 ? 0 : immovablesChangeSummaryProcedurePassNum * 100 / immovablesChangeSummaryProcedureApplyNum) + "%)" ); map.put("equityStructureChangeApplyNum", equityStructureChangeApplyNum + "(" + equityStructureChangeSummaryProcedureApplyNum + ")"); map.put("equityStructureChangePassNum", equityStructureChangePassNum + "(" + equityStructureChangeSummaryProcedurePassNum + ")"); map.put("equityStructureChangePassRate", (equityStructureChangeApplyNum == 0 ? 0 : equityStructureChangePassNum * 100 / equityStructureChangeApplyNum) + "%(" + (equityStructureChangeSummaryProcedureApplyNum == 0 ? 0 : equityStructureChangeSummaryProcedurePassNum * 100 / equityStructureChangeSummaryProcedureApplyNum) + "%)" ); map.put("totalApplyNum", totalApplyNum); map.put("totalPassNum", totalPassNum); map.put("totalPassRate", totalApplyNum == 0 ? 0 : totalPassNum * 100 / totalApplyNum); resultList.add(map); } map = new HashMap<>(); map.put("rowName", "合计"); map.put("rentApplyNum", rentApplyAmountNum); map.put("rentPassNum", rentPassAmountNum); map.put("rentPassRate", rentApplyAmountNum == 0 ? 0 : rentPassAmountNum * 100 / rentApplyAmountNum); map.put("useChangeApplyNum", useChangeApplyAmountNum); map.put("useChangePassNum", useChangePassAmountNum); map.put("useChangePassRate", useChangeApplyAmountNum == 0 ? 0 : useChangePassAmountNum * 100 / useChangeApplyAmountNum); map.put("immovablesChangeApplyNum", immovablesChangeApplyAmountNum+ "(" + immovablesChangeSummaryProcedureApplyAmountNum + ")"); map.put("immovablesChangePassNum", immovablesChangePassAmountNum+ "(" + immovablesChangeSummaryProcedurePassAmountNum + ")"); map.put("immovablesChangePassRate", (immovablesChangeApplyAmountNum == 0 ? 0 : immovablesChangePassAmountNum * 100 / immovablesChangeApplyAmountNum) + "%(" + (immovablesChangeSummaryProcedureApplyAmountNum == 0 ? 0 : immovablesChangeSummaryProcedurePassAmountNum * 100 / immovablesChangeSummaryProcedureApplyAmountNum) + "%)" ); map.put("equityStructureChangeApplyNum", equityStructureChangeApplyAmountNum + "(" + equityStructureChangeSummaryProcedureApplyAmountNum + ")"); map.put("equityStructureChangePassNum", equityStructureChangePassAmountNum + "(" + equityStructureChangeSummaryProcedurePassAmountNum + ")"); map.put("equityStructureChangePassRate", (equityStructureChangeApplyAmountNum == 0 ? 0 : equityStructureChangePassAmountNum * 100 / equityStructureChangeApplyAmountNum) + "%(" + (equityStructureChangeSummaryProcedureApplyAmountNum == 0 ? 0 : equityStructureChangeSummaryProcedurePassAmountNum * 100 / equityStructureChangeSummaryProcedureApplyAmountNum) + "%)" ); map.put("totalApplyNum", totalApplyAmountNum); map.put("totalPassNum", totalPassAmountNum); map.put("totalPassRate", totalApplyAmountNum == 0 ? 0 : totalPassAmountNum * 100 / totalApplyAmountNum); resultList.add(map); return resultList; } catch (ParseException e) { e.printStackTrace(); } return null; } /** * @Author: huZhiHao * @Description: 板块统计表 * @Date: 2020/1/13 * @Params: * @Return: **/ public Object getPlateStatistic(String startTime, String endTime) { //所有街道列表 List streetList = streetService.findList(); int[] rentApplyNum = new int[streetList.size() + 1], rentRejectNum = new int[streetList.size() + 1], rentPassNum = new int[streetList.size() + 1], rentNotPassNum = new int[streetList.size() + 1], rentPassRate = new int[streetList.size() + 1]; int[] useChangeApplyNum = new int[streetList.size() + 1], useChangeRejectNum = new int[streetList.size() + 1], useChangePassNum = new int[streetList.size() + 1], useChangeNotPassNum = new int[streetList.size() + 1], useChangePassRate = new int[streetList.size() + 1]; int[] immovablesChangeApplyNum = new int[streetList.size() + 1], immovablesChangeRejectNum = new int[streetList.size() + 1], immovablesChangePassNum = new int[streetList.size() + 1], immovablesChangeNotPassNum = new int[streetList.size() + 1], immovablesChangePassRate = new int[streetList.size() + 1]; int[] equityStructureChangeApplyNum = new int[streetList.size() + 1], equityStructureChangeRejectNum = new int[streetList.size() + 1], equityStructureChangePassNum = new int[streetList.size() + 1], equityStructureChangeNotPassNum = new int[streetList.size() + 1], equityStructureChangePassRate = new int[streetList.size() + 1]; int[] immovablesChangeSummaryProcedureApplyNum = new int[streetList.size() + 1], immovablesChangeSummaryProcedurePassNum = new int[streetList.size() + 1], immovablesChangeSummaryProcedureNotPassNum = new int[streetList.size() + 1], immovablesChangeSummaryProcedureRejectNum = new int[streetList.size() + 1], immovablesChangeSummaryProcedurePassRate = new int[streetList.size() + 1]; int[] equityStructureChangeSummaryProcedureApplyNum = new int[streetList.size() + 1], equityStructureChangeSummaryProcedurePassNum = new int[streetList.size() + 1], equityStructureChangeSummaryProcedureNotPassNum = new int[streetList.size() + 1], equityStructureChangeSummaryProcedureRejectNum = new int[streetList.size() + 1], equityStructureChangeSummaryProcedurePassRate = new int[streetList.size() + 1]; int[] applyNum = new int[streetList.size() + 1], rejectNum = new int[streetList.size() + 1], passNum = new int[streetList.size() + 1], notPassNum = new int[streetList.size() + 1], passRate = new int[streetList.size() + 1]; String[] immovablesChangeApplyNumStr = new String[streetList.size() + 1], immovablesChangeRejectNumStr = new String[streetList.size() + 1], immovablesChangePassNumStr = new String[streetList.size() + 1], immovablesChangeNotPassNumStr = new String[streetList.size() + 1], immovablesChangePassRateStr = new String[streetList.size() + 1]; String[] equityStructureChangeApplyNumStr = new String[streetList.size() + 1], equityStructureChangeRejectNumStr = new String[streetList.size() + 1], equityStructureChangePassNumStr = new String[streetList.size() + 1], equityStructureChangeNotPassNumStr = new String[streetList.size() + 1], equityStructureChangePassRateStr = new String[streetList.size() + 1]; //存量用地信息 List stockLandList = stockLandDao.findListByStreetIdAndTime(null, startTime, endTime); for (StockLandStatistic stockLand : stockLandList) { if (Objects.equals(stockLand.getApply_type(), Constant.LandApplyType.RENT)) { //存量工业用地房屋出租 for (int i = 0; i < streetList.size(); i++) { //判断是哪个街道 if (Objects.equals(stockLand.getStreet_id(), streetList.get(i).getId().toString())) { applyNum[i]++; rentApplyNum[i]++; applyNum[streetList.size()]++; rentApplyNum[streetList.size()]++; if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTPASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.APPROVED)) { //通过 passNum[i]++; rentPassNum[i]++; passNum[streetList.size()]++; rentPassNum[streetList.size()]++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTAPPROVED)) { //不通过 notPassNum[i]++; rentNotPassNum[i]++; notPassNum[streetList.size()]++; rentNotPassNum[streetList.size()]++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.REJECT)) { //退回 rejectNum[i]++; rentRejectNum[i]++; rejectNum[streetList.size()]++; rentRejectNum[streetList.size()]++; } } } } else if (Objects.equals(stockLand.getApply_type(), Constant.LandApplyType.USE_CHANGE)) { //存量工业用地用途依法改变 for (int i = 0; i < streetList.size(); i++) { //判断是哪个街道 if (Objects.equals(stockLand.getStreet_id(), streetList.get(i).getId().toString())) { applyNum[i]++; useChangeApplyNum[i]++; applyNum[streetList.size()]++; useChangeApplyNum[streetList.size()]++; if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTPASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.APPROVED)) { //通过 passNum[i]++; useChangePassNum[i]++; passNum[streetList.size()]++; useChangePassNum[streetList.size()]++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTAPPROVED)) { //不通过 notPassNum[i]++; useChangeNotPassNum[i]++; notPassNum[streetList.size()]++; useChangeNotPassNum[streetList.size()]++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.REJECT)) { //退回 rejectNum[i]++; useChangeRejectNum[i]++; rejectNum[streetList.size()]++; useChangeRejectNum[streetList.size()]++; } } } } else if (Objects.equals(stockLand.getApply_type(), Constant.LandApplyType.IMMOVABLES_CHANGE)) { //存量工业用地不动产权权属转移登记 for (int i = 0; i < streetList.size(); i++) { //判断是哪个街道 if (Objects.equals(stockLand.getStreet_id(), streetList.get(i).getId().toString())) { applyNum[i]++; immovablesChangeApplyNum[i]++; applyNum[streetList.size()]++; immovablesChangeApplyNum[streetList.size()]++; //是否简易流程 if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.JYLCHQ)) { immovablesChangeSummaryProcedureApplyNum[i]++; immovablesChangeSummaryProcedureApplyNum[streetList.size()]++; } if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTPASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.APPROVED)) { //通过 passNum[i]++; immovablesChangePassNum[i]++; passNum[streetList.size()]++; immovablesChangePassNum[streetList.size()]++; //是否简易流程 if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.EASY_PROCESS_APPROVED)) { immovablesChangeSummaryProcedurePassNum[i]++; immovablesChangeSummaryProcedurePassNum[streetList.size()]++; } } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTAPPROVED)) { //不通过 notPassNum[i]++; immovablesChangeNotPassNum[i]++; notPassNum[streetList.size()]++; immovablesChangeNotPassNum[streetList.size()]++; //是否简易流程 if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.EASY_PROCESS_DENY)) { immovablesChangeSummaryProcedureNotPassNum[i]++; immovablesChangeSummaryProcedureNotPassNum[streetList.size()]++; } } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.REJECT)) { //退回 rejectNum[i]++; immovablesChangeRejectNum[i]++; rejectNum[streetList.size()]++; immovablesChangeRejectNum[streetList.size()]++; //是否简易流程 if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.EASY_PROCESS_DENY)) { immovablesChangeSummaryProcedureRejectNum[i]++; immovablesChangeSummaryProcedureRejectNum[streetList.size()]++; } } } } } else if (Objects.equals(stockLand.getApply_type(), Constant.LandApplyType.EQUITY_STRUCTURE_CHANGE)) { //存量工业用地项目公司股权(结构)变更登记 for (int i = 0; i < streetList.size(); i++) { //判断是哪个街道 if (Objects.equals(stockLand.getStreet_id(), streetList.get(i).getId().toString())) { applyNum[i]++; equityStructureChangeApplyNum[i]++; applyNum[streetList.size()]++; equityStructureChangeApplyNum[streetList.size()]++; //是否简易流程 if (StringUtils.isNotEmpty(stockLand.getSummary_procedure())) { equityStructureChangeSummaryProcedureApplyNum[i]++; equityStructureChangeSummaryProcedureApplyNum[streetList.size()]++; } if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTPASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.APPROVED)) { //通过 passNum[i]++; equityStructureChangePassNum[i]++; passNum[streetList.size()]++; equityStructureChangePassNum[streetList.size()]++; //是否简易流程 if (StringUtils.isNotEmpty(stockLand.getSummary_procedure())) { equityStructureChangeSummaryProcedurePassNum[i]++; equityStructureChangeSummaryProcedurePassNum[streetList.size()]++; } } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTAPPROVED)) { //不通过 notPassNum[i]++; equityStructureChangeNotPassNum[i]++; notPassNum[streetList.size()]++; equityStructureChangeNotPassNum[streetList.size()]++; //是否简易流程 if (StringUtils.isNotEmpty(stockLand.getSummary_procedure())) { equityStructureChangeSummaryProcedureNotPassNum[i]++; equityStructureChangeSummaryProcedureNotPassNum[streetList.size()]++; } } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.REJECT)) { //退回 rejectNum[i]++; equityStructureChangeRejectNum[i]++; rejectNum[streetList.size()]++; equityStructureChangeRejectNum[streetList.size()]++; //是否简易流程 if (StringUtils.isNotEmpty(stockLand.getSummary_procedure())) { equityStructureChangeSummaryProcedureRejectNum[i]++; equityStructureChangeSummaryProcedureRejectNum[streetList.size()]++; } } } } } } Map map = new HashMap(); List applyResultList = new ArrayList<>(); List passResultList = new ArrayList<>(); List notPassResultList = new ArrayList<>(); List rejectResultList = new ArrayList<>(); List passRateResultList = new ArrayList<>(); /*提交数量*/ Map rentApplyNumMap = new HashMap(); rentApplyNumMap.put("name", "存量工业用地房屋出租"); rentApplyNumMap.put("streetNum", rentApplyNum); Map useChangeApplyNumMap = new HashMap(); useChangeApplyNumMap.put("name", "存量工业用地用途依法改变"); useChangeApplyNumMap.put("streetNum", useChangeApplyNum); Map immovablesChangeApplyNumMap = new HashMap(); immovablesChangeApplyNumMap.put("name", "存量工业用地不动产权权属转移登记"); immovablesChangeApplyNumMap.put("streetNum", immovablesChangeApplyNumStr); Map equityStructureChangeApplyNumMap = new HashMap(); equityStructureChangeApplyNumMap.put("name", "存量工业用地项目公司股权(结构)变更登记"); equityStructureChangeApplyNumMap.put("streetNum", equityStructureChangeApplyNumStr); applyResultList.add(rentApplyNumMap); applyResultList.add(useChangeApplyNumMap); applyResultList.add(immovablesChangeApplyNumMap); applyResultList.add(equityStructureChangeApplyNumMap); Map applyNumMap = new HashMap(); applyNumMap.put("name", "提交数量"); applyNumMap.put("num", applyNum); applyNumMap.put("type", applyResultList); /*提交数量*/ /*退回数量*/ Map rentRejectNumMap = new HashMap(); rentRejectNumMap.put("name", "存量工业用地房屋出租"); rentRejectNumMap.put("streetNum", rentRejectNum); Map useChangeRejectNumMap = new HashMap(); useChangeRejectNumMap.put("name", "存量工业用地用途依法改变"); useChangeRejectNumMap.put("streetNum", useChangeRejectNum); Map immovablesChangeRejectNumMap = new HashMap(); immovablesChangeRejectNumMap.put("name", "存量工业用地不动产权权属转移登记"); immovablesChangeRejectNumMap.put("streetNum", immovablesChangeRejectNumStr); Map equityStructureChangeRejectNumMap = new HashMap(); equityStructureChangeRejectNumMap.put("name", "存量工业用地项目公司股权(结构)变更登记"); equityStructureChangeRejectNumMap.put("streetNum", equityStructureChangeRejectNumStr); rejectResultList.add(rentRejectNumMap); rejectResultList.add(useChangeRejectNumMap); rejectResultList.add(immovablesChangeRejectNumMap); rejectResultList.add(equityStructureChangeRejectNumMap); Map rejectNumMap = new HashMap(); rejectNumMap.put("name", "退回数量"); rejectNumMap.put("num", rejectNum); rejectNumMap.put("type", rejectResultList); /*退回数量*/ /*通过数量*/ Map rentPassNumMap = new HashMap(); rentPassNumMap.put("name", "存量工业用地房屋出租"); rentPassNumMap.put("streetNum", rentPassNum); Map useChangePassNumMap = new HashMap(); useChangePassNumMap.put("name", "存量工业用地用途依法改变"); useChangePassNumMap.put("streetNum", useChangePassNum); Map immovablesChangePassNumMap = new HashMap(); immovablesChangePassNumMap.put("name", "存量工业用地不动产权权属转移登记"); immovablesChangePassNumMap.put("streetNum", immovablesChangePassNumStr); Map equityStructureChangePassNumMap = new HashMap(); equityStructureChangePassNumMap.put("name", "存量工业用地项目公司股权(结构)变更登记"); equityStructureChangePassNumMap.put("streetNum", equityStructureChangePassNumStr); passResultList.add(rentPassNumMap); passResultList.add(useChangePassNumMap); passResultList.add(immovablesChangePassNumMap); passResultList.add(equityStructureChangePassNumMap); Map passNumMap = new HashMap(); passNumMap.put("name", "通过数量"); passNumMap.put("num", passNum); passNumMap.put("type", passResultList); /*通过数量*/ /*不通过数量*/ Map rentNotPassNumMap = new HashMap(); rentNotPassNumMap.put("name", "存量工业用地房屋出租"); rentNotPassNumMap.put("streetNum", rentNotPassNum); Map useChangeNotPassNumMap = new HashMap(); useChangeNotPassNumMap.put("name", "存量工业用地用途依法改变"); useChangeNotPassNumMap.put("streetNum", useChangeNotPassNum); Map immovablesChangeNotPassNumMap = new HashMap(); immovablesChangeNotPassNumMap.put("name", "存量工业用地不动产权权属转移登记"); immovablesChangeNotPassNumMap.put("streetNum", immovablesChangeNotPassNumStr); Map equityStructureChangeNotPassNumMap = new HashMap(); equityStructureChangeNotPassNumMap.put("name", "存量工业用地项目公司股权(结构)变更登记"); equityStructureChangeNotPassNumMap.put("streetNum", equityStructureChangeNotPassNumStr); notPassResultList.add(rentNotPassNumMap); notPassResultList.add(useChangeNotPassNumMap); notPassResultList.add(immovablesChangeNotPassNumMap); notPassResultList.add(equityStructureChangeNotPassNumMap); Map notPassNumMap = new HashMap(); notPassNumMap.put("name", "不通过数量"); notPassNumMap.put("num", notPassNum); notPassNumMap.put("type", notPassResultList); /*不通过数量*/ /*通过率*/ for (int i = 0; i <= streetList.size(); i++) { rentPassRate[i] = rentApplyNum[i] == 0 ? 0 : rentPassNum[i] * 100 / rentApplyNum[i]; useChangePassRate[i] = useChangeApplyNum[i] == 0 ? 0 : useChangePassNum[i] * 100 / useChangeApplyNum[i]; immovablesChangePassRate[i] = immovablesChangeApplyNum[i] == 0 ? 0 : immovablesChangePassNum[i] * 100 / immovablesChangeApplyNum[i]; equityStructureChangePassRate[i] = equityStructureChangeApplyNum[i] == 0 ? 0 : equityStructureChangePassNum[i] * 100 / equityStructureChangeApplyNum[i]; immovablesChangeSummaryProcedurePassRate[i] = immovablesChangeSummaryProcedureApplyNum[i] == 0 ? 0 : immovablesChangeSummaryProcedurePassNum[i] * 100 / immovablesChangeSummaryProcedureApplyNum[i]; equityStructureChangeSummaryProcedurePassRate[i] = equityStructureChangeSummaryProcedureApplyNum[i] == 0 ? 0 : equityStructureChangeSummaryProcedurePassNum[i] * 100 / equityStructureChangeSummaryProcedureApplyNum[i]; passRate[i] = applyNum[i] == 0 ? 0 : passNum[i] * 100 / applyNum[i]; equityStructureChangeApplyNumStr[i] = equityStructureChangeApplyNum[i] + "(" + equityStructureChangeSummaryProcedureApplyNum[i] + ")"; equityStructureChangePassNumStr[i] = equityStructureChangePassNum[i] + "(" + equityStructureChangeSummaryProcedurePassNum[i] + ")"; equityStructureChangeNotPassNumStr[i] = equityStructureChangeNotPassNum[i] + "(" + equityStructureChangeSummaryProcedureNotPassNum[i] + ")"; equityStructureChangeRejectNumStr[i] = equityStructureChangeRejectNum[i] + "(" + equityStructureChangeSummaryProcedureRejectNum[i] + ")"; equityStructureChangePassRateStr[i] = equityStructureChangePassRate[i] + "%(" + equityStructureChangeSummaryProcedurePassRate[i] + "%)"; immovablesChangeApplyNumStr[i] = immovablesChangeApplyNum[i] + "(" + immovablesChangeSummaryProcedureApplyNum[i] + ")"; immovablesChangePassNumStr[i] = immovablesChangePassNum[i] + "(" + immovablesChangeSummaryProcedurePassNum[i] + ")"; immovablesChangeNotPassNumStr[i] = immovablesChangeNotPassNum[i] + "(" + immovablesChangeSummaryProcedureNotPassNum[i] + ")"; immovablesChangeRejectNumStr[i] = immovablesChangeRejectNum[i] + "(" + immovablesChangeSummaryProcedureRejectNum[i] + ")"; immovablesChangePassRateStr[i] = immovablesChangePassRate[i] + "%(" + immovablesChangeSummaryProcedurePassRate[i] + "%)"; } Map rentPassRateNumMap = new HashMap(); rentPassRateNumMap.put("name", "存量工业用地房屋出租"); rentPassRateNumMap.put("streetNum", rentPassRate); Map useChangePassRateNumMap = new HashMap(); useChangePassRateNumMap.put("name", "存量工业用地用途依法改变"); useChangePassRateNumMap.put("streetNum", useChangePassRate); Map immovablesChangePassRateNumMap = new HashMap(); immovablesChangePassRateNumMap.put("name", "存量工业用地不动产权权属转移登记"); immovablesChangePassRateNumMap.put("streetNum", immovablesChangePassRateStr); Map equityStructureChangePassRateNumMap = new HashMap(); equityStructureChangePassRateNumMap.put("name", "存量工业用地项目公司股权(结构)变更登记"); equityStructureChangePassRateNumMap.put("streetNum", equityStructureChangePassRateStr); passRateResultList.add(rentPassRateNumMap); passRateResultList.add(useChangePassRateNumMap); passRateResultList.add(immovablesChangePassRateNumMap); passRateResultList.add(equityStructureChangePassRateNumMap); Map passRateMap = new HashMap(); passRateMap.put("name", "通过率"); passRateMap.put("num", passRate); passRateMap.put("type", passRateResultList); /*通过率*/ List data = new ArrayList<>(); data.add(applyNumMap); data.add(rejectNumMap); data.add(passNumMap); data.add(notPassNumMap); data.add(passRateMap); map.put("data", data); Street street1 = new Street(); street1.setName(" "); Street street2 = new Street(); street2.setName("合计"); streetList.add(0, street1); streetList.add(street2); map.put("head", streetList); return map; } /** * @Author: huZhiHao * @Description: 每日统计表 * @Date: 2020/1/13 * @Params: * @Return: **/ public Object getDailyStatistic(String streetId, String startTime, String endTime) throws ParseException { List days = getDaysBetweenTwoDay(startTime, endTime); int mounthCount = days.size(); String[] timeMorning = new String[mounthCount]; String[] timeEvening = new String[mounthCount]; List listMap = new ArrayList<>(); //创建X轴坐标名称 List xAxisName = new ArrayList<>(); for (int i = 0; i < mounthCount; i++) { timeMorning[i] = days.get(i) + " 00:00:00"; timeEvening[i] = days.get(i) + " 23:59:59"; } /*计算日期*/ startTime = startTime + " 00:00:00"; endTime = endTime + " 23:59:59"; List stockLandList = stockLandDao.findListByStreetIdAndTime(streetId, startTime, endTime); //创建 通过 不通过 退回 数组 int[] applyNum = new int[mounthCount], passNum = new int[mounthCount], notPassNum = new int[mounthCount], rejectNum = new int[mounthCount]; for (int i = 0; i < mounthCount; i++) { String[] timeArray = timeMorning[i].split(" ")[0].split("-"); xAxisName.add(timeArray[1] + "月" + timeArray[2] + "日"); for (StockLandStatistic stockLand : stockLandList) { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); if (dateFormat.parse(timeMorning[i]).getTime() <= dateFormat.parse(stockLand.getCreate_time()).getTime() && dateFormat.parse(timeEvening[i]).getTime() >= dateFormat.parse(stockLand.getCreate_time()).getTime()) { applyNum[i]++; if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.PASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTPASSED) || Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.APPROVED)) { //通过 passNum[i]++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.NOTAPPROVED)) { //不通过 notPassNum[i]++; } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.REJECT)) { //退回 rejectNum[i]++; } } } } Map temp; temp = new HashMap<>(); temp.put("name", "提交数量"); temp.put("type", "line"); temp.put("data", applyNum); listMap.add(temp); temp = new HashMap<>(); temp.put("name", "审核通过"); temp.put("type", "line"); temp.put("data", passNum); listMap.add(temp); temp = new HashMap<>(); temp.put("name", "审核不通过"); temp.put("type", "line"); temp.put("data", notPassNum); listMap.add(temp); temp = new HashMap<>(); temp.put("name", "审核退回"); temp.put("type", "line"); temp.put("data", rejectNum); listMap.add(temp); Map ret = new HashMap(); ret.put("data", listMap); ret.put("xAxisName", xAxisName); return ret; } //取一段时间的每一天 public static List getDaysBetweenTwoDay(String dateStart, String dateEnd) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); List dateList = new ArrayList(); try { Date dateOne = sdf.parse(dateStart); Date dateTwo = sdf.parse(dateEnd); Calendar calendar = Calendar.getInstance(); calendar.setTime(dateOne); dateList.add(dateStart); while (calendar.getTime().before(dateTwo)) { //倒序时间,顺序after改before其他相应的改动。 calendar.add(Calendar.DAY_OF_MONTH, 1); dateList.add(sdf.format(calendar.getTime())); } } catch (Exception e) { e.printStackTrace(); } return dateList; } }