weijianghai 1 жил өмнө
commit
7679f1f2e8
100 өөрчлөгдсөн 11708 нэмэгдсэн , 0 устгасан
  1. 644 0
      .gitignore
  2. 153 0
      pom.xml
  3. 6 0
      scripts/rollback.sh
  4. 3 0
      scripts/run.sh
  5. 5 0
      scripts/stop.sh
  6. 7 0
      scripts/update.sh
  7. 13 0
      src/main/java/com/example/GdcFinanceApiApplication.java
  8. 10 0
      src/main/java/com/example/common/exception/BizException.java
  9. 22 0
      src/main/java/com/example/common/exception/MyRuntimeException.java
  10. 91 0
      src/main/java/com/example/common/utils/psql/PsqlUtil.java
  11. 18 0
      src/main/java/com/example/config/ApiDocConfig.java
  12. 62 0
      src/main/java/com/example/config/HttpClientConfig.java
  13. 22 0
      src/main/java/com/example/config/MybatisPlusConfig.java
  14. 25 0
      src/main/java/com/example/config/ValidatorConfig.java
  15. 20 0
      src/main/java/com/example/config/annotation/IgnoreAuth.java
  16. 49 0
      src/main/java/com/example/config/mybatis/ex/method/ExBaseMapper.java
  17. 3 0
      src/main/java/com/example/config/mybatis/ex/readMe.txt
  18. 86 0
      src/main/java/com/example/config/web/ControllerExceptionHandler.java
  19. 42 0
      src/main/java/com/example/config/web/MyWebMvcConfigurer.java
  20. 110 0
      src/main/java/com/example/config/web/RequestLogHandlerInterceptor.java
  21. 40 0
      src/main/java/com/example/controller/HouseDataImportController.java
  22. 1929 0
      src/main/java/com/example/controller/WzBuildManageDetailsController.java
  23. 178 0
      src/main/java/com/example/controller/WzBuildmanageAvageareaController.java
  24. 39 0
      src/main/java/com/example/controller/WzDataInspectionController.java
  25. 222 0
      src/main/java/com/example/controller/WzHouseArrearsManageController.java
  26. 995 0
      src/main/java/com/example/controller/WzHouseContracController.java
  27. 204 0
      src/main/java/com/example/controller/WzHouseContractCompareController.java
  28. 203 0
      src/main/java/com/example/controller/WzHouseContractInController.java
  29. 224 0
      src/main/java/com/example/controller/WzHouseContractOutController.java
  30. 211 0
      src/main/java/com/example/controller/WzHouseContractTopController.java
  31. 136 0
      src/main/java/com/example/controller/WzHouseCustomerController.java
  32. 216 0
      src/main/java/com/example/controller/WzHouseInCustomerController.java
  33. 962 0
      src/main/java/com/example/controller/WzHouseLeaseInConController.java
  34. 68 0
      src/main/java/com/example/controller/WzHouseMaintController.java
  35. 1074 0
      src/main/java/com/example/controller/WzHouseMaintenaCostController.java
  36. 126 0
      src/main/java/com/example/controller/WzHouseMarketController.java
  37. 360 0
      src/main/java/com/example/controller/WzHouseUseController.java
  38. 768 0
      src/main/java/com/example/controller/WzLandManageDetailsController.java
  39. 140 0
      src/main/java/com/example/controller/WzLowestUnitPriceController.java
  40. 137 0
      src/main/java/com/example/controller/WzOtnAreaController.java
  41. 35 0
      src/main/java/com/example/controller/WzRemarkController.java
  42. 105 0
      src/main/java/com/example/controller/WzRentHouseArrearsController.java
  43. 108 0
      src/main/java/com/example/controller/WzRentThreeMonthController.java
  44. 271 0
      src/main/java/com/example/controller/WzScoreRankingController.java
  45. 94 0
      src/main/java/com/example/controller/WzStrategyController.java
  46. 49 0
      src/main/java/com/example/controller/WzUserController.java
  47. 36 0
      src/main/java/com/example/dao/WzBuildManageDetailsDao.java
  48. 17 0
      src/main/java/com/example/dao/WzBuildmanageAvageareaDao.java
  49. 13 0
      src/main/java/com/example/dao/WzDataInspectionDao.java
  50. 14 0
      src/main/java/com/example/dao/WzHouseArrearsManageDao.java
  51. 17 0
      src/main/java/com/example/dao/WzHouseContracDao.java
  52. 17 0
      src/main/java/com/example/dao/WzHouseContractCompareDao.java
  53. 17 0
      src/main/java/com/example/dao/WzHouseContractInDao.java
  54. 17 0
      src/main/java/com/example/dao/WzHouseContractOutDao.java
  55. 17 0
      src/main/java/com/example/dao/WzHouseContractTopDao.java
  56. 13 0
      src/main/java/com/example/dao/WzHouseCustomerDao.java
  57. 13 0
      src/main/java/com/example/dao/WzHouseInCustomerDao.java
  58. 17 0
      src/main/java/com/example/dao/WzHouseLeaseInConDao.java
  59. 10 0
      src/main/java/com/example/dao/WzHouseMaintDao.java
  60. 39 0
      src/main/java/com/example/dao/WzHouseMaintenaCostDao.java
  61. 13 0
      src/main/java/com/example/dao/WzHouseMarketDao.java
  62. 10 0
      src/main/java/com/example/dao/WzHouseUseDao.java
  63. 27 0
      src/main/java/com/example/dao/WzLandManageDetailsDao.java
  64. 13 0
      src/main/java/com/example/dao/WzLowestUnitPriceDao.java
  65. 18 0
      src/main/java/com/example/dao/WzOtnAreaDao.java
  66. 12 0
      src/main/java/com/example/dao/WzRemarkDao.java
  67. 15 0
      src/main/java/com/example/dao/WzRentHouseArrearsDao.java
  68. 14 0
      src/main/java/com/example/dao/WzRentThreeMonthDao.java
  69. 10 0
      src/main/java/com/example/dao/WzScoreRankingDao.java
  70. 18 0
      src/main/java/com/example/dao/WzStrategyDao.java
  71. 12 0
      src/main/java/com/example/dao/WzUserDao.java
  72. 14 0
      src/main/java/com/example/dto/GetHouseDataImportTemplatesVo.java
  73. 17 0
      src/main/java/com/example/dto/HouseDataImportDto.java
  74. 62 0
      src/main/java/com/example/entity/FileInfo.java
  75. 18 0
      src/main/java/com/example/entity/OtnAreaEntity.java
  76. 64 0
      src/main/java/com/example/entity/WzBuildManageDetailsEntity.java
  77. 22 0
      src/main/java/com/example/entity/WzBuildmanageAvageareaEntity.java
  78. 42 0
      src/main/java/com/example/entity/WzDataInspectionEntity.java
  79. 23 0
      src/main/java/com/example/entity/WzHouseArrearsManageEntity.java
  80. 23 0
      src/main/java/com/example/entity/WzHouseContracEntity.java
  81. 32 0
      src/main/java/com/example/entity/WzHouseContractCompareEntity.java
  82. 59 0
      src/main/java/com/example/entity/WzHouseContractInEntity.java
  83. 63 0
      src/main/java/com/example/entity/WzHouseContractOutEntity.java
  84. 30 0
      src/main/java/com/example/entity/WzHouseContractTopEntity.java
  85. 27 0
      src/main/java/com/example/entity/WzHouseCustomerEntity.java
  86. 30 0
      src/main/java/com/example/entity/WzHouseInCustomerEntity.java
  87. 30 0
      src/main/java/com/example/entity/WzHouseLeaseInConEntity.java
  88. 47 0
      src/main/java/com/example/entity/WzHouseMaintEntity.java
  89. 75 0
      src/main/java/com/example/entity/WzHouseMaintenaCostEntity.java
  90. 48 0
      src/main/java/com/example/entity/WzHouseMarketEntity.java
  91. 25 0
      src/main/java/com/example/entity/WzHouseRentOutEntity.java
  92. 33 0
      src/main/java/com/example/entity/WzHouseUseEntity.java
  93. 59 0
      src/main/java/com/example/entity/WzLandManageDetailsEntity.java
  94. 32 0
      src/main/java/com/example/entity/WzLowestUnitPriceEntity.java
  95. 14 0
      src/main/java/com/example/entity/WzRemarkEntity.java
  96. 26 0
      src/main/java/com/example/entity/WzRentHouseArrearsEntity.java
  97. 29 0
      src/main/java/com/example/entity/WzRentThrMonthEntity.java
  98. 25 0
      src/main/java/com/example/entity/WzScoreRankingEntity.java
  99. 19 0
      src/main/java/com/example/entity/WzScoreVo.java
  100. 16 0
      src/main/java/com/example/entity/WzStrategyEntity.java

+ 644 - 0
.gitignore

@@ -0,0 +1,644 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+### Java template
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.nar
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+replay_pid*
+
+### Maven template
+pom.xml.tag
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+pom.xml.next
+release.properties
+dependency-reduced-pom.xml
+buildNumber.properties
+.mvn/timing.properties
+# https://github.com/takari/maven-wrapper#usage-without-binary-jar
+.mvn/wrapper/maven-wrapper.jar
+
+# Eclipse m2e generated files
+# Eclipse Core
+# JDT-specific (Eclipse Java Development Tools)
+
+### VisualStudioCode template
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+!.vscode/*.code-snippets
+
+# Local History for Visual Studio Code
+.history/
+
+# Built Visual Studio Code Extensions
+*.vsix
+
+### JetBrains template
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# AWS User-specific
+.idea/**/aws.xml
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn.  Uncomment if using
+# auto-import.
+# .idea/artifacts
+# .idea/compiler.xml
+# .idea/jarRepositories.xml
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+# *.iml
+# *.ipr
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# SonarLint plugin
+.idea/sonarlint/
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+### Eclipse template
+.metadata
+bin/
+tmp/
+*.tmp
+*.bak
+*.swp
+*~.nib
+local.properties
+.settings/
+.loadpath
+.recommenders
+
+# External tool builders
+.externalToolBuilders/
+
+# Locally stored "Eclipse launch configurations"
+*.launch
+
+# PyDev specific (Python IDE for Eclipse)
+*.pydevproject
+
+# CDT-specific (C/C++ Development Tooling)
+.cproject
+
+# CDT- autotools
+.autotools
+
+# Java annotation processor (APT)
+
+# PDT-specific (PHP Development Tools)
+.buildpath
+
+# sbteclipse plugin
+.target
+
+# Tern plugin
+.tern-project
+
+# TeXlipse plugin
+.texlipse
+
+# STS (Spring Tool Suite)
+
+# Code Recommenders
+.recommenders/
+
+# Annotation Processing
+.apt_generated/
+.apt_generated_test/
+
+# Scala IDE specific (Scala & Java development for Eclipse)
+.cache-main
+.scala_dependencies
+.worksheet
+
+# Uncomment this line if you wish to ignore the project description file.
+# Typically, this file would be tracked if it contains build/dependency configurations:
+#.project
+
+### Example user template template
+### Example user template
+
+# IntelliJ project files
+out
+gen
+### VisualStudio template
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
+
+# User-specific files
+*.rsuser
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Mono auto generated files
+mono_crash.*
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+[Ww][Ii][Nn]32/
+[Aa][Rr][Mm]/
+[Aa][Rr][Mm]64/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+[Ll]ogs/
+
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUnit
+*.VisualState.xml
+TestResult.xml
+nunit-*.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+# ASP.NET Scaffolding
+ScaffoldingReadMe.txt
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
+*_i.c
+*_p.c
+*_h.h
+*.ilk
+*.meta
+*.obj
+*.iobj
+*.pch
+*.pdb
+*.ipdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp_proj
+*_wpftmp.csproj
+*.tlog
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Coverlet is a free, cross platform Code Coverage Tool
+coverage*.json
+coverage*.xml
+coverage*.info
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# NuGet Symbol Packages
+*.snupkg
+# The packages folder can be ignored because of Package Restore
+**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+*.appxbundle
+*.appxupload
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!?*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+*- [Bb]ackup.rdl
+*- [Bb]ackup ([0-9]).rdl
+*- [Bb]ackup ([0-9][0-9]).rdl
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio 6 auto-generated project file (contains which files were open etc.)
+*.vbp
+
+# Visual Studio 6 workspace and project file (working project files containing files to include in project)
+*.dsw
+*.dsp
+
+# Visual Studio 6 technical files
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# CodeRush personal settings
+.cr/personal
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
+
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
+
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
+
+# Local History for Visual Studio
+.localhistory/
+
+# Visual Studio History (VSHistory) files
+.vshistory/
+
+# BeatPulse healthcheck temp database
+healthchecksdb
+
+# Backup folder for Package Reference Convert tool in Visual Studio 2017
+MigrationBackup/
+
+# Ionide (cross platform F# VS Code tools) working folder
+.ionide/
+
+# Fody - auto-generated XML schema
+FodyWeavers.xsd
+
+# VS Code files for those working on multiple tools
+*.code-workspace
+
+# Local History for Visual Studio Code
+
+# Windows Installer files from build outputs
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
+
+# JetBrains Rider
+*.sln.iml
+
+### Gradle template
+.gradle
+**/build/
+!src/**/build/
+
+# Ignore Gradle GUI config
+gradle-app.setting
+
+# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
+!gradle-wrapper.jar
+
+# Avoid ignore Gradle wrappper properties
+!gradle-wrapper.properties
+
+# Cache of project
+.gradletasknamecache
+
+# Eclipse Gradle plugin generated files
+# Eclipse Core
+# JDT-specific (Eclipse Java Development Tools)
+

+ 153 - 0
pom.xml

@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.example</groupId>
+    <artifactId>gdc-finance-api</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>gdc-finance-api</name>
+    <description>gdc-finance-api</description>
+    <properties>
+        <java.version>17</java.version>
+        <maven.compiler.source>${java.version}</maven.compiler.source>
+        <maven.compiler.target>${java.version}</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>${project.build.sourceEncoding}</project.reporting.outputEncoding>
+        <spring-boot.version>2.7.16</spring-boot.version>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.8.23</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-exec -->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-exec</artifactId>
+            <version>1.3</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.10.1</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.4.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-openapi3-spring-boot-starter -->
+        <dependency>
+            <groupId>com.github.xiaoymin</groupId>
+            <artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
+            <version>4.3.0</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/io.minio/minio -->
+        <dependency>
+            <groupId>io.minio</groupId>
+            <artifactId>minio</artifactId>
+            <version>8.5.6</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper</artifactId>
+            <version>6.1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>itext7-core</artifactId>
+            <version>7.1.4</version>
+            <type>pom</type>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>3.0.5</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/org.json/json -->
+        <dependency>
+            <groupId>org.json</groupId>
+            <artifactId>json</artifactId>
+            <version>20180130</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.15.1</version>
+        </dependency>
+    </dependencies>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <build>
+        <finalName>gdc-finance-api</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>repackage</id>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <excludes>
+                        <exclude>
+                            <groupId>org.projectlombok</groupId>
+                            <artifactId>lombok</artifactId>
+                        </exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 6 - 0
scripts/rollback.sh

@@ -0,0 +1,6 @@
+#!/bin/bash
+
+sh stop.sh
+rm -rf gdc-finance-api.jar
+mv gdc-finance-api.jar.bak gdc-finance-api.jar
+sh run.sh

+ 3 - 0
scripts/run.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+
+nohup /app/jdks/jdk17/bin/java -Dspring.profiles.active=prod -jar gdc-finance-api.jar >/dev/null 2>&1 &

+ 5 - 0
scripts/stop.sh

@@ -0,0 +1,5 @@
+#!/bin/bash
+
+for i in $(pgrep -f gdc-finance-api.jar); do
+  kill -9 "$i"
+done

+ 7 - 0
scripts/update.sh

@@ -0,0 +1,7 @@
+#!/bin/bash
+
+rm -rf gdc-finance-api.jar.bak
+sh stop.sh
+mv gdc-finance-api.jar gdc-finance-api.jar.bak
+mv gdc-finance-api.jar.new gdc-finance-api.jar
+sh run.sh

+ 13 - 0
src/main/java/com/example/GdcFinanceApiApplication.java

@@ -0,0 +1,13 @@
+package com.example;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class GdcFinanceApiApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(GdcFinanceApiApplication.class, args);
+    }
+
+}

+ 10 - 0
src/main/java/com/example/common/exception/BizException.java

@@ -0,0 +1,10 @@
+package com.example.common.exception;
+
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor
+public class BizException extends RuntimeException{
+    public BizException(String message) {
+        super(message);
+    }
+}

+ 22 - 0
src/main/java/com/example/common/exception/MyRuntimeException.java

@@ -0,0 +1,22 @@
+package com.example.common.exception;
+
+public class MyRuntimeException extends RuntimeException{
+    public MyRuntimeException() {
+    }
+
+    public MyRuntimeException(String message) {
+        super(message);
+    }
+
+    public MyRuntimeException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public MyRuntimeException(Throwable cause) {
+        super(cause);
+    }
+
+    public MyRuntimeException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+    }
+}

+ 91 - 0
src/main/java/com/example/common/utils/psql/PsqlUtil.java

@@ -0,0 +1,91 @@
+package com.example.common.utils.psql;
+
+import com.example.common.exception.MyRuntimeException;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.exec.CommandLine;
+import org.apache.commons.exec.DefaultExecutor;
+import org.apache.commons.exec.ExecuteWatchdog;
+import org.apache.commons.exec.PumpStreamHandler;
+import org.springframework.util.StringUtils;
+
+import java.io.ByteArrayOutputStream;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * psql命令工具
+ */
+@Slf4j
+public class PsqlUtil {
+    /**
+     * 匹配psql copy成功结果
+     */
+    private static final Pattern PATTERN = Pattern.compile("^(COPY) (\\d+)$");
+
+    /**
+     * 导入csv
+     *
+     * @param script         脚本
+     * @param dbHost         数据库主机
+     * @param dbPort         数据库端口
+     * @param dbUsername     数据库用户名
+     * @param dbPassword     数据库密码
+     * @param dbName         数据库名字
+     * @param dbTable        数据库表
+     * @param csv            csv
+     * @param columns        字段
+     * @param timeout        超时ms
+     * @param minInsertCount 最小值插入数
+     */
+    public static void copyCsv(String script, String dbHost, String dbPort, String dbUsername, String dbPassword,
+                               String dbName, String dbTable, String csv, String columns, Long timeout,
+                               Long minInsertCount) {
+        String command = "sh " + script;
+        CommandLine commandLine = CommandLine.parse(command);
+        commandLine.addArgument(dbHost);
+        commandLine.addArgument(dbPort);
+        commandLine.addArgument(dbUsername);
+        commandLine.addArgument(dbPassword);
+        commandLine.addArgument(dbName);
+        commandLine.addArgument(dbTable);
+        commandLine.addArgument(csv);
+        commandLine.addArgument(columns);
+        log.info("command: {}", commandLine);
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        ByteArrayOutputStream err = new ByteArrayOutputStream();
+        DefaultExecutor executor = new DefaultExecutor();
+        ExecuteWatchdog watchdog = new ExecuteWatchdog(timeout);
+        executor.setWatchdog(watchdog);
+        PumpStreamHandler streamHandler = new PumpStreamHandler(out, err);
+        executor.setStreamHandler(streamHandler);
+        try {
+            int exitValue = executor.execute(commandLine);
+            log.info("exitValue: {}", exitValue);
+            String outString = out.toString();
+            Long count = null;
+            Matcher matcher = PATTERN.matcher(outString);
+            if (matcher.find()) {
+                count = Long.parseLong(matcher.group(2));
+            }
+            if (count == null) {
+                throw new MyRuntimeException("导入数据失败");
+            }
+            log.info("插入 {} 条数据", count);
+            if (minInsertCount != null && count < minInsertCount) {
+                throw new MyRuntimeException(csv + " 数据异常,少于 " + minInsertCount);
+            }
+        } catch (Exception e) {
+            if (watchdog.killedProcess()) {
+                throw new MyRuntimeException("执行超时", e);
+            }
+            throw new MyRuntimeException(e);
+        } finally {
+            String outString = out.toString();
+            String errString = err.toString();
+            log.info("out: {}", outString);
+            if (StringUtils.hasText(errString)) {
+                log.error("err: {}", errString);
+            }
+        }
+    }
+}

+ 18 - 0
src/main/java/com/example/config/ApiDocConfig.java

@@ -0,0 +1,18 @@
+package com.example.config;
+
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Info;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * api文档配置
+ *
+ */
+@Configuration
+public class ApiDocConfig {
+    @Bean
+    public OpenAPI openapi() {
+        return new OpenAPI().info(new Info().title("财务接口").description("财务接口文档").version("1.0"));
+    }
+}

+ 62 - 0
src/main/java/com/example/config/HttpClientConfig.java

@@ -0,0 +1,62 @@
+package com.example.config;
+
+import okhttp3.OkHttpClient;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.TrustManagerFactory;
+import javax.net.ssl.X509TrustManager;
+import java.security.KeyManagementException;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.security.cert.X509Certificate;
+
+/**
+ * OKHttpClient配置
+ */
+@Configuration
+public class HttpClientConfig {
+    @Bean
+    public OkHttpClient myHttpClient() throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException {
+        return new OkHttpClient.Builder()
+                .hostnameVerifier((hostname, session) -> true)
+                .retryOnConnectionFailure(true)
+                .sslSocketFactory(getSslSocketFactory(), getX509TrustManager())
+                .build();
+    }
+
+    private SSLSocketFactory getSslSocketFactory() throws KeyManagementException, NoSuchAlgorithmException {
+        SSLContext sslContext = SSLContext.getInstance("SSL");
+        sslContext.init(null, new TrustManager[]{
+                new X509TrustManager() {
+                    @Override
+                    public void checkClientTrusted(X509Certificate[] chain, String authType) {
+                        // 不检查证书
+                    }
+
+                    @Override
+                    public void checkServerTrusted(X509Certificate[] chain, String authType) {
+                        // 不检查证书
+                    }
+
+                    @Override
+                    public X509Certificate[] getAcceptedIssuers() {
+                        return new X509Certificate[]{};
+                    }
+                }
+        }, new SecureRandom());
+        return sslContext.getSocketFactory();
+    }
+
+    private X509TrustManager getX509TrustManager() throws NoSuchAlgorithmException, KeyStoreException {
+        TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+        factory.init((KeyStore) null);
+        TrustManager[] managers = factory.getTrustManagers();
+        return (X509TrustManager) managers[0];
+    }
+}

+ 22 - 0
src/main/java/com/example/config/MybatisPlusConfig.java

@@ -0,0 +1,22 @@
+//package com.example.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+//import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//
+///**
+// * mybatis +配置
+// *
+// */
+//@Configuration
+//public class MybatisPlusConfig {
+//    @Bean
+//    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+//        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+//        // 添加分页拦截器
+//        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL));
+//        return interceptor;
+//    }
+//}

+ 25 - 0
src/main/java/com/example/config/ValidatorConfig.java

@@ -0,0 +1,25 @@
+package com.example.config;
+
+import org.hibernate.validator.HibernateValidator;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.validation.Validation;
+import javax.validation.Validator;
+import javax.validation.ValidatorFactory;
+
+/**
+ * 校验配置
+ */
+@Configuration
+public class ValidatorConfig
+{
+    @Bean
+    public Validator validator()
+    {
+        try (ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class).configure()
+                .failFast(true).buildValidatorFactory()) {
+            return validatorFactory.getValidator();
+        }
+    }
+}

+ 20 - 0
src/main/java/com/example/config/annotation/IgnoreAuth.java

@@ -0,0 +1,20 @@
+package com.example.config.annotation;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 忽略Token验证
+ *
+ * @author
+ * @date 2019-11-28
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface IgnoreAuth {
+
+}

+ 49 - 0
src/main/java/com/example/config/mybatis/ex/method/ExBaseMapper.java

@@ -0,0 +1,49 @@
+package com.example.config.mybatis.ex.method;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.List;
+import java.util.Map;
+
+/***********************************************************************************************************************
+ *                注意:本内容仅限于公司内部传阅,禁止外泄以及用于其他的商业目
+ * @author
+ * @date 2021-04-26
+ * @version V1.0
+ **********************************************************************************************************************/
+
+/**
+ * 拓展批量插入方法 需要使用请把baseMapper继承为ExBaseMapper
+ * @param <T>
+ */
+public interface ExBaseMapper<T> extends BaseMapper<T> {
+
+    int insertBatch(List<T> entityList);
+
+    int save(T t);
+
+    void save(Map<String, Object> map);
+
+    void saveBatch(List<T> list);
+
+//    int update(T t);
+
+    int update(Map<String, Object> map);
+
+//    int delete(Object id);
+
+//    int delete(Map<String, Object> map);
+
+    int deleteBatch(Object[] id);
+
+    T queryObject(Object id);
+
+    List<T> queryList(Map<String, Object> map);
+
+    List<T> queryList(Object id);
+
+    int queryTotal(Map<String, Object> map);
+
+    int queryTotal();
+
+}

+ 3 - 0
src/main/java/com/example/config/mybatis/ex/readMe.txt

@@ -0,0 +1,3 @@
+mybatis-plus拓展mapper
+添加批量插入方法( 可能只支持mysql 采用其他数据源时 记得测试一下)
+把继承 BaseMapper 改成ExBaseMapper 即可

+ 86 - 0
src/main/java/com/example/config/web/ControllerExceptionHandler.java

@@ -0,0 +1,86 @@
+package com.example.config.web;
+
+import com.example.common.exception.BizException;
+import com.example.utils.R;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.TypeMismatchException;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.converter.HttpMessageConversionException;
+import org.springframework.validation.BindException;
+import org.springframework.validation.FieldError;
+import org.springframework.web.HttpRequestMethodNotSupportedException;
+import org.springframework.web.bind.MissingRequestValueException;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+import javax.validation.ValidationException;
+
+/**
+ * 请求异常处理
+ */
+@Slf4j
+@RestControllerAdvice
+public class ControllerExceptionHandler
+{
+    @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
+    public ResponseEntity<Object> httpRequestMethodNotSupportedExceptionHandler(HttpRequestMethodNotSupportedException e)
+    {
+        log.warn(e.getMessage());
+        return ResponseEntity.status(HttpStatus.METHOD_NOT_ALLOWED).body(R.error(e.getMessage()));
+    }
+
+    @ExceptionHandler(MissingRequestValueException.class)
+    public ResponseEntity<Object> missingRequestValueExceptionHandler(MissingRequestValueException e)
+    {
+        log.warn(e.getMessage());
+        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(R.error(e.getMessage()));
+    }
+
+    @ExceptionHandler(HttpMessageConversionException.class)
+    public ResponseEntity<Object> httpMessageConversionExceptionHandler(HttpMessageConversionException e)
+    {
+        log.warn(e.getMessage());
+        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(R.error(e.getMessage()));
+    }
+
+    @ExceptionHandler(TypeMismatchException.class)
+    public ResponseEntity<Object> typeMismatchExceptionHandler(TypeMismatchException e)
+    {
+        log.warn(e.getMessage());
+        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(R.error(e.getMessage()));
+    }
+
+    @ExceptionHandler(BindException.class)
+    public ResponseEntity<Object> bindExceptionHandler(BindException e)
+    {
+        FieldError fieldError = e.getBindingResult().getFieldError();
+        String message = "";
+        if (fieldError != null)
+        {
+            message = fieldError.getDefaultMessage();
+        }
+        log.warn(message);
+        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(R.error(e.getMessage()));
+    }
+
+    @ExceptionHandler(ValidationException.class)
+    public ResponseEntity<Object> validationExceptionHandler(ValidationException e)
+    {
+        log.warn(e.getMessage());
+        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(R.error(e.getMessage()));
+    }
+
+    @ExceptionHandler(BizException.class)
+    public ResponseEntity<Object> bizExceptionHandler(BizException e)
+    {
+        return ResponseEntity.ok().body(R.error(e.getMessage()));
+    }
+
+    @ExceptionHandler(Exception.class)
+    public ResponseEntity<Object> exceptionHandler(Exception e)
+    {
+        log.error("╭( ′• o •′ )╭☞ 发生错误了 {}", e.getMessage(), e);
+        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(R.error());
+    }
+}

+ 42 - 0
src/main/java/com/example/config/web/MyWebMvcConfigurer.java

@@ -0,0 +1,42 @@
+package com.example.config.web;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class MyWebMvcConfigurer implements WebMvcConfigurer {
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        // 添加请求日志拦截
+        registry.addInterceptor(new RequestLogHandlerInterceptor()).addPathPatterns("/**").excludePathPatterns("/webjars/**", "/doc**", "/v3/**");
+        // 添加token拦截
+//        registry.addInterceptor(new TokenInterceptor()).addPathPatterns("/house-car/**");
+    }
+
+//    /**
+//     * 配置消息转换器
+//     *
+//     * @param converters 转换器
+//     */
+//    @Override
+//    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+//        converters.add(mappingJackson2HttpMessageConverter());
+//    }
+//
+//    /**
+//     * 配置映射jackson2 http消息转换器
+//     *
+//     * @return {@link MappingJackson2HttpMessageConverter}
+//     */
+//    @Bean
+//    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
+//        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
+//        ObjectMapper mapper = new ObjectMapper();
+//        mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
+//        mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
+//        converter.setObjectMapper(mapper);
+//        return converter;
+//    }
+}

+ 110 - 0
src/main/java/com/example/config/web/RequestLogHandlerInterceptor.java

@@ -0,0 +1,110 @@
+package com.example.config.web;
+
+import com.example.utils.AESUtil;
+import com.example.utils.R;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.MDC;
+import org.springframework.lang.Nullable;
+import org.springframework.util.StopWatch;
+import org.springframework.util.StringUtils;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLDecoder;
+import java.nio.charset.StandardCharsets;
+import java.time.LocalDateTime;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * 请求日志拦截器
+ */
+@Slf4j
+public class RequestLogHandlerInterceptor implements HandlerInterceptor {
+    /**
+     * 计时器线程变量
+     */
+    private static final ThreadLocal<StopWatch> STOP_WATCH_THREAD_LOCAL = new ThreadLocal<>();
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        StopWatch stopWatch = new StopWatch();
+        stopWatch.start();
+        // 计时器放入线程变量
+        STOP_WATCH_THREAD_LOCAL.set(stopWatch);
+        // 日志添加跟踪id
+        MDC.put("traceId", UUID.randomUUID().toString().replace("-", ""));
+        LocalDateTime now = LocalDateTime.now();
+        log.info("请求地址: {} {}", request.getRequestURL().toString(), request.getMethod());
+        // 请求头参数
+        Map<String, String> headers = new HashMap<>();
+        Enumeration<String> headerNames = request.getHeaderNames();
+        while (headerNames.hasMoreElements()) {
+            String k	= headerNames.nextElement();
+            String v = request.getHeader(k);
+            headers.put(k, v);
+        }
+        log.info("请求头参数: {}", new ObjectMapper().writeValueAsString(headers));
+        // 查询参数
+        Map<String, String> parameters = new HashMap<>();
+        Enumeration<String> parameterNames = request.getParameterNames();
+        while (parameterNames.hasMoreElements()) {
+            String k	= parameterNames.nextElement();
+            String v = request.getParameter(k);
+            parameters.put(k, v);
+        }
+        log.info("查询参数: {}", new ObjectMapper().writeValueAsString(parameters));
+        // todo: 记录日志
+        String token = request.getHeader("token");
+        log.info("token: {}", token);
+        if (!StringUtils.hasText(token)) {
+//            return forbidden(response);
+            return true;
+        }
+        try {
+            String urlDecodeToken = URLDecoder.decode(token, StandardCharsets.UTF_8);
+            log.info("urlDecodeToken: {}", urlDecodeToken);
+            String decodeToken = AESUtil.decrypt(urlDecodeToken);
+            log.info("decodeToken: {}", decodeToken);
+            Gson gson = new Gson();
+            Map<String, String> map = gson.fromJson(decodeToken, new TypeToken<Map<String, String>>() {
+            }.getType());
+//            if (!"FINANCE".equals(map.get("APP_ID")) || !StringUtils.hasText(map.get("LOGIN_ID"))) {
+//                return forbidden(response);
+//            }
+            map.put("api", request.getRequestURI());
+//            map.put("body", body);
+            map.put("time", now.toString());
+            log.info("调用记录: {}", gson.toJson(map));
+        } catch (Exception e) {
+            log.warn("token解密失败: {}", token);
+//            return forbidden(response);
+        }
+        return true;
+    }
+
+    @Override
+    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
+                                @Nullable Exception ex) throws Exception {
+        log.info("响应 {}", response.getStatus());
+        StopWatch stopWatch = STOP_WATCH_THREAD_LOCAL.get();
+        stopWatch.stop();
+        log.info("耗时 {} ms", stopWatch.getTotalTimeMillis());
+        STOP_WATCH_THREAD_LOCAL.remove();
+    }
+
+    private boolean forbidden(HttpServletResponse response) throws IOException {
+        response.setCharacterEncoding("UTF-8");
+        response.setContentType("application/json; charset=utf-8");
+        byte[] bytes = new Gson().toJson(R.error(403, "没有权限访问")).getBytes();
+        response.getOutputStream().write(bytes);
+        return false;
+    }
+}

+ 40 - 0
src/main/java/com/example/controller/HouseDataImportController.java

@@ -0,0 +1,40 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.dto.HouseDataImportDto;
+import com.example.service.HouseDataImportService;
+import com.example.utils.R;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestPart;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.validation.Valid;
+
+@Tag(name = "不动产数据导入")
+@RestController
+@RequestMapping("/house-car/house/dist/api/data-import")
+public class HouseDataImportController {
+    private final HouseDataImportService houseDataImportService;
+
+    public HouseDataImportController(HouseDataImportService houseDataImportService) {
+        this.houseDataImportService = houseDataImportService;
+    }
+
+    @IgnoreAuth
+    @Operation(summary = "获取不动产数据导入模板")
+    @PostMapping("/getTemplates")
+    public R getTemplates() {
+        return houseDataImportService.getTemplates();
+    }
+
+    @IgnoreAuth
+    @Operation(summary = "导入数据")
+    @PostMapping("/dataImport")
+    public R dataImport(@Valid HouseDataImportDto dto, @RequestPart("file") MultipartFile file) {
+        return houseDataImportService.dataImport(dto, file);
+    }
+}

+ 1929 - 0
src/main/java/com/example/controller/WzBuildManageDetailsController.java

@@ -0,0 +1,1929 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzBuildManageDetailsEntity;
+import com.example.entity.WzHouseMaintenaCostEntity;
+import com.example.entity.WzStrategyEntity;
+import com.example.entity.vo.BuildManageVo;
+import com.example.entity.vo.housemanager.HouseYearVo;
+import com.example.entity.vo.housemanager.LeaveUseVo;
+import com.example.entity.vo.housemanager.WzBuildmanageAvageareaVo;
+import com.example.service.WzBuildManageDetailsService;
+import com.example.service.WzBuildmanageAvageareaService;
+import com.example.service.WzHouseMaintenaCostService;
+import com.example.service.WzOtnAreaService;
+import com.example.service.WzStrategyService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import com.example.utils.excel.ExcelExport;
+import com.example.vo.HouseStaticVo;
+import com.itextpdf.kernel.font.PdfFont;
+import com.itextpdf.kernel.font.PdfFontFactory;
+import com.itextpdf.kernel.geom.PageSize;
+import com.itextpdf.kernel.pdf.PdfDocument;
+import com.itextpdf.kernel.pdf.PdfWriter;
+import com.itextpdf.layout.Document;
+import com.itextpdf.layout.element.Cell;
+import com.itextpdf.layout.element.Paragraph;
+import com.itextpdf.layout.element.Table;
+import com.itextpdf.layout.property.HorizontalAlignment;
+import com.itextpdf.layout.property.TextAlignment;
+import com.itextpdf.layout.property.UnitValue;
+import com.itextpdf.layout.property.VerticalAlignment;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayOutputStream;
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/house-car/house/dist/api/WzBuildManageDetails")
+public class WzBuildManageDetailsController {
+
+    @Autowired
+    private WzBuildManageDetailsService wzBuildManageDetailsService;
+    @Autowired
+    private WzBuildmanageAvageareaService wzBuildmanageAvageareaService;
+    @Autowired
+    private WzHouseMaintenaCostService wzHouseMaintenaCostService;
+    @Autowired
+    private WzOtnAreaService otnAreaService;
+    @Autowired
+    private WzStrategyService wzStrategyService;
+
+    /**
+     * 房屋管理-->闲置管理看板
+     */
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+
+        List<LeaveUseVo> resultList = wzBuildManageDetailsService.queryLeaveUseList(pageMap.getMap());
+        PageUtils pageUtil = new PageUtils(resultList, 10, 10, 10);
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/queryHouseYear")
+    @IgnoreAuth
+    public R queryHouseYear(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+
+        int repeatNum = 0;
+        //全省节点
+        HouseYearVo province = new HouseYearVo();
+        province.setCountyName("全省");
+        province.setCounty("全省");
+
+        int aoneNum = 0;
+        int atwoNum = 0;
+        int athrNum = 0;
+        int aforNum = 0;
+        int afivNum = 0;
+        int asixNum = 0;
+
+        List<LeaveUseVo> leaveUseVoList = wzBuildManageDetailsService.queryLeaveUseByEchart(pageMap.getMap());
+        Map<String, List<LeaveUseVo>> map = new HashMap<>();
+        for (LeaveUseVo leaveUseVo : leaveUseVoList) {
+            double avera = leaveUseVo.getBuildingAreaIdelArea() / (leaveUseVo.getBuildingAreaIdelArea() + leaveUseVo.getBuildingAreaRentArea());
+            if (leaveUseVo.getBuildingAreaIdelArea() + leaveUseVo.getBuildingAreaRentArea() == 0) {
+                avera = 0;
+            } else {
+                avera = formatDouble(avera);
+            }
+            leaveUseVo.setAverage(avera);
+            int num = 0;
+            if (leaveUseVo.getBuildingStartyear() == null || leaveUseVo.getBuildingStartyear().equals("")) {
+                num = 0;
+            } else {
+                int year1 = Integer.parseInt(leaveUseVo.getBuildingStartyear());
+                Calendar cal2 = Calendar.getInstance();
+                cal2.setTime(new Date());
+                int year2 = cal2.get(Calendar.YEAR);
+                num = year2 - year1;
+            }
+            leaveUseVo.setHouseYearNum(num);
+
+
+            List<LeaveUseVo> list;
+            if (map.get(leaveUseVo.getCity()) != null) {
+                list = map.get(leaveUseVo.getCity());
+                list.add(leaveUseVo);
+            } else {
+                list = new ArrayList<>();
+                list.add(leaveUseVo);
+            }
+            map.put(leaveUseVo.getCity(), list);
+        }
+        List<HouseYearVo> resultList = new ArrayList<>();
+        List<HouseYearVo> cityList = new ArrayList<>();
+
+        double provinceYearNum = 0;
+        double provinceSize = 0;
+        for (Map.Entry<String, List<LeaveUseVo>> entry : map.entrySet()) {
+
+            double cityYearNum = 0;
+            double citySize = 0;
+
+            List<LeaveUseVo> list = entry.getValue();
+            //对该list相同的县进行统计
+            Map<String, List<LeaveUseVo>> leaveMap = new HashMap<>();
+            for (LeaveUseVo leaveUseVo : list) {
+                if (leaveMap.get(leaveUseVo.getCounty()) != null) {
+                    list = leaveMap.get(leaveUseVo.getCounty());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                leaveMap.put(leaveUseVo.getCounty(), list);
+            }
+
+            List<HouseYearVo> houseYearVoList = new ArrayList<>();
+            int oneNum = 0;
+            int twoNum = 0;
+            int thrNum = 0;
+            int forNum = 0;
+            int fivNum = 0;
+            int sixNum = 0;
+
+
+            for (Map.Entry<String, List<LeaveUseVo>> entry1 : leaveMap.entrySet()) {
+
+                List<LeaveUseVo> value = entry1.getValue();
+                citySize += value.size();
+                provinceSize += value.size();
+
+                HouseYearVo yearVo = new HouseYearVo();
+                yearVo.setCity(value.get(0).getCity());
+                yearVo.setCityName(value.get(0).getCityName());
+                yearVo.setCounty(value.get(0).getCounty());
+                yearVo.setCountyName(value.get(0).getCountyName());
+                double houseYear = 0;
+
+                String reapStr = "";
+                if (entry1.getKey().equals("市本部")) {
+                    reapStr = "市本部" + repeatNum;
+                    repeatNum++;
+                }
+                if (!reapStr.equals("")) {
+                    yearVo.setCity(reapStr);
+                    yearVo.setCounty(reapStr);
+                    yearVo.setCountyName(reapStr);
+                }
+
+                for (LeaveUseVo leaveUseVo : value) {
+                    houseYear += leaveUseVo.getHouseYearNum();
+                    cityYearNum += leaveUseVo.getHouseYearNum();
+                    provinceYearNum += leaveUseVo.getHouseYearNum();
+                    if(leaveUseVo.getHouseYearNum()==0){
+                        System.out.println();
+                    }
+                    else if (leaveUseVo.getHouseYearNum() < 10) {
+                        oneNum++;
+                        aoneNum++;
+                        yearVo.setOneLevelYear(yearVo.getOneLevelYear() + 1);
+                    } else if (leaveUseVo.getHouseYearNum() > 11 && leaveUseVo.getHouseYearNum() < 21) {
+                        twoNum++;
+                        atwoNum++;
+                        yearVo.setTwoLevelYear(yearVo.getTwoLevelYear() + 1);
+                    } else if (leaveUseVo.getHouseYearNum() > 20 && leaveUseVo.getHouseYearNum() < 31) {
+                        thrNum++;
+                        athrNum++;
+                        yearVo.setThrLevelYear(yearVo.getThrLevelYear() + 1);
+                    } else if (leaveUseVo.getHouseYearNum() > 30 && leaveUseVo.getHouseYearNum() < 41) {
+                        forNum++;
+                        aforNum++;
+                        yearVo.setFouLevelYear(yearVo.getFouLevelYear() + 1);
+                    } else if (leaveUseVo.getHouseYearNum() > 40 && leaveUseVo.getHouseYearNum() < 51) {
+                        fivNum++;
+                        afivNum++;
+                        yearVo.setFivLevelYear(yearVo.getFivLevelYear() + 1);
+                    } else {
+                        sixNum++;
+                        asixNum++;
+                        yearVo.setSixLevelYear(yearVo.getSixLevelYear() + 1);
+                    }
+                }
+                double aveage = houseYear / value.size();
+                yearVo.setAverage(formatDouble1(aveage));
+                houseYearVoList.add(yearVo);
+            }
+
+            List<HouseYearVo> orderCountyList = new ArrayList<>();
+            try {
+                //对countList 进行排序
+                OtnAreaEntity area = otnAreaService.queryObject(list.get(0).getCity());
+                List<OtnAreaEntity> countyAreaList = otnAreaService.getCityOption(area.getId());
+                int i=0;
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (HouseYearVo wzCity : houseYearVoList) {
+                        if (wzCity.getCounty().contains(otnAreaEntity.getName())) {
+                            i++;
+                            wzCity.setFlag(i%2==0);
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            } catch (Exception e) {
+                orderCountyList = houseYearVoList;
+                e.printStackTrace();
+            }
+
+            HouseYearVo parent = new HouseYearVo();
+            parent.setOneLevelYear(oneNum);
+            parent.setTwoLevelYear(twoNum);
+            parent.setThrLevelYear(thrNum);
+            parent.setFouLevelYear(forNum);
+            parent.setFivLevelYear(fivNum);
+            parent.setSixLevelYear(sixNum);
+            parent.setCity(houseYearVoList.get(0).getCity());
+            parent.setCounty(houseYearVoList.get(0).getCity());
+            parent.setCountyName(houseYearVoList.get(0).getCityName());
+            parent.setChildren(orderCountyList);
+            double cityAvage = cityYearNum / citySize;
+            parent.setAverage(formatDouble1(cityAvage));
+
+            cityList.add(parent);
+        }
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList = otnAreaService.getCityOption(0l);
+        List<HouseYearVo> orderList = new ArrayList<>();
+        int i=0;
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (HouseYearVo wzCity : cityList) {
+                if (otnAreaEntity.getName().equals(wzCity.getCity())) {
+                    wzCity.setFlag(i%2==0);
+                    orderList.add(wzCity);
+                    i++;
+                }
+            }
+        }
+
+        province.setOneLevelYear(aoneNum);
+        province.setTwoLevelYear(atwoNum);
+        province.setThrLevelYear(athrNum);
+        province.setFouLevelYear(aforNum);
+        province.setFivLevelYear(afivNum);
+        province.setSixLevelYear(asixNum);
+        province.setChildren(orderList);
+        double provinceAvage = provinceYearNum / provinceSize;
+        province.setAverage(formatDouble1(provinceAvage));
+        if(orderList.size()>0){
+            resultList.add(province);
+        }
+        int total = wzBuildManageDetailsService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+
+    /**
+     * 房屋管理-->闲置管理看板
+     */
+    @RequestMapping("/ideList")
+    @IgnoreAuth
+    public R ideList(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        int value=1000;
+        //获取配置参数
+        WzStrategyEntity objectByType = wzStrategyService.getObjectByType();
+        if(objectByType!=null){
+            String[] values=objectByType.getValue().split(",");
+            value=Integer.valueOf(values[0]);
+        }
+        query.put("buildingAreaIdelArea", value);
+        List<WzBuildManageDetailsEntity> resultList = wzBuildManageDetailsService.queryList(query);
+        Query query1 = new Query(pageMap);
+        query1.put("buildingAreaIdelArea", value);
+        int total = wzBuildManageDetailsService.queryTotal(query1);
+        PageUtils pageUtil = new PageUtils(resultList, total, 10, 10);
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 房产详情
+     */
+    @RequestMapping("/queryHouseDetail")
+    @IgnoreAuth
+    public R queryHouseDetail(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzBuildManageDetailsEntity> list = wzBuildManageDetailsService.queryList(query);
+        Query query1 = new Query(pageMap);
+        int total = wzBuildManageDetailsService.queryTotal(query1);
+
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 清单excel
+     */
+    @GetMapping("/excel")
+    @IgnoreAuth
+    public void excel(String name,
+                      String statisticalMonth,
+                      String buildingNameAlias,
+                      String investmentEntity,
+                      String city,
+                      String county,
+                      String code,
+                      HttpServletResponse response) {
+
+        Map<String, Object> map = new HashMap<>();
+        if (buildingNameAlias != null) {
+            map.put("buildingNameAlias", buildingNameAlias);
+        }
+        if (city != null) {
+            map.put("city", city);
+        }
+        if (county != null) {
+            map.put("county", county);
+        }
+        if(statisticalMonth==null||statisticalMonth.equals("")||statisticalMonth.equals("undefined")){
+        }else{
+            map.put("statisticalMonth",statisticalMonth);
+        }
+        if(investmentEntity==null||investmentEntity.equals("")||investmentEntity.equals("undefined")){
+        }else{
+            map.put("investmentEntity",investmentEntity);
+        }
+        if(code==null||code.equals("")||code.equals("undefined")){
+        }else{
+            map.put("code",code);
+        }
+        if (buildingNameAlias != null) {
+            map.put("buildingNameAlias", buildingNameAlias);
+        }
+
+        DateFormat df = new SimpleDateFormat("yyyyMMdd");
+        ExcelExport ee1 ;
+        //判定是闲置管理还是详情
+        if (name.contains("自有房产")) {
+            ee1 = new ExcelExport("房屋管理_自有房产人均办公面积" + df.format(new Date()));
+            responseTab1(df, ee1, map);
+            ee1.export(response);
+        } else if (name.contains("闲置管理")) {
+            ee1 = new ExcelExport("房屋管理_闲置管理" + df.format(new Date()));
+            responseTab2(df, ee1, map);
+            ee1.export(response);
+        } else if (name.contains("房龄统计")) {
+            ee1 = new ExcelExport("房屋管理_房龄统计" + df.format(new Date()));
+            responseTab3(df, ee1, map);
+            ee1.export(response);
+        } else if (name.contains("房产详单")) {
+            ee1 = new ExcelExport("房屋管理_房产详单" + df.format(new Date()));
+            responseTab4(df, ee1, map);
+            ee1.export(response);
+        } else if (name.contains("空置")) {
+            ee1 = new ExcelExport("房屋空置_空置1000平方米以上" + df.format(new Date()));
+            map.put("buildingAreaIdelArea", 1000);
+            responseTab5(df, ee1, map);
+            ee1.export(response);
+        }
+    }
+
+    private void responseTab5(DateFormat df, ExcelExport ee1, Map<String, Object> map1) {
+        try {
+            List<WzBuildManageDetailsEntity> list = wzBuildManageDetailsService.queryList(map1);
+            List<Object> colList;
+            List<Object[]> allList = new ArrayList();
+            for (int i = 0; i < list.size(); i++) {
+                colList = new ArrayList();
+                colList.add(list.get(i).getProvince());
+                colList.add(list.get(i).getCity());
+                colList.add(list.get(i).getCounty());
+                colList.add(list.get(i).getBuildingAias());
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getBuildingArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getBuildingAreaRentArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getBuildingAreaIdelArea(),true));
+                colList.add(list.get(i).getParentBuildingName());
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getBuildingAreaUseArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getBuildingAreaUnavailable(),true));
+                colList.add(list.get(i).getParentLandName());
+                colList.add(list.get(i).getBuildingRate());
+                colList.add(list.get(i).getBuildingSource());
+                colList.add(list.get(i).getGetDate());
+                colList.add(list.get(i).getBuildingStartYear());
+                colList.add(list.get(i).getInvestmentEntity());
+                colList.add(list.get(i).getManagementHierarchy());
+                colList.add(list.get(i).getBuildingStructure());
+                colList.add(list.get(i).getTotalNumberOfFloors());
+                colList.add(list.get(i).getBuildingFaceStreet());
+                colList.add(list.get(i).getCourtyard());
+                colList.add(list.get(i).getWholeBuilding());
+                colList.add(list.get(i).getPremisesPermit());
+                colList.add(list.get(i).getNoPremisesPermitReason());
+                colList.add(list.get(i).getUnrelatedAssets());
+                colList.add(list.get(i).getAssetCode());
+                colList.add(list.get(i).getAstsLabe());
+                colList.add(list.get(i).getUseState());
+                colList.add(list.get(i).getBuildingUse());
+                colList.add(list.get(i).getOwnershipStatus());
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getBuildingFloorArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getUseArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getUseAreaSelfUseArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getUseAreaRentArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getUseAreaIdelArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getUseAreaUnavailableArea(),true));
+                colList.add(list.get(i).getBuildingManageName());
+                colList.add(list.get(i).getBuildingManageCompany());
+                colList.add(list.get(i).getBuildingLongitude());
+                colList.add(list.get(i).getBuildingDimension());
+                allList.add(colList.toArray());
+            }
+
+            String[] header = new String[]{
+                    "资产所属单位(一级)",
+                    "资产所属单位(二级)",
+                    "资产所属单位(三级)",
+                    "建筑别名",
+                    "建筑面积(m²)",
+                    "建筑面积-出租(㎡)",
+                    "建筑面积-闲置(㎡)",
+                    "上级局址名称",
+                    "建筑面积-自用(㎡)",
+                    "建筑面积-不可使用(㎡)",
+                    "上级土地名称",
+                    "得房率",
+                    "房屋来源",
+                    "取得日期",
+                    "房龄开始年份",
+                    "投资主体",
+                    "管理层级",
+                    "房屋结构",
+                    "楼层总数",
+                    "是否临街",
+                    "是否有院落",
+                    "整栋是否独有",
+                    "是否有房产证",
+                    "无房产证原因",
+                    "未关联资产",
+                    "资产编号",
+                    "资产标签号",
+                    "使用状态",
+                    "建筑用途",
+                    "权属状态",
+                    "建筑占地面积(㎡)",
+                    "使用面积(㎡)",
+                    "使用面积-自用(㎡)",
+                    "使用面积-出租(㎡)",
+                    "使用面积-闲置(㎡)",
+                    "使用面积-不可使用(㎡)",
+                    "楼长姓名",
+                    "楼长所在单位",
+                    "经度",
+                    "纬度",
+            };
+            ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    /**
+     * 报表=>自有房产人均办公面积
+     */
+    public void responseTab1(DateFormat df, ExcelExport ee1, Map<String, Object> map1) {
+        try {
+            //全省节点
+            WzBuildmanageAvageareaVo province = new WzBuildmanageAvageareaVo();
+            double pareaNum = 0l;
+            double pallEmp = 0l;
+
+            List<WzBuildmanageAvageareaVo> appointmentRecordList = wzBuildmanageAvageareaService.queryVoList(map1);
+            Map<String, List<WzBuildmanageAvageareaVo>> map = new HashMap<>();
+            for (WzBuildmanageAvageareaVo wzBuildmanageAvageareaVo : appointmentRecordList) {
+                double avera = wzBuildmanageAvageareaVo.getOfficeArea() / wzBuildmanageAvageareaVo.getEmployees();
+                avera = formatDouble(avera);
+                wzBuildmanageAvageareaVo.setAverage(avera);
+                List<WzBuildmanageAvageareaVo> list;
+                if (map.get(wzBuildmanageAvageareaVo.getCity()) != null) {
+                    list = map.get(wzBuildmanageAvageareaVo.getCity());
+                    list.add(wzBuildmanageAvageareaVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(wzBuildmanageAvageareaVo);
+                }
+                map.put(wzBuildmanageAvageareaVo.getCity(), list);
+                pareaNum += wzBuildmanageAvageareaVo.getOfficeArea();
+                pallEmp += wzBuildmanageAvageareaVo.getEmployees();
+            }
+            pareaNum = formatDouble(pareaNum);
+            double pavera = 0;
+            if (pallEmp != 0) {
+                pavera = formatDouble(pareaNum / pallEmp);
+            }
+            province.setOfficeArea(pareaNum);
+            province.setEmployees(pallEmp);
+            province.setCountyName("全省");
+            province.setCity("全省");
+            province.setAverage(pavera);
+
+            List<WzBuildmanageAvageareaVo> resultList = new ArrayList<>();
+            List<WzBuildmanageAvageareaVo> cityList = new ArrayList<>();
+
+            double allareaNum = 0l;
+            double allEmp = 0l;
+            for (Map.Entry<String, List<WzBuildmanageAvageareaVo>> entry : map.entrySet()) {
+
+                List<WzBuildmanageAvageareaVo> list = entry.getValue();
+                double cityAreaNum=0l;
+                double cityEmp=0l;
+                //县的Map集合
+                Map<String, List<WzBuildmanageAvageareaVo>> countyMap = new HashMap<>();
+                for (WzBuildmanageAvageareaVo leaveUseVo : list) {
+                    if (countyMap.get(leaveUseVo.getCounty()) != null) {
+                        list = countyMap.get(leaveUseVo.getCounty());
+                        list.add(leaveUseVo);
+                    } else {
+                        list = new ArrayList<>();
+                        list.add(leaveUseVo);
+                    }
+                    countyMap.put(leaveUseVo.getCounty(), list);
+                }
+
+                List<WzBuildmanageAvageareaVo> countyList = new ArrayList<>();
+                for (Map.Entry<String, List<WzBuildmanageAvageareaVo>> countyEntry : countyMap.entrySet()) {
+                    double areaNum=0l;
+                    double emp=0l;
+                    for (WzBuildmanageAvageareaVo wzBuildmanageAvageareaVo : countyEntry.getValue()) {
+                        areaNum += wzBuildmanageAvageareaVo.getOfficeArea();
+                        emp += wzBuildmanageAvageareaVo.getEmployees();
+                        cityAreaNum += wzBuildmanageAvageareaVo.getOfficeArea();
+                        cityEmp += wzBuildmanageAvageareaVo.getEmployees();
+                        allareaNum += wzBuildmanageAvageareaVo.getOfficeArea();
+                        allEmp += wzBuildmanageAvageareaVo.getEmployees();
+                    }
+                    WzBuildmanageAvageareaVo countyObject = new WzBuildmanageAvageareaVo();
+                    double avera = formatDouble(areaNum / emp);
+                    countyObject.setOfficeArea(formatDouble(areaNum));
+                    countyObject.setEmployees(emp);
+                    countyObject.setCity(countyEntry.getValue().get(0).getCounty());
+                    countyObject.setCountyName(list.get(0).getCityName());
+                    countyObject.setAverage(formatDouble(avera));
+                    countyList.add(countyObject);
+                }
+
+                List<WzBuildmanageAvageareaVo> orderCountyList = new ArrayList<>();
+                try {
+                    //对countList 进行排序
+                    OtnAreaEntity area = otnAreaService.queryObject(list.get(0).getCity());
+                    List<OtnAreaEntity> countyAreaList = otnAreaService.getCityOption(area.getId());
+                    int i=0;
+                    for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                        for (WzBuildmanageAvageareaVo wzCity : countyList) {
+                            if (wzCity.getCity().contains(otnAreaEntity.getName())) {
+                                i++;
+                                wzCity.setFlag(i%2==0);
+                                orderCountyList.add(wzCity);
+                            }
+                        }
+                    }
+                } catch (Exception e) {
+                    orderCountyList = countyList;
+                    e.printStackTrace();
+                }
+
+                double cityavera = formatDouble(cityAreaNum / cityEmp);
+                WzBuildmanageAvageareaVo cityObject = new WzBuildmanageAvageareaVo();
+                cityObject.setOfficeArea(formatDouble(cityAreaNum));
+                cityObject.setEmployees(cityEmp);
+                cityObject.setCity(list.get(0).getCity());
+                cityObject.setCountyName(list.get(0).getCityName());
+                cityObject.setAverage(formatDouble(cityavera));
+                cityObject.setChildren(orderCountyList);
+                cityList.add(cityObject);
+            }
+            //对cityList 进行排序
+            List<OtnAreaEntity> areaList = otnAreaService.getCityOption(0l);
+            List<WzBuildmanageAvageareaVo> orderList = new ArrayList<>();
+            for (OtnAreaEntity otnAreaEntity : areaList) {
+                for (WzBuildmanageAvageareaVo wzCity : cityList) {
+                    if (wzCity.getCity().contains(otnAreaEntity.getName())) {
+                        orderList.add(wzCity);
+                    }
+                }
+            }
+            province.setChildren(orderList);
+            resultList.add(province);
+
+
+            List<Object> colList = new ArrayList();
+            List<Object[]> allList = new ArrayList();
+            for (int i = 0; i < resultList.size(); i++) {
+
+                if (resultList.get(i).getCity().contains("省")) {
+                    colList = new ArrayList();
+                    colList.add(resultList.get(i).getCity());
+                    colList.add("");
+                    colList.add("");
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getOfficeArea(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getEmployees(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getAverage(),true));
+                    allList.add(colList.toArray());
+
+                    //处理城市的
+                    List<WzBuildmanageAvageareaVo> cityList1 = resultList.get(i).getChildren();
+                    for (WzBuildmanageAvageareaVo floorNoUserVo : cityList1) {
+                        colList = new ArrayList();
+                        colList.add("");
+                        colList.add(floorNoUserVo.getCity());
+                        colList.add("");
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getOfficeArea(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getEmployees(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getAverage(),true));
+                        allList.add(colList.toArray());
+                        //处理县城的
+                        List<WzBuildmanageAvageareaVo> countyList1 = floorNoUserVo.getChildren();
+                        for (WzBuildmanageAvageareaVo noUserVo : countyList1) {
+                            colList = new ArrayList();
+                            colList.add("");
+                            colList.add("");
+                            colList.add(noUserVo.getCity());
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getOfficeArea(),true));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getEmployees(),true));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getAverage(),true));
+                            allList.add(colList.toArray());
+                        }
+                    }
+                }
+            }
+            String[] header = new String[]{
+                    "资产所属单位(一级)",
+                    "资产所属单位(二级)",
+                    "资产所属单位(三级)",
+                    "建筑面积-自用办公房(m²)",
+                    "县市的合同人员+紧密外包人员",
+                    "人均办公面积=B/C"
+            };
+            ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void responseTab2(DateFormat df, ExcelExport ee1, Map<String, Object> map1) {
+        try {
+            int repeatNum = 0;
+            //全省节点
+            LeaveUseVo province = new LeaveUseVo();
+            province.setCountyName("全省");
+            province.setCity("全省");
+            double abuildingAreaIdelArea = 0l;
+            double abuildingAreaRentArea = 0l;
+            double abuildArea = 0l;
+            double abuildingAreaUnavailable = 0l;
+            double abuildingAreaUseArea = 0l;
+
+            List<LeaveUseVo> leaveUseVoList = wzBuildManageDetailsService.queryLeaveUseList(map1);
+            //城市的Map
+            Map<String, List<LeaveUseVo>> map = new HashMap<>();
+            for (LeaveUseVo leaveUseVo : leaveUseVoList) {
+                double avera;
+                if (leaveUseVo.getBuildingAreaIdelArea() + leaveUseVo.getBuildingAreaRentArea() == 0) {
+                    avera = 0;
+                } else {
+                    avera = leaveUseVo.getBuildingAreaIdelArea() / (leaveUseVo.getBuildingAreaIdelArea() + leaveUseVo.getBuildingAreaRentArea());
+                    avera = formatDouble(avera);
+                }
+
+                leaveUseVo.setAverage(formatDouble1(avera * 100));
+                List<LeaveUseVo> list;
+                if (map.get(leaveUseVo.getCity()) != null) {
+                    list = map.get(leaveUseVo.getCity());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                map.put(leaveUseVo.getCity(), list);
+            }
+            List<LeaveUseVo> resultList = new ArrayList<>();
+            List<LeaveUseVo> cityList = new ArrayList<>();
+            for (Map.Entry<String, List<LeaveUseVo>> entry : map.entrySet()) {
+                List<LeaveUseVo> list = entry.getValue();
+                //县的Map集合
+                Map<String, List<LeaveUseVo>> countyMap = new HashMap<>();
+                for (LeaveUseVo leaveUseVo : list) {
+                    if (countyMap.get(leaveUseVo.getCounty()) != null) {
+                        list = countyMap.get(leaveUseVo.getCounty());
+                        list.add(leaveUseVo);
+                    } else {
+                        list = new ArrayList<>();
+                        list.add(leaveUseVo);
+                    }
+                    countyMap.put(leaveUseVo.getCounty(), list);
+                }
+
+                List<LeaveUseVo> countyList = new ArrayList<>();
+                double citybuildingAreaIdelArea = 0l;
+                double citybuildingAreaRentArea = 0l;
+                double citybuildArea = 0l;
+                double citybuildingAreaUnavailable = 0l;
+                double citybuildingAreaUseArea = 0l;
+                for (Map.Entry<String, List<LeaveUseVo>> countyEntry : countyMap.entrySet()) {
+                    double buildingAreaIdelArea = 0l;
+                    double buildingAreaRentArea = 0l;
+                    double buildArea = 0l;
+                    double buildingAreaUnavailable = 0l;
+                    double buildingAreaUseArea = 0l;
+
+                    LeaveUseVo county = new LeaveUseVo();
+                    String reapStr = "";
+                    if (countyEntry.getKey().equals("市本部")) {
+                        reapStr = "市本部" + repeatNum;
+                        repeatNum++;
+                    }
+                    for (LeaveUseVo leaveUseVo : countyEntry.getValue()) {
+                        if (!reapStr.equals("")) {
+                            county.setCity(reapStr);
+                            county.setCountyName(reapStr);
+                        } else {
+                            county.setCity(leaveUseVo.getCounty());
+                            county.setCountyName(leaveUseVo.getCounty());
+                        }
+
+
+                        buildingAreaIdelArea += leaveUseVo.getBuildingAreaIdelArea();
+                        buildingAreaRentArea += leaveUseVo.getBuildingAreaRentArea();
+                        buildArea += leaveUseVo.getBuildingArea();
+                        buildingAreaUnavailable += leaveUseVo.getBuildingAreaUnavailable();
+                        buildingAreaUseArea += leaveUseVo.getBuildingAreaUseArea();
+
+                        citybuildingAreaIdelArea += leaveUseVo.getBuildingAreaIdelArea();
+                        citybuildingAreaRentArea += leaveUseVo.getBuildingAreaRentArea();
+                        citybuildArea += leaveUseVo.getBuildingArea();
+                        citybuildingAreaUnavailable += leaveUseVo.getBuildingAreaUnavailable();
+                        citybuildingAreaUseArea += leaveUseVo.getBuildingAreaUseArea();
+
+                        abuildingAreaIdelArea += leaveUseVo.getBuildingAreaIdelArea();
+                        abuildingAreaRentArea += leaveUseVo.getBuildingAreaRentArea();
+                        abuildArea += leaveUseVo.getBuildingArea();
+                        abuildingAreaUnavailable += leaveUseVo.getBuildingAreaUnavailable();
+                        abuildingAreaUseArea += leaveUseVo.getBuildingAreaUseArea();
+                    }
+                    double avera;
+                    if (buildingAreaIdelArea + buildingAreaRentArea == 0) {
+                        avera = 0;
+                    } else {
+                        avera = formatDouble(buildingAreaIdelArea / (buildingAreaRentArea + buildingAreaIdelArea));
+                    }
+                    county.setBuildingArea(formatDouble(buildArea));
+                    county.setBuildingAreaIdelArea(formatDouble(buildingAreaIdelArea));
+                    county.setBuildingAreaUnavailable(formatDouble(buildingAreaUnavailable));
+                    county.setBuildingAreaUseArea(formatDouble(buildingAreaUseArea));
+                    county.setBuildingAreaRentArea(formatDouble(buildingAreaRentArea));
+                    county.setAverage(formatDouble1(avera));
+                    countyList.add(county);
+                }
+
+                List<LeaveUseVo> orderCountyList = new ArrayList<>();
+                try {
+                    //对countList 进行排序
+                    OtnAreaEntity area = otnAreaService.queryObject(list.get(0).getCity());
+                    List<OtnAreaEntity> countyAreaList = otnAreaService.getCityOption(area.getId());
+                    for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                        for (LeaveUseVo wzCity : countyList) {
+                            if (wzCity.getCity().contains(otnAreaEntity.getName())) {
+                                orderCountyList.add(wzCity);
+                            }
+                        }
+                    }
+                } catch (Exception e) {
+                    orderCountyList = countyList;
+                    e.printStackTrace();
+                }
+
+                double avera;
+                if (citybuildingAreaRentArea + citybuildingAreaIdelArea == 0) {
+                    avera = 0;
+                } else {
+                    avera = formatDouble(citybuildingAreaIdelArea / (citybuildingAreaRentArea + citybuildingAreaIdelArea));
+                }
+                LeaveUseVo parent = new LeaveUseVo();
+                parent.setBuildingArea(formatDouble(citybuildArea));
+                parent.setBuildingAreaIdelArea(formatDouble(citybuildingAreaIdelArea));
+                parent.setBuildingAreaUnavailable(formatDouble(citybuildingAreaUnavailable));
+                parent.setBuildingAreaUseArea(formatDouble(citybuildingAreaUseArea));
+                parent.setBuildingAreaRentArea(formatDouble(citybuildingAreaRentArea));
+                parent.setCity(list.get(0).getCity());
+                parent.setCountyName(list.get(0).getCityName());
+                parent.setAverage(formatDouble1(avera * 100.0));
+                parent.setChildren(orderCountyList);
+                cityList.add(parent);
+            }
+
+            //对cityList 进行排序
+            List<OtnAreaEntity> areaList = otnAreaService.getCityOption(0l);
+            List<LeaveUseVo> orderList = new ArrayList<>();
+            for (OtnAreaEntity otnAreaEntity : areaList) {
+                for (LeaveUseVo wzCity : cityList) {
+                    if (otnAreaEntity.getName().equals(wzCity.getCity())) {
+                        orderList.add(wzCity);
+                    }
+                }
+            }
+
+            double aavera = formatDouble(abuildingAreaIdelArea / (abuildingAreaRentArea + abuildingAreaIdelArea)) * 100;
+            province.setAverage(formatDouble(aavera));
+            province.setChildren(orderList);
+            province.setBuildingArea(formatDouble(abuildArea));
+            province.setBuildingAreaIdelArea(formatDouble(abuildingAreaIdelArea));
+            province.setBuildingAreaUnavailable(formatDouble(abuildingAreaUnavailable));
+            province.setBuildingAreaUseArea(formatDouble(abuildingAreaUseArea));
+            province.setBuildingAreaRentArea(formatDouble(abuildingAreaRentArea));
+            resultList.add(province);
+
+
+            List<Object> colList = new ArrayList();
+            ;
+            List<Object[]> allList = new ArrayList();
+            for (int i = 0; i < resultList.size(); i++) {
+
+                if (resultList.get(i).getCity().contains("省")) {
+                    colList = new ArrayList();
+                    colList.add(resultList.get(i).getCity());
+                    colList.add("");
+                    colList.add("");
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingArea(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getIdelNum(),false));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaUseArea(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaRentArea(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaIdelArea(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getAverage(),true));
+                    allList.add(colList.toArray());
+
+                    //处理城市的
+                    List<LeaveUseVo> cityList1 = resultList.get(i).getChildren();
+                    for (LeaveUseVo floorNoUserVo : cityList1) {
+                        colList = new ArrayList();
+                        colList.add("");
+                        colList.add(floorNoUserVo.getCity());
+                        colList.add("");
+
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getBuildingArea(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getIdelNum(),false));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getBuildingAreaUseArea(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getBuildingAreaRentArea(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getBuildingAreaIdelArea(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getAverage(),true));
+                        allList.add(colList.toArray());
+
+                        //处理县城的
+                        List<LeaveUseVo> countyList1 = floorNoUserVo.getChildren();
+                        for (LeaveUseVo noUserVo : countyList1) {
+                            colList = new ArrayList();
+                            colList.add("");
+                            colList.add("");
+                            colList.add(noUserVo.getCity());
+
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getBuildingArea(),true));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getIdelNum(),false));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getBuildingAreaUseArea(),true));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getBuildingAreaRentArea(),true));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getBuildingAreaIdelArea(),true));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getAverage(),true));
+
+                            allList.add(colList.toArray());
+                        }
+                    }
+                }
+            }
+            String[] header = new String[]{
+                    "资产所属单位(一级)",
+                    "资产所属单位(二级)",
+                    "资产所属单位(三级)",
+                    "建筑面积(㎡)",
+                    "闲置建筑数量",
+                    "建筑面积-自用(㎡)",
+                    "建筑面积-出租(㎡)",
+                    "建筑面积-闲置(㎡)",
+                    "闲置率"
+            };
+            ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void responseTab3(DateFormat df, ExcelExport ee1, Map<String, Object> map1) {
+        try {
+            //查询列表数据
+//            Query query = new Query(pageMap);
+
+            int repeatNum = 0;
+            //全省节点
+            HouseYearVo province = new HouseYearVo();
+            province.setCountyName("全省");
+            province.setCounty("全省");
+
+            int aoneNum = 0;
+            int atwoNum = 0;
+            int athrNum = 0;
+            int aforNum = 0;
+            int afivNum = 0;
+            int asixNum = 0;
+
+            List<LeaveUseVo> leaveUseVoList = wzBuildManageDetailsService.queryLeaveUseList(map1);
+            Map<String, List<LeaveUseVo>> map = new HashMap<>();
+            for (LeaveUseVo leaveUseVo : leaveUseVoList) {
+                double avera = leaveUseVo.getBuildingAreaIdelArea() / (leaveUseVo.getBuildingAreaIdelArea() + leaveUseVo.getBuildingAreaRentArea());
+                if (leaveUseVo.getBuildingAreaIdelArea() + leaveUseVo.getBuildingAreaRentArea() == 0) {
+                    avera = 0;
+                } else {
+                    avera = formatDouble(avera);
+                }
+                leaveUseVo.setAverage(avera);
+                int num = 0;
+                if (leaveUseVo.getBuildingStartyear() == null || leaveUseVo.getBuildingStartyear().equals("")) {
+                    num = 0;
+                } else {
+                    int year1 = Integer.parseInt(leaveUseVo.getBuildingStartyear());
+                    Calendar cal2 = Calendar.getInstance();
+                    cal2.setTime(new Date());
+                    int year2 = cal2.get(Calendar.YEAR);
+                    num = year2 - year1;
+                }
+                leaveUseVo.setHouseYearNum(num);
+
+
+                List<LeaveUseVo> list;
+                if (map.get(leaveUseVo.getCity()) != null) {
+                    list = map.get(leaveUseVo.getCity());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                map.put(leaveUseVo.getCity(), list);
+            }
+            List<HouseYearVo> resultList = new ArrayList<>();
+            List<HouseYearVo> cityList = new ArrayList<>();
+
+            double provinceYearNum = 0;
+            double provinceSize = 0;
+            for (Map.Entry<String, List<LeaveUseVo>> entry : map.entrySet()) {
+
+                double cityYearNum = 0;
+                double citySize = 0;
+
+                List<LeaveUseVo> list = entry.getValue();
+                //对该list相同的县进行统计
+                Map<String, List<LeaveUseVo>> leaveMap = new HashMap<>();
+                for (LeaveUseVo leaveUseVo : list) {
+                    if (leaveMap.get(leaveUseVo.getCounty()) != null) {
+                        list = leaveMap.get(leaveUseVo.getCounty());
+                        list.add(leaveUseVo);
+                    } else {
+                        list = new ArrayList<>();
+                        list.add(leaveUseVo);
+                    }
+                    leaveMap.put(leaveUseVo.getCounty(), list);
+                }
+
+                List<HouseYearVo> houseYearVoList = new ArrayList<>();
+                int oneNum = 0;
+                int twoNum = 0;
+                int thrNum = 0;
+                int forNum = 0;
+                int fivNum = 0;
+                int sixNum = 0;
+
+
+                for (Map.Entry<String, List<LeaveUseVo>> entry1 : leaveMap.entrySet()) {
+
+                    List<LeaveUseVo> value = entry1.getValue();
+                    citySize += value.size();
+                    provinceSize += value.size();
+
+                    HouseYearVo yearVo = new HouseYearVo();
+                    yearVo.setCity(value.get(0).getCity());
+                    yearVo.setCityName(value.get(0).getCityName());
+                    yearVo.setCounty(value.get(0).getCounty());
+                    yearVo.setCountyName(value.get(0).getCountyName());
+                    double houseYear = 0;
+
+                    String reapStr = "";
+                    if (entry1.getKey().equals("市本部")) {
+                        reapStr = "市本部" + repeatNum;
+                        repeatNum++;
+                    }
+                    if (!reapStr.equals("")) {
+                        yearVo.setCity(reapStr);
+                        yearVo.setCounty(reapStr);
+                        yearVo.setCountyName(reapStr);
+                    }
+
+                    for (LeaveUseVo leaveUseVo : value) {
+                        houseYear += leaveUseVo.getHouseYearNum();
+                        cityYearNum += leaveUseVo.getHouseYearNum();
+                        provinceYearNum += leaveUseVo.getHouseYearNum();
+
+                        if (leaveUseVo.getHouseYearNum() < 10) {
+                            oneNum++;
+                            aoneNum++;
+                            yearVo.setOneLevelYear(yearVo.getOneLevelYear() + 1);
+                        } else if (leaveUseVo.getHouseYearNum() > 11 && leaveUseVo.getHouseYearNum() < 21) {
+                            twoNum++;
+                            atwoNum++;
+                            yearVo.setTwoLevelYear(yearVo.getTwoLevelYear() + 1);
+                        } else if (leaveUseVo.getHouseYearNum() > 20 && leaveUseVo.getHouseYearNum() < 31) {
+                            thrNum++;
+                            athrNum++;
+                            yearVo.setThrLevelYear(yearVo.getThrLevelYear() + 1);
+                        } else if (leaveUseVo.getHouseYearNum() > 30 && leaveUseVo.getHouseYearNum() < 41) {
+                            forNum++;
+                            aforNum++;
+                            yearVo.setFouLevelYear(yearVo.getFouLevelYear() + 1);
+                        } else if (leaveUseVo.getHouseYearNum() > 40 && leaveUseVo.getHouseYearNum() < 51) {
+                            fivNum++;
+                            afivNum++;
+                            yearVo.setFivLevelYear(yearVo.getFivLevelYear() + 1);
+                        } else {
+                            sixNum++;
+                            asixNum++;
+                            yearVo.setSixLevelYear(yearVo.getSixLevelYear() + 1);
+                        }
+                    }
+                    double aveage = houseYear / value.size();
+                    yearVo.setAverage(formatDouble1(aveage));
+                    houseYearVoList.add(yearVo);
+                }
+
+                List<HouseYearVo> orderCountyList = new ArrayList<>();
+                try {
+                    //对countList 进行排序
+                    OtnAreaEntity area = otnAreaService.queryObject(list.get(0).getCity());
+                    List<OtnAreaEntity> countyAreaList = otnAreaService.getCityOption(area.getId());
+                    for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                        for (HouseYearVo wzCity : houseYearVoList) {
+                            if (wzCity.getCounty().contains(otnAreaEntity.getName())) {
+                                orderCountyList.add(wzCity);
+                            }
+                        }
+                    }
+                } catch (Exception e) {
+                    orderCountyList = houseYearVoList;
+                    e.printStackTrace();
+                }
+
+                HouseYearVo parent = new HouseYearVo();
+                parent.setOneLevelYear(oneNum);
+                parent.setTwoLevelYear(twoNum);
+                parent.setThrLevelYear(thrNum);
+                parent.setFouLevelYear(forNum);
+                parent.setFivLevelYear(fivNum);
+                parent.setSixLevelYear(sixNum);
+                parent.setCity(houseYearVoList.get(0).getCity());
+                parent.setCounty(houseYearVoList.get(0).getCity());
+                parent.setCountyName(houseYearVoList.get(0).getCityName());
+                parent.setChildren(orderCountyList);
+                double cityAvage = cityYearNum / citySize;
+                parent.setAverage(formatDouble1(cityAvage));
+
+                cityList.add(parent);
+            }
+
+            //对cityList 进行排序
+            List<OtnAreaEntity> areaList = otnAreaService.getCityOption(0l);
+            List<HouseYearVo> orderList = new ArrayList<>();
+            for (OtnAreaEntity otnAreaEntity : areaList) {
+                for (HouseYearVo wzCity : cityList) {
+                    if (otnAreaEntity.getName().equals(wzCity.getCity())) {
+                        orderList.add(wzCity);
+                    }
+                }
+            }
+
+            province.setOneLevelYear(aoneNum);
+            province.setTwoLevelYear(atwoNum);
+            province.setThrLevelYear(athrNum);
+            province.setFouLevelYear(aforNum);
+            province.setFivLevelYear(afivNum);
+            province.setSixLevelYear(asixNum);
+            province.setChildren(orderList);
+            double provinceAvage = provinceYearNum / provinceSize;
+            province.setAverage(formatDouble1(provinceAvage));
+            resultList.add(province);
+
+
+            List<Object> colList = new ArrayList();
+            List<Object[]> allList = new ArrayList();
+            for (int i = 0; i < resultList.size(); i++) {
+
+                if (resultList.get(i).getCounty().contains("省")) {
+                    colList = new ArrayList();
+                    colList.add(resultList.get(i).getCity());
+                    colList.add("");
+                    colList.add("");
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getOneLevelYear(),false));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getTwoLevelYear(),false));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getThrLevelYear(),false));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getFouLevelYear(),false));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getFivLevelYear(),false));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getSixLevelYear(),false));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getAverage(),true));
+                    allList.add(colList.toArray());
+
+                    //处理城市的
+                    List<HouseYearVo> cityList1 = resultList.get(i).getChildren();
+                    for (HouseYearVo floorNoUserVo : cityList1) {
+                        colList = new ArrayList();
+                        colList.add("");
+                        colList.add(floorNoUserVo.getCity());
+                        colList.add("");
+
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getOneLevelYear(),false));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getTwoLevelYear(),false));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getThrLevelYear(),false));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getFouLevelYear(),false));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getFivLevelYear(),false));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getSixLevelYear(),false));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getAverage(),true));
+                        allList.add(colList.toArray());
+
+                        //处理县城的
+                        List<HouseYearVo> countyList1 = floorNoUserVo.getChildren();
+                        for (HouseYearVo noUserVo : countyList1) {
+                            colList = new ArrayList();
+                            colList.add("");
+                            colList.add("");
+                            colList.add(noUserVo.getCounty());
+
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getOneLevelYear(),false));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getTwoLevelYear(),false));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getThrLevelYear(), false));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getFouLevelYear(),false));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getFivLevelYear(),false));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getSixLevelYear(),false));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getAverage(),true));
+
+                            allList.add(colList.toArray());
+                        }
+                    }
+                }
+            }
+            String[] header = new String[]{
+                    "资产所属单位(一级)",
+                    "资产所属单位(二级)",
+                    "资产所属单位(三级)",
+                    "1-10年",
+                    "11-20年",
+                    "21-30年",
+                    "31-40年",
+                    "41-50年",
+                    "50以上",
+                    "平均房龄"
+            };
+            ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void responseTab4(DateFormat df, ExcelExport ee1, Map<String, Object> map) {
+        try {
+            List<WzBuildManageDetailsEntity> list = wzBuildManageDetailsService.queryList(map);
+            List<Object> colList;
+            List<Object[]> allList = new ArrayList();
+            for (int i = 0; i < list.size(); i++) {
+                colList = new ArrayList();
+                colList.add(list.get(i).getProvince());
+                colList.add(list.get(i).getCity());
+                colList.add(list.get(i).getCounty());
+                colList.add(list.get(i).getBuildingAias());
+                colList.add(list.get(i).getBuildingNameAlias());
+                colList.add(list.get(i).getBuildingAddressNumber());
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getBuildingRate(),true));
+                colList.add(list.get(i).getParentBuildingName());
+                colList.add(list.get(i).getParentLandName());
+                colList.add(list.get(i).getBuildingSource());
+                colList.add(list.get(i).getBuildingStartYear());
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getBuildingFloorArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getBuildingArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getBuildingAreaUseArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getBuildingAreaRentArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getBuildingAreaIdelArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getBuildingAreaUnavailable(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getUseArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getUseAreaSelfUseArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getUseAreaRentArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getUseAreaIdelArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(list.get(i).getUseAreaUnavailableArea(),true));
+                colList.add(list.get(i).getBuildingManageName());
+                colList.add(list.get(i).getBuildingManageCompany());
+                colList.add(list.get(i).getBuildingLongitude());
+                colList.add(list.get(i).getBuildingDimension());
+                colList.add(list.get(i).getBuildingActualPropertyRights());
+                allList.add(colList.toArray());
+            }
+
+            String[] header = new String[]{
+                    "资产所属单位(一级)",
+                    "资产所属单位(二级)",
+                    "资产所属单位(三级)",
+                    "建筑别名",
+                    "局址别名",
+                    "局址编码",
+                    "得房率",
+                    "上级局指名称",
+                    "上级土地名称",
+                    "房屋来源",
+                    "取得日期",
+                    "建筑占地面积(㎡)",
+                    "建筑面积(㎡)",
+                    "建筑面积-自用(㎡)",
+                    "建筑面积-出租(㎡)",
+                    "建筑面积-闲置(㎡)",
+                    "建筑面积-不可使用(㎡)",
+                    "使用面积(㎡)",
+                    "使用面积-自用(㎡)",
+                    "使用面积-出租(㎡)",
+                    "使用面积-闲置(㎡)",
+                    "使用面积-不可使用(㎡)",
+                    "楼长姓名",
+                    "楼长所在单位",
+                    "房屋经度",
+                    "房屋纬度",
+                    "房屋实际产权"
+            };
+            ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 获取局址别名
+     */
+    @RequestMapping("/getLastStaticMonth")
+    @IgnoreAuth
+    public R getLastStaticMonth(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        String month="";
+        String tableName=query.get("tableName").toString();
+        if(tableName.equals("wz_f_houser_lease_use_management")){
+            month = wzBuildManageDetailsService.getLastStaticMonth(query);
+        }
+        else if(tableName.equals("wz_f_houserent_contrac_manage")){
+            month = wzBuildManageDetailsService.getLastStaticMonth(query);
+        }
+        else if(tableName.equals("wz_f_buildmanage_avagearea")){
+            month=wzBuildmanageAvageareaService.getLastStaticMonth();
+        }
+        else if(tableName.equals("wz_f_buildmanage_building_details")){
+            month = wzBuildManageDetailsService.getLastStaticMonth1(query);
+        }
+        else if(tableName.equals("wz_f_houserent_rent_out_arrears_manage")){
+            month = wzBuildManageDetailsService.getLastStaticMonth2(query);
+        }
+
+        return R.ok().put("page", month);
+    }
+
+
+    /**
+     * 获取局址别名
+     */
+    @RequestMapping("/getBuildingNameAlias")
+    @IgnoreAuth
+    public R getBuildingNameAlias(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<String> list = wzBuildManageDetailsService.getBuildingNameAlias(query);
+        Query query1 = new Query(pageMap);
+        int total = wzBuildManageDetailsService.getBuildingNameAliasTotal(query1);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 土地详情
+     */
+    @RequestMapping("/queryBuildDetailByCode")
+    @IgnoreAuth
+    public R queryBuildDetailByCode(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Map<String, Object> query = new HashMap<>();
+        Map<String, Object> query1 = new HashMap<>();
+        query.putAll(pageMap.getMap());
+        query1.putAll(pageMap.getMap());
+        // 没有选择局址默认燕赵信息大厦
+        if (!StringUtils.hasText((String) query.get("buildingAddressNumber"))
+                && !StringUtils.hasText((String) query.get("buildingNameAlias"))) {
+            query.put("buildingAddressNumber", "13000001");
+        }
+        if(query.get("buildingAddressNumber")!=null&&query.get("buildingAddressNumber").toString().equals("")
+        &&query.get("buildingAias")!=null&&query.get("buildingAias").toString().equals("")){
+            query.put("offset",0);
+            query.put("limit",12);
+        }
+
+        Integer month= 202311;
+        if(query1.get("statisticalMonth")!=null&&!query1.get("statisticalMonth").toString().equals("")){
+            query1.put("statisticalMonth1",query1.get("statisticalMonth"));
+            query1.remove("statisticalMonth");
+            month=Integer.valueOf(query1.get("statisticalMonth1").toString());
+        }
+
+        List<WzBuildManageDetailsEntity> list = wzBuildManageDetailsService.queryList(query);
+        //查询局址编码buildingAddressNumber
+        List<WzHouseMaintenaCostEntity> costEntityList=wzHouseMaintenaCostService.queryList1(query1);
+        //查询房屋维修费
+        Map<String,Double> costMap=new HashMap<>();
+        double ss=0l;
+        double cx=0l;
+        for (WzHouseMaintenaCostEntity wzHouseMaintenaCostEntity : costEntityList) {
+            if(costMap.get(wzHouseMaintenaCostEntity.getStatisticalMonth())==null){
+                costMap.put(wzHouseMaintenaCostEntity.getStatisticalMonth(),wzHouseMaintenaCostEntity.getErpCreditedAmount());
+            }else{
+                Double num=costMap.get(wzHouseMaintenaCostEntity.getStatisticalMonth())+wzHouseMaintenaCostEntity.getErpCreditedAmount();
+                costMap.put(wzHouseMaintenaCostEntity.getStatisticalMonth(),num);
+            }
+            //
+            if(wzHouseMaintenaCostEntity.getInvestmentEntity()!=null){
+                if(wzHouseMaintenaCostEntity.getInvestmentEntity().equals("上市")){
+                    ss+=wzHouseMaintenaCostEntity.getErpCreditedAmount();
+                }else{
+                    cx+=wzHouseMaintenaCostEntity.getErpCreditedAmount();
+                }
+            }
+        }
+        //key的转换
+        for(int i=202301;i<month+1;i++){
+            if(costMap.get(i+"")==null){
+                costMap.put(i+"", 0.0);
+            }
+        }
+
+        Map<String,Double> _costMap=new HashMap<>();
+        for(Map.Entry<String,Double> entry:costMap.entrySet()){
+            String key="";
+            if(entry.getKey().contains("202301")){
+                key="one";
+            }
+            if(entry.getKey().contains("202302")){
+                key="two";
+            }
+            if(entry.getKey().contains("202303")){
+                key="thr";
+            }
+            if(entry.getKey().contains("202304")){
+                key="fou";
+            }
+            if(entry.getKey().contains("202305")){
+                key="fiv";
+            }
+            if(entry.getKey().contains("202306")){
+                key="six";
+            }
+            if(entry.getKey().contains("202307")){
+                key="sev";
+            }
+            if(entry.getKey().contains("202308")){
+                key="eig";
+            }
+            if(entry.getKey().contains("202309")){
+                key="nic";
+            }
+            if(entry.getKey().contains("202310")){
+                key="ten";
+            }
+            if(entry.getKey().contains("202311")){
+                key="twi";
+            }
+            if(entry.getKey().contains("202312")){
+                key="twt";
+            }
+            _costMap.put(key,formatDouble(entry.getValue()));
+        }
+
+
+        _costMap.put("cx",formatDouble(cx));
+        _costMap.put("ss",formatDouble(ss));
+        if(list.size()>0){
+            _costMap.put("preIdea",formatDouble(Double.valueOf(list.get(0).getBuildingAreaIdelArea()==null?"0":list.get(0).getBuildingAreaIdelArea())));
+            _costMap.put("lastIdea",formatDouble(Double.valueOf(list.get(list.size()-1).getBuildingAreaIdelArea()==null?"0":list.get(list.size()-1).getBuildingAreaIdelArea())));
+            if(_costMap.get("preIdea")==0){
+                _costMap.put("average",formatDouble(0));
+            }else{
+                double average=(_costMap.get("lastIdea")-_costMap.get("preIdea"))/_costMap.get("preIdea");
+                _costMap.put("average",formatDouble(average));
+            }
+        }
+
+
+        HouseStaticVo staticVo=new HouseStaticVo();
+        staticVo.setCostMap(_costMap);
+        staticVo.setList(list);
+        return R.ok().put("page", staticVo);
+    }
+
+
+    /**
+     * 土地详情
+     */
+    @RequestMapping("/queryCityAreaByCode")
+    @IgnoreAuth
+    public R queryCityAreaByCode(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Map<String, Object> query = new HashMap<>();
+        query.putAll(pageMap.getMap());
+        // 没有选择局址默认燕赵信息大厦
+        if (!StringUtils.hasText((String) query.get("buildingAddressNumber"))
+                && !StringUtils.hasText((String) query.get("buildingNameAlias"))) {
+            query.put("buildingAddressNumber", "13000001");
+        }
+        //判断是否有日期
+        BuildManageVo data = wzBuildManageDetailsService.queryCityAreaByCode(query);
+        return R.ok().put("data", data);
+    }
+
+
+    /**
+     * 获取局址别名
+     */
+    @RequestMapping("/getBuildingNameCode")
+    @IgnoreAuth
+    public R getBuildingNameCode(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<String> list = wzBuildManageDetailsService.getBuildingNameCode(query);
+        Query query1 = new Query(pageMap);
+        int total = wzBuildManageDetailsService.queryBuildDetailByCodeTotal(query1);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/loadWord")
+    @IgnoreAuth
+    public void loadWord(String buildingAddressNumber, String buildingAias,String statisticalMonth, String city, String county, HttpServletResponse response) throws Exception {
+
+        Map<String, Object> query = new HashMap<>();
+        Map<String, Object> query1 = new HashMap<>();
+        query.put("buildingAddressNumber",buildingAddressNumber);
+        query.put("statisticalMonth",statisticalMonth);
+        query.put("buildingAias",buildingAias);
+        query.put("city",city);
+        query.put("county",county);
+
+        query1.put("buildingAddressNumber",buildingAddressNumber);
+        query1.put("statisticalMonth",statisticalMonth);
+        query1.put("buildingAias",buildingAias);
+        query1.put("city",city);
+        query1.put("county",county);
+
+        if(query.get("buildingAddressNumber")!=null&&query.get("buildingAddressNumber").toString().equals("")
+                &&query.get("buildingAias")!=null&&query.get("buildingAias").toString().equals("")){
+            query.put("offset",0);
+            query.put("limit",12);
+        }
+        if(query1.get("statisticalMonth")!=null&&!query1.get("statisticalMonth").toString().equals("")){
+            query1.put("statisticalMonth1",query1.get("statisticalMonth"));
+            query1.remove("statisticalMonth");
+        }
+
+        List<WzBuildManageDetailsEntity> list = wzBuildManageDetailsService.queryList(query);
+        //查询局址编码buildingAddressNumber
+        List<WzHouseMaintenaCostEntity> costEntityList=wzHouseMaintenaCostService.queryList1(query1);
+        //查询房屋维修费
+        Map<String,Double> costMap=new HashMap<>();
+        double ss=0l;
+        double cx=0l;
+        for (WzHouseMaintenaCostEntity wzHouseMaintenaCostEntity : costEntityList) {
+            if(costMap.get(wzHouseMaintenaCostEntity.getStatisticalMonth())==null){
+                costMap.put(wzHouseMaintenaCostEntity.getStatisticalMonth(),wzHouseMaintenaCostEntity.getErpCreditedAmount());
+            }else{
+                Double num=costMap.get(wzHouseMaintenaCostEntity.getStatisticalMonth())+wzHouseMaintenaCostEntity.getErpCreditedAmount();
+                costMap.put(wzHouseMaintenaCostEntity.getStatisticalMonth(),num);
+            }
+            //
+            if(wzHouseMaintenaCostEntity.getInvestmentEntity()!=null){
+                if(wzHouseMaintenaCostEntity.getInvestmentEntity().equals("上市")){
+                    ss+=wzHouseMaintenaCostEntity.getErpCreditedAmount();
+                }else{
+                    cx+=wzHouseMaintenaCostEntity.getErpCreditedAmount();
+                }
+            }
+        }
+        Integer month= 202311;
+        //key的转换
+        for(int i=202301;i<month+1;i++){
+            if(costMap.get(i+"")==null){
+                costMap.put(i+"", 0.0);
+            }
+        }
+
+        Map<String,Double> _costMap=new HashMap<>();
+        for(Map.Entry<String,Double> entry:costMap.entrySet()){
+            String key="";
+            if(entry.getKey().contains("202301")){
+                key="one";
+            }
+            if(entry.getKey().contains("202302")){
+                key="two";
+            }
+            if(entry.getKey().contains("202303")){
+                key="thr";
+            }
+            if(entry.getKey().contains("202304")){
+                key="fou";
+            }
+            if(entry.getKey().contains("202305")){
+                key="fiv";
+            }
+            if(entry.getKey().contains("202306")){
+                key="six";
+            }
+            if(entry.getKey().contains("202307")){
+                key="sev";
+            }
+            if(entry.getKey().contains("202308")){
+                key="eig";
+            }
+            if(entry.getKey().contains("202309")){
+                key="nic";
+            }
+            if(entry.getKey().contains("202310")){
+                key="ten";
+            }
+            if(entry.getKey().contains("202311")){
+                key="twi";
+            }
+            if(entry.getKey().contains("202312")){
+                key="twt";
+            }
+            _costMap.put(key,formatDouble(entry.getValue()));
+        }
+
+
+        _costMap.put("cx",formatDouble(cx));
+        _costMap.put("ss",formatDouble(ss));
+        if(list.size()>0){
+            _costMap.put("preIdea",formatDouble(Double.valueOf(list.get(0).getBuildingAreaIdelArea()==null?"0":list.get(0).getBuildingAreaIdelArea())));
+            _costMap.put("lastIdea",formatDouble(Double.valueOf(list.get(list.size()-1).getBuildingAreaIdelArea()==null?"0":list.get(list.size()-1).getBuildingAreaIdelArea())));
+            if(_costMap.get("preIdea")==0){
+                _costMap.put("average",formatDouble(0));
+            }else{
+                double average=(_costMap.get("lastIdea")-_costMap.get("preIdea"))/_costMap.get("preIdea");
+                _costMap.put("average",formatDouble(average));
+            }
+        }
+        //------------------------->>>>>>>>>>>>>>>>>>>>>-------------------------
+
+
+        // 新建一个输出流
+        ByteArrayOutputStream bao = new ByteArrayOutputStream();
+        // pdfWriter 使用传递输出流为参数的构造函数
+        PdfWriter pdfWriter = new PdfWriter(bao);
+
+        PdfDocument pdfDoc = new PdfDocument(pdfWriter);
+
+
+        PageSize ps = PageSize.A4;
+        Document doc = new Document(pdfDoc, ps.rotate());
+        doc.setMargins(20, 0, 20,0);
+        //中文字体
+        PdfFont zhFont = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
+        Table table = new Table(new float[]{1,1,1,1,1,1,1,1,1,1,1,1,1,1});
+        // 构建表格以100%的宽度
+        table.setWidth(UnitValue.createPercentValue(95))
+                .setTextAlignment(TextAlignment.CENTER)
+                .setHorizontalAlignment(HorizontalAlignment.CENTER)
+                .setPadding(0f);
+        //第一行
+        table.addCell(new Cell(3, 1)
+                .add(new Paragraph("基\n础\n信\n息").setFontSize(11).setFont(zhFont).setBold()).setPadding(4f));
+
+        table.addCell(new Cell(1, 1).add(new Paragraph("局址编码").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph(list.get(0).getBuildingAddressNumber()==null?"":list.get(0).getBuildingAddressNumber())
+                .setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("局址别名").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph(list.get(0).getBuildingAias()==null?"":list.get(0).getBuildingAias())
+                .setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("所属市区").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph(list.get(0).getCity()==null?"":list.get(0).getCity())
+                .setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("所属区县").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 3).add(new Paragraph(list.get(0).getCounty()==null?"":list.get(0).getCounty())
+                .setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        //第二行
+        table.addCell(new Cell(1, 1).add(new Paragraph("局址地址").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 5).add(new Paragraph(list.get(0).getStandardAddress()==null?"":list.get(0).getStandardAddress())
+                .setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("所处地段").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("一般街道 (2类)").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("建筑数量").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 3).add(new Paragraph(list.size()+"").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        //第三行
+        table.addCell(new Cell(1, 1).add(new Paragraph("建筑面积").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph(list.get(0).getBuildingArea()==null?"":list.get(0).getBuildingArea()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("土地面积").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph(list.get(0).getUseArea()==null?"":list.get(0).getUseArea()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("办公人数").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 6).add(new Paragraph("-").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        //第四行
+        table.addCell(new Cell(13, 1)
+                .add(new Paragraph("建\n筑\n信\n息").setFontSize(11).setFont(zhFont).setBold()).setPadding(4f).setVerticalAlignment(VerticalAlignment.MIDDLE));
+        table.addCell(new Cell(1, 1).add(new Paragraph("资产编号").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("建筑别名").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("房龄开始日期").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("投资主体").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("楼层总数").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("建筑用途").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("自建面积").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("自用面积").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("出租面积").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("闲置面积").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("资产原值").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("累计折旧").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        for(int i=0;i<list.size();i++){
+            table.addCell(new Cell(1, 1).add(new Paragraph(list.get(i).getId()+"").setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph(list.get(i).getBuildingAias()==null?"":list.get(i).getBuildingAias()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph(list.get(i).getBuildingStartYear()==null?"":list.get(i).getBuildingStartYear()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph(list.get(i).getInvestmentEntity()==null?"":list.get(i).getInvestmentEntity()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph(list.get(i).getTotalNumberOfFloors()==null?"":list.get(i).getTotalNumberOfFloors()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph(list.get(i).getBuildingUse()==null?"":list.get(i).getBuildingUse()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph(list.get(i).getBuildingArea()==null?"":list.get(i).getBuildingArea()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph(list.get(i).getBuildingAreaUseArea()==null?"":list.get(i).getBuildingAreaUseArea()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph(list.get(i).getBuildingAreaRentArea()==null?"":list.get(i).getBuildingAreaRentArea()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph(list.get(i).getBuildingAreaIdelArea()==null?"":list.get(i).getBuildingAreaIdelArea()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f).setHeight(18));
+        }
+        for(int i=0;i<12-list.size();i++){
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+            table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f).setHeight(18));
+        }
+
+        //第四行
+        table.addCell(new Cell(8, 1)
+                .add(new Paragraph("出\n租\n信\n息").setFontSize(11).setFont(zhFont).setBold()).setPadding(4f).setVerticalAlignment(VerticalAlignment.MIDDLE));
+        table.addCell(new Cell(1, 1).add(new Paragraph("上市累计").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("对外出租收入").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("-").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("对外出租累计欠费").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("-").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("水电取暖等杂费欠费").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("-").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 3).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        table.addCell(new Cell(1, 1).add(new Paragraph("存续累计").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("对外出租收入").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("-").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("对外出租累计欠费").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("-").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("水电取暖等杂费欠费").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("-").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 3).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        table.addCell(new Cell(2, 1).add(new Paragraph("分月数据").setFontSize(10).setFont(zhFont)).setPadding(4f).setVerticalAlignment(VerticalAlignment.MIDDLE));
+        table.addCell(new Cell(1, 13).add(new Paragraph("12个月数据").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("1月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("2月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("3月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("4月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("5月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("6月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("7月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("8月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("9月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("10月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("11月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("12月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        table.addCell(new Cell(1, 1).add(new Paragraph("对外出租收入(上市)").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        table.addCell(new Cell(1, 1).add(new Paragraph("对外出租欠费(上市)").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        table.addCell(new Cell(1, 1).add(new Paragraph("对外租出收入(存续)").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        table.addCell(new Cell(1, 1).add(new Paragraph("对外租出欠费(存续)").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+
+        //第五行
+        table.addCell(new Cell(6, 1)
+                .add(new Paragraph("费\n用\n信\n息").setFontSize(11).setFont(zhFont).setBold()).setPadding(4f).setVerticalAlignment(VerticalAlignment.MIDDLE));
+        table.addCell(new Cell(1, 1).add(new Paragraph("上市累计").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("房屋维修费").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("ss")==null?"":_costMap.get("ss").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("物业管理费").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 3).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        table.addCell(new Cell(1, 1).add(new Paragraph("存续累计").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("房屋维修费").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("cx")==null?"":_costMap.get("cx").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("物业管理费").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 3).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        table.addCell(new Cell(2, 1).add(new Paragraph("分月数据").setFontSize(10).setFont(zhFont)).setPadding(4f).setVerticalAlignment(VerticalAlignment.MIDDLE));
+        table.addCell(new Cell(1, 13).add(new Paragraph("12个月数据").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("1月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("2月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("3月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("4月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("5月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("6月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("7月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("8月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("9月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("10月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("11月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("12月").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        table.addCell(new Cell(1, 1).add(new Paragraph("房屋维修费").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("one")==null?"":_costMap.get("one").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("two")==null?"":_costMap.get("two").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("thr")==null?"":_costMap.get("thr").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("fou")==null?"":_costMap.get("fou").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("fiv")==null?"":_costMap.get("fiv").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("six")==null?"":_costMap.get("six").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("sev")==null?"":_costMap.get("sev").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("eig")==null?"":_costMap.get("eig").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("nic")==null?"":_costMap.get("nic").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("ten")==null?"":_costMap.get("ten").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("twi")==null?"":_costMap.get("twi").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("twt")==null?"":_costMap.get("twt").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        table.addCell(new Cell(1, 1).add(new Paragraph("物业管理费").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+
+        //第六行
+        table.addCell(new Cell(3, 1)
+                .add(new Paragraph("评\n价\n信\n息").setFontSize(11).setFont(zhFont).setBold()).setPadding(4f).setVerticalAlignment(VerticalAlignment.MIDDLE));
+        table.addCell(new Cell(1, 2).add(new Paragraph("指标").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("年初").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("当期").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("变化率").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("指标").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("年初").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("当期").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("变化率").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 3).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        table.addCell(new Cell(1, 2).add(new Paragraph("自有房产人均办公面积").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("-").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("-").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("-").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("房屋面积闲置率").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("preIdea")==null?"":_costMap.get("preIdea").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("lastIdea")==null?"":_costMap.get("lastIdea").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph(_costMap.get("average")==null?"":_costMap.get("average").toString()).setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 3).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        table.addCell(new Cell(1, 2).add(new Paragraph("对外出租平均单价").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("-").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("-").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("-").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 2).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 1).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+        table.addCell(new Cell(1, 3).add(new Paragraph("").setFontSize(10).setFont(zhFont)).setPadding(4f));
+
+        doc.add(table);
+
+        //边距
+        doc.close();
+
+        // 返回给客户端
+        byte[] bytes = bao.toByteArray();
+        response.reset();
+        response.setHeader("Content-Disposition","attachment;filename=totalExcel.pdf");
+        response.setContentType("application/pdf;charset=UTF-8");
+        response.setContentLength(bytes.length);
+        ServletOutputStream ouputStream = response.getOutputStream();
+        ouputStream.write(bytes, 0, bytes.length);
+        ouputStream.flush();
+        ouputStream.close();
+
+    }
+
+
+    public double formatDouble(double num) {
+        if (num == 0) return 0;
+        DecimalFormat format2 = new DecimalFormat("#.0000");
+        String str2 = format2.format(num);
+        double avera = Double.parseDouble(str2);
+        return avera;
+    }
+
+    public double formatDouble1(double num) {
+        if (num == 0) return 0;
+        DecimalFormat format2 = new DecimalFormat("#.00");
+        String str2 = format2.format(num);
+        double avera = Double.parseDouble(str2);
+        return avera;
+    }
+
+
+}

+ 178 - 0
src/main/java/com/example/controller/WzBuildmanageAvageareaController.java

@@ -0,0 +1,178 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.vo.housemanager.WzBuildmanageAvageareaVo;
+import com.example.service.WzBuildmanageAvageareaService;
+import com.example.service.WzOtnAreaService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/house-car/house/dist/api/WzBuildmanageAvagearea")
+public class WzBuildmanageAvageareaController {
+
+    @Autowired
+    private WzBuildmanageAvageareaService wzBuildmanageAvageareaService;
+    @Autowired
+    private WzOtnAreaService otnAreaService;
+
+    /**
+     * 自有房产人均办公面积-----一个接口整个界面
+     */
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        //全省节点
+        WzBuildmanageAvageareaVo province = new WzBuildmanageAvageareaVo();
+        double pareaNum = 0l;
+        double pallEmp = 0l;
+
+        List<WzBuildmanageAvageareaVo> appointmentRecordList = wzBuildmanageAvageareaService.queryVoList(query);
+        Map<String, List<WzBuildmanageAvageareaVo>> map = new HashMap<>();
+        for (WzBuildmanageAvageareaVo wzBuildmanageAvageareaVo : appointmentRecordList) {
+            double avera = wzBuildmanageAvageareaVo.getOfficeArea() / wzBuildmanageAvageareaVo.getEmployees();
+            avera = formatDouble(avera);
+            wzBuildmanageAvageareaVo.setAverage(avera);
+            List<WzBuildmanageAvageareaVo> list;
+            if (map.get(wzBuildmanageAvageareaVo.getCity()) != null) {
+                list = map.get(wzBuildmanageAvageareaVo.getCity());
+                list.add(wzBuildmanageAvageareaVo);
+            } else {
+                list = new ArrayList<>();
+                list.add(wzBuildmanageAvageareaVo);
+            }
+            map.put(wzBuildmanageAvageareaVo.getCity(), list);
+            pareaNum += wzBuildmanageAvageareaVo.getOfficeArea();
+            pallEmp += wzBuildmanageAvageareaVo.getEmployees();
+        }
+        pareaNum = formatDouble(pareaNum);
+        double pavera = 0;
+        if (pallEmp != 0) {
+            pavera = formatDouble(pareaNum / pallEmp);
+        }
+        province.setOfficeArea(pareaNum);
+        province.setEmployees(pallEmp);
+        province.setCountyName("全省");
+        province.setCity("全省");
+        province.setAverage(pavera);
+
+        List<WzBuildmanageAvageareaVo> resultList = new ArrayList<>();
+        List<WzBuildmanageAvageareaVo> cityList = new ArrayList<>();
+
+        double allareaNum = 0l;
+        double allEmp = 0l;
+        for (Map.Entry<String, List<WzBuildmanageAvageareaVo>> entry : map.entrySet()) {
+
+            List<WzBuildmanageAvageareaVo> list = entry.getValue();
+            double cityAreaNum=0l;
+            double cityEmp=0l;
+            //县的Map集合
+            Map<String, List<WzBuildmanageAvageareaVo>> countyMap = new HashMap<>();
+            for (WzBuildmanageAvageareaVo leaveUseVo : list) {
+                if (countyMap.get(leaveUseVo.getCounty()) != null) {
+                    list = countyMap.get(leaveUseVo.getCounty());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getCounty(), list);
+            }
+
+            List<WzBuildmanageAvageareaVo> countyList = new ArrayList<>();
+            for (Map.Entry<String, List<WzBuildmanageAvageareaVo>> countyEntry : countyMap.entrySet()) {
+                double areaNum=0l;
+                double emp=0l;
+                for (WzBuildmanageAvageareaVo wzBuildmanageAvageareaVo : countyEntry.getValue()) {
+                    areaNum += wzBuildmanageAvageareaVo.getOfficeArea();
+                    emp += wzBuildmanageAvageareaVo.getEmployees();
+                    cityAreaNum += wzBuildmanageAvageareaVo.getOfficeArea();
+                    cityEmp += wzBuildmanageAvageareaVo.getEmployees();
+                    allareaNum += wzBuildmanageAvageareaVo.getOfficeArea();
+                    allEmp += wzBuildmanageAvageareaVo.getEmployees();
+                }
+                WzBuildmanageAvageareaVo countyObject = new WzBuildmanageAvageareaVo();
+                double avera = formatDouble(areaNum / emp);
+                countyObject.setOfficeArea(formatDouble(areaNum));
+                countyObject.setEmployees(emp);
+                countyObject.setCity(countyEntry.getValue().get(0).getCounty());
+                countyObject.setCountyName(list.get(0).getCityName());
+                countyObject.setAverage(formatDouble(avera));
+                countyList.add(countyObject);
+            }
+
+            List<WzBuildmanageAvageareaVo> orderCountyList = new ArrayList<>();
+            try {
+                //对countList 进行排序
+                OtnAreaEntity area = otnAreaService.queryObject(list.get(0).getCity());
+                List<OtnAreaEntity> countyAreaList = otnAreaService.getCityOption(area.getId());
+                int i=0;
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (WzBuildmanageAvageareaVo wzCity : countyList) {
+                        if (wzCity.getCity().contains(otnAreaEntity.getName())) {
+                            i++;
+                            wzCity.setFlag(i%2==0);
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            } catch (Exception e) {
+                orderCountyList = countyList;
+                e.printStackTrace();
+            }
+
+            double cityavera = formatDouble(cityAreaNum / cityEmp);
+            WzBuildmanageAvageareaVo cityObject = new WzBuildmanageAvageareaVo();
+            cityObject.setOfficeArea(formatDouble(cityAreaNum));
+            cityObject.setEmployees(cityEmp);
+            cityObject.setCity(list.get(0).getCity());
+            cityObject.setCountyName(list.get(0).getCityName());
+            cityObject.setAverage(formatDouble(cityavera));
+            cityObject.setChildren(orderCountyList);
+            cityList.add(cityObject);
+        }
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList = otnAreaService.getCityOption(0l);
+        List<WzBuildmanageAvageareaVo> orderList = new ArrayList<>();
+        int i=0;
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (WzBuildmanageAvageareaVo wzCity : cityList) {
+                if (wzCity.getCity().contains(otnAreaEntity.getName())) {
+                    wzCity.setFlag(i%2==0);
+                    orderList.add(wzCity);
+                    i++;
+                }
+            }
+        }
+        province.setChildren(orderList);
+        if(orderList.size()>0){
+            resultList.add(province);
+        }
+        int total = wzBuildmanageAvageareaService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    public double formatDouble(double num) {
+        if (num == 0) return 0;
+        DecimalFormat format2 = new DecimalFormat("#.00");
+        String str2 = format2.format(num);
+        double avera = Double.parseDouble(str2);
+        return avera;
+    }
+}

+ 39 - 0
src/main/java/com/example/controller/WzDataInspectionController.java

@@ -0,0 +1,39 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.WzDataInspectionEntity;
+import com.example.service.WzDataInspectionService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/WzDataInspection")
+public class WzDataInspectionController {
+
+    @Autowired
+    private WzDataInspectionService wzDataInspectionService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzDataInspectionEntity> list = wzDataInspectionService.queryList(query);
+        Query query1 = new Query(pageMap);
+        int total = wzDataInspectionService.queryTotal(query1);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+}

+ 222 - 0
src/main/java/com/example/controller/WzHouseArrearsManageController.java

@@ -0,0 +1,222 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzHouseArrearsManageEntity;
+import com.example.service.WzHouseArrearsManageService;
+import com.example.service.WzOtnAreaService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/wzHouseArrearsManage")
+public class WzHouseArrearsManageController {
+
+    @Autowired
+    private WzOtnAreaService otnAreaService;
+    @Autowired
+    private WzHouseArrearsManageService wzHouseArrearsManageService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseArrearsManageEntity> list = wzHouseArrearsManageService.queryList(query);
+        int total = wzHouseArrearsManageService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/echartList")
+    @IgnoreAuth
+    public R echartList(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseArrearsManageEntity> wzHouseContracEntityList = wzHouseArrearsManageService.queryList(query);
+
+        WzHouseArrearsManageEntity province=new WzHouseArrearsManageEntity();
+        province.setCity("全省");
+
+
+        Map<String,List<WzHouseArrearsManageEntity>> map=new HashMap<>();
+        for (WzHouseArrearsManageEntity leaveUseVo : wzHouseContracEntityList) {
+            List<WzHouseArrearsManageEntity> list;
+            if(map.get(leaveUseVo.getCity())!=null){
+                list=map.get(leaveUseVo.getCity());
+                list.add(leaveUseVo);
+            }else{
+                list=new ArrayList<>();
+                list.add(leaveUseVo);
+            }
+            map.put(leaveUseVo.getCity(),list);
+        }
+        List<WzHouseArrearsManageEntity> resultList=new ArrayList<>();
+        List<WzHouseArrearsManageEntity> cityList=new ArrayList<>();
+
+        double allAccumulateArrears=0l;
+        double allmoreThanThreeMonths=0l;
+        double allmoreThanOneYears=0l;
+        double allyearCumulativeNewAdditions=0l;
+        double allyearCumulativeWithdrawal=0l;
+
+        for(Map.Entry<String,List<WzHouseArrearsManageEntity>> entry:map.entrySet()){
+
+            List<WzHouseArrearsManageEntity> list=entry.getValue();
+
+            //县的Map集合
+            Map<String,List<WzHouseArrearsManageEntity>> countyMap=new HashMap<>();
+            for (WzHouseArrearsManageEntity leaveUseVo : list) {
+                if (leaveUseVo.getCounty() == null || leaveUseVo.getCounty().equals("")) {
+                    continue;
+                }
+                if (countyMap.get(leaveUseVo.getCounty()) != null) {
+                    list = countyMap.get(leaveUseVo.getCounty());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getCounty(), list);
+            }
+
+            double cityaccumulateArrears=0l;
+            double citymoreThanThreeMonths=0l;
+            double citymoreThanOneYears=0l;
+            double cityyearCumulativeNewAdditions=0l;
+            double cityyearCumulativeWithdrawal=0l;
+            List<WzHouseArrearsManageEntity> countyList=new ArrayList<>();
+            for (Map.Entry<String, List<WzHouseArrearsManageEntity>> countyEntry : countyMap.entrySet()) {
+                double accumulateArrears=0l;
+                double moreThanThreeMonths=0l;
+                double moreThanOneYears=0l;
+                double yearCumulativeNewAdditions=0l;
+                double yearCumulativeWithdrawal=0l;
+                for (WzHouseArrearsManageEntity leaveUseVo : countyEntry.getValue()) {
+                    if(leaveUseVo.getAccumulateArrears()!=null){
+                        accumulateArrears+=leaveUseVo.getAccumulateArrears();
+                        cityaccumulateArrears+=leaveUseVo.getAccumulateArrears();
+                        allAccumulateArrears+=leaveUseVo.getAccumulateArrears();
+                    }
+                    if(leaveUseVo.getMoreThanThreeMonths()!=null){
+                        moreThanThreeMonths+=leaveUseVo.getMoreThanThreeMonths();
+                        citymoreThanThreeMonths+=leaveUseVo.getMoreThanThreeMonths();
+                        allmoreThanThreeMonths+=leaveUseVo.getMoreThanThreeMonths();
+                    }
+                    if(leaveUseVo.getMoreThanOneYears()!=null){
+                        moreThanOneYears+=leaveUseVo.getMoreThanOneYears();
+                        citymoreThanOneYears+=leaveUseVo.getMoreThanOneYears();
+                        allmoreThanOneYears+=leaveUseVo.getMoreThanOneYears();
+                    }
+                    if(leaveUseVo.getYearCumulativeNewAdditions()!=null){
+                        yearCumulativeNewAdditions+=leaveUseVo.getYearCumulativeNewAdditions();
+                        cityyearCumulativeNewAdditions+=leaveUseVo.getYearCumulativeNewAdditions();
+                        allyearCumulativeNewAdditions+=leaveUseVo.getYearCumulativeNewAdditions();
+                    }
+                    if(leaveUseVo.getYearCumulativeWithdrawal()!=null){
+                        yearCumulativeWithdrawal+=leaveUseVo.getYearCumulativeWithdrawal();
+                        cityyearCumulativeWithdrawal+=leaveUseVo.getYearCumulativeWithdrawal();
+                        allyearCumulativeWithdrawal+=leaveUseVo.getYearCumulativeWithdrawal();
+                    }
+                }
+
+                WzHouseArrearsManageEntity countyEntity=new WzHouseArrearsManageEntity();
+                countyEntity.setAccumulateArrears(formatDouble(accumulateArrears));
+                countyEntity.setYearCumulativeNewAdditions(formatDouble(yearCumulativeNewAdditions));
+                countyEntity.setYearCumulativeWithdrawal(formatDouble(yearCumulativeWithdrawal));
+                countyEntity.setMoreThanOneYears(formatDouble(moreThanOneYears));
+                countyEntity.setMoreThanThreeMonths(formatDouble(moreThanThreeMonths));
+                countyEntity.setCity(countyEntry.getValue().get(0).getCounty());
+                countyList.add(countyEntity);
+            }
+            List<WzHouseArrearsManageEntity> orderCountyList=new ArrayList<>();
+            try{
+                //对countList 进行排序
+                String city=list.get(0).getCity();
+                if(city.contains("市")){
+                    city=city.split("市")[0];
+                }
+                OtnAreaEntity area=otnAreaService.queryObject(city);
+                List<OtnAreaEntity> countyAreaList=otnAreaService.getCityOption(area.getId());
+                int i=0;
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (WzHouseArrearsManageEntity wzCity : countyList) {
+                        if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                            i++;
+                            wzCity.setFlag(i%2==0);
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            }catch (Exception e){
+                orderCountyList=countyList;
+                e.printStackTrace();
+            }
+
+
+            WzHouseArrearsManageEntity cityEntity=new WzHouseArrearsManageEntity();
+            cityEntity.setAccumulateArrears(formatDouble(cityaccumulateArrears));
+            cityEntity.setYearCumulativeNewAdditions(formatDouble(cityyearCumulativeNewAdditions));
+            cityEntity.setYearCumulativeWithdrawal(formatDouble(cityyearCumulativeWithdrawal));
+            cityEntity.setMoreThanOneYears(formatDouble(citymoreThanOneYears));
+            cityEntity.setMoreThanThreeMonths(formatDouble(citymoreThanThreeMonths));
+            cityEntity.setCity(list.get(0).getCity());
+            cityEntity.setChildren(orderCountyList);
+            cityList.add(cityEntity);
+        }
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<WzHouseArrearsManageEntity> orderList=new ArrayList<>();
+        int i=0;
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (WzHouseArrearsManageEntity wzCity : cityList) {
+                if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                    wzCity.setFlag(i%2==0);
+                    i++;
+                    orderList.add(wzCity);
+                }
+            }
+        }
+
+        province.setAccumulateArrears(formatDouble(allAccumulateArrears));
+        province.setMoreThanOneYears(formatDouble(allmoreThanOneYears));
+        province.setMoreThanThreeMonths(formatDouble(allmoreThanThreeMonths));
+        province.setYearCumulativeNewAdditions(formatDouble(allyearCumulativeNewAdditions));
+        province.setYearCumulativeWithdrawal(formatDouble(allyearCumulativeWithdrawal));
+        province.setChildren(orderList);
+        if(orderList.size()>0){
+            resultList.add(province);
+        }
+        PageUtils pageUtil = new PageUtils(resultList, 0, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    public double formatDouble(double num){
+        double avera=0l;
+        try{
+            DecimalFormat format2 = new DecimalFormat("#.00");
+            String str2 = format2.format(num);
+            avera = Double.parseDouble(str2);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return avera;
+    }
+
+}

+ 995 - 0
src/main/java/com/example/controller/WzHouseContracController.java

@@ -0,0 +1,995 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzHouseArrearsManageEntity;
+import com.example.entity.WzHouseContracEntity;
+import com.example.entity.WzHouseContractOutEntity;
+import com.example.entity.WzHouseCustomerEntity;
+import com.example.entity.WzHouseMarketEntity;
+import com.example.service.WzHouseArrearsManageService;
+import com.example.service.WzHouseContracService;
+import com.example.service.WzHouseContractOutService;
+import com.example.service.WzHouseCustomerService;
+import com.example.service.WzHouseMarketService;
+import com.example.service.WzOtnAreaService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import com.example.utils.excel.ExcelExport;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/WzHouseContrac")
+public class WzHouseContracController {
+
+    @Autowired
+    private WzHouseContracService wzHouseContracService;
+    @Autowired
+    private WzHouseCustomerService wzHouseCustomerService;
+    @Autowired
+    private WzHouseArrearsManageService wzHouseArrearsManageService;
+    @Autowired
+    private WzHouseMarketService wzHouseMarketService;
+    @Autowired
+    private WzHouseContractOutService wzHouseContractOutService;
+    @Autowired
+    private WzOtnAreaService otnAreaService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseContracEntity> list = wzHouseContracService.queryList(pageMap.getMap());
+        int total = wzHouseContracService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/echartList")
+    @IgnoreAuth
+    public R echartList(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseContracEntity> wzHouseContracEntityList = wzHouseContracService.queryList(pageMap.getMap());
+
+        Map<String,List<WzHouseContracEntity>> cityMap=new HashMap<>();
+        for (WzHouseContracEntity leaveUseVo : wzHouseContracEntityList) {
+            List<WzHouseContracEntity> list;
+            if(cityMap.get(leaveUseVo.getCity())!=null){
+                list=cityMap.get(leaveUseVo.getCity());
+                list.add(leaveUseVo);
+            }else{
+                list=new ArrayList<>();
+                list.add(leaveUseVo);
+            }
+            cityMap.put(leaveUseVo.getCity(),list);
+        }
+
+        List<WzHouseContracEntity> resultList=new ArrayList<>();
+        List<WzHouseContracEntity> cityList=new ArrayList<>();
+
+        double allContractQuantity=0l;
+        double allNoTaxContractAmount=0l;
+        double allRentArea=0l;
+        double allUnitPricePerSquareMeter=0l;
+        int cityNum=0;
+        for(Map.Entry<String,List<WzHouseContracEntity>> entry:cityMap.entrySet()){
+            List<WzHouseContracEntity> list=entry.getValue();
+
+            if (list.get(0).getCounty().equals("全省")) {
+                continue;
+            }
+            //县的Map集合
+            Map<String, List<WzHouseContracEntity>> countyMap = new HashMap<>();
+            for (WzHouseContracEntity leaveUseVo : list) {
+                if (leaveUseVo.getCounty() == null || leaveUseVo.getCounty().equals("")) {
+                    continue;
+                }
+                if (countyMap.get(leaveUseVo.getCounty()) != null) {
+                    list = countyMap.get(leaveUseVo.getCounty());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getCounty(), list);
+            }
+
+            double cityContractQuantity=0l;
+            double cityNoTaxContractAmount=0l;
+            double cityRentArea=0l;
+            double cityUnitPricePerSquareMeter=0l;
+            List<WzHouseContracEntity> countyList=new ArrayList<>();
+            for (Map.Entry<String, List<WzHouseContracEntity>> countyEntry : countyMap.entrySet()) {
+                double contractQuantity=0l;
+                double noTaxContractAmount=0l;
+                double rentArea=0l;
+                double unitPricePerSquareMeter=0l;
+                for (WzHouseContracEntity leaveUseVo : countyEntry.getValue()) {
+                    contractQuantity+=leaveUseVo.getContractQuantity();
+                    noTaxContractAmount+=leaveUseVo.getNoTaxContractAmount();
+                    rentArea+=leaveUseVo.getRentArea();
+                    unitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+
+                    cityContractQuantity+=leaveUseVo.getContractQuantity();
+                    cityNoTaxContractAmount+=leaveUseVo.getNoTaxContractAmount();
+                    cityRentArea+=leaveUseVo.getRentArea();
+                    cityUnitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+
+                    allContractQuantity+=leaveUseVo.getContractQuantity();
+                    allNoTaxContractAmount+=leaveUseVo.getNoTaxContractAmount();
+                    allRentArea+=leaveUseVo.getRentArea();
+                    allUnitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+                }
+                WzHouseContracEntity wzHouseInCustomerEntity = new WzHouseContracEntity();
+                wzHouseInCustomerEntity.setContractQuantity(formatDouble(contractQuantity));
+                wzHouseInCustomerEntity.setCity(countyEntry.getKey());
+                wzHouseInCustomerEntity.setNoTaxContractAmount(formatDouble(noTaxContractAmount));
+                wzHouseInCustomerEntity.setRentArea(formatDouble(rentArea));
+                wzHouseInCustomerEntity.setUnitPricePerSquareMeter(formatDouble(unitPricePerSquareMeter));
+                countyList.add(wzHouseInCustomerEntity);
+            }
+            List<WzHouseContracEntity> orderCountyList=new ArrayList<>();
+            try{
+                //对countList 进行排序
+                String city=list.get(0).getCity();
+                if(city.contains("市")){
+                    city=city.split("市")[0];
+                }
+                OtnAreaEntity area=otnAreaService.queryObject(city);
+                List<OtnAreaEntity> countyAreaList=otnAreaService.getCityOption(area.getId());
+                int i=0;
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (WzHouseContracEntity wzCity : countyList) {
+                        if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                            i++;
+                            wzCity.setFlag(i%2==0);
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            }catch (Exception e){
+                orderCountyList=countyList;
+                e.printStackTrace();
+            }
+
+            WzHouseContracEntity wzHouseInCustomerEntity = new WzHouseContracEntity();
+            wzHouseInCustomerEntity.setCity(entry.getKey());
+            wzHouseInCustomerEntity.setContractQuantity(formatDouble(cityContractQuantity));
+            wzHouseInCustomerEntity.setNoTaxContractAmount(formatDouble(cityNoTaxContractAmount));
+            wzHouseInCustomerEntity.setRentArea(formatDouble(cityRentArea));
+            double num=cityUnitPricePerSquareMeter/countyMap.size();
+            cityNum+=countyMap.size();
+            wzHouseInCustomerEntity.setUnitPricePerSquareMeter(formatDouble(num));
+            wzHouseInCustomerEntity.setChildren(orderCountyList);
+            cityList.add(wzHouseInCustomerEntity);
+        }
+
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<WzHouseContracEntity> orderList=new ArrayList<>();
+        int i=0;
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (WzHouseContracEntity wzCity : cityList) {
+                if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                    wzCity.setFlag(i%2==0);
+                    orderList.add(wzCity);
+                    i++;
+                }
+            }
+        }
+
+        WzHouseContracEntity province=new WzHouseContracEntity();
+        province.setCity("全省");
+        province.setContractQuantity(formatDouble(allContractQuantity));
+        province.setNoTaxContractAmount(formatDouble(allNoTaxContractAmount));
+        province.setRentArea(formatDouble(allRentArea));
+        if(cityList.size()!=0){
+            province.setUnitPricePerSquareMeter(formatDouble(allUnitPricePerSquareMeter/cityNum ));
+        }
+        province.setChildren(orderList);
+        if(orderList.size()>0){
+            resultList.add(province);
+        }
+        int total = wzHouseContracService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 清单excel
+     */
+    @GetMapping("/excel")
+    @IgnoreAuth
+    public void excel(String name,String buildingNameAlias,String city,String county, HttpServletResponse response) {
+        Map<String,Object> map1=new HashMap<>();
+        if(buildingNameAlias!=null){
+            map1.put("buildingNameAlias",buildingNameAlias);
+        }
+        if(city!=null){
+            map1.put("city",city);
+        }
+        if(county!=null){
+            map1.put("county",county);
+        }
+
+        DateFormat df = new SimpleDateFormat("yyyyMMdd");
+        ExcelExport ee1;
+
+        //判定是闲置管理还是详情
+        if(name.contains("合同管理")){
+            ee1 = new ExcelExport("房屋对外出租_合同管理" + df.format(new Date()));
+            responseTab1(df,ee1,map1);
+            ee1.export(response);
+        }else if(name.contains("客户管理")){
+            ee1 = new ExcelExport("房屋对外出租_客户管理" + df.format(new Date()));
+            responseTab2(df,ee1,map1);
+            ee1.export(response);
+        }else if(name.contains("出租欠费管理")){
+            ee1 = new ExcelExport("房屋对外出租_出租欠费管理" + df.format(new Date()));
+            responseTab3(df,ee1,map1);
+            ee1.export(response);
+        }else if(name.contains("市场调查")){
+            ee1 = new ExcelExport("房屋对外出租_市场调查" + df.format(new Date()));
+            responseTab4(df,ee1,map1);
+            ee1.export(response);
+        }else if(name.contains("出租合同详单")){
+            ee1 = new ExcelExport("房屋对外出租_出租合同详情" + df.format(new Date()));
+            responseTab5(df,ee1,map1);
+            ee1.export(response);
+        }
+
+
+    }
+
+    public void responseTab1(DateFormat df, ExcelExport ee1, Map<String, Object> map1){
+        List<WzHouseContracEntity> wzHouseContracEntityList = wzHouseContracService.queryList(map1);
+
+        Map<String,List<WzHouseContracEntity>> cityMap=new HashMap<>();
+        for (WzHouseContracEntity leaveUseVo : wzHouseContracEntityList) {
+            List<WzHouseContracEntity> list;
+            if(cityMap.get(leaveUseVo.getCity())!=null){
+                list=cityMap.get(leaveUseVo.getCity());
+                list.add(leaveUseVo);
+            }else{
+                list=new ArrayList<>();
+                list.add(leaveUseVo);
+            }
+            cityMap.put(leaveUseVo.getCity(),list);
+        }
+
+        List<WzHouseContracEntity> resultList=new ArrayList<>();
+        List<WzHouseContracEntity> cityList=new ArrayList<>();
+
+        double allContractQuantity=0l;
+        double allNoTaxContractAmount=0l;
+        double allRentArea=0l;
+        double allUnitPricePerSquareMeter=0l;
+        int cityNum=0;
+        for(Map.Entry<String,List<WzHouseContracEntity>> entry:cityMap.entrySet()){
+            List<WzHouseContracEntity> list=entry.getValue();
+
+            if (list.get(0).getCounty().equals("全省")) {
+                continue;
+            }
+            //县的Map集合
+            Map<String, List<WzHouseContracEntity>> countyMap = new HashMap<>();
+            for (WzHouseContracEntity leaveUseVo : list) {
+                if (leaveUseVo.getCounty() == null || leaveUseVo.getCounty().equals("")) {
+                    continue;
+                }
+                if (countyMap.get(leaveUseVo.getCounty()) != null) {
+                    list = countyMap.get(leaveUseVo.getCounty());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getCounty(), list);
+            }
+
+            double cityContractQuantity=0l;
+            double cityNoTaxContractAmount=0l;
+            double cityRentArea=0l;
+            double cityUnitPricePerSquareMeter=0l;
+            List<WzHouseContracEntity> countyList=new ArrayList<>();
+            for (Map.Entry<String, List<WzHouseContracEntity>> countyEntry : countyMap.entrySet()) {
+                double contractQuantity=0l;
+                double noTaxContractAmount=0l;
+                double rentArea=0l;
+                double unitPricePerSquareMeter=0l;
+                for (WzHouseContracEntity leaveUseVo : countyEntry.getValue()) {
+                    contractQuantity+=leaveUseVo.getContractQuantity();
+                    noTaxContractAmount+=leaveUseVo.getNoTaxContractAmount();
+                    rentArea+=leaveUseVo.getRentArea();
+                    unitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+
+                    cityContractQuantity+=leaveUseVo.getContractQuantity();
+                    cityNoTaxContractAmount+=leaveUseVo.getNoTaxContractAmount();
+                    cityRentArea+=leaveUseVo.getRentArea();
+                    cityUnitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+
+                    allContractQuantity+=leaveUseVo.getContractQuantity();
+                    allNoTaxContractAmount+=leaveUseVo.getNoTaxContractAmount();
+                    allRentArea+=leaveUseVo.getRentArea();
+                    allUnitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+                }
+                WzHouseContracEntity wzHouseInCustomerEntity = new WzHouseContracEntity();
+                wzHouseInCustomerEntity.setContractQuantity(formatDouble(contractQuantity));
+                wzHouseInCustomerEntity.setCity(countyEntry.getKey());
+                wzHouseInCustomerEntity.setNoTaxContractAmount(formatDouble(noTaxContractAmount));
+                wzHouseInCustomerEntity.setRentArea(formatDouble(rentArea));
+                wzHouseInCustomerEntity.setUnitPricePerSquareMeter(formatDouble(unitPricePerSquareMeter));
+                countyList.add(wzHouseInCustomerEntity);
+            }
+            List<WzHouseContracEntity> orderCountyList=new ArrayList<>();
+            try{
+                //对countList 进行排序
+                String city=list.get(0).getCity();
+                if(city.contains("市")){
+                    city=city.split("市")[0];
+                }
+                OtnAreaEntity area=otnAreaService.queryObject(city);
+                List<OtnAreaEntity> countyAreaList=otnAreaService.getCityOption(area.getId());
+                int i=0;
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (WzHouseContracEntity wzCity : countyList) {
+                        if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                            i++;
+                            wzCity.setFlag(i%2==0);
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            }catch (Exception e){
+                orderCountyList=countyList;
+                e.printStackTrace();
+            }
+
+            WzHouseContracEntity wzHouseInCustomerEntity = new WzHouseContracEntity();
+            wzHouseInCustomerEntity.setCity(entry.getKey());
+            wzHouseInCustomerEntity.setContractQuantity(formatDouble(cityContractQuantity));
+            wzHouseInCustomerEntity.setNoTaxContractAmount(formatDouble(cityNoTaxContractAmount));
+            wzHouseInCustomerEntity.setRentArea(formatDouble(cityRentArea));
+            double num=cityUnitPricePerSquareMeter/countyMap.size();
+            cityNum+=countyMap.size();
+            wzHouseInCustomerEntity.setUnitPricePerSquareMeter(formatDouble(num));
+            wzHouseInCustomerEntity.setChildren(orderCountyList);
+            cityList.add(wzHouseInCustomerEntity);
+        }
+
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<WzHouseContracEntity> orderList=new ArrayList<>();
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (WzHouseContracEntity wzCity : cityList) {
+                if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                    orderList.add(wzCity);
+                }
+            }
+        }
+        WzHouseContracEntity province=new WzHouseContracEntity();
+        province.setCity("全省");
+        province.setContractQuantity(formatDouble(allContractQuantity));
+        province.setNoTaxContractAmount(formatDouble(allNoTaxContractAmount));
+        province.setRentArea(formatDouble(allRentArea));
+        if(cityList.size()!=0){
+            province.setUnitPricePerSquareMeter(formatDouble(allUnitPricePerSquareMeter/cityNum ));
+        }
+        province.setChildren(orderList);
+        resultList.add(province);
+
+        List<Object> colList=new ArrayList();;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+
+            if(resultList.get(i).getCity().contains("省")){
+                colList = new ArrayList();
+                colList.add(resultList.get(i).getCity());
+                colList.add("");
+                colList.add("");
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getContractQuantity(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getNoTaxContractAmount(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getRentArea(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getUnitPricePerSquareMeter(),true));
+                allList.add(colList.toArray());
+
+                //处理城市的
+                List<WzHouseContracEntity> cityList1=resultList.get(i).getChildren();
+                for (WzHouseContracEntity floorNoUserVo : cityList1) {
+                    colList = new ArrayList();
+                    colList.add("");
+                    colList.add(floorNoUserVo.getCity());
+                    colList.add("");
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getContractQuantity(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getNoTaxContractAmount(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getRentArea(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getUnitPricePerSquareMeter(),true));
+                    allList.add(colList.toArray());
+
+
+                    //处理县城的
+                    List<WzHouseContracEntity> countyList1 = floorNoUserVo.getChildren();
+                    for (WzHouseContracEntity noUserVo : countyList1) {
+                        colList = new ArrayList();
+                        colList.add("");
+                        colList.add("");
+                        colList.add(noUserVo.getCity());
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getContractQuantity(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getNoTaxContractAmount(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getRentArea(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getUnitPricePerSquareMeter(),true));
+                        allList.add(colList.toArray());
+                    }
+                }
+            }
+        }
+        String[] header = new String[]{
+                "资产所属单位(一级)",
+                "资产所属单位(二级)",
+                "资产所属单位(三级)",
+                "合同数量",
+                "不含税合同额(元)",
+                "出租面积(平米)",
+                "每平米单价(元)"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+
+    public void responseTab2(DateFormat df, ExcelExport ee1, Map<String, Object> map1){
+
+        //查询列表数据
+        Query query = new Query(map1);
+        List<WzHouseCustomerEntity> wzHouseContracEntityList = wzHouseCustomerService.queryList(query);
+
+        WzHouseCustomerEntity province=new WzHouseCustomerEntity();
+        province.setCity("全省");
+
+        Map<String,List<WzHouseCustomerEntity>> map=new HashMap<>();
+        for (WzHouseCustomerEntity leaveUseVo : wzHouseContracEntityList) {
+            List<WzHouseCustomerEntity> list;
+            if(map.get(leaveUseVo.getCity())!=null){
+                list=map.get(leaveUseVo.getCity());
+                list.add(leaveUseVo);
+            }else{
+                list=new ArrayList<>();
+                list.add(leaveUseVo);
+            }
+            map.put(leaveUseVo.getCity(),list);
+        }
+        List<WzHouseCustomerEntity> resultList=new ArrayList<>();
+        List<WzHouseCustomerEntity> cityList=new ArrayList<>();
+
+        Integer allPerson=0;
+        Integer allPersonPrivate=0;
+        Integer allStateOwnedEnterprises=0;
+        Integer allGovernment=0;
+        Integer allAllNum=0;
+
+        for(Map.Entry<String,List<WzHouseCustomerEntity>> entry:map.entrySet()){
+            List<WzHouseCustomerEntity> list=entry.getValue();
+            if(list.get(0).getCity().equals("全省")){
+                continue;
+            }
+            Integer person=0;
+            Integer personPrivate=0;
+            Integer stateOwnedEnterprises=0;
+            Integer government=0;
+            Integer allNum=0;
+            for (WzHouseCustomerEntity leaveUseVo : list) {
+
+                if(leaveUseVo.getPerson()!=null){
+                    person+=leaveUseVo.getPerson();
+                    allPerson+=leaveUseVo.getPerson();
+                }
+                if(leaveUseVo.getPersonPrivate()!=null){
+                    personPrivate+=leaveUseVo.getPersonPrivate();
+                    allPersonPrivate+=leaveUseVo.getPersonPrivate();
+                }
+                if(leaveUseVo.getStateOwnedEnterprises()!=null){
+                    stateOwnedEnterprises+=leaveUseVo.getStateOwnedEnterprises();
+                    allStateOwnedEnterprises+=leaveUseVo.getStateOwnedEnterprises();
+                }
+                if(leaveUseVo.getGovernment()!=null){
+                    government+=leaveUseVo.getGovernment();
+                    allGovernment+=leaveUseVo.getGovernment();
+                }
+                allNum=person+personPrivate+stateOwnedEnterprises+government;
+                allAllNum+=allNum;
+                leaveUseVo.setAllNum(allNum);
+            }
+            cityList.add(list.get(0));
+        }
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<WzHouseCustomerEntity> orderList=new ArrayList<>();
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (WzHouseCustomerEntity wzCity : cityList) {
+                if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                    orderList.add(wzCity);
+                }
+            }
+        }
+
+        province.setPerson(allPerson);
+        province.setPersonPrivate(allPersonPrivate);
+        province.setStateOwnedEnterprises(allStateOwnedEnterprises);
+        province.setGovernment(allGovernment);
+        province.setChildren(orderList);
+        province.setAllNum(allAllNum);
+        resultList.add(province);
+
+
+        List<Object> colList=new ArrayList();;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+
+            if(resultList.get(i).getCity().contains("省")){
+                colList = new ArrayList();
+                colList.add(resultList.get(i).getCity());
+                colList.add("");
+                colList.add(resultList.get(i).getPerson());
+                colList.add(resultList.get(i).getPersonPrivate());
+                colList.add(resultList.get(i).getStateOwnedEnterprises());
+                colList.add(resultList.get(i).getGovernment());
+                colList.add(resultList.get(i).getAllNum());
+                allList.add(colList.toArray());
+
+                //处理城市的
+                List<WzHouseCustomerEntity> cityList1=resultList.get(i).getChildren();
+                for (WzHouseCustomerEntity floorNoUserVo : cityList1) {
+                    colList = new ArrayList();
+                    colList.add("");
+                    colList.add(floorNoUserVo.getCity());
+                    colList.add(floorNoUserVo.getPerson());
+                    colList.add(floorNoUserVo.getPersonPrivate());
+                    colList.add(floorNoUserVo.getStateOwnedEnterprises());
+                    colList.add(floorNoUserVo.getGovernment());
+                    colList.add(floorNoUserVo.getAllNum());
+                    allList.add(colList.toArray());
+                }
+            }
+        }
+        String[] header = new String[]{
+                "一级单位",
+                "二级单位",
+                "个人",
+                "私营",
+                "国企",
+                "政府",
+                "总计"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+
+    public void responseTab3(DateFormat df, ExcelExport ee1, Map<String, Object> map1){
+
+        //查询列表数据
+        Query query = new Query(map1);
+        List<WzHouseArrearsManageEntity> wzHouseContracEntityList = wzHouseArrearsManageService.queryList(query);
+
+        WzHouseArrearsManageEntity province=new WzHouseArrearsManageEntity();
+        province.setCity("全省");
+
+
+        Map<String,List<WzHouseArrearsManageEntity>> map=new HashMap<>();
+        for (WzHouseArrearsManageEntity leaveUseVo : wzHouseContracEntityList) {
+            List<WzHouseArrearsManageEntity> list;
+            if(map.get(leaveUseVo.getCity())!=null){
+                list=map.get(leaveUseVo.getCity());
+                list.add(leaveUseVo);
+            }else{
+                list=new ArrayList<>();
+                list.add(leaveUseVo);
+            }
+            map.put(leaveUseVo.getCity(),list);
+        }
+        List<WzHouseArrearsManageEntity> resultList=new ArrayList<>();
+        List<WzHouseArrearsManageEntity> cityList=new ArrayList<>();
+
+        double allAccumulateArrears=0l;
+        double allmoreThanThreeMonths=0l;
+        double allmoreThanOneYears=0l;
+        double allyearCumulativeNewAdditions=0l;
+        double allyearCumulativeWithdrawal=0l;
+
+        for(Map.Entry<String,List<WzHouseArrearsManageEntity>> entry:map.entrySet()){
+
+            List<WzHouseArrearsManageEntity> list=entry.getValue();
+
+            //县的Map集合
+            Map<String,List<WzHouseArrearsManageEntity>> countyMap=new HashMap<>();
+            for (WzHouseArrearsManageEntity leaveUseVo : list) {
+                if (leaveUseVo.getCounty() == null || leaveUseVo.getCounty().equals("")) {
+                    continue;
+                }
+                if (countyMap.get(leaveUseVo.getCounty()) != null) {
+                    list = countyMap.get(leaveUseVo.getCounty());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getCounty(), list);
+            }
+
+            double cityaccumulateArrears=0l;
+            double citymoreThanThreeMonths=0l;
+            double citymoreThanOneYears=0l;
+            double cityyearCumulativeNewAdditions=0l;
+            double cityyearCumulativeWithdrawal=0l;
+            List<WzHouseArrearsManageEntity> countyList=new ArrayList<>();
+            for (Map.Entry<String, List<WzHouseArrearsManageEntity>> countyEntry : countyMap.entrySet()) {
+                double accumulateArrears=0l;
+                double moreThanThreeMonths=0l;
+                double moreThanOneYears=0l;
+                double yearCumulativeNewAdditions=0l;
+                double yearCumulativeWithdrawal=0l;
+                for (WzHouseArrearsManageEntity leaveUseVo : countyEntry.getValue()) {
+                    if(leaveUseVo.getAccumulateArrears()!=null){
+                        accumulateArrears+=leaveUseVo.getAccumulateArrears();
+                        cityaccumulateArrears+=leaveUseVo.getAccumulateArrears();
+                        allAccumulateArrears+=leaveUseVo.getAccumulateArrears();
+                    }
+                    if(leaveUseVo.getMoreThanThreeMonths()!=null){
+                        moreThanThreeMonths+=leaveUseVo.getMoreThanThreeMonths();
+                        citymoreThanThreeMonths+=leaveUseVo.getMoreThanThreeMonths();
+                        allmoreThanThreeMonths+=leaveUseVo.getMoreThanThreeMonths();
+                    }
+                    if(leaveUseVo.getMoreThanOneYears()!=null){
+                        moreThanOneYears+=leaveUseVo.getMoreThanOneYears();
+                        citymoreThanOneYears+=leaveUseVo.getMoreThanOneYears();
+                        allmoreThanOneYears+=leaveUseVo.getMoreThanOneYears();
+                    }
+                    if(leaveUseVo.getYearCumulativeNewAdditions()!=null){
+                        yearCumulativeNewAdditions+=leaveUseVo.getYearCumulativeNewAdditions();
+                        cityyearCumulativeNewAdditions+=leaveUseVo.getYearCumulativeNewAdditions();
+                        allyearCumulativeNewAdditions+=leaveUseVo.getYearCumulativeNewAdditions();
+                    }
+                    if(leaveUseVo.getYearCumulativeWithdrawal()!=null){
+                        yearCumulativeWithdrawal+=leaveUseVo.getYearCumulativeWithdrawal();
+                        cityyearCumulativeWithdrawal+=leaveUseVo.getYearCumulativeWithdrawal();
+                        allyearCumulativeWithdrawal+=leaveUseVo.getYearCumulativeWithdrawal();
+                    }
+                }
+
+                WzHouseArrearsManageEntity countyEntity=new WzHouseArrearsManageEntity();
+                countyEntity.setAccumulateArrears(formatDouble(accumulateArrears));
+                countyEntity.setYearCumulativeNewAdditions(formatDouble(yearCumulativeNewAdditions));
+                countyEntity.setYearCumulativeWithdrawal(formatDouble(yearCumulativeWithdrawal));
+                countyEntity.setMoreThanOneYears(formatDouble(moreThanOneYears));
+                countyEntity.setMoreThanThreeMonths(formatDouble(moreThanThreeMonths));
+                countyEntity.setCity(countyEntry.getValue().get(0).getCounty());
+                countyList.add(countyEntity);
+            }
+            List<WzHouseArrearsManageEntity> orderCountyList=new ArrayList<>();
+            try{
+                //对countList 进行排序
+                String city=list.get(0).getCity();
+                if(city.contains("市")){
+                    city=city.split("市")[0];
+                }
+                OtnAreaEntity area=otnAreaService.queryObject(city);
+                List<OtnAreaEntity> countyAreaList=otnAreaService.getCityOption(area.getId());
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (WzHouseArrearsManageEntity wzCity : countyList) {
+                        if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            }catch (Exception e){
+                orderCountyList=countyList;
+                e.printStackTrace();
+            }
+
+
+            WzHouseArrearsManageEntity cityEntity=new WzHouseArrearsManageEntity();
+            cityEntity.setAccumulateArrears(formatDouble(cityaccumulateArrears));
+            cityEntity.setYearCumulativeNewAdditions(formatDouble(cityyearCumulativeNewAdditions));
+            cityEntity.setYearCumulativeWithdrawal(formatDouble(cityyearCumulativeWithdrawal));
+            cityEntity.setMoreThanOneYears(formatDouble(citymoreThanOneYears));
+            cityEntity.setMoreThanThreeMonths(formatDouble(citymoreThanThreeMonths));
+            cityEntity.setCity(list.get(0).getCity());
+            cityEntity.setChildren(orderCountyList);
+            cityList.add(cityEntity);
+        }
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<WzHouseArrearsManageEntity> orderList=new ArrayList<>();
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (WzHouseArrearsManageEntity wzCity : cityList) {
+                if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                    orderList.add(wzCity);
+                }
+            }
+        }
+
+        province.setAccumulateArrears(formatDouble(allAccumulateArrears));
+        province.setMoreThanOneYears(formatDouble(allmoreThanOneYears));
+        province.setMoreThanThreeMonths(formatDouble(allmoreThanThreeMonths));
+        province.setYearCumulativeNewAdditions(formatDouble(allyearCumulativeNewAdditions));
+        province.setYearCumulativeWithdrawal(formatDouble(allyearCumulativeWithdrawal));
+        province.setChildren(orderList);
+        resultList.add(province);
+
+
+        List<Object> colList=new ArrayList();;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+
+            if(resultList.get(i).getCity().contains("省")){
+                colList = new ArrayList();
+                colList.add(resultList.get(i).getCity());
+                colList.add("");
+                colList.add("");
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getAccumulateArrears(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getMoreThanThreeMonths(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getMoreThanOneYears(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getYearCumulativeNewAdditions(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getYearCumulativeWithdrawal(),true));
+                allList.add(colList.toArray());
+
+                //处理城市的
+                List<WzHouseArrearsManageEntity> cityList1=resultList.get(i).getChildren();
+                for (WzHouseArrearsManageEntity floorNoUserVo : cityList1) {
+                    colList = new ArrayList();
+                    colList.add("");
+                    colList.add(floorNoUserVo.getCity());
+                    colList.add("");
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getAccumulateArrears(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getMoreThanThreeMonths(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getMoreThanOneYears(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getYearCumulativeNewAdditions(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getYearCumulativeWithdrawal(),true));
+                    allList.add(colList.toArray());
+                    //处理县城的
+                    List<WzHouseArrearsManageEntity> countyList1 = floorNoUserVo.getChildren();
+                    for (WzHouseArrearsManageEntity noUserVo : countyList1) {
+                        colList = new ArrayList();
+                        colList.add("");
+                        colList.add("");
+                        colList.add(noUserVo.getCity());
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getAccumulateArrears(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getMoreThanThreeMonths(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getMoreThanOneYears(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getYearCumulativeNewAdditions(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getYearCumulativeWithdrawal(),true));
+                        allList.add(colList.toArray());
+                    }
+                }
+            }
+        }
+        String[] header = new String[]{
+                "资产所属单位(一级)",
+                "资产所属单位(二级)",
+                "资产所属单位(三级)",
+                "累计欠费(万元)",
+                "其中:3个月以上欠费",
+                "其中:1年以上欠费",
+                "本年累计新增欠费",
+                "本年累计收回欠费"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+
+    public void responseTab4(DateFormat df, ExcelExport ee1, Map<String, Object> map1){
+
+        Query query = new Query(map1);
+        List<WzHouseMarketEntity> resultList = wzHouseMarketService.queryList(query);
+
+        List<Object> colList=new ArrayList();;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+            colList = new ArrayList();
+            colList.add(resultList.get(i).getBuildingId());
+            colList.add(resultList.get(i).getBuildingAlias());
+            colList.add(resultList.get(i).getBuildingAddress());
+            colList.add(resultList.get(i).getContractNumber());
+            colList.add(resultList.get(i).getLeaseCategory());
+            colList.add(resultList.get(i).getContractAmountExcludeTax());
+            colList.add(resultList.get(i).getContractLeaseTerm());
+            colList.add(resultList.get(i).getContractRentalArea());
+            colList.add(resultList.get(i).getTotalMonthlyRent());
+            colList.add(resultList.get(i).getUnitPriceMonth());
+            colList.add(resultList.get(i).getSurveyTime());
+            colList.add(resultList.get(i).getBuildingLongitude());
+            colList.add(resultList.get(i).getBuildingDimension());
+            colList.add(resultList.get(i).getHasNearbyProperty());
+            colList.add(resultList.get(i).getNoNearbyPropertyReason());
+            colList.add(resultList.get(i).getMarketBuildingName());
+            colList.add(resultList.get(i).getDistanceBetweenBuildings());
+            colList.add(resultList.get(i).getMarketContractLeaseTerm());
+            colList.add(resultList.get(i).getMarketContractRentalArea());
+            colList.add(resultList.get(i).getMonthlyRent());
+            colList.add(resultList.get(i).getMarketUnitPriceMonth());
+            colList.add(resultList.get(i).getMarketUnitPriceDay());
+            colList.add(resultList.get(i).getMarketStandardAddress());
+            colList.add(resultList.get(i).getHousingRentCollectionMethod());
+            colList.add(resultList.get(i).getPropertyType());
+            colList.add(resultList.get(i).getTotalNumberOfFloors());
+            colList.add(resultList.get(i).getRenovationSituation());
+            allList.add(colList.toArray());
+        }
+        String[] header = new String[]{
+                "建筑ID",
+                "建筑别名",
+                "地址",
+                "合同号",
+                "租赁类别",
+                "不含增值税合同额",
+                "合同租期(月数)",
+                "合同出租面积",
+                "月租金(元)",
+                "每平米单价(元/㎡/月)",
+                "调查时间",
+                "房屋经度",
+                "房屋纬度",
+                "1.5公里内是否有类似物业",
+                "‘否’原因",
+                "市场建筑名",
+                "建筑之间距离m",
+                "市场合同租期(月数)",
+                "市场合同出租面积",
+                "月租金(元)",
+                "每平米单价 元/㎡/月",
+                "每平米单价 元/㎡/天",
+                "市场标准地址",
+                "房屋租金收取方式",
+                "物业类型",
+                "楼层总数",
+                "装修"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+
+    public void responseTab5(DateFormat df, ExcelExport ee1, Map<String, Object> map1){
+
+        //查询列表数据
+        Query query = new Query(map1);
+        List<WzHouseContractOutEntity> resultList = wzHouseContractOutService.queryList(query);
+
+        List<Object> colList=new ArrayList();;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+            colList = new ArrayList();
+            colList.add(resultList.get(i).getContractNumber());
+            colList.add(resultList.get(i).getContractSerialNumber());
+            colList.add(resultList.get(i).getCreateDate());
+            colList.add(resultList.get(i).getContractStatus());
+            colList.add(resultList.get(i).getContractName());
+            colList.add(resultList.get(i).getUndertakingDepartment());
+            colList.add(resultList.get(i).getUndertaker());
+            colList.add(resultList.get(i).getContractNumber());
+            colList.add(resultList.get(i).getOurSubject());
+            colList.add(resultList.get(i).getFullNameOfThTenant());
+            colList.add(resultList.get(i).getContractType());
+            colList.add(resultList.get(i).getContractDescription());
+            colList.add(resultList.get(i).getExcludingValueAddedTaxContractAmount());
+            colList.add(resultList.get(i).getContractAmountIncludingVat());
+            colList.add(resultList.get(i).getRate());
+            colList.add(resultList.get(i).getPriceIncreaseMechanism());
+            colList.add(resultList.get(i).getRenPaymentMethod());
+            colList.add(resultList.get(i).getLeaseCategory());
+            colList.add(resultList.get(i).getRentFreeStartDate());
+            colList.add(resultList.get(i).getRentFreeEndDate());
+            colList.add(resultList.get(i).getRentalStartDate());
+            colList.add(resultList.get(i).getRentalEndDate());
+            colList.add(resultList.get(i).getContractLeaseTerm());
+            colList.add(resultList.get(i).getContractRentalArea());
+            colList.add(resultList.get(i).getDebt());
+            colList.add(resultList.get(i).getEndTime());
+            colList.add(resultList.get(i).getEndReason());
+            colList.add(resultList.get(i).getSubordinateUnits());
+            colList.add(resultList.get(i).getResourceType());
+            colList.add(resultList.get(i).getBuildingAlias());
+            colList.add(resultList.get(i).getStandardAddress());
+            colList.add(resultList.get(i).getFloor());
+            colList.add(resultList.get(i).getRoomName());
+            colList.add(resultList.get(i).getThisRentalBuildingArea());
+            colList.add(resultList.get(i).getResourceType());
+            colList.add(resultList.get(i).getBuildingAlias());
+            colList.add(resultList.get(i).getStandardAddress());
+            colList.add(resultList.get(i).getFloor());
+            colList.add(resultList.get(i).getRoomName());
+            colList.add(resultList.get(i).getThisRentalBuildingArea());
+            colList.add(resultList.get(i).getTotalBuildingArea());
+            colList.add(resultList.get(i).getSelfUseBuildingArea());
+            colList.add(resultList.get(i).getIdleBuildingArea());
+            colList.add(resultList.get(i).getRentalBuildingArea());
+            colList.add(resultList.get(i).getUnusableBuildingArea());
+            colList.add(resultList.get(i).getThisRentalUseArea());
+            colList.add(resultList.get(i).getTotalUseArea());
+            colList.add(resultList.get(i).getSelfUseArea());
+            colList.add(resultList.get(i).getIdleArea());
+            colList.add(resultList.get(i).getRentalUseArea());
+            colList.add(resultList.get(i).getUnusableUseArea());
+            colList.add(resultList.get(i).getStatisticalMonth());
+            allList.add(colList.toArray());
+        }
+        String[] header = new String[]{
+                "合同编号",
+                "合同流水号",
+                "创建日期",
+                "合同状态",
+                "合同名称",
+                "承办部门",
+                "承办人",
+                "联系电话",
+                "我方主体",
+                "合同类型",
+                "投资主体",
+                "合同说明",
+                "含增值税合同金额",
+                "不含增值税合同额",
+                "税率",
+                "涨价机制",
+                "交租方式",
+                "租赁类别",
+                "免租期起始日期",
+                "免租期终止日期",
+                "出租起始日期",
+                "出租终止日期",
+                "合同租期(月数)",
+                "合同出租面积",
+                "是否有欠款",
+                "终止时间",
+                "终止原因",
+                "所属单位",
+                "资源类型",
+                "建筑/土地别名",
+                "标准地址",
+                "楼层",
+                "房间名",
+                "本次出租面积(建筑)",
+                "总面积(建筑)",
+                "自用面积(建筑)",
+                "闲置面积(建筑)",
+                "不可使用面积(建筑)",
+                "本次出租面积(使用)",
+                "总面积(使用)",
+                "自用面积(使用)",
+                "闲置面积(使用)",
+                "出租面积(使用)",
+                "不可使用面积(使用)",
+                "账期"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+
+    public double formatDouble(double num){
+        double avera=0l;
+        try{
+            DecimalFormat format2 = new DecimalFormat("#.00");
+            String str2 = format2.format(num);
+            avera = Double.parseDouble(str2);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return avera;
+    }
+
+}

+ 204 - 0
src/main/java/com/example/controller/WzHouseContractCompareController.java

@@ -0,0 +1,204 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzHouseContractCompareEntity;
+import com.example.entity.WzHouseContractInEntity;
+import com.example.entity.vo.contract.RentInVo;
+import com.example.service.WzHouseContractCompareService;
+import com.example.service.WzOtnAreaService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/WzHouseContractCompare")
+public class WzHouseContractCompareController {
+
+    @Autowired
+    private WzOtnAreaService otnAreaService;
+    @Autowired
+    private WzHouseContractCompareService wzHouseContractCompareService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseContractCompareEntity> list = wzHouseContractCompareService.queryList(query);
+        Query query1 = new Query(pageMap);
+        int total = wzHouseContractCompareService.queryTotal(query1);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/echartList")
+    @IgnoreAuth
+    public R echartList(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseContractInEntity> alllist = wzHouseContractCompareService.queryList(pageMap.getMap());
+
+        //全省节点
+        RentInVo province=new RentInVo();
+        province.setCounty("全省");
+        province.setCity("全省");
+
+        int aContractNum=0;
+        double aMoney=0l;
+        double aAvage=0l;
+        double aRentArea=0l;
+        //按地市进行划分
+        Map<String,List<WzHouseContractInEntity>> cityMap=new HashMap<>();
+        for (WzHouseContractInEntity entity : alllist) {
+            if(entity.getCity()==null) continue;
+            List<WzHouseContractInEntity> list;
+            if(cityMap.get(entity.getCity())!=null){
+                list=cityMap.get(entity.getCity());
+                list.add(entity);
+            }else{
+                list=new ArrayList<>();
+                list.add(entity);
+            }
+            cityMap.put(entity.getCity(),list);
+        }
+        //按区进行划分
+        List<RentInVo> resultList=new ArrayList<>();
+        List<RentInVo> cityList=new ArrayList<>();
+        for(Map.Entry<String,List<WzHouseContractInEntity>> entry:cityMap.entrySet()){
+            List<WzHouseContractInEntity> list=entry.getValue();
+            //县的Map集合
+            Map<String,List<WzHouseContractInEntity>> countyMap=new HashMap<>();
+            for (WzHouseContractInEntity leaveUseVo : list) {
+                if(countyMap.get(leaveUseVo.getCounty())!=null){
+                    list=countyMap.get(leaveUseVo.getCounty());
+                    list.add(leaveUseVo);
+                }else{
+                    list=new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getCounty(),list);
+            }
+
+            List<RentInVo> countyList=new ArrayList<>();
+            int cityContractNum=0;
+            double cityMoney=0l;
+            double cityRentArea=0l;
+            double cityAverage=0l;
+            for (Map.Entry<String,List<WzHouseContractInEntity>> countyEntry : countyMap.entrySet()) {
+                int contractNum=0;
+                double money=0l;
+                double average=0l;
+                double rentArea=0l;
+
+                RentInVo county=new RentInVo();
+                for (WzHouseContractInEntity leaveUseVo : countyEntry.getValue()) {
+                    county.setCity(leaveUseVo.getCounty());
+                    contractNum+=1;
+                    rentArea+=leaveUseVo.getSelfUseBuildingArea();
+                    money+=leaveUseVo.getContractAmountIncludingTax();
+
+                    cityContractNum+=1;
+                    cityRentArea+=leaveUseVo.getSelfUseBuildingArea();
+                    cityMoney+=leaveUseVo.getContractAmountIncludingTax();
+
+                    aContractNum+=1;
+                    aRentArea+=leaveUseVo.getSelfUseBuildingArea();
+                    aMoney+=leaveUseVo.getContractAmountIncludingTax();
+                }
+                county.setContractNum(contractNum);
+                county.setRentArea(formatDouble(rentArea));
+                county.setMoney(formatDouble(money));
+                if(rentArea==0){
+                    county.setAverage(0);
+                }else{
+                    county.setAverage(formatDouble(money/rentArea));
+                }
+
+                countyList.add(county);
+            }
+
+            List<RentInVo> orderCountyList=new ArrayList<>();
+            try{
+                //对countList 进行排序
+                String city=list.get(0).getCity();
+                if(city.contains("市")){
+                    city=city.split("市")[0];
+                }
+                OtnAreaEntity area=otnAreaService.queryObject(city);
+                List<OtnAreaEntity> countyAreaList=otnAreaService.getCityOption(area.getId());
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (RentInVo wzCity : countyList) {
+                        if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            }catch (Exception e){
+                orderCountyList=countyList;
+                e.printStackTrace();
+            }
+
+            RentInVo parent=new RentInVo();
+            parent.setContractNum(cityContractNum);
+            parent.setMoney(formatDouble(cityMoney));
+            parent.setCity(list.get(0).getCity());
+            parent.setChildren(orderCountyList);
+            parent.setRentArea(formatDouble(cityRentArea));
+            if(cityRentArea==0){
+                parent.setAverage(0);
+            }else{
+                parent.setAverage(formatDouble(cityMoney/cityRentArea));
+            }
+            cityList.add(parent);
+        }
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<RentInVo> orderList=new ArrayList<>();
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (RentInVo wzCity : cityList) {
+                if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                    orderList.add(wzCity);
+                }
+            }
+        }
+
+        province.setChildren(orderList);
+        province.setMoney(formatDouble(aMoney));
+        province.setContractNum(aContractNum);
+        province.setAverage(formatDouble(aMoney/aRentArea));
+        province.setRentArea(formatDouble(aRentArea));
+        resultList.add(province);
+
+        int total = wzHouseContractCompareService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    public double formatDouble(double num){
+        double avera=0;
+        try{
+            DecimalFormat format2 = new DecimalFormat("#.00");
+            String str2 = format2.format(num);
+            avera = Double.parseDouble(str2);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return avera;
+    }
+}

+ 203 - 0
src/main/java/com/example/controller/WzHouseContractInController.java

@@ -0,0 +1,203 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzHouseContractInEntity;
+import com.example.entity.vo.contract.RentInVo;
+import com.example.service.WzHouseContractInService;
+import com.example.service.WzOtnAreaService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/WzHouseContractIn")
+public class WzHouseContractInController {
+
+    @Autowired
+    private WzOtnAreaService otnAreaService;
+    @Autowired
+    private WzHouseContractInService wzHouseContractInService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseContractInEntity> list = wzHouseContractInService.queryList(query);
+        Query query1 = new Query(pageMap);
+        int total = wzHouseContractInService.queryTotal(query1);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/echartList")
+    @IgnoreAuth
+    public R echartList(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseContractInEntity> alllist = wzHouseContractInService.queryList(pageMap.getMap());
+
+        //全省节点
+        RentInVo province=new RentInVo();
+        province.setCounty("全省");
+        province.setCity("全省");
+
+        int aContractNum=0;
+        double aMoney=0l;
+        double aAvage=0l;
+        double aRentArea=0l;
+        //按地市进行划分
+        Map<String,List<WzHouseContractInEntity>> cityMap=new HashMap<>();
+        for (WzHouseContractInEntity entity : alllist) {
+            if(entity.getCity()==null) continue;
+            List<WzHouseContractInEntity> list;
+            if(cityMap.get(entity.getCity())!=null){
+                list=cityMap.get(entity.getCity());
+                list.add(entity);
+            }else{
+                list=new ArrayList<>();
+                list.add(entity);
+            }
+            cityMap.put(entity.getCity(),list);
+        }
+        //按区进行划分
+        List<RentInVo> resultList=new ArrayList<>();
+        List<RentInVo> cityList=new ArrayList<>();
+        for(Map.Entry<String,List<WzHouseContractInEntity>> entry:cityMap.entrySet()){
+            List<WzHouseContractInEntity> list=entry.getValue();
+            //县的Map集合
+            Map<String,List<WzHouseContractInEntity>> countyMap=new HashMap<>();
+            for (WzHouseContractInEntity leaveUseVo : list) {
+                if(countyMap.get(leaveUseVo.getCounty())!=null){
+                    list=countyMap.get(leaveUseVo.getCounty());
+                    list.add(leaveUseVo);
+                }else{
+                    list=new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getCounty(),list);
+            }
+
+            List<RentInVo> countyList=new ArrayList<>();
+            int cityContractNum=0;
+            double cityMoney=0l;
+            double cityRentArea=0l;
+            double cityAverage=0l;
+            for (Map.Entry<String,List<WzHouseContractInEntity>> countyEntry : countyMap.entrySet()) {
+                int contractNum=0;
+                double money=0l;
+                double average=0l;
+                double rentArea=0l;
+
+                RentInVo county=new RentInVo();
+                for (WzHouseContractInEntity leaveUseVo : countyEntry.getValue()) {
+                    county.setCity(leaveUseVo.getCounty());
+                    contractNum+=1;
+                    rentArea+=leaveUseVo.getSelfUseBuildingArea();
+                    money+=leaveUseVo.getContractAmountIncludingTax();
+
+                    cityContractNum+=1;
+                    cityRentArea+=leaveUseVo.getSelfUseBuildingArea();
+                    cityMoney+=leaveUseVo.getContractAmountIncludingTax();
+
+                    aContractNum+=1;
+                    aRentArea+=leaveUseVo.getSelfUseBuildingArea();
+                    aMoney+=leaveUseVo.getContractAmountIncludingTax();
+                }
+                county.setContractNum(contractNum);
+                county.setRentArea(formatDouble(rentArea));
+                county.setMoney(formatDouble(money));
+                if(rentArea==0){
+                    county.setAverage(0);
+                }else{
+                    county.setAverage(formatDouble(money/rentArea));
+                }
+
+                countyList.add(county);
+            }
+
+            List<RentInVo> orderCountyList=new ArrayList<>();
+            try{
+                //对countList 进行排序
+                String city=list.get(0).getCity();
+                if(city.contains("市")){
+                    city=city.split("市")[0];
+                }
+                OtnAreaEntity area=otnAreaService.queryObject(city);
+                List<OtnAreaEntity> countyAreaList=otnAreaService.getCityOption(area.getId());
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (RentInVo wzCity : countyList) {
+                        if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            }catch (Exception e){
+                orderCountyList=countyList;
+                e.printStackTrace();
+            }
+
+            RentInVo parent=new RentInVo();
+            parent.setContractNum(cityContractNum);
+            parent.setMoney(formatDouble(cityMoney));
+            parent.setCity(list.get(0).getCity());
+            parent.setChildren(orderCountyList);
+            parent.setRentArea(formatDouble(cityRentArea));
+            if(cityRentArea==0){
+                parent.setAverage(0);
+            }else{
+                parent.setAverage(formatDouble(cityMoney/cityRentArea));
+            }
+            cityList.add(parent);
+        }
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<RentInVo> orderList=new ArrayList<>();
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (RentInVo wzCity : cityList) {
+                if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                    orderList.add(wzCity);
+                }
+            }
+        }
+
+        province.setChildren(orderList);
+        province.setMoney(formatDouble(aMoney));
+        province.setContractNum(aContractNum);
+        province.setAverage(formatDouble(aMoney/aRentArea));
+        province.setRentArea(formatDouble(aRentArea));
+        resultList.add(province);
+
+        int total = wzHouseContractInService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    public double formatDouble(double num){
+        double avera=0;
+        try{
+            DecimalFormat format2 = new DecimalFormat("#.00");
+            String str2 = format2.format(num);
+            avera = Double.parseDouble(str2);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return avera;
+    }
+}

+ 224 - 0
src/main/java/com/example/controller/WzHouseContractOutController.java

@@ -0,0 +1,224 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.WzHouseContracEntity;
+import com.example.entity.WzHouseContractOutEntity;
+import com.example.service.WzHouseContractOutService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import com.example.utils.excel.ExcelExport;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/WzHouseContractOut")
+public class WzHouseContractOutController {
+
+    @Autowired
+    private WzHouseContractOutService wzHouseContractOutService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseContractOutEntity> list = wzHouseContractOutService.queryList(query);
+        Query query1 = new Query(pageMap);
+        int total = wzHouseContractOutService.queryTotal(query1);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/echartList")
+    @IgnoreAuth
+    public R echartList(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseContracEntity> wzHouseContracEntityList = wzHouseContractOutService.queryList(pageMap.getMap());
+
+        WzHouseContracEntity province=new WzHouseContracEntity();
+        province.setCity("全省");
+
+        Map<String,List<WzHouseContracEntity>> map=new HashMap<>();
+        for (WzHouseContracEntity leaveUseVo : wzHouseContracEntityList) {
+            List<WzHouseContracEntity> list;
+            if(map.get(leaveUseVo.getCity())!=null){
+                list=map.get(leaveUseVo.getCity());
+                list.add(leaveUseVo);
+            }else{
+                list=new ArrayList<>();
+                list.add(leaveUseVo);
+            }
+            map.put(leaveUseVo.getCity(),list);
+        }
+        List<WzHouseContracEntity> resultList=new ArrayList<>();
+        List<WzHouseContracEntity> cityList=new ArrayList<>();
+
+        double allContractQuantity=0l;
+        double allNoTaxContractAmount=0l;
+        double allRentArea=0l;
+        double allUnitPricePerSquareMeter=0l;
+
+        for(Map.Entry<String,List<WzHouseContracEntity>> entry:map.entrySet()){
+            List<WzHouseContracEntity> list=entry.getValue();
+            double contractQuantity=0l;
+            double noTaxContractAmount=0l;
+            double rentArea=0l;
+            double unitPricePerSquareMeter=0l;
+            for (WzHouseContracEntity leaveUseVo : list) {
+                contractQuantity+=leaveUseVo.getContractQuantity();
+                noTaxContractAmount+=leaveUseVo.getNoTaxContractAmount();
+                rentArea+=leaveUseVo.getRentArea();
+                unitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+
+                allContractQuantity+=leaveUseVo.getContractQuantity();
+                allNoTaxContractAmount+=leaveUseVo.getNoTaxContractAmount();
+                allRentArea+=leaveUseVo.getRentArea();
+                allUnitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+            }
+            cityList.add(list.get(0));
+        }
+        province.setContractQuantity(allContractQuantity);
+        province.setNoTaxContractAmount(formatDouble(allNoTaxContractAmount));
+        province.setRentArea(allRentArea);
+        province.setUnitPricePerSquareMeter(allUnitPricePerSquareMeter);
+        province.setChildren(cityList);
+        resultList.add(province);
+
+        int total = wzHouseContractOutService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 清单excel
+     */
+    @GetMapping("/excel")
+    @IgnoreAuth
+    public void excel(String name,String buildingNameAlias,String city,String county, HttpServletResponse response) {
+        Map<String, Object> map = new HashMap<>();
+        if (buildingNameAlias != null) {
+            map.put("buildingNameAlias", buildingNameAlias);
+        }
+        if (city != null) {
+            map.put("city", city);
+        }
+        if (county != null) {
+            map.put("county", county);
+        }
+
+        DateFormat df = new SimpleDateFormat("yyyyMMdd");
+        ExcelExport ee1 = new ExcelExport("报表" + df.format(new Date()));
+
+        try {
+            List<WzHouseContractOutEntity> list = wzHouseContractOutService.queryList(map);
+            List<Object> colList;
+            List<Object[]> allList = new ArrayList();
+            for (int i = 0; i < list.size(); i++) {
+                colList = new ArrayList();
+                colList.add(list.get(i).getContractNumber());
+                colList.add(list.get(i).getContractSerialNumber());
+                colList.add(list.get(i).getCreateDate());
+                colList.add(list.get(i).getContractStatus());
+                colList.add(list.get(i).getContractName());
+                colList.add(list.get(i).getUndertakingDepartment());
+                colList.add(list.get(i).getUndertaker());
+                colList.add(list.get(i).getContactNumber());
+                colList.add(list.get(i).getOurSubject());
+                colList.add(list.get(i).getFullNameOfThTenant());
+                colList.add(list.get(i).getContractType());
+                colList.add(list.get(i).getContractDescription());
+                colList.add(list.get(i).getExcludingValueAddedTaxContractAmount());
+                colList.add(list.get(i).getContractAmountIncludingVat());
+                colList.add(list.get(i).getRate());
+                colList.add(list.get(i).getPriceIncreaseMechanism());
+                colList.add(list.get(i).getRenPaymentMethod());
+                colList.add(list.get(i).getLeaseCategory());
+                colList.add(list.get(i).getRentFreeStartDate());
+                colList.add(list.get(i).getRentFreeEndDate());
+                colList.add(list.get(i).getRentalStartDate());
+                colList.add(list.get(i).getRentalEndDate());
+                colList.add(list.get(i).getContractLeaseTerm());
+                colList.add(list.get(i).getContractRentalArea());
+                colList.add(list.get(i).getDebt());
+                colList.add(list.get(i).getEndTime());
+                colList.add(list.get(i).getEndReason());
+                colList.add(list.get(i).getSubordinateUnits());
+                colList.add(list.get(i).getResourceType());
+                colList.add(list.get(i).getBuildingAlias());
+                allList.add(colList.toArray());
+            }
+
+            String[] header = new String[]{
+                    "合同编号",
+                    "合同流水号",
+                    "创建日期",
+                    "合同状态",
+                    "合同名称",
+                    "承办部门",
+                    "承办人",
+                    "联系电话",
+                    "我方主体",
+                    "合同类型",
+                    "投资主体",
+                    "合同说明",
+                    "含增值税合同金额",
+                    "不含增值税合同额",
+                    "税率",
+                    "涨价机制",
+                    "交租方式",
+                    "租赁类别",
+                    "免租期起始日期",
+                    "免租期终止日期",
+                    "出租起始日期",
+                    "出租终止日期",
+                    "合同租期(月数)",
+                    "合同出租面积",
+                    "房屋实际产权",
+                    "是否有欠款",
+                    "终止时间",
+                    "终止原因",
+                    "所属单位",
+                    "资源类型",
+                    "建筑/土地别名"
+            };
+            ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+            ee1.export(response);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+
+    public double formatDouble(double num){
+        double avera=0l;
+        try{
+            DecimalFormat format2 = new DecimalFormat("#.00");
+            String str2 = format2.format(num);
+            avera = Double.parseDouble(str2);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return avera;
+    }
+
+}

+ 211 - 0
src/main/java/com/example/controller/WzHouseContractTopController.java

@@ -0,0 +1,211 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzHouseContractInEntity;
+import com.example.entity.WzHouseContractTopEntity;
+import com.example.entity.vo.contract.RentInVo;
+import com.example.service.WzHouseContractTopService;
+import com.example.service.WzOtnAreaService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/WzHouseContractTop")
+public class WzHouseContractTopController {
+
+    @Autowired
+    private WzOtnAreaService otnAreaService;
+    @Autowired
+    private WzHouseContractTopService wzHouseContractTopService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseContractTopEntity> list = wzHouseContractTopService.queryList(query);
+        for (WzHouseContractTopEntity topEntity : list) {
+            try{
+                topEntity.setHireTime(String.valueOf(formatDouble(Double.valueOf(topEntity.getHireTime()))));
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }
+        Query query1 = new Query(pageMap);
+        int total = wzHouseContractTopService.queryTotal(query1);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/echartList")
+    @IgnoreAuth
+    public R echartList(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseContractInEntity> alllist = wzHouseContractTopService.queryList(pageMap.getMap());
+
+        //全省节点
+        RentInVo province=new RentInVo();
+        province.setCounty("全省");
+        province.setCity("全省");
+
+        int aContractNum=0;
+        double aMoney=0l;
+        double aAvage=0l;
+        double aRentArea=0l;
+        //按地市进行划分
+        Map<String,List<WzHouseContractInEntity>> cityMap=new HashMap<>();
+        for (WzHouseContractInEntity entity : alllist) {
+            if(entity.getCity()==null) continue;
+            List<WzHouseContractInEntity> list;
+            if(cityMap.get(entity.getCity())!=null){
+                list=cityMap.get(entity.getCity());
+                list.add(entity);
+            }else{
+                list=new ArrayList<>();
+                list.add(entity);
+            }
+            cityMap.put(entity.getCity(),list);
+        }
+        //按区进行划分
+        List<RentInVo> resultList=new ArrayList<>();
+        List<RentInVo> cityList=new ArrayList<>();
+        for(Map.Entry<String,List<WzHouseContractInEntity>> entry:cityMap.entrySet()){
+            List<WzHouseContractInEntity> list=entry.getValue();
+            //县的Map集合
+            Map<String,List<WzHouseContractInEntity>> countyMap=new HashMap<>();
+            for (WzHouseContractInEntity leaveUseVo : list) {
+                if(countyMap.get(leaveUseVo.getCounty())!=null){
+                    list=countyMap.get(leaveUseVo.getCounty());
+                    list.add(leaveUseVo);
+                }else{
+                    list=new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getCounty(),list);
+            }
+
+            List<RentInVo> countyList=new ArrayList<>();
+            int cityContractNum=0;
+            double cityMoney=0l;
+            double cityRentArea=0l;
+            double cityAverage=0l;
+            for (Map.Entry<String,List<WzHouseContractInEntity>> countyEntry : countyMap.entrySet()) {
+                int contractNum=0;
+                double money=0l;
+                double average=0l;
+                double rentArea=0l;
+
+                RentInVo county=new RentInVo();
+                for (WzHouseContractInEntity leaveUseVo : countyEntry.getValue()) {
+                    county.setCity(leaveUseVo.getCounty());
+                    contractNum+=1;
+                    rentArea+=leaveUseVo.getSelfUseBuildingArea();
+                    money+=leaveUseVo.getContractAmountIncludingTax();
+
+                    cityContractNum+=1;
+                    cityRentArea+=leaveUseVo.getSelfUseBuildingArea();
+                    cityMoney+=leaveUseVo.getContractAmountIncludingTax();
+
+                    aContractNum+=1;
+                    aRentArea+=leaveUseVo.getSelfUseBuildingArea();
+                    aMoney+=leaveUseVo.getContractAmountIncludingTax();
+                }
+                county.setContractNum(contractNum);
+                county.setRentArea(formatDouble(rentArea));
+                county.setMoney(formatDouble(money));
+                if(rentArea==0){
+                    county.setAverage(0);
+                }else{
+                    county.setAverage(formatDouble(money/rentArea));
+                }
+
+                countyList.add(county);
+            }
+
+            List<RentInVo> orderCountyList=new ArrayList<>();
+            try{
+                //对countList 进行排序
+                String city=list.get(0).getCity();
+                if(city.contains("市")){
+                    city=city.split("市")[0];
+                }
+                OtnAreaEntity area=otnAreaService.queryObject(city);
+                List<OtnAreaEntity> countyAreaList=otnAreaService.getCityOption(area.getId());
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (RentInVo wzCity : countyList) {
+                        if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            }catch (Exception e){
+                orderCountyList=countyList;
+                e.printStackTrace();
+            }
+
+            RentInVo parent=new RentInVo();
+            parent.setContractNum(cityContractNum);
+            parent.setMoney(formatDouble(cityMoney));
+            parent.setCity(list.get(0).getCity());
+            parent.setChildren(orderCountyList);
+            parent.setRentArea(formatDouble(cityRentArea));
+            if(cityRentArea==0){
+                parent.setAverage(0);
+            }else{
+                parent.setAverage(formatDouble(cityMoney/cityRentArea));
+            }
+            cityList.add(parent);
+        }
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<RentInVo> orderList=new ArrayList<>();
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (RentInVo wzCity : cityList) {
+                if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                    orderList.add(wzCity);
+                }
+            }
+        }
+
+        province.setChildren(orderList);
+        province.setMoney(formatDouble(aMoney));
+        province.setContractNum(aContractNum);
+        province.setAverage(formatDouble(aMoney/aRentArea));
+        province.setRentArea(formatDouble(aRentArea));
+        resultList.add(province);
+
+        int total = wzHouseContractTopService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    public double formatDouble(double num){
+        double avera=0;
+        try{
+            DecimalFormat format2 = new DecimalFormat("#.00");
+            String str2 = format2.format(num);
+            avera = Double.parseDouble(str2);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return avera;
+    }
+}

+ 136 - 0
src/main/java/com/example/controller/WzHouseCustomerController.java

@@ -0,0 +1,136 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzHouseCustomerEntity;
+import com.example.service.WzHouseCustomerService;
+import com.example.service.WzOtnAreaService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/wzHouseCustomer")
+public class WzHouseCustomerController {
+
+    @Autowired
+    private WzHouseCustomerService wzHouseCustomerService;
+    @Autowired
+    private WzOtnAreaService otnAreaService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseCustomerEntity> list = wzHouseCustomerService.queryList(query);
+        int total = wzHouseCustomerService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/echartList")
+    @IgnoreAuth
+    public R echartList(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseCustomerEntity> wzHouseContracEntityList = wzHouseCustomerService.queryList(query);
+
+        WzHouseCustomerEntity province=new WzHouseCustomerEntity();
+        province.setCity("全省");
+
+        Map<String,List<WzHouseCustomerEntity>> map=new HashMap<>();
+        for (WzHouseCustomerEntity leaveUseVo : wzHouseContracEntityList) {
+            List<WzHouseCustomerEntity> list;
+            if(map.get(leaveUseVo.getCity())!=null){
+                list=map.get(leaveUseVo.getCity());
+                list.add(leaveUseVo);
+            }else{
+                list=new ArrayList<>();
+                list.add(leaveUseVo);
+            }
+            map.put(leaveUseVo.getCity(),list);
+        }
+        List<WzHouseCustomerEntity> resultList=new ArrayList<>();
+        List<WzHouseCustomerEntity> cityList=new ArrayList<>();
+
+        Integer allPerson=0;
+        Integer allPersonPrivate=0;
+        Integer allStateOwnedEnterprises=0;
+        Integer allGovernment=0;
+        Integer allAllNum=0;
+
+        for(Map.Entry<String,List<WzHouseCustomerEntity>> entry:map.entrySet()){
+            List<WzHouseCustomerEntity> list=entry.getValue();
+            if(list.get(0).getCity().equals("全省")){
+                continue;
+            }
+            Integer person=0;
+            Integer personPrivate=0;
+            Integer stateOwnedEnterprises=0;
+            Integer government=0;
+            Integer allNum=0;
+            for (WzHouseCustomerEntity leaveUseVo : list) {
+
+                if(leaveUseVo.getPerson()!=null){
+                    person+=leaveUseVo.getPerson();
+                    allPerson+=leaveUseVo.getPerson();
+                }
+                if(leaveUseVo.getPersonPrivate()!=null){
+                    personPrivate+=leaveUseVo.getPersonPrivate();
+                    allPersonPrivate+=leaveUseVo.getPersonPrivate();
+                }
+                if(leaveUseVo.getStateOwnedEnterprises()!=null){
+                    stateOwnedEnterprises+=leaveUseVo.getStateOwnedEnterprises();
+                    allStateOwnedEnterprises+=leaveUseVo.getStateOwnedEnterprises();
+                }
+                if(leaveUseVo.getGovernment()!=null){
+                    government+=leaveUseVo.getGovernment();
+                    allGovernment+=leaveUseVo.getGovernment();
+                }
+                allNum=person+personPrivate+stateOwnedEnterprises+government;
+                allAllNum+=allNum;
+                leaveUseVo.setAllNum(allNum);
+            }
+            cityList.add(list.get(0));
+        }
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<WzHouseCustomerEntity> orderList=new ArrayList<>();
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (WzHouseCustomerEntity wzCity : cityList) {
+                if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                    orderList.add(wzCity);
+                }
+            }
+        }
+
+        province.setPerson(allPerson);
+        province.setPersonPrivate(allPersonPrivate);
+        province.setStateOwnedEnterprises(allStateOwnedEnterprises);
+        province.setGovernment(allGovernment);
+        province.setChildren(orderList);
+        province.setAllNum(allAllNum);
+
+        if(orderList.size()>0){
+            resultList.add(province);
+        }
+        int total = wzHouseCustomerService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+}

+ 216 - 0
src/main/java/com/example/controller/WzHouseInCustomerController.java

@@ -0,0 +1,216 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzHouseInCustomerEntity;
+import com.example.service.WzHouseInCustomerService;
+import com.example.service.WzOtnAreaService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 房屋租入(客户管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/wzHouseInCustomer")
+public class WzHouseInCustomerController {
+
+    @Autowired
+    private WzHouseInCustomerService wzHouseInCustomerService;
+
+    @Autowired
+    private WzOtnAreaService otnAreaService;
+
+    @RequestMapping("/echartList")
+    @IgnoreAuth
+    public R echartList(@RequestBody PageMap pageMap) {
+
+        List<WzHouseInCustomerEntity> resultList = new ArrayList<>();
+
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseInCustomerEntity> wzHouseInCustomerEntityList = wzHouseInCustomerService.queryList(query);
+
+        Map<String, List<WzHouseInCustomerEntity>> cityMap = new HashMap<>();
+        for (WzHouseInCustomerEntity wzHouseInCustomer : wzHouseInCustomerEntityList) {
+            List<WzHouseInCustomerEntity> list;
+            if (cityMap.get(wzHouseInCustomer.getStandardAddressLevel2()) != null) {
+                list = cityMap.get(wzHouseInCustomer.getStandardAddressLevel2());
+                list.add(wzHouseInCustomer);
+            } else {
+                list = new ArrayList<>();
+                list.add(wzHouseInCustomer);
+            }
+            cityMap.put(wzHouseInCustomer.getStandardAddressLevel2(), list);
+        }
+
+        Integer allPerson = 0;                           // 个人
+        Integer allPersonPrivate = 0;                    // 私企
+        Integer allStateOwnedEnterprises = 0;            // 国企
+        Integer allGovernment = 0;                       // 政府
+        Integer allVillageAndTownColletive = 0;          // 村镇集体
+        Integer allAllNum = 0;                           // 总计
+        List<WzHouseInCustomerEntity> cityList = new ArrayList<>();
+        for (Map.Entry<String, List<WzHouseInCustomerEntity>> entry : cityMap.entrySet()) {
+            List<WzHouseInCustomerEntity> list = entry.getValue();
+            if (list.get(0).getStandardAddressLevel2().equals("全省")) {
+                continue;
+            }
+
+            //县的Map集合
+            Map<String, List<WzHouseInCustomerEntity>> countyMap = new HashMap<>();
+            for (WzHouseInCustomerEntity leaveUseVo : list) {
+                if (leaveUseVo.getStandardAddressLevel3() == null || leaveUseVo.getStandardAddressLevel3().equals("")) {
+                    continue;
+                }
+                if (countyMap.get(leaveUseVo.getStandardAddressLevel3()) != null) {
+                    list = countyMap.get(leaveUseVo.getStandardAddressLevel3());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getStandardAddressLevel3(), list);
+            }
+            Integer cityPerson = 0;                           // 个人
+            Integer cityPersonPrivate = 0;                    // 私企
+            Integer cityStateOwnedEnterprises = 0;            // 国企
+            Integer cityGovernment = 0;                       // 政府
+            Integer cityVillageAndTownColletive = 0;          // 村镇集体
+            Integer cityAllNum = 0;                           // 总计
+            List<WzHouseInCustomerEntity> countyList=new ArrayList<>();
+            for (Map.Entry<String, List<WzHouseInCustomerEntity>> countyEntry : countyMap.entrySet()) {
+                Integer person = 0;                           // 个人
+                Integer personPrivate = 0;                    // 私企
+                Integer stateOwnedEnterprises = 0;            // 国企
+                Integer government = 0;                       // 政府
+                Integer villageAndTownColletive = 0;          // 村镇集体
+                Integer allNum = 0;                           // 总计
+                for (WzHouseInCustomerEntity wzHouseInCustomerEntity : countyEntry.getValue()) {
+                    if(wzHouseInCustomerEntity.getPersonal()!=null&&!wzHouseInCustomerEntity.getPersonal().equals("")){
+                        person+=Integer.parseInt(wzHouseInCustomerEntity.getPersonal());
+                        cityPerson+=Integer.parseInt(wzHouseInCustomerEntity.getPersonal());
+                        allPerson+=Integer.parseInt(wzHouseInCustomerEntity.getPersonal());
+                        allNum+=Integer.parseInt(wzHouseInCustomerEntity.getPersonal());
+                        cityAllNum+=Integer.parseInt(wzHouseInCustomerEntity.getPersonal());
+                        allAllNum+=Integer.parseInt(wzHouseInCustomerEntity.getPersonal());
+                    }
+                    if(wzHouseInCustomerEntity.getPrivateEnterprise()!=null&&!wzHouseInCustomerEntity.getPrivateEnterprise().equals("")){
+                        personPrivate+=Integer.parseInt(wzHouseInCustomerEntity.getPrivateEnterprise());
+                        cityPersonPrivate+=Integer.parseInt(wzHouseInCustomerEntity.getPrivateEnterprise());
+                        allPersonPrivate+=Integer.parseInt(wzHouseInCustomerEntity.getPrivateEnterprise());
+                        allNum+=Integer.parseInt(wzHouseInCustomerEntity.getPrivateEnterprise());
+                        cityAllNum+=Integer.parseInt(wzHouseInCustomerEntity.getPrivateEnterprise());
+                        allAllNum+=Integer.parseInt(wzHouseInCustomerEntity.getPrivateEnterprise());
+                    }
+                    if(wzHouseInCustomerEntity.getStateOwnedEnterprise()!=null&&!wzHouseInCustomerEntity.getStateOwnedEnterprise().equals("")){
+                        stateOwnedEnterprises+=Integer.parseInt(wzHouseInCustomerEntity.getStateOwnedEnterprise());
+                        cityStateOwnedEnterprises+=Integer.parseInt(wzHouseInCustomerEntity.getStateOwnedEnterprise());
+                        allStateOwnedEnterprises+=Integer.parseInt(wzHouseInCustomerEntity.getStateOwnedEnterprise());
+                        allNum+=Integer.parseInt(wzHouseInCustomerEntity.getStateOwnedEnterprise());
+                        cityAllNum+=Integer.parseInt(wzHouseInCustomerEntity.getStateOwnedEnterprise());
+                        allAllNum+=Integer.parseInt(wzHouseInCustomerEntity.getStateOwnedEnterprise());
+                    }
+                    if(wzHouseInCustomerEntity.getGovernment()!=null&&!wzHouseInCustomerEntity.getGovernment().equals("")){
+                        government+=Integer.parseInt(wzHouseInCustomerEntity.getGovernment());
+                        cityGovernment+=Integer.parseInt(wzHouseInCustomerEntity.getGovernment());
+                        allGovernment+=Integer.parseInt(wzHouseInCustomerEntity.getGovernment());
+                        allNum+=Integer.parseInt(wzHouseInCustomerEntity.getGovernment());
+                        cityAllNum+=Integer.parseInt(wzHouseInCustomerEntity.getGovernment());
+                        allAllNum+=Integer.parseInt(wzHouseInCustomerEntity.getGovernment());
+                    }
+                    if(wzHouseInCustomerEntity.getVillageAndTownColletive()!=null&&!wzHouseInCustomerEntity.getVillageAndTownColletive().equals("")){
+                        villageAndTownColletive+=Integer.parseInt(wzHouseInCustomerEntity.getVillageAndTownColletive());
+                        cityVillageAndTownColletive+=Integer.parseInt(wzHouseInCustomerEntity.getVillageAndTownColletive());
+                        allVillageAndTownColletive+=Integer.parseInt(wzHouseInCustomerEntity.getVillageAndTownColletive());
+                        allNum+=Integer.parseInt(wzHouseInCustomerEntity.getVillageAndTownColletive());
+                        cityAllNum+=Integer.parseInt(wzHouseInCustomerEntity.getVillageAndTownColletive());
+                        allAllNum+=Integer.parseInt(wzHouseInCustomerEntity.getVillageAndTownColletive());
+                    }
+                }
+                WzHouseInCustomerEntity wzHouseInCustomerEntity = countyEntry.getValue().get(0);
+                wzHouseInCustomerEntity.setPersonal(person+"");
+                wzHouseInCustomerEntity.setGovernment(government+"");
+                wzHouseInCustomerEntity.setPrivateEnterprise(personPrivate+"");
+                wzHouseInCustomerEntity.setStateOwnedEnterprise(stateOwnedEnterprises+"");
+                wzHouseInCustomerEntity.setVillageAndTownColletive(villageAndTownColletive+"");
+                wzHouseInCustomerEntity.setAllNum(allNum+"");
+                wzHouseInCustomerEntity.setStandardAddressLevel2(wzHouseInCustomerEntity.getStandardAddressLevel3());
+                countyList.add(wzHouseInCustomerEntity);
+            }
+
+            List<WzHouseInCustomerEntity> orderCountyList=new ArrayList<>();
+            try{
+                //对countList 进行排序
+                String city=list.get(0).getStandardAddressLevel2();
+                if(city.contains("市")){
+                    city=city.split("市")[0];
+                }
+                OtnAreaEntity area=otnAreaService.queryObject(city);
+                List<OtnAreaEntity> countyAreaList=otnAreaService.getCityOption(area.getId());
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (WzHouseInCustomerEntity wzCity : countyList) {
+                        if(wzCity.getStandardAddressLevel3().contains(otnAreaEntity.getName())){
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            }catch (Exception e){
+                orderCountyList=countyList;
+                e.printStackTrace();
+            }
+
+            //城市的统计
+            WzHouseInCustomerEntity cityObject=new WzHouseInCustomerEntity();
+            cityObject.setStandardAddressLevel2(entry.getKey());
+            cityObject.setStandardAddressLevel3(entry.getKey());
+            cityObject.setPersonal(cityPerson+"");
+            cityObject.setPrivateEnterprise(cityPersonPrivate+"");
+            cityObject.setGovernment(cityGovernment+"");
+            cityObject.setStateOwnedEnterprise(cityStateOwnedEnterprises+"");
+            cityObject.setVillageAndTownColletive(cityVillageAndTownColletive+"");
+            cityObject.setAllNum(cityAllNum+"");
+            cityObject.setChildren(orderCountyList);
+            cityList.add(cityObject);
+        }
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<WzHouseInCustomerEntity> orderList=new ArrayList<>();
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (WzHouseInCustomerEntity wzCity : cityList) {
+                if(wzCity.getStandardAddressLevel2().contains(otnAreaEntity.getName())){
+                    orderList.add(wzCity);
+                }
+            }
+        }
+
+        //城市的统计
+        WzHouseInCustomerEntity provinceObject=new WzHouseInCustomerEntity();
+        provinceObject.setStandardAddressLevel2("全省");
+        provinceObject.setStandardAddressLevel3("全省");
+        provinceObject.setPersonal(allPerson+"");
+        provinceObject.setPrivateEnterprise(allPersonPrivate+"");
+        provinceObject.setGovernment(allGovernment+"");
+        provinceObject.setStateOwnedEnterprise(allStateOwnedEnterprises+"");
+        provinceObject.setVillageAndTownColletive(allVillageAndTownColletive+"");
+        provinceObject.setAllNum(allAllNum+"");
+        provinceObject.setChildren(orderList);
+        resultList.add(provinceObject);
+        PageUtils pageUtil = new PageUtils(resultList, 0, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+}

+ 962 - 0
src/main/java/com/example/controller/WzHouseLeaseInConController.java

@@ -0,0 +1,962 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzHouseContracEntity;
+import com.example.entity.WzHouseContractCompareEntity;
+import com.example.entity.WzHouseContractInEntity;
+import com.example.entity.WzHouseContractTopEntity;
+import com.example.entity.WzHouseLeaseInConEntity;
+import com.example.entity.WzHouseUseEntity;
+import com.example.entity.vo.WzHouseUseVo;
+import com.example.service.WzHouseContractCompareService;
+import com.example.service.WzHouseContractInService;
+import com.example.service.WzHouseContractTopService;
+import com.example.service.WzHouseLeaseInConService;
+import com.example.service.WzHouseUseService;
+import com.example.service.WzOtnAreaService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import com.example.utils.excel.ExcelExport;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 房屋租入(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/WzHouseLeaseInCon")
+public class WzHouseLeaseInConController {
+
+    @Autowired
+    private WzHouseContractTopService wzHouseContractTopService;
+    @Autowired
+    private WzHouseContractCompareService wzHouseContractCompareService;
+    @Autowired
+    private WzHouseLeaseInConService wzHouseLeaseInConService;
+    @Autowired
+    private WzHouseContractInService wzHouseContractInService;
+    @Autowired
+    private WzHouseUseService wzHouseUseService;
+    @Autowired
+    private WzOtnAreaService otnAreaService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseContracEntity> list = wzHouseLeaseInConService.queryList(pageMap.getMap());
+        int total = wzHouseLeaseInConService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/echartList")
+    @IgnoreAuth
+    public R echartList(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseLeaseInConEntity> wzHouseContracEntityList = wzHouseLeaseInConService.queryList(pageMap.getMap());
+
+        Map<String,List<WzHouseLeaseInConEntity>> cityMap=new HashMap<>();
+        for (WzHouseLeaseInConEntity leaveUseVo : wzHouseContracEntityList) {
+            List<WzHouseLeaseInConEntity> list;
+            if(cityMap.get(leaveUseVo.getStandardAddressLevel2())!=null){
+                list=cityMap.get(leaveUseVo.getStandardAddressLevel2());
+                list.add(leaveUseVo);
+            }else{
+                list=new ArrayList<>();
+                list.add(leaveUseVo);
+            }
+            cityMap.put(leaveUseVo.getStandardAddressLevel2(),list);
+        }
+
+        List<WzHouseLeaseInConEntity> resultList=new ArrayList<>();
+        List<WzHouseLeaseInConEntity> cityList=new ArrayList<>();
+
+        double allContractQuantity=0l;            // 租入合同数量
+        double allNoTaxContractAmount=0l;         // 合同总金额(含税)(元)
+        double allRentArea=0l;                    // 总计面积(平米)
+        double allUnitPricePerSquareMeter=0l;     // 每平米单价
+
+         double allbusinessAreaSquaMete=0l;            //营业面积(平米)
+         double allofficeAreaSquaMete=0l;              //办公面积(平米)
+         double allcommunicationRoomAreaSquaMete=0l;  //通信机房面积(平米)
+         double allotherUsageAreaSquaMete=0l;         //其他用途面积(平米)
+
+        int cityNum=0;
+        for(Map.Entry<String,List<WzHouseLeaseInConEntity>> entry:cityMap.entrySet()){
+            List<WzHouseLeaseInConEntity> list=entry.getValue();
+
+            if (list.get(0).getStandardAddressLevel3().equals("全省")) {
+                continue;
+            }
+            //县的Map集合
+            Map<String, List<WzHouseLeaseInConEntity>> countyMap = new HashMap<>();
+            for (WzHouseLeaseInConEntity leaveUseVo : list) {
+                if (leaveUseVo.getStandardAddressLevel3() == null || leaveUseVo.getStandardAddressLevel3().equals("")) {
+                    continue;
+                }
+                if (countyMap.get(leaveUseVo.getStandardAddressLevel3()) != null) {
+                    list = countyMap.get(leaveUseVo.getStandardAddressLevel3());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getStandardAddressLevel3(), list);
+            }
+
+            double cityContractQuantity=0l;
+            double cityNoTaxContractAmount=0l;
+            double cityRentArea=0l;
+            double cityUnitPricePerSquareMeter=0l;
+
+            double citybusinessAreaSquaMete=0l;            //营业面积(平米)
+            double cityofficeAreaSquaMete=0l;              //办公面积(平米)
+            double citycommunicationRoomAreaSquaMete=0l;  //通信机房面积(平米)
+            double cityotherUsageAreaSquaMete=0l;         //其他用途面积(平米)
+            List<WzHouseLeaseInConEntity> countyList=new ArrayList<>();
+            for (Map.Entry<String, List<WzHouseLeaseInConEntity>> countyEntry : countyMap.entrySet()) {
+                double contractQuantity=0l;
+                double noTaxContractAmount=0l;
+                double rentArea=0l;
+                double unitPricePerSquareMeter=0l;
+
+                double businessAreaSquaMete=0l;            //营业面积(平米)
+                double officeAreaSquaMete=0l;              //办公面积(平米)
+                double communicationRoomAreaSquaMete=0l;  //通信机房面积(平米)
+                double otherUsageAreaSquaMete=0l;         //其他用途面积(平米)
+                for (WzHouseLeaseInConEntity leaveUseVo : countyEntry.getValue()) {
+                    contractQuantity+=leaveUseVo.getLeaInContracQuantity();
+                    noTaxContractAmount+=leaveUseVo.getTotalContrAmount();
+                    rentArea+=leaveUseVo.getTotalAreaSquaMete();
+                    unitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+                     businessAreaSquaMete+= leaveUseVo.getBusinessAreaSquaMete();
+                     officeAreaSquaMete+=leaveUseVo.getOfficeAreaSquaMete();
+                     communicationRoomAreaSquaMete+=leaveUseVo.getCommunicationRoomAreaSquaMete();
+                     otherUsageAreaSquaMete+=leaveUseVo.getOtherUsageAreaSquaMete();
+
+                    cityContractQuantity+=leaveUseVo.getLeaInContracQuantity();
+                    cityNoTaxContractAmount+=leaveUseVo.getTotalContrAmount();
+                    cityRentArea+=leaveUseVo.getTotalAreaSquaMete();
+                    cityUnitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+                    citybusinessAreaSquaMete+= leaveUseVo.getBusinessAreaSquaMete();
+                    cityofficeAreaSquaMete+=leaveUseVo.getOfficeAreaSquaMete();
+                    citycommunicationRoomAreaSquaMete+=leaveUseVo.getCommunicationRoomAreaSquaMete();
+                    cityotherUsageAreaSquaMete+=leaveUseVo.getOtherUsageAreaSquaMete();
+
+                    allContractQuantity+=leaveUseVo.getLeaInContracQuantity();
+                    allNoTaxContractAmount+=leaveUseVo.getTotalContrAmount();
+                    allRentArea+=leaveUseVo.getTotalAreaSquaMete();
+                    allUnitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+                    allbusinessAreaSquaMete+= leaveUseVo.getBusinessAreaSquaMete();
+                    allofficeAreaSquaMete+=leaveUseVo.getOfficeAreaSquaMete();
+                    allcommunicationRoomAreaSquaMete+=leaveUseVo.getCommunicationRoomAreaSquaMete();
+                    allotherUsageAreaSquaMete+=leaveUseVo.getOtherUsageAreaSquaMete();
+                }
+                WzHouseLeaseInConEntity wzHouseInCustomerEntity = new WzHouseLeaseInConEntity();
+                wzHouseInCustomerEntity.setLeaInContracQuantity(formatDouble(contractQuantity));
+                wzHouseInCustomerEntity.setStandardAddressLevel2(countyEntry.getKey());
+                wzHouseInCustomerEntity.setTotalContrAmount(formatDouble(noTaxContractAmount));
+                wzHouseInCustomerEntity.setTotalAreaSquaMete(formatDouble(rentArea));
+                wzHouseInCustomerEntity.setUnitPricePerSquareMeter(formatDouble(unitPricePerSquareMeter));
+                wzHouseInCustomerEntity.setBusinessAreaSquaMete(formatDouble(businessAreaSquaMete));
+                wzHouseInCustomerEntity.setOfficeAreaSquaMete(formatDouble(officeAreaSquaMete));
+                wzHouseInCustomerEntity.setCommunicationRoomAreaSquaMete(formatDouble(communicationRoomAreaSquaMete));
+                wzHouseInCustomerEntity.setOtherUsageAreaSquaMete(formatDouble(otherUsageAreaSquaMete));
+                countyList.add(wzHouseInCustomerEntity);
+            }
+            List<WzHouseLeaseInConEntity> orderCountyList=new ArrayList<>();
+            try{
+                //对countList 进行排序
+                String city=list.get(0).getStandardAddressLevel2();
+                if(city.contains("市")){
+                    city=city.split("市")[0];
+                }
+                OtnAreaEntity area=otnAreaService.queryObject(city);
+                List<OtnAreaEntity> countyAreaList=otnAreaService.getCityOption(area.getId());
+                int i=0;
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (WzHouseLeaseInConEntity wzCity : countyList) {
+                        if(wzCity.getStandardAddressLevel2().contains(otnAreaEntity.getName())){
+                            i++;
+                            wzCity.setFlag(i%2==0);
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            }catch (Exception e){
+                orderCountyList=countyList;
+                e.printStackTrace();
+            }
+
+            WzHouseLeaseInConEntity wzHouseInCustomerEntity = new WzHouseLeaseInConEntity();
+            wzHouseInCustomerEntity.setStandardAddressLevel2(entry.getKey());
+            wzHouseInCustomerEntity.setLeaInContracQuantity(formatDouble(cityContractQuantity));
+            wzHouseInCustomerEntity.setTotalContrAmount(formatDouble(cityNoTaxContractAmount));
+            wzHouseInCustomerEntity.setTotalAreaSquaMete(formatDouble(cityRentArea));
+            wzHouseInCustomerEntity.setBusinessAreaSquaMete(formatDouble(citybusinessAreaSquaMete));
+            wzHouseInCustomerEntity.setOfficeAreaSquaMete(formatDouble(cityofficeAreaSquaMete));
+            wzHouseInCustomerEntity.setCommunicationRoomAreaSquaMete(formatDouble(citycommunicationRoomAreaSquaMete));
+            wzHouseInCustomerEntity.setOtherUsageAreaSquaMete(formatDouble(cityotherUsageAreaSquaMete));
+            double num=cityUnitPricePerSquareMeter/countyMap.size();
+            cityNum+=countyMap.size();
+            wzHouseInCustomerEntity.setUnitPricePerSquareMeter(formatDouble(num));
+            wzHouseInCustomerEntity.setChildren(orderCountyList);
+            cityList.add(wzHouseInCustomerEntity);
+        }
+
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<WzHouseLeaseInConEntity> orderList=new ArrayList<>();
+        int i=0;
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (WzHouseLeaseInConEntity wzCity : cityList) {
+                if(wzCity.getStandardAddressLevel2().contains(otnAreaEntity.getName())){
+                    wzCity.setFlag(i%2==0);
+                    i++;
+                    orderList.add(wzCity);
+                }
+            }
+        }
+
+        WzHouseLeaseInConEntity province=new WzHouseLeaseInConEntity();
+        province.setStandardAddressLevel2("全省");
+        province.setLeaInContracQuantity(formatDouble(allContractQuantity));
+        province.setTotalContrAmount(formatDouble(allNoTaxContractAmount));
+        province.setTotalAreaSquaMete(formatDouble(allRentArea));
+        if(cityList.size()!=0){
+            province.setUnitPricePerSquareMeter(formatDouble(allUnitPricePerSquareMeter/cityNum ));
+        }
+        province.setBusinessAreaSquaMete(formatDouble(allbusinessAreaSquaMete));
+        province.setOfficeAreaSquaMete(formatDouble(allofficeAreaSquaMete));
+        province.setCommunicationRoomAreaSquaMete(formatDouble(allcommunicationRoomAreaSquaMete));
+        province.setOtherUsageAreaSquaMete(formatDouble(allotherUsageAreaSquaMete));
+        province.setChildren(orderList);
+        if(orderList.size()>0){
+            resultList.add(province);
+        }
+        int total = wzHouseLeaseInConService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 清单excel
+     */
+    @GetMapping("/excel")
+    @IgnoreAuth
+    public void excel(String statisticalMonth,String name,String buildingNameAlias,String city,String county, HttpServletResponse response) {
+        Map<String,Object> map1=new HashMap<>();
+        if(buildingNameAlias!=null){
+            map1.put("buildingNameAlias",buildingNameAlias);
+        }
+        if(buildingNameAlias!=null){
+            map1.put("statisticalMonth",statisticalMonth);
+        }
+        if(city!=null){
+            map1.put("city",city);
+        }
+        if(county!=null){
+            map1.put("county",county);
+        }
+
+        DateFormat df = new SimpleDateFormat("yyyyMMdd");
+        ExcelExport ee1;
+
+        //判定是闲置管理还是详情
+        if(name.contains("合同管理")){
+            ee1= new ExcelExport("房屋租入_合同管理" + df.format(new Date()));
+            responseTab1(df,ee1,map1);
+            ee1.export(response);
+        }else if(name.contains("租入用途管理")){
+            ee1= new ExcelExport("房屋租入_租入用途管理" + df.format(new Date()));
+            responseTab2(df,ee1,map1);
+            ee1.export(response);
+        }else if(name.contains("租入房屋单价前10名")){
+            ee1= new ExcelExport("房屋租入_租入房屋单价前10名" + df.format(new Date()));
+            responseTab3(df,ee1,map1);
+            ee1.export(response);
+        }else if(name.contains("租入单价与平均单价比较")){
+            ee1= new ExcelExport("房屋租入_租入单价与平均单价比较" + df.format(new Date()));
+            responseTab4(df,ee1,map1);
+            ee1.export(response);
+        }else if(name.contains("租入合同详单")){
+            ee1= new ExcelExport("房屋租入_租入合同详单" + df.format(new Date()));
+            responseTab5(df,ee1,map1);
+            ee1.export(response);
+        }
+    }
+
+    public void responseTab1(DateFormat df, ExcelExport ee1, Map<String, Object> map1){
+        //查询列表数据
+        List<WzHouseLeaseInConEntity> wzHouseContracEntityList = wzHouseLeaseInConService.queryList(map1);
+
+        Map<String,List<WzHouseLeaseInConEntity>> cityMap=new HashMap<>();
+        for (WzHouseLeaseInConEntity leaveUseVo : wzHouseContracEntityList) {
+            List<WzHouseLeaseInConEntity> list;
+            if(cityMap.get(leaveUseVo.getStandardAddressLevel2())!=null){
+                list=cityMap.get(leaveUseVo.getStandardAddressLevel2());
+                list.add(leaveUseVo);
+            }else{
+                list=new ArrayList<>();
+                list.add(leaveUseVo);
+            }
+            cityMap.put(leaveUseVo.getStandardAddressLevel2(),list);
+        }
+
+        List<WzHouseLeaseInConEntity> resultList=new ArrayList<>();
+        List<WzHouseLeaseInConEntity> cityList=new ArrayList<>();
+
+        double allContractQuantity=0l;            // 租入合同数量
+        double allNoTaxContractAmount=0l;         // 合同总金额(含税)(元)
+        double allRentArea=0l;                    // 总计面积(平米)
+        double allUnitPricePerSquareMeter=0l;     // 每平米单价
+
+        double allbusinessAreaSquaMete=0l;            //营业面积(平米)
+        double allofficeAreaSquaMete=0l;              //办公面积(平米)
+        double allcommunicationRoomAreaSquaMete=0l;  //通信机房面积(平米)
+        double allotherUsageAreaSquaMete=0l;         //其他用途面积(平米)
+
+        int cityNum=0;
+        for(Map.Entry<String,List<WzHouseLeaseInConEntity>> entry:cityMap.entrySet()){
+            List<WzHouseLeaseInConEntity> list=entry.getValue();
+
+            if (list.get(0).getStandardAddressLevel3().equals("全省")) {
+                continue;
+            }
+            //县的Map集合
+            Map<String, List<WzHouseLeaseInConEntity>> countyMap = new HashMap<>();
+            for (WzHouseLeaseInConEntity leaveUseVo : list) {
+                if (leaveUseVo.getStandardAddressLevel3() == null || leaveUseVo.getStandardAddressLevel3().equals("")) {
+                    continue;
+                }
+                if (countyMap.get(leaveUseVo.getStandardAddressLevel3()) != null) {
+                    list = countyMap.get(leaveUseVo.getStandardAddressLevel3());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getStandardAddressLevel3(), list);
+            }
+
+            double cityContractQuantity=0l;
+            double cityNoTaxContractAmount=0l;
+            double cityRentArea=0l;
+            double cityUnitPricePerSquareMeter=0l;
+
+            double citybusinessAreaSquaMete=0l;            //营业面积(平米)
+            double cityofficeAreaSquaMete=0l;              //办公面积(平米)
+            double citycommunicationRoomAreaSquaMete=0l;  //通信机房面积(平米)
+            double cityotherUsageAreaSquaMete=0l;         //其他用途面积(平米)
+            List<WzHouseLeaseInConEntity> countyList=new ArrayList<>();
+            for (Map.Entry<String, List<WzHouseLeaseInConEntity>> countyEntry : countyMap.entrySet()) {
+                double contractQuantity=0l;
+                double noTaxContractAmount=0l;
+                double rentArea=0l;
+                double unitPricePerSquareMeter=0l;
+
+                double businessAreaSquaMete=0l;            //营业面积(平米)
+                double officeAreaSquaMete=0l;              //办公面积(平米)
+                double communicationRoomAreaSquaMete=0l;  //通信机房面积(平米)
+                double otherUsageAreaSquaMete=0l;         //其他用途面积(平米)
+                for (WzHouseLeaseInConEntity leaveUseVo : countyEntry.getValue()) {
+                    contractQuantity+=leaveUseVo.getLeaInContracQuantity();
+                    noTaxContractAmount+=leaveUseVo.getTotalContrAmount();
+                    rentArea+=leaveUseVo.getTotalAreaSquaMete();
+                    unitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+                    businessAreaSquaMete+= leaveUseVo.getBusinessAreaSquaMete();
+                    officeAreaSquaMete+=leaveUseVo.getOfficeAreaSquaMete();
+                    communicationRoomAreaSquaMete+=leaveUseVo.getCommunicationRoomAreaSquaMete();
+                    otherUsageAreaSquaMete+=leaveUseVo.getOtherUsageAreaSquaMete();
+
+                    cityContractQuantity+=leaveUseVo.getLeaInContracQuantity();
+                    cityNoTaxContractAmount+=leaveUseVo.getTotalContrAmount();
+                    cityRentArea+=leaveUseVo.getTotalAreaSquaMete();
+                    cityUnitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+                    citybusinessAreaSquaMete+= leaveUseVo.getBusinessAreaSquaMete();
+                    cityofficeAreaSquaMete+=leaveUseVo.getOfficeAreaSquaMete();
+                    citycommunicationRoomAreaSquaMete+=leaveUseVo.getCommunicationRoomAreaSquaMete();
+                    cityotherUsageAreaSquaMete+=leaveUseVo.getOtherUsageAreaSquaMete();
+
+                    allContractQuantity+=leaveUseVo.getLeaInContracQuantity();
+                    allNoTaxContractAmount+=leaveUseVo.getTotalContrAmount();
+                    allRentArea+=leaveUseVo.getTotalAreaSquaMete();
+                    allUnitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+                    allbusinessAreaSquaMete+= leaveUseVo.getBusinessAreaSquaMete();
+                    allofficeAreaSquaMete+=leaveUseVo.getOfficeAreaSquaMete();
+                    allcommunicationRoomAreaSquaMete+=leaveUseVo.getCommunicationRoomAreaSquaMete();
+                    allotherUsageAreaSquaMete+=leaveUseVo.getOtherUsageAreaSquaMete();
+                }
+                WzHouseLeaseInConEntity wzHouseInCustomerEntity = new WzHouseLeaseInConEntity();
+                wzHouseInCustomerEntity.setLeaInContracQuantity(formatDouble(contractQuantity));
+                wzHouseInCustomerEntity.setStandardAddressLevel2(countyEntry.getKey());
+                wzHouseInCustomerEntity.setTotalContrAmount(formatDouble(noTaxContractAmount));
+                wzHouseInCustomerEntity.setTotalAreaSquaMete(formatDouble(rentArea));
+                wzHouseInCustomerEntity.setUnitPricePerSquareMeter(formatDouble(unitPricePerSquareMeter));
+                wzHouseInCustomerEntity.setBusinessAreaSquaMete(formatDouble(businessAreaSquaMete));
+                wzHouseInCustomerEntity.setOfficeAreaSquaMete(formatDouble(officeAreaSquaMete));
+                wzHouseInCustomerEntity.setCommunicationRoomAreaSquaMete(formatDouble(communicationRoomAreaSquaMete));
+                wzHouseInCustomerEntity.setOtherUsageAreaSquaMete(formatDouble(otherUsageAreaSquaMete));
+                countyList.add(wzHouseInCustomerEntity);
+            }
+            List<WzHouseLeaseInConEntity> orderCountyList=new ArrayList<>();
+            try{
+                //对countList 进行排序
+                String city=list.get(0).getStandardAddressLevel2();
+                if(city.contains("市")){
+                    city=city.split("市")[0];
+                }
+                OtnAreaEntity area=otnAreaService.queryObject(city);
+                List<OtnAreaEntity> countyAreaList=otnAreaService.getCityOption(area.getId());
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (WzHouseLeaseInConEntity wzCity : countyList) {
+                        if(wzCity.getStandardAddressLevel2().contains(otnAreaEntity.getName())){
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            }catch (Exception e){
+                orderCountyList=countyList;
+                e.printStackTrace();
+            }
+
+            WzHouseLeaseInConEntity wzHouseInCustomerEntity = new WzHouseLeaseInConEntity();
+            wzHouseInCustomerEntity.setStandardAddressLevel2(entry.getKey());
+            wzHouseInCustomerEntity.setLeaInContracQuantity(formatDouble(cityContractQuantity));
+            wzHouseInCustomerEntity.setTotalContrAmount(formatDouble(cityNoTaxContractAmount));
+            wzHouseInCustomerEntity.setTotalAreaSquaMete(formatDouble(cityRentArea));
+            wzHouseInCustomerEntity.setBusinessAreaSquaMete(formatDouble(citybusinessAreaSquaMete));
+            wzHouseInCustomerEntity.setOfficeAreaSquaMete(formatDouble(cityofficeAreaSquaMete));
+            wzHouseInCustomerEntity.setCommunicationRoomAreaSquaMete(formatDouble(citycommunicationRoomAreaSquaMete));
+            wzHouseInCustomerEntity.setOtherUsageAreaSquaMete(formatDouble(cityotherUsageAreaSquaMete));
+            double num=cityUnitPricePerSquareMeter/countyMap.size();
+            cityNum+=countyMap.size();
+            wzHouseInCustomerEntity.setUnitPricePerSquareMeter(formatDouble(num));
+            wzHouseInCustomerEntity.setChildren(orderCountyList);
+            cityList.add(wzHouseInCustomerEntity);
+        }
+
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<WzHouseLeaseInConEntity> orderList=new ArrayList<>();
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (WzHouseLeaseInConEntity wzCity : cityList) {
+                if(wzCity.getStandardAddressLevel2().contains(otnAreaEntity.getName())){
+                    orderList.add(wzCity);
+                }
+            }
+        }
+
+        WzHouseLeaseInConEntity province=new WzHouseLeaseInConEntity();
+        province.setStandardAddressLevel2("全省");
+        province.setLeaInContracQuantity(formatDouble(allContractQuantity));
+        province.setTotalContrAmount(formatDouble(allNoTaxContractAmount));
+        province.setTotalAreaSquaMete(formatDouble(allRentArea));
+        if(cityList.size()!=0){
+            province.setUnitPricePerSquareMeter(formatDouble(allUnitPricePerSquareMeter/cityNum ));
+        }
+        province.setBusinessAreaSquaMete(formatDouble(allbusinessAreaSquaMete));
+        province.setOfficeAreaSquaMete(formatDouble(allofficeAreaSquaMete));
+        province.setCommunicationRoomAreaSquaMete(formatDouble(allcommunicationRoomAreaSquaMete));
+        province.setOtherUsageAreaSquaMete(formatDouble(allotherUsageAreaSquaMete));
+        province.setChildren(orderList);
+        resultList.add(province);
+
+
+        List<Object> colList=new ArrayList();;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+
+            if(resultList.get(i).getStandardAddressLevel2().contains("省")){
+                colList = new ArrayList();
+                colList.add(resultList.get(i).getStandardAddressLevel2());
+                colList.add("");
+                colList.add("");
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getLeaInContracQuantity(),false));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getTotalContrAmount(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getUnitPricePerSquareMeter(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBusinessAreaSquaMete(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getOfficeAreaSquaMete(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getCommunicationRoomAreaSquaMete(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getOtherUsageAreaSquaMete(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getTotalAreaSquaMete(),true));
+                allList.add(colList.toArray());
+
+                //处理城市的
+                List<WzHouseLeaseInConEntity> cityList1=resultList.get(i).getChildren();
+                for (WzHouseLeaseInConEntity floorNoUserVo : cityList1) {
+                    colList = new ArrayList();
+                    colList.add("");
+                    colList.add(floorNoUserVo.getStandardAddressLevel2());
+                    colList.add("");
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getLeaInContracQuantity(),false));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getTotalContrAmount(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getUnitPricePerSquareMeter(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getBusinessAreaSquaMete(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getOfficeAreaSquaMete(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getCommunicationRoomAreaSquaMete(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getOtherUsageAreaSquaMete(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getTotalAreaSquaMete(),true));
+                    allList.add(colList.toArray());
+                    //处理县城的
+                    List<WzHouseLeaseInConEntity> countyList1 = floorNoUserVo.getChildren();
+                    for (WzHouseLeaseInConEntity noUserVo : countyList1) {
+                        colList = new ArrayList();
+                        colList.add("");
+                        colList.add("");
+                        colList.add(noUserVo.getStandardAddressLevel2());
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getLeaInContracQuantity(),false));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getTotalContrAmount(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getUnitPricePerSquareMeter(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getBusinessAreaSquaMete(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getOfficeAreaSquaMete(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getCommunicationRoomAreaSquaMete(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getOtherUsageAreaSquaMete(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getTotalAreaSquaMete(),true));
+                        allList.add(colList.toArray());
+                    }
+                }
+            }
+        }
+        String[] header = new String[]{
+                "资产所属单位(一级)",
+                "资产所属单位(二级)",
+                "资产所属单位(三级)",
+                "租入合同数量",
+                "合同年金额(含税) (元)",
+                "每平米单价(元)",
+                "营业面积(平米)",
+                "办公面积(平米)",
+                "通信机房面积(元)",
+                "其他用途面积(平米)",
+                "总计面积(平米)"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+
+    public void responseTab2(DateFormat df, ExcelExport ee1, Map<String, Object> map1){
+        //查询列表数据
+        List<WzHouseUseEntity> wzHouseContracEntityList = wzHouseUseService.queryList(map1);
+
+        Map<String,List<WzHouseUseEntity>> cityMap=new HashMap<>();
+        for (WzHouseUseEntity leaveUseVo : wzHouseContracEntityList) {
+            List<WzHouseUseEntity> list;
+            if(cityMap.get(leaveUseVo.getCity())!=null){
+                list=cityMap.get(leaveUseVo.getCity());
+                list.add(leaveUseVo);
+            }else{
+                list=new ArrayList<>();
+                list.add(leaveUseVo);
+            }
+            cityMap.put(leaveUseVo.getCity(),list);
+        }
+
+        List<WzHouseUseVo> resultList=new ArrayList<>();
+        List<WzHouseUseVo> cityList=new ArrayList<>();
+
+        int allyingYe=0;
+        int allbanGong=0;
+        int alltongXin=0;
+        int allother=0;
+        int allall=0;
+        for(Map.Entry<String,List<WzHouseUseEntity>> entry:cityMap.entrySet()){
+            List<WzHouseUseEntity> list=entry.getValue();
+
+            if (list.get(0).getCounty().equals("全省")) {
+                continue;
+            }
+            //县的Map集合
+            Map<String, List<WzHouseUseEntity>> countyMap = new HashMap<>();
+            for (WzHouseUseEntity leaveUseVo : list) {
+                if (leaveUseVo.getCounty() == null || leaveUseVo.getCounty().equals("")) {
+                    continue;
+                }
+                if (countyMap.get(leaveUseVo.getCounty()) != null) {
+                    list = countyMap.get(leaveUseVo.getCounty());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getCounty(), list);
+            }
+
+            int cityyingYe=0;
+            int citybanGong=0;
+            int citytongXin=0;
+            int cityother=0;
+            int cityall=0;
+            List<WzHouseUseVo> countyList=new ArrayList<>();
+            for (Map.Entry<String, List<WzHouseUseEntity>> countyEntry : countyMap.entrySet()) {
+                int yingYe=0;
+                int banGong=0;
+                int tongXin=0;
+                int other=0;
+                int all=0;
+                for (WzHouseUseEntity leaveUseVo : countyEntry.getValue()) {
+                    if(leaveUseVo.getRentalUse()!=null){
+                        if(leaveUseVo.getRentalUse().equals("通信设施机房")){
+                            tongXin+=1;
+                            citytongXin+=1;
+                            alltongXin+=1;
+                        }
+                        else if(leaveUseVo.getRentalUse().equals("营业")){
+                            yingYe+=1;
+                            cityyingYe+=1;
+                            allyingYe+=1;
+                        }
+                        else if(leaveUseVo.getRentalUse().equals("其他租入用途")){
+                            other+=1;
+                            cityother+=1;
+                            allother+=1;
+                        }
+                        else if(leaveUseVo.getRentalUse().equals("办公")){
+                            banGong+=1;
+                            citybanGong+=1;
+                            allbanGong+=1;
+                        }
+                        all+=1;
+                        cityall+=1;
+                        allall+=1;
+                    }
+                }
+                WzHouseUseVo wzHouseInCustomerEntity = new WzHouseUseVo();
+                wzHouseInCustomerEntity.setYingYe(yingYe);
+                wzHouseInCustomerEntity.setCity(countyEntry.getKey());
+                wzHouseInCustomerEntity.setBanGong(banGong);
+                wzHouseInCustomerEntity.setAll(all);
+                wzHouseInCustomerEntity.setTongXin(tongXin);
+                wzHouseInCustomerEntity.setOther(other);
+                countyList.add(wzHouseInCustomerEntity);
+            }
+            List<WzHouseUseVo> orderCountyList=new ArrayList<>();
+            try{
+                //对countList 进行排序
+                String city=list.get(0).getCity();
+                if(city.contains("市")){
+                    city=city.split("市")[0];
+                }
+                OtnAreaEntity area=otnAreaService.queryObject(city);
+                List<OtnAreaEntity> countyAreaList=otnAreaService.getCityOption(area.getId());
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (WzHouseUseVo wzCity : countyList) {
+                        if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            }catch (Exception e){
+                orderCountyList=countyList;
+                e.printStackTrace();
+            }
+
+            WzHouseUseVo wzHouseInCustomerEntity = new WzHouseUseVo();
+            wzHouseInCustomerEntity.setCity(entry.getKey());
+            wzHouseInCustomerEntity.setYingYe(cityyingYe);
+            wzHouseInCustomerEntity.setBanGong(citybanGong);
+            wzHouseInCustomerEntity.setAll(cityall);
+            wzHouseInCustomerEntity.setTongXin(citytongXin);
+            wzHouseInCustomerEntity.setOther(cityother);
+            wzHouseInCustomerEntity.setChildren(orderCountyList);
+            cityList.add(wzHouseInCustomerEntity);
+        }
+
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<WzHouseUseVo> orderList=new ArrayList<>();
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (WzHouseUseVo wzCity : cityList) {
+                if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                    orderList.add(wzCity);
+                }
+            }
+        }
+
+        WzHouseUseVo province=new WzHouseUseVo();
+        province.setCity("全省");
+        province.setYingYe(allyingYe);
+        province.setBanGong(allbanGong);
+        province.setAll(allall);
+        province.setTongXin(alltongXin);
+        province.setOther(allother);
+        province.setChildren(orderList);
+        resultList.add(province);
+
+        List<Object> colList=new ArrayList();;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+
+            if(resultList.get(i).getCity().contains("省")){
+                colList = new ArrayList();
+                colList.add(resultList.get(i).getCity());
+                colList.add("");
+                colList.add("");
+                colList.add(resultList.get(i).getYingYe());
+                colList.add(resultList.get(i).getBanGong());
+                colList.add(resultList.get(i).getTongXin());
+                colList.add(resultList.get(i).getOther());
+                colList.add(resultList.get(i).getAll());
+                allList.add(colList.toArray());
+
+                //处理城市的
+                List<WzHouseUseVo> cityList1=resultList.get(i).getChildren();
+                for (WzHouseUseVo floorNoUserVo : cityList1) {
+                    colList = new ArrayList();
+                    colList.add("");
+                    colList.add(floorNoUserVo.getCity());
+                    colList.add("");
+                    colList.add(floorNoUserVo.getYingYe());
+                    colList.add(floorNoUserVo.getBanGong());
+                    colList.add(floorNoUserVo.getTongXin());
+                    colList.add(floorNoUserVo.getOther());
+                    colList.add(floorNoUserVo.getAll());
+                    allList.add(colList.toArray());
+                    //处理县城的
+                    List<WzHouseUseVo> countyList1 = floorNoUserVo.getChildren();
+                    for (WzHouseUseVo noUserVo : countyList1) {
+                        colList = new ArrayList();
+                        colList.add("");
+                        colList.add("");
+                        colList.add(noUserVo.getCity());
+                        colList.add(noUserVo.getYingYe());
+                        colList.add(noUserVo.getBanGong());
+                        colList.add(noUserVo.getTongXin());
+                        colList.add(noUserVo.getOther());
+                        colList.add(noUserVo.getAll());
+                        allList.add(colList.toArray());
+                    }
+                }
+            }
+        }
+        String[] header = new String[]{
+                "资产所属单位(一级)",
+                "资产所属单位(二级)",
+                "资产所属单位(三级)",
+                "营业",
+                "办公",
+                "通信设施机房",
+                "其他租入用途",
+                "总计"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+
+    }
+
+    public void responseTab3(DateFormat df, ExcelExport ee1, Map<String, Object> map1){
+
+        List<WzHouseContractTopEntity> resultList = wzHouseContractTopService.queryList(map1);
+
+        List<Object> colList=new ArrayList();;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+            colList = new ArrayList();
+            colList.add(resultList.get(i).getCity());
+            colList.add(resultList.get(i).getCounty());
+            colList.add(resultList.get(i).getUseTheProLine());
+            colList.add(resultList.get(i).getLeaseInPracticalUse());
+            colList.add(resultList.get(i).getDescriptionOfOtherUsesOfTheLease());
+            colList.add(resultList.get(i).getCityArea());
+            colList.add(resultList.get(i).getDistrict());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getContractAmountIncludingTax(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getRentalBuildingArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getHireTime(),false));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getTotalMonthlyRent(),true));
+            colList.add(resultList.get(i).getContractNumber());
+            colList.add(resultList.get(i).getContractName());
+            allList.add(colList.toArray());
+        }
+        String[] header = new String[]{
+                "使用单位隶属的地市级公司",
+                "使用单位隶属的区县级公司",
+                "使用专业线",
+                "租入实际用途",
+                "租入其他用途说明",
+                "城市区域",
+                "地段",
+                "合同总金额(含税)(元)",
+                "租入建筑面积(平米)",
+                "租期(年)",
+                "每平米月租金",
+                "合同编号",
+                "合同名称"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+
+    public void responseTab4(DateFormat df, ExcelExport ee1, Map<String, Object> map1){
+        List<WzHouseContractCompareEntity> resultList = wzHouseContractCompareService.queryList(map1);
+
+        List<Object> colList=new ArrayList();;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+            colList = new ArrayList();
+            colList.add(resultList.get(i).getCity());
+            colList.add(resultList.get(i).getCounty());
+            colList.add(resultList.get(i).getUseTheProLine());
+            colList.add(resultList.get(i).getLeaseInPracticalUse());
+            colList.add(resultList.get(i).getDescriptionOfOtherUsesOfTheLease());
+            colList.add(resultList.get(i).getCityArea());
+            colList.add(resultList.get(i).getDistrict());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getContractAmountIncludingTax(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getRentalBuildingArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getHireTime(),false));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getTotalMonthlyRent(),true));
+            colList.add(resultList.get(i).getContractNumber());
+            colList.add(resultList.get(i).getContractName());
+            allList.add(colList.toArray());
+        }
+        String[] header = new String[]{
+                "使用单位隶属的地市级公司",
+                "使用单位隶属的区县级公司",
+                "使用专业线",
+                "租入实际用途",
+                "租入其他用途说明",
+                "城市区域",
+                "地段",
+                "合同总金额(含税)(元)",
+                "租入建筑面积(平米)",
+                "租期(年)",
+                "每平米月租金",
+                "合同编号",
+                "合同名称"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+
+    public void responseTab5(DateFormat df, ExcelExport ee1, Map<String, Object> map1){
+
+        List<WzHouseContractInEntity> resultList = wzHouseContractInService.queryList(map1);
+
+        List<Object> colList=new ArrayList();;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+            colList = new ArrayList();
+            colList.add(resultList.get(i).getImportTime());
+            colList.add(resultList.get(i).getInvestmentEntities());
+            colList.add(resultList.get(i).getTheNameOfTheRentedProperty());
+            colList.add(resultList.get(i).getFormOfLease());
+            colList.add(resultList.get(i).getStandardAddressLevel_1());
+            colList.add(resultList.get(i).getStandardAddressLevel_2());
+            colList.add(resultList.get(i).getStandardAddressLevel_3());
+            colList.add(resultList.get(i).getHouseNumber());
+            colList.add(resultList.get(i).getCityArea());
+            colList.add(resultList.get(i).getDistrict());
+            colList.add(resultList.get(i).getBuildingLongitude());
+            colList.add(resultList.get(i).getBuildingDimension());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getRentalBuildingArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getRentalUsableArea(),true));
+            colList.add(resultList.get(i).getInvestmentEntities());
+            colList.add(resultList.get(i).getUseTheUnitsHierarchy());
+            colList.add(resultList.get(i).getCity());
+            colList.add(resultList.get(i).getCounty());
+            colList.add(resultList.get(i).getUseTheProLine());
+            colList.add(resultList.get(i).getLeaseInPracticalUse());
+            colList.add(resultList.get(i).getDescriptionOfOtherUsesOfTheLease());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getSelfUseBuildingArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getSubleaseBuildingArea(),true));
+            colList.add(resultList.get(i).getFirstHireTime());
+            colList.add(resultList.get(i).getUseDepartments());
+            colList.add(resultList.get(i).getContacts());
+            colList.add(resultList.get(i).getContactNumber());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getTotalMonthlyRent(),true));
+            colList.add(resultList.get(i).getContractNumber());
+            colList.add(resultList.get(i).getContractName());
+            colList.add(resultList.get(i).getContractType());
+            colList.add(resultList.get(i).getSignTime());
+            colList.add(resultList.get(i).getOurContractingEntity());
+            colList.add(resultList.get(i).getLessorName());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getContractAmountIncludingTax(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getValueAddedTaxAmount(),true));
+            colList.add(resultList.get(i).getEffectiveTimeOfContract());
+            colList.add(resultList.get(i).getTerminationTimeOfContract());
+            colList.add(resultList.get(i).getUndertakingDepartment());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getSelfUseArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getIdleUseArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getRentalUseArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getRentalUsableArea(),true));
+            allList.add(colList.toArray());
+        }
+        String[] header = new String[]{
+                "导入时间",
+                "房屋所有权人属性",
+                "租入房屋名称",
+                "租入形式",
+                "标准地址(一级)",
+                "标准地址(二级)",
+                "标准地址(三级)",
+                "街/路/村门牌号",
+                "城市区域",
+                "地段",
+                "地址经度坐标",
+                "地址纬度坐标",
+                "租入建筑面积(平米)",
+                "租入使用面积(平米)",
+                "投资主体",
+                "使用单位层级",
+                "使用单位隶属的省级公司",
+                "使用单位隶属的地市级公司",
+                "使用单位隶属的区县级公司",
+                "使用专业线",
+                "租入实际用途",
+                "租入其他用途说明",
+                "自用建筑面积(平米)",
+                "转租建筑面积(平米)",
+                "首次租用时间",
+                "使用部门",
+                "联系人",
+                "联系电话",
+                "月租金(不含税)(元)",
+                "合同编号",
+                "合同名称",
+                "合同类型",
+                "签订时间",
+                "我方签约主体",
+                "出租方名称",
+                "合同总金额(含税)(元)",
+                "增值税金额(元)",
+                "租入开始时间(合同生效时间)",
+                "租入终止时间(合同终止时间)",
+                "承办部门",
+                "自用面积(使用)",
+                "闲置面积(使用)",
+                "出租面积(使用)",
+                "不可使用面积(使用)"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+
+    public double formatDouble(double num){
+        double avera=0l;
+        try{
+            DecimalFormat format2 = new DecimalFormat("#.00");
+            String str2 = format2.format(num);
+            avera = Double.parseDouble(str2);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return avera;
+    }
+
+}

+ 68 - 0
src/main/java/com/example/controller/WzHouseMaintController.java

@@ -0,0 +1,68 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzHouseMaintEntity;
+import com.example.service.WzHouseMaintService;
+import com.example.service.WzOtnAreaService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/WzHouseMaint")
+public class WzHouseMaintController {
+
+    @Autowired
+    private WzHouseMaintService wzHouseMaintService;
+    @Autowired
+    private WzOtnAreaService otnAreaService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseMaintEntity> list = wzHouseMaintService.queryList(pageMap.getMap());
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList = otnAreaService.getCityOption(0l);
+        List<WzHouseMaintEntity> orderList = new ArrayList<>();
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (WzHouseMaintEntity wzCity : list) {
+                if (wzCity.getCity().contains(otnAreaEntity.getName())) {
+                    wzCity.setAll();
+                    orderList.add(wzCity);
+                }
+            }
+        }
+        int total = wzHouseMaintService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(orderList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+
+    public double formatDouble(double num){
+        double avera=0l;
+        try{
+            DecimalFormat format2 = new DecimalFormat("#.00");
+            String str2 = format2.format(num);
+            avera = Double.parseDouble(str2);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return avera;
+    }
+
+}

+ 1074 - 0
src/main/java/com/example/controller/WzHouseMaintenaCostController.java

@@ -0,0 +1,1074 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzHouseMaintEntity;
+import com.example.entity.WzHouseMaintenaCostEntity;
+import com.example.entity.WzStrategyEntity;
+import com.example.entity.vo.DailyModifyVo;
+import com.example.entity.vo.HighFrequencyVo;
+import com.example.entity.vo.housecost.HouseCostVo;
+import com.example.service.WzHouseMaintService;
+import com.example.service.WzHouseMaintenaCostService;
+import com.example.service.WzOtnAreaService;
+import com.example.service.WzStrategyService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import com.example.utils.excel.ExcelExport;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/house-car/house/dist/api/wzHouseMaintenaCost")
+public class WzHouseMaintenaCostController {
+
+    @Autowired
+    private WzOtnAreaService otnAreaService;
+    @Autowired
+    private WzHouseMaintenaCostService wzHouseMaintenaCostService;
+    @Autowired
+    private WzHouseMaintService wzHouseMaintService;
+    @Autowired
+    private WzStrategyService wzStrategyService;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseMaintenaCostEntity> resultList = wzHouseMaintenaCostService.queryList(query);
+        Query query1 = new Query(pageMap);
+        int total = wzHouseMaintenaCostService.queryTotal(query1);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list1")
+    @IgnoreAuth
+    public R list1(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseMaintenaCostEntity> resultList = wzHouseMaintenaCostService.queryList1(query);
+        //每平方米维修单价
+        for (WzHouseMaintenaCostEntity wzHouseMaintenaCostEntity : resultList) {
+            wzHouseMaintenaCostEntity.setAveragePrice(formatDouble(wzHouseMaintenaCostEntity.getAveragePrice()));
+        }
+        Query query1 = new Query(pageMap);
+        int total = wzHouseMaintenaCostService.queryTotal1(query1);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+
+    @RequestMapping("/queryVoList")
+    @IgnoreAuth
+    public R queryVoList(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseMaintenaCostEntity> resultList = wzHouseMaintenaCostService.queryList(query);
+        int total = wzHouseMaintenaCostService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/queryEchart")
+    @IgnoreAuth
+    public R queryEchart(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        List<WzHouseMaintenaCostEntity> alllist = wzHouseMaintenaCostService.queryList1(pageMap.getMap());
+        //全省节点
+        HouseCostVo province = new HouseCostVo();
+        province.setCounty("全省");
+        province.setCity("全省");
+
+        double aProjectCost = 0l;
+        double aSmallCost = 0l;
+        double aWarnCost = 0l;
+        double aProCost = 0l;
+        double aOtherCost = 0l;
+        double aAllCost = 0l;
+        //按地市进行划分
+        Map<String, List<WzHouseMaintenaCostEntity>> cityMap = new HashMap<>();
+        for (WzHouseMaintenaCostEntity entity : alllist) {
+            if (entity.getCity() == null) continue;
+            List<WzHouseMaintenaCostEntity> list;
+            if (cityMap.get(entity.getCity()) != null) {
+                list = cityMap.get(entity.getCity());
+                list.add(entity);
+            } else {
+                list = new ArrayList<>();
+                list.add(entity);
+            }
+            cityMap.put(entity.getCity(), list);
+        }
+        //按区进行划分
+        List<HouseCostVo> resultList = new ArrayList<>();
+        List<HouseCostVo> cityList = new ArrayList<>();
+        for (Map.Entry<String, List<WzHouseMaintenaCostEntity>> entry : cityMap.entrySet()) {
+            List<WzHouseMaintenaCostEntity> list = entry.getValue();
+            //县的Map集合
+            Map<String, List<WzHouseMaintenaCostEntity>> countyMap = new HashMap<>();
+            for (WzHouseMaintenaCostEntity leaveUseVo : list) {
+                if (countyMap.get(leaveUseVo.getCounty()) != null) {
+                    list = countyMap.get(leaveUseVo.getCounty());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getCounty(), list);
+            }
+
+            List<HouseCostVo> countyList = new ArrayList<>();
+            double cityProjectCost = 0l;
+            double citySmallCost = 0l;
+            double cityWarnCost = 0l;
+            double cityProCost = 0l;
+            double cityOtherCost = 0l;
+            double cityAllCost = 0l;
+            for (Map.Entry<String, List<WzHouseMaintenaCostEntity>> countyEntry : countyMap.entrySet()) {
+                double projectCost = 0l;
+                double smallCost = 0l;
+                double warnCost = 0l;
+                double proCost = 0l;
+                double otherCost = 0l;
+                double allCost = 0l;
+
+                HouseCostVo county = new HouseCostVo();
+                for (WzHouseMaintenaCostEntity leaveUseVo : countyEntry.getValue()) {
+                    county.setCity(leaveUseVo.getCounty());
+                    if (leaveUseVo.getRepairType().equals("项目制维修")) {
+                        projectCost += leaveUseVo.getErpCreditedAmount();
+                        cityProjectCost += leaveUseVo.getErpCreditedAmount();
+                        aProjectCost += leaveUseVo.getErpCreditedAmount();
+                        allCost +=leaveUseVo.getErpCreditedAmount();
+                        cityAllCost +=leaveUseVo.getErpCreditedAmount();
+                        aAllCost +=leaveUseVo.getErpCreditedAmount();
+                    } else if (leaveUseVo.getRepairType().equals("零星维修")) {
+                        smallCost += leaveUseVo.getErpCreditedAmount();
+                        citySmallCost += leaveUseVo.getErpCreditedAmount();
+                        aSmallCost += leaveUseVo.getErpCreditedAmount();
+                        allCost +=leaveUseVo.getErpCreditedAmount();
+                        cityAllCost +=leaveUseVo.getErpCreditedAmount();
+                        aAllCost +=leaveUseVo.getErpCreditedAmount();
+                    } else if (leaveUseVo.getRepairType().equals("应急维修")) {
+                        warnCost += leaveUseVo.getErpCreditedAmount();
+                        cityWarnCost += leaveUseVo.getErpCreditedAmount();
+                        aWarnCost += leaveUseVo.getErpCreditedAmount();
+                        allCost +=leaveUseVo.getErpCreditedAmount();
+                        cityAllCost +=leaveUseVo.getErpCreditedAmount();
+                        aAllCost +=leaveUseVo.getErpCreditedAmount();
+                    } else if (leaveUseVo.getRepairType().equals("安防费用")) {
+                        proCost += leaveUseVo.getErpCreditedAmount();
+                        cityProCost += leaveUseVo.getErpCreditedAmount();
+                        aProCost += leaveUseVo.getErpCreditedAmount();
+                        allCost +=leaveUseVo.getErpCreditedAmount();
+                        cityAllCost +=leaveUseVo.getErpCreditedAmount();
+                        aAllCost +=leaveUseVo.getErpCreditedAmount();
+                    } else {
+                        if(leaveUseVo.getRepairType().contains("预提冲销")){
+                            continue;
+                        }
+                        otherCost += leaveUseVo.getErpCreditedAmount();
+                        cityOtherCost += leaveUseVo.getErpCreditedAmount();
+                        aOtherCost += leaveUseVo.getErpCreditedAmount();
+                    }
+//                    allCost += projectCost + smallCost + warnCost + proCost + otherCost;
+//                    cityAllCost += cityProjectCost + citySmallCost + cityWarnCost + cityProCost + cityOtherCost;
+//                    aAllCost += aProjectCost + aSmallCost + aWarnCost + aProCost + aOtherCost;
+
+                }
+                county.setProjectCost(formatDouble(projectCost));
+                county.setProCost(formatDouble(proCost));
+                county.setOtherCost(formatDouble(otherCost));
+                county.setSmallCost(formatDouble(smallCost));
+                county.setWarnCost(formatDouble(warnCost));
+                county.setAllCost(formatDouble(allCost));
+                countyList.add(county);
+            }
+
+            List<HouseCostVo> orderCountyList = new ArrayList<>();
+            try {
+                //对countList 进行排序
+                String city = list.get(0).getCity();
+                if (city.contains("市")) {
+                    city = city.split("市")[0];
+                }
+                OtnAreaEntity area = otnAreaService.queryObject(city);
+                List<OtnAreaEntity> countyAreaList = otnAreaService.getCityOption(area.getId());
+                int i=0;
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (HouseCostVo wzCity : countyList) {
+                        if (otnAreaEntity.getName().equals(wzCity.getCity())) {
+                            i++;
+                            wzCity.setFlag(i%2==0);
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            } catch (Exception e) {
+                orderCountyList = countyList;
+                e.printStackTrace();
+            }
+
+            HouseCostVo parent = new HouseCostVo();
+            parent.setProCost(formatDouble(cityProCost));
+            parent.setWarnCost(formatDouble(cityWarnCost));
+            parent.setProjectCost(formatDouble(cityProjectCost));
+            parent.setOtherCost(formatDouble(cityOtherCost));
+            parent.setSmallCost(formatDouble(citySmallCost));
+            parent.setAllCost(formatDouble(cityAllCost));
+            parent.setCity(list.get(0).getCity());
+            parent.setChildren(orderCountyList);
+            cityList.add(parent);
+        }
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList = otnAreaService.getCityOption(0l);
+        List<HouseCostVo> orderList = new ArrayList<>();
+        int i=0;
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (HouseCostVo wzCity : cityList) {
+                if (wzCity.getCity().contains(otnAreaEntity.getName())) {
+                    wzCity.setFlag(i%2==0);
+                    orderList.add(wzCity);
+                    i++;
+                }
+            }
+        }
+
+        province.setChildren(orderList);
+        province.setAllCost(formatDouble(aAllCost));
+        province.setSmallCost(formatDouble(aSmallCost));
+        province.setOtherCost(formatDouble(aOtherCost));
+        province.setProjectCost(formatDouble(aProjectCost));
+        province.setProCost(formatDouble(aProCost));
+        province.setWarnCost(formatDouble(aWarnCost));
+        resultList.add(province);
+
+        PageUtils pageUtil = new PageUtils(resultList, 0, 10, 10);
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 同维修内容频次统计
+     */
+    @RequestMapping("/queryHighFrequency")
+    @IgnoreAuth
+    public R queryHighFrequency(@RequestBody PageMap pageMap) {
+        Query query = new Query(pageMap);
+        List<HighFrequencyVo> highPriceList = wzHouseMaintenaCostService.queryHighFrequency(query);
+
+        Query query1 = new Query(pageMap);
+        query1.put("sidx","num");
+        query1.put("order","desc");
+        query1.put("limit",20);
+        query1.put("page",1);
+        query1.put("offset",0);
+        List<HighFrequencyVo> allhighPriceList = wzHouseMaintenaCostService.queryHighFrequency(query1);
+
+        int i=1;
+        for (HighFrequencyVo highFrequencyVo : allhighPriceList) {
+            highFrequencyVo.setOrder(i);
+            i++;
+        }
+        for (HighFrequencyVo highFrequencyVo : highPriceList) {
+            for (HighFrequencyVo item : allhighPriceList) {
+                if(item.getBuildingAlias()==null&&highFrequencyVo.getBuildingAlias()!=null){
+                    continue;
+                }
+                if(item.getBuildingAlias()!=null&&highFrequencyVo.getBuildingAlias()==null){
+                    continue;
+                }
+                if(item.getCity()==null&&highFrequencyVo.getCity()!=null){
+                    continue;
+                }
+                if(item.getCity()!=null&&highFrequencyVo.getCity()==null){
+                    continue;
+                }
+                if(item.getRepairType()==null&&highFrequencyVo.getRepairType()!=null){
+                    continue;
+                }
+                if(item.getRepairType()!=null&&highFrequencyVo.getRepairType()==null){
+                    continue;
+                }
+               if(((item.getCity()==null&&highFrequencyVo.getCity()==null)||item.getCity().equals(highFrequencyVo.getCity()))
+                       &&((item.getBuildingAlias()==null&&highFrequencyVo.getBuildingAlias()==null)||item.getBuildingAlias().equals(highFrequencyVo.getBuildingAlias()))
+                       &&((item.getRepairType()==null&&highFrequencyVo.getRepairType()==null)||item.getRepairType().equals(highFrequencyVo.getRepairType()))){
+                   highFrequencyVo.setOrder(item.getOrder());
+                   break;
+               }
+            }
+        }
+        PageUtils pageUtil = new PageUtils(highPriceList, 20, 10, 10);
+        return R.ok().put("page", pageUtil);
+    }
+
+
+    /**
+     * 清单excel
+     */
+    @GetMapping("/excel")
+    @IgnoreAuth
+    public void excel(String name,
+                      String statisticalMonth,
+                      String buildingNameAlias,
+                      String investmentEntity,
+                      String city,
+                      String county,
+                      String code,
+                      HttpServletResponse response) {
+
+        Map<String, Object> map = new HashMap<>();
+        if(statisticalMonth==null||statisticalMonth.equals("")||statisticalMonth.equals("undefined")){
+        }else{
+            map.put("statisticalMonth",statisticalMonth);
+        }
+        if(investmentEntity==null||investmentEntity.equals("")||investmentEntity.equals("undefined")){
+        }else{
+            map.put("investmentEntity",investmentEntity);
+        }
+        if(code==null||code.equals("")||code.equals("undefined")){
+        }else{
+            map.put("code",code);
+        }
+        if (buildingNameAlias != null) {
+            map.put("buildingNameAlias", buildingNameAlias);
+        }
+        if (city != null) {
+            map.put("city", city);
+        }
+        if (county != null) {
+            map.put("county", county);
+        }
+
+        DateFormat df = new SimpleDateFormat("yyyyMMdd");
+        ExcelExport ee1 = new ExcelExport("报表" + df.format(new Date()));
+        //判定是闲置管理还是详情
+        if (name.contains("相同维修频次统计")) {
+            ee1 = new ExcelExport("维修异常监控_相同维修频次统计" + df.format(new Date()));
+            responseTab1(df, ee1, map);
+            ee1.export(response);
+        } else if (name.contains("高总价统计")) {
+            ee1 = new ExcelExport("维修异常监控_高总价统计" + df.format(new Date()));
+            responseTab2(df,ee1,map);
+            ee1.export(response);
+        } else if (name.contains("高额日常零星维修")) {
+            ee1 = new ExcelExport("维修异常监控_高额日常零星维修" + df.format(new Date()));
+            responseTab3(df,ee1,map);
+            ee1.export(response);
+        } else if (name.contains("不可用发生维修费")) {
+            ee1 = new ExcelExport("维修异常监控_闲置+不可用发生维修费" + df.format(new Date()));
+            responseTab4(df,ee1,map);
+            ee1.export(response);
+        } else if (name.contains("房产3年无维修")) {
+            ee1 = new ExcelExport("维修异常监控_房产3年无维修" + df.format(new Date()));
+            responseTab5(df,ee1,map);
+            ee1.export(response);
+        } else if (name.contains("维修费统计")){
+            ee1 = new ExcelExport("房屋维修_维修费统计" + df.format(new Date()));
+            responseTab6(df,ee1,map);
+            ee1.export(response);
+        }else if (name.contains("维修费详表")){
+            ee1 = new ExcelExport("房屋维修_维修费详情" + df.format(new Date()));
+            responseTab7(df,ee1,map);
+            ee1.export(response);
+        }
+    }
+
+    public void responseTab1(DateFormat df, ExcelExport ee1, Map<String, Object> map1) {
+        Query query = new Query(map1);
+        List<HighFrequencyVo> resultList = wzHouseMaintenaCostService.queryHighFrequency(query);
+
+        Query query1 = new Query(map1);
+        query1.put("sidx","num");
+        query1.put("order","desc");
+        query1.put("limit",20);
+        query1.put("page",1);
+        query1.put("offset",0);
+        List<HighFrequencyVo> allhighPriceList = wzHouseMaintenaCostService.queryHighFrequency(query1);
+
+        int j=1;
+        for (HighFrequencyVo highFrequencyVo : allhighPriceList) {
+            highFrequencyVo.setOrder(j);
+            j++;
+        }
+        for (HighFrequencyVo highFrequencyVo : resultList) {
+            for (HighFrequencyVo item : allhighPriceList) {
+                if(item.getBuildingAlias()==null&&highFrequencyVo.getBuildingAlias()!=null){
+                    continue;
+                }
+                if(item.getBuildingAlias()!=null&&highFrequencyVo.getBuildingAlias()==null){
+                    continue;
+                }
+                if(item.getCity()==null&&highFrequencyVo.getCity()!=null){
+                    continue;
+                }
+                if(item.getCity()!=null&&highFrequencyVo.getCity()==null){
+                    continue;
+                }
+                if(item.getRepairType()==null&&highFrequencyVo.getRepairType()!=null){
+                    continue;
+                }
+                if(item.getRepairType()!=null&&highFrequencyVo.getRepairType()==null){
+                    continue;
+                }
+                if(((item.getCity()==null&&highFrequencyVo.getCity()==null)||item.getCity().equals(highFrequencyVo.getCity()))
+                        &&((item.getBuildingAlias()==null&&highFrequencyVo.getBuildingAlias()==null)||item.getBuildingAlias().equals(highFrequencyVo.getBuildingAlias()))
+                        &&((item.getRepairType()==null&&highFrequencyVo.getRepairType()==null)||item.getRepairType().equals(highFrequencyVo.getRepairType()))){
+                    highFrequencyVo.setOrder(item.getOrder());
+                    break;
+                }
+            }
+        }
+        List<Object> colList = new ArrayList();;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+            colList = new ArrayList();
+            colList.add(resultList.get(i).getCity());
+            colList.add(resultList.get(i).getBuildingAlias());
+            colList.add(resultList.get(i).getRepairType());
+            colList.add(resultList.get(i).getTime());
+            colList.add(resultList.get(i).getNum());
+            colList.add(resultList.get(i).getOrder());
+            allList.add(colList.toArray());
+
+        }
+        String[] header = new String[]{
+                "单位",
+                "维修建筑",
+                "维修类型",
+                "时间",
+                "发生频率",
+                "排名"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+    /**
+     *  高总价维修统计
+     */
+    public void responseTab2(DateFormat df, ExcelExport ee1, Map<String, Object> map1) {
+        Query query = new Query(map1);
+        List<WzHouseMaintenaCostEntity> resultList = wzHouseMaintenaCostService.queryHighPrice(query);
+        List<Object> colList;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+            colList = new ArrayList();
+            colList.add(resultList.get(i).getStatisticalMonth());
+            colList.add(resultList.get(i).getCity());
+            colList.add(resultList.get(i).getCounty());
+            colList.add(resultList.get(i).getBuildingAlias());
+            colList.add(resultList.get(i).getRepairType());
+            colList.add(resultList.get(i).getRepairContent());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getErpCreditedAmount(),true));
+            colList.add(resultList.get(i).getStandardAddress());
+            colList.add(resultList.get(i).getBuildingUse());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaUseArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaRentArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaUnavailable(),true));
+            allList.add(colList.toArray());
+        }
+        String[] header = new String[]{
+                "入账日期",
+                "二级单位",
+                "三级单位",
+                "建筑别名",
+                "维修类型",
+                "维修内容",
+                "erp入账金额元",
+                "标准地址",
+                "建筑用途",
+                "建筑面积㎡",
+                "建筑面积自用㎡",
+                "建筑面积出租㎡",
+                "建筑面积闲置㎡"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+
+    public void responseTab3(DateFormat df, ExcelExport ee1, Map<String, Object> map1) {
+        map1.put("repairType", "零星维修");
+        map1.put("erpCreditedAmount", 10000);
+        Query query=new Query(map1);
+        List<DailyModifyVo> resultList = wzHouseMaintenaCostService.queryDailyModify(query);
+
+        List<Object> colList = new ArrayList();;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+            colList = new ArrayList();
+            colList.add(resultList.get(i).getCity());
+            colList.add(resultList.get(i).getBuildingAlias());
+            colList.add(resultList.get(i).getDate());
+            colList.add(resultList.get(i).getRepairType());
+            colList.add(resultList.get(i).getRepairContent());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getErpMoney(),true));
+            colList.add(resultList.get(i).getNum());
+            allList.add(colList.toArray());
+
+        }
+        String[] header = new String[]{
+                "单位",
+                "维修建筑",
+                "维修时间",
+                "维修类型",
+                "维修内容",
+                "维修金额",
+                "本年超万元次数"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+
+    public void responseTab4(DateFormat df, ExcelExport ee1, Map<String, Object> map1) {
+        List<WzHouseMaintenaCostEntity> resultList = wzHouseMaintenaCostService.queryList(map1);
+        List<Object> colList = new ArrayList();;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+            colList = new ArrayList();
+            colList.add(resultList.get(i).getStatisticalMonth());
+            colList.add(resultList.get(i).getCity());
+            colList.add(resultList.get(i).getCounty());
+            colList.add(resultList.get(i).getBuildingAlias());
+            colList.add(resultList.get(i).getRepairType());
+            colList.add(resultList.get(i).getRepairContent());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getErpCreditedAmount(),true));
+            colList.add(resultList.get(i).getStandardAddress());
+            colList.add(resultList.get(i).getUseState());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaUseArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaRentArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaIdelArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaUnavailable(),true));
+            allList.add(colList.toArray());
+
+        }
+        String[] header = new String[]{
+                "入账日期",
+                "二级单位",
+                "三级单位",
+                "建筑别名",
+                "维修类型",
+                "维修内容",
+                "erp入账金额元",
+                "标准地址",
+                "使用状态",
+                "建筑面积㎡",
+                "建筑面积自用㎡",
+                "建筑面积出租㎡",
+                "建筑面积闲置㎡",
+                "建筑面积不可使用㎡"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+
+    public void responseTab5(DateFormat df, ExcelExport ee1, Map<String, Object> map1) {
+        List<WzHouseMaintEntity> list = wzHouseMaintService.queryList(map1);
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList = otnAreaService.getCityOption(0l);
+        List<WzHouseMaintEntity> resultList = new ArrayList<>();
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (WzHouseMaintEntity wzCity : list) {
+                if (wzCity.getCity().contains(otnAreaEntity.getName())) {
+                    wzCity.setAll();
+                    resultList.add(wzCity);
+                }
+            }
+        }
+        List<Object> colList;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+            colList = new ArrayList();
+            colList.add(resultList.get(i).getCity());
+            colList.add("");
+            colList.add(resultList.get(i).getHouseAgeLessThanTwenty());
+            colList.add(resultList.get(i).getHouseAgeBetweentTewntyAndForty());
+            colList.add(resultList.get(i).getHouseAgeMoreThanFortyOne());
+            colList.add(resultList.get(i).getHouseAll());
+            colList.add("");
+            colList.add(resultList.get(i).getBuildingAgeLessThanTwenty());
+            colList.add(resultList.get(i).getBuildingAgeBetweentTewntyAndForty());
+            colList.add(resultList.get(i).getBuildingAgeMoreThanFortyOne());
+            colList.add(resultList.get(i).getBuildingAll());
+            allList.add(colList.toArray());
+        }
+        String[] header = new String[]{
+                "单位",
+                "主业用房",
+                "房龄<20年",
+                "房龄21~40年",
+                "房龄>41年",
+                "总计",
+                "全部建筑",
+                "房龄<20年",
+                "房龄21~40年",
+                "房龄>41年",
+                "总计"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+
+    /**
+     * 高总价统计
+     */
+    @RequestMapping("/queryHighPrice")
+    @IgnoreAuth
+    public R queryHighPrice(@RequestBody PageMap pageMap) {
+        Query query = new Query(pageMap);
+        WzStrategyEntity objectByType = wzStrategyService.getObjectByType();
+        int value=0;
+        if(objectByType!=null){
+            String[] values=objectByType.getValue().split(",");
+            value=Integer.valueOf(values[2]);
+            query.put("erpCreditedAmount", value);
+        }
+        List<WzHouseMaintenaCostEntity> highPriceList = wzHouseMaintenaCostService.queryHighPrice(query);
+        PageUtils pageUtil = new PageUtils(highPriceList, highPriceList.size(), 10, 10);
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 日常零星维修
+     */
+    @RequestMapping("/queryDailyModify")
+    @IgnoreAuth
+    public R queryDailyModify(@RequestBody PageMap pageMap) {
+        Query query = new Query(pageMap);
+        Query query1 = new Query(pageMap);
+        //获取配置参数
+        int value=10000;
+        WzStrategyEntity objectByType = wzStrategyService.getObjectByType();
+        if(objectByType!=null){
+            String[] values=objectByType.getValue().split(",");
+            value=Integer.valueOf(values[3]);
+            query.put("erpCreditedAmount", value);
+            query1.put("erpCreditedAmount", value);
+        }
+        query.put("repairType", "零星维修");
+        List<DailyModifyVo> highPriceList = wzHouseMaintenaCostService.queryDailyModify(query);
+        query1.put("repairType", "零星维修");
+
+        int total = wzHouseMaintenaCostService.queryDailyModifyTotal(query1);
+        PageUtils pageUtil = new PageUtils(highPriceList, total, 10, 10);
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 闲置+不可用发生维修费
+     */
+    @RequestMapping("/queryHappenCost")
+    @IgnoreAuth
+    public R queryHappenCost(@RequestBody PageMap pageMap) {
+        Query query = new Query(pageMap);
+        query.put("useAreaSelfUseArea", 0);
+        query.put("useAreaRentArea", 0);
+        List<WzHouseMaintenaCostEntity> highPriceList = wzHouseMaintenaCostService.queryList(query);
+        Query query1 = new Query(pageMap);
+        query1.put("useAreaSelfUseArea", 0);
+        query1.put("useAreaRentArea", 0);
+        int total = wzHouseMaintenaCostService.queryTotal(query1);
+        PageUtils pageUtil = new PageUtils(highPriceList, total, 10, 10);
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 获取局址别名
+     */
+    @RequestMapping("/getBuildingNameCode")
+    @IgnoreAuth
+    public R getBuildingNameCode(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<String> list = wzHouseMaintenaCostService.getBuildingNameCode(query);
+        Query query1 = new Query(pageMap);
+        int total = wzHouseMaintenaCostService.queryBuildDetailByCodeTotal(query1);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+
+    /**
+     * 获取局址别名
+     */
+    @RequestMapping("/getBuildingNameAlias")
+    @IgnoreAuth
+    public R getBuildingNameAlias(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<String> list = wzHouseMaintenaCostService.getBuildingNameAlias(query);
+        Query query1 = new Query(pageMap);
+        int total = wzHouseMaintenaCostService.getBuildingNameAliasTotal(query1);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    public void responseTab6(DateFormat df, ExcelExport ee1, Map<String, Object> map1){
+        List<WzHouseMaintenaCostEntity> alllist = wzHouseMaintenaCostService.queryList1(map1);
+        //全省节点
+        HouseCostVo province = new HouseCostVo();
+        province.setCounty("全省");
+        province.setCity("全省");
+
+        double aProjectCost = 0l;
+        double aSmallCost = 0l;
+        double aWarnCost = 0l;
+        double aProCost = 0l;
+        double aOtherCost = 0l;
+        double aAllCost = 0l;
+        //按地市进行划分
+        Map<String, List<WzHouseMaintenaCostEntity>> cityMap = new HashMap<>();
+        for (WzHouseMaintenaCostEntity entity : alllist) {
+            if (entity.getCity() == null) continue;
+            List<WzHouseMaintenaCostEntity> list;
+            if (cityMap.get(entity.getCity()) != null) {
+                list = cityMap.get(entity.getCity());
+                list.add(entity);
+            } else {
+                list = new ArrayList<>();
+                list.add(entity);
+            }
+            cityMap.put(entity.getCity(), list);
+        }
+        //按区进行划分
+        List<HouseCostVo> resultList = new ArrayList<>();
+        List<HouseCostVo> cityList = new ArrayList<>();
+        for (Map.Entry<String, List<WzHouseMaintenaCostEntity>> entry : cityMap.entrySet()) {
+            List<WzHouseMaintenaCostEntity> list = entry.getValue();
+            //县的Map集合
+            Map<String, List<WzHouseMaintenaCostEntity>> countyMap = new HashMap<>();
+            for (WzHouseMaintenaCostEntity leaveUseVo : list) {
+                if (countyMap.get(leaveUseVo.getCounty()) != null) {
+                    list = countyMap.get(leaveUseVo.getCounty());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getCounty(), list);
+            }
+
+            List<HouseCostVo> countyList = new ArrayList<>();
+            double cityProjectCost = 0l;
+            double citySmallCost = 0l;
+            double cityWarnCost = 0l;
+            double cityProCost = 0l;
+            double cityOtherCost = 0l;
+            double cityAllCost = 0l;
+            for (Map.Entry<String, List<WzHouseMaintenaCostEntity>> countyEntry : countyMap.entrySet()) {
+                double projectCost = 0l;
+                double smallCost = 0l;
+                double warnCost = 0l;
+                double proCost = 0l;
+                double otherCost = 0l;
+                double allCost = 0l;
+
+                HouseCostVo county = new HouseCostVo();
+                for (WzHouseMaintenaCostEntity leaveUseVo : countyEntry.getValue()) {
+                    county.setCity(leaveUseVo.getCounty());
+                    if (leaveUseVo.getRepairType().equals("项目制维修")) {
+                        projectCost += leaveUseVo.getErpCreditedAmount();
+                        cityProjectCost += leaveUseVo.getErpCreditedAmount();
+                        aProjectCost += leaveUseVo.getErpCreditedAmount();
+                        allCost +=leaveUseVo.getErpCreditedAmount();
+                        cityAllCost +=leaveUseVo.getErpCreditedAmount();
+                        aAllCost +=leaveUseVo.getErpCreditedAmount();
+                    } else if (leaveUseVo.getRepairType().equals("零星维修")) {
+                        smallCost += leaveUseVo.getErpCreditedAmount();
+                        citySmallCost += leaveUseVo.getErpCreditedAmount();
+                        aSmallCost += leaveUseVo.getErpCreditedAmount();
+                        allCost +=leaveUseVo.getErpCreditedAmount();
+                        cityAllCost +=leaveUseVo.getErpCreditedAmount();
+                        aAllCost +=leaveUseVo.getErpCreditedAmount();
+                    } else if (leaveUseVo.getRepairType().equals("应急维修")) {
+                        warnCost += leaveUseVo.getErpCreditedAmount();
+                        cityWarnCost += leaveUseVo.getErpCreditedAmount();
+                        aWarnCost += leaveUseVo.getErpCreditedAmount();
+                        allCost +=leaveUseVo.getErpCreditedAmount();
+                        cityAllCost +=leaveUseVo.getErpCreditedAmount();
+                        aAllCost +=leaveUseVo.getErpCreditedAmount();
+                    } else if (leaveUseVo.getRepairType().equals("安防费用")) {
+                        proCost += leaveUseVo.getErpCreditedAmount();
+                        cityProCost += leaveUseVo.getErpCreditedAmount();
+                        aProCost += leaveUseVo.getErpCreditedAmount();
+                        allCost +=leaveUseVo.getErpCreditedAmount();
+                        cityAllCost +=leaveUseVo.getErpCreditedAmount();
+                        aAllCost +=leaveUseVo.getErpCreditedAmount();
+                    } else {
+                        if(leaveUseVo.getRepairType().contains("预提冲销")){
+                            continue;
+                        }
+                        otherCost += leaveUseVo.getErpCreditedAmount();
+                        cityOtherCost += leaveUseVo.getErpCreditedAmount();
+                        aOtherCost += leaveUseVo.getErpCreditedAmount();
+                    }
+//                    allCost += projectCost + smallCost + warnCost + proCost + otherCost;
+//                    cityAllCost += cityProjectCost + citySmallCost + cityWarnCost + cityProCost + cityOtherCost;
+//                    aAllCost += aProjectCost + aSmallCost + aWarnCost + aProCost + aOtherCost;
+
+                }
+                county.setProjectCost(formatDouble(projectCost));
+                county.setProCost(formatDouble(proCost));
+                county.setOtherCost(formatDouble(otherCost));
+                county.setSmallCost(formatDouble(smallCost));
+                county.setWarnCost(formatDouble(warnCost));
+                county.setAllCost(formatDouble(allCost));
+                countyList.add(county);
+            }
+
+            List<HouseCostVo> orderCountyList = new ArrayList<>();
+            try {
+                //对countList 进行排序
+                String city = list.get(0).getCity();
+                if (city.contains("市")) {
+                    city = city.split("市")[0];
+                }
+                OtnAreaEntity area = otnAreaService.queryObject(city);
+                List<OtnAreaEntity> countyAreaList = otnAreaService.getCityOption(area.getId());
+                int i=0;
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (HouseCostVo wzCity : countyList) {
+                        if (otnAreaEntity.getName().equals(wzCity.getCity())) {
+                            i++;
+                            wzCity.setFlag(i%2==0);
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            } catch (Exception e) {
+                orderCountyList = countyList;
+                e.printStackTrace();
+            }
+
+            HouseCostVo parent = new HouseCostVo();
+            parent.setProCost(formatDouble(cityProCost));
+            parent.setWarnCost(formatDouble(cityWarnCost));
+            parent.setProjectCost(formatDouble(cityProjectCost));
+            parent.setOtherCost(formatDouble(cityOtherCost));
+            parent.setSmallCost(formatDouble(citySmallCost));
+            parent.setAllCost(formatDouble(cityAllCost));
+            parent.setCity(list.get(0).getCity());
+            parent.setChildren(orderCountyList);
+            cityList.add(parent);
+        }
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList = otnAreaService.getCityOption(0l);
+        List<HouseCostVo> orderList = new ArrayList<>();
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (HouseCostVo wzCity : cityList) {
+                if (wzCity.getCity().contains(otnAreaEntity.getName())) {
+                    orderList.add(wzCity);
+                }
+            }
+        }
+
+        province.setChildren(orderList);
+        province.setAllCost(formatDouble(aAllCost));
+        province.setSmallCost(formatDouble(aSmallCost));
+        province.setOtherCost(formatDouble(aOtherCost));
+        province.setProjectCost(formatDouble(aProjectCost));
+        province.setProCost(formatDouble(aProCost));
+        province.setWarnCost(formatDouble(aWarnCost));
+        resultList.add(province);
+
+        List<Object> colList=new ArrayList();;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+
+            if(resultList.get(i).getCity().contains("省")){
+                colList = new ArrayList();
+                colList.add(resultList.get(i).getCity());
+                colList.add("");
+                colList.add("");
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getProjectCost(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getSmallCost(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getWarnCost(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getAllCost(),true));
+                allList.add(colList.toArray());
+
+                //处理城市的
+                List<HouseCostVo> cityList1=resultList.get(i).getChildren();
+                for (HouseCostVo floorNoUserVo : cityList1) {
+                    colList = new ArrayList();
+                    colList.add("");
+                    colList.add(floorNoUserVo.getCity());
+                    colList.add("");
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getProjectCost(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getSmallCost(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getWarnCost(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getAllCost(),true));
+                    allList.add(colList.toArray());
+                    //处理县城的
+                    List<HouseCostVo> countyList1 = floorNoUserVo.getChildren();
+                    for (HouseCostVo noUserVo : countyList1) {
+                        colList = new ArrayList();
+                        colList.add("");
+                        colList.add("");
+                        colList.add(noUserVo.getCity());
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getProjectCost(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getSmallCost(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getWarnCost(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getAllCost(),true));
+                        allList.add(colList.toArray());
+                    }
+                }
+            }
+        }
+        String[] header = new String[]{
+                "资产所属单位(一级)",
+                "资产所属单位(二级)",
+                "资产所属单位(三级)",
+                "项目制维修(元)",
+                "零星维修(元)",
+                "应急维修(元)",
+                "总计(元)"
+        };
+        ee1.addSheetByArray("房屋维修_维修费统计"+df.format(new Date()) + "清单", allList, header);
+
+    }
+
+    public void responseTab7(DateFormat df, ExcelExport ee1, Map<String, Object> map1){
+
+        List<WzHouseMaintenaCostEntity> resultList = wzHouseMaintenaCostService.queryList1(map1);
+        //每平方米维修单价
+        for (WzHouseMaintenaCostEntity wzHouseMaintenaCostEntity : resultList) {
+            wzHouseMaintenaCostEntity.setAveragePrice(formatDouble(wzHouseMaintenaCostEntity.dealPrice(wzHouseMaintenaCostEntity)));
+        }
+
+        List<Object> colList;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+            colList = new ArrayList();
+            colList.add(resultList.get(i).getBuildingId());
+            colList.add(resultList.get(i).getStatisticalMonth());
+            colList.add(resultList.get(i).getRepairType());
+            colList.add(resultList.get(i).getRepairContent());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getErpCreditedAmount(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getAveragePrice(),true));
+            colList.add(resultList.get(i).getCity());
+            colList.add(resultList.get(i).getCounty());
+            colList.add(resultList.get(i).getBuildingAddressNumber());
+            colList.add(resultList.get(i).getBuildingNnameAlias());
+            colList.add(resultList.get(i).getStandardAddress());
+            colList.add(resultList.get(i).getCityGrade());
+            colList.add(resultList.get(i).getCityArea());
+            colList.add(resultList.get(i).getInvestmentEntity());
+            colList.add(resultList.get(i).getManagementHierarchy());
+            colList.add(resultList.get(i).getBuildingStructure());
+            colList.add(resultList.get(i).getUseState());
+            colList.add(resultList.get(i).getBuildingUse());
+            colList.add(resultList.get(i).getOwnershipStatus());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingFloorArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaUseArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaRentArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaIdelArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaUnavailable(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getUseArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getUseAreaSelfUseArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getUseAreaRentArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getUseAreaIdelArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getUseAreaUnavailableArea(),true));
+            allList.add(colList.toArray());
+        }
+        String[] header = new String[]{
+                "建筑id基本信息",
+                "入账日期",
+                "维修类型",
+                "维修内容",
+                "erp入账金额元",
+                "每平方米维修单价",
+                "资产所属单位二级",
+                "资产所属单位三级",
+                "局址编号",
+                "局址别名",
+                "标准地址",
+                "城市等级",
+                "城市区域",
+                "投资主体",
+                "管理层级",
+                "房屋结构",
+                "使用状况",
+                "建筑用途",
+                "权属状态",
+                "建筑占地面积㎡",
+                "建筑面积㎡",
+                "建筑面积自用㎡",
+                "建筑面积出租㎡",
+                "建筑面积闲置㎡",
+                "建筑面积不可使用㎡",
+                "使用面积㎡",
+                "使用面积自用㎡",
+                "使用面积出租㎡",
+                "使用面积闲置㎡",
+                "使用面积不可使用㎡"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+
+
+    public double formatDouble(double num) {
+        DecimalFormat format2 = new DecimalFormat("#.00");
+        String str2 = format2.format(num);
+        double avera = Double.parseDouble(str2);
+        return avera;
+    }
+
+    public static String toThousands(Object number,boolean flag) {
+        if(number==null){
+            return "";
+        }
+        String num=number.toString();
+        if(num.contains("E")){
+            BigDecimal decimal=new BigDecimal(num);
+            BigDecimal decimal1 = decimal.setScale(4, 2);
+            num=decimal1.toString();
+        }
+        String[] snum=num.split("\\.");
+        num=snum[0];
+        String result = "";
+        int counter = 0;
+        for (int i = num.length() - 1; i >= 0; i--) {
+            counter++;
+            result = num.charAt(i) + result;
+            if (counter % 3==0 && i != 0) {
+                result = ',' + result;
+            }
+        }
+        if(snum.length<2){
+            if(flag){
+                return result+".00";
+            }else{
+                return result;
+            }
+        }
+        if(snum[1].length()==1){
+            snum[1]+="0";
+        }
+        if(snum[1].length()>2){
+           snum[1]=snum[1].substring(0,2);
+        }
+        return result+"."+snum[1];
+    }
+}

+ 126 - 0
src/main/java/com/example/controller/WzHouseMarketController.java

@@ -0,0 +1,126 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.WzHouseMarketEntity;
+import com.example.service.WzHouseMarketService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/wzHouseMarket")
+public class WzHouseMarketController {
+
+    @Autowired
+    private WzHouseMarketService wzHouseMarketService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseMarketEntity> list = wzHouseMarketService.queryList(query);
+        int total = wzHouseMarketService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/echartList")
+    @IgnoreAuth
+    public R echartList(@RequestBody PageMap pageMap) {
+//        //查询列表数据
+//        Query query = new Query(pageMap);
+//        List<WzHouseMarketEntity> wzHouseContracEntityList = wzHouseMarketService.queryList(query);
+//
+//        WzHouseArrearsManageEntity province=new WzHouseArrearsManageEntity();
+//        province.setCity("全省");
+//
+//        Map<String,List<WzHouseArrearsManageEntity>> map=new HashMap<>();
+//        for (WzHouseMarketEntity leaveUseVo : wzHouseContracEntityList) {
+//            List<WzHouseArrearsManageEntity> list;
+//            if(map.get(leaveUseVo.getCity())!=null){
+//                list=map.get(leaveUseVo.getCity());
+//                list.add(leaveUseVo);
+//            }else{
+//                list=new ArrayList<>();
+//                list.add(leaveUseVo);
+//            }
+//            map.put(leaveUseVo.getCity(),list);
+//        }
+//        List<WzHouseArrearsManageEntity> resultList=new ArrayList<>();
+//        List<WzHouseArrearsManageEntity> cityList=new ArrayList<>();
+//
+//        double allAccumulateArrears=0l;
+//        double allmoreThanThreeMonths=0l;
+//        double allmoreThanOneYears=0l;
+//        double allyearCumulativeNewAdditions=0l;
+//        double allyearCumulativeWithdrawal=0l;
+//
+//        for(Map.Entry<String,List<WzHouseArrearsManageEntity>> entry:map.entrySet()){
+//
+//            List<WzHouseArrearsManageEntity> list=entry.getValue();
+//            if(list.get(0).getCity().equals("全省")){
+//                continue;
+//            }
+//            double contractQuantity=0l;
+//            double noTaxContractAmount=0l;
+//            double rentArea=0l;
+//            double unitPricePerSquareMeter=0l;
+//            double yearCumulativeWithdrawal=0l;
+//            for (WzHouseArrearsManageEntity leaveUseVo : list) {
+////                contractQuantity+=leaveUseVo.getContractQuantity();
+////                noTaxContractAmount+=leaveUseVo.getNoTaxContractAmount();
+////                rentArea+=leaveUseVo.getRentArea();
+////                unitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+//
+//                if(leaveUseVo.getAccumulateArrears()!=null){
+//                    allAccumulateArrears+=leaveUseVo.getAccumulateArrears();
+//                }
+//                if(leaveUseVo.getMoreThanThreeMonths()!=null){
+//                    allmoreThanThreeMonths+=leaveUseVo.getMoreThanThreeMonths();
+//                }
+//                if(leaveUseVo.getMoreThanOneYears()!=null){
+//                    allmoreThanOneYears+=leaveUseVo.getMoreThanOneYears();
+//                }
+//                if(leaveUseVo.getYearCumulativeNewAdditions()!=null){
+//                    allyearCumulativeNewAdditions+=leaveUseVo.getYearCumulativeNewAdditions();
+//                }
+//                if(leaveUseVo.getYearCumulativeWithdrawal()!=null){
+//                    allyearCumulativeWithdrawal=leaveUseVo.getYearCumulativeWithdrawal();
+//                }
+//            }
+////            WzHouseContracEntity parent=new WzHouseContracEntity();
+////            parent.setContractQuantity(contractQuantity);
+////            parent.setNoTaxContractAmount(noTaxContractAmount);
+////            parent.setRentArea(rentArea);
+////            parent.setUnitPricePerSquareMeter(unitPricePerSquareMeter);
+////            parent.setCity(list.get(0).getCity());
+////            parent.setCounty(list.get(0).getCounty());
+////            parent.setChildren(list);
+//            cityList.add(list.get(0));
+//        }
+//        province.setAccumulateArrears(allAccumulateArrears);
+//        province.setMoreThanOneYears(allmoreThanOneYears);
+//        province.setMoreThanThreeMonths(allmoreThanThreeMonths);
+//        province.setYearCumulativeNewAdditions(allyearCumulativeNewAdditions);
+//        province.setYearCumulativeWithdrawal(allyearCumulativeWithdrawal);
+//        province.setChildren(cityList);
+//        resultList.add(province);
+//
+//        int total = wzHouseMarketService.queryTotal(query);
+//        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+//        return R.ok().put("page", pageUtil);
+        return null;
+    }
+
+}

+ 360 - 0
src/main/java/com/example/controller/WzHouseUseController.java

@@ -0,0 +1,360 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzHouseUseEntity;
+import com.example.entity.vo.WzHouseUseVo;
+import com.example.service.WzHouseUseService;
+import com.example.service.WzOtnAreaService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import com.example.utils.excel.ExcelExport;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 房屋租入(租入用途管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/WzHouseUse")
+public class WzHouseUseController {
+
+    @Autowired
+    private WzHouseUseService wzHouseUseService;
+    @Autowired
+    private WzOtnAreaService otnAreaService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseUseEntity> list = wzHouseUseService.queryList(pageMap.getMap());
+        int total = wzHouseUseService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/echartList")
+    @IgnoreAuth
+    public R echartList(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzHouseUseEntity> wzHouseContracEntityList = wzHouseUseService.queryList(pageMap.getMap());
+
+        Map<String,List<WzHouseUseEntity>> cityMap=new HashMap<>();
+        for (WzHouseUseEntity leaveUseVo : wzHouseContracEntityList) {
+            List<WzHouseUseEntity> list;
+            if(cityMap.get(leaveUseVo.getCity())!=null){
+                list=cityMap.get(leaveUseVo.getCity());
+                list.add(leaveUseVo);
+            }else{
+                list=new ArrayList<>();
+                list.add(leaveUseVo);
+            }
+            cityMap.put(leaveUseVo.getCity(),list);
+        }
+
+        List<WzHouseUseVo> resultList=new ArrayList<>();
+        List<WzHouseUseVo> cityList=new ArrayList<>();
+
+        int allyingYe=0;
+        int allbanGong=0;
+        int alltongXin=0;
+        int allother=0;
+        int allall=0;
+        for(Map.Entry<String,List<WzHouseUseEntity>> entry:cityMap.entrySet()){
+            List<WzHouseUseEntity> list=entry.getValue();
+
+            if (list.get(0).getCounty().equals("全省")) {
+                continue;
+            }
+            //县的Map集合
+            Map<String, List<WzHouseUseEntity>> countyMap = new HashMap<>();
+            for (WzHouseUseEntity leaveUseVo : list) {
+                if (leaveUseVo.getCounty() == null || leaveUseVo.getCounty().equals("")) {
+                    continue;
+                }
+                if (countyMap.get(leaveUseVo.getCounty()) != null) {
+                    list = countyMap.get(leaveUseVo.getCounty());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getCounty(), list);
+            }
+
+            int cityyingYe=0;
+            int citybanGong=0;
+            int citytongXin=0;
+            int cityother=0;
+            int cityall=0;
+            List<WzHouseUseVo> countyList=new ArrayList<>();
+            for (Map.Entry<String, List<WzHouseUseEntity>> countyEntry : countyMap.entrySet()) {
+                int yingYe=0;
+                int banGong=0;
+                int tongXin=0;
+                int other=0;
+                int all=0;
+                for (WzHouseUseEntity leaveUseVo : countyEntry.getValue()) {
+                    if(leaveUseVo.getRentalUse()!=null){
+                        if(leaveUseVo.getRentalUse().equals("通信设施机房")){
+                            tongXin+=1;
+                            citytongXin+=1;
+                            alltongXin+=1;
+                        }
+                        else if(leaveUseVo.getRentalUse().equals("营业")){
+                            yingYe+=1;
+                            cityyingYe+=1;
+                            allyingYe+=1;
+                        }
+                        else if(leaveUseVo.getRentalUse().equals("其他租入用途")){
+                            other+=1;
+                            cityother+=1;
+                            allother+=1;
+                        }
+                        else if(leaveUseVo.getRentalUse().equals("办公")){
+                            banGong+=1;
+                            citybanGong+=1;
+                            allbanGong+=1;
+                        }
+                        all+=1;
+                        cityall+=1;
+                        allall+=1;
+                    }
+                }
+                WzHouseUseVo wzHouseInCustomerEntity = new WzHouseUseVo();
+                wzHouseInCustomerEntity.setYingYe(yingYe);
+                wzHouseInCustomerEntity.setCity(countyEntry.getKey());
+                wzHouseInCustomerEntity.setBanGong(banGong);
+                wzHouseInCustomerEntity.setAll(all);
+                wzHouseInCustomerEntity.setTongXin(tongXin);
+                wzHouseInCustomerEntity.setOther(other);
+                countyList.add(wzHouseInCustomerEntity);
+            }
+            List<WzHouseUseVo> orderCountyList=new ArrayList<>();
+            try{
+                //对countList 进行排序
+                String city=list.get(0).getCity();
+                if(city.contains("市")){
+                    city=city.split("市")[0];
+                }
+                OtnAreaEntity area=otnAreaService.queryObject(city);
+                List<OtnAreaEntity> countyAreaList=otnAreaService.getCityOption(area.getId());
+                int i=0;
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (WzHouseUseVo wzCity : countyList) {
+                        if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                            i++;
+                            wzCity.setFlag(i%2==0);
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            }catch (Exception e){
+                orderCountyList=countyList;
+                e.printStackTrace();
+            }
+
+            WzHouseUseVo wzHouseInCustomerEntity = new WzHouseUseVo();
+            wzHouseInCustomerEntity.setCity(entry.getKey());
+            wzHouseInCustomerEntity.setYingYe(cityyingYe);
+            wzHouseInCustomerEntity.setBanGong(citybanGong);
+            wzHouseInCustomerEntity.setAll(cityall);
+            wzHouseInCustomerEntity.setTongXin(citytongXin);
+            wzHouseInCustomerEntity.setOther(cityother);
+            wzHouseInCustomerEntity.setChildren(orderCountyList);
+            cityList.add(wzHouseInCustomerEntity);
+        }
+
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<WzHouseUseVo> orderList=new ArrayList<>();
+        int i=0;
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (WzHouseUseVo wzCity : cityList) {
+                if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                    wzCity.setFlag(i%2==0);
+                    i++;
+                    orderList.add(wzCity);
+                }
+            }
+        }
+
+        WzHouseUseVo province=new WzHouseUseVo();
+        province.setCity("全省");
+        province.setYingYe(allyingYe);
+        province.setBanGong(allbanGong);
+        province.setAll(allall);
+        province.setTongXin(alltongXin);
+        province.setOther(allother);
+        province.setChildren(orderList);
+        if(orderList.size()>0){
+            resultList.add(province);
+        }
+        int total = wzHouseUseService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 清单excel
+     */
+    @GetMapping("/excel")
+    @IgnoreAuth
+    public void excel(String name,String buildingNameAlias,String city,String county, HttpServletResponse response) {
+        Map<String,Object> map1=new HashMap<>();
+        if(buildingNameAlias!=null){
+            map1.put("buildingNameAlias",buildingNameAlias);
+        }
+        if(city!=null){
+            map1.put("city",city);
+        }
+        if(county!=null){
+            map1.put("county",county);
+        }
+
+        DateFormat df = new SimpleDateFormat("yyyyMMdd");
+        ExcelExport ee1 = new ExcelExport("报表" + df.format(new Date()));
+
+        //判定是闲置管理还是详情
+        if(name.contains("出租合同统计")){
+//            responseTab1(df,ee1,map1);
+            ee1.export(response);
+        }else if(name.contains("出租合同详单")){
+            responseTab2(df,ee1,map1);
+            ee1.export(response);
+        }
+
+
+    }
+
+//    public void responseTab1(DateFormat df, ExcelExport ee1, Map<String, Object> map1){
+//        List<WzHouseUseEntity> wzHouseContracEntityList = wzHouseUseService.queryList(map1);
+//
+//        WzHouseContracEntity province=new WzHouseContracEntity();
+//        province.setCity("全省");
+//
+//        Map<String,List<WzHouseUseEntity>> map=new HashMap<>();
+//        for (WzHouseUseEntity leaveUseVo : wzHouseContracEntityList) {
+//            List<WzHouseUseEntity> list;
+//            if(map.get(leaveUseVo.getCity())!=null){
+//                list=map.get(leaveUseVo.getCity());
+//                list.add(leaveUseVo);
+//            }else{
+//                list=new ArrayList<>();
+//                list.add(leaveUseVo);
+//            }
+//            map.put(leaveUseVo.getCity(),list);
+//        }
+//        List<WzHouseContracEntity> resultList=new ArrayList<>();
+//        List<WzHouseContracEntity> cityList=new ArrayList<>();
+//
+//        double allContractQuantity=0l;
+//        double allNoTaxContractAmount=0l;
+//        double allRentArea=0l;
+//        double allUnitPricePerSquareMeter=0l;
+//
+//        for(Map.Entry<String,List<WzHouseUseEntity>> entry:map.entrySet()){
+//            List<WzHouseUseEntity> list=entry.getValue();
+//            double contractQuantity=0l;
+//            double noTaxContractAmount=0l;
+//            double rentArea=0l;
+//            double unitPricePerSquareMeter=0l;
+//            for (WzHouseUseEntity leaveUseVo : list) {
+//                contractQuantity+=leaveUseVo.getContractQuantity();
+//                noTaxContractAmount+=leaveUseVo.getNoTaxContractAmount();
+//                rentArea+=leaveUseVo.getRentArea();
+//                unitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+//
+//                allContractQuantity+=leaveUseVo.getContractQuantity();
+//                allNoTaxContractAmount+=leaveUseVo.getNoTaxContractAmount();
+//                allRentArea+=leaveUseVo.getRentArea();
+//                allUnitPricePerSquareMeter+=leaveUseVo.getUnitPricePerSquareMeter();
+//            }
+//            cityList.add(list.get(0));
+//        }
+//        province.setContractQuantity(allContractQuantity);
+//        province.setNoTaxContractAmount(formatDouble(allNoTaxContractAmount));
+//        province.setRentArea(allRentArea);
+//        province.setUnitPricePerSquareMeter(formatDouble(allUnitPricePerSquareMeter));
+//        province.setChildren(cityList);
+//        resultList.add(province);
+//
+//
+//        List<Object> colList=new ArrayList();;
+//        List<Object[]> allList = new ArrayList();
+//        for (int i = 0; i < resultList.size(); i++) {
+//
+//            if(resultList.get(i).getCity().contains("省")){
+//                colList = new ArrayList();
+//                colList.add(resultList.get(i).getCity());
+//                colList.add("");
+//                colList.add(resultList.get(i).getContractQuantity());
+//                colList.add(resultList.get(i).getNoTaxContractAmount());
+//                colList.add(resultList.get(i).getRentArea());
+//                colList.add(resultList.get(i).getUnitPricePerSquareMeter());
+//                allList.add(colList.toArray());
+//
+//                //处理城市的
+//                List<WzHouseContracEntity> cityList1=resultList.get(i).getChildren();
+//                for (WzHouseContracEntity floorNoUserVo : cityList1) {
+//                    colList = new ArrayList();
+//                    colList.add("");
+//                    colList.add(floorNoUserVo.getCity());
+//                    colList.add(floorNoUserVo.getContractQuantity());
+//                    colList.add(floorNoUserVo.getNoTaxContractAmount());
+//                    colList.add(floorNoUserVo.getRentArea());
+//                    colList.add(resultList.get(i).getUnitPricePerSquareMeter());
+//                    allList.add(colList.toArray());
+//                }
+//            }
+//        }
+//        String[] header = new String[]{
+//                "资产所属单位(一级)",
+//                "资产所属单位(二级)",
+//                "合同数量",
+//                "不含税合同额(元)",
+//                "出租面积(平米)",
+//                "每平米单价(元)"
+//        };
+//        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+//    }
+
+    public void responseTab2(DateFormat df, ExcelExport ee1, Map<String, Object> map1){
+
+
+
+
+    }
+
+    public double formatDouble(double num){
+        double avera=0l;
+        try{
+            DecimalFormat format2 = new DecimalFormat("#.00");
+            String str2 = format2.format(num);
+            avera = Double.parseDouble(str2);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return avera;
+    }
+
+}

+ 768 - 0
src/main/java/com/example/controller/WzLandManageDetailsController.java

@@ -0,0 +1,768 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzLandManageDetailsEntity;
+import com.example.entity.vo.floormanager.FloorNoUserVo;
+import com.example.entity.vo.housemanager.HouseYearVo;
+import com.example.service.WzLandManageDetailsService;
+import com.example.service.WzOtnAreaService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import com.example.utils.excel.ExcelExport;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/house-car/house/dist/api/WzLandManageDetails")
+public class WzLandManageDetailsController {
+
+    @Autowired
+    private WzLandManageDetailsService wzLandManageDetailsService;
+    @Autowired
+    private WzOtnAreaService otnAreaService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+
+        int repeatNum=0;
+        //全省节点
+        FloorNoUserVo province=new FloorNoUserVo();
+        province.setCity("全省");
+        province.setCounty("全省");
+
+        List<FloorNoUserVo> leaveUseVoList = wzLandManageDetailsService.queryLeaveUseList(pageMap.getMap());
+        Map<String,List<FloorNoUserVo>> map=new HashMap<>();
+        for (FloorNoUserVo leaveUseVo : leaveUseVoList) {
+            double avera=0l;
+            if(leaveUseVo.getBuildingAreaIdelArea()+leaveUseVo.getBuildingAreaRentArea()==0){
+                avera=0;
+            }else{
+                avera=leaveUseVo.getBuildingAreaIdelArea()/(leaveUseVo.getBuildingAreaIdelArea()+leaveUseVo.getBuildingAreaRentArea());
+                avera=formatDouble(avera)*100;
+            }
+            leaveUseVo.setAverage(avera);
+            List<FloorNoUserVo> list;
+            if(map.get(leaveUseVo.getCity())!=null){
+                list=map.get(leaveUseVo.getCity());
+                list.add(leaveUseVo);
+            }else{
+                list=new ArrayList<>();
+                list.add(leaveUseVo);
+            }
+            map.put(leaveUseVo.getCity(),list);
+        }
+        List<FloorNoUserVo> resultList=new ArrayList<>();
+        List<FloorNoUserVo> cityList=new ArrayList<>();
+        double abuildingAreaIdelArea=0l;
+        double abuildingAreaRentArea=0l;
+        double abuildArea=0l;
+        double abuildingAreaUnavailable=0l;
+        double abuildingAreaUseArea=0l;
+
+        for(Map.Entry<String,List<FloorNoUserVo>> entry:map.entrySet()) {
+
+            List<FloorNoUserVo> list = entry.getValue();
+            //对该list相同的县进行统计
+            Map<String, List<FloorNoUserVo>> countyMap = new HashMap<>();
+            for (FloorNoUserVo leaveUseVo : list) {
+                if (countyMap.get(leaveUseVo.getCounty()) != null) {
+                    list = countyMap.get(leaveUseVo.getCounty());
+                    list.add(leaveUseVo);
+                } else {
+                    list = new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                countyMap.put(leaveUseVo.getCounty(), list);
+            }
+
+            List<FloorNoUserVo> countyList = new ArrayList<>();
+            double citybuildingAreaIdelArea = 0l;
+            double citybuildingAreaRentArea = 0l;
+            double citybuildArea = 0l;
+            double citybuildingAreaUnavailable = 0l;
+            double citybuildingAreaUseArea = 0l;
+            for (Map.Entry<String, List<FloorNoUserVo>> countyEntry : countyMap.entrySet()) {
+                double buildingAreaIdelArea = 0l;
+                double buildingAreaRentArea = 0l;
+                double buildArea = 0l;
+                double buildingAreaUnavailable = 0l;
+                double buildingAreaUseArea = 0l;
+
+                String reapStr="";
+                if (countyEntry.getKey().equals("市本部")){
+                    reapStr="市本部"+repeatNum;
+                    repeatNum++;
+                }
+
+                FloorNoUserVo county = new FloorNoUserVo();
+                for (FloorNoUserVo leaveUseVo : countyEntry.getValue()) {
+                    county.setCity(leaveUseVo.getCounty());
+                    county.setCounty(leaveUseVo.getCounty());
+                    if(!reapStr.equals("")){
+                        county.setCity(reapStr);
+                        county.setCounty(reapStr);
+                        county.setCountyName(reapStr);
+                    }
+
+                    buildingAreaIdelArea += leaveUseVo.getBuildingAreaIdelArea();
+                    buildingAreaRentArea += leaveUseVo.getBuildingAreaRentArea();
+                    buildArea += leaveUseVo.getBuildingArea();
+                    buildingAreaUnavailable += leaveUseVo.getBuildingAreaUnavailable();
+                    buildingAreaUseArea += leaveUseVo.getBuildingAreaUseArea();
+
+                    citybuildingAreaIdelArea += leaveUseVo.getBuildingAreaIdelArea();
+                    citybuildingAreaRentArea += leaveUseVo.getBuildingAreaRentArea();
+                    citybuildArea += leaveUseVo.getBuildingArea();
+                    citybuildingAreaUnavailable += leaveUseVo.getBuildingAreaUnavailable();
+                    citybuildingAreaUseArea += leaveUseVo.getBuildingAreaUseArea();
+
+                    abuildingAreaIdelArea += leaveUseVo.getBuildingAreaIdelArea();
+                    abuildingAreaRentArea += leaveUseVo.getBuildingAreaRentArea();
+                    abuildArea += leaveUseVo.getBuildingArea();
+                    abuildingAreaUnavailable += leaveUseVo.getBuildingAreaUnavailable();
+                    abuildingAreaUseArea += leaveUseVo.getBuildingAreaUseArea();
+                }
+                double avera=0;
+                if(buildingAreaIdelArea+buildingAreaRentArea==0){
+                    avera=0;
+                }else{
+                    try{
+                        avera=formatDouble(buildingAreaIdelArea/(buildingAreaRentArea+buildingAreaIdelArea))*100;
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+
+                }
+                county.setBuildingArea(formatDouble(buildArea));
+                county.setBuildingAreaIdelArea(formatDouble(buildingAreaIdelArea));
+                county.setBuildingAreaUnavailable(formatDouble(buildingAreaUnavailable));
+                county.setBuildingAreaUseArea(formatDouble(buildingAreaUseArea));
+                county.setBuildingAreaRentArea(formatDouble(buildingAreaRentArea));
+                county.setAverage(formatDouble(avera));
+                countyList.add(county);
+            }
+            List<FloorNoUserVo> orderCountyList=new ArrayList<>();
+            try{
+                //对countList 进行排序
+                OtnAreaEntity area=otnAreaService.queryObject(list.get(0).getCity());
+                List<OtnAreaEntity> countyAreaList=otnAreaService.getCityOption(area.getId());
+                int i=0;
+                for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                    for (FloorNoUserVo wzCity : countyList) {
+                        if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                            i++;
+                            wzCity.setFlag(i%2==0);
+                            orderCountyList.add(wzCity);
+                        }
+                    }
+                }
+            }catch (Exception e){
+                orderCountyList=countyList;
+                e.printStackTrace();
+            }
+
+
+            double avera;
+            if(citybuildingAreaRentArea+citybuildingAreaIdelArea==0){
+                avera=0;
+            }else{
+                avera=formatDouble(citybuildingAreaIdelArea/(citybuildingAreaRentArea+citybuildingAreaIdelArea))*100;
+            }
+
+            FloorNoUserVo parent = new FloorNoUserVo();
+            parent.setBuildingArea(formatDouble(citybuildArea));
+            parent.setBuildingAreaIdelArea(formatDouble(citybuildingAreaIdelArea));
+            parent.setBuildingAreaUnavailable(formatDouble(citybuildingAreaUnavailable));
+            parent.setBuildingAreaUseArea(formatDouble(citybuildingAreaUseArea));
+            parent.setBuildingAreaRentArea(formatDouble(citybuildingAreaRentArea));
+            parent.setCity(list.get(0).getCity());
+            parent.setCountyName(list.get(0).getCityName());
+            parent.setAverage(formatDouble(avera));
+            parent.setChildren(orderCountyList);
+            cityList.add(parent);
+        }
+
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<FloorNoUserVo> orderList=new ArrayList<>();
+        int i=0;
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (FloorNoUserVo wzCity : cityList) {
+                if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                    wzCity.setFlag(i%2==0);
+                    orderList.add(wzCity);
+                    i++;
+                }
+            }
+        }
+
+        double aavera;
+        if(abuildingAreaRentArea+abuildingAreaIdelArea==0){
+            aavera=0;
+        }else{
+            aavera=formatDouble(abuildingAreaIdelArea/(abuildingAreaRentArea+abuildingAreaIdelArea))*100;
+        }
+        province.setBuildingArea(formatDouble(abuildArea));
+        province.setBuildingAreaIdelArea(formatDouble(abuildingAreaIdelArea));
+        province.setBuildingAreaUnavailable(formatDouble(abuildingAreaUnavailable));
+        province.setBuildingAreaUseArea(formatDouble(abuildingAreaUseArea));
+        province.setBuildingAreaRentArea(formatDouble(abuildingAreaRentArea));
+        province.setAverage(formatDouble(aavera));
+        province.setChildren(orderList);
+        resultList.add(province);
+
+        int total = wzLandManageDetailsService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/queryHouseYear")
+    @IgnoreAuth
+    public R queryHouseYear(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<FloorNoUserVo> leaveUseVoList = wzLandManageDetailsService.queryLeaveUseList(query);
+        Map<String,List<FloorNoUserVo>> map=new HashMap<>();
+        for (FloorNoUserVo leaveUseVo : leaveUseVoList) {
+            double avera=leaveUseVo.getBuildingAreaIdelArea()/(leaveUseVo.getBuildingAreaIdelArea()+leaveUseVo.getBuildingAreaRentArea());
+            avera=formatDouble(avera);
+            leaveUseVo.setAverage(avera);
+
+            Calendar cal1=Calendar.getInstance();
+            cal1.setTime(leaveUseVo.getBuildingStartyear());
+            int year1=cal1.get(Calendar.YEAR);
+            Calendar cal2=Calendar.getInstance();
+            cal2.setTime(new Date());
+            int year2=cal2.get(Calendar.YEAR);
+            int num=year2-year1;
+            leaveUseVo.setHouseYearNum(num);
+
+
+            List<FloorNoUserVo> list;
+            if(map.get(leaveUseVo.getCity())!=null){
+                list=map.get(leaveUseVo.getCity());
+                list.add(leaveUseVo);
+            }else{
+                list=new ArrayList<>();
+                list.add(leaveUseVo);
+            }
+            map.put(leaveUseVo.getCity(),list);
+        }
+        List<HouseYearVo> resultList=new ArrayList<>();
+        for(Map.Entry<String,List<FloorNoUserVo>> entry:map.entrySet()){
+            List<FloorNoUserVo> list=entry.getValue();
+            //对该list相同的县进行统计
+            Map<String,List<FloorNoUserVo>> leaveMap=new HashMap<>();
+            for (FloorNoUserVo leaveUseVo : list) {
+                if(leaveMap.get(leaveUseVo.getCounty())!=null){
+                    list=leaveMap.get(leaveUseVo.getCounty());
+                    list.add(leaveUseVo);
+                }else{
+                    list=new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                leaveMap.put(leaveUseVo.getCounty(),list);
+            }
+
+            List<HouseYearVo> houseYearVoList=new ArrayList<>();
+            for (Map.Entry<String,List<FloorNoUserVo>> entry1:leaveMap.entrySet()){
+                List<FloorNoUserVo> value = entry1.getValue();
+                HouseYearVo yearVo=new HouseYearVo();
+                yearVo.setCity(value.get(0).getCity());
+                yearVo.setCityName(value.get(0).getCityName());
+                yearVo.setCounty(value.get(0).getCounty());
+                yearVo.setCountyName(value.get(0).getCountyName());
+                for (FloorNoUserVo leaveUseVo : value) {
+
+                }
+                houseYearVoList.add(yearVo);
+            }
+
+            HouseYearVo parent=new HouseYearVo();
+            parent.setCity(houseYearVoList.get(0).getCity());
+            parent.setCountyName(houseYearVoList.get(0).getCityName());
+            parent.setChildren(houseYearVoList);
+            resultList.add(parent);
+        }
+        int total = wzLandManageDetailsService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 土地详情
+     */
+    @RequestMapping("/queryLandDetail")
+    @IgnoreAuth
+    public R queryHouseDetail(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzLandManageDetailsEntity> list = wzLandManageDetailsService.queryList(query);
+        Query query1 = new Query(pageMap);
+        int total = wzLandManageDetailsService.queryTotal(query1);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+
+    /**
+     * 土地详情
+     */
+    @RequestMapping("/queryLandDetailByCode")
+    @IgnoreAuth
+    public R queryHouseDetailByCode(@RequestBody PageMap pageMap) {
+        //查询列表数据
+//        Query query = new Query(pageMap);
+        Map<String,Object> query=new HashMap<>();
+        query.putAll(pageMap.getMap());
+        List<WzLandManageDetailsEntity> list = wzLandManageDetailsService.queryList(query);
+        Query query1 = new Query(pageMap);
+        int total = wzLandManageDetailsService.queryTotal(query1);
+        PageUtils pageUtil = new PageUtils(list, total, 0, 0);
+        return R.ok().put("page", pageUtil);
+    }
+
+
+    /**
+     * 清单excel
+     *
+     * @param response
+     */
+    @GetMapping("/excel")
+    @IgnoreAuth
+    public void excel(String name,String buildingNameAlias,String city,String county, HttpServletResponse response) {
+
+        DateFormat df = new SimpleDateFormat("yyyyMMdd");
+        ExcelExport ee1 = new ExcelExport("报表" + df.format(new Date()));
+        Map<String,Object> map=new HashMap<>();
+        if(buildingNameAlias!=null){
+            map.put("buildingNameAlias",buildingNameAlias);
+        }
+        if(city!=null){
+            map.put("city",city);
+        }
+        if(county!=null){
+            map.put("county",county);
+        }
+        //判定是闲置管理还是详情
+        if(name.contains("详单")){
+            ee1 = new ExcelExport("土地管理_土地详单" + df.format(new Date()));
+            responseLandDetail(df,ee1,map);
+            ee1.export(response);
+        }else{
+            ee1 = new ExcelExport("土地管理_闲置管理" + df.format(new Date()));
+            responseLandEchart(df,ee1,map);
+            ee1.export(response);
+        }
+    }
+
+    public void responseLandEchart(DateFormat df, ExcelExport ee1, Map<String, Object> map1){
+        try {
+            int repeatNum=0;
+            //全省节点
+            FloorNoUserVo province=new FloorNoUserVo();
+            province.setCity("全省");
+            province.setCounty("全省");
+
+            List<FloorNoUserVo> leaveUseVoList = wzLandManageDetailsService.queryLeaveUseList(map1);
+            Map<String,List<FloorNoUserVo>> map=new HashMap<>();
+            for (FloorNoUserVo leaveUseVo : leaveUseVoList) {
+                double avera=0l;
+                if(leaveUseVo.getBuildingAreaIdelArea()+leaveUseVo.getBuildingAreaRentArea()==0){
+                    avera=0;
+                }else{
+                    avera=leaveUseVo.getBuildingAreaIdelArea()/(leaveUseVo.getBuildingAreaIdelArea()+leaveUseVo.getBuildingAreaRentArea());
+                    avera=formatDouble(avera)*100;
+                }
+                leaveUseVo.setAverage(avera);
+                List<FloorNoUserVo> list;
+                if(map.get(leaveUseVo.getCity())!=null){
+                    list=map.get(leaveUseVo.getCity());
+                    list.add(leaveUseVo);
+                }else{
+                    list=new ArrayList<>();
+                    list.add(leaveUseVo);
+                }
+                map.put(leaveUseVo.getCity(),list);
+            }
+            List<FloorNoUserVo> resultList=new ArrayList<>();
+            List<FloorNoUserVo> cityList=new ArrayList<>();
+            double abuildingAreaIdelArea=0l;
+            double abuildingAreaRentArea=0l;
+            double abuildArea=0l;
+            double abuildingAreaUnavailable=0l;
+            double abuildingAreaUseArea=0l;
+
+            for(Map.Entry<String,List<FloorNoUserVo>> entry:map.entrySet()) {
+
+                List<FloorNoUserVo> list = entry.getValue();
+                //对该list相同的县进行统计
+                Map<String, List<FloorNoUserVo>> countyMap = new HashMap<>();
+                for (FloorNoUserVo leaveUseVo : list) {
+                    if (countyMap.get(leaveUseVo.getCounty()) != null) {
+                        list = countyMap.get(leaveUseVo.getCounty());
+                        list.add(leaveUseVo);
+                    } else {
+                        list = new ArrayList<>();
+                        list.add(leaveUseVo);
+                    }
+                    countyMap.put(leaveUseVo.getCounty(), list);
+                }
+
+                List<FloorNoUserVo> countyList = new ArrayList<>();
+                double citybuildingAreaIdelArea = 0l;
+                double citybuildingAreaRentArea = 0l;
+                double citybuildArea = 0l;
+                double citybuildingAreaUnavailable = 0l;
+                double citybuildingAreaUseArea = 0l;
+                for (Map.Entry<String, List<FloorNoUserVo>> countyEntry : countyMap.entrySet()) {
+                    double buildingAreaIdelArea = 0l;
+                    double buildingAreaRentArea = 0l;
+                    double buildArea = 0l;
+                    double buildingAreaUnavailable = 0l;
+                    double buildingAreaUseArea = 0l;
+
+                    String reapStr="";
+                    if (countyEntry.getKey().equals("市本部")){
+                        reapStr="市本部"+repeatNum;
+                        repeatNum++;
+                    }
+
+                    FloorNoUserVo county = new FloorNoUserVo();
+                    for (FloorNoUserVo leaveUseVo : countyEntry.getValue()) {
+                        county.setCity(leaveUseVo.getCounty());
+                        county.setCounty(leaveUseVo.getCounty());
+                        if(!reapStr.equals("")){
+                            county.setCity(reapStr);
+                            county.setCounty(reapStr);
+                            county.setCountyName(reapStr);
+                        }
+
+                        buildingAreaIdelArea += leaveUseVo.getBuildingAreaIdelArea();
+                        buildingAreaRentArea += leaveUseVo.getBuildingAreaRentArea();
+                        buildArea += leaveUseVo.getBuildingArea();
+                        buildingAreaUnavailable += leaveUseVo.getBuildingAreaUnavailable();
+                        buildingAreaUseArea += leaveUseVo.getBuildingAreaUseArea();
+
+                        citybuildingAreaIdelArea += leaveUseVo.getBuildingAreaIdelArea();
+                        citybuildingAreaRentArea += leaveUseVo.getBuildingAreaRentArea();
+                        citybuildArea += leaveUseVo.getBuildingArea();
+                        citybuildingAreaUnavailable += leaveUseVo.getBuildingAreaUnavailable();
+                        citybuildingAreaUseArea += leaveUseVo.getBuildingAreaUseArea();
+
+                        abuildingAreaIdelArea += leaveUseVo.getBuildingAreaIdelArea();
+                        abuildingAreaRentArea += leaveUseVo.getBuildingAreaRentArea();
+                        abuildArea += leaveUseVo.getBuildingArea();
+                        abuildingAreaUnavailable += leaveUseVo.getBuildingAreaUnavailable();
+                        abuildingAreaUseArea += leaveUseVo.getBuildingAreaUseArea();
+                    }
+                    double avera=0;
+                    if(buildingAreaIdelArea+buildingAreaRentArea==0){
+                        avera=0;
+                    }else{
+                        try{
+                            avera=formatDouble(buildingAreaIdelArea/(buildingAreaRentArea+buildingAreaIdelArea))*100;
+                        }catch (Exception e){
+                            e.printStackTrace();
+                        }
+
+                    }
+                    county.setBuildingArea(formatDouble(buildArea));
+                    county.setBuildingAreaIdelArea(formatDouble(buildingAreaIdelArea));
+                    county.setBuildingAreaUnavailable(formatDouble(buildingAreaUnavailable));
+                    county.setBuildingAreaUseArea(formatDouble(buildingAreaUseArea));
+                    county.setBuildingAreaRentArea(formatDouble(buildingAreaRentArea));
+                    county.setAverage(formatDouble(avera));
+                    countyList.add(county);
+                }
+                List<FloorNoUserVo> orderCountyList=new ArrayList<>();
+                try{
+                    //对countList 进行排序
+                    OtnAreaEntity area=otnAreaService.queryObject(list.get(0).getCity());
+                    List<OtnAreaEntity> countyAreaList=otnAreaService.getCityOption(area.getId());
+                    for (OtnAreaEntity otnAreaEntity : countyAreaList) {
+                        for (FloorNoUserVo wzCity : countyList) {
+                            if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                                orderCountyList.add(wzCity);
+                            }
+                        }
+                    }
+                }catch (Exception e){
+                    orderCountyList=countyList;
+                    e.printStackTrace();
+                }
+
+
+                double avera;
+                if(citybuildingAreaRentArea+citybuildingAreaIdelArea==0){
+                    avera=0;
+                }else{
+                    avera=formatDouble(citybuildingAreaIdelArea/(citybuildingAreaRentArea+citybuildingAreaIdelArea))*100;
+                }
+
+                FloorNoUserVo parent = new FloorNoUserVo();
+                parent.setBuildingArea(formatDouble(citybuildArea));
+                parent.setBuildingAreaIdelArea(formatDouble(citybuildingAreaIdelArea));
+                parent.setBuildingAreaUnavailable(formatDouble(citybuildingAreaUnavailable));
+                parent.setBuildingAreaUseArea(formatDouble(citybuildingAreaUseArea));
+                parent.setBuildingAreaRentArea(formatDouble(citybuildingAreaRentArea));
+                parent.setCity(list.get(0).getCity());
+                parent.setCountyName(list.get(0).getCityName());
+                parent.setAverage(formatDouble(avera));
+                parent.setChildren(orderCountyList);
+                cityList.add(parent);
+            }
+
+            //对cityList 进行排序
+            List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+            List<FloorNoUserVo> orderList=new ArrayList<>();
+            for (OtnAreaEntity otnAreaEntity : areaList) {
+                for (FloorNoUserVo wzCity : cityList) {
+                    if(otnAreaEntity.getName().equals(wzCity.getCity())){
+                        orderList.add(wzCity);
+                    }
+                }
+            }
+
+            double aavera;
+            if(abuildingAreaRentArea+abuildingAreaIdelArea==0){
+                aavera=0;
+            }else{
+                aavera=formatDouble(abuildingAreaIdelArea/(abuildingAreaRentArea+abuildingAreaIdelArea))*100;
+            }
+            province.setBuildingArea(formatDouble(abuildArea));
+            province.setBuildingAreaIdelArea(formatDouble(abuildingAreaIdelArea));
+            province.setBuildingAreaUnavailable(formatDouble(abuildingAreaUnavailable));
+            province.setBuildingAreaUseArea(formatDouble(abuildingAreaUseArea));
+            province.setBuildingAreaRentArea(formatDouble(abuildingAreaRentArea));
+            province.setAverage(formatDouble(aavera));
+            province.setChildren(orderList);
+            resultList.add(province);
+
+            List<Object> colList=new ArrayList();;
+            List<Object[]> allList = new ArrayList();
+            for (int i = 0; i < resultList.size(); i++) {
+
+                if(resultList.get(i).getCity().contains("省")){
+                    colList = new ArrayList();
+                    colList.add(resultList.get(i).getCity());
+                    colList.add("");
+                    colList.add("");
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingArea(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaUnavailable(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaUseArea(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaIdelArea(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getBuildingAreaRentArea(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getAverage(),true));
+                    allList.add(colList.toArray());
+
+                    //处理城市的
+                    List<FloorNoUserVo> cityList1=resultList.get(i).getChildren();
+                    for (FloorNoUserVo floorNoUserVo : cityList1) {
+                        colList = new ArrayList();
+                        colList.add("");
+                        colList.add(floorNoUserVo.getCity());
+                        colList.add("");
+
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getBuildingArea(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getBuildingAreaUnavailable(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getBuildingAreaUseArea(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getBuildingAreaIdelArea(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getBuildingAreaRentArea(),true));
+                        colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getAverage(),true));
+                        allList.add(colList.toArray());
+
+                        //处理县城的
+                        List<FloorNoUserVo> countyList1=floorNoUserVo.getChildren();
+                        for (FloorNoUserVo noUserVo : countyList1) {
+                            colList = new ArrayList();
+                            colList.add("");
+                            colList.add("");
+                            colList.add(noUserVo.getCity());
+
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getBuildingArea(),true));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getBuildingAreaUnavailable(),true));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getBuildingAreaUseArea(),true));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getBuildingAreaIdelArea(),true));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getBuildingAreaRentArea(),true));
+                            colList.add(WzHouseMaintenaCostController.toThousands(noUserVo.getAverage(),true));
+
+                            allList.add(colList.toArray());
+                        }
+                    }
+                }
+            }
+            String[] header = new String[]{
+                    "资产所属单位(一级)",
+                    "资产所属单位(二级)",
+                    "资产所属单位(三级)",
+                    "总面积",
+                    "不可使用面积",
+                    "自用面积",
+                    "闲置面积",
+                    "出租面积",
+                    "闲置率"
+            };
+            ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void responseLandDetail(DateFormat df, ExcelExport ee1, Map<String, Object> map){
+        try {
+            List<WzLandManageDetailsEntity> list = wzLandManageDetailsService.queryList(map);
+            List<Object> colList;
+            List<Object[]> allList = new ArrayList();
+            for (int i = 0; i < list.size(); i++) {
+                colList = new ArrayList();
+                colList.add(list.get(i).getProvince());
+                colList.add(list.get(i).getCity());
+                colList.add(list.get(i).getCounty());
+                colList.add(list.get(i).getLandAlias());
+                colList.add(list.get(i).getLandNature());
+                colList.add(list.get(i).getUsageRightsType());
+                colList.add(list.get(i).getLandUse());
+                colList.add(list.get(i).getGetDate());
+                colList.add(list.get(i).getIdelLandBegindate());
+                colList.add(list.get(i).getBuildingNameAlias());
+                colList.add(list.get(i).getStandardAddress());
+                colList.add(list.get(i).getInvestmentEntity());        //投资主体
+                colList.add(list.get(i).getManagementHierarchy());     //管理层级
+                colList.add(list.get(i).getOwnershipStatus());         //权属状态
+                colList.add(list.get(i).getUseState());                //使用状态
+                colList.add(list.get(i).getTotalLandArea());           //土地总面积(㎡)
+                colList.add(list.get(i).getLandSelfUseArea());         //土地自用面积(㎡)
+                colList.add(list.get(i).getIdelLandBegindate());        //土地闲置面积(㎡)
+                colList.add(list.get(i).getLandRentUseArea());          //土地出租面积(㎡)
+                colList.add(list.get(i).getLanNoUnavailableArea());     //土地不可使用面积(㎡)
+                colList.add(list.get(i).getLandCertificate());          //是否有土地证
+                colList.add(list.get(i).getNoLandCertificateReason());  //无土地证原因
+                colList.add(list.get(i).getProtectLandRisk());          //是否有保地风险
+                colList.add(list.get(i).getClearingLand());             //是否空地
+                colList.add(list.get(i).getCourtyard());                //是否有院落
+                colList.add(list.get(i).getUnrelatedAssets());          //未关联资产
+                colList.add(list.get(i).getAssetCode());                //资产编号
+                colList.add(list.get(i).getAstsLabe());                 //资产标签号
+                colList.add(list.get(i).getResponsibleDepartment());    //责任部门
+                colList.add(list.get(i).getResponsiblePerson());        //责任人
+                colList.add(list.get(i).getBuildingLongitude());        //经度
+                colList.add(list.get(i).getBuildingDimension());        //纬度
+                colList.add(list.get(i).getBuildingActualPropertyOwner());  //实际产权人
+                colList.add(list.get(i).getSpecialInstructions());          //特殊说明
+                colList.add(list.get(i).getUseAreaIdelArea());         //使用面积-闲置(㎡)
+                colList.add(list.get(i).getUseAreaUnavailableArea());   //使用面积-不可使用(㎡)
+                colList.add(list.get(i).getLandManageName());           //楼长姓名
+                colList.add(list.get(i).getLandManageCompany());        //楼长所在单位
+                colList.add(list.get(i).getLandLongitude());            //土地经度
+                colList.add(list.get(i).getLandDimension());            //土地纬度
+                colList.add(list.get(i).getLandActualPropertyOwner());   //土地实际产权人
+
+                allList.add(colList.toArray());
+            }
+            String[] header = new String[]{
+                    "资产所属单位(一级)",
+                    "资产所属单位(二级)",
+                    "资产所属单位(三级)",
+                    "土地别名",
+                    "土地性质",
+                    "使用权类型",
+                    "地类用途",
+                    "取得日期",
+                    "闲置开始时间",
+                    "局址别名",
+                    "标准地址",
+                    "投资主体",
+                    "管理层级",
+                    "权属状态",
+                    "使用状态",
+                    "土地总面积(㎡)",
+                    "土地自用面积(㎡)",
+                    "土地闲置面积(㎡)",
+                    "土地出租面积(㎡)",
+                    "土地不可使用面积(㎡)",
+                    "是否有土地证",
+                    "无土地证原因",
+                    "是否有保地风险",
+                    "是否空地",
+                    "是否有院落",
+                    "未关联资产",
+                    "资产编号",
+                    "资产标签号",
+                    "责任部门",
+                    "责任人",
+                    "经度",
+                    "纬度",
+                    "实际产权人",
+                    "特殊说明",
+                    "使用面积-闲置(㎡)",
+                    "使用面积-不可使用(㎡)",
+                    "楼长姓名",
+                    "楼长所在单位",
+                    "土地经度",
+                    "土地纬度",
+                    "土地实际产权人"
+            };
+            ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public double formatDouble(double num){
+        DecimalFormat format2 = new DecimalFormat("#.0000");
+        String str2 = format2.format(num);
+        double avera = Double.parseDouble(str2);
+        return avera;
+    }
+
+    /**
+     * 获取局址别名
+     */
+    @RequestMapping("/getBuildingNameCode")
+    @IgnoreAuth
+    public R getBuildingNameCode(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<String> list = wzLandManageDetailsService.getBuildingNameCode(query);
+        Query query1 = new Query(pageMap);
+        int total = wzLandManageDetailsService.queryBuildingNameCodeTotal(query1);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 获取局址别名
+     */
+    @RequestMapping("/getBuildingNameAlias")
+    @IgnoreAuth
+    public R getBuildingNameAlias(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<String> list = wzLandManageDetailsService.getBuildingNameAlias(query);
+        Query query1 = new Query(pageMap);
+        int total = wzLandManageDetailsService.getBuildingNameAliasTotal(query1);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+}

+ 140 - 0
src/main/java/com/example/controller/WzLowestUnitPriceController.java

@@ -0,0 +1,140 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.WzLowestUnitPriceEntity;
+import com.example.service.WzLowestUnitPriceService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import com.example.utils.excel.ExcelExport;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/wzLowestUnitPrice")
+public class WzLowestUnitPriceController {
+
+    @Autowired
+    private WzLowestUnitPriceService wzLowestUnitPriceService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzLowestUnitPriceEntity> resultList = wzLowestUnitPriceService.queryList(query);
+        for (WzLowestUnitPriceEntity wzLowestUnitPriceEntity : resultList) {
+            double price=Double.valueOf(wzLowestUnitPriceEntity.getIncludingValueAddedTaxContractAmount())/(Double.valueOf(wzLowestUnitPriceEntity.getContractLeaseTerm())*Double.valueOf(wzLowestUnitPriceEntity.getContractedRentalArea()));
+            wzLowestUnitPriceEntity.setPrice(formatDouble(price));
+        }
+        Query query1 = new Query(pageMap);
+        int total = wzLowestUnitPriceService.queryTotal(query1);
+
+        List<WzLowestUnitPriceEntity> newList = resultList.stream().sorted(Comparator.comparing(WzLowestUnitPriceEntity::getPrice)).collect(Collectors.toList());
+
+
+        Collections.reverse(newList);//反转顺序
+
+        PageUtils pageUtil = new PageUtils(newList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 清单excel
+     */
+    @GetMapping("/excel")
+    @IgnoreAuth
+    public void excel(String name, String buildingNameAlias,String statisticalMonth, String city, String county, HttpServletResponse response) {
+        Map<String, Object> map = new HashMap<>();
+        if (buildingNameAlias != null) {
+            map.put("buildingNameAlias", buildingNameAlias);
+        }
+        if (city != null) {
+            map.put("city", city);
+        }
+        if (county != null) {
+            map.put("county", county);
+        }
+        if(statisticalMonth!=null){
+            map.put("statisticalMonth", statisticalMonth);
+        }
+        List<WzLowestUnitPriceEntity> resultList = wzLowestUnitPriceService.queryList(map);
+        for (WzLowestUnitPriceEntity wzLowestUnitPriceEntity : resultList) {
+            double price=Double.valueOf(wzLowestUnitPriceEntity.getIncludingValueAddedTaxContractAmount())/(Double.valueOf(wzLowestUnitPriceEntity.getContractLeaseTerm())*Double.valueOf(wzLowestUnitPriceEntity.getContractedRentalArea()));
+            wzLowestUnitPriceEntity.setPrice(formatDouble(price));
+        }
+        resultList = resultList.stream().sorted(Comparator.comparing(WzLowestUnitPriceEntity::getPrice)).collect(Collectors.toList());
+        Collections.reverse(resultList);//反转顺序
+
+        DateFormat df = new SimpleDateFormat("yyyyMMdd");
+        ExcelExport ee1 = new ExcelExport("出租监控_每类地段每平米出租单价最低TOP10" + df.format(new Date()));
+
+        List<Object> colList;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+            colList = new ArrayList();
+            colList.add(resultList.get(i).getCity());
+            colList.add(resultList.get(i).getAreaSector());
+            colList.add(resultList.get(i).getBuildingAlias());
+            colList.add(resultList.get(i).getRentalStartDate());
+            colList.add(resultList.get(i).getContractLeaseTerm());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getContractedRentalArea(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getIncludingValueAddedTaxContractAmount(),true));
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getPrice(),true));
+            colList.add(resultList.get(i).getContractName());
+            colList.add(resultList.get(i).getUserName());
+            colList.add(resultList.get(i).getUserType());
+            colList.add(resultList.get(i).getAddress());
+            allList.add(colList.toArray());
+        }
+        String[] header = new String[]{
+                "二级单位",
+                "地段",
+                "建筑/土地别名",
+                "出租起始日期",
+                "合同租期(月缴)",
+                "合同出租面积",
+                "含增值税合同金额",
+                "每平米单价=不含税总价/租期/面积",
+                "合同名称",
+                "对方全称",
+                "客户类型",
+                "标准地址",
+
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+        ee1.export(response);
+    }
+
+    public double formatDouble(double num){
+        double avera=0;
+        try{
+            DecimalFormat format2 = new DecimalFormat("#.00");
+            String str2 = format2.format(num);
+            avera = Double.parseDouble(str2);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return avera;
+    }
+}

+ 137 - 0
src/main/java/com/example/controller/WzOtnAreaController.java

@@ -0,0 +1,137 @@
+package com.example.controller;
+
+import cn.hutool.poi.excel.WorkbookUtil;
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzHouseContractCompareEntity;
+import com.example.service.WzHouseContractCompareService;
+import com.example.service.WzHouseContractTopService;
+import com.example.service.WzOtnAreaService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.File;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+import static com.example.utils.excel.ExcelTool.getCellValue;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/wzOtnArea")
+public class WzOtnAreaController {
+
+    @Autowired
+    private WzOtnAreaService wzOtnAreaService;
+    @Autowired
+    private WzHouseContractTopService wzHouseContractTopService;
+    @Autowired
+    private WzHouseContractCompareService wzHouseContractCompareService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<OtnAreaEntity> list = wzOtnAreaService.queryList(query);
+        int total = wzOtnAreaService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     *  查找所有的省份
+     */
+    @RequestMapping("/getCityOption/{id}")
+    @IgnoreAuth
+    public R getCityOption(@PathVariable("id") String id) {
+        List<OtnAreaEntity> list=wzOtnAreaService.getCityOption(Long.valueOf(id));
+        return R.ok().put("list",list);
+    }
+
+
+    /**
+     * 导入Excel
+     */
+    @PostMapping("/import")
+    @IgnoreAuth
+    public R importExcel(){
+        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
+        OtnAreaEntity sysConfig;
+        int errorIndex = 0;
+        try {
+            String[] title = new String[]{
+                    "使用单位层级","使用单位隶属的省级公司","使用单位隶属的地市级公司",
+                    "使用单位隶属的区县级公司",	"使用专业线","租入实际用途",
+                    "租入其他用途说明","城市区域","地段","合同总金额(含税)(元)","租入建筑面积(平米)", "租期(年)","每平米月租金","","",
+                    "合同编号","合同名称"
+            };
+            File file=new File("C:\\Users\\PRO\\Desktop\\版本\\version3\\test1.xlsx");
+            List<String[]> list = new ArrayList();
+            Workbook workbook = WorkbookUtil.createBook(file);
+            // 获取第一张工作表
+            Sheet sheet =  workbook.getSheetAt(0);
+            // 循环获取每一行数据 因为默认第一行为标题行,我们可以从 1 开始循环,如果需要读取标题行,从 0 开始
+            // sheet.getRows() 获取总行数
+            Row row;
+            for (int i = sheet.getFirstRowNum() + 1; i <= sheet.getLastRowNum(); i++) {
+                row = sheet.getRow(i);
+                System.out.println(i);
+                if (i >= 1 && row != null && row.getCell(0) != null && !row.getCell(0).toString().equals("")) {
+                    String[] t = new String[title.length];
+                    for (int m = 0; m < title.length; m++) {
+                        Cell cell = row.getCell(m);
+                        t[m] = getCellValue(cell);
+                    }
+                    list.add(t);
+                }
+            }
+            for(int i=0;i<list.size();i++){
+                WzHouseContractCompareEntity topEntity=new WzHouseContractCompareEntity();
+                topEntity.setUseTheUnitsHierarchy(list.get(i)[0]);
+                topEntity.setProvince(list.get(i)[1]);
+                topEntity.setCity(list.get(i)[2]);
+                topEntity.setCounty(list.get(i)[3]);
+                topEntity.setUseTheProLine(list.get(i)[4]);
+                topEntity.setLeaseInPracticalUse(list.get(i)[5]);
+                topEntity.setDescriptionOfOtherUsesOfTheLease(list.get(i)[6]);
+                topEntity.setCityArea(list.get(i)[7]);
+                topEntity.setDistrict(list.get(i)[8]);
+                topEntity.setRentalBuildingArea(list.get(i)[9]);
+                topEntity.setHireTime(list.get(i)[10]);
+                topEntity.setTotalMonthlyRent(list.get(i)[11]);
+                topEntity.setContractAmountIncludingTax(list.get(i)[12]);
+                topEntity.setFtProvinceAverage(list.get(i)[13]);
+                topEntity.setPriceProvinceAverage(list.get(i)[14]);
+                topEntity.setContractNumber(list.get(i)[15]);
+                topEntity.setContractName(list.get(i)[16]);
+                wzHouseContractCompareService.save(topEntity);
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.error("第"+(errorIndex)+"行数据有问题,导入失败");
+        }
+        return R.ok();
+    }
+
+
+
+
+}

+ 35 - 0
src/main/java/com/example/controller/WzRemarkController.java

@@ -0,0 +1,35 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.WzRemarkEntity;
+import com.example.service.WzRemarkService;
+import com.example.utils.PageMap;
+import com.example.utils.Query;
+import com.example.utils.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/wzRemark")
+public class WzRemarkController {
+
+    @Autowired
+    private WzRemarkService wzRemarkService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzRemarkEntity> list = wzRemarkService.queryList(query);
+        return R.ok().put("list", list);
+    }
+
+}

+ 105 - 0
src/main/java/com/example/controller/WzRentHouseArrearsController.java

@@ -0,0 +1,105 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.WzRentHouseArrearsEntity;
+import com.example.service.WzRentHouseArrearsService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import com.example.utils.excel.ExcelExport;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/wzRentHouseArrears")
+public class WzRentHouseArrearsController {
+
+    @Autowired
+    private WzRentHouseArrearsService wzRentHouseArrearsService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        Query query1 = new Query(pageMap);
+
+        if(query.get("statisticalMonth")==null||query.get("statisticalMonth").toString().equals("")){
+            String lastTime=wzRentHouseArrearsService.getLastStaticMonth();
+            query.put("statisticalMonth",lastTime);
+            query1.put("statisticalMonth",lastTime);
+        }
+        List<WzRentHouseArrearsEntity> resultList = wzRentHouseArrearsService.queryList(query);
+        int total = wzRentHouseArrearsService.queryTotal(query1);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 清单excel
+     */
+    @GetMapping("/excel")
+    @IgnoreAuth
+    public void excel(String name, String buildingNameAlias,String statisticalMonth, String city, String county, HttpServletResponse response) {
+        Map<String, Object> map = new HashMap<>();
+        if(statisticalMonth==null||statisticalMonth.equals("")||statisticalMonth.equals("undefined")){
+            String lastTime=wzRentHouseArrearsService.getLastStaticMonth();
+            map.put("statisticalMonth",lastTime);
+        }
+        if (buildingNameAlias != null) {
+            map.put("buildingNameAlias", buildingNameAlias);
+        }
+        if (city != null) {
+            map.put("city", city);
+        }
+        if (county != null) {
+            map.put("county", county);
+        }
+        List<WzRentHouseArrearsEntity> resultList = wzRentHouseArrearsService.queryList(map);
+
+        DateFormat df = new SimpleDateFormat("yyyyMMdd");
+        ExcelExport ee1 = new ExcelExport("出租监控_出租房屋欠费超5万元" + df.format(new Date()));
+
+        List<Object> colList;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+            colList = new ArrayList();
+            colList.add(resultList.get(i).getMonth());
+            colList.add(resultList.get(i).getCity());
+            colList.add(resultList.get(i).getCounty());
+            colList.add(resultList.get(i).getUserName());
+            colList.add(resultList.get(i).getUserAttribute());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getArrears(),true));
+            allList.add(colList.toArray());
+
+        }
+        String[] header = new String[]{
+                "统计月份",
+                "地市",
+                "县区",
+                "用户名称",
+                "租户属性",
+                "累计欠费"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+        ee1.export(response);
+    }
+
+}
+

+ 108 - 0
src/main/java/com/example/controller/WzRentThreeMonthController.java

@@ -0,0 +1,108 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.WzRentThrMonthEntity;
+import com.example.service.WzRentThreeMonthService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import com.example.utils.excel.ExcelExport;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/wzRentThreeMonth")
+public class WzRentThreeMonthController {
+
+    @Autowired
+    private WzRentThreeMonthService wzRentThreeMonthService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        if(query.get("statisticalMonth")==null||query.get("statisticalMonth").toString().equals("")){
+            String lastTime=wzRentThreeMonthService.getLastStaticMonth();
+            query.put("statisticalMonth",lastTime);
+        }
+        List<WzRentThrMonthEntity> resultList = wzRentThreeMonthService.queryList(query);
+        int total = wzRentThreeMonthService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(resultList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 清单excel
+     */
+    @GetMapping("/excel")
+    @IgnoreAuth
+    public void excel(String statisticalMonth, String buildingNameAlias, String city, String county, HttpServletResponse response) {
+        Map<String, Object> map = new HashMap<>();
+        if (buildingNameAlias != null) {
+            map.put("buildingNameAlias", buildingNameAlias);
+        }
+        if (city != null) {
+            map.put("city", city);
+        }
+        if (county != null) {
+            map.put("county", county);
+        }
+        if(statisticalMonth==null||statisticalMonth.equals("")||statisticalMonth.equals("undefined")){
+            String lastTime=wzRentThreeMonthService.getLastStaticMonth();
+            map.put("statisticalMonth",lastTime);
+        }else{
+            map.put("statisticalMonth",statisticalMonth);
+        }
+        List<WzRentThrMonthEntity> resultList = wzRentThreeMonthService.queryList(map);
+
+        DateFormat df = new SimpleDateFormat("yyyyMMdd");
+        ExcelExport ee1 = new ExcelExport("出租监控_出租房屋连续3个月存在欠款" + df.format(new Date()));
+
+        List<Object> colList;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+            colList = new ArrayList();
+            colList.add(resultList.get(i).getMonth());
+            colList.add(resultList.get(i).getCity());
+            colList.add(resultList.get(i).getCounty());
+            colList.add(resultList.get(i).getUserName());
+            colList.add(resultList.get(i).getUserAttribute());
+            colList.add(resultList.get(i).getDataOne());
+            colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getAccumulatedArrears(),true));
+            colList.add(resultList.get(i).getUserEncoding());
+            allList.add(colList.toArray());
+
+        }
+        String[] header = new String[]{
+                "统计月份",
+                "地市",
+                "县区",
+                "用户名称",
+                "客户属性",
+                "欠费时长(月)",
+                "累计欠费",
+                "用户号码"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+        ee1.export(response);
+    }
+
+}
+

+ 271 - 0
src/main/java/com/example/controller/WzScoreRankingController.java

@@ -0,0 +1,271 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzHouseContracEntity;
+import com.example.entity.WzScoreRankingEntity;
+import com.example.entity.WzScoreVo;
+import com.example.entity.vo.housemanager.LeaveUseVo;
+import com.example.service.WzBuildManageDetailsService;
+import com.example.service.WzHouseContracService;
+import com.example.service.WzHouseMaintenaCostService;
+import com.example.service.WzOtnAreaService;
+import com.example.service.WzScoreRankingService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import com.example.utils.excel.ExcelExport;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/wzScoreRanking")
+public class WzScoreRankingController {
+
+    @Autowired
+    private WzScoreRankingService wzScoreRankingService;
+
+    @Autowired
+    private WzOtnAreaService otnAreaService;
+
+    @Autowired
+    private WzBuildManageDetailsService wzBuildManageDetailsService;
+    @Autowired
+    private WzHouseContracService wzHouseContracService;
+    @Autowired
+    private WzHouseMaintenaCostService wzHouseMaintenaCostService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        Query query1 = new Query(pageMap);
+        Query query2 = new Query(pageMap);
+        //闲置率
+        List<LeaveUseVo> ideaRateList=wzBuildManageDetailsService.queryLeaveUseList(query);
+        //出租欠费率
+        List<WzHouseContracEntity> rentArreList=wzHouseContracService.dealHouseContracList(query1);
+        //维修
+        List<WzScoreVo> scoreList= wzHouseMaintenaCostService.queryDailyModifyByScore(query2);
+
+        List<LeaveUseVo> ideaList=new ArrayList<>();
+        if(ideaRateList.size()>0){
+            ideaList=ideaRateList.get(0).getChildren();
+        }
+        List<WzHouseContracEntity> rentList=new ArrayList<>();
+        if(rentArreList.size()>0){
+            rentList   =rentArreList.get(0).getChildren();
+        }
+        List<WzScoreVo> scoreVoList=new ArrayList<>();
+        if(scoreList.size()>0){
+            scoreVoList=scoreList.get(0).getChildren();
+            if(rentList.size()>0){
+                scoreList.get(0).setUnitPricePerSquareMeter(rentList.get(0).getUnitPricePerSquareMeter());
+                scoreList.get(0).setRArrearsRate(rentList.get(0).getAverage());
+            }
+           if(ideaList.size()>0){
+               scoreList.get(0).setIdleRate(ideaList.get(0).getAverage());
+               scoreList.get(0).setRAbleRate(ideaList.get(0).getRentAverage());
+           }
+        }
+        for (WzScoreVo wzScoreVo : scoreVoList) {
+            for(LeaveUseVo useVo:ideaList){
+                if(wzScoreVo.getCity().equals(useVo.getCity())){
+                    wzScoreVo.setIdleRate(useVo.getAverage());
+                    wzScoreVo.setRAbleRate(useVo.getRentAverage());
+                    break;
+                }
+            }
+            for(WzHouseContracEntity con:rentList){
+                if(wzScoreVo.getCity().equals(con.getCity())){
+                    wzScoreVo.setRArrearsRate(con.getAverage());
+                    wzScoreVo.setUnitPricePerSquareMeter(con.getUnitPricePerSquareMeter());
+                    break;
+                }
+            }
+        }
+        PageUtils pageUtil = new PageUtils(scoreList, 0, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+
+
+    @RequestMapping("/echartList")
+    @IgnoreAuth
+    public R echartList(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzScoreRankingEntity> list = wzScoreRankingService.queryList(query);
+        List<WzScoreRankingEntity> allList=new ArrayList<>();
+        for (WzScoreRankingEntity wzScoreRankingEntity : list) {
+            if(wzScoreRankingEntity.getCity()!=null){
+                allList.add(wzScoreRankingEntity);
+            }
+        }
+        //对cityList 进行排序
+        List<OtnAreaEntity> areaList=otnAreaService.getCityOption(0l);
+        List<WzScoreRankingEntity> orderList=new ArrayList<>();
+        for (OtnAreaEntity otnAreaEntity : areaList) {
+            for (WzScoreRankingEntity wzCity : allList) {
+                if(wzCity.getCity().contains(otnAreaEntity.getName())){
+                    orderList.add(wzCity);
+                }
+            }
+        }
+        PageUtils pageUtil = new PageUtils(orderList, 0, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 清单excel
+     */
+    @GetMapping("/excel")
+    @IgnoreAuth
+    public void excel(String name,String statisticalMonth,String city,String county, HttpServletResponse response) {
+        Map<String,Object> map0=new HashMap<>();
+        Map<String,Object> map1=new HashMap<>();
+        Map<String,Object> map2=new HashMap<>();
+        if(statisticalMonth!=null){
+            map0.put("statisticalMonth",statisticalMonth);
+            map1.put("statisticalMonth",statisticalMonth);
+            map2.put("statisticalMonth",statisticalMonth);
+        }
+        if(city!=null){
+            map0.put("city",city);
+            map1.put("city",city);
+            map2.put("city",city);
+        }
+        if(county!=null){
+            map0.put("county",county);
+            map1.put("county",county);
+            map2.put("county",county);
+        }
+
+        DateFormat df = new SimpleDateFormat("yyyyMMdd");
+        ExcelExport ee1;
+
+        //判定是闲置管理还是详情
+        if(name.contains("综合评价总分排名")){
+            ee1 = new ExcelExport("综合评价总分排名" + df.format(new Date()));
+            responseTab1(df,ee1,map0,map1,map2);
+            ee1.export(response);
+        }else{
+            ee1 = new ExcelExport("综合评价总分排名" + df.format(new Date()));
+            responseTab1(df,ee1,map0,map1,map2);
+            ee1.export(response);
+        }
+    }
+
+    public void responseTab1(DateFormat df, ExcelExport ee1, Map<String, Object> map0, Map<String, Object> map1, Map<String, Object> map2){
+
+        //闲置率
+        List<LeaveUseVo> ideaRateList=wzBuildManageDetailsService.queryLeaveUseList(map0);
+        //出租欠费率
+        List<WzHouseContracEntity> rentArreList=wzHouseContracService.dealHouseContracList(map1);
+        //维修
+        List<WzScoreVo> resultList= wzHouseMaintenaCostService.queryDailyModifyByScore(map2);
+
+        List<LeaveUseVo> ideaList=new ArrayList<>();
+        if(ideaRateList.size()>0){
+            ideaList=ideaRateList.get(0).getChildren();
+        }
+        List<WzHouseContracEntity> rentList=new ArrayList<>();
+        if(rentArreList.size()>0){
+            rentList   =rentArreList.get(0).getChildren();
+        }
+        List<WzScoreVo> scoreVoList=new ArrayList<>();
+        if(resultList.size()>0){
+            scoreVoList=resultList.get(0).getChildren();
+            if(rentList.size()>0){
+                resultList.get(0).setUnitPricePerSquareMeter(rentList.get(0).getUnitPricePerSquareMeter());
+                resultList.get(0).setRArrearsRate(rentList.get(0).getAverage());
+            }
+            if(ideaList.size()>0){
+                resultList.get(0).setIdleRate(ideaList.get(0).getAverage());
+                resultList.get(0).setRAbleRate(ideaList.get(0).getRentAverage());
+            }
+        }
+        for (WzScoreVo wzScoreVo : scoreVoList) {
+            for(LeaveUseVo useVo:ideaList){
+                if(wzScoreVo.getCity().equals(useVo.getCity())){
+                    wzScoreVo.setIdleRate(useVo.getAverage());
+                    wzScoreVo.setRAbleRate(useVo.getRentAverage());
+                    break;
+                }
+            }
+            for(WzHouseContracEntity con:rentList){
+                if(wzScoreVo.getCity().equals(con.getCity())){
+                    wzScoreVo.setRArrearsRate(con.getAverage());
+                    wzScoreVo.setUnitPricePerSquareMeter(con.getUnitPricePerSquareMeter());
+                    break;
+                }
+            }
+        }
+
+        List<Object> colList=new ArrayList();;
+        List<Object[]> allList = new ArrayList();
+        for (int i = 0; i < resultList.size(); i++) {
+
+            if(resultList.get(i).getCity().contains("省")){
+                colList = new ArrayList();
+                colList.add(resultList.get(i).getCity());
+                colList.add("");
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getIdleRate(),true)+"%");
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getRAbleRate(),true)+"%");
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getRArrearsRate(),true)+"%");
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getUnitPricePerSquareMeter(),true));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getDailyNum(),false));
+                colList.add(WzHouseMaintenaCostController.toThousands(resultList.get(i).getHighNum(),false));
+                allList.add(colList.toArray());
+
+                //处理城市的
+                List<WzScoreVo> cityList1=resultList.get(i).getChildren();
+                for (WzScoreVo floorNoUserVo : cityList1) {
+                    colList = new ArrayList();
+                    colList.add("");
+                    colList.add(floorNoUserVo.getCity());
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getIdleRate(),true)+"%");
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getRAbleRate(),true)+"%");
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getRArrearsRate(),true)+"%");
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getUnitPricePerSquareMeter(),true));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getDailyNum(),false));
+                    colList.add(WzHouseMaintenaCostController.toThousands(floorNoUserVo.getHighNum(),false));
+                    allList.add(colList.toArray());
+
+                }
+            }
+        }
+        String[] header = new String[]{
+                "资产所属单位(一级)",
+                "资产所属单位(二级)",
+                "闲置率=出/(出+闲)",
+                "可出租率=(出+闲)/(自+出+闲)",
+                "出租欠费率=欠费合同/合同总数",
+                "每平方单价=不含税总价/租期/面积",
+                "大于万元零星维修次数",
+                "高频(大于每月1次)维修建筑数",
+                "总分",
+                "排名"
+        };
+        ee1.addSheetByArray(df.format(new Date()) + "清单", allList, header);
+    }
+
+
+}

+ 94 - 0
src/main/java/com/example/controller/WzStrategyController.java

@@ -0,0 +1,94 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.WzStrategyEntity;
+import com.example.service.WzStrategyService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/wzStrategy")
+public class WzStrategyController {
+
+    @Autowired
+    private WzStrategyService wzStrategyService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzStrategyEntity> list = wzStrategyService.queryList(query);
+        Query query1 = new Query(pageMap);
+        int total = wzStrategyService.queryTotal(query1);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+    * 保存
+    */
+    @RequestMapping("/save")
+    @IgnoreAuth
+    public R save(@RequestBody WzStrategyEntity bBizItem) {
+        bBizItem.setCreator("admin");
+        bBizItem.setCreateTime(new Date());
+        bBizItem.setType(1);
+        wzStrategyService.save(bBizItem);
+        return R.ok();
+    }
+
+    @RequestMapping("/del")
+    @IgnoreAuth
+    public R del(@RequestBody Map map) {
+        wzStrategyService.delete(Integer.valueOf(map.get("id").toString()));
+        return R.ok();
+    }
+
+    @RequestMapping("/getObject")
+    @IgnoreAuth
+    public R getObject(@RequestBody Map map) {
+        WzStrategyEntity object = wzStrategyService.getObject(Integer.valueOf(map.get("id").toString()));
+        return R.ok().put("object",object);
+    }
+
+    @RequestMapping("/getObjectByType")
+    @IgnoreAuth
+    public R getObjectByType(@RequestBody Map map) {
+        WzStrategyEntity object = wzStrategyService.getObjectByType();
+        return R.ok().put("object",object);
+    }
+
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/update")
+    @IgnoreAuth
+    public R update(@RequestBody Map map) {
+        if(map.get("type")!=null){
+            if(map.get("type").toString().equals("false")){
+                map.put("type",0);
+            }else{
+                map.put("type",1);
+            }
+        }
+        Long id=Long.valueOf(map.get("id").toString());
+        map.put("id",id);
+        wzStrategyService.update(map);
+        return R.ok();
+    }
+}

+ 49 - 0
src/main/java/com/example/controller/WzUserController.java

@@ -0,0 +1,49 @@
+package com.example.controller;
+
+import com.example.config.annotation.IgnoreAuth;
+import com.example.entity.WzUserEntity;
+import com.example.service.WzUserService;
+import com.example.utils.PageMap;
+import com.example.utils.PageUtils;
+import com.example.utils.Query;
+import com.example.utils.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 房屋出租(合同管理)
+ */
+@RestController
+@RequestMapping("/house-car/house/dist/api/wzUser")
+public class WzUserController {
+
+    @Autowired
+    private WzUserService wzUserService;
+
+    @RequestMapping("/list")
+    @IgnoreAuth
+    public R list(@RequestBody PageMap pageMap) {
+        //查询列表数据
+        Query query = new Query(pageMap);
+        List<WzUserEntity> list = wzUserService.queryList(query);
+        Query query1 = new Query(pageMap);
+        int total = wzUserService.queryTotal(query1);
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+        /**
+    * 保存
+    */
+    @RequestMapping("/save")
+    @IgnoreAuth
+    public R save(@RequestBody WzUserEntity bBizItem) {
+        wzUserService.save(bBizItem);
+        return R.ok();
+    }
+
+}

+ 36 - 0
src/main/java/com/example/dao/WzBuildManageDetailsDao.java

@@ -0,0 +1,36 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzBuildManageDetailsEntity;
+import com.example.entity.vo.BuildManageVo;
+import com.example.entity.vo.housemanager.LeaveUseVo;
+import com.example.entity.vo.housemanager.WzBuildmanageAvageareaVo;
+import com.example.utils.Query;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface WzBuildManageDetailsDao extends ExBaseMapper<WzBuildManageDetailsEntity> {
+
+     List<WzBuildmanageAvageareaVo> queryVoList(Map<String, Object> map);
+
+     List<LeaveUseVo> queryLeaveUseList(Map<String, Object> map);
+
+    List<String> getBuildingNameAlias(Map<String, Object> map);
+
+    List<String> getBuildingNameCode(Map<String, Object> map);
+
+    BuildManageVo queryCityAreaByCode(Map<String, Object> query);
+
+    String getLastStaticMonth(Map<String, Object> query);
+
+    String getLastStaticMonth1(Query query);
+
+    int getBuildingNameAliasTotal(Query query);
+
+    int queryBuildDetailByCodeTotal(Query query);
+
+    String getLastStaticMonth2(Query query);
+}

+ 17 - 0
src/main/java/com/example/dao/WzBuildmanageAvageareaDao.java

@@ -0,0 +1,17 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzBuildmanageAvageareaEntity;
+import com.example.entity.vo.housemanager.WzBuildmanageAvageareaVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface WzBuildmanageAvageareaDao extends ExBaseMapper<WzBuildmanageAvageareaEntity> {
+
+     List<WzBuildmanageAvageareaVo> queryVoList(Map<String, Object> map);
+
+    String getLastStaticMonth();
+}

+ 13 - 0
src/main/java/com/example/dao/WzDataInspectionDao.java

@@ -0,0 +1,13 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzDataInspectionEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WzDataInspectionDao extends ExBaseMapper<WzDataInspectionEntity> {
+
+//     List<WzDataInspectionEntity> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+}

+ 14 - 0
src/main/java/com/example/dao/WzHouseArrearsManageDao.java

@@ -0,0 +1,14 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzHouseArrearsManageEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WzHouseArrearsManageDao extends ExBaseMapper<WzHouseArrearsManageEntity> {
+    String getLastMonth();
+
+//     List<WzHouseArrearsManageEntity> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+}

+ 17 - 0
src/main/java/com/example/dao/WzHouseContracDao.java

@@ -0,0 +1,17 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzHouseContracEntity;
+import com.example.entity.vo.houserent.WzHouseContractVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface WzHouseContracDao extends ExBaseMapper<WzHouseContracEntity> {
+
+     List<WzHouseContractVo> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+}

+ 17 - 0
src/main/java/com/example/dao/WzHouseContractCompareDao.java

@@ -0,0 +1,17 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzHouseContractCompareEntity;
+import com.example.entity.vo.houserent.WzHouseContractVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface WzHouseContractCompareDao extends ExBaseMapper<WzHouseContractCompareEntity> {
+
+     List<WzHouseContractVo> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+}

+ 17 - 0
src/main/java/com/example/dao/WzHouseContractInDao.java

@@ -0,0 +1,17 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzHouseContractInEntity;
+import com.example.entity.vo.houserent.WzHouseContractVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface WzHouseContractInDao extends ExBaseMapper<WzHouseContractInEntity> {
+
+     List<WzHouseContractVo> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+}

+ 17 - 0
src/main/java/com/example/dao/WzHouseContractOutDao.java

@@ -0,0 +1,17 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzHouseContractOutEntity;
+import com.example.entity.vo.houserent.WzHouseContractVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface WzHouseContractOutDao extends ExBaseMapper<WzHouseContractOutEntity> {
+
+     List<WzHouseContractVo> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+}

+ 17 - 0
src/main/java/com/example/dao/WzHouseContractTopDao.java

@@ -0,0 +1,17 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzHouseContractTopEntity;
+import com.example.entity.vo.houserent.WzHouseContractVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface WzHouseContractTopDao extends ExBaseMapper<WzHouseContractTopEntity> {
+
+     List<WzHouseContractVo> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+}

+ 13 - 0
src/main/java/com/example/dao/WzHouseCustomerDao.java

@@ -0,0 +1,13 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzHouseCustomerEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WzHouseCustomerDao extends ExBaseMapper<WzHouseCustomerEntity> {
+
+//     List<WzHouseContractVo> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+}

+ 13 - 0
src/main/java/com/example/dao/WzHouseInCustomerDao.java

@@ -0,0 +1,13 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzHouseInCustomerEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WzHouseInCustomerDao extends ExBaseMapper<WzHouseInCustomerEntity> {
+
+//     List<WzHouseContractVo> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+}

+ 17 - 0
src/main/java/com/example/dao/WzHouseLeaseInConDao.java

@@ -0,0 +1,17 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzHouseLeaseInConEntity;
+import com.example.entity.vo.houserent.WzHouseContractVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface WzHouseLeaseInConDao extends ExBaseMapper<WzHouseLeaseInConEntity> {
+
+     List<WzHouseContractVo> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+}

+ 10 - 0
src/main/java/com/example/dao/WzHouseMaintDao.java

@@ -0,0 +1,10 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzHouseMaintEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WzHouseMaintDao extends ExBaseMapper<WzHouseMaintEntity> {
+
+}

+ 39 - 0
src/main/java/com/example/dao/WzHouseMaintenaCostDao.java

@@ -0,0 +1,39 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzHouseMaintenaCostEntity;
+import com.example.entity.vo.DailyModifyVo;
+import com.example.entity.vo.HighFrequencyVo;
+import com.example.utils.Query;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface WzHouseMaintenaCostDao extends ExBaseMapper<WzHouseMaintenaCostEntity> {
+    List<WzHouseMaintenaCostEntity> queryHighPrice(Map map);
+
+    List<HighFrequencyVo> queryHighFrequency(Map map);
+    List<HighFrequencyVo> queryHighFrequencyByScore(Map map);
+
+    List<DailyModifyVo> queryDailyModify(Map map);
+
+    int queryDailyModifyTotal(Query query1);
+
+    List<WzHouseMaintenaCostEntity> queryList1(Map map);
+
+    int queryTotal1(Map<String, Object> map);
+
+    List<String> getBuildingNameAlias(Map<String, Object> map);
+
+    List<String> getBuildingNameCode(Map<String, Object> map);
+
+    int getBuildingNameAliasTotal(Query query);
+
+    int queryBuildDetailByCodeTotal(Query query);
+
+//     List<WzDataInspectionEntity> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+}

+ 13 - 0
src/main/java/com/example/dao/WzHouseMarketDao.java

@@ -0,0 +1,13 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzHouseMarketEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WzHouseMarketDao extends ExBaseMapper<WzHouseMarketEntity> {
+
+//     List<WzHouseArrearsManageEntity> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+}

+ 10 - 0
src/main/java/com/example/dao/WzHouseUseDao.java

@@ -0,0 +1,10 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzHouseUseEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WzHouseUseDao extends ExBaseMapper<WzHouseUseEntity> {
+
+}

+ 27 - 0
src/main/java/com/example/dao/WzLandManageDetailsDao.java

@@ -0,0 +1,27 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzLandManageDetailsEntity;
+import com.example.entity.vo.floormanager.FloorNoUserVo;
+import com.example.entity.vo.housemanager.WzBuildmanageAvageareaVo;
+import com.example.utils.Query;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface WzLandManageDetailsDao extends ExBaseMapper<WzLandManageDetailsEntity> {
+
+     List<WzBuildmanageAvageareaVo> queryVoList(Map<String, Object> map);
+
+     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+
+    List<String> getBuildingNameAlias(Map<String, Object> map);
+
+    List<String> getBuildingNameCode(Map<String, Object> map);
+
+    int getBuildingNameAliasTotal(Query query);
+
+    int queryBuildingNameCodeTotal(Query query);
+}

+ 13 - 0
src/main/java/com/example/dao/WzLowestUnitPriceDao.java

@@ -0,0 +1,13 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzLowestUnitPriceEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WzLowestUnitPriceDao extends ExBaseMapper<WzLowestUnitPriceEntity> {
+
+//     List<WzHouseContractVo> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+}

+ 18 - 0
src/main/java/com/example/dao/WzOtnAreaDao.java

@@ -0,0 +1,18 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.OtnAreaEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface WzOtnAreaDao extends ExBaseMapper<OtnAreaEntity> {
+
+    List<OtnAreaEntity> getCityOption(Long parentId);
+
+    OtnAreaEntity queryObjectById(Long id);
+//     List<WzHouseContractVo> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+}

+ 12 - 0
src/main/java/com/example/dao/WzRemarkDao.java

@@ -0,0 +1,12 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzRemarkEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WzRemarkDao extends ExBaseMapper<WzRemarkEntity> {
+
+    OtnAreaEntity queryObjectById(Long id);
+}

+ 15 - 0
src/main/java/com/example/dao/WzRentHouseArrearsDao.java

@@ -0,0 +1,15 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzRentHouseArrearsEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WzRentHouseArrearsDao extends ExBaseMapper<WzRentHouseArrearsEntity> {
+
+//     List<WzHouseContractVo> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+
+    String getLastStaticMonth();
+}

+ 14 - 0
src/main/java/com/example/dao/WzRentThreeMonthDao.java

@@ -0,0 +1,14 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzRentThrMonthEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WzRentThreeMonthDao extends ExBaseMapper<WzRentThrMonthEntity> {
+
+//     List<WzHouseContractVo> queryVoList(Map<String, Object> map);
+//
+//     List<FloorNoUserVo> queryLeaveUseList(Map<String, Object> map);
+    String getLastStaticMonth();
+}

+ 10 - 0
src/main/java/com/example/dao/WzScoreRankingDao.java

@@ -0,0 +1,10 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzScoreRankingEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WzScoreRankingDao extends ExBaseMapper<WzScoreRankingEntity> {
+
+}

+ 18 - 0
src/main/java/com/example/dao/WzStrategyDao.java

@@ -0,0 +1,18 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.WzStrategyEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WzStrategyDao extends ExBaseMapper<WzStrategyEntity> {
+    
+
+    void update(WzStrategyEntity object);
+
+    WzStrategyEntity getObject(Integer id);
+
+    void delById(Integer id);
+
+    WzStrategyEntity getObjectByType();
+}

+ 12 - 0
src/main/java/com/example/dao/WzUserDao.java

@@ -0,0 +1,12 @@
+package com.example.dao;
+
+import com.example.config.mybatis.ex.method.ExBaseMapper;
+import com.example.entity.OtnAreaEntity;
+import com.example.entity.WzUserEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WzUserDao extends ExBaseMapper<WzUserEntity> {
+
+    OtnAreaEntity queryObjectById(Long id);
+}

+ 14 - 0
src/main/java/com/example/dto/GetHouseDataImportTemplatesVo.java

@@ -0,0 +1,14 @@
+package com.example.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class GetHouseDataImportTemplatesVo {
+    @Schema(description = "模板id")
+    private String id;
+    @Schema(description = "模板名称")
+    private String name;
+    @Schema(description = "模板链接")
+    private String url;
+}

+ 17 - 0
src/main/java/com/example/dto/HouseDataImportDto.java

@@ -0,0 +1,17 @@
+package com.example.dto;
+
+import com.example.enums.HouseDataImportEnum;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+public class HouseDataImportDto {
+    @Schema(description = "模板id")
+    @NotNull(message = "id不能为空")
+    private HouseDataImportEnum id;
+    @Schema(description = "账期", example = "2023")
+    @NotNull(message = "year不能为空")
+    private Integer year;
+}

+ 62 - 0
src/main/java/com/example/entity/FileInfo.java

@@ -0,0 +1,62 @@
+package com.example.entity;
+
+import java.util.Date;
+
+public class FileInfo {
+  private Long id;
+  private String fileName;
+  private String pathName;
+  private Date createTime;
+  private String createAccount;
+
+  public FileInfo() {
+
+  }
+
+  public FileInfo(String fileName, String pathName, Date createTime, String createAccount) {
+    this.fileName = fileName;
+    this.pathName = pathName;
+    this.createTime = createTime;
+    this.createAccount = createAccount;
+  }
+
+  public Long getId() {
+    return id;
+  }
+
+  public void setId(Long id) {
+    this.id = id;
+  }
+
+  public String getFileName() {
+    return fileName;
+  }
+
+  public void setFileName(String fileName) {
+    this.fileName = fileName;
+  }
+
+  public String getPathName() {
+    return pathName;
+  }
+
+  public void setPathName(String pathName) {
+    this.pathName = pathName;
+  }
+
+  public Date getCreateTime() {
+    return createTime;
+  }
+
+  public void setCreateTime(Date createTime) {
+    this.createTime = createTime;
+  }
+
+  public String getCreateAccount() {
+    return createAccount;
+  }
+
+  public void setCreateAccount(String createAccount) {
+    this.createAccount = createAccount;
+  }
+}

+ 18 - 0
src/main/java/com/example/entity/OtnAreaEntity.java

@@ -0,0 +1,18 @@
+package com.example.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class OtnAreaEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+    private String province;
+    private String name;
+    private int level;
+    private int weight;
+    private Long parentId;
+
+}

+ 64 - 0
src/main/java/com/example/entity/WzBuildManageDetailsEntity.java

@@ -0,0 +1,64 @@
+package com.example.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class WzBuildManageDetailsEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;                     //行ID
+    private String province;                //资产所属单位(一级)
+    private String city;                    //资产所属单位(二级)
+    private String county;                  //资产所属单位(三级)
+    private String buildingAias;            //建筑别名
+    private String buildingRate;            //得房率
+    private String parentBuildingName;      //上级局址名称
+    private String parentLandName;          //上级土地名称
+    private String buildingSource;          //房屋来源
+    private String getDate;                 //取得日期
+    private String buildingStartYear;       //房龄开始年份
+    private String investmentEntity;        //投资主体
+    private String managementHierarchy;     //管理层级
+    private String buildingStructure;       //房屋结构
+    private String totalNumberOfFloors;     //楼层总数
+    private String buildingFaceStreet;      //是否临街
+    private String courtyard;               //是否有院落
+    private String wholeBuilding;           //整栋是否独有
+    private String premisesPermit;          //是否有房产证
+    private String noPremisesPermitReason;  //无房产证原因
+    private String unrelatedAssets;         //未关联资产
+    private String assetCode;               //资产编号
+    private String astsLabe;                //资产标签号
+    private String useState;                //使用状态
+    private String buildingUse;             //建筑用途
+    private String ownershipStatus;         //权属状态
+    private String buildingFloorArea;       //建筑占地面积(㎡)
+    private String buildingArea;            //建筑面积(㎡)
+    private String buildingAreaUseArea;     //建筑面积-自用(㎡)
+    private String buildingAreaRentArea;    //建筑面积-出租(㎡)
+    private String buildingAreaIdelArea;    //建筑面积-闲置(㎡)
+    private String buildingAreaUnavailable; //建筑面积-不可使用(㎡)
+    private String useArea;                 //使用面积(㎡)
+    private String useAreaSelfUseArea;      //使用面积-自用(㎡)
+    private String useAreaRentArea;         //使用面积-出租(㎡)
+    private String useAreaIdelArea;         //使用面积-闲置(㎡)
+    private String useAreaUnavailableArea;  //使用面积-不可使用(㎡)
+    private String buildingManageName;      //楼长姓名
+    private String buildingManageCompany;   //楼长所在单位
+    private String buildingLongitude;       //房屋经度
+    private String buildingDimension;       //房屋纬度
+    private String buildingActualPropertyRights;  //房屋实际产权
+
+    private String cityName;
+    private String countyName;
+    private String buildingAddressNumber;   //局址别名
+    private String buildingNameAlias;       //局址编码
+    private String standardAddress;
+    private String inWarehouseDate;
+    private String outWarehouseDate;
+}

+ 22 - 0
src/main/java/com/example/entity/WzBuildmanageAvageareaEntity.java

@@ -0,0 +1,22 @@
+package com.example.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 房屋管理
+ */
+@Data
+public class WzBuildmanageAvageareaEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+    private String city;
+    private String county;
+    private Double officeArea;    //建筑面积-自用办公用房(㎡)
+    private Integer employees;    //县市的合同人员+紧密外包人员
+}

+ 42 - 0
src/main/java/com/example/entity/WzDataInspectionEntity.java

@@ -0,0 +1,42 @@
+package com.example.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 房屋管理
+ */
+@Data
+public class WzDataInspectionEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+    private String city;
+    private String unWarlNu;
+    private String unWarbNu;
+    private String ckNoLa;
+    private String ckOnoAun;
+    private String ckLNoAn;
+    private String ckBNoAn;
+    private String ckBno;
+    private String noAssOne;
+    private String noAssTwo;
+    private String banThreOne;
+    private String banThreTwo;
+    private String banThreThr;
+    private String banThreFou;
+    private String banThreFiv;
+    private String banThreSix;
+    private String blel;
+    private String bleb;
+    private String bleBa;
+    private String verVfa;
+    private String verVla;
+    private String verNob;
+    private String verLurt;
+
+}

+ 23 - 0
src/main/java/com/example/entity/WzHouseArrearsManageEntity.java

@@ -0,0 +1,23 @@
+package com.example.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class WzHouseArrearsManageEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+    private String city;
+    private String county;
+    private boolean flag;
+    private Double accumulateArrears;
+    private Double moreThanThreeMonths;
+    private Double moreThanOneYears;
+    private Double yearCumulativeNewAdditions;
+    private Double yearCumulativeWithdrawal;
+    private List<WzHouseArrearsManageEntity> children;
+
+}

+ 23 - 0
src/main/java/com/example/entity/WzHouseContracEntity.java

@@ -0,0 +1,23 @@
+package com.example.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class WzHouseContracEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+    private String city;
+    private String county;
+    private Double contractQuantity;
+    private Double noTaxContractAmount;
+    private Double rentArea;
+    private Double unitPricePerSquareMeter;
+    private boolean flag;
+    private Double arrearsQuantity;
+    private Double average;                  //出租欠费率
+    private List<WzHouseContracEntity> children;
+}

+ 32 - 0
src/main/java/com/example/entity/WzHouseContractCompareEntity.java

@@ -0,0 +1,32 @@
+package com.example.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class WzHouseContractCompareEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private long id;                              //行ID
+    private String useTheUnitsHierarchy;
+    private String province;
+    private String city;
+    private String county;
+    private String useTheProLine;                       //使用专线
+    private String leaseInPracticalUse;                 //租入实际用途
+    private String descriptionOfOtherUsesOfTheLease;    //租入其他用途说明
+    private String cityArea;
+    private String district;
+    private String rentalBuildingArea;           //自用建筑面积(平米)
+    private String hireTime;                     //首次租用时间
+    private String totalMonthlyRent;             //月租金(不含税)(元)
+    private String contractAmountIncludingTax;   //合同总金额(含税)(元)
+    private String ftProvinceAverage;            //合同总金额(含税)(元)
+    private String priceProvinceAverage;         //合同总金额(含税)(元)
+    private String contractNumber;               //合同编号
+    private String contractName;                 //合同名称
+    private String statisticalMonth;
+    private List<WzHouseContractCompareEntity> children;
+}

+ 59 - 0
src/main/java/com/example/entity/WzHouseContractInEntity.java

@@ -0,0 +1,59 @@
+package com.example.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class WzHouseContractInEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private long id;                              //行ID
+    private String importTime;                    //导入时间
+    private String ownershipOTheProperty;         //房屋所有权人属性
+    private String theNameOfTheRentedProperty;
+    private String formOfLease;
+    private String standardAddressLevel_1;
+    private String standardAddressLevel_2;
+    private String standardAddressLevel_3;
+    private String houseNumber;
+    private String cityArea;
+    private String district;
+    private String buildingLongitude;
+    private String buildingDimension;
+    private String rentalBuildingArea;
+    private String rentalUsableArea;
+    private String investmentEntities;
+    private String useTheUnitsHierarchy;
+    private String province;
+    private String city;
+    private String county;
+    private String useTheProLine;              //使用专线
+    private String leaseInPracticalUse;        //租入实际用途
+    private String descriptionOfOtherUsesOfTheLease;   //租入其他用途说明
+    private double selfUseBuildingArea;            //自用建筑面积(平米)
+    private String subleaseBuildingArea;           //转租建筑面积(平米)
+    private String firstHireTime;                  //首次租用时间
+    private String useDepartments;                //使用部门
+    private String contacts;                     //联系人
+    private String contactNumber;                  //联系电话
+    private String totalMonthlyRent;             //月租金(不含税)(元)
+    private String contractNumber;            //合同编号
+    private String contractName;              //合同名称
+    private String contractType;              //合同类型
+    private String signTime;                 //签订时间
+    private String ourContractingEntity;      //我方签约主体
+    private String lessorName;               //出租方名称
+    private double contractAmountIncludingTax;       //合同总金额(含税)(元)
+    private String valueAddedTaxAmount;             //增值税金额(元)
+    private String effectiveTimeOfContract;        //租入开始时间(合同生效时间)
+    private String terminationTimeOfContract;     //租入终止时间(合同终止时间)
+    private String undertakingDepartment;        //承办部门
+    private String selfUseArea;             //自用面积(使用)
+    private String idleUseArea;            //闲置面积(使用
+    private double rentalUseArea;         //出租面积(使用)
+    private String unusableUseArea;       //不可使用面积(使用
+    private String statisticalMonth;
+    private List<WzHouseContractInEntity> children;
+}

+ 63 - 0
src/main/java/com/example/entity/WzHouseContractOutEntity.java

@@ -0,0 +1,63 @@
+package com.example.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class WzHouseContractOutEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private long id;
+    private String city;
+    private String county;
+    private String contractNumber;
+    private String contractSerialNumber;
+    private String createDate;
+    private String contractStatus;
+    private String contractName;
+    private String undertakingDepartment;
+    private String undertaker;
+    private String contactNumber;
+    private String ourSubject;
+    private String fullNameOfThTenant;
+    private String contractType;
+    private String investmentEntities;
+    private String contractDescription;
+    private String contractAmountIncludingVat;
+    private String excludingValueAddedTaxContractAmount;
+    private String rate;
+    private String priceIncreaseMechanism;
+    private String renPaymentMethod;
+    private String leaseCategory;
+    private String rentFreeStartDate;
+    private String rentFreeEndDate;
+    private String rentalStartDate;
+    private String rentalEndDate;
+    private String contractLeaseTerm;
+    private String contractRentalArea;
+    private String debt;
+    private String endTime;
+    private String endReason;
+    private String subordinateUnits;
+    private String resourceType;
+    private String buildingAlias;
+    private String standardAddress;          //标准地址
+    private String floor;                    //楼层
+    private String roomName;                 //房间名
+    private String thisRentalBuildingArea;   //本次出租面积(建筑)
+    private String totalBuildingArea;        //总面积(建筑)
+    private String selfUseBuildingArea;      //自用面积(建筑)
+    private String idleBuildingArea;         //闲置面积(建筑)
+    private String rentalBuildingArea;       //出租面积(建筑)
+    private String unusableBuildingArea;     //不可使用面积(建筑)
+    private String thisRentalUseArea;        //本次出租面积(使用)
+    private String totalUseArea;             //总面积(使用)
+    private String selfUseArea;              //自用面积(使用)
+    private String idleArea;                 //闲置面积(使用)
+    private String rentalUseArea;            //出租面积(使用)
+    private String unusableUseArea;          //不可使用面积(使用)
+    private String statisticalMonth;         //账期
+    private List<WzHouseContractOutEntity> children;
+}

+ 30 - 0
src/main/java/com/example/entity/WzHouseContractTopEntity.java

@@ -0,0 +1,30 @@
+package com.example.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class WzHouseContractTopEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private long id;                              //行ID
+    private String useTheUnitsHierarchy;
+    private String province;
+    private String city;
+    private String county;
+    private String useTheProLine;              //使用专线
+    private String leaseInPracticalUse;        //租入实际用途
+    private String descriptionOfOtherUsesOfTheLease;   //租入其他用途说明
+    private String cityArea;
+    private String district;
+    private String rentalBuildingArea;           //自用建筑面积(平米)
+    private String hireTime;                  //首次租用时间
+    private String totalMonthlyRent;             //月租金(不含税)(元)
+    private double contractAmountIncludingTax;       //合同总金额(含税)(元)
+    private String contractNumber;            //合同编号
+    private String contractName;              //合同名称
+    private String statisticalMonth;
+    private List<WzHouseContractTopEntity> children;
+}

+ 27 - 0
src/main/java/com/example/entity/WzHouseCustomerEntity.java

@@ -0,0 +1,27 @@
+package com.example.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 房屋管理
+ */
+@Data
+public class WzHouseCustomerEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+    private String city;
+    private String county;
+    private Integer person=0;                   //个人
+    private Integer personPrivate=0;           //民营
+    private Integer stateOwnedEnterprises=0;    //国企
+    private Integer government=0;              //政府
+    private Integer allNum=0;                  //总计
+    List<WzHouseCustomerEntity> children;
+}

+ 30 - 0
src/main/java/com/example/entity/WzHouseInCustomerEntity.java

@@ -0,0 +1,30 @@
+package com.example.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ *  房屋租入(客户管理)
+ */
+@Data
+public class WzHouseInCustomerEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;                                //行ID
+    private String standardAddressLevel1;              //标准地址(一级)
+    private String standardAddressLevel2;              //标准地址(二级)
+    private String standardAddressLevel3;              //标准地址(三级)
+    private String government;                         //政府
+    private String stateOwnedEnterprise;               //国企
+    private String villageAndTownColletive;            //村镇集体
+    private String privateEnterprise;                  //私企
+    private String personal;                           //个人
+    private String allNum;
+    private String statisticalMonth;                   //账期
+    private List<WzHouseInCustomerEntity> children;
+}

+ 30 - 0
src/main/java/com/example/entity/WzHouseLeaseInConEntity.java

@@ -0,0 +1,30 @@
+package com.example.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ *
+ */
+@Data
+public class WzHouseLeaseInConEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+    private String standardAddressLevel1;
+    private String standardAddressLevel2;
+    private String standardAddressLevel3;
+    private double leaInContracQuantity;            // 租入合同数量
+    private double totalContrAmount;                 // 合同总金额(含税)(元)
+    private double unitPricePerSquareMeter;        // 每平米单价
+    private double businessAreaSquaMete;            //营业面积(平米)
+    private double officeAreaSquaMete;              //办公面积(平米)
+    private double communicationRoomAreaSquaMete;  //通信机房面积(平米)
+    private double otherUsageAreaSquaMete;         //其他用途面积(平米)
+    private double totalAreaSquaMete;               //总计面积(平米)
+    private double statisticalMonth;                   //账期
+    private boolean flag;
+    private List<WzHouseLeaseInConEntity> children;
+}

+ 47 - 0
src/main/java/com/example/entity/WzHouseMaintEntity.java

@@ -0,0 +1,47 @@
+package com.example.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class WzHouseMaintEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+    private String province;
+    private String city;
+    private String county;
+    private Integer houseAgeLessThanTwenty;
+    private Integer houseAgeBetweentTewntyAndForty;
+    private Integer houseAgeMoreThanFortyOne;
+    private Integer buildingAgeLessThanTwenty;
+    private Integer buildingAgeBetweentTewntyAndForty;
+    private Integer buildingAgeMoreThanFortyOne;
+    private Integer houseAll;
+    private Integer buildingAll;
+    private String statisticalMonth;
+
+    public void setAll(){
+        if(buildingAgeLessThanTwenty==null){
+            buildingAgeLessThanTwenty=0;
+        }
+        if(buildingAgeBetweentTewntyAndForty==null){
+            buildingAgeBetweentTewntyAndForty=0;
+        }
+        if(buildingAgeMoreThanFortyOne==null){
+            buildingAgeMoreThanFortyOne=0;
+        }
+        if(houseAgeLessThanTwenty==null){
+            houseAgeLessThanTwenty=0;
+        }
+        if(houseAgeBetweentTewntyAndForty==null){
+            houseAgeBetweentTewntyAndForty=0;
+        }
+        if(houseAgeMoreThanFortyOne==null){
+            houseAgeMoreThanFortyOne=0;
+        }
+        buildingAll=buildingAgeLessThanTwenty+buildingAgeBetweentTewntyAndForty+buildingAgeMoreThanFortyOne;
+        houseAll=houseAgeLessThanTwenty+houseAgeBetweentTewntyAndForty+houseAgeMoreThanFortyOne;
+    }
+}

+ 75 - 0
src/main/java/com/example/entity/WzHouseMaintenaCostEntity.java

@@ -0,0 +1,75 @@
+package com.example.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class WzHouseMaintenaCostEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;                              //行ID
+    private String buildingId;                       //建筑id基本信息
+    private String dateCredited;                     //入账日期
+    private String repairType;                       //维修类型
+    private String repairContent;                    //维修内容
+    private double erpCreditedAmount;                //erp入账金额元
+    private double averagePrice;                     //每平方米维修单价
+    private String province;                         //资产所属单位一级
+    private String city;                             //资产所属单位二级
+    private String county;                           //资产所属单位三级
+    private String buildingAddressNumber;            //局址编号
+    private String buildingNnameAlias;               //局址别名
+    private String standardAddress;                  //标准地址
+    private String cityGrade;                //城市等级
+    private String cityArea;                 //城市区域
+    private String district;                 //地段
+    private String landAssets;               //是否有土地资产
+    private String buildingAddressId;        //局址id
+    private String buildingAlias;            //建筑别名
+    private String buildingRate;             //得房率
+    private String buildingSource;           //房屋来源
+    private String getdate;                  //取得日期
+    private String buildingStartyear;        //房龄开始年份
+    private String investmentEntity;         //投资主体
+    private String managementHierarchy;      //管理层级
+    private String buildingStructure;        //房屋结构
+    private String totalNumberOfFloors;      //楼层总数
+    private String assetCode;                //资产编号
+    private String astsLabe;                 //资产标签号
+    private String useState;                 //使用状态
+    private String buildingUse;              //建筑用途
+    private String ownershipStatus;          //权属状态
+    private String buildingFloorArea;        //建筑占地面积㎡
+    private String buildingArea;             //建筑面积㎡
+    private String buildingAreaUseArea;      //建筑面积自用㎡
+    private String buildingAreaRentArea;     //建筑面积出租㎡
+    private String buildingAreaIdelArea;     //建筑面积闲置㎡
+    private String buildingAreaUnavailable;  //建筑面积不可使用㎡
+    private String useArea;                  //使用面积㎡
+    private String useAreaSelfUseArea;       //使用面积自用㎡
+    private String useAreaRentArea;          //使用面积出租㎡
+    private String useAreaIdelArea;          //使用面积闲置㎡
+    private String useAreaUnavailableArea;   //使用面积不可使用㎡
+    private String statisticalMonth;
+
+    public static double dealPrice(WzHouseMaintenaCostEntity entity){
+        //每平米维修单价 金额/自用+出租
+        double useArea=0l;
+        if(entity.getUseAreaSelfUseArea()!=null&&!entity.getUseAreaSelfUseArea().equals("")){
+            useArea=Double.valueOf(entity.getUseAreaSelfUseArea());
+        }
+        double rentArea=0l;
+        if(entity.getUseAreaRentArea()!=null&&!entity.getUseAreaRentArea().equals("")){
+            rentArea=Double.valueOf(entity.getUseAreaRentArea());
+        }
+        if(useArea+rentArea==0){
+            return 0l;
+        }
+        double v = entity.getErpCreditedAmount() / (useArea + rentArea);
+        return v;
+    }
+}

+ 48 - 0
src/main/java/com/example/entity/WzHouseMarketEntity.java

@@ -0,0 +1,48 @@
+package com.example.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 房屋管理
+ */
+@Data
+public class WzHouseMarketEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+    private String city;
+    private String county;
+    private String buildingId;    //建筑ID
+    private String buildingAlias;    //建筑别名
+    private String buildingAddress;    //地址
+    private String contractNumber;    //合同号
+    private String leaseCategory;  //租赁类别
+    private String contractLeaseTerm;   //合同租期(月数)
+    private String contractRentalArea;  //合同出租面积
+    private String totalMonthlyRent;    //月租金(元)
+    private String surveyTime;           //调查时间
+    private String buildingLongitude;    //房屋经度
+    private String buildingDimension;    //房屋纬度
+    private String marketBuildingName;  //市场建筑名
+
+    private String distanceBetweenBuildings;  //建筑之间距离m
+    private String marketContractLeaseTerm;   //市场合同租期(月数)
+    private String marketContractRentalArea;  //市场合同出租面积
+    private String monthlyRent;    //月租金(元)
+    private String marketStandardAddress;    //市场标准地址
+    private String housingRentCollectionMethod;    //房屋租金收取方式
+    private String propertyType;    //物业类型
+    private String totalNumberOfFloors;  //楼层总数
+    private String renovationSituation;    //装修
+    private String contractAmountExcludeTax; //不含增值税合同额
+    private String unitPriceMonth;         //每平米单价
+    private String marketUnitPriceMonth;  //市场每平米单价月
+    private String marketUnitPriceDay;    //市场每平米单价天
+    private String hasNearbyProperty; //1.5公里内是否有类似物业
+    private String noNearbyPropertyReason; //没有类似物业原因
+}

+ 25 - 0
src/main/java/com/example/entity/WzHouseRentOutEntity.java

@@ -0,0 +1,25 @@
+package com.example.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 房屋管理
+ */
+@Data
+public class WzHouseRentOutEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+    private String city;
+    private String county;
+    private Double accumulate_arrears;    //累计欠费(万元)
+    private Integer more_than_three_months;    //其中:3个月以上欠费
+    private Double more_than_one_years;    //其中:1年以上欠费
+    private Integer this_year_cumulative_new_additions;    //本年累计新增欠费
+    private Integer this__year_cumulative_withdrawal;  //本年累计收回欠费
+}

+ 33 - 0
src/main/java/com/example/entity/WzHouseUseEntity.java

@@ -0,0 +1,33 @@
+package com.example.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 房屋租入(租入用途管理)
+ */
+
+@Data
+public class WzHouseUseEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;                              // 行ID
+    private String province;                         // 资产所属单位(一级)
+    private String city;                             // 资产所属单位(二级)
+    private String county;                           // 资产所属单位(三级)
+    private double contractAmount;                   // 合同金额
+    private double yearContractAmount;               // 合同年金额
+    private double unitPricePerSquareMeter;          // 每平米单价
+    private double leasedFloorArea;                  // 租入建筑面积
+    private String contractStartTime;                // 租入开始时间(合同生效时间)
+    private String contractStopTime;                 // 租入终止时间(合同终止时间)
+    private String rentalUse;                        // 用途
+    private String statisticalMonth;                 // 账期
+    private boolean flag;
+    private List<WzHouseUseEntity> children;
+}

+ 59 - 0
src/main/java/com/example/entity/WzLandManageDetailsEntity.java

@@ -0,0 +1,59 @@
+package com.example.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class WzLandManageDetailsEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;                          //行ID
+    private String province;                     //资产所属单位(一级)
+    private String city;                         //资产所属单位(二级)
+    private String county;                       //资产所属单位(三级)
+    private String landAlias;                    //土地别名
+    private String landNature;                   //土地性质
+    private String usageRightsType;              //使用权类型
+    private String landUse;                      //地类用途
+    private String getDate;                      //取得日期
+    private String idelLandBegindate;          //闲置开始时间
+    private String buildingNameAlias;          //局址别名
+    private String standardAddress;            //标准地址
+    private String investmentEntity;          //投资主体
+    private String managementHierarchy;       //管理层级
+    private String ownershipStatus;           //权属状态
+    private String useState;                  //使用状态
+    private String totalLandArea;      //土地总面积(㎡)
+    private String landSelfUseArea;  //土地自用面积(㎡)
+    private String landIdelUseArea;  //土地闲置面积(㎡)
+    private String landRentUseArea;   //土地出租面积(㎡)
+    private String lanNoUnavailableArea;  //土地不可使用面积(㎡)
+    private String landCertificate;    //是否有土地证
+    private String noLandCertificateReason;         //无土地证原因
+    private String protectLandRisk;  //是否有保地风险
+    private String clearingLand;  //是否空地
+    private String courtyard;    //是否有院落
+    private String unrelatedAssets;  //未关联资产
+    private String assetCode; //资产编号
+    private String astsLabe;  //资产标签号
+    private String responsibleDepartment;   //责任部门
+    private String responsiblePerson;  //部门人
+    private String buildingLongitude;  //房屋经度
+    private String buildingDimension;  //房屋纬度
+    private String buildingActualPropertyOwner;  //实际产权人
+    private String specialInstructions;  //特殊说明
+    private String useAreaIdelArea;  //使用面积-闲置(㎡)
+    private String useAreaUnavailableArea;   //使用面积-不可使用(㎡)
+    private String landManageName;   //楼长姓名
+    private String landManageCompany;  //楼长所在单位
+    private String landLongitude;  //土地经度
+    private String landDimension;  //土地纬度
+    private String landActualPropertyOwner; //土地实际产权人
+    private String buildingAddressNumber;   //局址别名
+    private String cityName;
+    private String countyName;
+}

+ 32 - 0
src/main/java/com/example/entity/WzLowestUnitPriceEntity.java

@@ -0,0 +1,32 @@
+package com.example.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 房屋管理
+ */
+@Data
+public class WzLowestUnitPriceEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    private String city;                       //资产所属单位二级
+    private String contractName;              //合同名称
+    private String userName;                  //对方全称
+    private String userType;                  //客户类型
+    private String rentPaymentMethod;        //交租方式
+    private String rentalStartDate;          //出租起始日期
+    private String contractLeaseTerm;        //合同租期(月数)
+    private String contractedRentalArea;     //合同出租面积
+    private String includingValueAddedTaxContractAmount;  //含增值税金合同金额
+    private String buildingAlias;  //建筑/土地别名
+    private String address;
+    private String areaSector;
+    private double price;    //每平米单价
+}

+ 14 - 0
src/main/java/com/example/entity/WzRemarkEntity.java

@@ -0,0 +1,14 @@
+package com.example.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class WzRemarkEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private Long id;
+    private String key;
+    private String value;
+    private String indentify;
+}

+ 26 - 0
src/main/java/com/example/entity/WzRentHouseArrearsEntity.java

@@ -0,0 +1,26 @@
+package com.example.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *  出租房屋欠费超5万元
+ */
+@Data
+public class WzRentHouseArrearsEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    private String month;
+    private String city;
+    private String county;
+    private String userName;
+    private String userAttribute;
+    private String arrears;
+
+}

+ 29 - 0
src/main/java/com/example/entity/WzRentThrMonthEntity.java

@@ -0,0 +1,29 @@
+package com.example.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 房屋管理
+ */
+@Data
+public class WzRentThrMonthEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    private String month;
+    private String city;
+    private String county;
+    private String userEncoding;
+    private String userName;
+    private String userAttribute;
+    private String dataOne ;
+    private String dataTwo;
+    private String accumulatedArrears;
+
+}

+ 25 - 0
src/main/java/com/example/entity/WzScoreRankingEntity.java

@@ -0,0 +1,25 @@
+package com.example.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class WzScoreRankingEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private Long id;
+    private String province;                         //资产所属单位(一级)
+    private String city;                             //资产所属单位(二级)
+    private String county;                           //资产所属单位(三级)
+    private String idleRate;                         //闲置率=闲/(出+闲)
+    private String rAbleRate;                        //可出租率=(出+闲)/(自+出+闲)
+    private String rArrearsRate;                     //出租欠费率=欠费合同/合同总数
+    private String unitPricePerSquareMeter;          //每平米单价=不含税总价/租期/面积
+    private Integer sporadicMaintTimes;               //大于万元零星维修次数
+    private Integer maintBuildingsTimes;              //高频(大于每月1次)维修建筑数
+    private Double score;                           //账期
+    private Integer ranking;                         //排名
+    private String statisticalMonth;                 //账期
+    private List<WzScoreRankingEntity> children;     //
+}

+ 19 - 0
src/main/java/com/example/entity/WzScoreVo.java

@@ -0,0 +1,19 @@
+package com.example.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class WzScoreVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private String city;
+    private double dailyNum;
+    private double highNum;
+    private double idleRate;                         //闲置率=闲/(出+闲)
+    private double rAbleRate;                        //可出租率=(出+闲)/(自+出+闲)
+    private double rArrearsRate;                     //出租欠费率=欠费合同/合同总数
+    private double unitPricePerSquareMeter;          //每平米单价=不含税总价/租期/面积
+    private List<WzScoreVo> children;
+}

+ 16 - 0
src/main/java/com/example/entity/WzStrategyEntity.java

@@ -0,0 +1,16 @@
+package com.example.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class WzStrategyEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private Long id;
+    private String creator;
+    private Date createTime;
+    private Integer type;
+    private String value;
+}

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно